diff --git a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm
index 77df46175bc6..cfe522aeb415 100644
--- a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm
+++ b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm
@@ -1458,7 +1458,7 @@
/turf/open/floor/plasteel/mono,
/area/ruin/beach/complex)
"wV" = (
-/obj/item/kitchen/knife/hunting{
+/obj/item/melee/knife/hunting{
name = "machete";
pixel_y = 8;
desc = "Space vines HATE this one simple trick!"
diff --git a/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm b/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm
index 998e43b9085a..971fde63cb03 100644
--- a/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm
+++ b/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm
@@ -1232,7 +1232,7 @@
/obj/machinery/atmospherics/components/unary/passive_vent{
dir = 1
},
-/obj/item/fireaxe{
+/obj/item/melee/axe/fire{
name = "rusty fire axe"
},
/turf/open/floor/engine/airless,
diff --git a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm
index ab5a6bb58d84..ed6c353d26d7 100644
--- a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm
+++ b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm
@@ -204,7 +204,7 @@
/obj/structure/closet/cabinet,
/obj/item/pneumatic_cannon/speargun,
/obj/item/storage/backpack/magspear_quiver,
-/obj/item/kitchen/knife/hunting,
+/obj/item/melee/knife/hunting,
/turf/open/floor/wood,
/area/ruin/beach)
"kr" = (
@@ -529,7 +529,7 @@
dir = 6
},
/obj/structure/table/reinforced,
-/obj/item/kitchen/knife/butcher,
+/obj/item/melee/knife/butcher,
/turf/open/floor/plastic,
/area/ruin/beach)
"wg" = (
@@ -1032,7 +1032,7 @@
"Os" = (
/obj/structure/table/wood/reinforced,
/obj/effect/turf_decal/corner/opaque/pink/diagonal,
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_y = 12;
pixel_x = 9
},
@@ -1052,7 +1052,7 @@
/obj/structure/closet/cabinet,
/obj/item/pneumatic_cannon/speargun,
/obj/item/storage/backpack/magspear_quiver,
-/obj/item/kitchen/knife/hunting,
+/obj/item/melee/knife/hunting,
/obj/machinery/light/small/directional/east{
light_color = "#d8b1b1"
},
@@ -1244,7 +1244,6 @@
/turf/open/water/beach/deep,
/area/overmap_encounter/planetoid/beachplanet/explored)
"Vt" = (
-/obj/item/nullrod/carp,
/obj/structure/bed/dogbed,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood/walnut,
diff --git a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm
index 29ad64707d84..bf43f3ee9f94 100644
--- a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm
+++ b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm
@@ -193,7 +193,7 @@
/turf/open/water/beach,
/area/overmap_encounter/planetoid/beachplanet/explored)
"eZ" = (
-/obj/item/melee/roastingstick,
+/obj/item/roastingstick,
/turf/open/floor/wood{
light_range = 2
},
diff --git a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm
index a751740c08a2..d1a3ff05cf04 100644
--- a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm
+++ b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm
@@ -1628,7 +1628,7 @@
/obj/effect/turf_decal/weather/sand{
dir = 5
},
-/obj/item/melee/roastingstick,
+/obj/item/roastingstick,
/obj/item/reagent_containers/food/snacks/sausage,
/turf/open/floor/plating/dirt{
light_range = 2
@@ -2304,7 +2304,7 @@
/obj/effect/turf_decal/weather/sand{
dir = 8
},
-/obj/item/melee/roastingstick,
+/obj/item/roastingstick,
/turf/open/floor/plating/dirt{
light_range = 2
},
diff --git a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm
index 2b2479ffe0fb..67ac69292603 100644
--- a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm
+++ b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm
@@ -16,7 +16,7 @@
/area/ruin/beach/piratecrash/storage)
"af" = (
/obj/structure/table/wood,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/effect/turf_decal/corner/opaque/black/diagonal,
/obj/effect/turf_decal/siding/wood{
dir = 1
@@ -37,7 +37,7 @@
},
/obj/structure/table/wood,
/obj/item/reagent_containers/food/snacks/fishfry,
-/obj/item/kitchen/knife/shiv{
+/obj/item/melee/knife/shiv{
pixel_x = -6;
pixel_y = 5
},
diff --git a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm
index 82c054f8fabf..707be4573d13 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm
@@ -887,7 +887,7 @@
/area/ruin/unpowered/crashed_holemaker)
"oC" = (
/obj/effect/decal/cleanable/dirt/dust,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/turf/open/floor/wood{
icon_state = "wood-broken7"
},
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm
index 06d6a8e9fd27..d26f9458a943 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm
@@ -332,7 +332,7 @@
/obj/item/restraints/legcuffs/beartrap,
/obj/item/reagent_containers/glass/bottle/venom,
/obj/item/reagent_containers/glass/bottle/curare,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
/obj/effect/decal/cleanable/dirt,
/obj/item/reagent_containers/food/snacks/meat/slab/human,
/obj/item/reagent_containers/food/snacks/meat/slab/human,
@@ -384,7 +384,7 @@
/obj/effect/decal/cleanable/blood/gibs/torso,
/obj/structure/safe,
/obj/item/ammo_box/a12g/slug,
-/obj/item/kitchen/knife/combat,
+/obj/item/melee/knife/combat,
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/wood,
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm
index 4954a9a5aaf4..d560e98b2f20 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm
@@ -367,23 +367,6 @@
initial_gas_mix = "ICEMOON_ATMOS"
},
/area/ruin/unpowered)
-"sf" = (
-/obj/structure/table/wood,
-/obj/item/nullrod{
- block_chance = 50;
- desc = "This massive chart appears to be the layout of a SolGov outpost. It's covered in marks, scribbles in a language you don't recognize, and several stains. It's unusually sturdy.";
- icon_state = "blueprints";
- item_state = "blueprints";
- lefthand_file = 'icons/mob/inhands/items_lefthand.dmi';
- name = "facility blueprints";
- pixel_y = 10;
- righthand_file = 'icons/mob/inhands/items_righthand.dmi';
- w_class = 5
- },
-/turf/open/floor/wood{
- initial_gas_mix = "ICEMOON_ATMOS"
- },
-/area/ruin/unpowered)
"si" = (
/obj/structure/flora/rock/jungle,
/obj/structure/flora/grass/jungle/b,
@@ -1248,13 +1231,6 @@
},
/turf/open/floor/plating/snowed/smoothed/icemoon,
/area/ruin/unpowered)
-"Zs" = (
-/obj/structure/table/wood,
-/obj/item/banhammer,
-/turf/open/floor/wood{
- initial_gas_mix = "ICEMOON_ATMOS"
- },
-/area/ruin/unpowered)
(1,1,1) = {"
aW
@@ -2252,7 +2228,7 @@ Hb
aW
WH
jy
-Zs
+ib
WH
WH
WH
@@ -2284,7 +2260,7 @@ Hb
aW
Br
ib
-sf
+ib
WH
WH
fB
diff --git a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm
index 86e2ac4e5477..39d17f372342 100644
--- a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm
+++ b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm
@@ -798,7 +798,7 @@
/area/ruin/jungle/paradise/construction)
"eY" = (
/obj/structure/table/reinforced,
-/obj/item/kitchen/knife/butcher,
+/obj/item/melee/knife/butcher,
/obj/item/clothing/gloves/butchering,
/turf/open/floor/pod/dark,
/area/overmap_encounter/planetoid/cave/explored)
diff --git a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm
index 3d00a493af05..2eba13537777 100644
--- a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm
+++ b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm
@@ -308,7 +308,7 @@
/turf/open/floor/plating/rust,
/area/ruin/jungle/syndifort/jerry)
"ik" = (
-/obj/item/kitchen/knife/combat{
+/obj/item/melee/knife/combat{
name = "bushcutter";
force = 18
},
@@ -627,7 +627,7 @@
/area/ruin/jungle/syndifort/jerry)
"ud" = (
/obj/structure/table,
-/obj/item/kitchen/knife/combat{
+/obj/item/melee/knife/combat{
name = "bushcutter";
force = 18
},
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm
index 444f4ec52509..483580cf70dd 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm
@@ -1324,7 +1324,7 @@
/obj/item/cutting_board{
anchored = 1
},
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/effect/turf_decal/siding/thinplating/dark,
/turf/open/floor/plasteel/patterned/cargo_one,
/area/ruin/unpowered/listening_post/canteen)
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm
index 935a852fac76..f9be78af5b89 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm
@@ -637,7 +637,7 @@
/obj/structure/table,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small/directional/east,
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_x = 7;
pixel_y = 10
},
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
index 739e427fc008..a53bebe1ff01 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
@@ -1072,7 +1072,7 @@
"qj" = (
/obj/effect/turf_decal/corner/opaque/solgovblue/diagonal,
/obj/structure/table/wood,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/turf/open/floor/plasteel/white,
/area/ruin/unpowered/winter_biodome/living_quarters)
"qr" = (
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm
index 9937cbeb46bb..17094a2d2bff 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm
@@ -1807,7 +1807,7 @@
/area/ruin/unpowered/buried_shrine)
"UF" = (
/obj/structure/stone_tile/block,
-/obj/item/claymore/bone{
+/obj/item/melee/sword/bone{
pixel_x = 8;
pixel_y = 21
},
@@ -1823,7 +1823,7 @@
/area/ruin/unpowered/buried_shrine)
"VG" = (
/obj/structure/table/wood,
-/obj/item/kitchen/knife/combat/bone,
+/obj/item/melee/knife/bone,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/buried_shrine)
"Wd" = (
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm
index 9babc1631c8f..911b6cf6f4e5 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm
@@ -254,7 +254,7 @@
/turf/open/floor/plating/asteroid/basalt/wasteland,
/area/ruin/unpowered/elephant_graveyard)
"bk" = (
-/obj/item/kitchen/knife/combat/bone,
+/obj/item/melee/knife/bone,
/obj/item/organ/tongue,
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/plating/asteroid/basalt/wasteland,
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm
index 3efc7429d803..a5547c39e8fd 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm
@@ -345,7 +345,7 @@
/obj/effect/mob_spawn/human/corpse{
mob_species = /datum/species/lizard/ashwalker
},
-/obj/item/spear/bonespear{
+/obj/item/melee/spear/bone{
pixel_x = 10;
pixel_y = -2
},
@@ -611,7 +611,7 @@
/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit,
/area/overmap_encounter/planetoid/lava/explored)
"pX" = (
-/obj/item/claymore/bone{
+/obj/item/melee/sword/bone{
pixel_x = -12;
pixel_y = 11
},
@@ -1101,7 +1101,7 @@
pixel_y = -11;
pixel_x = -7
},
-/obj/item/kitchen/knife/combat/bone{
+/obj/item/melee/knife/bone{
pixel_x = 10;
pixel_y = -10
},
@@ -1474,7 +1474,7 @@
/turf/closed/mineral/random/volcanic,
/area/overmap_encounter/planetoid/cave/explored)
"PP" = (
-/obj/item/kitchen/knife/combat/bone{
+/obj/item/melee/knife/bone{
pixel_x = -2;
pixel_y = 4
},
@@ -1706,7 +1706,7 @@
pixel_x = -2;
pixel_y = 1
},
-/obj/item/spear/bonespear{
+/obj/item/melee/spear/bone{
pixel_x = 8;
pixel_y = 14
},
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm
index 2c84843cf776..c4a3a0397508 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm
@@ -1098,7 +1098,7 @@
/obj/effect/decal/cleanable/blood{
icon_state = "drip1"
},
-/obj/item/spear,
+/obj/item/melee/spear,
/obj/item/bodypart/l_arm,
/turf/open/floor/plasteel/dark,
/area/ruin/lavaland/factory/dorms)
@@ -2691,8 +2691,8 @@
/turf/open/floor/carpet/blue,
/area/ruin/lavaland/factory/manager_office)
"zl" = (
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
/obj/structure/closet/crate/secure/gear,
/turf/open/floor/plasteel/mono,
/area/ruin/lavaland/factory/warehouse)
@@ -2982,7 +2982,7 @@
dir = 1
},
/obj/machinery/light/directional/west,
-/obj/item/kitchen/knife/hunting,
+/obj/item/melee/knife/hunting,
/obj/item/clothing/suit/hooded/cloak/goliath,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plasteel/white,
@@ -3828,7 +3828,7 @@
/obj/structure/cable/yellow{
icon_state = "4-8"
},
-/obj/item/kitchen/knife/shiv,
+/obj/item/melee/knife/shiv,
/turf/open/floor/plasteel/white,
/area/ruin/lavaland/factory/adminstrative)
"LX" = (
@@ -4302,7 +4302,7 @@
"QM" = (
/obj/structure/table/wood,
/obj/item/cutting_board,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/turf/open/floor/wood,
/area/ruin/lavaland/factory/adminstrative)
"QR" = (
diff --git a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm
index 448690c0e77a..6e7e5131b640 100644
--- a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm
+++ b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm
@@ -45,10 +45,6 @@
"pm" = (
/turf/open/floor/bronze,
/area/ruin/reebe)
-"pW" = (
-/obj/item/nullrod/spear,
-/turf/open/floor/bronze,
-/area/ruin/reebe)
"qj" = (
/mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal,
/obj/structure/fans/tiny/invisible,
@@ -56,7 +52,6 @@
/area/ruin/reebe)
"qC" = (
/obj/structure/chair/comfy/shuttle/bronze,
-/obj/item/nullrod/spear,
/turf/open/floor/bronze,
/area/ruin/reebe)
"vz" = (
@@ -91,7 +86,6 @@
/area/ruin/reebe)
"Ag" = (
/obj/structure/table/bronze,
-/obj/item/nullrod/spear,
/turf/open/floor/bronze,
/area/ruin/reebe)
"AT" = (
@@ -220,17 +214,13 @@
/turf/open/floor/bronze,
/area/ruin/reebe)
"Ux" = (
-/obj/item/spear,
+/obj/item/melee/spear,
/obj/item/grenade/c4,
/turf/open/floor/bronze,
/area/ruin/reebe)
"UU" = (
/turf/open/chasm/reebe_void,
/area/ruin/reebe)
-"VT" = (
-/obj/structure/table/bronze,
-/turf/open/floor/bronze,
-/area/ruin/reebe)
"Xr" = (
/obj/machinery/door/airlock/bronze/seethru{
name = "Summoning Chamber"
@@ -2127,7 +2117,7 @@ Cj
Cj
Fz
pm
-VT
+Ag
Ib
Cj
FD
@@ -2186,7 +2176,7 @@ IC
IC
Cj
Cj
-VT
+Ag
Fz
pm
pm
@@ -2251,7 +2241,7 @@ la
la
pm
pm
-pW
+pm
pm
xy
pm
@@ -2505,7 +2495,7 @@ pm
pm
pm
Cj
-VT
+Ag
pm
pm
pm
@@ -2559,7 +2549,7 @@ pm
Cj
pm
pm
-pW
+pm
JC
pm
JC
@@ -2567,7 +2557,7 @@ pm
JC
pm
De
-VT
+Ag
pm
pm
pm
@@ -2815,7 +2805,7 @@ pm
JC
pm
De
-VT
+Ag
pm
pm
pm
@@ -2877,7 +2867,7 @@ pm
pm
pm
Cj
-VT
+Ag
pm
pm
pm
@@ -2996,11 +2986,11 @@ JC
pm
pm
Rc
-VT
+Ag
Cj
Ag
-VT
-VT
+Ag
+Ag
pm
pm
pm
@@ -3053,7 +3043,7 @@ IC
IC
IC
De
-VT
+Ag
pm
pm
pm
@@ -3127,7 +3117,7 @@ pm
pm
pm
pm
-VT
+Ag
Cj
pm
pm
@@ -3178,7 +3168,7 @@ IC
IC
Cj
Cj
-VT
+Ag
hO
pm
hO
@@ -3188,7 +3178,7 @@ pm
pm
pm
pm
-VT
+Ag
Cj
Cj
pm
@@ -3242,14 +3232,14 @@ IC
Cj
Cj
Pn
-VT
+Ag
Pn
-VT
+Ag
Cj
-VT
+Ag
pm
pm
-VT
+Ag
Cj
Cj
pm
diff --git a/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm b/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm
index c768b54fe0ab..e1b0f36f687c 100644
--- a/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm
+++ b/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm
@@ -7,7 +7,6 @@
/turf/open/floor/bronze,
/area/ruin/reebe)
"d" = (
-/obj/item/nullrod/spear,
/turf/open/floor/bronze,
/area/ruin/reebe)
"e" = (
@@ -57,9 +56,6 @@
"O" = (
/turf/closed/wall/mineral/bronze,
/area/ruin/reebe)
-"Y" = (
-/turf/open/floor/bronze,
-/area/ruin/reebe)
"Z" = (
/obj/effect/decal/remains/human,
/turf/open/floor/bronze,
@@ -78,8 +74,8 @@ a
a
"}
(2,1,1) = {"
-Y
-Y
+d
+d
C
C
x
@@ -102,19 +98,19 @@ a
o
"}
(4,1,1) = {"
-Y
+d
O
e
C
C
O
-Y
+d
O
-Y
+d
E
"}
(5,1,1) = {"
-Y
+d
B
e
C
@@ -122,23 +118,23 @@ M
v
Z
v
-Y
+d
a
"}
(6,1,1) = {"
-Y
+d
O
C
e
e
O
-Y
+d
O
-Y
+d
a
"}
(7,1,1) = {"
-Y
+d
C
y
C
@@ -154,19 +150,19 @@ E
C
C
C
-Y
-Y
-Y
+d
+d
+d
E
a
a
"}
(9,1,1) = {"
-Y
-Y
+d
+d
E
E
-Y
+d
E
a
a
diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm
index 485303fb66c3..d6238dcf237b 100644
--- a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm
+++ b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm
@@ -223,7 +223,7 @@
/area/overmap_encounter/planetoid/sand/explored)
"iL" = (
/obj/structure/statue/snow/snowman,
-/obj/item/kitchen/knife/shiv/carrot,
+/obj/item/melee/knife/shiv/carrot,
/turf/open/floor/plating/asteroid/snow/lit/whitesands,
/area/overmap_encounter/planetoid/sand/explored)
"iQ" = (
@@ -652,7 +652,7 @@
/turf/open/floor/wood,
/area/ruin)
"yZ" = (
-/obj/item/spear,
+/obj/item/melee/spear,
/obj/effect/mob_spawn/human/corpse/damaged/whitesands/survivor,
/turf/open/floor/plating/asteroid/whitesands/dried{
light_range = 2
diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm
index eb48bcae1626..251b40fb4443 100644
--- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm
+++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm
@@ -1106,7 +1106,7 @@
"el" = (
/obj/structure/table/glass,
/obj/item/toy/plush/lizardplushie,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/turf/open/floor/light,
/area/ruin/space/has_grav/spacemall/shop2)
"eo" = (
@@ -2138,7 +2138,7 @@
/area/ruin/space/has_grav/spacemall)
"ip" = (
/obj/effect/turf_decal/corner/transparent/black/diagonal,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/structure/table,
/turf/open/floor/plasteel/white,
/area/ruin/space/has_grav/spacemall/dorms)
@@ -13759,7 +13759,7 @@
/obj/effect/turf_decal/siding/wideplating/dark{
dir = 1
},
-/obj/item/kitchen/knife/plastic{
+/obj/item/melee/knife/plastic{
pixel_x = 10
},
/obj/structure/disposalpipe/segment{
diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm
index f422e4ef1eb8..934b648c0bd6 100644
--- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm
+++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm
@@ -70,7 +70,7 @@
/area/ruin/wasteplanet)
"df" = (
/obj/structure/table/wood,
-/obj/item/kitchen/knife/combat/bone,
+/obj/item/melee/knife/bone,
/obj/item/flashlight/flare/torch,
/turf/open/floor/wood/waste,
/area/ruin/wasteplanet)
@@ -107,7 +107,7 @@
/area/ruin/wasteplanet)
"ge" = (
/obj/structure/table/wood,
-/obj/item/kitchen/knife/combat/bone{
+/obj/item/melee/knife/bone{
pixel_x = -20
},
/obj/item/reagent_containers/food/snacks/salad/edensalad,
@@ -120,7 +120,7 @@
"gm" = (
/obj/structure/closet/cabinet,
/obj/item/clothing/suit/hooded/cloak/bone,
-/obj/item/claymore/bone,
+/obj/item/melee/sword/bone,
/turf/open/floor/wood/waste,
/area/ruin/wasteplanet)
"gr" = (
@@ -423,7 +423,7 @@
/area/ruin/wasteplanet)
"qo" = (
/obj/structure/closet/cabinet,
-/obj/item/spear/bonespear,
+/obj/item/melee/spear/bone,
/obj/item/clothing/suit/armor/witchhunter,
/obj/item/reagent_containers/food/snacks/grown/berries/death,
/turf/open/floor/wood/waste,
@@ -491,7 +491,7 @@
/area/ruin/wasteplanet)
"sV" = (
/obj/structure/closet/cabinet,
-/obj/item/claymore/bone,
+/obj/item/melee/sword/bone,
/obj/item/clothing/suit/armor/witchhunter,
/turf/open/floor/wood/waste,
/area/ruin/wasteplanet)
@@ -578,7 +578,7 @@
/area/ruin/wasteplanet)
"xk" = (
/obj/structure/table/wood,
-/obj/item/spear/bonespear,
+/obj/item/melee/spear/bone,
/turf/open/floor/wood/waste,
/area/ruin/wasteplanet)
"xu" = (
@@ -813,7 +813,7 @@
/turf/open/indestructible/hierophant/two/waste,
/area/ruin/wasteplanet)
"FP" = (
-/obj/item/kitchen/knife/combat/bone{
+/obj/item/melee/knife/bone{
pixel_x = 15
},
/turf/open/floor/wood/waste,
@@ -960,7 +960,7 @@
"Li" = (
/obj/structure/closet/cabinet,
/obj/item/clothing/suit/armor/bone,
-/obj/item/fireaxe/boneaxe,
+/obj/item/melee/axe/bone,
/turf/open/floor/wood/waste,
/area/ruin/wasteplanet)
"Lj" = (
@@ -1233,7 +1233,7 @@
/area/ruin/wasteplanet)
"RT" = (
/obj/structure/table/wood,
-/obj/item/spear/bonespear,
+/obj/item/melee/spear/bone,
/obj/item/stack/sheet/sinew,
/turf/open/floor/wood/waste,
/area/ruin/wasteplanet)
diff --git a/_maps/configs/independent_kilo.json b/_maps/configs/independent_kilo.json
index a5a3881f23f2..0890ba4a9cef 100644
--- a/_maps/configs/independent_kilo.json
+++ b/_maps/configs/independent_kilo.json
@@ -13,7 +13,7 @@
"NATURAL"
],
"map_short_name": "Kilo-class",
- "starting_funds": 3500,
+ "starting_funds": 1500,
"map_path": "_maps/shuttles/independent/independent_kilo.dmm",
"job_slots": {
"Captain": {
diff --git a/_maps/configs/independent_mudskipper.json b/_maps/configs/independent_mudskipper.json
index 85f9c5f291a0..8db7b5668e03 100644
--- a/_maps/configs/independent_mudskipper.json
+++ b/_maps/configs/independent_mudskipper.json
@@ -19,7 +19,7 @@
"starting_funds": 1500,
"job_slots": {
"Salvage Leader": {
- "outfit": "/datum/outfit/job/independent/captain",
+ "outfit": "/datum/outfit/job/independent/captain/cheap",
"officer": true,
"slots": 1
},
diff --git a/_maps/configs/inteq_colossus.json b/_maps/configs/inteq_colossus.json
index 973a80045e93..68bc1e2ec1b3 100644
--- a/_maps/configs/inteq_colossus.json
+++ b/_maps/configs/inteq_colossus.json
@@ -42,7 +42,7 @@
},
"Recruit": {
"outfit": "/datum/outfit/job/inteq/assistant",
- "slots": 5
+ "slots": 2
}
},
"enabled": true
diff --git a/_maps/configs/syndicate_panacea.json b/_maps/configs/syndicate_panacea.json
index 5ac45d571829..f56158d9d9df 100644
--- a/_maps/configs/syndicate_panacea.json
+++ b/_maps/configs/syndicate_panacea.json
@@ -3,6 +3,7 @@
"map_name": "Panacea-class Infirm Vessel",
"map_short_name": "Panacea-class",
"map_path": "_maps/shuttles/syndicate/syndicate_panacea.dmm",
+ "faction": "/datum/faction/syndicate/suns",
"description": "Shortly after Solcon breached the Oort Cloud, SUNS joined into the Syndicate Coalition. Holding close ties to both the ACLF and GEC, students jumped at the opportunity to see the rest of the galaxy. The Panacea-class was the first of its kind out of Sol, moving typically planetside inpatient care to a space vessel and jumping system to system. The Panacea class is a moderately well supplied ship, allowing for emergency pharmaceutical compounding, mental and physical therapy, and general medical work, while doubling as a student run vessel.",
"tags": [
"Generalist",
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index fdfae529865d..405950bfe633 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -26,7 +26,7 @@
/turf/open/floor/plasteel/dark,
/area/tdome/tdomeadmin)
"afh" = (
-/obj/machinery/computer/helm{
+/obj/machinery/computer{
dir = 4
},
/obj/effect/turf_decal/industrial/warning{
@@ -1356,7 +1356,7 @@
/turf/open/floor/plasteel,
/area/wizard_station)
"ara" = (
-/obj/machinery/computer/helm,
+/obj/machinery/computer,
/turf/open/floor/plasteel,
/area/wizard_station)
"ard" = (
@@ -1686,7 +1686,7 @@
/area/centcom/evac)
"atW" = (
/obj/structure/rack,
-/obj/item/nullrod/claymore{
+/obj/item/melee/sword/claymore{
damtype = "stamina";
force = 30
},
@@ -1908,7 +1908,7 @@
/area/wizard_station)
"avt" = (
/obj/structure/rack,
-/obj/item/nullrod/claymore/katana{
+/obj/item/melee/sword/katana{
damtype = "stamina";
force = 30
},
@@ -2467,7 +2467,7 @@
/turf/open/floor/plasteel,
/area/wizard_station)
"azO" = (
-/obj/item/kitchen/knife/ritual,
+/obj/item/melee/knife/kitchen,
/turf/open/floor/plasteel,
/area/wizard_station)
"azP" = (
@@ -3309,7 +3309,6 @@
/area/tdome/tdomeobserve)
"aHq" = (
/obj/structure/closet/cardboard,
-/obj/item/banhammer,
/obj/effect/turf_decal/industrial/warning,
/turf/open/floor/plasteel,
/area/wizard_station)
@@ -3940,7 +3939,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/centcom/evac)
"aLP" = (
-/obj/machinery/computer/helm{
+/obj/machinery/computer{
dir = 1
},
/turf/open/floor/mineral/titanium/blue,
@@ -4051,7 +4050,7 @@
"aMx" = (
/obj/machinery/light/directional/east,
/obj/structure/rack,
-/obj/item/nullrod/claymore/saber/red{
+/obj/item/melee/sword/claymore{
damtype = "stamina";
force = 30
},
@@ -4979,7 +4978,7 @@
"aRS" = (
/obj/machinery/light/directional/west,
/obj/structure/rack,
-/obj/item/nullrod/claymore/glowing{
+/obj/item/melee/sword/claymore{
damtype = "stamina";
force = 30
},
@@ -5284,15 +5283,6 @@
/obj/item/reagent_containers/glass/beaker,
/turf/open/floor/plasteel,
/area/centcom/holding)
-"aUh" = (
-/obj/machinery/light/directional/east,
-/obj/structure/rack,
-/obj/item/nullrod/claymore/darkblade{
- damtype = "stamina";
- force = 30
- },
-/turf/open/floor/wood,
-/area/centcom/holding)
"aUj" = (
/obj/item/coin/antagtoken,
/obj/effect/turf_decal/industrial/outline/yellow,
@@ -5493,7 +5483,7 @@
/area/wizard_station)
"aVF" = (
/obj/structure/rack,
-/obj/item/nullrod/scythe/vibro{
+/obj/item/scythe{
damtype = "stamina";
force = 30
},
@@ -5963,15 +5953,6 @@
/obj/effect/turf_decal/industrial/outline/yellow,
/turf/open/floor/plasteel,
/area/centcom/control)
-"aYV" = (
-/obj/machinery/light/directional/west,
-/obj/structure/rack,
-/obj/item/nullrod/claymore/saber{
- damtype = "stamina";
- force = 30
- },
-/turf/open/floor/wood,
-/area/centcom/holding)
"aYW" = (
/obj/effect/landmark/thunderdome/one,
/obj/effect/turf_decal/industrial/warning{
@@ -8846,7 +8827,7 @@
},
/area/centcom)
"gFU" = (
-/obj/machinery/computer/helm,
+/obj/machinery/computer,
/obj/effect/turf_decal/industrial/warning{
dir = 6
},
@@ -10982,7 +10963,7 @@
/obj/item/reagent_containers/food/condiment/peppermill{
pixel_x = -8
},
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/effect/turf_decal/corner/transparent/neutral{
dir = 1
},
@@ -12249,7 +12230,7 @@
/turf/open/floor/plasteel/dark,
/area/tdome/tdomeadmin)
"nEL" = (
-/obj/machinery/computer/helm,
+/obj/machinery/computer,
/obj/effect/turf_decal/industrial/warning{
dir = 10
},
@@ -15510,7 +15491,7 @@
pixel_x = 7;
pixel_y = -2
},
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_y = -5;
pixel_x = -5
},
@@ -15797,7 +15778,7 @@
/turf/open/floor/plasteel/dark,
/area/ctf)
"vcL" = (
-/obj/machinery/computer/helm,
+/obj/machinery/computer,
/obj/effect/turf_decal/corner/transparent/bar,
/obj/effect/turf_decal/corner/transparent/bar{
dir = 1
@@ -43310,7 +43291,7 @@ aCT
aCT
aNT
avt
-aYV
+aRS
aOU
aOU
aRS
@@ -45883,7 +45864,7 @@ avt
aMx
aQg
aTb
-aUh
+aMx
atW
aWO
aaa
diff --git a/_maps/outpost/nanotrasen_asteroid.dmm b/_maps/outpost/nanotrasen_asteroid.dmm
index 08f1322e7c60..cc6986e98b8d 100644
--- a/_maps/outpost/nanotrasen_asteroid.dmm
+++ b/_maps/outpost/nanotrasen_asteroid.dmm
@@ -1774,7 +1774,7 @@
/area/outpost/crew/cryo)
"gF" = (
/obj/structure/table/reinforced,
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_y = 6;
pixel_x = 9
},
@@ -11369,7 +11369,7 @@
"NP" = (
/obj/effect/turf_decal/siding/wood,
/obj/structure/table/reinforced,
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_x = -6;
pixel_y = 2
},
@@ -13063,7 +13063,7 @@
pixel_x = -4;
pixel_y = 6
},
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_y = 6;
pixel_x = 9
},
diff --git a/_maps/shuttles/independent/independent_beluga.dmm b/_maps/shuttles/independent/independent_beluga.dmm
index c8ef49a3b35e..6158b206d67c 100644
--- a/_maps/shuttles/independent/independent_beluga.dmm
+++ b/_maps/shuttles/independent/independent_beluga.dmm
@@ -2742,7 +2742,7 @@
pixel_y = 1
},
/obj/structure/table,
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_x = 11;
pixel_y = 7
},
diff --git a/_maps/shuttles/independent/independent_dwayne.dmm b/_maps/shuttles/independent/independent_dwayne.dmm
index 533709f94692..d1cc698c0c92 100644
--- a/_maps/shuttles/independent/independent_dwayne.dmm
+++ b/_maps/shuttles/independent/independent_dwayne.dmm
@@ -886,12 +886,15 @@
dir = 1
},
/obj/item/radio/weather_monitor{
- pixel_x = 5;
+ pixel_x = 8;
pixel_y = 7
},
-/obj/item/reagent_containers/food/drinks/mug{
- pixel_x = -8
+/obj/machinery/newscaster/directional/west,
+/obj/item/paper_bin{
+ pixel_x = -8;
+ pixel_y = 6
},
+/obj/item/pen/fountain,
/turf/open/floor/plasteel/mono/dark,
/area/ship/bridge)
"mR" = (
@@ -1477,7 +1480,7 @@
/obj/item/cutting_board{
anchored = 1
},
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable/cyan{
icon_state = "0-5"
@@ -2686,9 +2689,8 @@
"Oz" = (
/obj/structure/table/reinforced,
/obj/effect/turf_decal/corner/opaque/ntblue/half,
-/obj/machinery/newscaster/directional/west,
-/obj/item/megaphone/cargo{
- pixel_y = 5
+/obj/machinery/fax/indie{
+ pixel_y = 7
},
/turf/open/floor/plasteel/mono/dark,
/area/ship/bridge)
@@ -2711,6 +2713,7 @@
/obj/item/ammo_box/c38,
/obj/item/ammo_box/c38,
/obj/item/gun/ballistic/revolver/detective,
+/obj/item/megaphone/cargo,
/turf/open/floor/plasteel/mono/dark,
/area/ship/bridge)
"OP" = (
diff --git a/_maps/shuttles/independent/independent_junker.dmm b/_maps/shuttles/independent/independent_junker.dmm
index 136e6e6e17fb..7819d04ec1c2 100644
--- a/_maps/shuttles/independent/independent_junker.dmm
+++ b/_maps/shuttles/independent/independent_junker.dmm
@@ -91,7 +91,7 @@
pixel_x = 4;
pixel_y = 9
},
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_y = -3;
pixel_x = 10
},
@@ -1790,7 +1790,7 @@
/obj/structure/cable{
icon_state = "5-10"
},
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_y = 1;
pixel_x = 8
},
diff --git a/_maps/shuttles/independent/independent_kilo.dmm b/_maps/shuttles/independent/independent_kilo.dmm
index 8e307abc2825..35f955ff0b3d 100644
--- a/_maps/shuttles/independent/independent_kilo.dmm
+++ b/_maps/shuttles/independent/independent_kilo.dmm
@@ -7,23 +7,24 @@
/area/ship/cargo)
"ak" = (
/obj/machinery/power/shuttle/engine/fueled/plasma,
-/turf/open/floor/plating/airless,
+/turf/open/floor/engine/hull,
/area/ship/engineering)
"am" = (
/obj/machinery/autolathe,
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"ar" = (
/obj/machinery/atmospherics/components/unary/shuttle/heater,
-/obj/structure/window/reinforced/tinted{
- dir = 8
- },
/obj/effect/turf_decal/industrial/warning{
dir = 4
},
+/obj/machinery/door/poddoor{
+ dir = 4;
+ id = "kilothrusters"
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/plating/airless,
/area/ship/engineering)
"av" = (
@@ -37,7 +38,8 @@
/obj/effect/decal/cleanable/blood/old,
/obj/structure/table_frame,
/obj/item/shard,
-/turf/open/floor/plating,
+/obj/effect/decal/cleanable/glass,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering)
"ay" = (
/obj/effect/decal/cleanable/glass,
@@ -60,40 +62,31 @@
/obj/structure/cable/pink{
icon_state = "0-2"
},
-/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel/tech/grid,
/area/ship/hallway/port)
"aJ" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2,
-/obj/effect/turf_decal/industrial/warning{
- dir = 9
- },
/obj/structure/chair/bench/olive/directional/east,
/obj/structure/railing{
dir = 8
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/corner/opaque/neutral/half,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/port)
"aS" = (
-/obj/effect/turf_decal/borderfloor,
-/obj/effect/turf_decal/box/corners{
- dir = 4
- },
-/obj/effect/turf_decal/box/corners{
- dir = 1
- },
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/structure/closet/secure_closet/engineering_personal{
- populate = 0;
- anchored = 1
+ anchored = 1;
+ populate = 0
},
/obj/item/storage/backpack/industrial,
/obj/item/clothing/under/rank/engineering/engineer,
/obj/item/clothing/suit/hazardvest,
/obj/item/clothing/shoes/workboots,
/obj/item/clothing/head/hardhat/dblue,
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering)
"aU" = (
/obj/structure/cable/cyan{
@@ -104,20 +97,11 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
-/obj/effect/turf_decal/industrial/warning{
- dir = 5
- },
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"aZ" = (
/obj/machinery/airalarm/directional/south,
-/obj/effect/turf_decal/siding/wood{
- dir = 4;
- color = "#E3994E"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"bg" = (
/obj/structure/catwalk/over/plated_catwalk,
@@ -132,8 +116,8 @@
pixel_x = -5
},
/obj/machinery/light_switch{
- pixel_x = 5;
dir = 1;
+ pixel_x = 5;
pixel_y = -19
},
/turf/open/floor/plating,
@@ -147,15 +131,14 @@
icon_state = "0-4"
},
/obj/machinery/power/shuttle/engine/electric,
-/turf/open/floor/plating/airless,
+/turf/open/floor/engine/hull,
/area/ship/engineering)
"by" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 8
},
-/obj/effect/decal/cleanable/wrapping,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"bA" = (
/obj/structure/chair/plastic,
@@ -163,16 +146,13 @@
icon_state = "4-6"
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
-/obj/effect/turf_decal/industrial/warning{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
/obj/item/reagent_containers/food/drinks/beer{
- pixel_y = 5;
+ list_reagents = null;
pixel_x = -14;
- list_reagents = null
+ pixel_y = 5
},
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/corner/opaque/neutral/three_quarters,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"bF" = (
/turf/closed/wall,
@@ -191,19 +171,15 @@
dir = 8
},
/obj/effect/decal/cleanable/oil,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"bH" = (
-/obj/effect/turf_decal/borderfloor{
- dir = 1
- },
/obj/machinery/firealarm/directional/west,
-/obj/effect/decal/cleanable/dirt,
/obj/machinery/holopad,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 5
},
-/turf/open/floor/plasteel/tech/grid,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"bL" = (
/obj/structure/cable/pink{
@@ -216,7 +192,6 @@
/obj/structure/extinguisher_cabinet/directional/east{
pixel_y = 7
},
-/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/ship/hallway/central)
"bM" = (
@@ -242,7 +217,7 @@
"bQ" = (
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
/obj/machinery/light/small/directional/west,
-/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plating,
/area/ship/engineering)
"bT" = (
@@ -255,8 +230,7 @@
/obj/structure/cable/pink{
icon_state = "4-9"
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"bU" = (
/obj/structure/catwalk/over/plated_catwalk,
@@ -299,16 +273,14 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 8
},
-/obj/effect/turf_decal/borderfloor{
- dir = 8
- },
/obj/machinery/door/firedoor/border_only{
dir = 8
},
/obj/machinery/door/firedoor/border_only{
dir = 4
},
-/turf/open/floor/plasteel/patterned/grid,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/cargo)
"bY" = (
/obj/structure/cable/pink{
@@ -320,8 +292,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 8
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"bZ" = (
/obj/structure/closet/crate/secure/exo,
@@ -336,11 +307,9 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"ca" = (
-/obj/structure/catwalk/over/plated_catwalk,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
},
@@ -352,33 +321,28 @@
},
/obj/machinery/light_switch{
dir = 1;
- pixel_y = -19;
- pixel_x = 4
+ pixel_x = 4;
+ pixel_y = -19
},
/obj/structure/extinguisher_cabinet/directional/south{
pixel_x = -6
},
+/obj/structure/catwalk/over/plated_catwalk/dark,
/turf/open/floor/plating,
/area/ship/engineering)
"cb" = (
-/obj/effect/turf_decal/borderfloor,
-/obj/effect/turf_decal/box/corners{
- dir = 4
- },
-/obj/effect/turf_decal/box/corners{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
/obj/machinery/portable_atmospherics/canister/toxins,
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/turf_decal/box,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering)
"cf" = (
/obj/machinery/door/poddoor{
id = "kilocargo"
},
/obj/machinery/power/shieldwallgen/atmos/roundstart{
- id = "kilofield";
- dir = 8
+ dir = 8;
+ id = "kilofield"
},
/obj/structure/cable/pink{
icon_state = "0-10"
@@ -427,7 +391,8 @@
dir = 1
},
/obj/machinery/door/firedoor/border_only,
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/crew/dorm)
"cq" = (
/turf/closed/wall,
@@ -437,7 +402,8 @@
/obj/structure/cable/pink{
icon_state = "0-10"
},
-/turf/open/floor/plasteel,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering)
"cw" = (
/obj/structure/table/wood,
@@ -448,20 +414,16 @@
dir = 4
},
/obj/item/reagent_containers/food/drinks/beer{
- pixel_y = 7;
+ list_reagents = list(/datum/reagent/consumable/ethanol/beer = 10);
pixel_x = -6;
- list_reagents = list(/datum/reagent/consumable/ethanol/beer = 10)
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 1;
- color = "#E3994E"
+ pixel_y = 7
},
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"cB" = (
/obj/structure/closet/secure_closet/miner{
- populate = 0;
- anchored = 1
+ anchored = 1;
+ populate = 0
},
/obj/effect/turf_decal/borderfloor{
dir = 1
@@ -505,7 +467,8 @@
/obj/machinery/door/firedoor/border_only{
dir = 8
},
-/turf/open/floor/plasteel/mono,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/port)
"cJ" = (
/obj/structure/chair/handrail{
@@ -514,12 +477,6 @@
/obj/machinery/advanced_airlock_controller{
pixel_y = -21
},
-/obj/effect/decal/cleanable/crayon{
- icon_state = "space";
- pixel_y = 2;
- pixel_x = 6;
- paint_colour = "#FF0000"
- },
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable/pink{
icon_state = "0-9"
@@ -529,14 +486,15 @@
pixel_x = -19;
pixel_y = 13
},
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel/patterned,
/area/ship/maintenance/fore)
"cK" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/components/unary/passive_vent{
dir = 4
},
-/turf/open/floor/plasteel/mono/dark,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"cM" = (
/obj/structure/cable/pink{
@@ -545,25 +503,21 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
dir = 4
},
-/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/pink{
icon_state = "6-8"
},
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"cP" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
-/obj/machinery/door/poddoor{
+/obj/machinery/atmospherics/pipe/layer_manifold,
+/obj/machinery/door/poddoor/shutters{
id = "kilowindows"
},
-/obj/machinery/atmospherics/pipe/layer_manifold,
/turf/open/floor/plating/airless,
/area/ship/hallway/port)
"cV" = (
-/obj/effect/turf_decal/industrial/warning{
- dir = 1
- },
/obj/structure/cable/pink{
icon_state = "2-9"
},
@@ -571,20 +525,23 @@
icon_state = "2-5"
},
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/patterned/grid,
+/obj/effect/turf_decal/industrial/warning,
+/turf/open/floor/plasteel/mono{
+ dir = 1
+ },
/area/ship/cargo)
"cW" = (
-/obj/effect/turf_decal/corner/opaque/red/diagonal,
/obj/structure/sink/kitchen{
dir = 8
},
-/obj/effect/decal/cleanable/blood/old,
/obj/machinery/light_switch{
dir = 8;
pixel_x = 20;
pixel_y = -12
},
-/turf/open/floor/plasteel/white,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/crew)
"cY" = (
/obj/structure/cable/pink{
@@ -594,22 +551,18 @@
/obj/machinery/power/terminal{
dir = 8
},
-/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plating,
/area/ship/engineering)
"cZ" = (
/obj/machinery/power/ship_gravity,
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
/obj/structure/cable/pink{
icon_state = "0-8"
},
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering)
"da" = (
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"dc" = (
/obj/item/kirbyplants/fullysynthetic{
@@ -619,17 +572,15 @@
icon_state = "0-1"
},
/obj/machinery/power/apc/auto_name/directional/west,
-/obj/item/stack/tile/plasteel{
- pixel_x = 7;
- pixel_y = -8
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/obj/effect/decal/cleanable/vomit/old{
+ pixel_x = -5
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/hallway/central)
"de" = (
-/obj/machinery/door/airlock/grunge{
- name = "Cryogenics"
- },
/obj/structure/cable/pink{
icon_state = "2-9"
},
@@ -637,15 +588,19 @@
/obj/machinery/door/firedoor/border_only{
dir = 1
},
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/obj/machinery/door/airlock{
+ dir = 1;
+ name = "Cryo Room"
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"dt" = (
/obj/machinery/vending/cigarette,
-/obj/effect/turf_decal/industrial/warning{
- dir = 9
- },
/obj/machinery/airalarm/directional/west,
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/corner/opaque/neutral/half,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"dF" = (
/obj/effect/turf_decal/miskilamo_small/right{
@@ -654,7 +609,7 @@
/obj/machinery/atmospherics/pipe/simple/general/hidden{
dir = 10
},
-/turf/open/floor/plasteel/mono/dark,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"eo" = (
/obj/machinery/power/port_gen/pacman{
@@ -663,15 +618,9 @@
/obj/structure/cable/cyan{
icon_state = "0-2"
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering)
"eN" = (
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
/obj/machinery/light/directional/west,
/obj/structure/crate_shelf,
/turf/open/floor/plasteel/patterned/grid,
@@ -683,11 +632,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 9
},
-/obj/effect/turf_decal/industrial/warning/corner{
- dir = 4
- },
-/obj/effect/decal/cleanable/insectguts,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"fu" = (
/obj/effect/turf_decal/corner/opaque/black/mono,
@@ -700,11 +645,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
dir = 4
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"gp" = (
/obj/structure/closet/wall/blue/directional/north{
@@ -727,10 +668,9 @@
/obj/structure/cable/pink{
icon_state = "4-10"
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"gs" = (
-/obj/structure/catwalk/over/plated_catwalk,
/obj/structure/cable/pink{
icon_state = "4-10"
},
@@ -745,6 +685,7 @@
dir = 6
},
/obj/item/cigbutt,
+/obj/structure/catwalk/over/plated_catwalk/dark,
/turf/open/floor/plating,
/area/ship/engineering)
"gC" = (
@@ -759,15 +700,15 @@
/obj/structure/table,
/obj/machinery/light/small/directional/west,
/obj/item/clothing/glasses/welding{
- pixel_y = -9;
- pixel_x = 5
+ pixel_x = 5;
+ pixel_y = -9
},
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"hh" = (
/obj/structure/chair,
/obj/effect/decal/cleanable/oil,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"hN" = (
/obj/machinery/mineral/processing_unit{
@@ -785,8 +726,8 @@
/obj/effect/turf_decal/arrows{
dir = 4
},
-/obj/effect/decal/cleanable/glass,
-/turf/open/floor/plasteel/patterned/grid,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"hS" = (
/obj/structure/chair/sofa/brown/old/left/directional/east,
@@ -797,12 +738,8 @@
dir = 5
},
/obj/machinery/light/directional/west,
-/obj/effect/turf_decal/siding/wood{
- dir = 1;
- color = "#E3994E"
- },
/obj/effect/decal/cleanable/confetti,
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"ig" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
@@ -811,11 +748,10 @@
pixel_x = 17
},
/obj/item/reagent_containers/glass/bucket{
+ list_reagents = list(/datum/reagent/water = 20);
pixel_x = 8;
- pixel_y = 7;
- list_reagents = list(/datum/reagent/water = 20)
+ pixel_y = 7
},
-/obj/effect/decal/cleanable/dirt,
/turf/open/floor/carpet,
/area/ship/crew/dorm)
"im" = (
@@ -844,43 +780,41 @@
/obj/machinery/door/firedoor/border_only{
dir = 4
},
-/turf/open/floor/plasteel/mono,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"iM" = (
/obj/structure/cable/pink{
icon_state = "2-6"
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
-/obj/effect/turf_decal/industrial/warning{
- dir = 5
- },
/obj/structure/chair/bench/beige/directional/east{
dir = 8
},
/obj/structure/railing{
dir = 4
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/corner/opaque/neutral/half,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/port)
"iT" = (
-/obj/effect/turf_decal/corner/opaque/red/diagonal,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
dir = 8
},
/obj/effect/decal/cleanable/food/flour,
/mob/living/simple_animal/hostile/cockroach,
-/turf/open/floor/plasteel/white,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/crew)
"jl" = (
/obj/machinery/mineral/processing_unit_console{
- pixel_y = 0;
+ dir = 8;
+ machinedir = 1;
output_dir = 4;
pixel_x = 20;
- dir = 8;
- machinedir = 1
+ pixel_y = 0
},
-/obj/effect/turf_decal/industrial/warning/corner,
/obj/effect/turf_decal/corner_techfloor_grid{
dir = 5
},
@@ -889,8 +823,8 @@
/area/ship/cargo)
"jx" = (
/obj/machinery/conveyor{
- id = "kiloconveyor";
- dir = 4
+ dir = 4;
+ id = "kiloconveyor"
},
/obj/structure/sign/poster/random{
pixel_y = 32
@@ -905,16 +839,16 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 4
},
-/obj/structure/catwalk/over/plated_catwalk,
/obj/machinery/light_switch{
dir = 1;
- pixel_y = -19;
- pixel_x = -10
+ pixel_x = -10;
+ pixel_y = -19
},
/obj/structure/cable/pink{
icon_state = "4-8"
},
/obj/structure/extinguisher_cabinet/directional/south,
+/obj/structure/catwalk/over/plated_catwalk/dark,
/turf/open/floor/plating,
/area/ship/bridge)
"jU" = (
@@ -940,11 +874,14 @@
dir = 8
},
/obj/machinery/light/small/directional/north,
-/turf/open/floor/plasteel/tech/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/maintenance/fore)
"kA" = (
/turf/closed/wall/r_wall,
/area/ship/engineering)
+"lw" = (
+/turf/closed/wall/rust,
+/area/ship/bridge)
"mr" = (
/obj/machinery/suit_storage_unit/inherit,
/obj/item/clothing/suit/space/eva,
@@ -953,10 +890,6 @@
/obj/effect/turf_decal/borderfloor{
dir = 1
},
-/obj/effect/turf_decal/industrial/warning/corner{
- dir = 4
- },
-/obj/machinery/firealarm/directional/east,
/obj/effect/turf_decal/box/corners{
dir = 8
},
@@ -964,6 +897,10 @@
/obj/structure/cable/pink{
icon_state = "1-5"
},
+/obj/machinery/firealarm/directional/south,
+/obj/structure/sign/warning/vacuum/external{
+ pixel_x = 32
+ },
/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"mz" = (
@@ -974,7 +911,6 @@
pixel_y = 20
},
/obj/effect/decal/cleanable/cobweb,
-/obj/effect/decal/cleanable/dirt,
/turf/open/floor/carpet,
/area/ship/crew/dorm)
"nd" = (
@@ -984,14 +920,13 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 9
},
-/obj/structure/catwalk/over/plated_catwalk,
/obj/structure/cable/pink{
icon_state = "8-9"
},
/obj/structure/cable/pink{
icon_state = "1-5"
},
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"ng" = (
/obj/structure/cable/pink{
@@ -1001,7 +936,6 @@
/obj/machinery/power/terminal{
dir = 8
},
-/obj/effect/decal/cleanable/glass,
/obj/structure/cable/pink{
icon_state = "4-5"
},
@@ -1009,28 +943,28 @@
/turf/open/floor/plating,
/area/ship/engineering)
"nJ" = (
-/obj/effect/turf_decal/industrial/warning{
- dir = 1
- },
/obj/machinery/button/door{
+ dir = 4;
id = "kilocargo";
name = "blast door control";
pixel_x = -20;
- pixel_y = 7;
- dir = 4
+ pixel_y = 7
},
/obj/machinery/button/shieldwallgen{
dir = 4;
- pixel_y = -2;
+ id = "kilofield";
pixel_x = -19;
- id = "kilofield"
+ pixel_y = -2
},
/obj/item/clothing/head/cone{
- pixel_y = 4;
- pixel_x = -8
+ pixel_x = -8;
+ pixel_y = 4
},
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/patterned/grid,
+/obj/effect/turf_decal/industrial/warning,
+/turf/open/floor/plasteel/mono{
+ dir = 1
+ },
/area/ship/cargo)
"nO" = (
/turf/closed/wall/r_wall,
@@ -1039,6 +973,7 @@
/obj/structure/table,
/obj/machinery/atmospherics/pipe/manifold/orange/hidden,
/obj/machinery/cell_charger,
+/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plating,
/area/ship/engineering)
"oP" = (
@@ -1048,18 +983,18 @@
},
/obj/item/stack/sheet/mineral/plasma/ten,
/obj/item/reagent_containers/food/drinks/beer{
- pixel_y = 11;
+ list_reagents = null;
pixel_x = -13;
- list_reagents = null
+ pixel_y = 11
},
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"pV" = (
/obj/machinery/conveyor_switch/oneway{
id = "kiloconveyor";
+ layer = 3.09;
pixel_x = 11;
- pixel_y = 14;
- layer = 3.09
+ pixel_y = 14
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/patterned/grid,
@@ -1069,7 +1004,8 @@
dir = 4
},
/obj/effect/mapping_helpers/airlock/locked,
-/turf/open/floor/plating/airless,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/maintenance/fore)
"qw" = (
/obj/machinery/door/airlock/external{
@@ -1079,7 +1015,8 @@
dir = 4
},
/obj/effect/mapping_helpers/airlock/locked,
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/maintenance/fore)
"rc" = (
/obj/structure/catwalk/over/plated_catwalk,
@@ -1123,7 +1060,8 @@
/obj/machinery/door/firedoor/border_only{
dir = 4
},
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/crew)
"rW" = (
/turf/closed/wall/yesdiag,
@@ -1154,22 +1092,31 @@
/obj/structure/cable/pink{
icon_state = "6-10"
},
-/obj/effect/decal/cleanable/dirt,
/turf/open/floor/carpet,
/area/ship/crew/dorm)
"sW" = (
-/obj/effect/turf_decal/borderfloor{
- dir = 1
- },
/obj/machinery/computer/cargo/retro{
dir = 8
},
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/turf_decal/corner/opaque/neutral/half{
+ dir = 8
+ },
+/obj/effect/turf_decal/industrial/outline/yellow,
+/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
+"tb" = (
+/turf/closed/wall/rust,
+/area/ship/crew/dorm)
+"tW" = (
+/turf/closed/wall/rust,
+/area/ship/crew)
+"vl" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/hallway/port)
"vv" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
-/obj/machinery/door/poddoor{
+/obj/machinery/door/poddoor/shutters{
id = "kilowindows"
},
/turf/open/floor/plating/airless,
@@ -1178,8 +1125,7 @@
/obj/structure/cable/pink{
icon_state = "1-2"
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"wc" = (
/obj/structure/table/wood,
@@ -1190,13 +1136,13 @@
pixel_y = 22
},
/obj/item/reagent_containers/food/snacks/sandwich{
- pixel_y = 9;
- pixel_x = -1
+ pixel_x = -1;
+ pixel_y = 9
},
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"wh" = (
-/turf/closed/wall/r_wall,
+/turf/closed/wall/r_wall/rust,
/area/ship/crew/dorm)
"xe" = (
/obj/machinery/door/airlock/external/glass{
@@ -1211,11 +1157,15 @@
/obj/structure/cable/pink{
icon_state = "6-10"
},
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/maintenance/fore)
"xk" = (
/turf/closed/wall,
/area/ship/hallway/central)
+"xn" = (
+/turf/closed/wall/rust,
+/area/ship/hallway/central)
"xF" = (
/obj/structure/cable/pink{
icon_state = "8-9"
@@ -1227,14 +1177,9 @@
pixel_x = 11
},
/obj/machinery/airalarm/directional/east,
-/obj/effect/turf_decal/siding/wood{
- dir = 1;
- color = "#E3994E"
- },
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew/dorm)
"yd" = (
-/obj/structure/catwalk/over/plated_catwalk,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
},
@@ -1244,10 +1189,10 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 4
},
+/obj/structure/catwalk/over/plated_catwalk/dark,
/turf/open/floor/plating,
/area/ship/engineering)
"yn" = (
-/obj/effect/turf_decal/corner/opaque/red/diagonal,
/obj/structure/closet/secure_closet/freezer/fridge{
populate = 0
},
@@ -1272,15 +1217,14 @@
/obj/effect/spawner/lootdrop/ration,
/obj/item/reagent_containers/food/snacks/icecreamsandwich,
/obj/item/reagent_containers/food/snacks/icecreamsandwich,
-/turf/open/floor/plasteel/white,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/crew)
"yF" = (
/turf/closed/wall/r_wall,
/area/ship/crew)
"zc" = (
-/obj/effect/turf_decal/corner_techfloor_grid{
- dir = 8
- },
/obj/structure/curtain,
/obj/machinery/shower{
dir = 1
@@ -1292,6 +1236,9 @@
pixel_x = -9;
pixel_y = -7
},
+/obj/effect/turf_decal/steeldecal/steel_decals10{
+ dir = 6
+ },
/turf/open/floor/plasteel/freezer,
/area/ship/crew)
"zH" = (
@@ -1311,22 +1258,22 @@
dir = 4
},
/obj/machinery/door/airlock{
- name = "Dormitory";
- dir = 8
+ dir = 8;
+ name = "Dormitory"
},
/obj/effect/turf_decal/siding/wood{
- dir = 8;
- color = "#E3994E"
+ color = "#E3994E";
+ dir = 8
},
/obj/effect/turf_decal/siding/wood{
- dir = 4;
- color = "#E3994E"
+ color = "#E3994E";
+ dir = 4
},
/turf/open/floor/wood/yew,
/area/ship/crew)
"AB" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"AE" = (
/obj/structure/closet/cabinet,
@@ -1340,11 +1287,8 @@
/obj/structure/cable/pink{
icon_state = "0-4"
},
-/obj/effect/turf_decal/siding/wood{
- dir = 1;
- color = "#E3994E"
- },
-/turf/open/floor/wood/yew,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew/dorm)
"AP" = (
/obj/machinery/atmospherics/components/binary/pump{
@@ -1353,8 +1297,7 @@
target_pressure = 500
},
/obj/machinery/airalarm/directional/south,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"AQ" = (
/turf/closed/wall,
@@ -1370,18 +1313,13 @@
/obj/machinery/power/terminal{
dir = 8
},
-/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/ship/engineering)
"Bm" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 8
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering)
"Bu" = (
/turf/closed/wall/r_wall/yesdiag,
@@ -1390,24 +1328,23 @@
/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/obj/effect/turf_decal/borderfloor/corner{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
dir = 8
},
-/turf/open/floor/plasteel/tech/grid,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"BS" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
/obj/machinery/door/poddoor{
- id = "kilobridge";
- dir = 4
+ dir = 4;
+ id = "kilobridge"
},
/turf/open/floor/plating/airless,
/area/ship/bridge)
+"Ce" = (
+/turf/closed/wall/rust,
+/area/ship/maintenance/fore)
"Co" = (
/obj/machinery/door/poddoor{
id = "kilocargo"
@@ -1431,17 +1368,15 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 8
},
-/obj/effect/decal/cleanable/dirt,
/obj/structure/closet/crate/medical,
/obj/item/clothing/gloves/color/latex/nitrile,
/obj/item/storage/firstaid/regular,
/obj/item/roller,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"Da" = (
-/obj/effect/decal/cleanable/dirt,
/obj/item/cigbutt,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"Ds" = (
/obj/structure/filingcabinet/chestdrawer{
@@ -1456,7 +1391,11 @@
/obj/structure/cable/pink{
icon_state = "0-8"
},
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/corner/opaque/neutral/half{
+ dir = 8
+ },
+/obj/effect/turf_decal/industrial/outline/yellow,
+/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
"Ew" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
@@ -1466,8 +1405,8 @@
/obj/machinery/light/small/directional/south,
/obj/machinery/light_switch{
dir = 1;
- pixel_y = -19;
- pixel_x = -8
+ pixel_x = -8;
+ pixel_y = -19
},
/obj/structure/catwalk/over/plated_catwalk,
/obj/structure/cable/pink{
@@ -1477,7 +1416,6 @@
/turf/open/floor/plating,
/area/ship/hallway/central)
"EG" = (
-/obj/effect/turf_decal/corner/opaque/red/diagonal,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 10
},
@@ -1485,24 +1423,23 @@
dir = 1
},
/obj/effect/decal/cleanable/confetti,
-/turf/open/floor/plasteel/white,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/crew)
"EU" = (
/obj/structure/cable/pink{
icon_state = "1-2"
},
-/obj/effect/decal/cleanable/vomit/old{
- pixel_x = -5
- },
/obj/item/cigbutt,
/obj/machinery/computer/cryopod/retro/directional/west,
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/hallway/central)
"GK" = (
/obj/structure/table,
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
/obj/machinery/light_switch{
pixel_x = -10;
pixel_y = 20
@@ -1534,7 +1471,10 @@
/obj/structure/sign/poster/random{
pixel_y = 32
},
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/corner/opaque/neutral/three_quarters,
+/obj/effect/turf_decal/industrial/outline/yellow,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"HP" = (
/obj/item/kirbyplants/fullysynthetic{
@@ -1546,20 +1486,16 @@
/obj/machinery/firealarm/directional/east{
pixel_y = -5
},
-/obj/effect/turf_decal/siding/wood{
- dir = 4;
- color = "#E3994E"
- },
/obj/effect/decal/cleanable/confetti,
/obj/item/cigbutt,
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"Ih" = (
/obj/structure/cable/pink{
icon_state = "1-6"
},
/obj/structure/ore_box,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"Jf" = (
/turf/closed/wall/r_wall,
@@ -1586,13 +1522,10 @@
/area/ship/maintenance/fore)
"KM" = (
/obj/machinery/atmospherics/components/binary/valve/layer4,
-/obj/effect/turf_decal/industrial/warning{
- dir = 1
- },
/obj/effect/decal/cleanable/oil/streak,
/obj/item/cigbutt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel,
+/obj/effect/turf_decal/corner/opaque/neutral/half,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/port)
"KR" = (
/obj/machinery/door/airlock/mining/glass{
@@ -1601,20 +1534,17 @@
/obj/structure/cable/pink{
icon_state = "1-2"
},
-/obj/effect/turf_decal/borderfloor,
/obj/machinery/door/firedoor/border_only,
/obj/machinery/door/firedoor/border_only{
dir = 1
},
-/turf/open/floor/plasteel/patterned/grid,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"La" = (
-/obj/effect/turf_decal/industrial/warning{
- dir = 1
- },
/obj/item/clothing/head/cone{
- pixel_y = 4;
- pixel_x = 11
+ pixel_x = 11;
+ pixel_y = 4
},
/obj/structure/extinguisher_cabinet/directional/east{
pixel_y = 7
@@ -1623,7 +1553,10 @@
pixel_y = -5
},
/obj/item/cigbutt,
-/turf/open/floor/plasteel/patterned/grid,
+/obj/effect/turf_decal/industrial/warning,
+/turf/open/floor/plasteel/mono{
+ dir = 1
+ },
/area/ship/cargo)
"LC" = (
/obj/structure/cable/cyan{
@@ -1632,11 +1565,7 @@
/obj/structure/cable/pink{
icon_state = "2-5"
},
-/obj/effect/turf_decal/industrial/warning/corner{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"Mj" = (
/obj/machinery/mineral/unloading_machine,
@@ -1648,24 +1577,25 @@
icon_state = "0-8"
},
/obj/machinery/power/smes/shuttle,
-/obj/structure/window/reinforced/tinted{
- dir = 8
- },
/obj/effect/turf_decal/industrial/warning{
dir = 4
},
+/obj/machinery/door/poddoor{
+ dir = 4;
+ id = "kilothrusters"
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/ship/engineering)
"MY" = (
/obj/structure/chair/sofa/brown/old/corner/directional/north,
/obj/structure/sign/poster/random{
- pixel_y = 0;
- pixel_x = -32
- },
-/obj/effect/decal/cleanable/vomit/old{
- pixel_x = -5
+ pixel_x = -32;
+ pixel_y = 0
},
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"Ng" = (
/obj/structure/cable/pink{
@@ -1691,17 +1621,18 @@
/turf/closed/wall/r_wall/yesdiag,
/area/ship/cargo)
"NB" = (
-/obj/machinery/door/airlock/grunge{
- dir = 8;
- name = "Bathroom"
- },
/obj/machinery/door/firedoor/border_only{
dir = 4
},
/obj/machinery/door/firedoor/border_only{
dir = 8
},
-/turf/open/floor/plasteel/patterned/brushed,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/obj/machinery/door/airlock{
+ dir = 4;
+ name = "Restroom"
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/crew)
"NI" = (
/obj/structure/sink{
@@ -1722,21 +1653,18 @@
pixel_x = -12;
pixel_y = 20
},
-/obj/effect/decal/cleanable/greenglow,
/obj/item/storage/pill_bottle/happy{
pixel_x = 12;
pixel_y = 12
},
/mob/living/simple_animal/hostile/cockroach,
-/turf/open/floor/plasteel/patterned/brushed,
+/obj/effect/decal/cleanable/vomit/old{
+ pixel_x = -5
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/crew)
"NT" = (
-/obj/effect/turf_decal/borderfloor{
- dir = 9
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/ash,
-/turf/open/floor/plasteel/tech/grid,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"NU" = (
/obj/structure/table/wood,
@@ -1750,8 +1678,8 @@
pixel_y = 3
},
/obj/structure/sign/poster/random{
- pixel_y = 0;
- pixel_x = -32
+ pixel_x = -32;
+ pixel_y = 0
},
/turf/open/floor/carpet,
/area/ship/crew/dorm)
@@ -1772,19 +1700,32 @@
/obj/structure/cable/pink{
icon_state = "2-10"
},
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
+"OQ" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/engineering)
"Pg" = (
/obj/machinery/computer/helm/retro{
dir = 8
},
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/turf_decal/corner/opaque/neutral/half{
+ dir = 8
+ },
+/obj/effect/turf_decal/industrial/outline/yellow,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
+"PJ" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/cargo)
"PS" = (
-/obj/effect/turf_decal/corner/opaque/red/diagonal,
/obj/structure/table/reinforced,
/obj/machinery/microwave,
-/turf/open/floor/plasteel/white,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel,
/area/ship/crew)
"PW" = (
/turf/closed/wall/r_wall/yesdiag,
@@ -1796,7 +1737,7 @@
"Rq" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
-/obj/machinery/door/poddoor{
+/obj/machinery/door/poddoor/shutters{
id = "kilowindows"
},
/turf/open/floor/plating/airless,
@@ -1809,36 +1750,36 @@
dir = 6
},
/obj/machinery/button/door{
- pixel_y = 20;
- pixel_x = -6;
id = "kilowindows";
- name = "Window Lockdown"
+ name = "Window Lockdown";
+ pixel_x = -6;
+ pixel_y = 20
},
/obj/machinery/button/door{
- pixel_y = 20;
- pixel_x = 6;
id = "kilobridge";
- name = "Bridge Lockdown"
+ name = "Bridge Lockdown";
+ pixel_x = 6;
+ pixel_y = 20
},
-/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/pink{
icon_state = "2-8"
},
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"Sx" = (
-/obj/effect/turf_decal/corner/opaque/red/diagonal,
/obj/structure/table/reinforced,
/obj/item/cutting_board{
anchored = 1
},
-/obj/item/kitchen/knife,
-/turf/open/floor/plasteel/white,
+/obj/item/melee/knife/kitchen,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/crew)
"Ti" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
-/obj/machinery/door/poddoor{
+/obj/machinery/door/poddoor/shutters{
id = "kilowindows"
},
/turf/open/floor/plating/airless,
@@ -1850,7 +1791,6 @@
},
/obj/item/bedsheet/dorms,
/obj/machinery/light/directional/west,
-/obj/effect/decal/cleanable/dirt,
/turf/open/floor/carpet,
/area/ship/crew/dorm)
"To" = (
@@ -1861,31 +1801,40 @@
icon_state = "0-6"
},
/obj/machinery/power/shieldwallgen/atmos/roundstart{
- id = "kilofield";
- dir = 4
+ dir = 4;
+ id = "kilofield"
},
/turf/open/floor/plasteel/patterned/ridged,
/area/ship/cargo)
+"Tr" = (
+/turf/closed/wall/rust,
+/area/ship/engineering)
"TD" = (
/obj/machinery/light/directional/south,
/obj/structure/table/reinforced,
/obj/item/megaphone/cargo{
- pixel_y = 5;
- pixel_x = 4
+ pixel_x = 4;
+ pixel_y = 5
},
/obj/item/cigbutt{
- pixel_y = 5;
- pixel_x = -17
+ pixel_x = -17;
+ pixel_y = 5
},
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/turf_decal/corner/opaque/neutral/half{
+ dir = 1
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"TG" = (
/turf/closed/wall,
/area/ship/hallway/port)
+"TY" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/bridge)
"Ua" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
-/obj/machinery/door/poddoor{
+/obj/machinery/door/poddoor/shutters{
id = "kilowindows"
},
/turf/open/floor/plating/airless,
@@ -1896,24 +1845,23 @@
"Un" = (
/obj/structure/grille,
/obj/structure/window/reinforced/fulltile,
-/obj/machinery/door/poddoor{
+/obj/machinery/door/poddoor/shutters{
id = "kilowindows"
},
/turf/open/floor/plating/airless,
/area/ship/hallway/port)
"Uv" = (
/obj/docking_port/stationary{
- width = 30;
- height = 15;
+ dir = 4;
dwidth = 15;
- dir = 4
+ height = 15;
+ width = 30
},
/turf/template_noop,
/area/template_noop)
"UY" = (
/obj/structure/chair/sofa/brown/old/right/directional/north,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"Va" = (
/obj/structure/closet/crate/secure/weapon,
@@ -1929,7 +1877,7 @@
/obj/effect/decal/cleanable/oil,
/obj/item/ammo_box/a12g,
/obj/item/gun/ballistic/shotgun/doublebarrel/no_mag,
-/turf/open/floor/plasteel/patterned/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"Vd" = (
/obj/structure/cable/pink{
@@ -1942,28 +1890,27 @@
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
/obj/machinery/light/small/directional/east{
pixel_y = 8
},
-/obj/machinery/firealarm/directional/east{
- pixel_y = -2
- },
/obj/effect/decal/cleanable/oil,
-/turf/open/floor/plating,
+/obj/machinery/button/door{
+ dir = 8;
+ id = "kilothrusters";
+ name = "Thruster Lockdown";
+ pixel_x = 21
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"Vh" = (
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/machinery/atmospherics/components/unary/tank/air{
dir = 8;
piping_layer = 2
},
-/turf/open/floor/plating,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/firealarm/directional/north,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering)
"Vq" = (
/turf/closed/wall/r_wall/yesdiag,
@@ -1972,14 +1919,13 @@
/obj/effect/turf_decal/miskilamo_small{
dir = 1
},
-/turf/open/floor/plasteel/mono/dark,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"Vx" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{
dir = 8
},
-/obj/effect/decal/cleanable/dirt,
/obj/item/cigbutt,
/turf/open/floor/carpet,
/area/ship/crew/dorm)
@@ -1987,7 +1933,7 @@
/obj/effect/turf_decal/miskilamo_small/left{
dir = 1
},
-/turf/open/floor/plasteel/mono/dark,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"We" = (
/obj/machinery/suit_storage_unit/inherit,
@@ -2011,31 +1957,36 @@
"Xd" = (
/obj/structure/table/reinforced,
/obj/item/paper_bin{
- pixel_y = 4;
- pixel_x = -7
+ pixel_x = -7;
+ pixel_y = 4
},
/obj/item/pen/fourcolor,
/obj/machinery/airalarm/directional/south,
/obj/item/radio/intercom/wideband/directional/west,
/obj/item/reagent_containers/food/drinks/coffee{
- pixel_y = 7;
- pixel_x = 10
+ pixel_x = 10;
+ pixel_y = 7
},
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/turf_decal/corner/opaque/neutral/half{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"XQ" = (
/obj/machinery/cryopod{
dir = 8
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
/obj/machinery/light/small/directional/east,
+/obj/effect/turf_decal/box,
/turf/open/floor/plasteel/tech/grid,
/area/ship/hallway/central)
"XR" = (
/turf/closed/wall,
/area/ship/crew)
+"Yn" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/crew)
"Yu" = (
/obj/structure/grille,
/obj/structure/window/fulltile,
@@ -2047,10 +1998,11 @@
dir = 1
},
/obj/item/reagent_containers/food/drinks/beer{
- pixel_y = 12;
- pixel_x = -9
+ pixel_x = -9;
+ pixel_y = 12
},
-/turf/open/floor/wood/yew,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew/dorm)
"YL" = (
/obj/structure/chair/sofa/brown/old/directional/east,
@@ -2058,7 +2010,7 @@
dir = 5
},
/obj/item/radio/intercom/directional/west,
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"ZC" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
@@ -2067,12 +2019,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 4
},
-/obj/effect/turf_decal/siding/wood{
- dir = 5;
- color = "#E3994E"
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/wood/yew,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"ZG" = (
/obj/structure/cable/pink{
@@ -2092,7 +2039,7 @@ AQ
bn
bn
bn
-AQ
+Tr
ak
AQ
aa
@@ -2101,7 +2048,7 @@ aa
(2,1,1) = {"
aa
aa
-kA
+OQ
ar
kA
MI
@@ -2179,7 +2126,7 @@ aa
Ua
aS
ca
-cq
+tb
cq
cq
cq
@@ -2191,7 +2138,7 @@ aa
(8,1,1) = {"
aa
aa
-Jf
+vl
TG
cC
cq
@@ -2228,7 +2175,7 @@ XR
XR
zH
XR
-XR
+tW
XR
yF
aa
@@ -2288,10 +2235,10 @@ Ud
XR
XR
rO
-XR
+tW
NB
XR
-yF
+Yn
"}
(15,1,1) = {"
Nq
@@ -2303,7 +2250,7 @@ cB
im
dt
sD
-xk
+xn
NI
zc
yF
@@ -2365,7 +2312,7 @@ GM
jK
bF
bF
-bF
+lw
bP
"}
(20,1,1) = {"
@@ -2385,7 +2332,7 @@ bP
"}
(21,1,1) = {"
aa
-ac
+PJ
hN
jl
OH
@@ -2417,11 +2364,11 @@ aa
aa
KB
bm
-KB
+Ce
kb
cJ
-bP
-bP
+TY
+TY
BS
BS
BS
diff --git a/_maps/shuttles/independent/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm
index 248ee9240efd..16f3ad2cbfa1 100644
--- a/_maps/shuttles/independent/independent_lagoon.dmm
+++ b/_maps/shuttles/independent/independent_lagoon.dmm
@@ -1361,7 +1361,7 @@
"iR" = (
/obj/structure/table/reinforced,
/obj/item/storage/bag/tray,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/structure/cable{
icon_state = "2-4"
},
@@ -4751,7 +4751,7 @@
/obj/structure/table/wood,
/obj/item/paper_bin,
/obj/item/pen/fountain,
-/obj/item/kitchen/knife/letter_opener,
+/obj/item/melee/knife/letter_opener,
/obj/item/pen,
/turf/open/floor/carpet/black,
/area/ship/crew/library)
@@ -5617,7 +5617,6 @@
/area/ship/hallway/starboard)
"Mz" = (
/obj/structure/table/wood,
-/obj/item/nullrod,
/turf/open/floor/wood,
/area/ship/crew/chapel)
"MD" = (
@@ -6724,7 +6723,7 @@
pixel_x = 4;
pixel_y = 9
},
-/obj/item/melee/skateboard/hoverboard{
+/obj/item/skateboard/hoverboard{
pixel_x = -4
},
/turf/open/floor/eighties,
diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm
index 618a40d3996f..be3d9a994e7f 100644
--- a/_maps/shuttles/independent/independent_mudskipper.dmm
+++ b/_maps/shuttles/independent/independent_mudskipper.dmm
@@ -9,7 +9,7 @@
icon_state = "0-1"
},
/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/tech,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
"ag" = (
/obj/machinery/power/shuttle/engine/electric{
@@ -18,34 +18,27 @@
/obj/structure/cable{
icon_state = "0-4"
},
-/turf/open/floor/plating,
+/turf/open/floor/engine/hull,
/area/ship/engineering/engine)
"ak" = (
-/obj/effect/turf_decal/siding/wood/end{
- dir = 8;
- color = "#543C30"
- },
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2,
/obj/structure/extinguisher_cabinet/directional/south,
-/obj/structure/cable{
- icon_state = "1-8"
- },
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/wood/walnut,
+/obj/effect/turf_decal/corner/opaque/bottlegreen/full,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"ao" = (
/obj/machinery/power/terminal{
dir = 8
},
/obj/machinery/atmospherics/components/binary/pump{
- name = "Plasma to Engines";
- dir = 1
+ dir = 1;
+ name = "Plasma to Engines"
},
/obj/structure/cable{
icon_state = "1-4"
@@ -53,11 +46,6 @@
/obj/structure/cable{
icon_state = "0-4"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
"ar" = (
@@ -70,70 +58,51 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/plasteel/grimy,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"bS" = (
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2,
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/open/floor/plasteel/grimy,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
-"bZ" = (
-/obj/machinery/power/smes/shuttle/precharged{
- dir = 4
- },
-/obj/structure/window/reinforced/spawner/west,
-/obj/machinery/door/window/eastleft{
- layer = 3.1
- },
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/machinery/door/poddoor/shutters{
- dir = 4;
- id = "mudskipper_engine"
- },
-/turf/open/floor/plating,
-/area/ship/engineering/engine)
"cn" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 8
},
/obj/machinery/airalarm/directional/east,
/obj/machinery/light_switch{
- pixel_y = 23;
- pixel_x = -3
+ pixel_x = -3;
+ pixel_y = 23
},
-/turf/open/floor/plasteel/dark,
+/obj/structure/chair/handrail,
+/turf/open/floor/plasteel/patterned,
/area/ship/maintenance)
"cs" = (
/turf/template_noop,
/area/template_noop)
"cx" = (
-/obj/effect/turf_decal/techfloor{
- dir = 4
- },
/obj/machinery/door/firedoor/border_only{
dir = 8
},
/obj/effect/turf_decal/miskilamo_small{
dir = 8
},
+/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "1-10"
+ },
+/turf/open/floor/plasteel/mono{
+ dir = 1
},
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
/area/ship/cargo)
"cB" = (
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30";
- dir = 5
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 6
},
@@ -141,46 +110,42 @@
dir = 4
},
/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "4-9"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/carpet,
/area/ship/crew)
"dc" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall,
/area/ship/hallway/central)
"dw" = (
/obj/structure/window/reinforced/spawner,
-/obj/structure/table/reinforced{
- color = "#c1b6a5"
- },
/obj/machinery/button/door{
dir = 8;
- pixel_x = 22;
- pixel_y = 15;
id = "mudskipper_engine";
- name = "Engine Shutters"
+ name = "Engine Shutters";
+ pixel_x = 22;
+ pixel_y = 15
},
/obj/machinery/cell_charger,
/obj/item/storage/toolbox/mechanical,
-/turf/open/floor/plasteel/tech/grid,
+/obj/structure/table/reinforced,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering/engine)
"dN" = (
/obj/machinery/modular_computer/console/preset/command{
dir = 8
},
-/obj/effect/turf_decal/corner/transparent/neutral,
/obj/machinery/light_switch{
- pixel_y = 23;
- pixel_x = -3
+ pixel_x = -3;
+ pixel_y = 23
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/corner/opaque/neutral/half{
+ dir = 8
+ },
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
"dQ" = (
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30";
- dir = 6
- },
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 8
},
@@ -192,8 +157,10 @@
/obj/structure/cable{
icon_state = "0-8"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/grimy,
+/obj/structure/chair/handrail{
+ dir = 1
+ },
+/turf/open/floor/carpet,
/area/ship/crew)
"dT" = (
/obj/machinery/suit_storage_unit/inherit,
@@ -207,41 +174,46 @@
dir = 4;
pixel_x = -22
},
+/obj/effect/turf_decal/borderfloor{
+ dir = 6
+ },
/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"dZ" = (
-/obj/effect/turf_decal/techfloor{
- dir = 1
- },
/obj/effect/decal/cleanable/glass,
/obj/structure/extinguisher_cabinet/directional/west{
pixel_y = 5
},
/obj/machinery/button/door{
dir = 4;
- pixel_x = -33;
- pixel_y = -7;
id = "mudskipper_door";
- name = "Cargo Door"
+ name = "Cargo Door";
+ pixel_x = -33;
+ pixel_y = -7
},
/obj/machinery/button/shieldwallgen{
dir = 4;
- pixel_x = -21;
- pixel_y = -7;
id = "mudskipper_shield";
- name = "Cargo Holofield"
+ name = "Cargo Holofield";
+ pixel_x = -21;
+ pixel_y = -7
},
-/turf/open/floor/plasteel/dark,
+/obj/structure/cable{
+ icon_state = "2-10"
+ },
+/obj/structure/chair/handrail{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"ec" = (
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/borderfloor{
+ dir = 1
+ },
+/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"ee" = (
/obj/effect/turf_decal/industrial/warning,
@@ -250,19 +222,15 @@
},
/obj/structure/window/reinforced/spawner/west,
/obj/structure/window/reinforced/spawner/east,
-/turf/open/floor/plasteel/tech/airless,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"en" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 10
},
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
"eu" = (
-/obj/effect/turf_decal/techfloor{
- dir = 1
- },
/obj/structure/railing{
dir = 8
},
@@ -274,8 +242,12 @@
/obj/structure/cable{
icon_state = "2-4"
},
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/tech,
/area/ship/engineering/engine)
+"ev" = (
+/turf/closed/wall,
+/area/ship/crew/cryo)
"eL" = (
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt/dust,
@@ -283,21 +255,18 @@
/obj/structure/sign/poster/contraband/smoke{
pixel_x = 32
},
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30";
- dir = 4
- },
/obj/item/toy/cards/deck{
pixel_y = 3
},
-/turf/open/floor/wood/walnut,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"eX" = (
/obj/machinery/atmospherics/components/unary/passive_vent,
-/turf/open/floor/engine/hull/reinforced,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"gf" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 8
},
@@ -310,6 +279,10 @@
/obj/structure/cable{
icon_state = "2-8"
},
+/obj/structure/cable{
+ icon_state = "5-6"
+ },
+/obj/structure/catwalk/over/plated_catwalk,
/turf/open/floor/plating,
/area/ship/hallway/central)
"gB" = (
@@ -318,17 +291,19 @@
dir = 4;
id = "mudskipper_door"
},
-/turf/open/floor/engine,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 8
+ },
+/turf/open/floor/plasteel/patterned/ridged,
/area/ship/cargo)
"gR" = (
/obj/effect/turf_decal/box,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/oil{
icon_state = "floor4"
},
/obj/structure/closet/crate/secure{
- name = "scavenging supplies";
desc = "A secure crate. This one is particularly large.";
+ name = "scavenging supplies";
storage_capacity = 40
},
/obj/item/reagent_containers/glass/chem_jug/thermite,
@@ -350,24 +325,28 @@
/obj/item/multitool,
/obj/item/stack/marker_beacon/thirty,
/obj/item/gun/energy/plasmacutter,
-/turf/open/floor/plasteel/tech,
+/obj/structure/cable{
+ icon_state = "2-10"
+ },
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"gT" = (
-/obj/structure/chair{
+/obj/machinery/light/directional/east,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/obj/structure/chair/plastic{
dir = 1
},
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30";
- dir = 6
- },
-/obj/machinery/light/directional/east,
-/turf/open/floor/wood/walnut,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
+"hn" = (
+/turf/closed/wall/rust/yesdiag,
+/area/ship/external/dark)
"hr" = (
/obj/machinery/power/smes/engineering,
-/obj/effect/turf_decal/techfloor{
- dir = 5
- },
/obj/structure/cable{
icon_state = "0-8"
},
@@ -375,20 +354,20 @@
/turf/open/floor/plasteel/tech,
/area/ship/engineering/engine)
"hH" = (
-/turf/closed/wall/mineral/plastitanium,
+/turf/closed/wall/yesdiag,
/area/ship/external/dark)
"hX" = (
/obj/structure/grille,
/turf/open/floor/engine/hull/reinforced,
/area/ship/external/dark)
"hY" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/structure/cable{
icon_state = "1-8"
},
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/structure/catwalk/over/plated_catwalk/dark,
/turf/open/floor/plating,
/area/ship/engineering/engine)
"ib" = (
@@ -401,66 +380,67 @@
/obj/effect/turf_decal/industrial/warning{
dir = 4
},
-/turf/open/floor/engine/hull/reinforced,
+/turf/open/floor/engine/hull,
/area/ship/cargo)
"ic" = (
-/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/oil{
icon_state = "floor4"
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable{
- icon_state = "0-2"
+ icon_state = "0-6"
},
+/obj/effect/turf_decal/corner/opaque/bottlegreen/full,
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"iy" = (
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 8
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"iY" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
+/obj/structure/cable{
+ icon_state = "4-9"
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
+/obj/structure/sign/poster/random{
+ pixel_y = -32
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
+/obj/structure/chair/handrail{
+ dir = 1
},
-/turf/open/floor/plasteel/tech,
+/turf/open/floor/plasteel,
/area/ship/hallway/central)
+"js" = (
+/turf/closed/wall/rust,
+/area/ship/bridge)
+"jz" = (
+/turf/closed/wall/rust,
+/area/ship/engineering/engine)
"kB" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 4
},
/obj/machinery/airalarm/directional/west,
/obj/machinery/light_switch{
- pixel_y = 23;
- pixel_x = 3
+ pixel_x = 3;
+ pixel_y = 23
},
-/turf/open/floor/plasteel/showroomfloor,
+/turf/open/floor/plasteel/patterned,
/area/ship/crew/toilet)
"kV" = (
/obj/machinery/vending/coffee,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/cobweb,
-/obj/effect/turf_decal/techfloor{
- dir = 1
- },
/obj/structure/extinguisher_cabinet/directional/west{
pixel_y = -5
},
/obj/machinery/light/dim/directional/north,
+/obj/effect/turf_decal/corner/opaque/neutral/three_quarters,
/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"kX" = (
@@ -468,33 +448,31 @@
dir = 4
},
/obj/machinery/airalarm/directional/north,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/light/dim/directional/west{
bulb_power = 0.5
},
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering/engine)
"kY" = (
/obj/effect/turf_decal/industrial/warning{
dir = 4
},
-/turf/open/floor/engine/hull/reinforced,
+/turf/open/floor/engine/hull,
/area/ship/cargo)
+"lg" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/crew/toilet)
"lj" = (
/obj/machinery/power/shuttle/engine/fueled/plasma{
dir = 4
},
-/turf/open/floor/plating,
+/turf/open/floor/engine/hull,
/area/ship/engineering/engine)
"ma" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
-/turf/open/floor/plating,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"mt" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
@@ -506,24 +484,14 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/effect/turf_decal/industrial/warning/fulltile,
/obj/machinery/door/airlock{
- name = "Bathroom"
+ dir = 1;
+ name = "Restroom"
},
-/turf/open/floor/plasteel/tech,
+/turf/open/floor/plasteel/dark,
/area/ship/crew/toilet)
"mC" = (
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 8
},
@@ -533,10 +501,11 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/plasteel/tech,
+/obj/structure/catwalk/over/plated_catwalk,
+/turf/open/floor/plating,
/area/ship/hallway/central)
"mF" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall/r_wall,
/area/ship/cargo)
"mS" = (
/obj/structure/catwalk,
@@ -551,12 +520,12 @@
dir = 1;
id = "mudskipper_shield"
},
-/turf/open/floor/engine,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 8
+ },
+/turf/open/floor/plasteel/patterned/ridged,
/area/ship/cargo)
"nj" = (
-/obj/effect/turf_decal/techfloor{
- dir = 5
- },
/obj/structure/sign/warning/vacuum/external{
pixel_y = 28
},
@@ -569,60 +538,45 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/mono{
+ dir = 1
+ },
/area/ship/cargo)
"nm" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/structure/chair,
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30";
- dir = 9
- },
-/turf/open/floor/wood/walnut{
- icon_state = "wood-broken7"
- },
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/obj/structure/chair/plastic,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"nx" = (
/obj/machinery/door/airlock/external,
/obj/machinery/atmospherics/pipe/layer_manifold,
-/obj/effect/turf_decal/industrial/warning{
- dir = 1
- },
-/obj/effect/turf_decal/industrial/warning,
+/obj/effect/turf_decal/industrial/warning/fulltile,
/turf/open/floor/plasteel/tech,
/area/ship/hallway/aft)
"nM" = (
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt/dust,
-/obj/structure/table/reinforced{
- color = "#c1b6a5"
- },
/obj/machinery/light/small/directional/north{
pixel_x = 6
},
/obj/machinery/computer/helm/viewscreen/computer,
/obj/machinery/airalarm/directional/east,
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/box,
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
"nR" = (
-/obj/effect/turf_decal/corner_techfloor_grid{
- dir = 8
- },
-/obj/effect/turf_decal/techfloor/corner{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{
dir = 8
},
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"nV" = (
/obj/structure/closet/wall/blue/directional/west{
- secure = 1;
- locked = 1
+ locked = 1;
+ secure = 1
},
/obj/item/gun/energy/laser/scatter,
/obj/item/stock_parts/cell/gun/upgraded,
@@ -640,66 +594,48 @@
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"ot" = (
-/obj/effect/turf_decal/techfloor{
- dir = 4
- },
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/door/firedoor/border_only{
dir = 8
},
-/obj/structure/cable{
- icon_state = "2-8"
- },
-/obj/structure/cable{
- icon_state = "1-8"
- },
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/number/four{
dir = 8
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/mono{
+ dir = 1
+ },
/area/ship/cargo)
"ov" = (
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/airalarm/directional/east,
/obj/machinery/photocopier,
/obj/machinery/firealarm/directional/north,
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"oC" = (
-/obj/effect/turf_decal/siding/wood/end{
- dir = 4;
- color = "#543C30"
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 8
},
/obj/machinery/firealarm/directional/south,
/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "4-10"
},
-/turf/open/floor/wood/walnut,
+/obj/effect/turf_decal/corner/opaque/bottlegreen/full,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"oG" = (
-/obj/machinery/door/airlock/grunge{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 8
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
+/obj/effect/turf_decal/industrial/warning/fulltile,
/obj/machinery/door/firedoor/border_only{
dir = 4
},
@@ -709,10 +645,15 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/obj/machinery/door/airlock/public/glass{
+ dir = 4;
+ name = "Office"
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"oU" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall,
/area/ship/crew/toilet)
"po" = (
/obj/structure/catwalk,
@@ -726,7 +667,10 @@
/obj/machinery/power/shieldwallgen/atmos/roundstart{
id = "mudskipper_shield"
},
-/turf/open/floor/engine,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 8
+ },
+/turf/open/floor/plasteel/patterned/ridged,
/area/ship/cargo)
"pF" = (
/obj/machinery/firealarm/directional/west{
@@ -735,74 +679,72 @@
/obj/machinery/light/small/directional/south,
/obj/structure/table/reinforced,
/obj/structure/bedsheetbin,
-/obj/effect/turf_decal/techfloor{
- dir = 10
- },
-/turf/open/floor/plasteel/tech/grid,
+/turf/open/floor/plasteel/patterned,
/area/ship/maintenance)
"pY" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"qy" = (
-/obj/effect/turf_decal/corner/transparent/neutral{
- dir = 4
- },
-/obj/machinery/computer/crew{
- dir = 8;
- icon_state = "computer-right"
- },
/obj/machinery/button/door{
dir = 1;
- pixel_x = -6;
- pixel_y = -21;
+ id = "mudskipper_bridge";
name = "Bridge Lockdown";
- id = "mudskipper_bridge"
+ pixel_x = -6;
+ pixel_y = -21
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/corner/opaque/neutral/half{
+ dir = 8
+ },
+/obj/effect/turf_decal/box,
+/obj/machinery/computer/crew/retro{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
"qE" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/manifold/orange/hidden{
dir = 4
},
/obj/structure/cable{
icon_state = "2-5"
},
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
"qN" = (
-/obj/machinery/cryopod,
-/obj/effect/turf_decal/techfloor{
- dir = 10
+/obj/machinery/cryopod{
+ dir = 8
},
-/obj/effect/turf_decal/industrial/hatch/yellow,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/radio/intercom/directional/north{
pixel_x = -3
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/tech/grid,
/area/ship/crew/cryo)
"rr" = (
/obj/structure/chair/office{
dir = 8
},
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/obj/machinery/light_switch{
dir = 8;
pixel_x = 22;
pixel_y = -3
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/corner/opaque/bottlegreen/full,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
+"rG" = (
+/turf/closed/wall/r_wall,
+/area/ship/crew/toilet)
"rO" = (
/obj/effect/decal/cleanable/dirt/dust,
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 9
},
@@ -812,15 +754,10 @@
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/structure/catwalk/over/plated_catwalk,
/turf/open/floor/plating,
/area/ship/cargo)
"sa" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/structure/chair,
-/obj/effect/turf_decal/siding/wood{
- dir = 5;
- color = "#543C30"
- },
/obj/machinery/newscaster/directional/east{
pixel_y = -6
},
@@ -829,17 +766,20 @@
pixel_x = 22;
pixel_y = 5
},
-/turf/open/floor/wood/walnut,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/obj/structure/chair/plastic,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"sf" = (
-/obj/machinery/computer/helm{
- dir = 8;
- icon_state = "computer-left"
+/obj/effect/turf_decal/corner/opaque/neutral/half{
+ dir = 8
},
-/obj/effect/turf_decal/corner/transparent/neutral{
- dir = 6
+/obj/effect/turf_decal/box,
+/obj/machinery/computer/helm/retro{
+ dir = 8
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
"sp" = (
/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer4{
@@ -849,33 +789,26 @@
/obj/machinery/meter/atmos/layer2{
name = "waste to external meter"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering/engine)
"sA" = (
-/obj/effect/turf_decal/techfloor{
- dir = 4
- },
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/door/firedoor/border_only{
dir = 8
},
/obj/effect/turf_decal/miskilamo_small/right{
dir = 8
},
-/obj/structure/cable{
- icon_state = "1-2"
+/turf/open/floor/plasteel/mono{
+ dir = 1
},
-/turf/open/floor/plasteel/dark,
/area/ship/cargo)
"sH" = (
/obj/structure/catwalk,
/obj/structure/window/reinforced/spawner/east,
/obj/structure/window/reinforced/spawner/west,
-/turf/open/floor/engine/airless,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"sI" = (
-/obj/effect/turf_decal/techfloor,
/obj/structure/railing{
dir = 8
},
@@ -891,42 +824,42 @@
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/structure/table/reinforced,
/obj/machinery/microwave,
-/obj/effect/turf_decal/techfloor{
- dir = 5
- },
/obj/machinery/light/directional/east,
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/corner/opaque/neutral{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/aft)
"th" = (
-/obj/effect/turf_decal/borderfloor/full,
-/obj/effect/turf_decal/industrial/traffic{
- dir = 1
- },
-/obj/effect/turf_decal/industrial/traffic,
/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "2-8"
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/tech/techmaint,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"ti" = (
-/obj/effect/decal/cleanable/dirt/dust,
/obj/structure/sign/warning/incident{
pixel_x = -32
},
/obj/machinery/computer/cargo/retro{
dir = 4
},
+/obj/effect/turf_decal/borderfloor{
+ dir = 1
+ },
/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"tI" = (
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2,
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "2-6"
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"tK" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -937,23 +870,13 @@
/obj/structure/cable{
icon_state = "0-8"
},
-/turf/open/floor/plasteel/showroomfloor,
+/turf/open/floor/plasteel/patterned,
/area/ship/crew/toilet)
"uk" = (
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"uz" = (
-/obj/effect/turf_decal/corner_techfloor_grid{
- dir = 4
- },
-/obj/effect/turf_decal/techfloor/corner{
- dir = 4
- },
/obj/structure/reagent_dispensers/fueltank,
/obj/effect/turf_decal/industrial/hatch/yellow,
/obj/structure/railing{
@@ -963,17 +886,12 @@
pixel_x = 7;
pixel_y = 28
},
-/turf/open/floor/plasteel/dark,
-/area/ship/cargo)
-"uW" = (
-/obj/machinery/door/airlock/grunge{
- name = "Bridge";
- req_one_access_txt = "20"
- },
-/obj/effect/turf_decal/industrial/warning,
/obj/effect/turf_decal/industrial/warning{
- dir = 1
+ dir = 4
},
+/turf/open/floor/plasteel/patterned/grid,
+/area/ship/cargo)
+"uW" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2,
/obj/machinery/door/firedoor/border_only{
@@ -984,6 +902,15 @@
dir = 2;
id = "mudskipper_bridge"
},
+/obj/structure/cable{
+ icon_state = "1-5"
+ },
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/obj/machinery/door/airlock/command{
+ dir = 1;
+ name = "Bridge";
+ req_access_txt = "19"
+ },
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"vn" = (
@@ -992,11 +919,11 @@
/obj/structure/sign/poster/contraband/punch_shit{
pixel_x = 32
},
-/obj/effect/turf_decal/techfloor{
- dir = 4
- },
/obj/item/storage/fancy/donut_box,
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/corner/opaque/neutral/half{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/aft)
"vI" = (
/obj/structure/cable{
@@ -1008,10 +935,15 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
-/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/plastic,
-/turf/open/floor/plasteel/tech,
+/obj/structure/cable{
+ icon_state = "1-5"
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
+"vP" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/bridge)
"wi" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
@@ -1023,25 +955,24 @@
/obj/structure/cable{
icon_state = "0-1"
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/patterned,
/area/ship/maintenance)
"wj" = (
-/obj/effect/turf_decal/industrial/outline/red,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 8
},
-/turf/open/floor/plasteel/tech,
+/obj/structure/cable{
+ icon_state = "4-5"
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"ws" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall,
/area/ship/engineering/engine)
"xk" = (
-/obj/effect/turf_decal/techfloor,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
},
-/obj/effect/decal/cleanable/dirt,
/obj/machinery/light_switch{
dir = 8;
pixel_x = 25;
@@ -1050,6 +981,12 @@
/obj/item/kirbyplants{
icon_state = "plant-14"
},
+/obj/structure/cable{
+ icon_state = "5-9"
+ },
+/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{
+ dir = 4
+ },
/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"xo" = (
@@ -1061,9 +998,7 @@
pixel_x = 22;
pixel_y = -6
},
-/turf/open/floor/wood/walnut{
- icon_state = "wood-broken7"
- },
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"xp" = (
/obj/structure/toilet{
@@ -1071,39 +1006,32 @@
},
/obj/machinery/light/dim/directional/south,
/obj/structure/curtain,
-/turf/open/floor/plasteel/showroomfloor,
+/turf/open/floor/plasteel/patterned,
/area/ship/crew/toilet)
"xH" = (
-/obj/structure/table/reinforced{
- color = "#c1b6a5"
- },
/obj/machinery/recharger{
pixel_y = 4
},
-/turf/open/floor/plasteel/tech,
+/obj/structure/table/reinforced,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"xU" = (
-/obj/effect/turf_decal/techfloor{
- dir = 4
- },
/obj/machinery/power/terminal{
dir = 1
},
/obj/structure/cable{
icon_state = "0-2"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/light/small/directional/east{
bulb_power = 0.2
},
/turf/open/floor/plasteel/tech,
/area/ship/engineering/engine)
+"xZ" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/engineering/engine)
"yg" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor{
- dir = 1
- },
/obj/structure/extinguisher_cabinet/directional/west{
pixel_y = -5
},
@@ -1115,24 +1043,23 @@
pixel_x = -22;
pixel_y = 6
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/corner/opaque/neutral/half,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/aft)
"yv" = (
-/obj/structure/window/plasma/reinforced/plastitanium,
/obj/structure/grille,
/obj/machinery/door/poddoor/shutters{
id = "mudskipper_window"
},
+/obj/structure/window/fulltile,
/turf/open/floor/plating,
/area/ship/cargo)
"yB" = (
-/obj/effect/turf_decal/techfloor,
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable{
icon_state = "0-1"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"yS" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
@@ -1141,10 +1068,14 @@
/obj/structure/cable{
icon_state = "0-1"
},
-/turf/open/floor/plasteel/grimy,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
+/area/ship/hallway/aft)
+"yV" = (
+/turf/closed/wall/r_wall/rust,
/area/ship/hallway/aft)
"yY" = (
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/light/dim/directional/west{
bulb_power = 0.5
},
@@ -1152,63 +1083,68 @@
dir = 1
},
/obj/machinery/portable_atmospherics/canister/toxins,
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering/engine)
"zx" = (
/obj/machinery/atmospherics/components/unary/shuttle/heater{
dir = 4
},
-/obj/structure/window/reinforced/spawner/west,
-/obj/structure/window/reinforced/spawner/north,
-/obj/structure/window/reinforced/spawner,
-/obj/structure/window/reinforced/spawner/east,
-/obj/machinery/door/poddoor/shutters{
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/machinery/door/poddoor{
dir = 4;
id = "mudskipper_engine"
},
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/ship/engineering/engine)
"zR" = (
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 8
},
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2,
/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "1-4"
},
-/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2,
-/turf/open/floor/plasteel/grimy,
+/obj/structure/cable{
+ icon_state = "4-9"
+ },
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"zW" = (
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 10
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 9
},
-/turf/open/floor/plating,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/crew/cryo)
"zX" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall/r_wall/rust,
/area/ship/crew/cryo)
+"Ag" = (
+/turf/closed/wall/r_wall,
+/area/ship/hallway/aft)
"Ak" = (
/obj/structure/chair/comfy/shuttle{
dir = 4
},
-/obj/effect/turf_decal/box,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
-/turf/open/floor/plasteel/tech,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"AN" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{
dir = 4
},
@@ -1216,9 +1152,6 @@
dir = 9
},
/obj/structure/extinguisher_cabinet/directional/east,
-/obj/structure/cable{
- icon_state = "1-8"
- },
/obj/structure/cable{
icon_state = "2-8"
},
@@ -1227,11 +1160,13 @@
pixel_x = 22;
pixel_y = -14
},
+/obj/structure/cable{
+ icon_state = "1-10"
+ },
+/obj/structure/catwalk/over/plated_catwalk/dark,
/turf/open/floor/plating,
/area/ship/engineering/engine)
"Bj" = (
-/obj/effect/turf_decal/corner_techfloor_grid,
-/obj/effect/turf_decal/techfloor/corner,
/obj/effect/decal/cleanable/dirt/dust,
/obj/structure/sign/poster/contraband/hacking_guide{
pixel_y = -32
@@ -1241,27 +1176,27 @@
dir = 8
},
/obj/structure/reagent_dispensers/watertank,
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"Bn" = (
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/industrial/warning,
+/turf/open/floor/plasteel/tech/techmaint,
/area/ship/hallway/aft)
"Bw" = (
-/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/oil{
icon_state = "floor4"
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/borderfloor{
+ dir = 5
+ },
+/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"BA" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{
@@ -1273,10 +1208,8 @@
/obj/machinery/advanced_airlock_controller{
pixel_y = 24
},
-/obj/effect/turf_decal/techfloor{
- dir = 9
- },
-/turf/open/floor/plasteel/dark,
+/obj/structure/chair/handrail,
+/turf/open/floor/plasteel/tech/techmaint,
/area/ship/hallway/aft)
"BW" = (
/obj/effect/turf_decal/box,
@@ -1296,7 +1229,8 @@
/obj/item/storage/pill_bottle/charcoal/less,
/obj/item/reagent_containers/hypospray/medipen/penacid,
/obj/item/reagent_containers/hypospray/medipen/penacid,
-/turf/open/floor/plasteel/tech,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"Ch" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
@@ -1308,7 +1242,7 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/turf/open/floor/plasteel/showroomfloor,
+/turf/open/floor/plasteel/patterned,
/area/ship/crew/toilet)
"Cr" = (
/obj/structure/table/reinforced,
@@ -1316,36 +1250,34 @@
dir = 6
},
/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
/turf/open/floor/plasteel/tech/grid,
/area/ship/hallway/aft)
+"Cv" = (
+/turf/closed/wall/r_wall,
+/area/ship/maintenance)
"CG" = (
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/clothing/suit/space/eva,
/obj/item/clothing/head/helmet/space/eva,
/obj/machinery/suit_storage_unit/inherit/industrial,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 9
+ },
/turf/open/floor/plasteel/tech/grid,
/area/ship/hallway/aft)
"Dj" = (
-/obj/effect/turf_decal/borderfloor/full,
-/obj/effect/turf_decal/industrial/traffic{
- dir = 1
- },
-/obj/effect/turf_decal/industrial/traffic,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/tech/techmaint,
+/obj/structure/cable{
+ icon_state = "5-8"
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"Dp" = (
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30";
- dir = 1
- },
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30"
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{
dir = 1
},
@@ -1353,14 +1285,18 @@
dir = 1
},
/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "2-8"
},
-/turf/open/floor/wood/walnut{
- icon_state = "wood-broken2"
+/obj/structure/cable{
+ icon_state = "2-9"
},
+/obj/effect/turf_decal/corner/opaque/bottlegreen/full,
+/turf/open/floor/plasteel/dark,
+/area/ship/bridge)
+"DA" = (
+/turf/closed/wall/r_wall,
/area/ship/bridge)
"DC" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{
dir = 1
},
@@ -1371,59 +1307,47 @@
icon_state = "2-8"
},
/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "6-8"
},
+/obj/structure/catwalk/over/plated_catwalk,
/turf/open/floor/plating,
/area/ship/hallway/central)
"DS" = (
/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor{
- dir = 1
- },
/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/light_switch{
- pixel_y = 23;
- pixel_x = -3
+ pixel_x = -3;
+ pixel_y = 23
+ },
+/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{
+ dir = 1
},
/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
+"DU" = (
+/turf/closed/wall/r_wall,
+/area/ship/crew/cryo)
"Ed" = (
-/obj/effect/turf_decal/corner_techfloor_grid{
- dir = 1
- },
-/obj/effect/turf_decal/techfloor/corner{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{
dir = 8
},
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"Eg" = (
-/obj/effect/turf_decal/techfloor{
- dir = 4
- },
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/door/firedoor/border_only{
dir = 8
},
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/number/eight{
dir = 4
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/mono{
+ dir = 1
+ },
/area/ship/cargo)
"Ey" = (
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30";
- dir = 10
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{
dir = 8
},
@@ -1434,39 +1358,37 @@
icon_state = "2-4"
},
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "2-9"
},
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/carpet,
/area/ship/crew)
"EP" = (
-/obj/effect/turf_decal/techfloor{
- dir = 6
- },
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/door/firedoor/border_only{
dir = 8
},
-/obj/structure/cable{
- icon_state = "1-4"
- },
/obj/machinery/button/shieldwallgen{
dir = 1;
- pixel_x = -6;
- pixel_y = -21;
id = "mudskipper_shield";
- name = "Cargo Holofield"
+ name = "Cargo Holofield";
+ pixel_x = -6;
+ pixel_y = -21
},
/obj/machinery/button/door{
dir = 1;
- pixel_x = 6;
- pixel_y = -21;
id = "mudskipper_door";
- name = "Cargo Door"
+ name = "Cargo Door";
+ pixel_x = 6;
+ pixel_y = -21
},
/obj/effect/turf_decal/number/six{
dir = 8
},
-/turf/open/floor/plasteel/dark,
+/obj/structure/cable{
+ icon_state = "4-9"
+ },
+/turf/open/floor/plasteel/mono{
+ dir = 1
+ },
/area/ship/cargo)
"EQ" = (
/obj/structure/tank_dispenser/oxygen,
@@ -1475,19 +1397,21 @@
},
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/light/dim/directional/north,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
/turf/open/floor/plasteel/tech/grid,
/area/ship/hallway/aft)
"Ft" = (
/obj/structure/bed,
/obj/item/bedsheet/dorms,
/obj/structure/curtain/bounty,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/light_switch{
dir = 1;
- pixel_y = -21;
- pixel_x = 3
+ pixel_x = 3;
+ pixel_y = -21
},
-/turf/open/floor/wood/walnut,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"FN" = (
/obj/machinery/suit_storage_unit/inherit,
@@ -1497,39 +1421,38 @@
},
/obj/item/clothing/suit/space/engineer,
/obj/item/clothing/head/helmet/space/light/engineer,
+/obj/effect/turf_decal/borderfloor{
+ dir = 4
+ },
/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"Gk" = (
-/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium,
/obj/machinery/door/poddoor/shutters/preopen{
dir = 4;
id = "mudskipper_bridge"
},
+/obj/effect/spawner/structure/window,
/turf/open/floor/plating,
/area/ship/bridge)
"Gq" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall,
/area/ship/crew)
"GI" = (
/obj/machinery/cryopod{
- dir = 1
- },
-/obj/effect/turf_decal/techfloor{
- dir = 9
+ dir = 8
},
-/obj/effect/turf_decal/industrial/hatch/yellow,
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/airalarm/directional/south,
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/tech/grid,
/area/ship/crew/cryo)
"GW" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/wood/walnut{
- icon_state = "wood-broken7"
+/obj/structure/cable{
+ icon_state = "6-10"
},
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"Hk" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 6
},
@@ -1539,37 +1462,29 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
"Id" = (
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
/obj/effect/decal/cleanable/dirt/dust,
-/obj/structure/table/reinforced{
- color = "#c1b6a5"
- },
/obj/item/stack/sheet/metal/five{
pixel_y = 3
},
/obj/item/stack/sheet/glass/five{
pixel_y = 6
},
-/turf/open/floor/plasteel/dark,
+/obj/structure/table/reinforced,
+/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"IL" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer2,
/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/structure/cable{
- icon_state = "1-8"
+ icon_state = "2-8"
},
/obj/structure/cable{
- icon_state = "2-8"
+ icon_state = "4-8"
},
+/obj/structure/catwalk/over/plated_catwalk,
/turf/open/floor/plating,
/area/ship/hallway/central)
"IP" = (
@@ -1588,18 +1503,17 @@
pixel_y = 3
},
/obj/item/radio{
- pixel_y = 3;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 3
},
/obj/item/radio{
- pixel_y = 3;
- pixel_x = -6
+ pixel_x = -6;
+ pixel_y = 3
},
/turf/open/floor/plasteel/tech/grid,
/area/ship/crew/cryo)
"IU" = (
-/obj/structure/catwalk,
-/turf/open/floor/engine/airless,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"JN" = (
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{
@@ -1608,14 +1522,13 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 8
},
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor{
- dir = 1
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
},
-/turf/open/floor/plasteel/dark,
+/obj/structure/chair/handrail,
+/turf/open/floor/plasteel/tech/techmaint,
/area/ship/hallway/aft)
"JS" = (
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{
dir = 8
},
@@ -1625,10 +1538,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/structure/cable{
- icon_state = "1-4"
- },
-/turf/open/floor/plasteel/grimy,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"Kt" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
@@ -1637,14 +1549,19 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 9
},
-/turf/open/floor/plasteel/grimy,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 8
+ },
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"KA" = (
/obj/structure/window/reinforced/spawner,
/obj/item/paper_bin,
/obj/item/analyzer{
- pixel_y = 3;
- pixel_x = 13
+ pixel_x = 13;
+ pixel_y = 3
},
/obj/item/pen,
/obj/structure/cable{
@@ -1653,17 +1570,14 @@
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/structure/table/reinforced{
- color = "#c1b6a5"
- },
-/turf/open/floor/plasteel/tech/grid,
+/obj/structure/table/reinforced,
+/turf/open/floor/plasteel/tech,
/area/ship/engineering/engine)
"KT" = (
/obj/machinery/washing_machine,
-/obj/effect/turf_decal/techfloor{
- dir = 6
- },
-/turf/open/floor/plasteel/tech/grid,
+/obj/effect/turf_decal/box,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/plasteel/patterned,
/area/ship/maintenance)
"KU" = (
/obj/machinery/power/apc/auto_name/directional/north,
@@ -1671,11 +1585,14 @@
/obj/structure/cable{
icon_state = "0-2"
},
-/obj/effect/turf_decal/techfloor{
- dir = 1
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/structure/chair/handrail{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/crew/cryo)
"Lw" = (
/obj/machinery/firealarm/directional/west{
@@ -1686,40 +1603,51 @@
pixel_x = -22;
pixel_y = -9
},
-/obj/effect/turf_decal/techfloor,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
/obj/machinery/computer/cryopod/retro/directional/south,
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/structure/chair/handrail{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/crew/cryo)
"LV" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 8
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{
dir = 1
},
+/obj/structure/catwalk/over/plated_catwalk,
/turf/open/floor/plating,
/area/ship/hallway/central)
+"LY" = (
+/obj/effect/turf_decal/corner/opaque/neutral/half,
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/closet/emcloset,
+/turf/open/floor/plasteel/dark,
+/area/ship/hallway/central)
"Mf" = (
/turf/template_noop,
/area/space)
"Mi" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 8
},
-/obj/structure/cable{
- icon_state = "4-8"
- },
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "6-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-10"
+ },
+/obj/structure/catwalk/over/plated_catwalk,
/turf/open/floor/plating,
/area/ship/hallway/central)
"MB" = (
@@ -1735,38 +1663,33 @@
/obj/machinery/power/smes/shuttle/precharged{
dir = 4
},
-/obj/structure/window/reinforced/spawner/west,
-/obj/machinery/door/window/eastright{
- layer = 3.1
- },
/obj/structure/cable{
icon_state = "0-8"
},
-/obj/machinery/door/poddoor/shutters{
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/machinery/door/poddoor{
dir = 4;
id = "mudskipper_engine"
},
+/obj/structure/window/reinforced{
+ dir = 8
+ },
/turf/open/floor/plating,
/area/ship/engineering/engine)
"MK" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall,
/area/ship/maintenance)
+"Ne" = (
+/turf/closed/wall/rust,
+/area/ship/crew)
"Ni" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/industrial/warning{
- dir = 1
- },
-/obj/effect/turf_decal/industrial/warning,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2,
-/obj/structure/cable{
- icon_state = "1-2"
- },
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"Nj" = (
/obj/machinery/door/airlock/external{
@@ -1778,12 +1701,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 4
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
+/obj/effect/turf_decal/industrial/warning/fulltile,
/turf/open/floor/plasteel/tech,
/area/ship/hallway/aft)
"Nl" = (
@@ -1791,7 +1709,7 @@
dir = 4
},
/obj/machinery/light/floor,
-/turf/open/floor/engine/hull/reinforced,
+/turf/open/floor/engine/hull,
/area/ship/cargo)
"NJ" = (
/obj/effect/turf_decal/box,
@@ -1813,52 +1731,50 @@
/obj/item/reagent_containers/food/drinks/waterbottle,
/obj/item/reagent_containers/food/drinks/waterbottle,
/obj/item/reagent_containers/food/drinks/waterbottle,
-/turf/open/floor/plasteel/tech,
+/obj/structure/cable{
+ icon_state = "1-6"
+ },
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"NN" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2,
-/turf/open/floor/plasteel/tech,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"NU" = (
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"Oc" = (
/obj/item/paper_bin,
-/obj/structure/table/reinforced{
- color = "#c1b6a5"
- },
-/turf/open/floor/plasteel/tech/grid,
+/obj/structure/table/reinforced,
+/obj/effect/turf_decal/corner/opaque/bottlegreen/full,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"OB" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall,
/area/ship/bridge)
"OD" = (
-/obj/structure/chair{
+/obj/machinery/airalarm/directional/east,
+/obj/structure/chair/plastic{
dir = 8
},
-/obj/machinery/airalarm/directional/east,
-/turf/open/floor/plasteel/tech,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
+"OR" = (
+/turf/closed/wall/r_wall,
+/area/ship/crew)
"Pr" = (
-/obj/machinery/door/airlock/grunge{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 8
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
/obj/machinery/door/firedoor/border_only{
dir = 8
},
@@ -1871,66 +1787,66 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/obj/machinery/door/airlock/public/glass{
+ dir = 4;
+ name = "Canteen"
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"PO" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor/corner{
- dir = 8
- },
-/obj/effect/turf_decal/techfloor/corner,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2,
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/ship/hallway/central)
"PR" = (
-/obj/structure/window/plasma/reinforced/plastitanium,
/obj/structure/grille,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/poddoor/shutters{
id = "mudskipper_window"
},
+/obj/structure/window/fulltile,
/turf/open/floor/plating,
/area/ship/hallway/aft)
"PU" = (
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"Qp" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall,
/area/ship/hallway/aft)
"Qt" = (
-/obj/structure/window/plasma/reinforced/plastitanium,
/obj/structure/grille,
/obj/machinery/atmospherics/pipe/layer_manifold,
/obj/machinery/door/poddoor/shutters{
id = "mudskipper_window"
},
+/obj/structure/window/fulltile,
/turf/open/floor/plating,
/area/ship/engineering/engine)
"Qu" = (
/obj/machinery/autolathe/hacked,
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/borderfloor{
+ dir = 4
+ },
+/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"Qx" = (
/obj/effect/decal/cleanable/glass,
-/obj/effect/turf_decal/techfloor/corner{
- dir = 8
- },
-/obj/effect/turf_decal/techfloor/corner,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2,
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "1-9"
},
-/turf/open/floor/plasteel/dark,
+/obj/structure/cable{
+ icon_state = "2-5"
+ },
+/turf/open/floor/plasteel,
/area/ship/hallway/central)
"QF" = (
/obj/machinery/power/terminal{
@@ -1939,10 +1855,6 @@
/obj/structure/cable{
icon_state = "0-4"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
"Rc" = (
@@ -1952,24 +1864,23 @@
},
/obj/machinery/button/door{
dir = 1;
- pixel_x = 6;
- pixel_y = -21;
id = "mudskipper_window";
- name = "Window Shutters"
+ name = "Window Shutters";
+ pixel_x = 6;
+ pixel_y = -21
},
/obj/machinery/light/small/directional/west{
- pixel_y = -6;
- bulb_power = 0.6
+ bulb_power = 0.6;
+ pixel_y = -6
+ },
+/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{
+ dir = 8
},
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"Rl" = (
/obj/effect/decal/cleanable/dirt/dust,
/obj/structure/table,
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30";
- dir = 8
- },
/obj/item/reagent_containers/food/condiment/saltshaker{
pixel_x = 10;
pixel_y = 5
@@ -1979,11 +1890,13 @@
pixel_y = 2
},
/obj/item/paper/pamphlet{
+ name = "Salvage And You";
pixel_x = -3;
- pixel_y = 2;
- name = "Salvage And You"
+ pixel_y = 2
},
-/turf/open/floor/wood/walnut,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"Rn" = (
/obj/machinery/door/firedoor/border_only,
@@ -1995,15 +1908,16 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/machinery/door/airlock/grunge{
- name = "Utility Closet"
+/obj/machinery/door/airlock{
+ name = "Custodial Closet"
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/maintenance)
"Rv" = (
/obj/item/gps/mining{
- pixel_y = 6;
- gpstag = "SCAV0"
+ gpstag = "SCAV0";
+ pixel_y = 6
},
/obj/item/clipboard{
pixel_x = 5;
@@ -2021,10 +1935,8 @@
pixel_y = 32
},
/obj/effect/decal/cleanable/dirt/dust,
-/obj/structure/table/reinforced{
- color = "#c1b6a5"
- },
-/turf/open/floor/plasteel/tech/grid,
+/obj/structure/table/reinforced,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"RR" = (
/obj/structure/tank_dispenser/oxygen,
@@ -2035,19 +1947,14 @@
/obj/structure/filingcabinet/double,
/obj/item/folder,
/obj/machinery/light/small/directional/west{
- pixel_y = 6;
- bulb_power = 0.6
+ bulb_power = 0.6;
+ pixel_y = 6
},
+/obj/effect/turf_decal/corner/opaque/neutral/three_quarters,
+/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"So" = (
-/obj/effect/turf_decal/industrial/warning{
- dir = 1
- },
-/obj/effect/turf_decal/industrial/warning,
-/obj/machinery/door/airlock{
- name = "Crew Quarters"
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
/obj/machinery/door/firedoor/border_only{
dir = 1
@@ -2057,7 +1964,11 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/obj/machinery/door/airlock{
+ name = "Dormitory"
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/crew)
"Sq" = (
/obj/structure/curtain,
@@ -2070,10 +1981,6 @@
/turf/open/floor/plasteel/showroomfloor,
/area/ship/crew/toilet)
"ST" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor{
- dir = 1
- },
/obj/item/storage/cans/sixbeer,
/obj/effect/spawner/lootdrop/donkpockets,
/obj/structure/closet/secure_closet/freezer{
@@ -2082,17 +1989,18 @@
},
/obj/item/reagent_containers/food/snacks/meat/slab,
/obj/item/reagent_containers/food/snacks/meat/slab,
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/corner/opaque/neutral/half,
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/aft)
"Ti" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/on{
dir = 4;
name = "airlock waste injector"
},
-/turf/open/floor/engine/hull/reinforced,
+/turf/open/floor/engine/hull,
/area/ship/external/dark)
"Tn" = (
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/structure/cable{
icon_state = "1-2"
},
@@ -2105,19 +2013,10 @@
/obj/structure/cable{
icon_state = "2-4"
},
+/obj/structure/catwalk/over/plated_catwalk/dark,
/turf/open/floor/plating,
/area/ship/engineering/engine)
"TV" = (
-/obj/machinery/door/airlock/grunge{
- dir = 4;
- name = "Cargo Bay"
- },
-/obj/effect/turf_decal/industrial/traffic{
- dir = 4
- },
-/obj/effect/turf_decal/industrial/traffic{
- dir = 8
- },
/obj/machinery/door/firedoor/border_only{
dir = 4
},
@@ -2133,7 +2032,15 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/plasteel/tech,
+/obj/structure/cable{
+ icon_state = "5-10"
+ },
+/obj/machinery/door/airlock/mining{
+ dir = 8;
+ name = "Cargo Bay"
+ },
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"Ud" = (
/obj/effect/turf_decal/box,
@@ -2145,6 +2052,7 @@
pixel_y = -5
},
/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/tech,
/area/ship/engineering/engine)
"Ui" = (
@@ -2152,8 +2060,11 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 1
},
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
+"Uo" = (
+/turf/closed/wall/r_wall/yesdiag,
+/area/ship/crew/cryo)
"UF" = (
/obj/machinery/door/airlock/engineering{
dir = 4;
@@ -2165,12 +2076,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 8
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
/obj/machinery/door/firedoor/border_only{
dir = 8
},
@@ -2180,7 +2085,8 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"UL" = (
/obj/machinery/suit_storage_unit/inherit,
@@ -2188,6 +2094,10 @@
/obj/machinery/light/directional/west,
/obj/item/clothing/suit/space/engineer,
/obj/item/clothing/head/helmet/space/light/engineer,
+/obj/effect/turf_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"UZ" = (
@@ -2197,16 +2107,17 @@
/obj/item/flashlight/lamp/green{
pixel_y = 4
},
-/turf/open/floor/wood/walnut,
+/obj/structure/cable{
+ icon_state = "5-6"
+ },
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"Vn" = (
/obj/machinery/vending/cigarette,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/wrapping,
-/obj/effect/turf_decal/techfloor{
- dir = 1
- },
+/obj/effect/turf_decal/corner/opaque/neutral/half,
/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"Vo" = (
@@ -2217,11 +2128,6 @@
/obj/structure/cable{
icon_state = "0-4"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor{
- dir = 8
- },
/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
"Vy" = (
@@ -2230,38 +2136,23 @@
/obj/structure/curtain/bounty,
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/light/dim/directional/north,
-/turf/open/floor/wood/walnut,
+/turf/open/floor/plasteel/grimy,
/area/ship/crew)
"VP" = (
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor/corner{
- dir = 4
- },
-/obj/effect/turf_decal/techfloor/corner{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2,
/obj/structure/cable{
- icon_state = "1-2"
+ icon_state = "1-10"
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/plasteel,
/area/ship/hallway/central)
"VW" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/turf/closed/wall,
/area/ship/external/dark)
+"Wk" = (
+/turf/closed/wall/rust,
+/area/ship/maintenance)
"Wm" = (
-/obj/machinery/door/airlock/grunge{
- dir = 4;
- name = "Cryogenic Storage"
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 4
},
@@ -2271,7 +2162,12 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/turf/open/floor/plasteel/tech,
+/obj/effect/turf_decal/industrial/warning/fulltile,
+/obj/machinery/door/airlock{
+ dir = 4;
+ name = "Cryo Room"
+ },
+/turf/open/floor/plasteel/dark,
/area/ship/crew)
"Wz" = (
/obj/structure/sink{
@@ -2286,7 +2182,7 @@
/obj/structure/window/reinforced/tinted/frosted{
dir = 8
},
-/turf/open/floor/plasteel/showroomfloor,
+/turf/open/floor/plasteel/patterned,
/area/ship/crew/toilet)
"Xc" = (
/obj/machinery/blackbox_recorder,
@@ -2294,35 +2190,46 @@
/obj/machinery/light/small/directional/north{
pixel_x = -6
},
+/obj/effect/turf_decal/box,
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
"Xh" = (
/obj/structure/table/reinforced,
-/obj/effect/turf_decal/techfloor,
/obj/machinery/power/apc/auto_name/directional/west,
/obj/structure/cable{
icon_state = "0-1"
},
+/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"Xk" = (
-/obj/effect/turf_decal/industrial/outline/red,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{
dir = 8
},
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/tech,
+/obj/structure/cable{
+ icon_state = "1-10"
+ },
+/obj/structure/cable{
+ icon_state = "5-8"
+ },
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
"Xm" = (
-/obj/structure/window/plasma/reinforced/plastitanium,
/obj/structure/grille,
/obj/machinery/door/poddoor/shutters{
id = "mudskipper_window"
},
+/obj/structure/window/fulltile,
/turf/open/floor/plating,
/area/ship/hallway/aft)
+"XI" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/cargo)
"XK" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{
dir = 1
@@ -2331,26 +2238,22 @@
dir = 10
},
/obj/structure/cable{
- icon_state = "2-8"
+ icon_state = "6-8"
},
-/turf/open/floor/plasteel/dark,
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"XU" = (
-/obj/structure/chair{
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/obj/structure/chair/plastic{
dir = 1
},
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30"
- },
-/obj/effect/turf_decal/siding/wood{
- dir = 10;
- color = "#543C30"
- },
-/turf/open/floor/wood/walnut,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"Yc" = (
/obj/effect/turf_decal/box,
-/obj/effect/decal/cleanable/dirt/dust,
/obj/structure/rack,
/obj/item/gps/mining{
gpstag = "SCAV1"
@@ -2364,20 +2267,23 @@
/obj/item/gps/mining{
gpstag = "SCAV1"
},
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
/obj/item/flashlight/seclite,
/obj/item/flashlight/seclite,
-/turf/open/floor/plasteel/tech,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"Yd" = (
-/obj/structure/window/plasma/reinforced/plastitanium,
/obj/structure/grille,
/obj/machinery/door/poddoor/shutters{
id = "mudskipper_window"
},
+/obj/structure/window/fulltile,
/turf/open/floor/plating,
/area/ship/crew)
+"Yi" = (
+/turf/closed/wall/r_wall/yesdiag,
+/area/ship/maintenance)
"Yq" = (
/obj/effect/decal/cleanable/oil{
icon_state = "floor4"
@@ -2387,45 +2293,40 @@
target_pressure = 1000
},
/obj/machinery/atmospherics/components/binary/volume_pump/layer2{
- name = "Scrubbers to External";
- dir = 1
+ dir = 1;
+ name = "Scrubbers to External"
},
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/tech,
+/turf/open/floor/plasteel/dark,
+/area/ship/engineering/engine)
+"Yu" = (
+/turf/closed/wall/r_wall,
/area/ship/engineering/engine)
"Yv" = (
/obj/structure/closet/crate/bin,
/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor{
- dir = 1
- },
/obj/machinery/firealarm/directional/east{
pixel_y = -5
},
/obj/machinery/light/dim/directional/north,
+/obj/effect/turf_decal/corner/opaque/neutral/half,
/turf/open/floor/plasteel/dark,
/area/ship/hallway/central)
"YK" = (
-/obj/effect/turf_decal/industrial/warning{
- dir = 1
+/obj/structure/cable{
+ icon_state = "2-9"
},
-/obj/effect/turf_decal/industrial/warning,
-/obj/machinery/door/firedoor/border_only,
-/obj/machinery/door/firedoor/border_only{
- dir = 1
+/obj/effect/turf_decal/corner/transparent/beige/full,
+/obj/effect/turf_decal/corner/transparent/brown/diagonal,
+/obj/structure/chair/handrail{
+ dir = 8
},
-/turf/open/floor/plasteel/tech,
+/turf/open/floor/plasteel,
/area/ship/hallway/aft)
"YL" = (
/obj/machinery/power/port_gen/pacman,
-/obj/effect/turf_decal/techfloor{
- dir = 6
- },
/obj/structure/cable{
icon_state = "0-1"
},
@@ -2435,7 +2336,6 @@
/area/ship/engineering/engine)
"Zi" = (
/obj/effect/decal/cleanable/dirt/dust,
-/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
dir = 8
},
@@ -2443,39 +2343,33 @@
dir = 8
},
/obj/structure/cable{
- icon_state = "2-8"
+ icon_state = "1-2"
},
/obj/structure/cable{
- icon_state = "4-8"
+ icon_state = "1-4"
},
+/obj/structure/catwalk/over/plated_catwalk,
/turf/open/floor/plating,
/area/ship/cargo)
+"Zx" = (
+/turf/closed/wall/r_wall/rust,
+/area/ship/crew)
"ZC" = (
-/obj/effect/turf_decal/siding/wood{
- color = "#543C30";
- dir = 9
- },
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{
dir = 6
},
-/obj/structure/cable{
- icon_state = "2-4"
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/carpet,
/area/ship/crew)
"ZJ" = (
-/obj/structure/chair{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/techfloor,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
/obj/machinery/airalarm/directional/south,
-/turf/open/floor/plasteel/dark,
+/obj/structure/chair/plastic{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
/area/ship/hallway/central)
(1,1,1) = {"
@@ -2490,7 +2384,7 @@ ag
ag
lj
ag
-ws
+jz
cs
cs
cs
@@ -2501,16 +2395,16 @@ cs
cs
hX
IU
-ws
-ws
-bZ
+Yu
+Yu
+MF
zx
-bZ
+MF
MF
zx
MF
-ws
-ws
+xZ
+Yu
IU
hX
cs
@@ -2520,7 +2414,7 @@ cs
cs
hX
cs
-ws
+Yu
kX
QF
en
@@ -2529,7 +2423,7 @@ Vo
qE
ao
yY
-ws
+Yu
cs
hX
cs
@@ -2548,7 +2442,7 @@ KA
eu
hY
sI
-ws
+Yu
IU
hX
hX
@@ -2558,7 +2452,7 @@ cs
hX
cs
cs
-ws
+xZ
Ud
Hk
AN
@@ -2567,7 +2461,7 @@ dw
hr
xU
YL
-ws
+Yu
cs
cs
hX
@@ -2576,18 +2470,18 @@ cs
(6,1,1) = {"
hX
IU
-OB
-OB
+DA
+DA
OB
UF
OB
+js
+js
OB
-OB
-OB
-OB
-Qp
-Qp
+js
Qp
+Ag
+Ag
Ti
hX
cs
@@ -2595,7 +2489,7 @@ cs
(7,1,1) = {"
cs
cs
-OB
+DA
Xc
ic
ak
@@ -2614,7 +2508,7 @@ cs
(8,1,1) = {"
cs
cs
-OB
+DA
Rv
Oc
Dp
@@ -2633,18 +2527,18 @@ MB
(9,1,1) = {"
cs
cs
-OB
+vP
nM
rr
oC
-OB
+js
dN
sf
qy
OB
JN
CG
-Qp
+Ag
IU
cs
cs
@@ -2652,8 +2546,8 @@ cs
(10,1,1) = {"
hX
IU
-OB
-OB
+DA
+DA
OB
oG
OB
@@ -2662,8 +2556,8 @@ Gk
Gk
OB
Nj
-Qp
-Qp
+yV
+Ag
IU
hX
cs
@@ -2710,7 +2604,7 @@ cs
hX
cs
cs
-Qp
+Ag
sT
vn
Qp
@@ -2719,7 +2613,7 @@ ar
sa
eL
gT
-Qp
+Ag
cs
cs
hX
@@ -2728,9 +2622,9 @@ cs
(14,1,1) = {"
hX
IU
-Gq
-Gq
-Gq
+OR
+OR
+Ne
Gq
Gq
dc
@@ -2738,8 +2632,8 @@ Pr
dc
oU
oU
-oU
-oU
+rG
+rG
IU
hX
cs
@@ -2747,7 +2641,7 @@ cs
(15,1,1) = {"
cs
cs
-Gq
+OR
Vy
UZ
Ft
@@ -2758,7 +2652,7 @@ Xh
oU
kB
xp
-oU
+rG
cs
cs
cs
@@ -2777,7 +2671,7 @@ Qx
mt
Ch
Wz
-oU
+lg
cs
cs
cs
@@ -2789,14 +2683,14 @@ Yd
xo
cB
dQ
-Gq
+Ne
DS
Mi
ZJ
oU
tK
Sq
-oU
+lg
IU
hX
cs
@@ -2804,18 +2698,18 @@ cs
(18,1,1) = {"
hX
cs
-Gq
+Zx
Gq
Wm
Gq
-Gq
-dc
+Ne
+LY
mC
iY
MK
MK
-MK
-MK
+Wk
+Cv
cs
hX
cs
@@ -2827,14 +2721,14 @@ zX
KU
zW
Lw
-zX
+ev
Vn
DC
PO
Rn
wi
pF
-MK
+Cv
cs
hX
cs
@@ -2842,18 +2736,18 @@ cs
(20,1,1) = {"
hX
IU
-zX
+DU
qN
IP
GI
-zX
+ev
Yv
LV
xk
MK
cn
KT
-MK
+Cv
IU
hX
cs
@@ -2861,18 +2755,18 @@ cs
(21,1,1) = {"
cs
cs
-zX
-zX
-zX
-zX
-zX
+Uo
+DU
+ev
+ev
+ev
dc
TV
dc
MK
MK
-MK
-MK
+Cv
+Yi
cs
cs
cs
@@ -2939,7 +2833,7 @@ cs
hX
IU
mF
-mF
+XI
uz
gR
Xk
@@ -2984,7 +2878,7 @@ gB
gB
gB
mS
-mF
+XI
IU
IU
hX
@@ -2996,7 +2890,7 @@ cs
cs
cs
VW
-hH
+hn
Nl
kY
ib
@@ -3034,14 +2928,14 @@ cs
cs
cs
cs
-hH
-hH
+hn
+hn
cs
cs
cs
cs
hH
-hH
+hn
cs
cs
cs
@@ -3059,7 +2953,7 @@ cs
cs
cs
cs
-hH
+hn
cs
cs
cs
diff --git a/_maps/shuttles/independent/independent_rigger.dmm b/_maps/shuttles/independent/independent_rigger.dmm
index 15265d30016b..da493fcdf548 100644
--- a/_maps/shuttles/independent/independent_rigger.dmm
+++ b/_maps/shuttles/independent/independent_rigger.dmm
@@ -1179,7 +1179,7 @@
"pv" = (
/obj/effect/turf_decal/corner/opaque/yellow/diagonal,
/obj/structure/table,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/turf/open/floor/plasteel/white,
/area/ship/crew/canteen)
"pD" = (
diff --git a/_maps/shuttles/independent/independent_schmiedeberg.dmm b/_maps/shuttles/independent/independent_schmiedeberg.dmm
index ce7b407a4731..891e3bd2ce9a 100644
--- a/_maps/shuttles/independent/independent_schmiedeberg.dmm
+++ b/_maps/shuttles/independent/independent_schmiedeberg.dmm
@@ -69,7 +69,7 @@
/obj/structure/table,
/obj/item/storage/bag/tray,
/obj/item/reagent_containers/food/condiment/enzyme,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/item/reagent_containers/food/condiment/saltshaker{
pixel_x = -5;
pixel_y = 10
@@ -2063,8 +2063,8 @@
/obj/item/flashlight/seclite,
/obj/item/flashlight/seclite,
/obj/item/flashlight/seclite,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
/obj/structure/sign/poster/retro/lasergun_new{
pixel_x = -32
},
diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm
index 0481bd2506fa..89dd45bb2262 100644
--- a/_maps/shuttles/independent/independent_shetland.dmm
+++ b/_maps/shuttles/independent/independent_shetland.dmm
@@ -84,7 +84,7 @@
"aR" = (
/obj/effect/turf_decal/corner/opaque/neutral/half,
/obj/item/cutting_board,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/structure/table/reinforced,
/turf/open/floor/plasteel/dark,
/area/ship/crew/canteen)
@@ -131,12 +131,18 @@
dir = 4
},
/obj/item/radio/intercom/directional/south,
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plasteel/dark,
/area/ship/engineering)
"bm" = (
/obj/effect/turf_decal/industrial/warning{
dir = 1
},
+/obj/structure/chair/handrail{
+ dir = 4
+ },
/turf/open/floor/plasteel/tech/techmaint,
/area/ship/hallway/port)
"bv" = (
@@ -169,6 +175,7 @@
dir = 4
},
/obj/structure/catwalk/over/plated_catwalk,
+/obj/structure/chair/handrail,
/turf/open/floor/plating,
/area/ship/hallway/fore)
"bD" = (
@@ -244,7 +251,7 @@
/obj/machinery/door/firedoor/border_only{
dir = 1
},
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/crew/canteen)
"cD" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
@@ -336,6 +343,9 @@
/obj/structure/cable{
icon_state = "5-9"
},
+/obj/structure/chair/handrail{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
"cR" = (
@@ -422,6 +432,7 @@
pixel_x = -20;
pixel_y = 5
},
+/obj/effect/turf_decal/industrial/warning,
/turf/open/floor/plating,
/area/ship/engineering/electrical)
"dT" = (
@@ -461,6 +472,7 @@
/obj/effect/decal/cleanable/cobweb,
/obj/item/trash/candy,
/obj/effect/decal/cleanable/dirt,
+/mob/living/simple_animal/hostile/cockroach,
/turf/open/floor/plating,
/area/ship/engineering/electrical)
"en" = (
@@ -475,6 +487,7 @@
/obj/machinery/door/firedoor/border_only{
dir = 8
},
+/obj/effect/turf_decal/industrial/warning/fulltile,
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"es" = (
@@ -512,7 +525,7 @@
"ez" = (
/obj/effect/landmark/start/shaft_miner,
/obj/machinery/computer/helm/viewscreen/directional/east,
-/turf/open/floor/plasteel/patterned/cargo_one,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"eC" = (
/obj/machinery/suit_storage_unit/inherit/industrial,
@@ -700,6 +713,9 @@
dir = 9
},
/obj/structure/extinguisher_cabinet/directional/south,
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/ship/hallway/starboard)
"gc" = (
@@ -764,6 +780,9 @@
"gt" = (
/obj/machinery/light/directional/south,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plasteel/dark,
/area/ship/hallway/fore)
"gF" = (
@@ -838,7 +857,6 @@
/area/ship/hallway/fore)
"hp" = (
/obj/structure/table,
-/obj/machinery/computer/cryopod/directional/west,
/obj/machinery/newscaster/directional/south,
/obj/item/cigbutt{
pixel_x = -10;
@@ -846,6 +864,7 @@
},
/obj/item/cigbutt,
/obj/item/reagent_containers/food/snacks/chips,
+/obj/machinery/computer/cryopod/retro/directional/west,
/turf/open/floor/plasteel/tech/grid,
/area/ship/crew/cryo)
"hv" = (
@@ -983,6 +1002,7 @@
dir = 8
},
/obj/structure/extinguisher_cabinet/directional/north,
+/obj/structure/chair/handrail,
/turf/open/floor/plasteel,
/area/ship/hallway/port)
"is" = (
@@ -990,7 +1010,7 @@
/obj/effect/turf_decal/corner/transparent/beige/full,
/obj/effect/turf_decal/corner/transparent/brown/diagonal,
/obj/item/toy/redbutton,
-/obj/item/kitchen/knife/plastic,
+/obj/item/melee/knife/plastic,
/obj/item/kitchen/fork/plastic{
pixel_x = 5
},
@@ -1076,6 +1096,9 @@
/obj/effect/turf_decal/corner/transparent/beige/full,
/obj/effect/turf_decal/corner/transparent/brown/diagonal,
/obj/item/radio/intercom/directional/east,
+/obj/structure/chair/handrail{
+ dir = 8
+ },
/turf/open/floor/plasteel,
/area/ship/crew/canteen)
"jj" = (
@@ -1127,6 +1150,7 @@
/obj/effect/turf_decal/corner/opaque/bottlegreen/full,
/obj/machinery/firealarm/directional/west,
/obj/effect/decal/cleanable/dirt,
+/mob/living/simple_animal/hostile/cockroach,
/turf/open/floor/plasteel/dark,
/area/ship/security)
"jC" = (
@@ -1182,7 +1206,7 @@
/obj/structure/cable{
icon_state = "0-1"
},
-/turf/open/floor/engine/hull/interior,
+/turf/open/floor/plasteel/patterned/ridged,
/area/ship/cargo)
"jY" = (
/turf/closed/wall,
@@ -1233,6 +1257,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
},
+/obj/structure/chair/handrail,
/turf/open/floor/plating,
/area/ship/hallway/starboard)
"ki" = (
@@ -1241,6 +1266,9 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/ship/hallway/port)
"kt" = (
@@ -1464,7 +1492,7 @@
},
/obj/machinery/button/door{
dir = 1;
- id = "amogusthrusters";
+ id = "shetportthrusters";
name = "Thruster Lockdown";
pixel_y = -21
},
@@ -1522,7 +1550,7 @@
/obj/item/kitchen/fork/plastic{
pixel_x = 5
},
-/obj/item/kitchen/knife/plastic,
+/obj/item/melee/knife/plastic,
/turf/open/floor/plasteel,
/area/ship/crew/canteen)
"nt" = (
@@ -1590,6 +1618,9 @@
pixel_x = -25
},
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer4,
+/obj/structure/chair/handrail{
+ dir = 4
+ },
/turf/open/floor/plasteel/tech/techmaint,
/area/ship/hallway/port)
"of" = (
@@ -1724,6 +1755,9 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
dir = 1
},
+/obj/structure/chair/handrail{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/ship/hallway/fore)
"ph" = (
@@ -1757,6 +1791,7 @@
dir = 1
},
/obj/effect/decal/cleanable/vomit/old,
+/mob/living/simple_animal/hostile/cockroach,
/turf/open/floor/plasteel/patterned,
/area/ship/crew/toilet)
"pI" = (
@@ -1841,6 +1876,9 @@
/obj/machinery/atmospherics/components/unary/vent_pump/layer2{
dir = 1
},
+/obj/structure/chair/handrail{
+ dir = 8
+ },
/turf/open/floor/plasteel/tech/techmaint,
/area/ship/hallway/starboard)
"qa" = (
@@ -1850,7 +1888,8 @@
"qb" = (
/obj/structure/crate_shelf,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/patterned/cargo_one,
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"qg" = (
/obj/structure/closet/secure_closet/engineering_personal{
@@ -1939,6 +1978,9 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
dir = 1
},
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/ship/hallway/central)
"qM" = (
@@ -2196,7 +2238,10 @@
/obj/structure/cable{
icon_state = "2-9"
},
-/turf/open/floor/plasteel/patterned/cargo_one,
+/obj/effect/turf_decal/borderfloor{
+ dir = 9
+ },
+/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"su" = (
/obj/structure/disposalpipe/segment,
@@ -2252,7 +2297,7 @@
pixel_y = 5
},
/obj/machinery/button/door{
- id = "amogusthrusters";
+ id = "shetstarboardengine";
name = "Thruster Lockdown";
pixel_y = 24
},
@@ -2420,6 +2465,9 @@
pixel_y = 5
},
/obj/machinery/atmospherics/pipe/simple/dark/visible/layer1,
+/obj/structure/chair/handrail{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/ship/hallway/aft)
"uM" = (
@@ -2429,6 +2477,9 @@
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer4{
dir = 1
},
+/obj/structure/chair/handrail{
+ dir = 4
+ },
/turf/open/floor/plasteel/tech/techmaint,
/area/ship/hallway/starboard)
"uO" = (
@@ -2452,6 +2503,7 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
+/obj/structure/chair/handrail,
/turf/open/floor/plasteel,
/area/ship/hallway/starboard)
"va" = (
@@ -2530,6 +2582,12 @@
},
/turf/open/floor/plasteel/dark,
/area/ship/hallway/fore)
+"vL" = (
+/obj/structure/chair/handrail{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/ship/hallway/central)
"vN" = (
/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/structure/cable/yellow{
@@ -2561,6 +2619,9 @@
"vV" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
/obj/item/kirbyplants/fullysynthetic,
+/obj/structure/sign/poster/random{
+ pixel_y = 32
+ },
/turf/open/floor/carpet/blue,
/area/ship/bridge)
"vX" = (
@@ -2687,7 +2748,13 @@
},
/obj/machinery/door/poddoor{
dir = 4;
- id = "amogusthrusters"
+ id = "shetstarboardengine"
+ },
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
},
/turf/open/floor/plating,
/area/ship/maintenance/starboard)
@@ -2927,6 +2994,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
},
+/obj/structure/chair/handrail,
/turf/open/floor/plating,
/area/ship/hallway/central)
"yP" = (
@@ -2964,6 +3032,10 @@
dir = 1
},
/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/random{
+ pixel_x = -32;
+ pixel_y = 0
+ },
/turf/open/floor/plasteel/grimy,
/area/ship/security)
"yY" = (
@@ -3107,7 +3179,8 @@
/obj/effect/turf_decal/box,
/obj/item/tank/internals/oxygen/red,
/obj/item/radio/intercom/directional/east,
-/turf/open/floor/plasteel/patterned/cargo_one,
+/obj/effect/turf_decal/borderfloor,
+/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"Ab" = (
/obj/structure/catwalk/over/plated_catwalk/dark,
@@ -3156,7 +3229,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
-/turf/open/floor/plating,
+/turf/open/floor/plasteel/dark,
/area/ship/crew/canteen)
"Ax" = (
/obj/structure/table/wood,
@@ -3346,6 +3419,9 @@
"CF" = (
/obj/machinery/light/small/directional/east,
/obj/machinery/atmospherics/components/unary/vent_pump/layer2,
+/obj/structure/chair/handrail{
+ dir = 8
+ },
/turf/open/floor/plasteel/tech/techmaint,
/area/ship/hallway/port)
"CH" = (
@@ -3414,7 +3490,10 @@
/obj/item/pickaxe,
/obj/effect/turf_decal/box,
/obj/machinery/light/small/directional/east,
-/turf/open/floor/plasteel/patterned/cargo_one,
+/obj/effect/turf_decal/borderfloor{
+ dir = 1
+ },
+/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"Dm" = (
/obj/machinery/cryopod{
@@ -3546,6 +3625,7 @@
},
/obj/item/radio/intercom/directional/north,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/chair/handrail,
/turf/open/floor/plasteel/dark,
/area/ship/engineering/atmospherics)
"EA" = (
@@ -3631,6 +3711,9 @@
/area/ship/crew/janitor)
"ER" = (
/obj/effect/turf_decal/industrial/warning,
+/obj/structure/chair/handrail{
+ dir = 4
+ },
/turf/open/floor/plasteel/tech/techmaint,
/area/ship/hallway/starboard)
"EX" = (
@@ -3643,6 +3726,7 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
+/obj/structure/chair/handrail,
/turf/open/floor/plasteel,
/area/ship/hallway/central)
"FE" = (
@@ -3672,7 +3756,7 @@
id = "amogusdoors";
name = "Cargo Bay Blast Door"
},
-/turf/open/floor/engine/hull/interior,
+/turf/open/floor/plasteel/patterned/ridged,
/area/ship/cargo)
"Gg" = (
/obj/machinery/light/dim/directional/south,
@@ -3699,7 +3783,10 @@
/obj/item/clothing/gloves/color/black,
/obj/item/clothing/head/hardhat/mining,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/patterned/cargo_one,
+/obj/effect/turf_decal/borderfloor{
+ dir = 10
+ },
+/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"Gt" = (
/obj/effect/turf_decal/corner/opaque/neutral/three_quarters{
@@ -3711,6 +3798,7 @@
/obj/structure/sign/warning/vacuum/external{
pixel_y = 24
},
+/obj/structure/chair/handrail,
/turf/open/floor/plasteel/dark,
/area/ship/hallway/port)
"Gw" = (
@@ -3973,6 +4061,7 @@
/obj/machinery/power/terminal{
dir = 1
},
+/obj/effect/turf_decal/industrial/warning,
/turf/open/floor/plating,
/area/ship/engineering/electrical)
"IE" = (
@@ -3982,6 +4071,9 @@
/obj/structure/sign/warning/vacuum/external{
pixel_y = -21
},
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plasteel/dark,
/area/ship/hallway/starboard)
"IJ" = (
@@ -4116,6 +4208,9 @@
/obj/machinery/atmospherics/pipe/simple/dark/visible/layer1{
dir = 9
},
+/obj/structure/chair/handrail{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/ship/hallway/aft)
"JQ" = (
@@ -4194,6 +4289,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
},
+/obj/structure/sign/poster/random{
+ pixel_y = 32
+ },
/turf/open/floor/plating,
/area/ship/hallway/central)
"Kq" = (
@@ -4260,6 +4358,17 @@
/obj/effect/decal/cleanable/oil,
/turf/open/floor/engine/vacuum,
/area/ship/engineering/engine)
+"Li" = (
+/obj/structure/bed,
+/obj/structure/curtain/bounty,
+/obj/item/bedsheet/dorms,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/random{
+ pixel_x = -32;
+ pixel_y = 0
+ },
+/turf/open/floor/plasteel/grimy,
+/area/ship/crew/dorm)
"Ll" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -4317,7 +4426,13 @@
},
/obj/machinery/door/poddoor{
dir = 4;
- id = "amogusthrusters"
+ id = "shetportthrusters"
+ },
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
},
/turf/open/floor/plating,
/area/ship/maintenance/port)
@@ -4437,6 +4552,9 @@
/obj/effect/turf_decal/industrial/warning/fulltile,
/turf/open/floor/plasteel/dark,
/area/ship/hallway/port)
+"Mf" = (
+/turf/open/floor/plasteel/patterned,
+/area/ship/cargo)
"Mk" = (
/obj/structure/table/wood,
/obj/structure/bedsheetbin,
@@ -4444,6 +4562,13 @@
/obj/machinery/newscaster/directional/east,
/turf/open/floor/plasteel/grimy,
/area/ship/crew/dorm)
+"Ml" = (
+/obj/effect/turf_decal/industrial/warning,
+/obj/structure/chair/handrail{
+ dir = 8
+ },
+/turf/open/floor/plasteel/tech/techmaint,
+/area/ship/hallway/starboard)
"Mr" = (
/obj/structure/window/reinforced/fulltile,
/obj/structure/grille,
@@ -4531,9 +4656,6 @@
},
/turf/open/floor/plasteel,
/area/ship/hallway/central)
-"MV" = (
-/turf/open/floor/plasteel/patterned,
-/area/ship/cargo)
"Na" = (
/turf/closed/wall/rust,
/area/ship/crew/canteen)
@@ -4548,13 +4670,17 @@
"Ne" = (
/obj/structure/crate_shelf,
/obj/machinery/firealarm/directional/north,
-/turf/open/floor/plasteel/patterned/cargo_one,
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"Ni" = (
/obj/structure/bed,
/obj/structure/curtain/bounty,
/obj/item/bedsheet/dorms,
/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/poster/random{
+ pixel_y = 32
+ },
/turf/open/floor/plasteel/grimy,
/area/ship/crew/dorm)
"Nl" = (
@@ -4613,6 +4739,7 @@
/obj/structure/cable{
icon_state = "4-8"
},
+/mob/living/simple_animal/hostile/cockroach,
/turf/open/floor/plating,
/area/ship/engineering/engine)
"NR" = (
@@ -4868,7 +4995,13 @@
},
/obj/machinery/door/poddoor{
dir = 4;
- id = "amogusthrusters"
+ id = "shetportthrusters"
+ },
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
},
/turf/open/floor/plating,
/area/ship/maintenance/port)
@@ -4952,6 +5085,15 @@
},
/turf/open/floor/plating,
/area/ship/hallway/fore)
+"Qu" = (
+/obj/effect/turf_decal/industrial/warning{
+ dir = 1
+ },
+/obj/structure/chair/handrail{
+ dir = 8
+ },
+/turf/open/floor/plasteel/tech/techmaint,
+/area/ship/hallway/port)
"Qy" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
@@ -5024,7 +5166,13 @@
},
/obj/machinery/door/poddoor{
dir = 4;
- id = "amogusthrusters"
+ id = "shetstarboardengine"
+ },
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 8
},
/turf/open/floor/plating,
/area/ship/maintenance/starboard)
@@ -5087,6 +5235,9 @@
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2,
/obj/structure/catwalk/over/plated_catwalk,
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plating,
/area/ship/hallway/port)
"Ry" = (
@@ -5292,7 +5443,7 @@
/obj/structure/cable{
icon_state = "0-4"
},
-/turf/open/floor/plasteel/patterned/cargo_one,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"Tk" = (
/obj/structure/cable{
@@ -5318,7 +5469,7 @@
/obj/structure/cable{
icon_state = "2-4"
},
-/turf/open/floor/plasteel/patterned/cargo_one,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"TO" = (
/obj/machinery/firealarm/directional/south,
@@ -5358,6 +5509,7 @@
/obj/machinery/door/firedoor/border_only{
dir = 8
},
+/obj/effect/turf_decal/industrial/warning/fulltile,
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"TX" = (
@@ -5377,6 +5529,9 @@
/obj/effect/turf_decal/corner/transparent/beige/full,
/obj/effect/turf_decal/corner/transparent/brown/diagonal,
/obj/machinery/light/directional/west,
+/obj/structure/chair/handrail{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/ship/crew/canteen)
"Ug" = (
@@ -5421,7 +5576,7 @@
/turf/open/floor/plating,
/area/ship/hallway/aft)
"UJ" = (
-/turf/open/floor/plasteel/patterned/cargo_one,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"UT" = (
/obj/machinery/recharger,
@@ -5495,6 +5650,7 @@
},
/obj/machinery/firealarm/directional/north,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
+/obj/structure/chair/handrail,
/turf/open/floor/plasteel/patterned,
/area/ship/crew/cryo)
"VN" = (
@@ -5532,6 +5688,9 @@
/area/ship/engineering/engine)
"VS" = (
/obj/machinery/light/directional/south,
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/ship/hallway/fore)
"VV" = (
@@ -5556,7 +5715,8 @@
/obj/structure/cable{
icon_state = "1-6"
},
-/turf/open/floor/plasteel/patterned/cargo_one,
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"We" = (
/turf/closed/wall/r_wall/rust/yesdiag,
@@ -5585,7 +5745,8 @@
/obj/structure/crate_shelf,
/obj/machinery/light/small/directional/west,
/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/plasteel/patterned/cargo_one,
+/obj/effect/turf_decal/box,
+/turf/open/floor/plasteel/patterned/grid,
/area/ship/cargo)
"Wq" = (
/obj/structure/grille,
@@ -5609,7 +5770,7 @@
/obj/structure/cable{
icon_state = "0-1"
},
-/turf/open/floor/engine/hull/interior,
+/turf/open/floor/plasteel/patterned/ridged,
/area/ship/cargo)
"Ws" = (
/obj/effect/turf_decal/corner/transparent/beige/full,
@@ -5632,6 +5793,9 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
dir = 4
},
+/obj/structure/chair/handrail{
+ dir = 4
+ },
/turf/open/floor/plasteel/patterned,
/area/ship/crew/toilet)
"WB" = (
@@ -5650,6 +5814,9 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
dir = 1
},
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plasteel/patterned,
/area/ship/crew/cryo)
"WG" = (
@@ -5662,6 +5829,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
/obj/effect/decal/cleanable/dirt,
+/obj/effect/turf_decal/industrial/warning,
/turf/open/floor/plating,
/area/ship/engineering/electrical)
"WM" = (
@@ -5684,6 +5852,9 @@
/area/ship/bridge)
"Xg" = (
/obj/structure/extinguisher_cabinet/directional/south,
+/obj/structure/chair/handrail{
+ dir = 1
+ },
/turf/open/floor/plasteel/dark,
/area/ship/hallway/fore)
"Xh" = (
@@ -5741,6 +5912,9 @@
dir = 8
},
/obj/structure/extinguisher_cabinet/directional/east,
+/obj/structure/chair/handrail{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/ship/engineering/engine)
"XJ" = (
@@ -5749,6 +5923,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
dir = 8
},
+/obj/structure/chair/handrail,
/turf/open/floor/plasteel,
/area/ship/hallway/central)
"XK" = (
@@ -5810,7 +5985,7 @@
/obj/item/kitchen/fork/plastic{
pixel_x = 5
},
-/obj/item/kitchen/knife/plastic,
+/obj/item/melee/knife/plastic,
/turf/open/floor/plasteel,
/area/ship/crew/canteen)
"Yp" = (
@@ -5950,6 +6125,10 @@
dir = 8
},
/obj/structure/curtain,
+/obj/structure/sign/poster/random{
+ pixel_x = -32;
+ pixel_y = 0
+ },
/turf/open/floor/plasteel/white,
/area/ship/medical)
"ZJ" = (
@@ -5958,8 +6137,8 @@
},
/obj/structure/curtain,
/obj/item/soap,
-/obj/effect/turf_decal/corner_techfloor_grid{
- dir = 1
+/obj/effect/turf_decal/steeldecal/steel_decals10{
+ dir = 9
},
/turf/open/floor/plasteel/freezer,
/area/ship/crew/toilet)
@@ -6483,7 +6662,7 @@ fz
"}
(18,1,1) = {"
BL
-bm
+Qu
CF
XY
we
@@ -6505,7 +6684,7 @@ sk
RP
rJ
pY
-ER
+Ml
iG
OU
"}
@@ -6640,7 +6819,7 @@ Gy
ND
jY
Kn
-ZV
+vL
rr
fW
fW
@@ -6808,7 +6987,7 @@ aI
aI
aI
iz
-ZV
+vL
rr
sX
su
@@ -6849,7 +7028,7 @@ OU
ao
Ok
uh
-Ni
+Li
mJ
mJ
mJ
@@ -6922,7 +7101,7 @@ gq
wQ
MT
pl
-MV
+Mf
xZ
qO
CH
diff --git a/_maps/shuttles/independent/independent_sunskipper.dmm b/_maps/shuttles/independent/independent_sunskipper.dmm
index de92179a11f7..a5fcf740be59 100644
--- a/_maps/shuttles/independent/independent_sunskipper.dmm
+++ b/_maps/shuttles/independent/independent_sunskipper.dmm
@@ -441,7 +441,7 @@
pixel_y = 5;
anchored = 1
},
-/obj/item/kitchen/knife{
+/obj/item/melee/knife/kitchen{
pixel_x = -11;
pixel_y = 9
},
@@ -873,8 +873,8 @@
},
/obj/item/pickaxe,
/obj/item/pickaxe,
-/obj/item/kitchen/knife/hunting,
-/obj/item/kitchen/knife/hunting,
+/obj/item/melee/knife/hunting,
+/obj/item/melee/knife/hunting,
/obj/item/clothing/suit/hazardvest,
/obj/item/clothing/suit/hazardvest,
/obj/item/clothing/head/hardhat/mining,
diff --git a/_maps/shuttles/independent/independent_tranquility.dmm b/_maps/shuttles/independent/independent_tranquility.dmm
index 641a74a202ef..6a26f5e7b264 100644
--- a/_maps/shuttles/independent/independent_tranquility.dmm
+++ b/_maps/shuttles/independent/independent_tranquility.dmm
@@ -1687,7 +1687,7 @@
/obj/effect/turf_decal/corner/transparent/bar,
/obj/structure/table/reinforced,
/obj/machinery/light/directional/south,
-/obj/item/kitchen/knife/butcher{
+/obj/item/melee/knife/butcher{
pixel_x = -6;
pixel_y = 7
},
@@ -6540,10 +6540,6 @@
/obj/effect/turf_decal/techfloor{
dir = 1
},
-/obj/item/disk/tech_disk/major{
- pixel_x = -7;
- pixel_y = -5
- },
/obj/item/disk/tech_disk{
pixel_x = -3;
pixel_y = -2
diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm
index f26053f39b44..f19c734f9d83 100644
--- a/_maps/shuttles/inteq/inteq_colossus.dmm
+++ b/_maps/shuttles/inteq/inteq_colossus.dmm
@@ -180,29 +180,6 @@
/obj/effect/turf_decal/industrial/warning/fulltile,
/turf/open/floor/engine/hull/reinforced/interior,
/area/ship/maintenance/starboard)
-"cd" = (
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/clothing/head/beret/sec/inteq,
-/obj/item/clothing/head/beret/sec/inteq,
-/obj/item/clothing/head/beret/sec/inteq,
-/obj/item/clothing/head/soft/inteq,
-/obj/item/clothing/head/soft/inteq,
-/obj/item/clothing/head/soft/inteq,
-/obj/structure/closet/wall/directional/north{
- icon_door = "orange_wall";
- name = "uniform closet"
- },
-/obj/machinery/firealarm/directional/east,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
-/turf/open/floor/plasteel/grimy,
-/area/ship/crew)
"cq" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -268,6 +245,29 @@
/obj/machinery/newscaster/directional/west,
/turf/open/floor/plasteel/dark,
/area/ship/crew/office)
+"cT" = (
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/clothing/head/beret/sec/inteq,
+/obj/item/clothing/head/beret/sec/inteq,
+/obj/item/clothing/head/beret/sec/inteq,
+/obj/item/clothing/head/soft/inteq,
+/obj/item/clothing/head/soft/inteq,
+/obj/item/clothing/head/soft/inteq,
+/obj/structure/closet/wall/directional/north{
+ icon_door = "orange_wall";
+ name = "uniform closet"
+ },
+/obj/machinery/firealarm/directional/east,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
+/turf/open/floor/plasteel/grimy,
+/area/ship/crew)
"dq" = (
/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium,
/obj/structure/cable{
@@ -652,6 +652,13 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
+"gH" = (
+/obj/machinery/porta_turret/ship/ballistic{
+ dir = 6;
+ id = "colossus_grid"
+ },
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ship/crew)
"gJ" = (
/obj/effect/turf_decal/siding/thinplating/corner{
dir = 8
@@ -894,6 +901,25 @@
},
/turf/open/floor/plating,
/area/ship/engineering)
+"ja" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/corner/opaque/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/corner/opaque/yellow{
+ dir = 1
+ },
+/obj/machinery/turretid/ship{
+ pixel_y = 24;
+ id = "colossus_grid"
+ },
+/turf/open/floor/plasteel/dark,
+/area/ship/bridge)
"jo" = (
/obj/machinery/atmospherics/components/unary/tank/toxins{
piping_layer = 1
@@ -1111,6 +1137,13 @@
/obj/structure/extinguisher_cabinet/directional/south,
/turf/open/floor/plasteel/patterned/grid,
/area/ship/hallway/fore)
+"mb" = (
+/obj/machinery/porta_turret/ship/ballistic{
+ dir = 5;
+ id = "colossus_grid"
+ },
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ship/hallway/port)
"mq" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -1430,12 +1463,6 @@
/obj/effect/turf_decal/techfloor,
/turf/open/floor/plasteel/tech/grid,
/area/ship/crew/cryo)
-"qJ" = (
-/obj/machinery/porta_turret/ship/ballistic{
- dir = 9
- },
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/ship/bridge)
"qK" = (
/obj/structure/cable/yellow{
icon_state = "1-4"
@@ -1706,6 +1733,13 @@
/obj/item/pen,
/turf/open/floor/plasteel/dark,
/area/ship/crew/office)
+"sT" = (
+/obj/machinery/porta_turret/ship/ballistic{
+ dir = 5;
+ id = "colossus_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/crew)
"td" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -2033,6 +2067,13 @@
"vH" = (
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/cargo)
+"vJ" = (
+/obj/machinery/porta_turret/ship/ballistic{
+ dir = 5;
+ id = "colossus_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/maintenance/port)
"vZ" = (
/obj/effect/turf_decal/industrial/warning/fulltile,
/obj/machinery/door/poddoor{
@@ -2135,12 +2176,6 @@
},
/turf/open/floor/plasteel/patterned/grid,
/area/ship/hallway/central)
-"xh" = (
-/obj/machinery/porta_turret/ship/ballistic{
- dir = 5
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
"xr" = (
/obj/effect/turf_decal/trimline/opaque/yellow/line{
dir = 1
@@ -2406,6 +2441,13 @@
},
/turf/open/floor/plating,
/area/ship/maintenance/port)
+"Bi" = (
+/obj/machinery/porta_turret/ship/ballistic{
+ dir = 9;
+ id = "colossus_grid"
+ },
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ship/crew/office)
"Bj" = (
/obj/effect/turf_decal/trimline/opaque/yellow/line,
/obj/effect/turf_decal/siding/thinplating,
@@ -3005,12 +3047,6 @@
/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1,
/turf/open/floor/plasteel/tech,
/area/ship/engineering)
-"Hu" = (
-/obj/machinery/porta_turret/ship/ballistic{
- dir = 6
- },
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/ship/bridge)
"HD" = (
/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium,
/obj/structure/cable{
@@ -3486,24 +3522,6 @@
/obj/effect/landmark/start/security_officer,
/turf/open/floor/plasteel/dark,
/area/ship/crew/office)
-"NH" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
- dir = 8
- },
-/obj/machinery/turretid/lethal{
- pixel_y = 22
- },
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/effect/turf_decal/corner/opaque/brown{
- dir = 4
- },
-/obj/effect/turf_decal/corner/opaque/yellow{
- dir = 1
- },
-/turf/open/floor/plasteel/dark,
-/area/ship/bridge)
"NP" = (
/obj/item/kirbyplants/random,
/obj/effect/turf_decal/corner/opaque/yellow,
@@ -3611,6 +3629,13 @@
},
/turf/open/floor/engine/hull/reinforced,
/area/ship/maintenance/starboard)
+"OI" = (
+/obj/machinery/porta_turret/ship/ballistic{
+ dir = 6;
+ id = "colossus_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/maintenance/starboard)
"OV" = (
/obj/structure/cable{
icon_state = "2-4"
@@ -3764,6 +3789,13 @@
},
/turf/open/floor/plating,
/area/ship/maintenance/starboard)
+"Qw" = (
+/obj/machinery/porta_turret/ship/ballistic{
+ dir = 10;
+ id = "colossus_grid"
+ },
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ship/security/armory)
"QC" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 10
@@ -3820,12 +3852,6 @@
/obj/machinery/light/directional/north,
/turf/open/floor/plasteel/patterned/grid,
/area/ship/hallway/central)
-"QZ" = (
-/obj/machinery/porta_turret/ship/ballistic{
- dir = 10
- },
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/ship/bridge)
"Rb" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/on{
name = "exhaust injector"
@@ -3917,6 +3943,13 @@
/obj/effect/landmark/start/station_engineer,
/turf/open/floor/plasteel/patterned/cargo_one,
/area/ship/cargo)
+"RZ" = (
+/obj/machinery/porta_turret/ship/ballistic{
+ dir = 6;
+ id = "colossus_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/security)
"Sa" = (
/obj/effect/turf_decal/borderfloor{
dir = 4
@@ -4305,10 +4338,10 @@
/obj/item/reagent_containers/spray/pepper,
/obj/item/reagent_containers/spray/pepper,
/obj/item/reagent_containers/spray/pepper,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
/turf/open/floor/plasteel/tech/grid,
/area/ship/security/armory)
"WG" = (
@@ -4758,7 +4791,7 @@ XJ
(8,1,1) = {"
XJ
XJ
-xh
+vJ
bo
bo
bo
@@ -4774,7 +4807,7 @@ rl
rl
rl
rl
-Oa
+OI
XJ
"}
(9,1,1) = {"
@@ -4955,7 +4988,7 @@ XJ
"}
(17,1,1) = {"
XJ
-qJ
+Bi
ZB
ZB
ZB
@@ -4973,7 +5006,7 @@ Dq
Dq
Dq
Dq
-QZ
+Qw
"}
(18,1,1) = {"
XJ
@@ -5193,7 +5226,7 @@ XA
XA
XA
XA
-Oa
+RZ
"}
(28,1,1) = {"
Yy
@@ -5219,7 +5252,7 @@ XJ
"}
(29,1,1) = {"
XJ
-Ll
+mb
hD
hD
hD
@@ -5287,7 +5320,7 @@ XJ
XJ
XJ
tX
-NH
+ja
tI
Ae
Sj
@@ -5320,7 +5353,7 @@ fN
fN
Yr
zF
-cd
+cT
GW
vq
gu
@@ -5364,11 +5397,11 @@ XJ
XJ
XJ
XJ
-xh
+sT
xT
xT
xT
-Hu
+gH
XJ
"}
(36,1,1) = {"
diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm
index 12143aa9fe2f..195852c9fd5c 100644
--- a/_maps/shuttles/inteq/inteq_talos.dmm
+++ b/_maps/shuttles/inteq/inteq_talos.dmm
@@ -102,6 +102,13 @@
},
/turf/open/floor/circuit/telecomms/mainframe,
/area/ship/engineering/communications)
+"aC" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 5;
+ id = "talos_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/maintenance/port)
"aD" = (
/obj/machinery/computer/telecomms/monitor{
network = "irmg_commnet"
@@ -841,6 +848,13 @@
/obj/item/cigbutt,
/turf/open/floor/plating/airless,
/area/ship/storage/port)
+"fs" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 5;
+ id = "talos_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/engineering/communications)
"fC" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/opaque/yellow/warning{
@@ -2674,6 +2688,20 @@
/obj/item/radio/headset,
/turf/open/floor/plasteel/tech/grid,
/area/ship/crew/cryo)
+"qt" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 6;
+ id = "talos_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/maintenance/starboard)
+"qz" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 5;
+ id = "talos_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/hallway/port)
"qB" = (
/obj/effect/turf_decal/industrial/traffic,
/obj/effect/decal/cleanable/dirt,
@@ -4053,32 +4081,6 @@
/obj/effect/mapping_helpers/airlock/abandoned,
/turf/open/floor/plating/airless,
/area/ship/maintenance/port)
-"zf" = (
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/clothing/head/beret/sec/inteq,
-/obj/item/clothing/head/beret/sec/inteq,
-/obj/item/clothing/head/beret/sec/inteq,
-/obj/item/clothing/head/soft/inteq,
-/obj/item/clothing/head/soft/inteq,
-/obj/item/clothing/head/soft/inteq,
-/obj/structure/closet{
- icon_door = "orange";
- name = "inteq wardrobe"
- },
-/obj/machinery/power/apc/auto_name/directional/north,
-/obj/structure/cable{
- icon_state = "0-2"
- },
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
-/turf/open/floor/carpet/black,
-/area/ship/crew/dorm)
"zg" = (
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/spawner/lootdrop/grille_or_trash,
@@ -4443,12 +4445,6 @@
},
/turf/open/floor/plasteel/tech/grid,
/area/ship/engineering/engine)
-"Bd" = (
-/obj/machinery/porta_turret/ship/weak{
- dir = 9
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
"Bh" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -4559,6 +4555,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/grimy,
/area/ship/crew)
+"Cr" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 9;
+ id = "talos_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/engineering/communications)
"Cs" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -4653,6 +4656,32 @@
},
/turf/open/floor/plasteel/grimy,
/area/ship/crew)
+"CY" = (
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/clothing/head/beret/sec/inteq,
+/obj/item/clothing/head/beret/sec/inteq,
+/obj/item/clothing/head/beret/sec/inteq,
+/obj/item/clothing/head/soft/inteq,
+/obj/item/clothing/head/soft/inteq,
+/obj/item/clothing/head/soft/inteq,
+/obj/structure/closet{
+ icon_door = "orange";
+ name = "inteq wardrobe"
+ },
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
+/turf/open/floor/carpet/black,
+/area/ship/crew/dorm)
"Dd" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -4823,6 +4852,13 @@
},
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/engineering/communications)
+"ED" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 10;
+ id = "talos_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/storage)
"EL" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -5153,12 +5189,6 @@
},
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/storage)
-"GA" = (
-/obj/machinery/porta_turret/ship/weak{
- dir = 5
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
"GG" = (
/obj/machinery/light/small/directional/west,
/obj/structure/cable{
@@ -5580,9 +5610,9 @@
pixel_x = -1;
pixel_y = 3
},
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
/turf/open/floor/plasteel/tech/grid,
/area/ship/security/armory)
"JT" = (
@@ -5902,9 +5932,6 @@
/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium,
/turf/open/floor/plating,
/area/ship/engineering/engine)
-"Me" = (
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/template_noop)
"Mf" = (
/obj/structure/chair{
dir = 4
@@ -6332,12 +6359,6 @@
/obj/structure/closet/crate,
/turf/open/floor/plating/airless,
/area/ship/storage/starboard)
-"Pw" = (
-/obj/machinery/porta_turret/ship/weak{
- dir = 10
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
"Py" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -6602,6 +6623,13 @@
},
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/engineering/communications)
+"Rf" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 6;
+ id = "talos_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/security)
"Rg" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -6693,12 +6721,6 @@
},
/turf/open/floor/carpet/black,
/area/ship/crew/dorm)
-"RO" = (
-/obj/machinery/porta_turret/ship/weak{
- dir = 6
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/template_noop)
"RT" = (
/turf/open/floor/plating/airless,
/area/ship/storage/port)
@@ -6709,12 +6731,6 @@
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/ship/maintenance/port)
-"RW" = (
-/obj/machinery/turretid/lethal{
- pixel_y = 32
- },
-/turf/open/floor/carpet/orange,
-/area/ship/bridge)
"RY" = (
/obj/effect/turf_decal/industrial/warning/fulltile,
/obj/machinery/door/airlock/hatch{
@@ -7474,6 +7490,13 @@
},
/turf/open/floor/plating,
/area/ship/engineering/engine)
+"WN" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 6;
+ id = "talos_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/storage)
"WR" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 4
@@ -7483,12 +7506,6 @@
},
/turf/open/floor/carpet/orange,
/area/ship/bridge)
-"Xa" = (
-/obj/machinery/porta_turret/ship/weak{
- dir = 6
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
"Xg" = (
/turf/open/floor/carpet/black,
/area/ship/crew/dorm)
@@ -7510,6 +7527,13 @@
/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2,
/turf/open/floor/plasteel/tech/grid,
/area/ship/engineering)
+"Xo" = (
+/obj/machinery/turretid/ship{
+ pixel_y = 24;
+ id = "talos_grid"
+ },
+/turf/open/floor/carpet/orange,
+/area/ship/bridge)
"Xs" = (
/obj/effect/turf_decal/techfloor{
dir = 4
@@ -8020,7 +8044,7 @@ sw
"}
(5,1,1) = {"
sw
-Bd
+Cr
vp
vp
vp
@@ -8049,7 +8073,7 @@ sV
sV
sV
sV
-Pw
+ED
sw
"}
(6,1,1) = {"
@@ -8224,7 +8248,7 @@ cV
"}
(11,1,1) = {"
sw
-GA
+fs
vp
vp
sW
@@ -8253,7 +8277,7 @@ sc
jW
sV
sV
-Xa
+WN
sw
"}
(12,1,1) = {"
@@ -8262,7 +8286,7 @@ MV
sw
og
sW
-zf
+CY
GG
tr
Xg
@@ -8601,7 +8625,7 @@ sw
sw
sw
sw
-Me
+sw
lC
Ks
IT
@@ -8674,7 +8698,7 @@ lC
ae
bU
mX
-RW
+Xo
WR
Tj
mX
@@ -8737,7 +8761,7 @@ sw
sw
sw
sw
-Me
+sw
lC
qF
Zj
@@ -8770,8 +8794,8 @@ sw
sw
sw
sw
-Me
-RO
+sw
+sw
lC
UP
gp
@@ -8974,7 +8998,7 @@ sw
sw
sw
sw
-GA
+qz
yp
jj
Gl
@@ -8999,7 +9023,7 @@ as
QR
WG
mK
-Xa
+Rf
sw
sw
sw
@@ -9589,7 +9613,7 @@ sw
sw
sw
sw
-GA
+aC
Pp
fN
Pp
@@ -9608,7 +9632,7 @@ Gq
If
YZ
fK
-Xa
+qt
sw
sw
sw
diff --git a/_maps/shuttles/inteq/inteq_valor.dmm b/_maps/shuttles/inteq/inteq_valor.dmm
index 7cb5896b71ad..dac3ac7a0ebb 100644
--- a/_maps/shuttles/inteq/inteq_valor.dmm
+++ b/_maps/shuttles/inteq/inteq_valor.dmm
@@ -123,7 +123,7 @@
/obj/effect/turf_decal/borderfloorwhite,
/obj/machinery/light/directional/south,
/turf/open/floor/plasteel/white,
-/area/ship/medical)
+/area/ship/medical/surgery)
"bJ" = (
/obj/effect/turf_decal/siding/thinplating/dark,
/obj/effect/turf_decal/trimline/opaque/brown/line,
@@ -136,7 +136,7 @@
dir = 4
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"bN" = (
/obj/structure/catwalk/over/plated_catwalk,
/obj/machinery/power/apc/auto_name/directional/east,
@@ -353,7 +353,7 @@
},
/obj/structure/chair,
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"dG" = (
/obj/effect/turf_decal/industrial/traffic/corner{
dir = 4
@@ -366,6 +366,12 @@
dir = 8;
name = "Custodian Closet"
},
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4
+ },
/turf/open/floor/plasteel/tech/techmaint,
/area/ship/crew/canteen)
"dM" = (
@@ -407,7 +413,7 @@
name = "Surgery"
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"dO" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 4
@@ -500,8 +506,8 @@
/obj/item/megaphone/sec,
/obj/item/clothing/suit/armor/vest,
/obj/item/clothing/suit/armor/vest,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
/obj/machinery/recharger{
pixel_x = -16;
pixel_y = 5
@@ -546,7 +552,7 @@
pixel_y = 8
},
/turf/open/floor/plasteel/white,
-/area/ship/medical)
+/area/ship/medical/surgery)
"eV" = (
/obj/structure/cable{
icon_state = "1-4"
@@ -733,8 +739,13 @@
dir = 5
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"gq" = (
+/obj/machinery/light_switch{
+ dir = 1;
+ pixel_y = -20;
+ pixel_x = -3
+ },
/turf/open/floor/plasteel/mono/dark,
/area/ship/cargo)
"gt" = (
@@ -762,7 +773,7 @@
dir = 4
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"gZ" = (
/obj/machinery/door/airlock/external{
dir = 4
@@ -840,6 +851,9 @@
},
/turf/open/floor/plasteel/tech/grid,
/area/ship/crew/cryo)
+"hJ" = (
+/turf/open/floor/plasteel/dark,
+/area/ship/medical/surgery)
"hN" = (
/obj/effect/turf_decal/siding/thinplating{
dir = 4
@@ -862,8 +876,13 @@
dir = 8;
pixel_x = 12
},
+/obj/machinery/light_switch{
+ dir = 8;
+ pixel_x = 20;
+ pixel_y = 8
+ },
/turf/open/floor/plasteel/patterned/brushed,
-/area/ship/medical)
+/area/ship/medical/surgery)
"id" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -1018,7 +1037,7 @@
id = "valor_external"
},
/turf/open/floor/plating,
-/area/ship/medical)
+/area/ship/medical/surgery)
"jN" = (
/obj/structure/chair/office,
/obj/machinery/power/apc/auto_name/directional/west,
@@ -1063,6 +1082,11 @@
pixel_x = 1;
pixel_y = 16
},
+/obj/machinery/light_switch{
+ dir = 1;
+ pixel_y = -20;
+ pixel_x = 4
+ },
/turf/open/floor/plasteel/patterned/ridged,
/area/ship/medical)
"jU" = (
@@ -1094,6 +1118,12 @@
dir = 4;
name = "Starboard Engines"
},
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4
+ },
/turf/open/floor/plasteel/dark,
/area/ship/maintenance/starboard)
"kx" = (
@@ -1178,6 +1208,10 @@
/obj/machinery/door/airlock/grunge{
name = "Medbay"
},
+/obj/machinery/door/firedoor/border_only,
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
/turf/open/floor/plasteel/dark,
/area/ship/medical)
"lc" = (
@@ -1329,6 +1363,10 @@
},
/turf/open/floor/plasteel/dark,
/area/ship/crew/canteen)
+"ml" = (
+/obj/machinery/light/directional/west,
+/turf/open/floor/plasteel/patterned,
+/area/ship/medical)
"mp" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
@@ -1338,6 +1376,9 @@
},
/turf/open/floor/plasteel/tech,
/area/ship/medical)
+"mr" = (
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/medical/surgery)
"mt" = (
/obj/structure/rack,
/obj/item/tank/internals/plasmaman/full,
@@ -1479,8 +1520,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
},
+/obj/machinery/light/directional/north,
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"nz" = (
/obj/machinery/door/firedoor/border_only{
dir = 8
@@ -1509,8 +1551,12 @@
/obj/machinery/door/airlock/medical/glass{
name = "Surgical Bay"
},
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/border_only,
/turf/open/floor/plasteel/white,
-/area/ship/medical)
+/area/ship/medical/surgery)
"nU" = (
/obj/effect/turf_decal/corner/opaque/yellow{
dir = 1
@@ -1551,6 +1597,9 @@
/obj/item/flashlight/lamp/green,
/turf/open/floor/carpet/black,
/area/ship/crew/dorm)
+"ou" = (
+/turf/open/floor/plasteel/mono/dark,
+/area/ship/cargo)
"oy" = (
/obj/effect/turf_decal/trimline/opaque/brown/warning{
dir = 6
@@ -1569,7 +1618,7 @@
dir = 4
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"oz" = (
/obj/structure/cable{
icon_state = "6-8"
@@ -1719,7 +1768,7 @@
/obj/structure/table/optable,
/obj/structure/curtain,
/turf/open/floor/plasteel/patterned/brushed,
-/area/ship/medical)
+/area/ship/medical/surgery)
"pL" = (
/obj/machinery/power/terminal{
dir = 8
@@ -1789,8 +1838,12 @@
icon_state = "1-2"
},
/obj/machinery/door/airlock/hatch,
+/obj/machinery/door/firedoor/border_only,
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
/turf/open/floor/plasteel/patterned,
-/area/ship/medical)
+/area/ship/medical/surgery)
"qt" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
@@ -1846,7 +1899,7 @@
id = "valor_surgery"
},
/turf/open/floor/plating,
-/area/ship/medical)
+/area/ship/medical/surgery)
"qW" = (
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{
dir = 4
@@ -1890,6 +1943,20 @@
},
/turf/open/floor/plating,
/area/ship/crew/dorm)
+"rh" = (
+/obj/structure/catwalk/over/plated_catwalk/dark,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/machinery/light_switch{
+ dir = 4;
+ pixel_x = -20;
+ pixel_y = -1
+ },
+/turf/open/floor/plating,
+/area/ship/hallway/central)
"rL" = (
/turf/open/floor/plasteel/patterned/cargo_one,
/area/ship/cargo)
@@ -1905,7 +1972,7 @@
icon_state = "1-8"
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"rX" = (
/obj/structure/sign/poster/contraband/inteq_gec{
pixel_y = 32
@@ -1996,8 +2063,12 @@
/obj/machinery/door/airlock/medical{
name = "Morgue"
},
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/border_only,
/turf/open/floor/plasteel/white,
-/area/ship/medical)
+/area/ship/medical/surgery)
"ss" = (
/obj/structure/rack,
/obj/item/pickaxe/emergency,
@@ -2011,8 +2082,12 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/machinery/light_switch{
+ dir = 8;
+ pixel_x = 20
+ },
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"sy" = (
/obj/effect/turf_decal/corner/opaque/yellow{
dir = 1
@@ -2083,6 +2158,11 @@
pixel_y = 10
},
/obj/machinery/firealarm/directional/west,
+/obj/machinery/light_switch{
+ dir = 4;
+ pixel_x = -20;
+ pixel_y = -10
+ },
/turf/open/floor/plasteel/patterned/grid,
/area/ship/hallway/central)
"sM" = (
@@ -2192,6 +2272,10 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/power/apc/auto_name/directional/south,
/obj/structure/cable,
+/obj/machinery/light_switch{
+ dir = 1;
+ pixel_y = -20
+ },
/turf/open/floor/plasteel/patterned/grid,
/area/ship/hallway/port)
"tZ" = (
@@ -2234,7 +2318,7 @@
dir = 1
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"uA" = (
/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{
dir = 4
@@ -2466,12 +2550,11 @@
/turf/open/floor/plasteel/dark,
/area/ship/crew/canteen)
"xg" = (
-/obj/machinery/door/firedoor/border_only,
/obj/effect/turf_decal/siding/thinplating/dark/corner{
dir = 8
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"xj" = (
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/cargo)
@@ -2727,7 +2810,7 @@
/obj/effect/turf_decal/borderfloorblack,
/obj/structure/bodycontainer/morgue,
/turf/open/floor/plasteel/patterned/brushed,
-/area/ship/medical)
+/area/ship/medical/surgery)
"zE" = (
/obj/effect/turf_decal/siding/thinplating/dark{
dir = 1
@@ -2768,8 +2851,12 @@
"zI" = (
/obj/effect/turf_decal/borderfloorblack,
/obj/machinery/door/airlock/hatch,
+/obj/machinery/door/firedoor/border_only,
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
/turf/open/floor/plasteel/patterned,
-/area/ship/medical)
+/area/ship/medical/surgery)
"zK" = (
/obj/docking_port/stationary{
dir = 4;
@@ -2800,6 +2887,10 @@
/obj/effect/turf_decal/siding/thinplating/dark{
dir = 9
},
+/obj/machinery/light_switch{
+ dir = 4;
+ pixel_x = -20
+ },
/turf/open/floor/plasteel/dark,
/area/ship/medical)
"zT" = (
@@ -2889,7 +2980,7 @@
pixel_y = -4
},
/turf/open/floor/plasteel/patterned/brushed,
-/area/ship/medical)
+/area/ship/medical/surgery)
"AG" = (
/obj/structure/bed,
/obj/item/bedsheet/hos{
@@ -2968,6 +3059,10 @@
desc = "A poster encouraging you to work for your future.";
pixel_y = 32
},
+/obj/machinery/light_switch{
+ dir = 4;
+ pixel_x = -20
+ },
/turf/open/floor/plasteel/dark,
/area/ship/medical)
"Bc" = (
@@ -2984,6 +3079,13 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel/dark,
/area/ship/crew/canteen)
+"BB" = (
+/obj/machinery/light_switch{
+ dir = 1;
+ pixel_y = -20
+ },
+/turf/template_noop,
+/area/template_noop)
"BC" = (
/obj/structure/filingcabinet/double,
/obj/structure/sign/poster/official/help_others{
@@ -3082,7 +3184,7 @@
pixel_x = 28
},
/turf/open/floor/plasteel/white,
-/area/ship/medical)
+/area/ship/medical/surgery)
"CH" = (
/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning,
/obj/structure/cable{
@@ -3330,8 +3432,9 @@
/obj/effect/turf_decal/trimline/opaque/brown/line{
dir = 5
},
+/obj/machinery/light/directional/north,
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"EJ" = (
/obj/effect/turf_decal/siding/thinplating/corner{
dir = 1
@@ -3463,7 +3566,7 @@
/area/ship/crew/canteen)
"FY" = (
/turf/open/floor/plasteel/patterned/brushed,
-/area/ship/medical)
+/area/ship/medical/surgery)
"FZ" = (
/obj/effect/turf_decal/siding/thinplating{
dir = 1
@@ -3532,6 +3635,20 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel/patterned/grid,
/area/ship/hallway/central)
+"GT" = (
+/obj/structure/catwalk/over/plated_catwalk/dark,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/machinery/light_switch{
+ dir = 4;
+ pixel_x = -20;
+ pixel_y = 4
+ },
+/turf/open/floor/plating,
+/area/ship/hallway/central)
"Hg" = (
/obj/effect/turf_decal/siding/thinplating{
dir = 1
@@ -3567,6 +3684,9 @@
/obj/machinery/door/airlock/hatch{
name = "Port Hallway"
},
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"HA" = (
@@ -3631,6 +3751,10 @@
/obj/structure/mirror{
pixel_y = -24
},
+/obj/machinery/light_switch{
+ dir = 4;
+ pixel_x = -20
+ },
/turf/open/floor/plasteel/patterned/brushed,
/area/ship/crew/canteen)
"HT" = (
@@ -4042,7 +4166,7 @@
pixel_y = -23
},
/turf/open/floor/plasteel/white,
-/area/ship/medical)
+/area/ship/medical/surgery)
"LL" = (
/obj/structure/closet/secure_closet{
icon_state = "med_secure";
@@ -4089,6 +4213,10 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
},
+/obj/machinery/light_switch{
+ dir = 1;
+ pixel_y = -20
+ },
/turf/open/floor/plasteel/stairs{
dir = 8
},
@@ -4158,6 +4286,14 @@
"Nh" = (
/turf/closed/wall/mineral/plastitanium,
/area/ship/cargo)
+"Nk" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/dark,
+/area/ship/medical/surgery)
"Nn" = (
/obj/structure/table/reinforced,
/obj/effect/decal/cleanable/cobweb,
@@ -4175,6 +4311,10 @@
/obj/item/soap{
pixel_x = -6
},
+/obj/machinery/light_switch{
+ dir = 4;
+ pixel_x = -20
+ },
/turf/open/floor/plasteel/tech/techmaint,
/area/ship/crew/canteen)
"NA" = (
@@ -4309,6 +4449,7 @@
/obj/effect/turf_decal/techfloor{
dir = 4
},
+/obj/machinery/light/directional/east,
/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"Ok" = (
@@ -4318,6 +4459,14 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/patterned,
/area/ship/cargo)
+"Ox" = (
+/obj/structure/grille,
+/obj/structure/window/plasma/reinforced/plastitanium,
+/obj/machinery/door/poddoor/shutters{
+ id = "valor_external"
+ },
+/turf/open/floor/plating,
+/area/ship/medical/surgery)
"Oz" = (
/obj/structure/table,
/obj/item/folder{
@@ -4351,7 +4500,7 @@
/obj/effect/turf_decal/borderfloorblack,
/obj/machinery/light/directional/south,
/turf/open/floor/plasteel/patterned/brushed,
-/area/ship/medical)
+/area/ship/medical/surgery)
"OM" = (
/turf/open/floor/pod,
/area/ship/cargo)
@@ -4410,14 +4559,19 @@
dir = 8
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"Pg" = (
/obj/structure/sink{
dir = 4;
pixel_x = -12
},
+/obj/machinery/light_switch{
+ dir = 4;
+ pixel_x = -20;
+ pixel_y = 8
+ },
/turf/open/floor/plasteel/white,
-/area/ship/medical)
+/area/ship/medical/surgery)
"Pk" = (
/obj/effect/turf_decal/corner/opaque/brown{
dir = 4
@@ -4451,10 +4605,9 @@
/obj/effect/turf_decal/trimline/opaque/brown/line{
dir = 1
},
-/obj/machinery/light/directional/north,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2,
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"PU" = (
/turf/closed/wall/mineral/plastitanium,
/area/ship/crew/cryo)
@@ -4582,8 +4735,12 @@
/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
"Re" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc/auto_name/directional/west,
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"Rh" = (
/turf/closed/wall/mineral/plastitanium,
/area/ship/security)
@@ -4704,6 +4861,9 @@
},
/turf/open/floor/carpet/black,
/area/ship/crew/dorm)
+"SL" = (
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ship/medical/surgery)
"SX" = (
/obj/machinery/power/terminal{
dir = 1
@@ -4808,7 +4968,7 @@
dir = 1
},
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"Uj" = (
/obj/effect/turf_decal/siding/thinplating/dark,
/obj/structure/cable{
@@ -4860,6 +5020,15 @@
},
/turf/open/floor/plasteel/dark,
/area/ship/crew/canteen)
+"UD" = (
+/obj/machinery/suit_storage_unit/inherit,
+/obj/item/clothing/suit/space/inteq,
+/obj/item/clothing/head/helmet/space/inteq,
+/obj/effect/turf_decal/techfloor{
+ dir = 4
+ },
+/turf/open/floor/plasteel/tech/grid,
+/area/ship/cargo)
"UN" = (
/obj/effect/turf_decal/siding/thinplating,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
@@ -5046,10 +5215,12 @@
dir = 9
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
-/obj/machinery/firealarm/directional/west,
+/obj/machinery/firealarm/directional/west{
+ pixel_y = 4
+ },
/obj/structure/chair,
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"WQ" = (
/obj/structure/cable/yellow{
icon_state = "0-2"
@@ -5221,12 +5392,18 @@
/area/ship/medical)
"Yi" = (
/turf/open/floor/plasteel/white,
-/area/ship/medical)
+/area/ship/medical/surgery)
"Yn" = (
/obj/machinery/door/airlock/grunge{
dir = 8;
name = "Restroom"
},
+/obj/machinery/door/firedoor/border_only{
+ dir = 4
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
/turf/open/floor/plasteel/patterned/brushed,
/area/ship/crew/canteen)
"Yt" = (
@@ -5262,14 +5439,16 @@
/turf/open/floor/plating,
/area/ship/maintenance/starboard)
"YL" = (
-/obj/machinery/door/firedoor/border_only,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/open/floor/plasteel/dark,
-/area/ship/medical)
+/area/ship/medical/surgery)
"YM" = (
/obj/effect/turf_decal/corner/opaque/yellow{
dir = 1
@@ -5304,6 +5483,12 @@
dir = 4;
name = "Port Engines"
},
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/ship/maintenance/port)
"Zc" = (
@@ -5481,7 +5666,7 @@ cu
Td
Td
Td
-Td
+BB
Nh
xj
qG
@@ -5595,13 +5780,13 @@ xj
Td
Td
Td
-bB
-LI
+mr
+SL
ns
-LI
+SL
pC
zD
-LI
+SL
"}
(8,1,1) = {"
Zu
@@ -5628,13 +5813,13 @@ xj
Td
Td
Td
-WC
+Ox
WO
gp
-LI
+SL
FY
OK
-LI
+SL
"}
(9,1,1) = {"
Zu
@@ -5661,13 +5846,13 @@ xj
Td
Td
Td
-WC
+Ox
dA
Pe
si
hW
AE
-LI
+SL
"}
(10,1,1) = {"
Zu
@@ -5690,17 +5875,17 @@ OM
OM
Kz
ZF
-LI
+SL
jL
jL
jL
-LI
+SL
PL
bJ
-LI
-LI
-LI
-LI
+SL
+SL
+SL
+SL
"}
(11,1,1) = {"
Zu
@@ -5724,8 +5909,8 @@ Mn
de
KU
zI
-Re
-Re
+hJ
+hJ
xg
Re
Ui
@@ -5733,7 +5918,7 @@ gU
nK
Pg
eU
-LI
+SL
"}
(12,1,1) = {"
tZ
@@ -5758,15 +5943,15 @@ Fa
MR
qk
su
-su
+Nk
+Nk
YL
-su
ux
rO
qR
Yi
bI
-LI
+SL
"}
(13,1,1) = {"
tZ
@@ -5799,7 +5984,7 @@ oy
qR
CF
LJ
-LI
+SL
"}
(14,1,1) = {"
tZ
@@ -5824,15 +6009,15 @@ zT
nX
LI
jG
-Io
+ml
Au
LI
-LI
+SL
dN
-LI
-LI
-LI
-LI
+SL
+SL
+SL
+SL
"}
(15,1,1) = {"
tZ
@@ -5842,9 +6027,9 @@ tZ
Qc
AP
HC
-gq
-gq
-gq
+ou
+ou
+ou
Hw
nX
ct
@@ -5875,8 +6060,8 @@ ME
iN
xl
HC
-gq
-gq
+ou
+ou
gq
xj
Rc
@@ -5908,9 +6093,9 @@ tZ
VD
Um
DT
+UD
Oj
-Oj
-Oj
+UD
DT
DT
DT
@@ -5974,7 +6159,7 @@ mB
ma
CH
jk
-lc
+GT
Sh
lc
ht
@@ -5990,7 +6175,7 @@ hj
id
lc
Sh
-lc
+rh
bR
XD
NZ
diff --git a/_maps/shuttles/inteq/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm
index 71e191e5e584..336bf5792208 100644
--- a/_maps/shuttles/inteq/inteq_vaquero.dmm
+++ b/_maps/shuttles/inteq/inteq_vaquero.dmm
@@ -1191,31 +1191,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/engine/hull/reinforced,
/area/ship/external/dark)
-"tx" = (
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/storage/backpack/messenger/inteq,
-/obj/item/clothing/head/beret/sec/inteq,
-/obj/item/clothing/head/beret/sec/inteq,
-/obj/item/clothing/head/beret/sec/inteq,
-/obj/item/clothing/head/soft/inteq,
-/obj/item/clothing/head/soft/inteq,
-/obj/item/clothing/head/soft/inteq,
-/obj/structure/closet/wall/directional/north{
- icon_door = "orange_wall";
- name = "uniform closet"
- },
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
- dir = 8
- },
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
-/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
-/turf/open/floor/carpet/black,
-/area/ship/crew)
"ui" = (
/turf/closed/wall/mineral/plastitanium,
/area/ship/hallway/central)
@@ -1282,18 +1257,6 @@
},
/turf/open/floor/plasteel/patterned/grid,
/area/ship/crew/toilet)
-"vd" = (
-/obj/machinery/porta_turret/ship/weak{
- dir = 5
- },
-/obj/docking_port/mobile{
- dir = 2;
- launch_status = 0;
- port_direction = 8;
- preferred_direction = 4
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
"vg" = (
/obj/docking_port/stationary{
dir = 8;
@@ -1429,12 +1392,6 @@
},
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/cargo)
-"xX" = (
-/obj/machinery/porta_turret/ship/weak{
- dir = 6
- },
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/ship/bridge)
"xZ" = (
/obj/effect/turf_decal/industrial/warning/fulltile,
/obj/machinery/door/airlock/external{
@@ -1587,12 +1544,6 @@
},
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
-"zP" = (
-/obj/machinery/porta_turret/ship/weak{
- dir = 6
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
"zR" = (
/obj/structure/chair{
dir = 1
@@ -1981,6 +1932,13 @@
/obj/item/clothing/suit/armor/vest/security/warden/inteq,
/turf/open/floor/plasteel/dark,
/area/ship/security)
+"DT" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 6;
+ id = "vaquero_grid"
+ },
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ship/crew)
"Eh" = (
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/cargo)
@@ -2068,6 +2026,13 @@
/obj/machinery/firealarm/directional/west,
/turf/open/floor/plasteel/dark,
/area/ship/crew/office)
+"Fm" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 5;
+ id = "vaquero_grid"
+ },
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ship/crew/office)
"Fu" = (
/obj/machinery/door/airlock{
dir = 4;
@@ -2210,9 +2175,9 @@
pixel_y = 23
},
/obj/effect/decal/cleanable/dirt/dust,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
/turf/open/floor/plasteel/tech/grid,
/area/ship/security)
"HN" = (
@@ -2274,19 +2239,6 @@
/obj/machinery/holopad/emergency/command,
/turf/open/floor/carpet/orange,
/area/ship/bridge)
-"Iy" = (
-/obj/effect/turf_decal/corner/opaque/brown{
- dir = 4
- },
-/obj/effect/turf_decal/corner/opaque/yellow{
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/machinery/turretid{
- pixel_y = 25
- },
-/turf/open/floor/plasteel/dark,
-/area/ship/bridge)
"IN" = (
/obj/effect/turf_decal/industrial/warning{
dir = 1
@@ -2570,6 +2522,13 @@
},
/turf/open/floor/plasteel/patterned/grid,
/area/ship/hallway/central)
+"NO" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 6;
+ id = "vaquero_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/security)
"NR" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -2875,12 +2834,6 @@
/obj/structure/ore_box,
/turf/open/floor/plasteel/patterned/cargo_one,
/area/ship/cargo)
-"Td" = (
-/obj/machinery/porta_turret/ship/weak{
- dir = 5
- },
-/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/ship/bridge)
"Ti" = (
/obj/machinery/vending/coffee,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
@@ -2899,6 +2852,20 @@
/obj/effect/turf_decal/siding/thinplating/dark,
/turf/open/floor/plasteel/tech,
/area/ship/cargo)
+"TC" = (
+/obj/effect/turf_decal/corner/opaque/brown{
+ dir = 4
+ },
+/obj/effect/turf_decal/corner/opaque/yellow{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/obj/machinery/turretid/ship{
+ pixel_y = 26;
+ id = "vaquero_grid"
+ },
+/turf/open/floor/plasteel/dark,
+/area/ship/bridge)
"TK" = (
/obj/machinery/computer/cargo{
dir = 8
@@ -2939,6 +2906,31 @@
},
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
+"TX" = (
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/storage/backpack/messenger/inteq,
+/obj/item/clothing/head/beret/sec/inteq,
+/obj/item/clothing/head/beret/sec/inteq,
+/obj/item/clothing/head/beret/sec/inteq,
+/obj/item/clothing/head/soft/inteq,
+/obj/item/clothing/head/soft/inteq,
+/obj/item/clothing/head/soft/inteq,
+/obj/structure/closet/wall/directional/north{
+ icon_door = "orange_wall";
+ name = "uniform closet"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
+ dir = 8
+ },
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
+/obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt,
+/turf/open/floor/carpet/black,
+/area/ship/crew)
"Uf" = (
/obj/structure/table,
/obj/item/flashlight/lamp/green,
@@ -2958,6 +2950,19 @@
/obj/machinery/light/small/directional/west,
/turf/open/floor/carpet/black,
/area/ship/crew)
+"UO" = (
+/obj/docking_port/mobile{
+ dir = 2;
+ launch_status = 0;
+ port_direction = 8;
+ preferred_direction = 4
+ },
+/obj/machinery/porta_turret/ship/weak{
+ dir = 5;
+ id = "vaquero_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/medical)
"UV" = (
/obj/machinery/door/airlock/public/glass{
dir = 4;
@@ -3647,7 +3652,7 @@ ec
lr
FK
Ul
-Iy
+TC
In
qe
VI
@@ -3675,7 +3680,7 @@ Ul
sS
bu
Gq
-tx
+TX
jg
LB
"}
@@ -3700,7 +3705,7 @@ bL
Gq
"}
(17,1,1) = {"
-Td
+Fm
VN
VN
VN
@@ -3717,7 +3722,7 @@ id
te
Gq
Gq
-xX
+DT
"}
(18,1,1) = {"
ww
@@ -3883,7 +3888,7 @@ ww
ww
ww
ww
-vd
+UO
lo
lo
lo
@@ -3894,7 +3899,7 @@ ww
te
te
te
-zP
+NO
ww
ww
ww
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm
index e5890b401cfa..00967afb927e 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm
@@ -1372,7 +1372,8 @@
/area/ship/engineering)
"jH" = (
/obj/machinery/porta_turret/ship/weak{
- dir = 9
+ dir = 9;
+ id = "delta_grid"
},
/turf/closed/wall/mineral/titanium,
/area/ship/bridge)
@@ -2057,18 +2058,14 @@
pixel_x = -24;
pixel_y = -5
},
-/obj/machinery/turretid{
- icon_state = "control_kill";
- lethal = 1;
- locked = 0;
- pixel_y = -28;
- req_access = null
- },
/obj/structure/table,
/obj/machinery/recharger,
/obj/item/spacecash/bundle/c1000,
/obj/item/spacecash/bundle/c1000,
/obj/item/areaeditor/shuttle,
+/obj/machinery/turretid/ship{
+ pixel_y = -24
+ },
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"Aw" = (
@@ -2895,7 +2892,8 @@
/area/ship/science/robotics)
"WG" = (
/obj/machinery/porta_turret/ship/weak{
- dir = 4
+ dir = 4;
+ id = "delta_grid"
},
/turf/closed/wall/mineral/titanium,
/area/ship/bridge)
@@ -3021,7 +3019,8 @@
/area/ship/science/robotics)
"YZ" = (
/obj/machinery/porta_turret/ship/weak{
- dir = 10
+ dir = 10;
+ id = "delta_grid"
},
/turf/closed/wall/mineral/titanium,
/area/ship/bridge)
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm
index 96bd414525c0..b469bbaa0984 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm
@@ -4853,11 +4853,11 @@
pixel_x = 2;
pixel_y = 3
},
-/obj/item/kitchen/knife/plastic{
+/obj/item/melee/knife/plastic{
pixel_x = 2
},
-/obj/item/kitchen/knife/plastic,
-/obj/item/kitchen/knife/plastic{
+/obj/item/melee/knife/plastic,
+/obj/item/melee/knife/plastic{
pixel_x = 5;
pixel_y = 2
},
@@ -6113,7 +6113,7 @@
/obj/item/storage/pill_bottle/aranesp,
/obj/item/taperecorder,
/obj/item/t_scanner,
-/obj/item/kitchen/knife/switchblade,
+/obj/item/melee/knife/switchblade,
/obj/item/trash/candy,
/obj/structure/filingcabinet/double,
/obj/item/radio/intercom/directional/south,
@@ -13018,10 +13018,10 @@
/obj/item/reagent_containers/food/snacks/dough,
/obj/item/reagent_containers/food/snacks/dough,
/obj/item/kitchen/rollingpin,
-/obj/item/kitchen/knife/butcher{
+/obj/item/melee/knife/butcher{
pixel_x = 13
},
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/effect/turf_decal/industrial/warning{
dir = 1
},
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm
index 663a567b8bbc..1f645758f3cb 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm
@@ -1679,6 +1679,13 @@
/obj/machinery/door/firedoor,
/turf/open/floor/plating,
/area/ship/cargo)
+"jo" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 4;
+ id = "meta_grid"
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/crew)
"jw" = (
/obj/effect/turf_decal/corner/transparent/bar/diagonal,
/obj/effect/decal/cleanable/dirt/dust,
@@ -2198,6 +2205,13 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel/dark,
/area/ship/cargo)
+"uT" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 4;
+ id = "meta_grid"
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/crew/canteen/kitchen)
"ve" = (
/obj/effect/turf_decal/box/corners,
/obj/machinery/light/broken/directional/south,
@@ -2379,11 +2393,18 @@
/obj/structure/table,
/obj/item/cutting_board,
/obj/item/kitchen/rollingpin,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/effect/turf_decal/corner/opaque/white/diagonal,
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel,
/area/ship/crew/canteen/kitchen)
+"yF" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 1;
+ id = "meta_grid"
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/engineering)
"yS" = (
/obj/structure/table,
/obj/item/storage/box/lights/mixed{
@@ -2910,10 +2931,9 @@
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/decal/cleanable/dirt/dust,
-/obj/machinery/turretid{
+/obj/machinery/turretid/ship{
pixel_y = -24;
- req_access = null;
- locked = 0
+ id = "meta_grid"
},
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
@@ -3060,10 +3080,11 @@
/area/ship/engineering)
"Lo" = (
/obj/machinery/porta_turret/ship/weak{
- dir = 1
+ dir = 2;
+ id = "meta_grid"
},
/turf/closed/wall/mineral/titanium,
-/area/ship/bridge)
+/area/ship/engineering)
"Lq" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -3458,6 +3479,20 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel/dark,
/area/ship/cargo)
+"TR" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 2;
+ id = "meta_grid"
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/crew/canteen)
+"TV" = (
+/obj/machinery/porta_turret/ship/weak{
+ dir = 1;
+ id = "meta_grid"
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/crew)
"Uk" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -3861,7 +3896,7 @@ aa
"}
(6,1,1) = {"
aa
-Lo
+yF
ac
ri
Pr
@@ -4186,7 +4221,7 @@ aa
"}
(19,1,1) = {"
aa
-Lo
+TV
ai
ai
MU
@@ -4206,7 +4241,7 @@ sA
Uk
an
bD
-Lo
+TR
aa
"}
(20,1,1) = {"
@@ -4412,12 +4447,12 @@ aa
(28,1,1) = {"
aa
aa
-Lo
+jo
ai
ai
ai
ai
-Lo
+jo
aa
aa
aa
@@ -4425,12 +4460,12 @@ aa
aa
aa
aa
-Lo
+uT
cO
cO
cO
cO
-Lo
+uT
aa
aa
"}
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm
index 928fc6bd90ee..708933a2287a 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm
@@ -2005,7 +2005,7 @@
/obj/machinery/door/window{
dir = 4
},
-/obj/item/kitchen/knife/shiv,
+/obj/item/melee/knife/shiv,
/turf/open/floor/plating,
/area/ship/crew/canteen)
"lc" = (
@@ -4049,11 +4049,11 @@
/area/ship/crew/dorm)
"ye" = (
/obj/structure/closet/crate,
-/obj/item/kitchen/knife/plastic,
-/obj/item/kitchen/knife/plastic,
-/obj/item/kitchen/knife/plastic,
-/obj/item/kitchen/knife/plastic,
-/obj/item/kitchen/knife/plastic,
+/obj/item/melee/knife/plastic,
+/obj/item/melee/knife/plastic,
+/obj/item/melee/knife/plastic,
+/obj/item/melee/knife/plastic,
+/obj/item/melee/knife/plastic,
/obj/item/kitchen/spoon/plastic,
/obj/item/kitchen/spoon/plastic,
/obj/item/kitchen/spoon/plastic,
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm
index 564cf0733f9f..a44e00c41303 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm
@@ -7644,7 +7644,7 @@
/area/ship/engineering)
"XE" = (
/obj/structure/table/reinforced,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/item/kitchen/rollingpin,
/obj/item/reagent_containers/food/condiment/sugar,
/obj/item/reagent_containers/food/condiment/rice,
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm
index d2ccfdcfe910..fcd049fb153f 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm
@@ -176,7 +176,7 @@
/obj/item/clothing/glasses/sunglasses/gar,
/obj/item/melee/classic_baton/telescopic,
/obj/item/flashlight/seclite,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
/obj/item/holosign_creator/security,
/obj/item/storage/box/handcuffs,
/obj/item/restraints/legcuffs/bola/energy,
@@ -1544,7 +1544,7 @@
pixel_y = 9;
pixel_x = -12
},
-/obj/item/kitchen/knife/combat/survival{
+/obj/item/melee/knife/survival{
pixel_y = 6;
pixel_x = 5
},
@@ -3117,7 +3117,7 @@
/obj/structure/closet/secure_closet/lp/lieutenant,
/obj/item/stock_parts/cell/gun,
/obj/item/melee/classic_baton/telescopic,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
/obj/item/gps,
/obj/item/screwdriver,
/obj/effect/turf_decal/siding/wood{
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm
index 802756c19d04..e69aa1de47ca 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm
@@ -1734,7 +1734,7 @@
pixel_x = 1;
pixel_y = 5
},
-/obj/item/kitchen/knife/letter_opener{
+/obj/item/melee/knife/letter_opener{
desc = "A military combat utility survival knife, imported from Earth. An expensive paperweight indeed.";
pixel_x = 4;
pixel_y = 5
@@ -2607,7 +2607,7 @@
dir = 10
},
/obj/structure/table/reinforced,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/item/cutting_board,
/obj/effect/turf_decal/corner/opaque/green/mono,
/turf/open/floor/plasteel,
diff --git a/_maps/shuttles/pgf/pgf_crying_sun.dmm b/_maps/shuttles/pgf/pgf_crying_sun.dmm
index ad52c8b853d8..eb5211a95ac9 100644
--- a/_maps/shuttles/pgf/pgf_crying_sun.dmm
+++ b/_maps/shuttles/pgf/pgf_crying_sun.dmm
@@ -424,16 +424,6 @@
},
/turf/open/floor/plating,
/area/ship/engineering/engines/starboard)
-"du" = (
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/machinery/porta_turret/ship/pgf/light{
- dir = 6;
- mode = 1
- },
-/turf/open/floor/engine/hull,
-/area/ship/external/dark)
"dv" = (
/obj/structure/cable/blue{
icon_state = "0-4"
@@ -534,6 +524,29 @@
},
/turf/open/floor/plasteel/mono/dark,
/area/ship/hallway/central)
+"ee" = (
+/obj/effect/turf_decal/corner_steel_grid{
+ dir = 9
+ },
+/obj/effect/turf_decal/corner_steel_grid{
+ dir = 4
+ },
+/obj/machinery/button/door{
+ id = "lib_bridge_shut";
+ name = "Bridge Shutters";
+ pixel_y = 20;
+ pixel_x = 8
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/obj/machinery/turretid/ship{
+ pixel_y = 24;
+ pixel_x = -7;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/plasteel/mono/dark,
+/area/ship/bridge)
"ej" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 8
@@ -1046,17 +1059,6 @@
},
/turf/open/floor/plating,
/area/ship/bridge)
-"if" = (
-/obj/structure/cable{
- icon_state = "0-8"
- },
-/obj/structure/catwalk/over/plated_catwalk/dark,
-/obj/machinery/porta_turret/ship/pgf/light{
- dir = 4;
- mode = 1
- },
-/turf/open/floor/plating/airless,
-/area/ship/external/dark)
"ih" = (
/obj/structure/table/reinforced,
/obj/item/modular_computer/laptop/preset,
@@ -1188,6 +1190,17 @@
},
/turf/open/floor/plasteel/mono,
/area/ship/hangar/starboard)
+"jg" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/porta_turret/ship/pgf/light{
+ dir = 5;
+ mode = 1;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/engine/hull,
+/area/ship/external/dark)
"jh" = (
/obj/effect/turf_decal/industrial/traffic{
dir = 1
@@ -1473,6 +1486,17 @@
/obj/structure/catwalk/over/plated_catwalk/dark,
/turf/open/floor/plating/airless,
/area/ship/external/dark)
+"mf" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/porta_turret/ship/pgf/light{
+ dir = 8;
+ mode = 1;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/engine/hull/reinforced,
+/area/ship/external/dark)
"mk" = (
/obj/structure/table/wood,
/obj/item/toy/plush/sharai{
@@ -3071,28 +3095,6 @@
},
/turf/open/floor/vault,
/area/ship/security/armory)
-"Aq" = (
-/obj/effect/turf_decal/corner_steel_grid{
- dir = 9
- },
-/obj/effect/turf_decal/corner_steel_grid{
- dir = 4
- },
-/obj/machinery/button/door{
- id = "lib_bridge_shut";
- name = "Bridge Shutters";
- pixel_y = 20;
- pixel_x = 8
- },
-/obj/structure/chair/comfy/shuttle{
- dir = 4
- },
-/obj/machinery/turretid{
- pixel_y = 23;
- pixel_x = -8
- },
-/turf/open/floor/plasteel/mono/dark,
-/area/ship/bridge)
"Ar" = (
/obj/effect/turf_decal/corner_steel_grid{
dir = 9
@@ -3162,6 +3164,18 @@
"At" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/ship/security/armory)
+"Az" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/catwalk/over/plated_catwalk/dark,
+/obj/machinery/porta_turret/ship/pgf/light{
+ dir = 4;
+ mode = 1;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/plating/airless,
+/area/ship/external/dark)
"AL" = (
/obj/machinery/vending/toyliberationstation,
/turf/open/floor/plasteel/tech,
@@ -3344,19 +3358,19 @@
pixel_x = 3;
pixel_y = 5
},
-/obj/item/kitchen/knife/plastic{
+/obj/item/melee/knife/plastic{
pixel_y = 5;
pixel_x = -1
},
-/obj/item/kitchen/knife/plastic{
+/obj/item/melee/knife/plastic{
pixel_y = 5;
pixel_x = -3
},
-/obj/item/kitchen/knife/plastic{
+/obj/item/melee/knife/plastic{
pixel_y = 5;
pixel_x = -5
},
-/obj/item/kitchen/knife/plastic{
+/obj/item/melee/knife/plastic{
pixel_y = 5;
pixel_x = -7
},
@@ -3441,16 +3455,6 @@
"CD" = (
/turf/open/floor/plasteel/white,
/area/ship/crew/canteen)
-"CF" = (
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/machinery/porta_turret/ship/pgf/light{
- dir = 10;
- mode = 1
- },
-/turf/open/floor/engine/hull,
-/area/ship/external/dark)
"CO" = (
/obj/machinery/vending/coffee,
/obj/effect/turf_decal/corner_steel_grid/full{
@@ -3608,6 +3612,17 @@
/obj/item/clothing/head/helmet/space/gezena,
/turf/open/floor/plating,
/area/ship/engineering)
+"DG" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/porta_turret/ship/pgf/light{
+ dir = 5;
+ mode = 1;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/engine/hull,
+/area/ship/external/dark)
"DJ" = (
/obj/effect/turf_decal/industrial/traffic,
/obj/structure/sign/flag/gezena{
@@ -3721,14 +3736,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
/turf/open/floor/plasteel,
/area/ship/hallway/central)
-"Eu" = (
-/obj/structure/cable,
-/obj/machinery/porta_turret/ship/pgf/light{
- dir = 5;
- mode = 1
- },
-/turf/open/floor/engine/hull,
-/area/ship/external/dark)
"EA" = (
/obj/structure/sign/poster/contraband/pgf{
pixel_y = 32
@@ -3985,16 +3992,6 @@
},
/turf/open/floor/plasteel/mono/dark,
/area/ship/hallway/central)
-"FJ" = (
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/machinery/porta_turret/ship/pgf/light{
- dir = 5;
- mode = 1
- },
-/turf/open/floor/engine/hull,
-/area/ship/external/dark)
"FN" = (
/obj/structure/catwalk/over/plated_catwalk/dark,
/obj/machinery/door/poddoor{
@@ -4006,16 +4003,6 @@
},
/turf/open/floor/plating,
/area/ship/engineering/engines/starboard)
-"FO" = (
-/obj/structure/cable{
- icon_state = "0-4"
- },
-/obj/machinery/porta_turret/ship/pgf/light{
- dir = 8;
- mode = 1
- },
-/turf/open/floor/engine/hull/reinforced,
-/area/ship/external/dark)
"FU" = (
/obj/effect/turf_decal/corner_steel_grid{
dir = 10
@@ -4242,16 +4229,6 @@
/obj/effect/turf_decal/corner/opaque/neutral/full,
/turf/open/floor/vault,
/area/ship/security/armory)
-"Hb" = (
-/obj/structure/cable{
- icon_state = "0-2"
- },
-/obj/machinery/porta_turret/ship/pgf/light{
- dir = 5;
- mode = 1
- },
-/turf/open/floor/engine/hull,
-/area/ship/external/dark)
"Hf" = (
/obj/structure/railing,
/obj/effect/turf_decal/corner_steel_grid{
@@ -4259,6 +4236,18 @@
},
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/crew/cryo)
+"Hl" = (
+/obj/structure/catwalk/over/plated_catwalk/dark,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/porta_turret/ship/pgf/light{
+ dir = 4;
+ mode = 1;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/plating/airless,
+/area/ship/external/dark)
"Hn" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/ship/crew/cryo)
@@ -5490,19 +5479,19 @@
/area/ship/bridge)
"Qq" = (
/obj/structure/rack,
-/obj/item/kitchen/knife/combat/survival{
+/obj/item/melee/knife/survival{
pixel_x = -7;
pixel_y = 4
},
-/obj/item/kitchen/knife/combat/survival{
+/obj/item/melee/knife/survival{
pixel_x = -2;
pixel_y = 4
},
-/obj/item/kitchen/knife/combat/survival{
+/obj/item/melee/knife/survival{
pixel_y = 4;
pixel_x = 3
},
-/obj/item/kitchen/knife/combat/survival{
+/obj/item/melee/knife/survival{
pixel_y = 4;
pixel_x = 8
},
@@ -5846,6 +5835,17 @@
/obj/machinery/light/floor/hangar,
/turf/open/floor/engine/hull/reinforced,
/area/ship/external/dark)
+"Tp" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/machinery/porta_turret/ship/pgf/light{
+ dir = 10;
+ mode = 1;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/engine/hull,
+/area/ship/external/dark)
"Tw" = (
/obj/structure/cable{
icon_state = "0-2"
@@ -6287,6 +6287,17 @@
},
/turf/open/floor/plasteel/tech,
/area/ship/bridge)
+"Wi" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/machinery/porta_turret/ship/pgf/light{
+ dir = 6;
+ mode = 1;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/engine/hull,
+/area/ship/external/dark)
"Wk" = (
/obj/machinery/power/smes/shuttle/precharged{
dir = 4
@@ -6357,6 +6368,17 @@
/obj/structure/catwalk/over/plated_catwalk/dark,
/turf/open/floor/plating/airless,
/area/ship/external/dark)
+"WU" = (
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/porta_turret/ship/pgf/light{
+ dir = 5;
+ mode = 1;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/engine/hull,
+/area/ship/external/dark)
"WV" = (
/obj/effect/turf_decal/trimline/opaque/bottlegreen/filled/line{
dir = 4
@@ -6676,6 +6698,15 @@
},
/turf/open/floor/plasteel/tech,
/area/ship/engineering/engines/port)
+"Zr" = (
+/obj/structure/cable,
+/obj/machinery/porta_turret/ship/pgf/light{
+ dir = 5;
+ mode = 1;
+ id = "crying_sun_grid"
+ },
+/turf/open/floor/engine/hull,
+/area/ship/external/dark)
"Zw" = (
/obj/structure/railing{
dir = 4
@@ -6849,7 +6880,7 @@ CB
AM
UM
lc
-FO
+mf
LD
TV
bB
@@ -7203,7 +7234,7 @@ xz
(15,1,1) = {"
xz
xz
-FJ
+jg
ow
ow
mG
@@ -7281,7 +7312,7 @@ xK
zz
DT
SB
-CF
+Tp
xz
"}
(18,1,1) = {"
@@ -7400,7 +7431,7 @@ xz
xz
xz
Si
-KB
+DG
KM
Te
EM
@@ -7457,7 +7488,7 @@ xz
xz
xz
eR
-Eu
+Zr
KP
BX
xy
@@ -7589,7 +7620,7 @@ Bq
oR
Ne
SB
-du
+Wi
xz
"}
(29,1,1) = {"
@@ -7794,7 +7825,7 @@ xz
xz
xz
xz
-Hb
+WU
xk
UE
pW
@@ -7992,7 +8023,7 @@ xz
xz
xz
MF
-Aq
+ee
Xs
jm
jH
@@ -8075,7 +8106,7 @@ xz
xz
xz
xz
-Hb
+WU
vr
dK
Gb
@@ -8252,11 +8283,11 @@ xz
xz
xz
xz
-if
+Hl
xz
xz
xz
-if
+Az
xz
xz
xz
diff --git a/_maps/shuttles/pirate/pirate_libertatia.dmm b/_maps/shuttles/pirate/pirate_libertatia.dmm
index 2fe2cd9ddb20..b1bf098571c0 100644
--- a/_maps/shuttles/pirate/pirate_libertatia.dmm
+++ b/_maps/shuttles/pirate/pirate_libertatia.dmm
@@ -566,11 +566,11 @@
/area/ship/security)
"sI" = (
/obj/machinery/firealarm/directional/south,
-/obj/item/kitchen/knife/hunting{
+/obj/item/melee/knife/hunting{
pixel_y = 5
},
-/obj/item/kitchen/knife/hunting,
-/obj/item/kitchen/knife/hunting{
+/obj/item/melee/knife/hunting,
+/obj/item/melee/knife/hunting{
pixel_y = -5
},
/obj/item/storage/belt/security/webbing,
diff --git a/_maps/shuttles/pirate/pirate_noderider.dmm b/_maps/shuttles/pirate/pirate_noderider.dmm
index 2e0352c54a58..6861f971143f 100644
--- a/_maps/shuttles/pirate/pirate_noderider.dmm
+++ b/_maps/shuttles/pirate/pirate_noderider.dmm
@@ -341,10 +341,11 @@
/area/ship/crew)
"et" = (
/obj/machinery/porta_turret/ship{
- dir = 5
+ dir = 5;
+ id = "jupiter_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/security/armory)
"ev" = (
/obj/machinery/power/rtg,
/obj/structure/cable{
@@ -578,10 +579,11 @@
/area/ship/crew)
"iH" = (
/obj/machinery/porta_turret/ship{
- dir = 9
+ dir = 9;
+ id = "jupiter_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/engineering)
"iJ" = (
/obj/effect/turf_decal/industrial/warning,
/obj/effect/turf_decal/spline/fancy/opaque/black{
@@ -965,6 +967,13 @@
/obj/item/pickaxe/drill,
/turf/open/floor/plasteel/dark,
/area/ship/cargo)
+"oX" = (
+/obj/machinery/porta_turret/ship{
+ dir = 4;
+ id = "jupiter_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/security/armory)
"pi" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -1596,6 +1605,13 @@
/obj/effect/turf_decal/spline/fancy/opaque/black,
/turf/open/floor/plasteel/tech/grid,
/area/ship/maintenance/central)
+"yH" = (
+/obj/machinery/porta_turret/ship{
+ dir = 4;
+ id = "jupiter_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/bridge)
"yI" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -1733,7 +1749,8 @@
/area/ship/engineering)
"Az" = (
/obj/machinery/porta_turret/ship{
- dir = 6
+ dir = 6;
+ id = "jupiter_grid"
},
/turf/closed/wall/mineral/plastitanium,
/area/ship/bridge)
@@ -2578,10 +2595,11 @@
/area/ship/maintenance/central)
"MX" = (
/obj/machinery/porta_turret/ship{
- dir = 1
+ dir = 1;
+ id = "jupiter_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/maintenance/central)
"MZ" = (
/obj/structure/cable{
icon_state = "0-8"
@@ -2862,10 +2880,11 @@
/area/ship/cargo)
"RE" = (
/obj/machinery/porta_turret/ship{
- dir = 4
+ dir = 4;
+ id = "jupiter_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/crew)
"RI" = (
/obj/structure/cable{
icon_state = "1-8"
@@ -2889,10 +2908,11 @@
/area/ship/engineering)
"Ss" = (
/obj/machinery/porta_turret/ship{
- dir = 10
+ dir = 10;
+ id = "jupiter_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/engineering)
"SP" = (
/obj/machinery/power/shieldwallgen/anchored,
/obj/structure/cable,
@@ -2982,9 +3002,12 @@
/turf/open/floor/plating/airless,
/area/ship/external)
"VC" = (
-/obj/machinery/porta_turret/ship,
+/obj/machinery/porta_turret/ship{
+ dir = 2;
+ id = "jupiter_grid"
+ },
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/maintenance/central)
"VF" = (
/obj/machinery/ai_slipper,
/obj/effect/turf_decal/spline/fancy/opaque/black,
@@ -4102,7 +4125,7 @@ qc
Th
Kc
by
-RE
+oX
by
oJ
Ne
@@ -4192,7 +4215,7 @@ by
by
by
by
-RE
+yH
by
by
by
diff --git a/_maps/shuttles/pirate/pirate_tortuga.dmm b/_maps/shuttles/pirate/pirate_tortuga.dmm
index 4bc354b31b5c..fc08d44db510 100644
--- a/_maps/shuttles/pirate/pirate_tortuga.dmm
+++ b/_maps/shuttles/pirate/pirate_tortuga.dmm
@@ -753,7 +753,7 @@
/obj/structure/closet/crate{
icon_state = "o2crate"
},
-/obj/item/spear/explosive,
+/obj/item/melee/spear/explosive,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating/airless,
/area/ship/maintenance)
@@ -2375,19 +2375,19 @@
/area/ship/cargo)
"FB" = (
/obj/structure/rack,
-/obj/item/kitchen/knife/combat/survival{
+/obj/item/melee/knife/survival{
pixel_y = 8;
pixel_x = -9
},
-/obj/item/kitchen/knife/combat/survival{
+/obj/item/melee/knife/survival{
pixel_y = 7;
pixel_x = 5
},
-/obj/item/kitchen/knife/combat/survival{
+/obj/item/melee/knife/survival{
pixel_y = 7;
pixel_x = -4
},
-/obj/item/kitchen/knife/combat/survival{
+/obj/item/melee/knife/survival{
pixel_y = 7;
pixel_x = 1
},
@@ -3403,7 +3403,7 @@
/turf/open/floor/plating,
/area/ship/cargo)
"RV" = (
-/obj/item/kitchen/knife/plastic{
+/obj/item/melee/knife/plastic{
pixel_x = 8
},
/obj/item/reagent_containers/food/snacks/grown/potato{
diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm
index 5ef138ad19db..0e501c62ed57 100644
--- a/_maps/shuttles/roumain/srm_elder.dmm
+++ b/_maps/shuttles/roumain/srm_elder.dmm
@@ -1533,7 +1533,7 @@
/obj/item/clothing/shoes/cowboy,
/obj/item/clothing/shoes/cowboy/black,
/obj/item/clothing/shoes/combat,
-/obj/item/kitchen/knife/hunting,
+/obj/item/melee/knife/hunting,
/obj/item/gps{
pixel_x = -7
},
@@ -2017,7 +2017,7 @@
pixel_x = -2;
pixel_y = 2
},
-/obj/item/kitchen/knife/combat,
+/obj/item/melee/knife/combat,
/obj/effect/turf_decal/spline/fancy/wood{
dir = 5
},
@@ -2462,15 +2462,15 @@
/area/ship/roumain)
"Eh" = (
/obj/structure/table/wood,
-/obj/item/spear/bonespear{
+/obj/item/melee/spear/bone{
pixel_y = -3;
pixel_x = 2
},
-/obj/item/spear/bonespear{
+/obj/item/melee/spear/bone{
pixel_y = 1;
pixel_x = 2
},
-/obj/item/spear/bonespear{
+/obj/item/melee/spear/bone{
pixel_y = 5;
pixel_x = 2
},
@@ -2643,7 +2643,7 @@
/obj/item/clothing/shoes/cowboy/black,
/obj/item/clothing/shoes/cowboy,
/obj/item/clothing/shoes/combat,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
/obj/item/gps{
pixel_x = -7
},
@@ -2687,7 +2687,7 @@
pixel_x = -2;
pixel_y = 2
},
-/obj/item/kitchen/knife/combat,
+/obj/item/melee/knife/combat,
/obj/effect/turf_decal/spline/fancy/wood{
dir = 5
},
@@ -3656,7 +3656,7 @@
/obj/item/clothing/shoes/cowboy,
/obj/item/clothing/shoes/cowboy/black,
/obj/item/clothing/shoes/combat,
-/obj/item/kitchen/knife/hunting,
+/obj/item/melee/knife/hunting,
/obj/item/gps{
pixel_x = -7
},
diff --git a/_maps/shuttles/solgov/solgov_chronicle.dmm b/_maps/shuttles/solgov/solgov_chronicle.dmm
index 19730904ab41..e8af1166a200 100644
--- a/_maps/shuttles/solgov/solgov_chronicle.dmm
+++ b/_maps/shuttles/solgov/solgov_chronicle.dmm
@@ -569,7 +569,7 @@
/obj/item/clothing/suit/hazardvest/solgov,
/obj/item/clothing/accessory/armband/cargo,
/obj/item/clothing/shoes/workboots,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
/obj/item/clothing/gloves/combat,
/obj/item/storage/backpack,
/obj/machinery/light/small/directional/north,
@@ -3352,12 +3352,6 @@
},
/turf/open/floor/plasteel/white,
/area/ship/engineering)
-"GH" = (
-/obj/effect/turf_decal/corner/opaque/solgovgold{
- dir = 6
- },
-/turf/template_noop,
-/area/template_noop)
"GP" = (
/obj/machinery/door/airlock/solgov{
dir = 4;
@@ -4433,7 +4427,7 @@
"RX" = (
/obj/structure/table/wood,
/obj/item/cutting_board,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/machinery/newscaster/directional/north,
/obj/structure/sink{
layer = 2.79;
@@ -5313,7 +5307,7 @@ pS
pS
KZ
KZ
-GH
+pS
AN
Bz
Wn
diff --git a/_maps/shuttles/solgov/solgov_inkwell.dmm b/_maps/shuttles/solgov/solgov_inkwell.dmm
index d89314c2f769..5d2c0fbe0ccc 100644
--- a/_maps/shuttles/solgov/solgov_inkwell.dmm
+++ b/_maps/shuttles/solgov/solgov_inkwell.dmm
@@ -1,4 +1,11 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 6
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/crew/canteen/kitchen)
"af" = (
/obj/effect/turf_decal/techfloor{
dir = 1
@@ -62,6 +69,13 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/wood,
/area/ship/crew/library)
+"aB" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 5
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/security/armory)
"aO" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 1
@@ -1045,6 +1059,13 @@
/obj/item/tank/jetpack/oxygen,
/turf/open/floor/wood/maple,
/area/ship/crew/dorm/dormtwo)
+"hk" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 6
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/crew/toilet)
"hl" = (
/obj/effect/turf_decal/corner/opaque/solgovblue{
dir = 1
@@ -1088,9 +1109,12 @@
/turf/open/floor/plasteel/mono,
/area/ship/cargo)
"hE" = (
-/obj/machinery/porta_turret/ship/solgov,
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 6
+ },
/turf/closed/wall/mineral/titanium,
-/area/ship/bridge)
+/area/ship/storage)
"hF" = (
/obj/effect/turf_decal/siding/wood,
/obj/effect/turf_decal/siding/wood/corner{
@@ -1620,6 +1644,13 @@
},
/turf/open/floor/plasteel/mono/dark,
/area/ship/engineering)
+"kE" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 9
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/maintenance/starboard)
"kK" = (
/obj/machinery/door/window/brigdoor/westleft,
/obj/structure/rack,
@@ -1729,9 +1760,9 @@
dir = 1
},
/obj/effect/decal/cleanable/dirt/dust,
-/obj/machinery/turretid/lethal{
+/obj/machinery/turretid/ship{
pixel_x = -26;
- pixel_y = 0
+ id = "inkwell_grid"
},
/turf/open/floor/plasteel/stairs/wood/left{
dir = 1
@@ -2138,6 +2169,13 @@
},
/turf/open/floor/plasteel/mono,
/area/ship/cargo)
+"nN" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 10
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/maintenance/starboard)
"nO" = (
/obj/machinery/computer/cargo/solgov,
/turf/open/floor/wood/maple,
@@ -2533,7 +2571,7 @@
/area/ship/crew/canteen)
"qE" = (
/obj/structure/table/wood,
-/obj/item/kitchen/knife/letter_opener{
+/obj/item/melee/knife/letter_opener{
icon_state = "letter_opener_b";
name = "boxcutter";
pixel_x = -13;
@@ -2548,6 +2586,13 @@
},
/turf/open/floor/plasteel/mono,
/area/ship/cargo)
+"qF" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 10
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/maintenance/port)
"qG" = (
/obj/machinery/light/small/directional/south,
/obj/effect/decal/cleanable/dirt/dust,
@@ -2666,7 +2711,7 @@
dir = 4
},
/obj/item/clothing/glasses/meson/prescription,
-/obj/item/kitchen/knife/letter_opener,
+/obj/item/melee/knife/letter_opener,
/obj/item/clothing/glasses/meson,
/obj/machinery/light/directional/north,
/obj/item/storage/bag/ore,
@@ -3012,7 +3057,7 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/item/kitchen/knife/letter_opener,
+/obj/item/melee/knife/letter_opener,
/obj/item/clothing/glasses/meson,
/obj/structure/sign/poster/solgov/random{
pixel_y = 32
@@ -3297,7 +3342,7 @@
"uS" = (
/obj/structure/table/wood,
/obj/item/cutting_board,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/item/reagent_containers/food/condiment/saltshaker{
pixel_x = -17
},
@@ -3572,6 +3617,13 @@
},
/turf/open/floor/plating,
/area/ship/crew/dorm/dormthree)
+"wn" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 5
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/crew/toilet)
"wo" = (
/obj/item/clothing/gloves/combat,
/obj/item/folder/solgov,
@@ -3582,7 +3634,7 @@
/obj/item/stamp/solgov,
/obj/item/clothing/suit/armor/solgov_trenchcoat,
/obj/item/storage/backpack/satchel,
-/obj/item/kitchen/knife/letter_opener,
+/obj/item/melee/knife/letter_opener,
/obj/structure/closet/secure_closet/quartermaster{
anchored = 1;
name = "\proper logistics deck officer's locker";
@@ -4346,6 +4398,13 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel/white,
/area/ship/engineering)
+"BN" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 9
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/maintenance/port)
"BO" = (
/obj/effect/turf_decal/industrial/warning,
/obj/effect/turf_decal/industrial/warning{
@@ -4565,6 +4624,13 @@
},
/turf/open/floor/plasteel/patterned/cargo_one,
/area/ship/cargo)
+"CY" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 5
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/crew/canteen/kitchen)
"Dc" = (
/obj/effect/turf_decal/corner/opaque/solgovblue/full,
/obj/structure/cable{
@@ -5201,6 +5267,13 @@
},
/turf/open/floor/plasteel/mono,
/area/ship/cargo)
+"Hl" = (
+/obj/machinery/porta_turret/ship/solgov{
+ id = "inkwell_grid";
+ dir = 1
+ },
+/turf/closed/wall/mineral/titanium,
+/area/ship/bridge)
"Ho" = (
/obj/structure/chair/comfy/grey/directional/south,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
@@ -5388,13 +5461,13 @@
},
/obj/structure/rack,
/obj/structure/window/reinforced,
-/obj/item/kitchen/knife/letter_opener{
+/obj/item/melee/knife/letter_opener{
pixel_x = -2
},
-/obj/item/kitchen/knife/letter_opener{
+/obj/item/melee/knife/letter_opener{
pixel_x = 1
},
-/obj/item/kitchen/knife/letter_opener{
+/obj/item/melee/knife/letter_opener{
pixel_x = 4
},
/obj/effect/turf_decal/corner/opaque/solgovblue{
@@ -6886,7 +6959,7 @@
},
/obj/effect/turf_decal/industrial/outline/red,
/obj/item/clothing/glasses/meson/prescription,
-/obj/item/kitchen/knife/letter_opener,
+/obj/item/melee/knife/letter_opener,
/obj/item/clothing/glasses/meson,
/obj/item/storage/bag/ore,
/turf/open/floor/plasteel/white,
@@ -7844,12 +7917,12 @@
(1,1,1) = {"
iG
-hE
+BN
UJ
Hp
Hp
zI
-hE
+qF
iG
iG
iG
@@ -7867,12 +7940,12 @@ iG
iG
iG
iG
-hE
+kE
ni
dv
dv
vY
-hE
+nN
iG
iG
"}
@@ -8047,7 +8120,7 @@ DH
iG
"}
(7,1,1) = {"
-hE
+Hl
XY
DE
Cq
@@ -8077,7 +8150,7 @@ Np
ts
qx
ts
-hE
+ts
iG
"}
(8,1,1) = {"
@@ -8489,7 +8562,7 @@ sJ
iG
"}
(20,1,1) = {"
-hE
+aB
SI
kK
LJ
@@ -9000,7 +9073,7 @@ iG
"}
(35,1,1) = {"
iG
-hE
+wn
ea
pc
cH
@@ -9028,7 +9101,7 @@ FE
nA
yE
AA
-hE
+aa
iG
iG
"}
@@ -9038,7 +9111,7 @@ iG
DS
DS
DS
-hE
+hk
iG
iG
iG
@@ -9058,7 +9131,7 @@ iG
iG
iG
iG
-hE
+CY
qc
qc
FE
diff --git a/_maps/shuttles/solgov/solgov_paracelsus.dmm b/_maps/shuttles/solgov/solgov_paracelsus.dmm
index b235794d6cd4..ef642488ef50 100644
--- a/_maps/shuttles/solgov/solgov_paracelsus.dmm
+++ b/_maps/shuttles/solgov/solgov_paracelsus.dmm
@@ -803,7 +803,7 @@
/obj/effect/turf_decal/siding/yellow{
dir = 4
},
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
/obj/item/clothing/gloves/combat,
/obj/item/clothing/suit/hazardvest/solgov,
/obj/item/clothing/head/hardhat/solgov,
@@ -1652,7 +1652,7 @@
/obj/effect/turf_decal/siding/yellow{
dir = 4
},
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
/obj/item/clothing/gloves/combat,
/obj/item/clothing/suit/hazardvest/solgov,
/obj/item/clothing/head/hardhat/solgov,
@@ -4715,7 +4715,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/structure/table/wood,
/obj/item/cutting_board,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/item/kitchen/rollingpin,
/turf/open/floor/wood/ebony,
/area/ship/crew/canteen)
diff --git a/_maps/shuttles/subshuttles/frontiersmen_gut.dmm b/_maps/shuttles/subshuttles/frontiersmen_gut.dmm
index 6044e1011891..d27da7c54e5e 100644
--- a/_maps/shuttles/subshuttles/frontiersmen_gut.dmm
+++ b/_maps/shuttles/subshuttles/frontiersmen_gut.dmm
@@ -61,7 +61,8 @@
/area/ship/storage)
"dJ" = (
/obj/machinery/porta_turret/ship/ballistic{
- dir = 5
+ dir = 5;
+ id = "gut_grid"
},
/turf/closed/wall/r_wall/syndicate/nodiagonal,
/area/ship/storage)
@@ -305,6 +306,10 @@
dir = 9
},
/obj/machinery/computer/helm,
+/obj/machinery/turretid/ship{
+ pixel_y = 24;
+ id = "gut_grid"
+ },
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/storage)
"sk" = (
@@ -397,7 +402,8 @@
/area/ship/storage)
"vJ" = (
/obj/machinery/porta_turret/ship/ballistic{
- dir = 9
+ dir = 9;
+ id = "gut_grid"
},
/turf/closed/wall/r_wall/syndicate/nodiagonal,
/area/ship/storage)
@@ -478,7 +484,8 @@
/area/ship/storage)
"GQ" = (
/obj/machinery/porta_turret/ship/ballistic{
- dir = 5
+ dir = 5;
+ id = "gut_grid"
},
/turf/closed/wall/mineral/plastitanium,
/area/ship/storage)
@@ -576,7 +583,8 @@
/area/ship/storage)
"RY" = (
/obj/machinery/porta_turret/ship/ballistic{
- dir = 9
+ dir = 9;
+ id = "gut_grid"
},
/turf/closed/wall/mineral/plastitanium,
/area/ship/storage)
diff --git a/_maps/shuttles/subshuttles/independent_sugarcube.dmm b/_maps/shuttles/subshuttles/independent_sugarcube.dmm
index 11a8de916cd6..0504142f55b3 100644
--- a/_maps/shuttles/subshuttles/independent_sugarcube.dmm
+++ b/_maps/shuttles/subshuttles/independent_sugarcube.dmm
@@ -235,7 +235,7 @@
/obj/effect/decal/cleanable/glass,
/obj/item/shard,
/obj/item/shard,
-/obj/item/kitchen/knife/shiv,
+/obj/item/melee/knife/shiv,
/turf/open/floor/plating,
/area/ship/storage)
"B" = (
diff --git a/_maps/shuttles/subshuttles/inteq_anvil.dmm b/_maps/shuttles/subshuttles/inteq_anvil.dmm
index 4a4c4073ced1..002ddfe6d0d3 100644
--- a/_maps/shuttles/subshuttles/inteq_anvil.dmm
+++ b/_maps/shuttles/subshuttles/inteq_anvil.dmm
@@ -194,7 +194,8 @@
"x" = (
/obj/machinery/porta_turret/ship/weak{
faction = list("playerInteq","turret");
- dir = 1
+ dir = 9;
+ id = "anvil_grid"
},
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/bridge)
@@ -225,10 +226,11 @@
/obj/effect/turf_decal/corner/opaque/yellow,
/obj/structure/chair/comfy/shuttle,
/obj/effect/landmark/ert_shuttle_spawn,
-/obj/machinery/turretid{
- pixel_y = 25
- },
/obj/machinery/light/directional/east,
+/obj/machinery/turretid/ship{
+ pixel_y = 24;
+ id = "anvil_grid"
+ },
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"B" = (
@@ -386,7 +388,9 @@
/area/ship/bridge)
"T" = (
/obj/machinery/porta_turret/ship/weak{
- faction = list("playerInteq","turret")
+ faction = list("playerInteq","turret");
+ dir = 10;
+ id = "anvil_grid"
},
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/bridge)
diff --git a/_maps/shuttles/subshuttles/pgf_nail.dmm b/_maps/shuttles/subshuttles/pgf_nail.dmm
index 02255b90a5c0..6b0c12bc7f53 100644
--- a/_maps/shuttles/subshuttles/pgf_nail.dmm
+++ b/_maps/shuttles/subshuttles/pgf_nail.dmm
@@ -115,6 +115,11 @@
/obj/structure/chair/comfy/shuttle{
dir = 8
},
+/obj/machinery/turretid/ship{
+ pixel_y = -30;
+ pixel_x = -2;
+ id = "nail_grid"
+ },
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/bridge)
"p" = (
@@ -390,9 +395,10 @@
/obj/structure/cable{
icon_state = "0-4"
},
-/obj/machinery/porta_turret/ship/weak{
+/obj/machinery/porta_turret/ship/pgf/light{
dir = 8;
- mode = 1
+ mode = 1;
+ id = "nail_grid"
},
/turf/open/floor/engine/hull/reinforced/interior,
/area/ship/external/dark)
diff --git a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm
index ffc2472b5dec..253a82277fdf 100644
--- a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm
+++ b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm
@@ -549,7 +549,7 @@
dir = 4
},
/obj/item/storage/box/rxglasses/spyglasskit,
-/obj/item/kitchen/knife/letter_opener,
+/obj/item/melee/knife/letter_opener,
/turf/open/floor/plasteel/dark,
/area/ship/crew/office)
"nF" = (
@@ -887,13 +887,6 @@
/obj/effect/landmark/observer_start,
/turf/open/floor/plasteel/white,
/area/ship/hallway/central)
-"tV" = (
-/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 4;
- pixel_x = 8
- },
-/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
"uq" = (
/obj/effect/turf_decal/spline/fancy/opaque/syndiered{
dir = 10
@@ -902,10 +895,11 @@
/area/ship/bridge)
"uR" = (
/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 9
+ dir = 9;
+ id = "kansatsu_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/engineering)
"vk" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
@@ -1135,10 +1129,11 @@
/area/ship/cargo)
"Ah" = (
/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 6
+ dir = 6;
+ id = "kansatsu_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/engineering)
"AM" = (
/obj/effect/turf_decal/trimline/opaque/syndiered/filled/warning,
/obj/effect/turf_decal/trimline/opaque/syndiered/filled/warning{
@@ -1194,10 +1189,11 @@
/area/ship/crew/dorm)
"CR" = (
/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 10
+ dir = 10;
+ id = "kansatsu_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/engineering)
"CU" = (
/obj/machinery/power/smes/shuttle/precharged{
dir = 4
@@ -1313,7 +1309,7 @@
/obj/machinery/porta_turret/ship/syndicate/weak{
dir = 4;
pixel_x = 8;
- pixel_y = 4
+ id = "kansatsu_grid"
},
/turf/closed/wall/mineral/plastitanium,
/area/ship/bridge)
@@ -1417,10 +1413,11 @@
/area/ship/bridge)
"KA" = (
/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 5
+ dir = 5;
+ id = "kansatsu_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/engineering)
"KP" = (
/obj/structure/closet/wall/directional/north{
name = "emergency rum cabinet"
@@ -1457,10 +1454,11 @@
dir = 4;
name = "Captain's Chair"
},
-/obj/machinery/turretid{
- pixel_y = 28
- },
/obj/effect/turf_decal/trimline/opaque/bar,
+/obj/machinery/turretid/ship{
+ pixel_y = 26;
+ id = "kansatsu_grid"
+ },
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
"MH" = (
@@ -1846,7 +1844,7 @@
/obj/item/implanter/stealth,
/obj/item/modular_computer/laptop/preset/civilian,
/obj/item/clothing/mask/chameleon,
-/obj/item/kitchen/knife/combat,
+/obj/item/melee/knife/combat,
/obj/item/reagent_containers/pill/cyanide,
/obj/item/reagent_containers/pill/cyanide,
/obj/item/reagent_containers/pill/cyanide,
@@ -1950,10 +1948,10 @@
layer = 2.91
},
/obj/effect/turf_decal/box,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
-/obj/item/kitchen/knife/combat/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
+/obj/item/melee/knife/survival,
/obj/item/pickaxe,
/obj/item/pickaxe,
/obj/item/pickaxe,
@@ -2302,7 +2300,7 @@ YQ
YQ
YQ
YQ
-tV
+GV
bO
bO
dA
diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm
index 3649eed505b2..66133d79d47a 100644
--- a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm
+++ b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm
@@ -333,6 +333,13 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
/turf/open/floor/mineral/plastitanium/red,
/area/ship/security/armory)
+"ge" = (
+/obj/machinery/porta_turret/ship/syndicate{
+ dir = 2;
+ id = "hyena_grid"
+ },
+/turf/closed/wall/mineral/plastitanium/nodiagonal,
+/area/ship/crew/dorm)
"gg" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt/dust,
@@ -1619,15 +1626,19 @@
/turf/open/floor/plasteel/tech,
/area/ship/hallway/central)
"BG" = (
-/obj/machinery/porta_turret/ship/ballistic,
+/obj/machinery/porta_turret/ship/syndicate{
+ dir = 8;
+ id = "hyena_grid"
+ },
/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/ship/bridge)
+/area/ship/storage)
"BR" = (
/obj/machinery/porta_turret/ship/syndicate{
- dir = 1
+ dir = 1;
+ id = "hyena_grid"
},
/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/ship/bridge)
+/area/ship/maintenance/port)
"BZ" = (
/obj/structure/window/reinforced/tinted/frosted,
/obj/machinery/suit_storage_unit/inherit{
@@ -2291,9 +2302,12 @@
/turf/open/floor/carpet/red_gold,
/area/ship/bridge)
"NA" = (
-/obj/machinery/porta_turret/ship/syndicate,
+/obj/machinery/porta_turret/ship/syndicate{
+ dir = 2;
+ id = "hyena_grid"
+ },
/turf/closed/wall/mineral/plastitanium/nodiagonal,
-/area/ship/bridge)
+/area/ship/maintenance/starboard)
"NF" = (
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/cargo)
@@ -2459,10 +2473,11 @@
/area/ship/cargo)
"Qz" = (
/obj/machinery/porta_turret/ship/syndicate{
- dir = 6
+ dir = 6;
+ id = "hyena_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/maintenance/fore)
"QG" = (
/obj/structure/closet/secure_closet{
anchored = 1;
@@ -2861,8 +2876,9 @@
/turf/open/floor/carpet/red_gold,
/area/ship/bridge)
"Up" = (
-/obj/machinery/porta_turret/ship/syndicate/heavy{
- dir = 4
+/obj/machinery/porta_turret/ship/syndicate{
+ dir = 4;
+ id = "hyena_grid"
},
/turf/closed/wall/mineral/plastitanium,
/area/ship/bridge)
@@ -2878,10 +2894,11 @@
/area/ship/crew)
"UN" = (
/obj/machinery/porta_turret/ship/syndicate{
- dir = 1
+ dir = 1;
+ id = "hyena_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/hallway/central)
"UX" = (
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/crew)
@@ -3581,7 +3598,7 @@ UX
GV
GV
GV
-NA
+ge
nn
Zb
"}
diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm
index d218dc5581b1..2b4cfd484e98 100644
--- a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm
+++ b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm
@@ -122,6 +122,9 @@
},
/turf/open/floor/plasteel/tech/grid,
/area/ship/cargo)
+"bC" = (
+/turf/template_noop,
+/area/ship/cargo)
"bM" = (
/obj/effect/turf_decal/industrial/warning{
dir = 8
@@ -312,10 +315,11 @@
/area/ship/hallway/central)
"ea" = (
/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 6
+ dir = 6;
+ id = "komodo_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/maintenance/starboard)
"en" = (
/obj/structure/railing/corner{
dir = 8
@@ -1126,10 +1130,11 @@
/area/ship/crew/canteen)
"kG" = (
/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 1
+ dir = 1;
+ id = "komodo_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/hallway/central)
"kI" = (
/turf/open/floor/engine,
/area/ship/bridge)
@@ -1315,6 +1320,13 @@
/obj/effect/decal/cleanable/cobweb/cobweb2,
/turf/open/floor/plasteel/tech,
/area/ship/engineering)
+"mq" = (
+/obj/machinery/porta_turret/ship/syndicate/weak{
+ dir = 1;
+ id = "komodo_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/cargo)
"my" = (
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
@@ -1681,10 +1693,11 @@
/area/ship/engineering)
"pN" = (
/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 9
+ dir = 9;
+ id = "komodo_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/engineering)
"qf" = (
/obj/structure/railing{
dir = 8
@@ -1892,10 +1905,11 @@
/area/ship/bridge)
"rS" = (
/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 5
+ dir = 5;
+ id = "komodo_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/maintenance/port)
"rX" = (
/obj/effect/turf_decal/industrial/warning{
dir = 1
@@ -2914,9 +2928,12 @@
/turf/open/floor/plasteel/tech,
/area/ship/bridge)
"Bx" = (
-/obj/machinery/porta_turret/ship/syndicate/weak,
+/obj/machinery/porta_turret/ship/syndicate/weak{
+ dir = 10;
+ id = "komodo_grid"
+ },
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/crew/dorm)
"BK" = (
/obj/effect/turf_decal/box,
/obj/machinery/shower{
@@ -2968,6 +2985,13 @@
},
/turf/open/floor/mineral/plastitanium/red,
/area/ship/engineering)
+"BU" = (
+/obj/machinery/porta_turret/ship/syndicate/weak{
+ dir = 2;
+ id = "komodo_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/security/armory)
"BY" = (
/obj/effect/turf_decal/industrial/warning/corner{
dir = 1
@@ -3113,6 +3137,13 @@
"Ep" = (
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/ship/cargo)
+"Es" = (
+/obj/machinery/porta_turret/ship/syndicate/weak{
+ dir = 9;
+ id = "komodo_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/cargo)
"EB" = (
/obj/structure/closet/crate{
name = "food crate"
@@ -3442,6 +3473,13 @@
/obj/structure/catwalk/over,
/turf/open/floor/plating,
/area/ship/engineering)
+"Hx" = (
+/obj/machinery/porta_turret/ship/syndicate/weak{
+ dir = 2;
+ id = "komodo_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/hallway/central)
"HF" = (
/obj/effect/turf_decal/industrial/warning{
dir = 4
@@ -3754,6 +3792,13 @@
},
/turf/open/floor/mineral/plastitanium/red,
/area/ship/hallway/central)
+"KJ" = (
+/obj/machinery/porta_turret/ship/syndicate/weak{
+ dir = 10;
+ id = "komodo_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/maintenance/starboard)
"KK" = (
/obj/structure/closet/wall/orange/directional/south{
name = "Engineering locker"
@@ -4142,8 +4187,8 @@
/obj/structure/table/reinforced,
/obj/effect/decal/cleanable/dirt/dust,
/obj/machinery/airalarm/directional/north,
-/obj/machinery/turretid{
- pixel_y = 2
+/obj/machinery/turretid/ship{
+ id = "komodo_grid"
},
/turf/open/floor/plasteel/dark,
/area/ship/bridge)
@@ -4181,10 +4226,11 @@
/area/ship/hallway/central)
"OP" = (
/obj/machinery/porta_turret/ship/syndicate/weak{
- dir = 10
+ dir = 10;
+ id = "komodo_grid"
},
/turf/closed/wall/mineral/plastitanium,
-/area/ship/bridge)
+/area/ship/engineering)
"OQ" = (
/turf/closed/wall/mineral/plastitanium,
/area/ship/maintenance/starboard)
@@ -4560,6 +4606,13 @@
},
/turf/open/floor/plasteel/tech,
/area/ship/bridge)
+"RX" = (
+/obj/machinery/porta_turret/ship/syndicate/weak{
+ dir = 9;
+ id = "komodo_grid"
+ },
+/turf/closed/wall/mineral/plastitanium,
+/area/ship/maintenance/port)
"RZ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
@@ -5735,7 +5788,7 @@ CM
"}
(11,1,1) = {"
CM
-CM
+bC
Ep
uJ
es
@@ -5755,7 +5808,7 @@ Bx
"}
(12,1,1) = {"
CM
-kG
+Es
Ep
jA
jA
@@ -5895,7 +5948,7 @@ tf
"}
(19,1,1) = {"
CM
-kG
+mq
Ep
Ep
We
@@ -5911,7 +5964,7 @@ gE
wT
Im
gE
-Bx
+BU
"}
(20,1,1) = {"
CM
@@ -5970,7 +6023,7 @@ Dd
Dd
Dd
Dd
-Bx
+Hx
CM
"}
(23,1,1) = {"
@@ -6135,7 +6188,7 @@ CM
"}
(31,1,1) = {"
CM
-pN
+RX
gN
nU
iL
@@ -6151,7 +6204,7 @@ Dd
JJ
Hc
OQ
-OP
+KJ
"}
(32,1,1) = {"
CM
diff --git a/_maps/shuttles/syndicate/syndicate_panacea.dmm b/_maps/shuttles/syndicate/syndicate_panacea.dmm
index 24334160f64b..71526c69198f 100644
--- a/_maps/shuttles/syndicate/syndicate_panacea.dmm
+++ b/_maps/shuttles/syndicate/syndicate_panacea.dmm
@@ -7344,7 +7344,7 @@
/obj/item/cutting_board{
pixel_y = 3
},
-/obj/item/kitchen/knife/butcher{
+/obj/item/melee/knife/butcher{
pixel_y = 4;
pixel_x = 4
},
diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm
index bca4d457916a..ca7bd7705efd 100644
--- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm
+++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm
@@ -120,7 +120,7 @@
/area/ship/security/armory)
"aG" = (
/obj/structure/closet/secure_closet/wall/directional/east,
-/obj/item/kitchen/knife,
+/obj/item/melee/knife/kitchen,
/obj/item/cutting_board,
/obj/item/clothing/under/suit/waiter/syndicate,
/obj/item/clothing/suit/hazardvest/donk,
@@ -263,11 +263,6 @@
"bQ" = (
/obj/effect/turf_decal/corner/opaque/syndiered/bordercorner,
/obj/machinery/light/directional/north,
-/obj/machinery/turretid{
- pixel_y = 32;
- req_access = null;
- req_access_txt = "150"
- },
/obj/effect/turf_decal/spline/fancy/opaque/black/corner,
/obj/effect/turf_decal/corner/opaque/syndiered/bordercorner{
dir = 4
@@ -1559,6 +1554,15 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel/tech/grid,
/area/ship/bridge)
+"iX" = (
+/obj/machinery/porta_turret/ship/syndicate/heavy{
+ dir = 10;
+ id = "twink_grid"
+ },
+/turf/closed/wall/r_wall/syndicate/nodiagonal{
+ rad_insulation = 0
+ },
+/area/ship/engineering/atmospherics)
"iZ" = (
/obj/effect/turf_decal/trimline/opaque/syndiered/filled/line{
dir = 1
@@ -1841,7 +1845,7 @@
/obj/item/clothing/gloves/color/black,
/obj/machinery/light/directional/west,
/obj/item/flashlight/seclite,
-/obj/item/kitchen/knife/combat,
+/obj/item/melee/knife/combat,
/turf/open/floor/mineral/plastitanium,
/area/ship/security)
"ky" = (
@@ -2113,7 +2117,7 @@
/obj/item/clothing/head/soft/black,
/obj/item/clothing/glasses/sunglasses,
/obj/item/flashlight/seclite,
-/obj/item/kitchen/knife/combat,
+/obj/item/melee/knife/combat,
/turf/open/floor/mineral/plastitanium,
/area/ship/security)
"ma" = (
@@ -2178,12 +2182,13 @@
/area/ship/engineering/engine)
"ms" = (
/obj/machinery/porta_turret/ship/syndicate/heavy{
- dir = 9
+ dir = 9;
+ id = "twink_grid"
},
/turf/closed/wall/r_wall/syndicate/nodiagonal{
rad_insulation = 0
},
-/area/ship/bridge)
+/area/ship/engineering/atmospherics)
"mt" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output{
dir = 8
@@ -3321,7 +3326,7 @@
/obj/machinery/light/directional/east,
/obj/item/clothing/head/beret/black,
/obj/item/flashlight/seclite,
-/obj/item/kitchen/knife/combat,
+/obj/item/melee/knife/combat,
/turf/open/floor/mineral/plastitanium,
/area/ship/security)
"sW" = (
@@ -3631,12 +3636,13 @@
/area/ship/engineering/atmospherics)
"vd" = (
/obj/machinery/porta_turret/ship/syndicate/heavy{
- dir = 5
+ dir = 5;
+ id = "twink_grid"
},
/turf/closed/wall/r_wall/syndicate/nodiagonal{
rad_insulation = 0
},
-/area/ship/bridge)
+/area/ship/hallway/port)
"vl" = (
/obj/machinery/sleeper/syndie{
dir = 8
@@ -6691,12 +6697,13 @@
/area/ship/engineering/engine)
"Mr" = (
/obj/machinery/porta_turret/ship/syndicate/heavy{
- dir = 6
+ dir = 6;
+ id = "twink_grid"
},
/turf/closed/wall/r_wall/syndicate/nodiagonal{
rad_insulation = 0
},
-/area/ship/bridge)
+/area/ship/hallway/starboard)
"Mw" = (
/obj/effect/turf_decal/industrial/caution/red,
/obj/effect/decal/cleanable/shreds{
@@ -7131,7 +7138,7 @@
/obj/item/clothing/gloves/color/black,
/obj/machinery/light/directional/east,
/obj/item/flashlight/seclite,
-/obj/item/kitchen/knife/combat,
+/obj/item/melee/knife/combat,
/turf/open/floor/mineral/plastitanium,
/area/ship/security)
"Pn" = (
@@ -7954,6 +7961,15 @@
/obj/machinery/vending/tool,
/turf/open/floor/plasteel/dark,
/area/ship/engineering/atmospherics)
+"TH" = (
+/obj/machinery/porta_turret/ship/syndicate/heavy{
+ dir = 9;
+ id = "twink_grid"
+ },
+/turf/closed/wall/r_wall/syndicate/nodiagonal{
+ rad_insulation = 0
+ },
+/area/ship/crew/canteen)
"TI" = (
/obj/effect/turf_decal/siding/wood{
dir = 4
@@ -8390,12 +8406,13 @@
/area/ship/crew/cryo)
"We" = (
/obj/machinery/porta_turret/ship/syndicate/heavy{
- dir = 10
+ dir = 10;
+ id = "twink_grid"
},
/turf/closed/wall/r_wall/syndicate/nodiagonal{
rad_insulation = 0
},
-/area/ship/bridge)
+/area/ship/security)
"Wj" = (
/obj/effect/turf_decal/corner/opaque/syndiered{
dir = 5
@@ -8568,6 +8585,13 @@
dir = 8
},
/obj/machinery/fax/syndicate,
+/obj/machinery/turretid/ship{
+ pixel_y = 24;
+ pixel_x = -5;
+ id = "twink_grid";
+ req_access = null;
+ req_access_txt = "150"
+ },
/turf/open/floor/mineral/plastitanium,
/area/ship/bridge)
"Xf" = (
@@ -9118,7 +9142,7 @@ FR
FR
LX
ae
-We
+iX
mp
mp
mp
@@ -9617,7 +9641,7 @@ mp
mp
"}
(17,1,1) = {"
-ms
+TH
xj
xj
xj
diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm
index 9c2571e6f5a5..c12d8dd837da 100644
--- a/_maps/templates/shelter_2.dmm
+++ b/_maps/templates/shelter_2.dmm
@@ -39,7 +39,7 @@
/area/survivalpod)
"i" = (
/obj/structure/toilet/secret{
- secret_type = /obj/item/kitchen/knife/combat/survival
+ secret_type = /obj/item/melee/knife/survival
},
/turf/open/floor/pod,
/area/survivalpod)
diff --git a/check_regex.yaml b/check_regex.yaml
index 3b5e13a650e5..eadd642f0676 100644
--- a/check_regex.yaml
+++ b/check_regex.yaml
@@ -29,7 +29,7 @@ standards:
- exactly: [1, "/area text paths", '"/area']
- exactly: [17, "/datum text paths", '"/datum']
- exactly: [4, "/mob text paths", '"/mob']
- - exactly: [43, "/obj text paths", '"/obj']
+ - exactly: [42, "/obj text paths", '"/obj']
- exactly: [0, "/turf text paths", '"/turf']
- exactly: [117, "text2path uses", "text2path"]
diff --git a/code/__DEFINES/dcs/signals/signals.dm b/code/__DEFINES/dcs/signals/signals.dm
index 38f7d8692853..f3295b737904 100644
--- a/code/__DEFINES/dcs/signals/signals.dm
+++ b/code/__DEFINES/dcs/signals/signals.dm
@@ -735,3 +735,9 @@
///sent when the access on an id is changed/updated, ensures wallets get updated once ids generate there access
#define COSMIG_ACCESS_UPDATED "acces_updated"
+
+// Point of interest signals
+/// Sent from base of /datum/controller/subsystem/points_of_interest/proc/on_poi_element_added : (atom/new_poi)
+#define COMSIG_ADDED_POINT_OF_INTEREST "added_point_of_interest"
+/// Sent from base of /datum/controller/subsystem/points_of_interest/proc/on_poi_element_removed : (atom/old_poi)
+#define COMSIG_REMOVED_POINT_OF_INTEREST "removed_point_of_interest"
diff --git a/code/__DEFINES/dcs/signals/signals_ship.dm b/code/__DEFINES/dcs/signals/signals_ship.dm
new file mode 100644
index 000000000000..c18a26c5089d
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_ship.dm
@@ -0,0 +1,2 @@
+///Sent when a shuttle finishes loading to allow for any machinery that requires a late connection to fire that connection
+#define COMSIG_SHIP_DONE_CONNECTING "late_connect"
diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm
index 6cad7078b6ec..5b99546fed97 100644
--- a/code/__DEFINES/inventory.dm
+++ b/code/__DEFINES/inventory.dm
@@ -150,7 +150,7 @@ GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list(
/obj/item/gun/energy,
/obj/item/gun/grenadelauncher,
/obj/item/flamethrower,
- /obj/item/kitchen/knife/combat,
+ /obj/item/melee/knife/combat,
/obj/item/melee/baton,
/obj/item/melee/classic_baton/telescopic,
/obj/item/reagent_containers/spray/pepper,
diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index 435b83e29797..b231b4e944c9 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -87,6 +87,42 @@
};\
} while(FALSE)
+
+/**
+ * Custom binary search sorted insert utilising comparison procs instead of vars.
+ * INPUT: Object to be inserted
+ * LIST: List to insert object into
+ * TYPECONT: The typepath of the contents of the list
+ * COMPARE: The object to compare against, usualy the same as INPUT
+ * COMPARISON: The plaintext name of a proc on INPUT that takes a single argument to accept a single element from LIST and returns a positive, negative or zero number to perform a comparison.
+ * COMPTYPE: How should the values be compared? Either COMPARE_KEY or COMPARE_VALUE.
+ */
+#define BINARY_INSERT_PROC_COMPARE(INPUT, LIST, TYPECONT, COMPARE, COMPARISON, COMPTYPE) \
+ do {\
+ var/list/__BIN_LIST = LIST;\
+ var/__BIN_CTTL = length(__BIN_LIST);\
+ if(!__BIN_CTTL) {\
+ __BIN_LIST += INPUT;\
+ } else {\
+ var/__BIN_LEFT = 1;\
+ var/__BIN_RIGHT = __BIN_CTTL;\
+ var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
+ var ##TYPECONT/__BIN_ITEM;\
+ while(__BIN_LEFT < __BIN_RIGHT) {\
+ __BIN_ITEM = COMPTYPE;\
+ if(__BIN_ITEM.##COMPARISON(COMPARE) <= 0) {\
+ __BIN_LEFT = __BIN_MID + 1;\
+ } else {\
+ __BIN_RIGHT = __BIN_MID;\
+ };\
+ __BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\
+ };\
+ __BIN_ITEM = COMPTYPE;\
+ __BIN_MID = __BIN_ITEM.##COMPARISON(COMPARE) > 0 ? __BIN_MID : __BIN_MID + 1;\
+ __BIN_LIST.Insert(__BIN_MID, INPUT);\
+ };\
+ } while(FALSE)
+
//Returns a list in plain english as a string
/proc/english_list(list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" )
var/total = length(input)
diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm
index 97740a79537e..01fd964120ea 100644
--- a/code/__HELPERS/roundend.dm
+++ b/code/__HELPERS/roundend.dm
@@ -116,7 +116,7 @@
SSblackbox.record_feedback("associative", "antagonists", 1, antag_info)
/datum/controller/subsystem/ticker/proc/record_nuke_disk_location()
- var/obj/item/disk/nuclear/N = locate() in GLOB.poi_list
+ var/obj/item/disk/nuclear/N = locate() in SSpoints_of_interest.other_points_of_interest
if(N)
var/list/data = list()
var/turf/T = get_turf(N)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 36764c6bae9f..d831296dbb62 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -294,65 +294,6 @@ Turf and target are separate in case you want to teleport some distance from a t
/proc/ionnum()
return "[pick("!","@","#","$","%","^","&")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")]"
-//Returns a list of all items of interest with their name
-/proc/getpois(mobs_only = FALSE, skip_mindless = FALSE, specify_dead_role = TRUE)
- var/list/mobs = sortmobs()
- var/list/namecounts = list()
- var/list/pois = list()
- for(var/mob/M in mobs)
- if(skip_mindless && (!M.mind && !M.ckey))
- if(!isbot(M) && !iscameramob(M) && !ismegafauna(M))
- continue
- if(M.client && M.client.holder && M.client.holder.fakekey) //stealthmins
- continue
- var/name = avoid_assoc_duplicate_keys(M.name, namecounts) + M.get_realname_string()
-
- if(M.stat == DEAD && specify_dead_role)
- if(isobserver(M))
- name += " \[ghost\]"
- else
- name += " \[dead\]"
- pois[name] = M
-
- if(!mobs_only)
- for(var/atom/A in GLOB.poi_list)
- if(!A || !A.loc)
- continue
- pois[avoid_assoc_duplicate_keys(A.name, namecounts)] = A
-
- return pois
-//Orders mobs by type then by name
-/proc/sortmobs()
- var/list/moblist = list()
- var/list/sortmob = sortNames(GLOB.mob_list)
- for(var/mob/living/silicon/ai/M in sortmob)
- moblist.Add(M)
- for(var/mob/camera/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/silicon/pai/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/silicon/robot/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/carbon/human/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/brain/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/carbon/alien/M in sortmob)
- moblist.Add(M)
- for(var/mob/dead/observer/M in sortmob)
- moblist.Add(M)
- for(var/mob/dead/new_player/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/carbon/monkey/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/simple_animal/slime/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/simple_animal/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/carbon/true_devil/M in sortmob)
- moblist.Add(M)
- return moblist
-
// Format a power value in W, kW, MW, or GW.
/proc/DisplayPower(powerused)
if(powerused < 1000) //Less than a kW
@@ -384,7 +325,7 @@ Turf and target are separate in case you want to teleport some distance from a t
/proc/get_mob_by_ckey(key)
if(!key)
return
- var/list/mobs = sortmobs()
+ var/list/mobs = SSpoints_of_interest.get_mob_pois()
for(var/mob/M in mobs)
if(M.ckey == key)
return M
diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm
index 532ed3f888d7..9c9f0b85e48d 100644
--- a/code/_globalvars/lists/maintenance_loot.dm
+++ b/code/_globalvars/lists/maintenance_loot.dm
@@ -164,7 +164,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
/obj/item/roller = 1,
/obj/item/restraints/legcuffs/bola = 1,
/obj/item/restraints/handcuffs/cable = 1,
- /obj/item/spear = 1,
+ /obj/item/melee/spear = 1,
/obj/item/shield/riot/buckler = 1,
/obj/item/grenade/iedcasing/spawned = 1,
/obj/item/melee/baton/cattleprod = 1,
@@ -253,7 +253,7 @@ GLOBAL_LIST_INIT(oddity_loot, list(//oddity: strange or crazy items
/obj/item/clothing/shoes/jackboots/fast = 1,
/obj/item/clothing/suit/armor/reactive/table = 1,
/obj/item/storage/box/donkpockets/donkpocketgondola = 1,
- /obj/item/melee/greykingsword = 1 //WS - Meth Sword
+ /obj/item/melee/sword/greyking = 1 //WS - Meth Sword
))
//Maintenance loot spawner pools
diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm
index 7ee53ec1f37b..6d08f1d1bceb 100644
--- a/code/_globalvars/lists/objects.dm
+++ b/code/_globalvars/lists/objects.dm
@@ -46,8 +46,6 @@ GLOBAL_LIST_EMPTY(apcs_list)
GLOBAL_LIST_EMPTY(tracked_implants)
/// List of implants the prisoner console can track and send inject commands too
GLOBAL_LIST_EMPTY(tracked_chem_implants)
-/// List of points of interest for observe/follow
-GLOBAL_LIST_EMPTY(poi_list)
/// List of all pinpointers. Used to change stuff they are pointing to all at once.
GLOBAL_LIST_EMPTY(pinpointer_list)
/// List of all zombie_infection organs, for any mass "animation"
diff --git a/code/controllers/subsystem/points_of_interest.dm b/code/controllers/subsystem/points_of_interest.dm
new file mode 100644
index 000000000000..6de327bc8666
--- /dev/null
+++ b/code/controllers/subsystem/points_of_interest.dm
@@ -0,0 +1,227 @@
+/// Subsystem for managing all POIs.
+SUBSYSTEM_DEF(points_of_interest)
+ name = "Points of Interest"
+
+ flags = SS_NO_FIRE | SS_NO_INIT
+
+ /// List of mob POIs. This list is automatically sorted.
+ var/list/datum/point_of_interest/mob_poi/mob_points_of_interest = list()
+ /// List of non-mob POIs. This list is automatically sorted.
+ var/list/datum/point_of_interest/other_points_of_interest = list()
+ /// List of all value:POI datums by their key:target refs.
+ var/list/datum/point_of_interest/points_of_interest_by_target_ref = list()
+
+/**
+ * Turns new_poi into a new point of interest by adding the /datum/element/point_of_interest element to it.
+ */
+/datum/controller/subsystem/points_of_interest/proc/make_point_of_interest(atom/new_poi)
+ new_poi.AddElement(/datum/element/point_of_interest)
+
+/**
+ * Stops old_poi from being a point of interest by removing the /datum/element/point_of_interest element from it.
+ */
+/datum/controller/subsystem/points_of_interest/proc/remove_point_of_interest(atom/old_poi)
+ old_poi.RemoveElement(/datum/element/point_of_interest)
+
+/**
+ * Called by [/datum/element/point_of_interest] when it gets removed from old_poi.
+ */
+/datum/controller/subsystem/points_of_interest/proc/on_poi_element_added(atom/new_poi)
+ var/datum/point_of_interest/new_poi_datum
+ if(ismob(new_poi))
+ new_poi_datum = new /datum/point_of_interest/mob_poi(new_poi)
+ BINARY_INSERT_PROC_COMPARE(new_poi_datum, mob_points_of_interest, /datum/point_of_interest/mob_poi, new_poi_datum, compare_to, COMPARE_KEY)
+ points_of_interest_by_target_ref[REF(new_poi)] = new_poi_datum
+ else
+ new_poi_datum = new /datum/point_of_interest(new_poi)
+ BINARY_INSERT_PROC_COMPARE(new_poi_datum, other_points_of_interest, /datum/point_of_interest, new_poi_datum, compare_to, COMPARE_KEY)
+ points_of_interest_by_target_ref[REF(new_poi)] = new_poi_datum
+
+
+ SEND_SIGNAL(src, COMSIG_ADDED_POINT_OF_INTEREST, new_poi)
+
+/**
+ * Called by [/datum/element/point_of_interest] when it gets removed from old_poi.
+ */
+/datum/controller/subsystem/points_of_interest/proc/on_poi_element_removed(atom/old_poi)
+ var/poi_ref = REF(old_poi)
+ var/datum/point_of_interest/poi_to_remove = points_of_interest_by_target_ref[poi_ref]
+
+ if(!poi_to_remove)
+ return
+
+ if(ismob(old_poi))
+ mob_points_of_interest -= poi_to_remove
+ else
+ other_points_of_interest -= poi_to_remove
+
+ points_of_interest_by_target_ref -= poi_ref
+
+ poi_to_remove.target = null
+
+ SEND_SIGNAL(src, COMSIG_REMOVED_POINT_OF_INTEREST, old_poi)
+
+/**
+ * If there is a valid POI for a given reference, it returns that POI's associated atom. Otherwise, it returns null.
+ */
+/datum/controller/subsystem/points_of_interest/proc/get_poi_atom_by_ref(reference)
+ return points_of_interest_by_target_ref[reference]?.target
+
+/**
+ * Returns a list of mob POIs with names as keys and mobs as values.
+ *
+ * If multiple POIs have the same name, then avoid_assoc_duplicate_keys is used alongside used_name_list to
+ * tag them as Mob Name (1), Mob Name (2), Mob Name (3) etc.
+ *
+ * Arguments:
+ * * poi_validation_override - [OPTIONAL] Callback to a proc that takes a single argument for the POI and returns TRUE if this POI should be included. Overrides standard POI validation.
+ * * append_dead_role - [OPTIONAL] If TRUE, adds a ghost tag to the end of observer names and a dead tag to the end of any other mob which is not alive.
+ */
+/datum/controller/subsystem/points_of_interest/proc/get_mob_pois(datum/callback/poi_validation_override = null, append_dead_role = TRUE)
+ var/list/pois = list()
+ var/list/used_name_list = list()
+
+ for(var/datum/point_of_interest/mob_poi/mob_poi as anything in mob_points_of_interest)
+ if(poi_validation_override)
+ if(!poi_validation_override.Invoke(mob_poi))
+ continue
+ else if(!mob_poi.validate())
+ continue
+
+ var/mob/target_mob = mob_poi.target
+ var/name = avoid_assoc_duplicate_keys(target_mob.name, used_name_list) + target_mob.get_realname_string()
+
+ // Add the ghost/dead tag to the end of dead mob POIs.
+ if(append_dead_role && target_mob.stat == DEAD)
+ if(isobserver(target_mob))
+ name += " \[ghost\]"
+ else
+ name += " \[dead\]"
+
+ pois[name] = target_mob
+
+ return pois
+
+/**
+ * Returns a list of non-mob POIs with names as keys and atoms as values.
+ *
+ * If multiple POIs have the same name, then avoid_assoc_duplicate_keys is used alongside used_name_list to
+ * tag them as Object Name (1), Object Name (2), Object Name (3) etc.
+ *
+ * Arguments:
+ * * poi_validation_override - [OPTIONAL] Callback to a proc that takes a single argument for the POI and returns TRUE if this POI should be included. Overrides standard POI validation.
+ */
+/datum/controller/subsystem/points_of_interest/proc/get_other_pois(datum/callback/poi_validation_override = null)
+ var/list/pois = list()
+ var/list/used_name_list = list()
+
+ for(var/datum/point_of_interest/other_poi as anything in other_points_of_interest)
+ if(poi_validation_override)
+ if(!poi_validation_override.Invoke(other_poi))
+ continue
+ else if(!other_poi.validate())
+ continue
+
+ var/atom/target_poi = other_poi.target
+
+ pois[avoid_assoc_duplicate_keys(target_poi.name, used_name_list)] = target_poi
+
+ return pois
+
+/// Returns TRUE if potential_poi has an associated poi_datum that validates.
+/datum/controller/subsystem/points_of_interest/proc/is_valid_poi(atom/potential_poi, datum/callback/poi_validation_override = null)
+ var/datum/point_of_interest/poi_datum = points_of_interest_by_target_ref[REF(potential_poi)]
+
+ if(!poi_datum)
+ return FALSE
+
+ if(poi_validation_override)
+ return poi_validation_override.Invoke(poi_datum)
+
+ return poi_datum.validate()
+
+/// Simple helper datum for points of interest.
+/datum/point_of_interest
+ /// The specific point of interest this datum references. This won't hard del as the POI element will be removed from the target when it qdels, which will clear this reference.
+ var/atom/target
+ /// The type of POI this datum references.
+ var/poi_type = /atom
+
+/datum/point_of_interest/New(poi_target)
+ if(!istype(poi_target, poi_type))
+ CRASH("Incorrect target type provided to /datum/point_of_interest/New: Expected \[[poi_type]\]")
+
+ target = poi_target
+
+/// Validates the POI. Returns TRUE if the POI has valid state, returns FALSE if the POI has invalid state.
+/datum/point_of_interest/proc/validate()
+ // In nullspace, invalid as a POI.
+ if(!target.loc)
+ return FALSE
+
+ return TRUE
+
+/// Comparison proc used to sort POIs. Override to implement logic used doing binary sort insertions.
+/datum/point_of_interest/proc/compare_to(datum/point_of_interest/rhs)
+ return cmp_name_asc(target, rhs.target)
+
+/datum/point_of_interest/mob_poi
+ poi_type = /mob
+
+/// Validation for mobs is expanded to invalidate stealthmins and /mob/dead/new_player as POIs.
+/datum/point_of_interest/mob_poi/validate()
+ . = ..()
+
+ if(!.)
+ return
+
+ var/mob/poi_mob = target
+
+ // Stealthmin, invalid as a POI.
+ if(poi_mob.client?.holder?.fakekey)
+ return FALSE
+
+ /*
+ // POI is a /mob/dead/new_player, players in the lobby are invalid as POIs.
+ if(isnewplayer(poi_mob))
+ return FALSE
+ */
+
+ return TRUE
+
+/// Mob POIs are sorted by a simple priority list depending on their type. When their type priority is identical, they're sub-sorted by name.
+/datum/point_of_interest/mob_poi/compare_to(datum/point_of_interest/mob_poi/rhs)
+ var/sort_difference = get_type_sort_priority() - rhs.get_type_sort_priority()
+
+ // If they're equal in priority, call parent to sort by name.
+ if(sort_difference == 0)
+ return ..()
+ // Else sort by priority.
+ else
+ return sort_difference
+
+/// Priority list broadly stolen from /proc/sortmobs(). Lower numbers are higher priorities when sorted and appear closer to the top or start of lists.
+/datum/point_of_interest/mob_poi/proc/get_type_sort_priority()
+ if(isAI(target))
+ return 0
+ if(iscameramob(target))
+ return 1
+ if(ispAI(target))
+ return 2
+ if(iscyborg(target))
+ return 3
+ if(ishuman(target))
+ return 4
+ if(isbrain(target))
+ return 5
+ if(isalien(target))
+ return 6
+ if(isobserver(target))
+ return 7
+ if(isnewplayer(target))
+ return 8
+ if(isslime(target))
+ return 9
+ if(isanimal(target))
+ return 10
+ return 11
diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm
index c8f3756c27cf..149df9bc9643 100644
--- a/code/controllers/subsystem/research.dm
+++ b/code/controllers/subsystem/research.dm
@@ -23,7 +23,6 @@ SUBSYSTEM_DEF(research)
var/list/techweb_categories = list() //category name = list(node.id = TRUE)
var/list/techweb_boost_items = list() //associative double-layer path = list(id = list(point_type = point_discount))
var/list/techweb_nodes_hidden = list() //Node ids that should be hidden by default.
- var/list/techweb_nodes_experimental = list() //Node ids that are exclusive to the BEPIS.
var/list/techweb_point_items = list(
//path = list(point type = value)
/obj/item/assembly/signaler/anomaly = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
@@ -217,8 +216,6 @@ SUBSYSTEM_DEF(research)
D.unlocked_by += node.id
if(node.hidden)
techweb_nodes_hidden[node.id] = TRUE
- if(node.experimental)
- techweb_nodes_experimental[node.id] = TRUE
CHECK_TICK
generate_techweb_unlock_linking()
diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm
index 25ae750eb0d3..333dee323e87 100644
--- a/code/controllers/subsystem/traumas.dm
+++ b/code/controllers/subsystem/traumas.dm
@@ -75,7 +75,7 @@ SUBSYSTEM_DEF(traumas)
"greytide" = typecacheof(list(
/obj/item/clothing/under/color/grey, /obj/item/melee/baton/cattleprod,
- /obj/item/spear, /obj/item/clothing/mask/gas)),
+ /obj/item/melee/spear, /obj/item/clothing/mask/gas)),
"lizards" = typecacheof(list(
/obj/item/toy/plush/lizardplushie, /obj/item/organ/tail/lizard,
@@ -125,14 +125,13 @@ SUBSYSTEM_DEF(traumas)
"the supernatural" = typecacheof(list(
/obj/structure/destructible/cult, /obj/item/tome,
- /obj/item/melee/cultblade, /obj/item/cult_bastard,
/obj/item/restraints/legcuffs/bola/cult, /obj/item/clothing/suit/space/hardsuit/cult,
/obj/item/clothing/suit/hooded/cultrobes, /obj/item/clothing/head/hooded/cult_hoodie, /obj/effect/rune,
/obj/machinery/door/airlock/cult, /obj/singularity/narsie,
/obj/item/soulstone,
/obj/item/clothing/suit/wizrobe, /obj/item/clothing/head/wizard, /obj/item/spellbook, /obj/item/staff,
/obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/wizard,
- /obj/item/nullrod, /obj/item/clothing/under/rank/civilian/chaplain)),
+ /obj/item/clothing/under/rank/civilian/chaplain)),
"aliens" = typecacheof(list(
/obj/item/clothing/mask/facehugger_item, /obj/item/organ/body_egg/alien_embryo,
@@ -151,13 +150,13 @@ SUBSYSTEM_DEF(traumas)
/obj/item/clothing/suit/toggle/owlwings, /obj/item/clothing/under/costume/owl, /obj/item/clothing/mask/gas/owl_mask)),
"anime" = typecacheof(list(
- /obj/item/clothing/under/costume/schoolgirl, /obj/item/katana, /obj/item/reagent_containers/food/snacks/sashimi,
+ /obj/item/clothing/under/costume/schoolgirl, /obj/item/reagent_containers/food/snacks/sashimi,
/obj/item/reagent_containers/food/snacks/chawanmushi,
/obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star,
/obj/item/clothing/suit/space/space_ninja,
/obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja,
- /obj/item/vibro_weapon, /obj/item/nullrod/scythe/vibro, /obj/item/energy_katana, /obj/item/toy/katana,
- /obj/item/nullrod/claymore/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe))
+ /obj/item/melee/sword/vibro, /obj/item/melee/sword/energy_katana, /obj/item/toy/katana,
+ /obj/item/melee/sword/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe))
)
phobia_turfs = list(
diff --git a/code/datums/action.dm b/code/datums/action.dm
index e8d0ea303888..fb2d8b5e967f 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -470,44 +470,6 @@
name = "Use [target.name]"
button.name = name
-/datum/action/item_action/cult_dagger
- name = "Draw Blood Rune"
- desc = "Use the ritual dagger to create a powerful blood rune"
- icon_icon = 'icons/mob/actions/actions_cult.dmi'
- button_icon_state = "draw"
- buttontooltipstyle = "cult"
- background_icon_state = "bg_demon"
-
-/datum/action/item_action/cult_dagger/Grant(mob/M)
- if(iscultist(M))
- ..()
- button.screen_loc = "6:157,4:-2"
- button.moved = "6:157,4:-2"
- else
- Remove(owner)
-
-
-/datum/action/item_action/cult_dagger/Trigger()
- for(var/obj/item/H in owner.held_items) //In case we were already holding another dagger
- if(istype(H, /obj/item/melee/cultblade/dagger))
- H.attack_self(owner)
- return
- var/obj/item/I = target
- if(owner.can_equip(I, ITEM_SLOT_HANDS))
- owner.temporarilyRemoveItemFromInventory(I)
- owner.put_in_hands(I)
- I.attack_self(owner)
- return
- if(!isliving(owner))
- to_chat(owner, "You lack the necessary living force for this action.")
- return
- var/mob/living/living_owner = owner
- if (living_owner.usable_hands <= 0)
- to_chat(living_owner, "You dont have any usable hands!")
- else
- to_chat(living_owner, "Your hands are full!")
-
-
///MGS BOX!
/datum/action/item_action/agent_box
name = "Deploy Box"
diff --git a/code/datums/actions/ninja.dm b/code/datums/actions/ninja.dm
index b655078349dc..974e4cfa74bc 100644
--- a/code/datums/actions/ninja.dm
+++ b/code/datums/actions/ninja.dm
@@ -24,7 +24,7 @@
name = "Create Throwing Stars (1E)"
desc = "Creates some throwing stars"
button_icon_state = "throwingstar"
- icon_icon = 'icons/obj/items_and_weapons.dmi'
+ icon_icon = 'icons/obj/items.dmi'
/datum/action/item_action/ninjanet
name = "Energy Net (20E)"
@@ -36,7 +36,7 @@
name = "Recall Energy Katana (Variable Cost)"
desc = "Teleports the Energy Katana linked to this suit to its wearer, cost based on distance."
button_icon_state = "energy_katana"
- icon_icon = 'icons/obj/items_and_weapons.dmi'
+ icon_icon = 'icons/obj/items.dmi'
/datum/action/item_action/ninja_stealth
name = "Toggle Stealth"
diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm
index e76641789157..fd89bd141ea8 100644
--- a/code/datums/components/crafting/recipes/misc.dm
+++ b/code/datums/components/crafting/recipes/misc.dm
@@ -115,7 +115,7 @@
name = "Improvised Pickaxe"
reqs = list(
/obj/item/crowbar = 1,
- /obj/item/kitchen/knife = 1,
+ /obj/item/melee/knife/kitchen = 1,
/obj/item/stack/tape = 1)
result = /obj/item/pickaxe/improvised
category = CAT_MISC
diff --git a/code/datums/components/crafting/recipes/weapon.dm b/code/datums/components/crafting/recipes/weapon.dm
index 65983b06df23..6783c60c6c6b 100644
--- a/code/datums/components/crafting/recipes/weapon.dm
+++ b/code/datums/components/crafting/recipes/weapon.dm
@@ -161,7 +161,7 @@
/datum/crafting_recipe/spear
name = "Spear"
- result = /obj/item/spear
+ result = /obj/item/melee/spear
reqs = list(/obj/item/restraints/handcuffs/cable = 1,
/obj/item/shard = 1,
/obj/item/stack/rods = 1)
@@ -261,7 +261,7 @@
/datum/crafting_recipe/bonespear
name = "Bone Spear"
- result = /obj/item/spear/bonespear
+ result = /obj/item/melee/spear/bone
time = 30
reqs = list(/obj/item/stack/sheet/bone = 4,
/obj/item/stack/sheet/sinew = 1)
@@ -270,7 +270,7 @@
/datum/crafting_recipe/boneaxe
name = "Bone Axe"
- result = /obj/item/fireaxe/boneaxe
+ result = /obj/item/melee/axe/bone
time = 50
reqs = list(/obj/item/stack/sheet/bone = 6,
/obj/item/stack/sheet/sinew = 3)
@@ -279,7 +279,7 @@
/datum/crafting_recipe/bonesword
name = "Bone Sword"
- result = /obj/item/claymore/bone
+ result = /obj/item/melee/sword/bone
time = 40
reqs = list(/obj/item/stack/sheet/bone = 3,
/obj/item/stack/sheet/sinew = 2)
diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm
index 7d3bf028d796..f4ff07423c52 100644
--- a/code/datums/components/riding.dm
+++ b/code/datums/components/riding.dm
@@ -369,7 +369,7 @@
/obj/item/riding_offhand
name = "offhand"
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "offhand"
w_class = WEIGHT_CLASS_HUGE
item_flags = ABSTRACT | DROPDEL | NOBLUDGEON
diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm
index 44470e5ca989..e00c40e116f8 100644
--- a/code/datums/components/storage/concrete/pockets.dm
+++ b/code/datums/components/storage/concrete/pockets.dm
@@ -35,8 +35,8 @@
/datum/component/storage/concrete/pockets/small/fedora/Initialize()
. = ..()
var/static/list/exception_cache = typecacheof(list(
- /obj/item/katana, /obj/item/toy/katana, /obj/item/nullrod/claymore/katana,
- /obj/item/energy_katana, /obj/item/gun/ballistic/automatic/smg/firestorm/pan
+ /obj/item/toy/katana, /obj/item/melee/sword/katana,
+ /obj/item/melee/sword/energy_katana, /obj/item/gun/ballistic/automatic/smg/firestorm/pan
))
exception_hold = exception_cache
diff --git a/code/datums/elements/point_of_interest.dm b/code/datums/elements/point_of_interest.dm
new file mode 100644
index 000000000000..d64ee5466ace
--- /dev/null
+++ b/code/datums/elements/point_of_interest.dm
@@ -0,0 +1,22 @@
+/// Designates the atom as a "point of interest", meaning it can be directly orbited
+/datum/element/point_of_interest
+ element_flags = ELEMENT_DETACH
+
+/datum/element/point_of_interest/Attach(datum/target)
+ if (!isatom(target))
+ return ELEMENT_INCOMPATIBLE
+
+ /*
+ // New players are abstract mobs assigned to people who are still in the lobby screen.
+ // As a result, they are not a valid POI and should never be a valid POI. If they
+ // somehow get this element attached to them, there's something we need to debug.
+ if(isnewplayer(target))
+ return ELEMENT_INCOMPATIBLE
+ */
+
+ SSpoints_of_interest.on_poi_element_added(target)
+ return ..()
+
+/datum/element/point_of_interest/Detach(datum/target)
+ SSpoints_of_interest.on_poi_element_removed(target)
+ return ..()
diff --git a/code/datums/mapgen/planetary/WasteGenerator.dm b/code/datums/mapgen/planetary/WasteGenerator.dm
index 9b100412a391..67a9e5649a8c 100644
--- a/code/datums/mapgen/planetary/WasteGenerator.dm
+++ b/code/datums/mapgen/planetary/WasteGenerator.dm
@@ -66,9 +66,9 @@
BIOME_COLD_CAVE = list(
BIOME_LOWEST_HUMIDITY = /datum/biome/cave/waste,
BIOME_LOW_HUMIDITY = /datum/biome/cave/waste/rad,
- BIOME_MEDIUM_HUMIDITY = /datum/biome/cave/waste,
- BIOME_HIGH_HUMIDITY = /datum/biome/cave/waste/rad,
- BIOME_HIGHEST_HUMIDITY = /datum/biome/cave/waste
+ BIOME_MEDIUM_HUMIDITY = /datum/biome/cave/waste/conc,
+ BIOME_HIGH_HUMIDITY = /datum/biome/cave/waste/conc,
+ BIOME_HIGHEST_HUMIDITY = /datum/biome/cave/waste/conc
),
BIOME_WARM_CAVE = list(
BIOME_LOWEST_HUMIDITY = /datum/biome/cave/waste,
@@ -284,10 +284,10 @@
closed_turf_types = list(
/turf/closed/mineral/random/wasteplanet = 40,
- /turf/closed/wall/r_wall = 1,
- /turf/closed/wall/r_wall/rust = 3,
- /turf/closed/wall = 2,
- /turf/closed/wall/rust = 6
+ /turf/closed/wall/r_wall/wasteplanet = 1,
+ /turf/closed/wall/r_wall/rust/wasteplanet = 3,
+ /turf/closed/wall/wasteplanet = 2,
+ /turf/closed/wall/rust/wasteplanet = 6
)
flora_spawn_list = list(
@@ -381,10 +381,10 @@
/turf/open/floor/plating/wasteplanet = 4
)
closed_turf_types = list(
- /turf/closed/wall/r_wall = 1,
- /turf/closed/wall/r_wall/rust = 1,
- /turf/closed/wall = 5,
- /turf/closed/wall/rust = 10
+ /turf/closed/wall/r_wall/wasteplanet = 1,
+ /turf/closed/wall/r_wall/rust/wasteplanet = 1,
+ /turf/closed/wall/wasteplanet = 5,
+ /turf/closed/wall/rust/wasteplanet = 10
)
flora_spawn_list = list(
/obj/effect/spawner/lootdrop/waste/mechwreck = 40,
@@ -450,3 +450,46 @@
/obj/effect/spawner/minefield/manhack = 2
)
feature_spawn_chance = 2 //hivebot biomes should have their dongles
+
+/datum/biome/cave/waste/conc //da concrete jungle baybee
+ open_turf_types = list(
+ /turf/open/floor/concrete/wasteplanet = 10,
+ /turf/open/floor/concrete/reinforced/wasteplanet = 4,
+ /turf/open/floor/concrete/pavement/wasteplanet = 4
+ )
+ closed_turf_types = list(
+ /turf/closed/wall/concrete/wasteplanet = 15,
+ /turf/closed/wall/concrete/reinforced/wasteplanet = 3
+ )
+
+ flora_spawn_list = list(
+ /obj/effect/spawner/lootdrop/waste/mechwreck = 20,
+ /obj/effect/spawner/lootdrop/waste/trash = 90,
+ /obj/effect/spawner/lootdrop/waste/radiation = 16,
+ /obj/structure/reagent_dispensers/fueltank = 10,
+ /obj/structure/reagent_dispensers/watertank = 20,
+ /obj/item/stack/cable_coil/cut = 50,
+ /obj/structure/closet/crate/secure/loot = 3,
+ /obj/effect/spawner/lootdrop/waste/atmos_can = 5,
+ /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1,
+ /obj/effect/spawner/lootdrop/waste/salvageable = 30,
+ /obj/effect/spawner/lootdrop/maintenance = 2,
+ /obj/effect/spawner/lootdrop/maintenance/two = 5,
+ /obj/effect/spawner/lootdrop/maintenance/three = 10,
+ /obj/effect/spawner/lootdrop/waste/salvageable = 40,
+ )
+ mob_spawn_list = list(
+ /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 80,
+ /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged = 50,
+ /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid = 50,
+ /mob/living/simple_animal/bot/firebot/rockplanet = 15,
+ /mob/living/simple_animal/bot/secbot/ed209/rockplanet = 3,
+ /mob/living/simple_animal/hostile/abandoned_minebot = 15,
+ /mob/living/simple_animal/bot/floorbot/rockplanet = 15,
+ /obj/structure/spawner/hivebot = 35
+ )
+
+ flora_spawn_chance = 30
+ feature_spawn_chance = 8
+ mob_spawn_chance = 5
+
diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm
index 72d26cf74367..e4e3ef90ebc7 100644
--- a/code/datums/martial/sleeping_carp.dm
+++ b/code/datums/martial/sleeping_carp.dm
@@ -169,96 +169,3 @@
to_chat(usr, "Crashing Wave Kick: Harm Disarm. Launch people brutally across rooms, and away from you.")
to_chat(usr, "Keelhaul: Harm Grab. Kick opponents to the floor. Against prone targets, deal additional stamina damage and disarm them.")
to_chat(usr, "In addition, your body has become incredibly resilient to most forms of attack. Weapons cannot readily pierce your hardened skin, and you are highly resistant to stuns and knockdowns, and can block all projectiles in Throw Mode. However, you are not invincible, and sustained damage will take it's toll. Avoid heat at all costs!")
-
-/obj/item/staff/bostaff
- name = "bo staff"
- desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate."
- force = 10
- w_class = WEIGHT_CLASS_BULKY
- slot_flags = ITEM_SLOT_BACK
- throwforce = 20
- throw_speed = 2
- attack_verb = list("smashed", "slammed", "whacked", "thwacked")
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "bostaff0"
- base_icon_state = "bostaff"
- lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
- block_chance = 50
- var/wielded = FALSE // track wielded status on item
-
-/obj/item/staff/bostaff/Initialize()
- . = ..()
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
-
-/obj/item/staff/bostaff/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=24, icon_wielded="[base_icon_state]1")
-
-/// triggered on wield of two handed item
-/obj/item/staff/bostaff/proc/on_wield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = TRUE
-
-/// triggered on unwield of two handed item
-/obj/item/staff/bostaff/proc/on_unwield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = FALSE
-
-/obj/item/staff/bostaff/update_icon_state()
- icon_state = "[base_icon_state]0"
- return ..()
-
-/obj/item/staff/bostaff/attack(mob/target, mob/living/user)
- add_fingerprint(user)
- if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
- to_chat(user, "You club yourself over the head with [src].")
- user.Paralyze(60)
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
- else
- user.take_bodypart_damage(2*force)
- return
- if(iscyborg(target))
- return ..()
- if(!isliving(target))
- return ..()
- var/mob/living/carbon/C = target
- if(C.stat)
- to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.")
- return
- if(user.a_intent == INTENT_DISARM)
- if(!wielded)
- return ..()
- if(!ishuman(target))
- return ..()
- var/mob/living/carbon/human/H = target
- var/list/fluffmessages = list("club", "smack", "broadside", "beat", "slam")
- H.visible_message("[user] [pick(fluffmessages)]s [H] with [src]!", \
- "[user] [pick(fluffmessages)]s you with [src]!", "You hear a sickening sound of flesh hitting flesh!", null, user)
- to_chat(user, "You [pick(fluffmessages)] [H] with [src]!")
- playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, TRUE, -1)
- H.adjustStaminaLoss(rand(13,20))
- if(prob(10))
- H.visible_message("[H] collapses!", \
- "Your legs give out!")
- H.Paralyze(80)
- if(H.staminaloss && !H.IsSleeping())
- var/total_health = (H.health - H.staminaloss)
- if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat)
- H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \
- "You're knocked unconscious by [user]!", "You hear a sickening sound of flesh hitting flesh!", null, user)
- to_chat(user, "You deliver a heavy hit to [H]'s head, knocking [H.p_them()] out cold!")
- H.SetSleeping(600)
- H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 150)
- else
- return ..()
-
-/obj/item/staff/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(!wielded)
- return ..()
- return FALSE
diff --git a/code/datums/spawners_menu.dm b/code/datums/spawners_menu.dm
index 9e7e4b334ddc..01709a00c1a1 100644
--- a/code/datums/spawners_menu.dm
+++ b/code/datums/spawners_menu.dm
@@ -53,7 +53,7 @@
if(!spawnerlist.len)
return
var/obj/effect/mob_spawn/MS = pick(spawnerlist)
- if(!istype(MS) || !(MS in GLOB.poi_list))
+ if(!istype(MS) || !(MS in SSpoints_of_interest.other_points_of_interest))
return
switch(action)
if("jump")
diff --git a/code/game/atom/atom_orbit.dm b/code/game/atom/atom_orbit.dm
new file mode 100644
index 000000000000..2294293bd8b7
--- /dev/null
+++ b/code/game/atom/atom_orbit.dm
@@ -0,0 +1,33 @@
+/atom
+ ///Reference to atom being orbited
+ var/atom/orbit_target
+ ///The orbiter component, if there's anything orbiting this atom
+ var/datum/component/orbiter/orbiters
+
+/**
+ * Recursive getter method to return a list of all ghosts orbitting this atom
+ *
+ * This will work fine without manually passing arguments.
+ * * processed - The list of atoms we've already convered
+ * * source - Is this the atom for who we're counting up all the orbiters?
+ * * ignored_stealthed_admins - If TRUE, don't count admins who are stealthmoded and orbiting this
+ */
+/atom/proc/get_all_orbiters(list/processed, source = TRUE, ignore_stealthed_admins = TRUE)
+ var/list/output = list()
+ if(!processed)
+ processed = list()
+ else if(src in processed)
+ return output
+
+ if(!source)
+ output += src
+
+ processed += src
+ for(var/atom/atom_orbiter as anything in orbiters?.orbiters)
+ output += atom_orbiter.get_all_orbiters(processed, source = FALSE)
+ return output
+
+/mob/get_all_orbiters(list/processed, source = TRUE, ignore_stealthed_admins = TRUE)
+ if(!source && ignore_stealthed_admins && client?.holder?.fakekey)
+ return list()
+ return ..()
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index f52b9bdace9e..b96e8a53c824 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -75,9 +75,6 @@
///Economy cost of item in premium vendor
var/custom_premium_price
- //List of datums orbiting this atom
- var/datum/component/orbiter/orbiters
-
/// Radiation insulation types
var/rad_insulation = RAD_NO_INSULATION
@@ -154,8 +151,6 @@
/// The current connector overlay appearance. Saved so that it can be cut when necessary.
var/connector_overlay
- ///Reference to atom being orbited
- var/atom/orbit_target
///Default X pixel offset
var/base_pixel_x
///Default Y pixel offset
diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm
index 74e391ef5510..1db631f18aa7 100644
--- a/code/game/gamemodes/clown_ops/clown_ops.dm
+++ b/code/game/gamemodes/clown_ops/clown_ops.dm
@@ -38,7 +38,7 @@
r_pocket = /obj/item/bikehorn
id = /obj/item/card/id/syndicate
backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\
- /obj/item/kitchen/knife/combat/survival,
+ /obj/item/melee/knife/survival,
/obj/item/dnainjector/clumsymut, //in case you want to be clumsy for the memes
/obj/item/reagent_containers/spray/waterflower/lube)
implants = list(/obj/item/implant/sad_trombone)
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index 675d5e7e5407..db73b7b797b9 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -120,7 +120,7 @@
id = /obj/item/card/id/syndicate
belt = /obj/item/gun/ballistic/automatic/pistol/ringneck
backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\
- /obj/item/kitchen/knife/combat/survival)
+ /obj/item/melee/knife/survival)
var/tc = 25
var/command_radio = FALSE
@@ -169,7 +169,7 @@
backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\
/obj/item/tank/jetpack/oxygen/harness=1,\
/obj/item/gun/ballistic/automatic/pistol/ringneck=1,\
- /obj/item/kitchen/knife/combat/survival)
+ /obj/item/melee/knife/survival)
/datum/game_mode/nuclear/generate_credit_text()
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index c3895f302279..83d7a32d1fd9 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -56,7 +56,7 @@
if(isliving(wizard.current) && wizard.current.stat!=DEAD)
return FALSE
- for(var/obj/item/phylactery/P in GLOB.poi_list) //TODO : IsProperlyDead()
+ for(var/obj/item/phylactery/P in SSpoints_of_interest.other_points_of_interest) //TODO : IsProperlyDead()
if(P.mind && P.mind.has_antag_datum(/datum/antagonist/wizard))
return FALSE
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 6b63a3ae83b8..9bad37507a35 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -151,7 +151,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod/retro, 17)
/obj/item/reagent_containers/hypospray/CMO,
/obj/item/clothing/accessory/medal/gold/captain,
/obj/item/clothing/gloves/krav_maga,
- /obj/item/nullrod,
/obj/item/tank/jetpack,
/obj/item/documents,
/obj/item/nuke_core_container
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 121c93a07353..e70edb721788 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1236,8 +1236,8 @@
return
if(!operating)
- if(istype(I, /obj/item/fireaxe)) //being fireaxe'd
- var/obj/item/fireaxe/axe = I
+ if(istype(I, /obj/item/melee/axe/fire)) //being fireaxe'd
+ var/obj/item/melee/axe/fire/axe = I
if(axe && !axe.wielded)
to_chat(user, "You need to be wielding \the [axe] to do that!")
return
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index eb23f1060be3..737bacbb650f 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -253,7 +253,7 @@
return max_moles - min_moles > 20
/obj/machinery/door/attackby(obj/item/I, mob/user, params)
- if(user.a_intent != INTENT_HARM && (I.tool_behaviour == TOOL_CROWBAR || istype(I, /obj/item/fireaxe)))
+ if(user.a_intent != INTENT_HARM && (I.tool_behaviour == TOOL_CROWBAR || istype(I, /obj/item/melee/axe/fire)))
var/forced_open = FALSE
if(istype(I, /obj/item/crowbar))
var/obj/item/crowbar/C = I
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 884c103d0e0f..3e50954df0c7 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -101,6 +101,9 @@ DEFINE_BITFIELD(turret_flags, list(
var/datum/action/turret_toggle/toggle_action
/// Mob that is remotely controlling the turret
var/mob/remote_controller
+ /// For connecting to additional turrets
+ var/id = ""
+
/obj/machinery/porta_turret/Initialize()
. = ..()
@@ -122,6 +125,13 @@ DEFINE_BITFIELD(turret_flags, list(
if(!has_cover)
INVOKE_ASYNC(src, PROC_REF(popUp))
+/obj/machinery/porta_turret/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock)
+ id = "[REF(port)][id]"
+ port.turret_list |= WEAKREF(src)
+
+/obj/machinery/porta_turret/disconnect_from_shuttle(obj/docking_port/mobile/port)
+ port.turret_list -= WEAKREF(src)
+
/obj/machinery/porta_turret/proc/toggle_on(set_to)
var/current = on
if (!isnull(set_to))
@@ -901,7 +911,7 @@ DEFINE_BITFIELD(turret_flags, list(
base_icon_state = "control"
density = FALSE
req_access = list(ACCESS_AI_UPLOAD)
- resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
/// Variable dictating if linked turrets are active and will shoot targets
var/enabled = TRUE
/// Variable dictating if linked turrets will shoot lethal projectiles
@@ -916,6 +926,8 @@ DEFINE_BITFIELD(turret_flags, list(
var/shoot_cyborgs = FALSE
/// List of all linked turrets
var/list/turrets = list()
+ ///id for connecting to additional turrets
+ var/id = ""
/obj/machinery/turretid/Initialize(mapload, ndir = 0, built = 0)
. = ..()
@@ -935,17 +947,21 @@ DEFINE_BITFIELD(turret_flags, list(
if(!mapload)
return
- if(control_area)
- control_area = get_area_instance_from_text(control_area)
- if(control_area == null)
- control_area = get_area(src)
- stack_trace("Bad control_area path for [src], [src.control_area]")
- else if(!control_area)
- control_area = get_area(src)
+/obj/machinery/turretid/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock)
+ id = "[REF(port)][id]"
+ RegisterSignal(port, COMSIG_SHIP_DONE_CONNECTING, PROC_REF(late_connect_to_shuttle))
+
+/obj/machinery/turretid/disconnect_from_shuttle(obj/docking_port/mobile/port)
+ UnregisterSignal(port, COMSIG_SHIP_DONE_CONNECTING)
- for(var/obj/machinery/porta_turret/T in control_area)
- turrets |= T
- T.cp = src
+/obj/machinery/turretid/proc/late_connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock)
+ SIGNAL_HANDLER
+
+ for(var/datum/weakref/ship_guns in port.turret_list)
+ var/obj/machinery/porta_turret/turret_gun = ship_guns.resolve()
+ if(turret_gun.id == id)
+ turrets |= turret_gun
+ turret_gun.cp = src
/obj/machinery/turretid/examine(mob/user)
. += ..()
@@ -970,7 +986,8 @@ DEFINE_BITFIELD(turret_flags, list(
if (issilicon(user))
return attack_hand(user)
- if (get_dist(src, user) == 0) // trying to unlock the interface
+ // trying to unlock the interface
+ if (in_range(src, user))
if (allowed(usr))
if(obj_flags & EMAGGED)
to_chat(user, "The turret control is unresponsive!")
@@ -1069,6 +1086,10 @@ DEFINE_BITFIELD(turret_flags, list(
/obj/machinery/turretid/lethal
lethal = TRUE
+/obj/machinery/turretid/ship
+ req_ship_access = TRUE
+
+
/obj/item/wallframe/turret_control
name = "turret control frame"
desc = "Used for building turret control panels."
@@ -1114,3 +1135,4 @@ DEFINE_BITFIELD(turret_flags, list(
/obj/item/gun/energy/e_gun/turret/get_turret_properties()
. = ..()
+
diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm
index e99d24e3f558..d330865a4be2 100644
--- a/code/game/mecha/equipment/tools/mining_tools.dm
+++ b/code/game/mecha/equipment/tools/mining_tools.dm
@@ -65,17 +65,20 @@
/turf/closed/wall/drill_act(obj/item/mecha_parts/mecha_equipment/drill/drill)
while(drill.do_after_mecha(src, 15 / drill.drill_level))
drill.log_message("Drilled through [src]", LOG_MECHA)
- alter_integrity(-drill.wall_decon_damage)
drill.occupant_message("You drill through some of the outer plating...")
playsound(src,'sound/weapons/drill.ogg',60,TRUE)
+ if(!alter_integrity(-drill.wall_decon_damage))
+ return TRUE
/turf/closed/wall/r_wall/drill_act(obj/item/mecha_parts/mecha_equipment/drill/drill)
if(drill.drill_level >= DRILL_HARDENED)
while(drill.do_after_mecha(src, 20 / drill.drill_level))
drill.log_message("Drilled through [src]", LOG_MECHA)
- alter_integrity(-drill.wall_decon_damage)
drill.occupant_message("You drill through some of the outer plating...")
playsound(src,'sound/weapons/drill.ogg',60,TRUE)
+ if(!alter_integrity(-drill.wall_decon_damage))
+ return TRUE
+
else
drill.occupant_message("[src] is too durable to drill through.")
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index b903564c88d6..a1b46fd2fbfa 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -137,7 +137,7 @@
add_scanmod()
add_capacitor()
START_PROCESSING(SSobj, src)
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
log_message("[src.name] created.", LOG_MECHA)
GLOB.mechas_list += src //global mech list
prepare_huds()
@@ -176,7 +176,7 @@
AI.gib() //No wreck, no AI to recover
AI = null
STOP_PROCESSING(SSobj, src)
- GLOB.poi_list.Remove(src)
+ SSpoints_of_interest.remove_point_of_interest(src)
equipment.Cut()
for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds)
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index 325712274633..2caecd950a9f 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -105,9 +105,9 @@
/obj/item/paper/fluff/jobs/prisoner/letter = 1,
/obj/item/grenade/smokebomb = 1,
/obj/item/flashlight/seclite = 1,
- /obj/item/kitchen/knife/shiv = 4,
- /obj/item/kitchen/knife/shiv/carrot = 1,
- /obj/item/kitchen/knife = 1,
+ /obj/item/melee/knife/shiv = 4,
+ /obj/item/melee/knife/shiv/carrot = 1,
+ /obj/item/melee/knife/kitchen = 1,
/obj/item/storage/wallet/random = 1,
/obj/item/pda = 1
)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 376d1ba16d11..a1302008cf89 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -13,7 +13,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
/obj/item
name = "item"
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
blocks_emissive = EMISSIVE_BLOCK_GENERIC
///icon state name for inhand overlays
var/item_state = null
@@ -957,6 +957,9 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
/// Called when a mob tries to use the item as a tool.Handles most checks.
/obj/item/proc/use_tool(atom/target, mob/living/user, delay, amount=0, volume=0, datum/callback/extra_checks)
+ // we have no target, why are we even doing this?
+ if(isnull(target))
+ return
// No delay means there is no start message, and no reason to call tool_start_check before use_tool.
// Run the start check here so we wouldn't have to call it manually.
if(!delay && !tool_start_check(user, amount))
@@ -1183,6 +1186,11 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
/obj/item/proc/get_writing_implement_details()
return null
+/obj/item/proc/can_trigger_gun(mob/living/user)
+ if(!user.can_use_guns(src))
+ return FALSE
+ return TRUE
+
/// Whether or not this item can be put into a storage item through attackby
/obj/item/proc/attackby_storage_insert(datum/storage, atom/storage_holder, mob/user)
return TRUE
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index d410dfef0d7d..d2ce379274dc 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -5,7 +5,7 @@
/obj/item/areaeditor
name = "area modification item"
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "blueprints"
attack_verb = list("attacked", "bapped", "hit")
var/fluffnotice = "Nobody's gonna read this stuff!"
@@ -46,7 +46,7 @@
/obj/item/areaeditor/blueprints
name = "station blueprints"
desc = "Blueprints of what appear to be an experimental station design, with a large spinal weapon mounted to the front. There is a \"Classified\" stamp and several coffee stains on it."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "blueprints"
fluffnotice = "Property of Nanotrasen. For heads of staff only. Store in high-secure storage."
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
@@ -204,7 +204,7 @@
/obj/item/areaeditor/blueprints/cyborg
name = "construction schematics"
desc = "A digital copy of the local blueprints and zoning permits stored in your memory."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "blueprints"
fluffnotice = "Intellectual Property of Nanotrasen. For use in engineering cyborgs only. Wipe from memory upon departure from company ownership."
@@ -235,7 +235,7 @@
/obj/item/areaeditor/shuttle
name = "shuttle expansion permit"
desc = "A set of paperwork which is used to expand flyable shuttles."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "blueprints"
color = COLOR_ASSEMBLY_WHITE
fluffnotice = "Not to be used for non-sanctioned shuttle construction and maintenance."
diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm
index 1d6a0d61c180..af7addd21a95 100644
--- a/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -1111,17 +1111,6 @@
/obj/item/stack/sheet/glass = 1)
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
-/obj/item/circuitboard/machine/bepis
- name = "BEPIS Chamber (Machine Board)"
- icon_state = "science"
- build_path = /obj/machinery/rnd/bepis
- req_components = list(
- /obj/item/stack/cable_coil = 5,
- /obj/item/stock_parts/capacitor = 1,
- /obj/item/stock_parts/manipulator = 1,
- /obj/item/stock_parts/micro_laser = 1,
- /obj/item/stock_parts/scanning_module = 1)
-
/obj/item/circuitboard/machine/bluespace_miner
name = "Bluespace Miner (Machine Board)"
build_path = /obj/machinery/power/bluespace_miner
diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm
index 9c6809cf3dbc..631eb7d2fc8f 100644
--- a/code/game/objects/items/clown_items.dm
+++ b/code/game/objects/items/clown_items.dm
@@ -14,7 +14,7 @@
name = "soap"
desc = "A cheap bar of soap. Doesn't smell."
gender = PLURAL
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "soap"
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
@@ -150,7 +150,7 @@
/obj/item/bikehorn
name = "bike horn"
desc = "A horn off of a bicycle."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "bike_horn"
item_state = "bike_horn"
lefthand_file = 'icons/mob/inhands/equipment/horns_lefthand.dmi'
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index d451f258bd78..b08adc216135 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -2,7 +2,7 @@
gender = PLURAL
name = "red lipstick"
desc = "A generic brand of lipstick."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "lipstick"
w_class = WEIGHT_CLASS_TINY
var/colour = "red"
@@ -101,7 +101,7 @@
/obj/item/razor
name = "electric razor"
desc = "The latest and greatest power razor born from the science of shaving."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "razor"
flags_1 = CONDUCT_1
w_class = WEIGHT_CLASS_TINY
diff --git a/code/game/objects/items/courtroom.dm b/code/game/objects/items/courtroom.dm
index 78d599ee4d9c..a1750a26493e 100644
--- a/code/game/objects/items/courtroom.dm
+++ b/code/game/objects/items/courtroom.dm
@@ -5,7 +5,7 @@
/obj/item/gavelhammer
name = "gavel hammer"
desc = "Order, order! No bombs in my courthouse."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "gavelhammer"
force = 5
throwforce = 6
@@ -16,7 +16,7 @@
/obj/item/gavelblock
name = "gavel block"
desc = "Smack it with a gavel hammer when the assistants get rowdy."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "gavelblock"
force = 2
throwforce = 2
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index cdded7e418ef..1f4b2ae6f6a2 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -226,12 +226,12 @@ GENE SCANNER
if(length(damaged)>0 || oxy_loss>0 || tox_loss>0 || fire_loss>0)
var/dmgreport = "General status:\
\
- Damage: | \
+ Damage: | \
Brute | \
Burn | \
Toxin | \
Suffocation |
\
- Overall: | \
+
Overall: | \
[CEILING(brute_loss,1)] | \
[CEILING(fire_loss,1)] | \
[CEILING(tox_loss,1)] | \
@@ -239,7 +239,7 @@ GENE SCANNER
for(var/o in damaged)
var/obj/item/bodypart/org = o //head, left arm, right arm, etc.
- dmgreport += "
[capitalize(parse_zone(org.body_zone))]: | \
+ dmgreport += "
[capitalize(parse_zone(org.body_zone))]: | \
[(org.brute_dam > 0) ? "[CEILING(org.brute_dam,1)]" : "0"] | \
[(org.burn_dam > 0) ? "[CEILING(org.burn_dam,1)]" : "0"] |
"
dmgreport += "
"
diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm
index 113a72fb8d8d..3e0823761520 100644
--- a/code/game/objects/items/dna_injector.dm
+++ b/code/game/objects/items/dna_injector.dm
@@ -1,7 +1,7 @@
/obj/item/dnainjector
name = "\improper DNA injector"
desc = "This injects the person with DNA."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "dnainjector"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
diff --git a/code/game/objects/items/door_seal.dm b/code/game/objects/items/door_seal.dm
index 64f7ca4fd92c..76b406f3c9ab 100644
--- a/code/game/objects/items/door_seal.dm
+++ b/code/game/objects/items/door_seal.dm
@@ -1,7 +1,7 @@
/obj/item/door_seal
name = "pneumatic seal"
desc = "A brace used to seal and reinforce an airlock. Useful for making areas inaccessible to those without opposable thumbs."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "pneumatic_seal"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm
index 1396521aaf9a..b721393e85ed 100644
--- a/code/game/objects/items/eightball.dm
+++ b/code/game/objects/items/eightball.dm
@@ -136,10 +136,10 @@
become_hearing_sensitive(ROUNDSTART_TRAIT)
for (var/answer in haunted_answers)
votes[answer] = 0
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
/obj/item/toy/eightball/haunted/Destroy()
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
. = ..()
/obj/item/toy/eightball/haunted/MakeHaunted()
diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm
index 8ec4353d1ca2..31ac7d44ecff 100644
--- a/code/game/objects/items/gift.dm
+++ b/code/game/objects/items/gift.dm
@@ -47,8 +47,7 @@ GLOBAL_LIST_EMPTY(possible_gifts)
I.add_fingerprint(M)
/obj/item/a_gift/proc/get_gift_type()
- var/gift_type_list = list(/obj/item/sord,
- /obj/item/storage/wallet,
+ var/gift_type_list = list(/obj/item/storage/wallet,
/obj/item/storage/photo_album,
/obj/item/storage/box/snappops,
/obj/item/storage/crayons,
@@ -67,7 +66,6 @@ GLOBAL_LIST_EMPTY(possible_gifts)
/obj/item/bikehorn,
/obj/item/toy/beach_ball,
/obj/item/toy/beach_ball/holoball,
- /obj/item/banhammer,
/obj/item/reagent_containers/food/snacks/grown/ambrosia/deus,
/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
/obj/item/paicard,
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 9fece4feedd4..f36c27bb244d 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -20,7 +20,7 @@
name = "handcuffs"
desc = "Use this to keep prisoners in line."
gender = PLURAL
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "handcuff"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
@@ -217,7 +217,7 @@
name = "leg cuffs"
desc = "Use this to keep prisoners in line."
gender = PLURAL
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "handcuff"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
@@ -426,6 +426,6 @@
/obj/item/restraints/legcuffs/bola/watcher //tribal bola for tribal lizards
name = "watcher Bola"
desc = "A Bola made from the stretchy sinew of fallen watchers."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "bola_watcher"
breakouttime = 45
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
deleted file mode 100644
index 5b91f6b7bd87..000000000000
--- a/code/game/objects/items/holy_weapons.dm
+++ /dev/null
@@ -1,522 +0,0 @@
-// CHAPLAIN CUSTOM ARMORS //
-
-/obj/item/storage/box/holy
- name = "Witchhunter Kit"
-
-/obj/item/storage/box/holy/PopulateContents()
- new /obj/item/clothing/head/witchunter(src)
- new /obj/item/clothing/suit/armor/witchhunter(src)
-
-
-/obj/item/storage/box/holy/follower
- name = "Followers of the Chaplain Kit"
-
-/obj/item/storage/box/holy/follower/PopulateContents()
- new /obj/item/clothing/suit/hooded/chaplain_hoodie/leader(src)
- new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
- new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
- new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
- new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
-
-/obj/item/clothing/suit/hooded/chaplain_hoodie
- name = "follower hoodie"
- desc = "Hoodie made for acolytes of the chaplain."
- icon_state = "chaplain_hoodie"
- item_state = "chaplain_hoodie"
- body_parts_covered = CHEST|GROIN|LEGS|ARMS
- allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
- hoodtype = /obj/item/clothing/head/hooded/chaplain_hood
-
-/obj/item/clothing/head/hooded/chaplain_hood
- name = "follower hood"
- desc = "Hood made for acolytes of the chaplain."
- icon_state = "chaplain_hood"
- body_parts_covered = HEAD
- flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
-
-/obj/item/clothing/suit/hooded/chaplain_hoodie/leader
- name = "leader hoodie"
- desc = "Now you're ready for some 50 dollar bling water."
- icon_state = "chaplain_hoodie_leader"
- item_state = "chaplain_hoodie_leader"
- hoodtype = /obj/item/clothing/head/hooded/chaplain_hood/leader
-
-/obj/item/clothing/head/hooded/chaplain_hood/leader
- name = "leader hood"
- desc = "I mean, you don't /have/ to seek bling water. I just think you should."
- icon_state = "chaplain_hood_leader"
-
-
-// CHAPLAIN NULLROD AND CUSTOM WEAPONS //
-
-/obj/item/nullrod
- name = "null rod"
- desc = "A rod of pure obsidian; its very presence disrupts and dampens the powers of Nar'Sie's followers."
- icon_state = "nullrod"
- item_state = "nullrod"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 18
- throw_speed = 3
- throw_range = 4
- throwforce = 10
- w_class = WEIGHT_CLASS_TINY
- obj_flags = UNIQUE_RENAME
- var/reskinned = FALSE
- var/chaplain_spawnable = TRUE
-
-/obj/item/nullrod/godhand
- icon_state = "disintegrate"
- item_state = "disintegrate"
- lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi'
- name = "god hand"
- desc = "This hand of yours glows with an awesome power!"
- item_flags = ABSTRACT | DROPDEL
- w_class = WEIGHT_CLASS_HUGE
- hitsound = 'sound/weapons/sear.ogg'
- damtype = BURN
- attack_verb = list("punched", "cross countered", "pummeled")
-
-/obj/item/nullrod/godhand/Initialize()
- . = ..()
- ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
-
-/obj/item/nullrod/staff
- icon_state = "godstaff-red"
- item_state = "godstaff-red"
- lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
- name = "red holy staff"
- desc = "It has a mysterious, protective aura."
- w_class = WEIGHT_CLASS_HUGE
- force = 5
- slot_flags = ITEM_SLOT_BACK
- block_chance = 40
- var/shield_icon = "shield-red"
-
-/obj/item/nullrod/staff/worn_overlays(isinhands)
- . = ..()
- if(isinhands)
- . += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_LAYER + 0.01)
-
-/obj/item/nullrod/staff/blue
- name = "blue holy staff"
- icon_state = "godstaff-blue"
- item_state = "godstaff-blue"
- shield_icon = "shield-old"
-
-/obj/item/nullrod/claymore
- icon_state = "claymore_gold"
- item_state = "claymore_gold"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- pickup_sound = 'sound/items/handling/knife2_pickup.ogg'
- drop_sound = 'sound/items/handling/metal_drop.ogg'
- name = "holy claymore"
- desc = "A weapon fit for a crusade!"
- w_class = WEIGHT_CLASS_HUGE
- slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT
- block_chance = 30
- sharpness = IS_SHARP
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/nullrod/claymore/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == PROJECTILE_ATTACK)
- final_block_chance = 0 //Don't bring a sword to a gunfight
- return ..()
-
-/obj/item/nullrod/claymore/darkblade
- icon_state = "cultblade"
- item_state = "cultblade"
- lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
- inhand_x_dimension = 64
- inhand_y_dimension = 64
- name = "dark blade"
- desc = "Spread the glory of the dark gods!"
- slot_flags = ITEM_SLOT_BELT
- hitsound = 'sound/hallucinations/growl1.ogg'
-
-/obj/item/nullrod/claymore/chainsaw_sword
- icon_state = "chainswordon"
- item_state = "chainswordon"
- name = "sacred chainsaw sword"
- desc = "Suffer not a heretic to live."
- slot_flags = ITEM_SLOT_BELT
- attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
- hitsound = 'sound/weapons/chainsawhit.ogg'
- tool_behaviour = TOOL_SAW
- toolspeed = 1.5 //slower than a real saw
-
-/obj/item/nullrod/claymore/glowing
- icon_state = "swordon"
- item_state = "swordon"
- name = "force weapon"
- desc = "The blade glows with the power of faith. Or possibly a battery."
- slot_flags = ITEM_SLOT_BELT
-
-/obj/item/nullrod/claymore/katana
- name = "\improper Hanzo steel"
- desc = "Capable of cutting clean through a holy claymore."
- icon_state = "katana"
- item_state = "katana"
- slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
- supports_variations = VOX_VARIATION
-
-/obj/item/nullrod/claymore/multiverse
- name = "extradimensional blade"
- desc = "Once the harbinger of an interdimensional war, its sharpness fluctuates wildly."
- icon_state = "multiverse"
- item_state = "multiverse"
- slot_flags = ITEM_SLOT_BELT
-
-/obj/item/nullrod/claymore/multiverse/attack(mob/living/carbon/M, mob/living/carbon/user)
- force = rand(1, 30)
- ..()
-
-/obj/item/nullrod/claymore/saber
- name = "light energy sword"
- hitsound = 'sound/weapons/blade1.ogg'
- icon = 'icons/obj/transforming_energy.dmi'
- icon_state = "swordblue"
- item_state = "swordblue"
- desc = "If you strike me down, I shall become more robust than you can possibly imagine."
- slot_flags = ITEM_SLOT_BELT
-
-/obj/item/nullrod/claymore/saber/red
- name = "dark energy sword"
- icon_state = "swordred"
- item_state = "swordred"
- desc = "Woefully ineffective when used on steep terrain."
-
-/obj/item/nullrod/claymore/saber/pirate
- name = "nautical energy sword"
- icon_state = "cutlassred"
- item_state = "cutlassred"
- desc = "Convincing HR that your religion involved piracy was no mean feat."
-
-/obj/item/nullrod/sord
- name = "\improper UNREAL SORD"
- desc = "This thing is so unspeakably HOLY you are having a hard time even holding it."
- icon_state = "sord"
- item_state = "sord"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- slot_flags = ITEM_SLOT_BELT
- force = 4.13
- throwforce = 1
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/nullrod/scythe
- icon_state = "scythe1"
- item_state = "scythe1"
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- name = "reaper scythe"
- desc = "Ask not for whom the bell tolls..."
- w_class = WEIGHT_CLASS_BULKY
- armour_penetration = 35
- slot_flags = ITEM_SLOT_BACK
- sharpness = IS_SHARP
- attack_verb = list("chopped", "sliced", "cut", "reaped")
-
-/obj/item/nullrod/scythe/Initialize()
- . = ..()
- AddComponent(/datum/component/butchering, 70, 110) //the harvest gives a high bonus chance
-
-/obj/item/nullrod/scythe/vibro
- icon_state = "hfrequency0"
- item_state = "hfrequency1"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- name = "high frequency blade"
- desc = "Bad references are the DNA of the soul."
- attack_verb = list("chopped", "sliced", "cut", "zandatsu'd")
- hitsound = 'sound/weapons/rapierhit.ogg'
-
-/obj/item/nullrod/scythe/spellblade
- icon_state = "spellblade"
- item_state = "spellblade"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- icon = 'icons/obj/guns/magic.dmi'
- name = "dormant spellblade"
- desc = "The blade grants the wielder nearly limitless power...if they can figure out how to turn it on, that is."
- hitsound = 'sound/weapons/rapierhit.ogg'
-
-/obj/item/nullrod/scythe/talking
- icon_state = "talking_sword"
- item_state = "talking_sword"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- name = "possessed blade"
- desc = "When the world falls into chaos, it's nice to have a friend by your side."
- attack_verb = list("chopped", "sliced", "cut")
- hitsound = 'sound/weapons/rapierhit.ogg'
- var/possessed = FALSE
-
-/obj/item/nullrod/scythe/talking/relaymove(mob/living/user, direction)
- return //stops buckled message spam for the ghost.
-
-/obj/item/nullrod/scythe/talking/attack_self(mob/living/user)
- if(possessed)
- return
-
- to_chat(user, "You attempt to wake the spirit of the blade...")
-
- possessed = TRUE
-
- var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_POSSESSED_BLADE)
-
- if(LAZYLEN(candidates))
- var/mob/dead/observer/C = pick(candidates)
- var/mob/living/simple_animal/shade/S = new(src)
- S.ckey = C.ckey
- S.fully_replace_character_name(null, "The spirit of [name]")
- S.status_flags |= GODMODE
- S.copy_languages(user, LANGUAGE_MASTER) //Make sure the sword can understand and communicate with the user.
- S.update_atom_languages()
- grant_all_languages(FALSE, FALSE, TRUE) //Grants omnitongue
- var/input = sanitize_name(stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN))
-
- if(src && input)
- name = input
- S.fully_replace_character_name(null, "The spirit of [input]")
- else
- to_chat(user, "The blade is dormant. Maybe you can try again later.")
- possessed = FALSE
-
-/obj/item/nullrod/scythe/talking/Destroy()
- for(var/mob/living/simple_animal/shade/S in contents)
- to_chat(S, "You were destroyed!")
- qdel(S)
- return ..()
-
-/obj/item/nullrod/scythe/talking/chainsword
- icon_state = "chainswordon"
- item_state = "chainswordon"
- name = "possessed chainsaw sword"
- desc = "Suffer not a heretic to live."
- chaplain_spawnable = FALSE
- force = 30
- slot_flags = ITEM_SLOT_BELT
- attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
- hitsound = 'sound/weapons/chainsawhit.ogg'
- tool_behaviour = TOOL_SAW
- toolspeed = 0.5 //faster than normal saw
-
-/obj/item/nullrod/scythe/talking/necro
- desc = "An ancient weapon flush with the souls of the fallen. The blood of the necropolis has suffused it over time immemorial, granting a toothy bite."
- force = 35
- block_chance = 35
- hitsound = 'sound/weapons/pierce_slow.ogg'
- armour_penetration = 20// lower ap than the original possessed sword, go figure. The justification is that this has a serrated blade
- chaplain_spawnable = FALSE
- attack_verb = list("gnawed", "munched on", "chewed", "rended", "chomped")
- name = "possessed greatsword"
- var/bleed_stacks_per_hit = 2 //this effect has rapid scaling and is an instant down pretty much, I'll crib it since it can trigger on non-fauna
- resistance_flags = FIRE_PROOF | ACID_PROOF
-
-/obj/item/nullrod/scythe/talking/necro/examine(mob/user)
- . = ..()
- . += "This weapon applies a growing blood curse on attack. Though it slowly fades, fully manifesting it causes your target's blood to violently explode, creating a lethal burst of damage."
-
-/obj/item/nullrod/scythe/talking/necro/attack(mob/living/target)
- ..()
- var/datum/status_effect/stacking/saw_bleed/B = target.has_status_effect(STATUS_EFFECT_SAWBLEED)
- if(!B)
- target.apply_status_effect(STATUS_EFFECT_SAWBLEED,bleed_stacks_per_hit)
- else
- B.add_stacks(bleed_stacks_per_hit)
-
-/obj/item/nullrod/hammmer
- icon_state = "hammeron"
- item_state = "hammeron"
- lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
- name = "relic war hammer"
- desc = "This war hammer cost the chaplain forty thousand space dollars."
- slot_flags = ITEM_SLOT_BELT
- w_class = WEIGHT_CLASS_HUGE
- attack_verb = list("smashed", "bashed", "hammered", "crunched")
-
-/obj/item/nullrod/chainsaw
- name = "chainsaw hand"
- desc = "Good? Bad? You're the guy with the chainsaw hand."
- icon_state = "chainsaw_on"
- item_state = "mounted_chainsaw"
- lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
- w_class = WEIGHT_CLASS_HUGE
- item_flags = ABSTRACT
- sharpness = IS_SHARP
- attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
- hitsound = 'sound/weapons/chainsawhit.ogg'
- tool_behaviour = TOOL_SAW
- toolspeed = 2 //slower than a real saw
-
-/obj/item/nullrod/chainsaw/Initialize()
- . = ..()
- ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
- AddComponent(/datum/component/butchering, 30, 100, 0, hitsound)
-
-/obj/item/nullrod/clown
- icon = 'icons/obj/wizard.dmi'
- icon_state = "clownrender"
- item_state = "render"
- name = "clown dagger"
- desc = "Used for absolutely hilarious sacrifices."
- hitsound = 'sound/items/bikehorn.ogg'
- sharpness = IS_SHARP
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/nullrod/pride_hammer
- icon_state = "pride"
- name = "Pride-struck Hammer"
- desc = "It resonates an aura of Pride."
- force = 16
- throwforce = 15
- w_class = 4
- slot_flags = ITEM_SLOT_BACK
- attack_verb = list("attacked", "smashed", "crushed", "splattered", "cracked")
- hitsound = 'sound/weapons/blade1.ogg'
-
-/obj/item/nullrod/pride_hammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
- . = ..()
- if(!proximity)
- return
- if(prob(30) && ishuman(A))
- var/mob/living/carbon/human/H = A
- user.reagents.trans_to(H, user.reagents.total_volume, 1, 1, 0, transfered_by = user)
- to_chat(user, "Your pride reflects on [H].")
- to_chat(H, "You feel insecure, taking on [user]'s burden.")
-
-/obj/item/nullrod/whip
- name = "holy whip"
- desc = "What a terrible night to be on Space Station 13."//very classic, it stays
- icon_state = "chain"
- item_state = "chain"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- slot_flags = ITEM_SLOT_BELT
- attack_verb = list("whipped", "lashed")
- hitsound = 'sound/weapons/chainhit.ogg'
-
-/obj/item/nullrod/fedora
- name = "atheist's fedora"
- desc = "The brim of the hat is as sharp as your wit. The edge would hurt almost as much as disproving the existence of God."
- icon_state = "fedora"
- item_state = "fedora"
- slot_flags = ITEM_SLOT_HEAD
- icon = 'icons/obj/clothing/hats.dmi'
- force = 0
- throw_speed = 4
- throw_range = 7
- throwforce = 30
- sharpness = IS_SHARP
- attack_verb = list("enlightened", "redpilled")
-
-/obj/item/nullrod/armblade
- name = "dark blessing"
- desc = "Particularly twisted deities grant gifts of dubious value."
- icon = 'icons/obj/changeling_items.dmi'
- icon_state = "arm_blade"
- item_state = "arm_blade"
- lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi'
- item_flags = ABSTRACT
- w_class = WEIGHT_CLASS_HUGE
- sharpness = IS_SHARP
-
-/obj/item/nullrod/armblade/Initialize()
- . = ..()
- ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
- AddComponent(/datum/component/butchering, 80, 70)
-
-/obj/item/nullrod/armblade/tentacle
- name = "unholy blessing"
- icon_state = "tentacle"
- item_state = "tentacle"
-
-/obj/item/nullrod/carp
- name = "carp-sie plushie"
- desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp. Activate it to receive the blessing of Carp-Sie."
- icon = 'icons/obj/plushes.dmi'
- icon_state = "carpplush"
- item_state = "carp_plushie"
- lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/items_righthand.dmi'
- force = 15
- attack_verb = list("bitten", "eaten", "fin slapped")
- hitsound = 'sound/weapons/bite.ogg'
- var/used_blessing = FALSE
-
-/obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking
- name = "monk's staff"
- desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, it is now used to harass the clown."
- w_class = WEIGHT_CLASS_BULKY
- force = 15
- block_chance = 40
- slot_flags = ITEM_SLOT_BACK
- sharpness = IS_BLUNT
- hitsound = "swing_hit"
- attack_verb = list("smashed", "slammed", "whacked", "thwacked")
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "bostaff0"
- item_state = "bostaff0"
- lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
-
-/obj/item/nullrod/pitchfork
- icon_state = "pitchfork0"
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- name = "unholy pitchfork"
- w_class = WEIGHT_CLASS_NORMAL
- desc = "Holding this makes you look absolutely devilish."
- attack_verb = list("poked", "impaled", "pierced", "jabbed")
- hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
-
-/obj/item/nullrod/egyptian
- name = "egyptian staff"
- desc = "A tutorial in mummification is carved into the staff. You could probably craft the wraps if you had some cloth."
- icon = 'icons/obj/guns/magic.dmi'
- icon_state = "pharoah_sceptre"
- item_state = "pharoah_sceptre"
- lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
- w_class = WEIGHT_CLASS_NORMAL
- attack_verb = list("bashes", "smacks", "whacks")
-
-/obj/item/nullrod/hypertool
- icon = 'icons/obj/device.dmi'
- icon_state = "hypertool"
- item_state = "hypertool"
- lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
- slot_flags = ITEM_SLOT_BELT
- name = "hypertool"
- desc = "A tool so powerful even you cannot perfectly use it."
- armour_penetration = 35
- damtype = BRAIN
- attack_verb = list("pulsed", "mended", "cut")
- hitsound = 'sound/effects/sparks4.ogg'
-
-/obj/item/nullrod/spear
- name = "ancient spear"
- desc = "An ancient spear made of brass, I mean gold, I mean bronze."
- icon_state = "ratvarian_spear"
- item_state = "ratvarian_spear"
- lefthand_file = 'icons/mob/inhands/antag/clockwork_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi'
- icon = 'icons/obj/clockwork_objects.dmi'
- slot_flags = ITEM_SLOT_BELT
- armour_penetration = 10
- sharpness = IS_SHARP_ACCURATE
- w_class = WEIGHT_CLASS_BULKY
- attack_verb = list("stabbed", "poked", "slashed", "clocked")
- hitsound = 'sound/weapons/bladeslice.ogg'
diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm
index 23f7aec9b199..ef8aeefd0517 100644
--- a/code/game/objects/items/implants/implantcase.dm
+++ b/code/game/objects/items/implants/implantcase.dm
@@ -1,7 +1,6 @@
/obj/item/implantcase
name = "implant case"
desc = "A glass case containing an implant."
- icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "implantcase-0"
item_state = "implantcase"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm
index 6de461954cb2..8f95ef9942d7 100644
--- a/code/game/objects/items/implants/implanter.dm
+++ b/code/game/objects/items/implants/implanter.dm
@@ -1,7 +1,7 @@
/obj/item/implanter
name = "implanter"
desc = "A sterile automatic implant injector."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "implanter0"
item_state = "syringe_0"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
diff --git a/code/game/objects/items/implants/implantpad.dm b/code/game/objects/items/implants/implantpad.dm
index 37667786262f..ccbda83067a2 100644
--- a/code/game/objects/items/implants/implantpad.dm
+++ b/code/game/objects/items/implants/implantpad.dm
@@ -1,7 +1,7 @@
/obj/item/implantpad
name = "implant pad"
desc = "Used to modify implants."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "implantpad-0"
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm
index 4186e500ab98..f7ff9c187a9c 100644
--- a/code/game/objects/items/kitchen.dm
+++ b/code/game/objects/items/kitchen.dm
@@ -1,10 +1,7 @@
/* Kitchen tools
* Contains:
* Fork
- * Kitchen knives
- * Ritual Knife
* Butcher's cleaver
- * Combat Knife
* Rolling Pins
* Plastic Utensils
*/
@@ -64,222 +61,6 @@
user.visible_message("[user]'s fork snaps into tiny pieces in their hand.")
qdel(src)
-/obj/item/kitchen/knife
- name = "kitchen knife"
- icon = 'icons/obj/item/knife.dmi'
- lefthand_file = 'icons/mob/inhands/weapons/knifes_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/knifes_righthand.dmi'
- icon_state = "kitchenknife"
- item_state = "kitchenknife"
- desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
- pickup_sound = 'sound/items/handling/knife1_pickup.ogg'
- drop_sound = 'sound/items/handling/knife3_drop.ogg'
- flags_1 = CONDUCT_1
- force = 10
- w_class = WEIGHT_CLASS_SMALL
- throwforce = 10
- hitsound = 'sound/weapons/bladeslice.ogg'
- throw_speed = 3
- throw_range = 6
- custom_materials = list(/datum/material/iron=12000)
- attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- sharpness = IS_SHARP_ACCURATE
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
- item_flags = EYE_STAB
- var/bayonet = FALSE //Can this be attached to a gun?
- custom_price = 250
- tool_behaviour = TOOL_KNIFE
-
-/obj/item/kitchen/knife/ComponentInitialize()
- . = ..()
- set_butchering()
-
-///Adds the butchering component, used to override stats for special cases
-/obj/item/kitchen/knife/proc/set_butchering()
- AddComponent(/datum/component/butchering, 80 - force, 100, force - 10) //bonus chance increases depending on force
-
-/obj/item/kitchen/knife/plastic
- name = "plastic knife"
- icon_state = "plastic_knife"
- desc = "A very safe, barely sharp knife made of plastic. Good for cutting food and not much else."
- force = 0
- w_class = WEIGHT_CLASS_TINY
- throwforce = 0
- throw_range = 5
- custom_materials = list(/datum/material/plastic = 100)
- attack_verb = list("prodded", "whiffed","scratched", "poked")
- sharpness = IS_SHARP
- custom_price = 50
- var/break_chance = 25
-
-/obj/item/kitchen/knife/plastic/afterattack(mob/living/carbon/user)
- .=..()
- if(prob(break_chance))
- user.visible_message("[user]'s knife snaps into tiny pieces in their hand.")
- qdel(src)
-
-/obj/item/kitchen/knife/pizza_cutter
- name = "pizza cutter"
- icon_state = "pizza_cutter"
- desc = "A knife edge bent around a circle using the power of science. Perfect for safely cutting pizza."
- force = 1
- w_class = WEIGHT_CLASS_SMALL
- throwforce = 1
- throw_range = 6
- custom_materials = list(/datum/material/iron=4000)
- attack_verb = list("prodded", "whiffed","rolled", "poked")
- sharpness = IS_SHARP
-
-/obj/item/kitchen/knife/ritual
- name = "ritual knife"
- desc = "The unearthly energies that once powered this blade are now dormant."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "render"
- lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
- w_class = WEIGHT_CLASS_NORMAL
-
-/obj/item/kitchen/knife/bloodletter
- name = "bloodletter"
- desc = "An occult looking dagger that is cold to the touch. Somehow, the flawless orb on the pommel is made entirely of liquid blood."
- icon = 'icons/obj/ice_moon/artifacts.dmi'
- icon_state = "bloodletter"
- w_class = WEIGHT_CLASS_NORMAL
- var/bleed_stacks_per_hit = 3
-
-/obj/item/kitchen/knife/bloodletter/attack(mob/living/M, mob/living/carbon/user)
- . =..()
- if(istype(M) && (M.mob_biotypes & MOB_ORGANIC))
- var/datum/status_effect/stacking/saw_bleed/bloodletting/B = M.has_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting)
- if(!B)
- M.apply_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting, bleed_stacks_per_hit)
- else
- B.add_stacks(bleed_stacks_per_hit)
-
-/obj/item/kitchen/knife/butcher
- name = "butcher's cleaver"
- icon_state = "cleaver"
- item_state = "cleaver"
- desc = "A huge thing used for chopping and chopping up meat."
- flags_1 = CONDUCT_1
- force = 15
- throwforce = 10
- custom_materials = list(/datum/material/iron=18000)
- attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- w_class = WEIGHT_CLASS_NORMAL
- custom_price = 600
-
-/obj/item/kitchen/knife/hunting
- name = "hunting knife"
- desc = "Despite its name, it's mainly used for cutting meat from dead prey rather than actual hunting."
- item_state = "huntingknife"
- icon_state = "huntingknife"
-
-/obj/item/kitchen/knife/hunting/set_butchering()
- AddComponent(/datum/component/butchering, 80 - force, 100, force + 10)
-
-/obj/item/kitchen/knife/switchblade
- name = "switchblade"
- icon_state = "switchblade"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- desc = "A sharp, concealable, spring-loaded knife."
- flags_1 = CONDUCT_1
- force = 3
- w_class = WEIGHT_CLASS_SMALL
- throwforce = 5
- custom_materials = list(/datum/material/iron=12000)
- hitsound = 'sound/weapons/genhit.ogg'
- attack_verb = list("stubbed", "poked")
- resistance_flags = FIRE_PROOF
- var/extended = 0
-
-/obj/item/kitchen/knife/switchblade/attack_self(mob/user)
- extended = !extended
- playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE)
- if(extended)
- force = 20
- w_class = WEIGHT_CLASS_NORMAL
- throwforce = 23
- icon_state = "switchblade_ext"
- attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
- else
- force = 3
- w_class = WEIGHT_CLASS_SMALL
- throwforce = 5
- icon_state = "switchblade"
- attack_verb = list("stubbed", "poked")
- hitsound = 'sound/weapons/genhit.ogg'
- sharpness = IS_BLUNT
-
-/obj/item/kitchen/knife/combat
- name = "combat knife"
- icon = 'icons/obj/world/melee.dmi'
- icon_state = "combatknife"
- item_state = "combatknife"
- desc = "A military combat utility survival knife."
- embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE)
- force = 20
- throwforce = 20
- attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut")
- bayonet = TRUE
-
-/obj/item/kitchen/knife/combat/Initialize()
- . = ..()
- AddElement(/datum/element/world_icon, null, icon, 'icons/obj/item/knife.dmi')
-
-/obj/item/kitchen/knife/combat/survival
- name = "survival knife"
- icon_state = "survivalknife"
- item_state = "survivalknife"
- embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10)
- desc = "A hunting grade survival knife."
- force = 15
- throwforce = 15
- bayonet = TRUE
-
-/obj/item/kitchen/knife/combat/bone
- name = "bone dagger"
- item_state = "bone_dagger"
- icon_state = "bone_dagger"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- desc = "A sharpened bone. The bare minimum in survival."
- embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10)
- force = 15
- throwforce = 15
- custom_materials = null
-
-/obj/item/kitchen/knife/combat/cyborg
- name = "cyborg knife"
- icon = 'icons/obj/items_cyborg.dmi'
- icon_state = "knife_cyborg"
- desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable."
-
-/obj/item/kitchen/knife/shiv
- name = "glass shiv"
- icon = 'icons/obj/shards.dmi'
- icon_state = "shiv"
- item_state = "shiv"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- desc = "A makeshift glass shiv."
- force = 8
- throwforce = 12
- attack_verb = list("shanked", "shivved")
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
- custom_materials = list(/datum/material/glass=400)
-
-/obj/item/kitchen/knife/shiv/carrot
- name = "carrot shiv"
- icon_state = "carrotshiv"
- item_state = "carrotshiv"
- icon = 'icons/obj/kitchen.dmi'
- desc = "Unlike other carrots, you should probably keep this far away from your eyes."
- custom_materials = null
-
/obj/item/kitchen/rollingpin
name = "rolling pin"
desc = "Used to knock out the Bartender."
@@ -293,8 +74,6 @@
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
custom_price = 200
-/* Trays moved to /obj/item/storage/bag */
-
/obj/item/kitchen/spoon/plastic
name = "plastic spoon"
desc = "Just be careful your food doesn't melt the spoon first."
@@ -305,9 +84,3 @@
custom_materials = list(/datum/material/plastic=120)
custom_price = 50
var/break_chance = 25
-
-/obj/item/kitchen/knife/plastic/afterattack(mob/living/carbon/user)
- .=..()
- if(prob(break_chance))
- user.visible_message("[user]'s spoon snaps into tiny pieces in their hand.")
- qdel(src)
diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/melee/chainsaw.dm
similarity index 98%
rename from code/game/objects/items/chainsaw.dm
rename to code/game/objects/items/melee/chainsaw.dm
index f9181ef3ac6a..494ec65cdb5a 100644
--- a/code/game/objects/items/chainsaw.dm
+++ b/code/game/objects/items/melee/chainsaw.dm
@@ -4,6 +4,7 @@
name = "chainsaw"
desc = "A versatile power tool. Useful for limbing trees and delimbing humans."
icon_state = "chainsaw_off"
+ icon = 'icons/obj/weapon/axe.dmi'
lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
flags_1 = CONDUCT_1
diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/melee/dualsaber.dm
similarity index 99%
rename from code/game/objects/items/dualsaber.dm
rename to code/game/objects/items/melee/dualsaber.dm
index 7ddb02035927..965979db215a 100644
--- a/code/game/objects/items/dualsaber.dm
+++ b/code/game/objects/items/melee/dualsaber.dm
@@ -2,7 +2,7 @@
* Double-Bladed Energy Swords - Cheridan
*/
/obj/item/dualsaber
- icon = 'icons/obj/transforming_energy.dmi'
+ icon = 'icons/obj/weapon/energy.dmi'
icon_state = "dualsaber"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index b500eadca2f2..34219662e53d 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -1,5 +1,5 @@
/obj/item/melee/transforming/energy
- icon = 'icons/obj/transforming_energy.dmi'
+ icon = 'icons/obj/weapon/energy.dmi'
hitsound_on = 'sound/weapons/blade1.ogg'
heat = 3500
max_integrity = 200
@@ -255,7 +255,6 @@
/obj/item/melee/transforming/energy/ctf
name = "energy sword"
desc = "That cable over there, I'm going to cut it."
- icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "plasmasword0"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
diff --git a/code/game/objects/items/energyhalberd.dm b/code/game/objects/items/melee/energyhalberd.dm
similarity index 98%
rename from code/game/objects/items/energyhalberd.dm
rename to code/game/objects/items/melee/energyhalberd.dm
index 416964bbfded..62c6f5de6020 100644
--- a/code/game/objects/items/energyhalberd.dm
+++ b/code/game/objects/items/melee/energyhalberd.dm
@@ -3,8 +3,9 @@
* Copied mostly from dualsaber.dm to avoid inhertance issues
*/
/obj/item/energyhalberd
- icon = 'icons/obj/transforming_energy.dmi'
+ icon = 'icons/obj/weapon/energy.dmi'
icon_state = "halberd"
+ icon = 'icons/obj/weapon/energy.dmi'
lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
name = "energy halberd"
diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm
similarity index 72%
rename from code/game/objects/items/fireaxe.dm
rename to code/game/objects/items/melee/fireaxe.dm
index b2e5534a92b0..bfbed0fe361b 100644
--- a/code/game/objects/items/fireaxe.dm
+++ b/code/game/objects/items/melee/fireaxe.dm
@@ -1,13 +1,7 @@
-/*
- * Fireaxe
- */
-/obj/item/fireaxe // DEM AXES MAN, marker -Agouri
- icon_state = "fireaxe0"
- base_icon_state = "fireaxe"
+/obj/item/melee/axe
+ icon = 'icons/obj/weapon/axe.dmi'
lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi'
- name = "fire axe"
- desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?"
force = 5
throwforce = 15
w_class = WEIGHT_CLASS_BULKY
@@ -21,52 +15,58 @@
species_exception = list(/datum/species/kepori)
var/wielded = FALSE // track wielded status on item
-/obj/item/fireaxe/Initialize()
+/obj/item/melee/axe/Initialize()
. = ..()
RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
-/obj/item/fireaxe/ComponentInitialize()
+/obj/item/melee/axe/ComponentInitialize()
. = ..()
AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools
AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=24, icon_wielded="[base_icon_state]1")
/// triggered on wield of two handed item
-/obj/item/fireaxe/proc/on_wield(obj/item/source, mob/user)
+/obj/item/melee/axe/proc/on_wield(obj/item/source, mob/user)
SIGNAL_HANDLER
wielded = TRUE
/// triggered on unwield of two handed item
-/obj/item/fireaxe/proc/on_unwield(obj/item/source, mob/user)
+/obj/item/melee/axe/proc/on_unwield(obj/item/source, mob/user)
SIGNAL_HANDLER
wielded = FALSE
-/obj/item/fireaxe/update_icon_state()
+/obj/item/melee/axe/update_icon_state()
icon_state = "[base_icon_state]0"
return ..()
-/obj/item/fireaxe/afterattack(atom/A, mob/user, proximity)
+/obj/item/melee/axe/afterattack(atom/A, mob/user, proximity)
. = ..()
if(!proximity)
return
if(wielded) //destroys windows and grilles in one hit
if(istype(A, /obj/structure/window) || istype(A, /obj/structure/grille))
var/obj/structure/W = A
- W.obj_destruction("fireaxe")
+ W.obj_destruction("axe")
-/*
- * Bone Axe
- */
-/obj/item/fireaxe/boneaxe // Blatant imitation of the fireaxe, but made out of bone.
- icon_state = "bone_axe0"
- base_icon_state = "bone_axe"
+/obj/item/melee/axe/fire // DEM AXES MAN, marker -Agouri
+ name = "fire axe"
+ desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?"
+ icon_state = "fireaxe0"
+ base_icon_state = "fireaxe"
+
+/obj/item/melee/axe/bone // Blatant imitation of the fireaxe, but made out of bone.
name = "bone axe"
desc = "A large, vicious axe crafted out of several sharpened bone plates and crudely tied together. Made of monsters, by killing monsters, for killing monsters."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "bone_axe0"
+ base_icon_state = "bone_axe"
-/obj/item/fireaxe/boneaxe/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=23, icon_wielded="[base_icon_state]1")
+/obj/item/melee/axe/scrap
+ name = "scrap axe"
+ desc = "Oversided and with a pretty dull blade, its decent against armour"
+ armour_penetration = 10
+/obj/item/melee/axe/scrap/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=22, icon_wielded="[base_icon_state]1")
diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm
new file mode 100644
index 000000000000..83022e7125ff
--- /dev/null
+++ b/code/game/objects/items/melee/knife.dm
@@ -0,0 +1,208 @@
+/obj/item/melee/knife
+ icon_state = "kitchenknife"
+ item_state = "kitchenknife"
+ icon = 'icons/obj/weapon/knife.dmi'
+ lefthand_file = 'icons/mob/inhands/weapons/knifes_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/knifes_righthand.dmi'
+ pickup_sound = 'sound/items/handling/knife1_pickup.ogg'
+ drop_sound = 'sound/items/handling/knife3_drop.ogg'
+ flags_1 = CONDUCT_1
+ force = 10
+ w_class = WEIGHT_CLASS_SMALL
+ throwforce = 10
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ throw_speed = 3
+ throw_range = 6
+ custom_materials = list(/datum/material/iron=12000)
+ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ sharpness = IS_SHARP_ACCURATE
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
+ item_flags = EYE_STAB
+ tool_behaviour = TOOL_KNIFE
+
+
+/obj/item/melee/knife/ComponentInitialize()
+ . = ..()
+ set_butchering()
+
+///Adds the butchering component, used to override stats for special cases
+/obj/item/melee/knife/proc/set_butchering()
+ AddComponent(/datum/component/butchering, 80 - force, 100, force - 10) //bonus chance increases depending on force
+
+/obj/item/melee/knife/kitchen
+ name = "kitchen knife"
+ icon_state = "kitchenknife"
+ item_state = "kitchenknife"
+ desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
+
+/obj/item/melee/knife/plastic
+ name = "plastic knife"
+ icon_state = "plastic_knife"
+ desc = "A very safe, barely sharp knife made of plastic. Good for cutting food and not much else."
+ force = 0
+ w_class = WEIGHT_CLASS_TINY
+ throwforce = 0
+ throw_range = 5
+ custom_materials = list(/datum/material/plastic = 100)
+ attack_verb = list("prodded", "whiffed","scratched", "poked")
+ sharpness = IS_SHARP
+ custom_price = 50
+ var/break_chance = 25
+
+/obj/item/melee/knife/plastic/afterattack(mob/living/carbon/user)
+ .=..()
+ if(prob(break_chance))
+ user.visible_message("[user]'s spoon snaps into tiny pieces in their hand.")
+ qdel(src)
+
+
+/obj/item/melee/knife/plastic/afterattack(mob/living/carbon/user)
+ .=..()
+ if(prob(break_chance))
+ user.visible_message("[user]'s knife snaps into tiny pieces in their hand.")
+ qdel(src)
+
+/obj/item/melee/knife/pizza_cutter
+ name = "pizza cutter"
+ icon_state = "pizza_cutter"
+ desc = "A knife edge bent around a circle using the power of science. Perfect for safely cutting pizza."
+ force = 1
+ w_class = WEIGHT_CLASS_SMALL
+ throwforce = 1
+ throw_range = 6
+ custom_materials = list(/datum/material/iron=4000)
+ attack_verb = list("prodded", "whiffed","rolled", "poked")
+ sharpness = IS_SHARP
+
+/obj/item/melee/knife/butcher
+ name = "butcher's cleaver"
+ icon_state = "cleaver"
+ item_state = "cleaver"
+ desc = "A huge thing used for chopping and chopping up meat."
+ flags_1 = CONDUCT_1
+ force = 15
+ throwforce = 10
+ custom_materials = list(/datum/material/iron=18000)
+ attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ w_class = WEIGHT_CLASS_NORMAL
+ custom_price = 600
+
+/obj/item/melee/knife/hunting
+ name = "hunting knife"
+ desc = "Despite its name, it's mainly used for cutting meat from dead prey rather than actual hunting."
+ item_state = "huntingknife"
+ icon_state = "huntingknife"
+
+/obj/item/melee/knife/hunting/set_butchering()
+ AddComponent(/datum/component/butchering, 80 - force, 100, force + 10)
+
+/obj/item/melee/knife/combat
+ name = "combat knife"
+ icon_state = "combatknife"
+ item_state = "combatknife"
+ desc = "A military combat utility survival knife."
+ embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE)
+ force = 20
+ throwforce = 20
+ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut")
+
+/obj/item/melee/knife/survival
+ name = "survival knife"
+ icon_state = "survivalknife"
+ item_state = "survivalknife"
+ embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10)
+ desc = "A hunting grade survival knife."
+ force = 15
+ throwforce = 15
+ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut")
+
+/obj/item/melee/knife/bone
+ name = "bone dagger"
+ item_state = "bone_dagger"
+ icon_state = "bone_dagger"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ desc = "A sharpened bone. The bare minimum in survival."
+ embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10)
+ force = 15
+ throwforce = 15
+ custom_materials = null
+
+/obj/item/melee/knife/combat/cyborg
+ name = "cyborg knife"
+ icon = 'icons/obj/items_cyborg.dmi'
+ icon_state = "knife_cyborg"
+ desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable."
+
+/obj/item/melee/knife/shiv
+ name = "glass shiv"
+ icon = 'icons/obj/shards.dmi'
+ icon_state = "shiv"
+ item_state = "shiv"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ desc = "A makeshift glass shiv."
+ force = 8
+ throwforce = 12
+ attack_verb = list("shanked", "shivved")
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ custom_materials = list(/datum/material/glass=400)
+
+/obj/item/melee/knife/shiv/carrot
+ name = "carrot shiv"
+ icon_state = "carrotshiv"
+ item_state = "carrotshiv"
+ icon = 'icons/obj/kitchen.dmi'
+ desc = "Unlike other carrots, you should probably keep this far away from your eyes."
+ custom_materials = null
+
+/obj/item/melee/knife/switchblade
+ name = "switchblade"
+ icon_state = "switchblade"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ desc = "A sharp, concealable, spring-loaded knife."
+ flags_1 = CONDUCT_1
+ force = 3
+ w_class = WEIGHT_CLASS_SMALL
+ throwforce = 5
+ throw_speed = 3
+ throw_range = 6
+ custom_materials = list(/datum/material/iron=12000)
+ hitsound = 'sound/weapons/genhit.ogg'
+ attack_verb = list("stubbed", "poked")
+ resistance_flags = FIRE_PROOF
+ var/extended = 0
+
+/obj/item/melee/knife/switchblade/attack_self(mob/user)
+ extended = !extended
+ playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ if(extended)
+ force = 20
+ w_class = WEIGHT_CLASS_NORMAL
+ throwforce = 23
+ icon_state = "switchblade_ext"
+ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ sharpness = IS_SHARP
+ else
+ force = 3
+ w_class = WEIGHT_CLASS_SMALL
+ throwforce = 5
+ icon_state = "switchblade"
+ attack_verb = list("stubbed", "poked")
+ hitsound = 'sound/weapons/genhit.ogg'
+ sharpness = IS_BLUNT
+
+/obj/item/melee/knife/letter_opener
+ name = "letter opener"
+ icon = 'icons/obj/items.dmi'
+ icon_state = "letter_opener"
+ desc = "A military combat utility survival knife."
+ embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE)
+ force = 15
+ throwforce = 15
+ unique_reskin = list("Traditional" = "letter_opener",
+ "Boxcutter" = "letter_opener_b",
+ "Corporate" = "letter_opener_a"
+ )
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index 9d90a1a43373..afb4bfe2ec33 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -1,5 +1,14 @@
/obj/item/melee
item_flags = NEEDS_PERMIT
+ icon = 'icons/obj/weapon/misc.dmi'
+ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
+ var/projectile_block_chance = 0
+
+/obj/item/melee/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ if(attack_type == PROJECTILE_ATTACK)
+ final_block_chance = projectile_block_chance //Don't bring a sword to a gunfight
+ return ..()
/obj/item/melee/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user)
if(target.check_block())
@@ -8,14 +17,11 @@
user.Stun(40)
return TRUE
-
/obj/item/melee/chainofcommand
name = "chain of command"
desc = "A tool used by great men to placate the frothing masses."
icon_state = "chain"
item_state = "chain"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BELT
force = 10
@@ -44,487 +50,11 @@
. = ..()
AddComponent(/datum/component/butchering, 60, 80) //very imprecise
-/obj/item/melee/sabre
- name = "officer's sabre"
- desc = "An elegant weapon, its monomolecular edge is capable of cutting through flesh and bone with ease."
- icon_state = "sabre"
- item_state = "sabre"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- pickup_sound = 'sound/items/unsheath.ogg'
- drop_sound = 'sound/items/handling/metal_drop.ogg'
- flags_1 = CONDUCT_1
- obj_flags = UNIQUE_RENAME
- force = 15
- throwforce = 10
- w_class = WEIGHT_CLASS_BULKY
- block_chance = 60
- armour_penetration = 75
- sharpness = IS_SHARP
- attack_verb = list("slashed", "cut")
- hitsound = 'sound/weapons/rapierhit.ogg'
- custom_materials = list(/datum/material/iron = 1000)
-
-/obj/item/melee/sabre/Initialize()
- . = ..()
- AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results.
-
-/obj/item/melee/sabre/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == PROJECTILE_ATTACK)
- final_block_chance = 0 //Don't bring a sword to a gunfight
- return ..()
-
-/obj/item/melee/sabre/on_enter_storage(datum/component/storage/concrete/S)
- var/obj/item/storage/belt/sabre/B = S.real_location()
- if(istype(B))
- playsound(B, 'sound/items/sheath.ogg', 25, TRUE)
-
-/obj/item/melee/sabre/solgov
- name = "solarian sabre"
- desc = "A refined ceremonial blade often given to soldiers and high ranking officials of SolGov."
- icon_state = "sabresolgov"
- item_state = "sabresolgov"
-
-/obj/item/melee/sabre/suns
- name = "SUNS sabre"
- desc = "A blade of Solarian origin given to SUNS followers."
- icon_state = "suns-sabre"
- item_state = "suns-sabre"
-
-/obj/item/melee/sabre/suns/captain
- name = "SUNS captain sabre"
- desc = "An elegant blade awarded to SUNS captains. Despite its higher craftmanship, it appears to be just as effective as a normal sabre."
- icon_state = "suns-capsabre"
- item_state = "suns-capsabre"
-
-/obj/item/melee/sabre/suns/cmo
- name = "SUNS stick sabre"
- desc = "A thin blade used by SUNS medical instructors."
- icon_state = "suns-swordstick"
- item_state = "suns-swordstick"
-
-/obj/item/melee/sabre/suns/telescopic
- name = "telescopic sabre"
- desc = "A telescopic and retractable blade given to SUNS peacekeepers for easy concealment and carry. It's design makes it slightly less effective than normal sabres sadly, however it is still excelent at piercing armor."
- icon_state = "suns-tsword"
- item_state = "suns-tsword"
- force = 0
- throwforce = 0
- block_chance = 0
-
- slot_flags = ITEM_SLOT_BELT
- w_class = WEIGHT_CLASS_SMALL
- attack_verb = list("smacked", "prodded")
-
-
- var/extended = FALSE
- var/extend_sound = 'sound/weapons/batonextend.ogg'
-
-
-
- var/on_icon_state = "suns-tsword_ext"
- var/on_item_state = "suns-tsword_ext"
- var/off_icon_state = "suns-tsword"
- var/off_item_state = "suns-tsword"
-
- var/force_on = 10
- var/on_throwforce = 10
- var/on_blockchance = 40
-
- var/force_off = 0
- var/off_throwforce = 0
- var/off_blockchance = 0
-
- var/weight_class_on = WEIGHT_CLASS_BULKY
-
-/obj/item/melee/sabre/suns/telescopic/attack_self(mob/user)
- extended = !extended
-
- if(extended)
- to_chat(user, "You extend the [src].")
- icon_state = on_icon_state
- item_state = on_item_state
- slot_flags = 0
- w_class = weight_class_on
- force = force_on
- throwforce = on_throwforce
- block_chance = on_blockchance
- attack_verb = list("slashed", "cut")
- else
- to_chat(user, "You collapse the [src].")
- icon_state = off_icon_state
- item_state = off_item_state
- slot_flags = ITEM_SLOT_BELT
- w_class = WEIGHT_CLASS_SMALL
- force = force_off
- throwforce = off_throwforce
- block_chance = off_blockchance
- attack_verb = list("smacked", "prodded")
-
- playsound(get_turf(src), extend_sound, 50, TRUE)
- add_fingerprint(user)
-
-/obj/item/melee/beesword
- name = "The Stinger"
- desc = "Taken from a giant bee and folded over one thousand times in pure honey. Can sting through anything."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "beesword"
- item_state = "stinger"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- slot_flags = ITEM_SLOT_BELT
- force = 5
- w_class = WEIGHT_CLASS_BULKY
- sharpness = IS_SHARP
- throwforce = 10
- block_chance = 20
- armour_penetration = 65
- attack_verb = list("slashed", "stung", "prickled", "poked")
- hitsound = 'sound/weapons/rapierhit.ogg'
-
-/obj/item/melee/beesword/afterattack(atom/target, mob/user, proximity)
- . = ..()
- if(!proximity)
- return
- user.changeNext_move(CLICK_CD_RAPID)
- if(iscarbon(target))
- var/mob/living/carbon/H = target
- H.reagents.add_reagent(/datum/reagent/toxin, 4)
-
-/obj/item/melee/classic_baton
- name = "police baton"
- desc = "A wooden truncheon for beating criminal scum."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "classic_baton"
- item_state = "classic_baton"
- lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
- slot_flags = ITEM_SLOT_BELT
- force = 12 //9 hit crit
- w_class = WEIGHT_CLASS_NORMAL
-
- var/cooldown_check = 0 // Used interally, you don't want to modify
-
- var/cooldown = 40 // Default wait time until can stun again.
- var/knockdown_time_carbon = (1.5 SECONDS) // Knockdown length for carbons.
- var/stun_time_silicon = (5 SECONDS) // If enabled, how long do we stun silicons.
- var/stamina_damage = 55 // Do we deal stamina damage.
- var/affect_silicon = FALSE // Does it stun silicons.
- var/on_sound // "On" sound, played when switching between able to stun or not.
- var/on_stun_sound = 'sound/effects/woodhit.ogg' // Default path to sound for when we stun.
- var/stun_animation = TRUE // Do we animate the "hit" when stunning.
- var/on = TRUE // Are we on or off.
-
- var/on_icon_state // What is our sprite when turned on
- var/off_icon_state // What is our sprite when turned off
- var/on_item_state // What is our in-hand sprite when turned on
- var/force_on // Damage when on - not stunning
- var/force_off // Damage when off - not stunning
- var/weight_class_on // What is the new size class when turned on
-
-// Description for trying to stun when still on cooldown.
-/obj/item/melee/classic_baton/proc/get_wait_description()
- return
-
-// Description for when turning their baton "on"
-/obj/item/melee/classic_baton/proc/get_on_description()
- . = list()
-
- .["local_on"] = "You extend the baton."
- .["local_off"] = "You collapse the baton."
-
- return .
-
-// Default message for stunning mob.
-/obj/item/melee/classic_baton/proc/get_stun_description(mob/living/target, mob/living/user)
- . = list()
-
- .["visible"] = "[user] knocks [target] down with [src]!"
- .["local"] = "[user] knocks you down with [src]!"
-
- return .
-
-// Default message for stunning a silicon.
-/obj/item/melee/classic_baton/proc/get_silicon_stun_description(mob/living/target, mob/living/user)
- . = list()
-
- .["visible"] = "[user] pulses [target]'s sensors with the baton!"
- .["local"] = "You pulse [target]'s sensors with the baton!"
-
- return .
-
-// Are we applying any special effects when we stun to carbon
-/obj/item/melee/classic_baton/proc/additional_effects_carbon(mob/living/target, mob/living/user)
- return
-
-// Are we applying any special effects when we stun to silicon
-/obj/item/melee/classic_baton/proc/additional_effects_silicon(mob/living/target, mob/living/user)
- return
-
-/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user)
- if(!on)
- return ..()
-
- add_fingerprint(user)
- if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
- to_chat(user, "You hit yourself over the head!")
-
- user.Paralyze(knockdown_time_carbon * force)
- user.apply_damage(stamina_damage, STAMINA, BODY_ZONE_HEAD)
-
- additional_effects_carbon(user) // user is the target here
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
- else
- user.take_bodypart_damage(2*force)
- return
- if(iscyborg(target))
- // We don't stun if we're on harm.
- if (user.a_intent != INTENT_HARM)
- if (affect_silicon)
- var/list/desc = get_silicon_stun_description(target, user)
-
- target.flash_act(affect_silicon = TRUE)
- target.Paralyze(stun_time_silicon)
- additional_effects_silicon(target, user)
-
- user.visible_message(desc["visible"], desc["local"])
- playsound(get_turf(src), on_stun_sound, 100, TRUE, -1)
-
- if (stun_animation)
- user.do_attack_animation(target)
- else
- ..()
- else
- ..()
- return
- if(!isliving(target))
- return
- if (user.a_intent == INTENT_HARM)
- if(!..())
- return
- if(!iscyborg(target))
- return
- else
- if(cooldown_check <= world.time)
- if(ishuman(target))
- var/mob/living/carbon/human/H = target
- if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK))
- return
- if(check_martial_counter(H, user))
- return
-
- var/list/desc = get_stun_description(target, user)
-
- if (stun_animation)
- user.do_attack_animation(target)
-
- playsound(get_turf(src), on_stun_sound, 75, TRUE, -1)
- target.Knockdown(knockdown_time_carbon)
- target.apply_damage(stamina_damage, STAMINA, BODY_ZONE_CHEST)
- additional_effects_carbon(target, user)
-
- log_combat(user, target, "stunned", src)
- add_fingerprint(user)
-
- target.visible_message(desc["visible"], desc["local"])
-
- if(!iscarbon(user))
- target.LAssailant = null
- else
- target.LAssailant = WEAKREF(user)
- cooldown_check = world.time + cooldown
- else
- var/wait_desc = get_wait_description()
- if (wait_desc)
- to_chat(user, wait_desc)
-
-/obj/item/conversion_kit
- name = "conversion kit"
- desc = "A strange box containing wood working tools and an instruction paper to turn stun batons into something else."
- icon = 'icons/obj/storage.dmi'
- icon_state = "uk"
- custom_price = 450
-
-/obj/item/melee/classic_baton/telescopic
- name = "telescopic baton"
- desc = "A compact yet robust personal defense weapon. Can be concealed when folded."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "telebaton_0"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- item_state = null
- slot_flags = ITEM_SLOT_BELT
- w_class = WEIGHT_CLASS_SMALL
- item_flags = NONE
- force = 0
- on = FALSE
- on_sound = 'sound/weapons/batonextend.ogg'
-
- on_icon_state = "telebaton_1"
- off_icon_state = "telebaton_0"
- on_item_state = "nullrod"
- force_on = 10
- force_off = 0
- weight_class_on = WEIGHT_CLASS_BULKY
-
-/obj/item/melee/classic_baton/telescopic/attack_self(mob/user)
- on = !on
- var/list/desc = get_on_description()
-
- if(on)
- to_chat(user, desc["local_on"])
- icon_state = on_icon_state
- item_state = on_item_state
- w_class = weight_class_on
- force = force_on
- attack_verb = list("smacked", "struck", "cracked", "beaten")
- else
- to_chat(user, desc["local_off"])
- icon_state = off_icon_state
- item_state = null //no sprite for concealment even when in hand
- slot_flags = ITEM_SLOT_BELT
- w_class = WEIGHT_CLASS_SMALL
- force = force_off
- attack_verb = list("hit", "poked")
-
- playsound(src.loc, on_sound, 50, TRUE)
- add_fingerprint(user)
-
-/obj/item/melee/classic_baton/telescopic/contractor_baton
- name = "contractor baton"
- desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "contractor_baton_0"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- item_state = null
- slot_flags = ITEM_SLOT_BELT
- w_class = WEIGHT_CLASS_SMALL
- item_flags = NONE
- force = 5
-
- cooldown = 25
- stamina_damage = 85
- affect_silicon = TRUE
- on_sound = 'sound/weapons/contractorbatonextend.ogg'
- on_stun_sound = 'sound/effects/contractorbatonhit.ogg'
-
- on_icon_state = "contractor_baton_1"
- off_icon_state = "contractor_baton_0"
- on_item_state = "contractor_baton"
- force_on = 16
- force_off = 5
- weight_class_on = WEIGHT_CLASS_NORMAL
-
-/obj/item/melee/classic_baton/telescopic/contractor_baton/get_wait_description()
- return "The baton is still charging!"
-
-/obj/item/melee/classic_baton/telescopic/contractor_baton/additional_effects_carbon(mob/living/target, mob/living/user)
- target.Jitter(20)
- target.stuttering += 20
-
-/obj/item/melee/supermatter_sword
- name = "supermatter sword"
- desc = "In a universe full of bad ideas, this might just be the worst."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "supermatter_sword"
- item_state = "supermatter_sword"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- slot_flags = null
- w_class = WEIGHT_CLASS_BULKY
- force = 0.001
- armour_penetration = 1000
- var/obj/machinery/power/supermatter_crystal/shard
- var/balanced = 1
- force_string = "INFINITE"
-
-/obj/item/melee/supermatter_sword/Initialize()
- . = ..()
- shard = new /obj/machinery/power/supermatter_crystal(src)
- qdel(shard.countdown)
- shard.countdown = null
- START_PROCESSING(SSobj, src)
- visible_message("[src] appears, balanced ever so perfectly on its hilt. This isn't ominous at all.")
-
-/obj/item/melee/supermatter_sword/process()
- if(balanced || throwing || ismob(src.loc) || isnull(src.loc))
- return
- if(!isturf(src.loc))
- var/atom/target = src.loc
- forceMove(target.loc)
- consume_everything(target)
- else
- var/turf/T = get_turf(src)
- if(!isspaceturf(T))
- consume_turf(T)
-
-/obj/item/melee/supermatter_sword/afterattack(target, mob/user, proximity_flag)
- . = ..()
- if(user && target == user)
- user.dropItemToGround(src)
- if(proximity_flag)
- consume_everything(target)
-
-/obj/item/melee/supermatter_sword/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
- ..()
- if(ismob(hit_atom))
- var/mob/M = hit_atom
- if(src.loc == M)
- M.dropItemToGround(src)
- consume_everything(hit_atom)
-
-/obj/item/melee/supermatter_sword/pickup(user)
- ..()
- balanced = 0
-
-/obj/item/melee/supermatter_sword/ex_act(severity, target)
- visible_message("The blast wave smacks into [src] and rapidly flashes to ash.",\
- "You hear a loud crack as you are washed with a wave of heat.")
- consume_everything()
-
-/obj/item/melee/supermatter_sword/acid_act()
- visible_message("The acid smacks into [src] and rapidly flashes to ash.",\
- "You hear a loud crack as you are washed with a wave of heat.")
- consume_everything()
-
-/obj/item/melee/supermatter_sword/bullet_act(obj/projectile/P)
- visible_message("[P] smacks into [src] and rapidly flashes to ash.",\
- "You hear a loud crack as you are washed with a wave of heat.")
- consume_everything(P)
- return BULLET_ACT_HIT
-
-
-/obj/item/melee/supermatter_sword/proc/consume_everything(target)
- if(isnull(target))
- shard.Consume()
- else if(!isturf(target))
- shard.Bumped(target)
- else
- consume_turf(target)
-
-/obj/item/melee/supermatter_sword/proc/consume_turf(turf/T)
- var/oldtype = T.type
- var/turf/newT = T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
- if(newT.type == oldtype)
- return
- playsound(T, 'sound/effects/supermatter.ogg', 50, TRUE)
- T.visible_message("[T] smacks into [src] and rapidly flashes to ash.",\
- "You hear a loud crack as you are washed with a wave of heat.")
- shard.Consume()
-
-/obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna)
- return FALSE
-
/obj/item/melee/curator_whip
name = "curator's whip"
desc = "Somewhat eccentric and outdated, it still stings like hell to be hit by."
icon_state = "whip"
item_state = "chain"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
slot_flags = ITEM_SLOT_BELT
force = 15
w_class = WEIGHT_CLASS_NORMAL
@@ -538,345 +68,128 @@
H.drop_all_held_items()
H.visible_message("[user] disarms [H]!", "[user] disarmed you!")
-/obj/item/melee/roastingstick
- name = "advanced roasting stick"
- desc = "A telescopic roasting stick with a miniature shield generator designed to ensure entry into various high-tech shielded cooking ovens and firepits."
- icon_state = "roastingstick_0"
- item_state = "null"
+/obj/item/melee/cleric_mace
+ name = "cleric mace"
+ desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past."
+ icon_state = "mace_greyscale"
+ item_state = "mace_greyscale"
+ material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Material type changes the prefix as well as the color.
+ custom_materials = list(/datum/material/iron = 12000) //Defaults to an Iron Mace.
slot_flags = ITEM_SLOT_BELT
- w_class = WEIGHT_CLASS_SMALL
- item_flags = NONE
- force = 0
- attack_verb = list("hit", "poked")
- var/obj/item/reagent_containers/food/snacks/sausage/held_sausage
- var/static/list/ovens
- var/on = FALSE
- var/datum/beam/beam
-
-/obj/item/melee/roastingstick/Initialize()
- . = ..()
- if (!ovens)
- ovens = typecacheof(list(/obj/singularity, /obj/machinery/power/supermatter_crystal, /obj/structure/bonfire))
-
-/obj/item/melee/roastingstick/attack_self(mob/user)
- on = !on
- if(on)
- extend(user)
- else
- if (held_sausage)
- to_chat(user, "You can't retract [src] while [held_sausage] is attached!")
- return
- retract(user)
-
- playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE)
- add_fingerprint(user)
-
-/obj/item/melee/roastingstick/attackby(atom/target, mob/user)
- ..()
- if (istype(target, /obj/item/reagent_containers/food/snacks/sausage))
- if (!on)
- to_chat(user, "You must extend [src] to attach anything to it!")
- return
- if (held_sausage)
- to_chat(user, "[held_sausage] is already attached to [src]!")
- return
- if (user.transferItemToLoc(target, src))
- held_sausage = target
- else
- to_chat(user, "[target] doesn't seem to want to get on [src]!")
- update_appearance()
-
-/obj/item/melee/roastingstick/attack_hand(mob/user)
- ..()
- if (held_sausage)
- user.put_in_hands(held_sausage)
- held_sausage = null
- update_appearance()
-
-/obj/item/melee/roastingstick/update_overlays()
- . = ..()
- if (held_sausage)
- . += mutable_appearance(icon, "roastingstick_sausage")
-
-/obj/item/melee/roastingstick/proc/extend(user)
- to_chat(user, "You extend [src].")
- icon_state = "roastingstick_1"
- item_state = "nullrod"
+ force = 14
w_class = WEIGHT_CLASS_BULKY
-
-/obj/item/melee/roastingstick/proc/retract(user)
- to_chat(user, "You collapse [src].")
- icon_state = "roastingstick_0"
- item_state = null
- w_class = WEIGHT_CLASS_SMALL
-
-/obj/item/melee/roastingstick/handle_atom_del(atom/target)
- if (target == held_sausage)
- held_sausage = null
- update_appearance()
-
-/obj/item/melee/roastingstick/afterattack(atom/target, mob/user, proximity)
- . = ..()
- if (!on)
- return
- if (is_type_in_typecache(target, ovens))
- if (held_sausage && held_sausage.roasted)
- to_chat(src, "Your [held_sausage] has already been cooked!")
- return
- if (istype(target, /obj/singularity) && get_dist(user, target) < 10)
- to_chat(user, "You send [held_sausage] towards [target].")
- playsound(src, 'sound/items/rped.ogg', 50, TRUE)
- beam = user.Beam(target,icon_state="rped_upgrade",time=100)
- else if (user.Adjacent(target))
- to_chat(user, "You extend [src] towards [target].")
- playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE)
- else
- return
- if(do_after(user, 100, target = user))
- finish_roasting(user, target)
- else
- QDEL_NULL(beam)
- playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
-
-/obj/item/melee/roastingstick/proc/finish_roasting(user, atom/target)
- to_chat(user, "You finish roasting [held_sausage].")
- playsound(src,'sound/items/welder2.ogg',50,TRUE)
- held_sausage.add_atom_colour(rgb(103,63,24), FIXED_COLOUR_PRIORITY)
- held_sausage.name = "[target.name]-roasted [held_sausage.name]"
- held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]."
- update_appearance()
-
-/obj/item/melee/greykingsword
- name = "blade of the grey-king"
- desc = "A legendary sword made with 3 replica katanas nailed together and dipped in heavy narcotics."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "grey_sword"
- item_state = "swordoff"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- flags_1 = CONDUCT_1
- slot_flags = ITEM_SLOT_BACK
- force = 15
throwforce = 8
- w_class = WEIGHT_CLASS_NORMAL
- block_chance = 30
- attack_verb = list("struck", "slashed", "mall-ninjad", "tided", "multi-shanked", "shredded")
- custom_materials = list(/datum/material/iron = 1420)
- sharpness = IS_SHARP
-
- var/prick_chance = 50
- var/prick_chems = list(
- /datum/reagent/toxin = 10,
- /datum/reagent/toxin/mindbreaker = 10,
- /datum/reagent/drug/space_drugs = 10,
- /datum/reagent/drug/crank = 5,
- /datum/reagent/drug/methamphetamine = 5,
- /datum/reagent/drug/bath_salts = 5,
- /datum/reagent/drug/aranesp = 5,
- /datum/reagent/drug/pumpup = 10,
- /datum/reagent/medicine/omnizine = 10,
- /datum/reagent/medicine/earthsblood = 15,
- /datum/reagent/medicine/omnizine/protozine = 15
- )
-
-/obj/item/melee/greykingsword/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
- if (iscarbon(target) && prob(prick_chance))
- var/mob/living/carbon/C = target
- var/datum/reagent/R = pick(prick_chems)
- C.reagents.add_reagent(R, prick_chems[R])
- C.visible_message("[user] is pricked!", \
- "You've been pricked by the [src]!")
- log_combat(user, C, "pricked", src.name, "with [prick_chems[R]]u of [R]")
- return ..()
-
-
-/obj/item/melee/greykingsword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text, final_block_chance, damage, attack_type)
- if(attack_type == PROJECTILE_ATTACK)
- final_block_chance = 1 //Still not like your Japaniese animes though.
- return ..()
-
-/obj/item/kitchen/knife/letter_opener
- name = "letter opener"
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "letter_opener"
- desc = "A military combat utility survival knife."
- embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE)
- force = 15
- throwforce = 15
- unique_reskin = list("Traditional" = "letter_opener",
- "Boxcutter" = "letter_opener_b",
- "Corporate" = "letter_opener_a"
- )
-/obj/item/melee/weebstick
- name = "Weeb Stick"
- desc = "Glorious nippon steel, folded 1000 times."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "weeb_blade"
- item_state = "weeb_blade"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- pickup_sound = 'sound/items/handling/knife2_pickup.ogg'
- drop_sound = 'sound/items/handling/metal_drop.ogg'
- flags_1 = CONDUCT_1
- obj_flags = UNIQUE_RENAME
- w_class = WEIGHT_CLASS_BULKY
- slot_flags = ITEM_SLOT_BACK
- sharpness = IS_SHARP_ACCURATE
- force = 25
- throw_speed = 4
- throw_range = 5
- throwforce = 12
- block_chance = 20
armour_penetration = 50
- hitsound = 'sound/weapons/anime_slash.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "diced", "cut")
+ attack_verb = list("smacked", "struck", "cracked", "beaten")
+ var/overlay_state = "mace_handle"
+ var/mutable_appearance/overlay
-/obj/item/melee/weebstick/Initialize()
+/obj/item/melee/cleric_mace/Initialize()
. = ..()
- AddComponent(/datum/component/butchering, 25, 90, 5) //Not made for scalping victims, but will work nonetheless
-
-/obj/item/melee/weebstick/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == PROJECTILE_ATTACK)
- final_block_chance = block_chance / 2 //Pretty good...
- return ..()
-
-/obj/item/melee/weebstick/on_exit_storage(datum/component/storage/concrete/S)
- var/obj/item/storage/belt/weebstick/B = S.real_location()
- if(istype(B))
- playsound(B, 'sound/items/unsheath.ogg', 25, TRUE)
-
-/obj/item/melee/weebstick/on_enter_storage(datum/component/storage/concrete/S)
- var/obj/item/storage/belt/weebstick/B = S.real_location()
- if(istype(B))
- playsound(B, 'sound/items/sheath.ogg', 25, TRUE)
-
-/obj/item/storage/belt/weebstick
- name = "nanoforged blade sheath"
- desc = "It yearns to bath in the blood of your enemies... but you hold it back!"
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "weeb_sheath"
- item_state = "sheath"
- w_class = WEIGHT_CLASS_BULKY
- force = 3
- var/primed = FALSE //Prerequisite to anime bullshit
- // ##The anime bullshit## - Mostly stolen from action/innate/dash
- var/dash_sound = 'sound/weapons/unsheathed_blade.ogg'
- var/beam_effect = "blood_beam"
- var/phasein = /obj/effect/temp_visual/dir_setting/cult/phase
- var/phaseout = /obj/effect/temp_visual/dir_setting/cult/phase
-
-/obj/item/storage/belt/weebstick/ComponentInitialize()
- . = ..()
- AddElement(/datum/element/update_icon_updates_onmob)
- var/datum/component/storage/STR = GetComponent(/datum/component/storage)
- STR.max_items = 1
- STR.use_sound = null
- STR.max_w_class = WEIGHT_CLASS_BULKY
- STR.set_holdable(list(
- /obj/item/melee/weebstick
- ))
+ overlay = mutable_appearance(icon, overlay_state)
+ overlay.appearance_flags = RESET_COLOR
+ add_overlay(overlay)
+
+/obj/item/melee/baseball_bat
+ name = "baseball bat"
+ desc = "There ain't a skull in the league that can withstand a swatter."
+ icon = 'icons/obj/weapon/blunt.dmi'
+ icon_state = "baseball_bat"
+ item_state = "baseball_bat"
+ force = 12
+ throwforce = 12
+ attack_verb = list("beat", "smacked")
+ custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 3.5)
+ w_class = WEIGHT_CLASS_HUGE
+ var/homerun_ready = 0
+ var/homerun_able = 0
-/obj/item/storage/belt/weebstick/examine(mob/user)
- . = ..()
- if(length(contents))
- . += "Use [src] in-hand to prime for an opening strike."
- . += "Alt-click it to quickly draw the blade."
+/obj/item/melee/baseball_bat/homerun
+ name = "home run bat"
+ desc = "This thing looks dangerous... Dangerously good at baseball, that is."
+ homerun_able = 1
-/obj/item/storage/belt/weebstick/AltClick(mob/user)
- if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)) || primed)
+/obj/item/melee/baseball_bat/attack_self(mob/user)
+ if(!homerun_able)
+ ..()
return
- if(length(contents))
- var/obj/item/I = contents[1]
- playsound(user, dash_sound, 25, TRUE)
- user.visible_message("[user] swiftly draws \the [I].", "You draw \the [I].")
- user.put_in_hands(I)
- update_appearance()
- else
- to_chat(user, "[src] is empty!")
-
-/obj/item/storage/belt/weebstick/attack_self(mob/user)
- if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
+ if(homerun_ready)
+ to_chat(user, "You're already ready to do a home run!")
+ ..()
return
- if(length(contents))
- var/datum/component/storage/CP = GetComponent(/datum/component/storage)
- if(primed)
- CP.locked = FALSE
- playsound(user, 'sound/items/sheath.ogg', 25, TRUE)
- to_chat(user, "You return your stance.")
- primed = FALSE
- update_appearance()
- else
- CP.locked = TRUE //Prevents normal removal of the blade while primed
- playsound(user, 'sound/items/unsheath.ogg', 25, TRUE)
- user.visible_message("[user] grips the blade within [src] and primes to attack.", "You take an opening stance...", "You hear a weapon being drawn...")
- primed = TRUE
- update_appearance()
- else
- to_chat(user, "[src] is empty!")
+ to_chat(user, "You begin gathering strength...")
+ playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, TRUE)
+ if(do_after(user, 90, target = src))
+ to_chat(user, "You gather power! Time for a home run!")
+ homerun_ready = 1
+ ..()
-/obj/item/storage/belt/weebstick/afterattack(atom/A, mob/living/user, proximity_flag, params)
+/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user)
. = ..()
- if(primed && length(contents))
- if(!(A in view(user.client.view, user)))
- return
- var/obj/item/I = contents[1]
- if(!user.put_in_inactive_hand(I))
- to_chat(user, "You need a free hand!")
- return
- var/datum/component/storage/CP = GetComponent(/datum/component/storage)
- CP.locked = FALSE
- primed = FALSE
- update_appearance()
- primed_attack(A, user)
- if(CanReach(A, I))
- I.melee_attack_chain(user, A, params)
- user.swap_hand()
-
-/obj/item/storage/belt/weebstick/proc/primed_attack(atom/target, mob/living/user)
- var/turf/end = get_turf(user)
- var/turf/start = get_turf(user)
- var/obj/spot1 = new phaseout(start, user.dir)
- var/halt = FALSE
- // Stolen dash code
- for(var/T in getline(start, get_turf(target)))
- var/turf/tile = T
- for(var/mob/living/victim in tile)
- if(victim != user)
- playsound(victim, 'sound/weapons/anime_slash.ogg', 10, TRUE)
- victim.take_bodypart_damage(15)
- // Unlike actual ninjas, we stop noclip-dashing here.
- if(isclosedturf(T))
- halt = TRUE
- for(var/obj/O in tile)
- // We ignore mobs as we are cutting through them
- if(!O.CanPass(user, tile))
- halt = TRUE
- if(halt)
- break
- else
- end = T
- user.forceMove(end) // YEET
- playsound(start, dash_sound, 35, TRUE)
- var/obj/spot2 = new phasein(end, user.dir)
- spot1.Beam(spot2, beam_effect, time=20)
- user.visible_message("In a flash of red, [user] draws [user.p_their()] blade!", "You dash forward while drawing your weapon!", "You hear a blade slice through the air at impossible speeds!")
+ var/atom/throw_target = get_edge_target_turf(target, user.dir)
+ if(homerun_ready)
+ user.visible_message("It's a home run!")
+ target.throw_at(throw_target, rand(8,10), 14, user)
+ SSexplosions.medturf += throw_target
+ playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, TRUE)
+ homerun_ready = 0
+ return
+ else if(!target.anchored)
+ target.throw_at(throw_target, rand(1,2), 2, user, gentle = TRUE)
+
+/obj/item/melee/baseball_bat/ablative
+ name = "metal baseball bat"
+ desc = "This bat is made of highly reflective, highly armored material."
+ icon_state = "baseball_bat_metal"
+ item_state = "baseball_bat_metal"
+ force = 12
+ throwforce = 15
-/obj/item/storage/belt/weebstick/update_icon_state()
- icon_state = "weeb_sheath"
- item_state = "sheath"
- if(contents.len)
- if(primed)
- icon_state += "-primed"
- else
- icon_state += "-blade"
- item_state += "-sabre"
- return ..()
+/obj/item/melee/baseball_bat/bone
+ name = "bone club"
+ desc = "A long and hard shaft of rock solid bone." // I am the master of comedy
+ icon_state = "baseball_bat_bone"
+ item_state = "baseball_bat_bone"
+
+/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers
+ var/picksound = rand(1,2)
+ var/turf = get_turf(src)
+ if(picksound == 1)
+ playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, TRUE)
+ if(picksound == 2)
+ playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, TRUE)
+ return 1
+
+/obj/item/melee/flyswatter
+ name = "flyswatter"
+ desc = "Useful for killing insects of all sizes."
+ icon_state = "flyswatter"
+ item_state = "flyswatter"
+ force = 1
+ throwforce = 1
+ attack_verb = list("swatted", "smacked")
+ hitsound = 'sound/effects/snap.ogg'
+ w_class = WEIGHT_CLASS_SMALL
+ //Things in this list will be instantly splatted. Flyman weakness is handled in the flyman species weakness proc.
+ var/list/strong_against
-/obj/item/storage/belt/weebstick/PopulateContents()
- //Time to generate names now that we have the sword
- var/n_title = pick(GLOB.ninja_titles)
- var/n_name = pick(GLOB.ninja_names)
- var/obj/item/melee/weebstick/sword = new /obj/item/melee/weebstick(src)
- sword.name = "[n_title] blade of clan [n_name]"
- name = "[n_title] scabbard of clan [n_name]"
- update_appearance()
+/obj/item/melee/flyswatter/Initialize()
+ . = ..()
+ strong_against = typecacheof(list(
+ /mob/living/simple_animal/hostile/poison/bees/,
+ /mob/living/simple_animal/butterfly,
+ /mob/living/simple_animal/hostile/cockroach,
+ /obj/item/queen_bee
+ ))
+
+/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
+ . = ..()
+ if(proximity_flag)
+ if(is_type_in_typecache(target, strong_against))
+ new /obj/effect/decal/cleanable/insectguts(target.drop_location())
+ to_chat(user, "You easily splat the [target].")
+ if(istype(target, /mob/living/))
+ var/mob/living/bug = target
+ bug.death(1)
+ else
+ qdel(target)
diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/melee/powerfist.dm
similarity index 100%
rename from code/game/objects/items/powerfist.dm
rename to code/game/objects/items/melee/powerfist.dm
diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm
new file mode 100644
index 000000000000..42717117fd8e
--- /dev/null
+++ b/code/game/objects/items/melee/spear.dm
@@ -0,0 +1,137 @@
+//spears
+/obj/item/melee/spear
+ icon_state = "spearglass0"
+ icon = 'icons/obj/weapon/spear.dmi'
+ lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
+ name = "spear"
+ desc = "A haphazardly-constructed yet still deadly weapon of ancient design."
+ force = 10
+ w_class = WEIGHT_CLASS_BULKY
+ slot_flags = ITEM_SLOT_BACK
+ throwforce = 20
+ throw_speed = 4
+ embedding = list("impact_pain_mult" = 3)
+ armour_penetration = 10
+ custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075)
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
+ sharpness = IS_SHARP
+ max_integrity = 200
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
+ species_exception = list(/datum/species/kepori)
+ var/icon_prefix = "spearglass"
+
+/obj/item/melee/spear/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad.
+ AddComponent(/datum/component/jousting)
+ AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1")
+
+/obj/item/melee/spear/update_icon_state()
+ icon_state = "[icon_prefix]0"
+ return ..()
+
+/obj/item/melee/spear/CheckParts(list/parts_list)
+ var/obj/item/shard/tip = locate() in parts_list
+ if (istype(tip, /obj/item/shard/plasma))
+ throwforce = 21
+ icon_prefix = "spearplasma"
+ AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1")
+ update_appearance()
+ qdel(tip)
+ ..()
+
+/*
+ * Bone Spear
+ */
+/obj/item/melee/spear/bone //Blatant imitation of spear, but made out of bone. Not valid for explosive modification.
+ icon_state = "bone_spear0"
+ name = "bone spear"
+ base_icon_state = "bone_spear0"
+ icon_prefix = "bone_spear"
+ desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology."
+ //this should be a plasma spear or worse.
+ force = 11
+ throwforce = 21
+
+/obj/item/melee/spear/bone/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1")
+
+/obj/item/melee/spear/explosive
+ name = "explosive lance"
+ icon_state = "spearbomb0"
+ base_icon_state = "spearbomb"
+ icon_prefix = "spearbomb"
+ var/obj/item/grenade/explosive = null
+ var/war_cry = "AAAAARGH!!!"
+ var/wielded = FALSE // track wielded status on item
+
+/obj/item/melee/spear/explosive/Initialize(mapload)
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
+ set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances
+
+/obj/item/melee/spear/explosive/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1")
+
+/// triggered on wield of two handed item
+/obj/item/melee/spear/explosive/proc/on_wield(obj/item/source, mob/user)
+ SIGNAL_HANDLER
+
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/melee/spear/explosive/proc/on_unwield(obj/item/source, mob/user)
+ SIGNAL_HANDLER
+
+ wielded = FALSE
+
+/obj/item/melee/spear/explosive/proc/set_explosive(obj/item/grenade/G)
+ if(explosive)
+ QDEL_NULL(explosive)
+ G.forceMove(src)
+ explosive = G
+ desc = "A makeshift spear with [G] attached to it"
+
+/obj/item/melee/spear/explosive/CheckParts(list/parts_list)
+ var/obj/item/grenade/G = locate() in parts_list
+ if(G)
+ var/obj/item/melee/spear/lancePart = locate() in parts_list
+ var/datum/component/two_handed/comp_twohand = lancePart.GetComponent(/datum/component/two_handed)
+ if(comp_twohand)
+ var/lance_wielded = comp_twohand.force_wielded
+ var/lance_unwielded = comp_twohand.force_unwielded
+ AddComponent(/datum/component/two_handed, force_unwielded=lance_unwielded, force_wielded=lance_wielded)
+ throwforce = lancePart.throwforce
+ icon_prefix = lancePart.icon_prefix
+ parts_list -= G
+ parts_list -= lancePart
+ set_explosive(G)
+ qdel(lancePart)
+ ..()
+
+/obj/item/melee/spear/explosive/examine(mob/user)
+ . = ..()
+ . += "Alt-click to set your war cry."
+
+/obj/item/melee/spear/explosive/AltClick(mob/user)
+ if(user.canUseTopic(src, BE_CLOSE))
+ ..()
+ if(istype(user) && loc == user)
+ var/input = stripped_input(user,"What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50)
+ if(input)
+ src.war_cry = input
+
+/obj/item/melee/spear/explosive/afterattack(atom/movable/AM, mob/user, proximity)
+ . = ..()
+ if(!proximity)
+ return
+ if(wielded)
+ user.say("[war_cry]", forced="spear warcry")
+ explosive.forceMove(AM)
+ explosive.prime()
+ qdel(src)
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm
similarity index 59%
rename from code/game/objects/items/stunbaton.dm
rename to code/game/objects/items/melee/stunbaton.dm
index 3265b36a3b41..05225d80cff8 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/melee/stunbaton.dm
@@ -1,7 +1,7 @@
/obj/item/melee/baton
name = "stun baton"
desc = "A stun baton for incapacitating people with."
-
+ icon = 'icons/obj/weapon/baton.dmi'
icon_state = "stunbaton"
item_state = "baton"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
@@ -333,3 +333,233 @@
/obj/item/melee/baton/boomerang/loaded //Same as above, comes with a cell.
preload_cell_type = /obj/item/stock_parts/cell/high
+
+/obj/item/melee/classic_baton
+ name = "police baton"
+ desc = "A wooden truncheon for beating criminal scum."
+ icon = 'icons/obj/weapon/baton.dmi'
+ icon_state = "classic_baton"
+ item_state = "classic_baton"
+ lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
+ slot_flags = ITEM_SLOT_BELT
+ force = 12 //9 hit crit
+ w_class = WEIGHT_CLASS_NORMAL
+
+ var/cooldown_check = 0 // Used interally, you don't want to modify
+
+ var/cooldown = 40 // Default wait time until can stun again.
+ var/knockdown_time_carbon = (1.5 SECONDS) // Knockdown length for carbons.
+ var/stun_time_silicon = (5 SECONDS) // If enabled, how long do we stun silicons.
+ var/stamina_damage = 55 // Do we deal stamina damage.
+ var/affect_silicon = FALSE // Does it stun silicons.
+ var/on_sound // "On" sound, played when switching between able to stun or not.
+ var/on_stun_sound = 'sound/effects/woodhit.ogg' // Default path to sound for when we stun.
+ var/stun_animation = TRUE // Do we animate the "hit" when stunning.
+ var/on = TRUE // Are we on or off.
+
+ var/on_icon_state // What is our sprite when turned on
+ var/off_icon_state // What is our sprite when turned off
+ var/on_item_state // What is our in-hand sprite when turned on
+ var/force_on // Damage when on - not stunning
+ var/force_off // Damage when off - not stunning
+ var/weight_class_on // What is the new size class when turned on
+
+// Description for trying to stun when still on cooldown.
+/obj/item/melee/classic_baton/proc/get_wait_description()
+ return
+
+// Description for when turning their baton "on"
+/obj/item/melee/classic_baton/proc/get_on_description()
+ . = list()
+
+ .["local_on"] = "You extend the baton."
+ .["local_off"] = "You collapse the baton."
+
+ return .
+
+// Default message for stunning mob.
+/obj/item/melee/classic_baton/proc/get_stun_description(mob/living/target, mob/living/user)
+ . = list()
+
+ .["visible"] = "[user] knocks [target] down with [src]!"
+ .["local"] = "[user] knocks you down with [src]!"
+
+ return .
+
+// Default message for stunning a silicon.
+/obj/item/melee/classic_baton/proc/get_silicon_stun_description(mob/living/target, mob/living/user)
+ . = list()
+
+ .["visible"] = "[user] pulses [target]'s sensors with the baton!"
+ .["local"] = "You pulse [target]'s sensors with the baton!"
+
+ return .
+
+// Are we applying any special effects when we stun to carbon
+/obj/item/melee/classic_baton/proc/additional_effects_carbon(mob/living/target, mob/living/user)
+ return
+
+// Are we applying any special effects when we stun to silicon
+/obj/item/melee/classic_baton/proc/additional_effects_silicon(mob/living/target, mob/living/user)
+ return
+
+/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user)
+ if(!on)
+ return ..()
+
+ add_fingerprint(user)
+ if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
+ to_chat(user, "You hit yourself over the head!")
+
+ user.Paralyze(knockdown_time_carbon * force)
+ user.apply_damage(stamina_damage, STAMINA, BODY_ZONE_HEAD)
+
+ additional_effects_carbon(user) // user is the target here
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
+ else
+ user.take_bodypart_damage(2*force)
+ return
+ if(iscyborg(target))
+ // We don't stun if we're on harm.
+ if (user.a_intent != INTENT_HARM)
+ if (affect_silicon)
+ var/list/desc = get_silicon_stun_description(target, user)
+
+ target.flash_act(affect_silicon = TRUE)
+ target.Paralyze(stun_time_silicon)
+ additional_effects_silicon(target, user)
+
+ user.visible_message(desc["visible"], desc["local"])
+ playsound(get_turf(src), on_stun_sound, 100, TRUE, -1)
+
+ if (stun_animation)
+ user.do_attack_animation(target)
+ else
+ ..()
+ else
+ ..()
+ return
+ if(!isliving(target))
+ return
+ if (user.a_intent == INTENT_HARM)
+ if(!..())
+ return
+ if(!iscyborg(target))
+ return
+ else
+ if(cooldown_check <= world.time)
+ if(ishuman(target))
+ var/mob/living/carbon/human/H = target
+ if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK))
+ return
+ if(check_martial_counter(H, user))
+ return
+
+ var/list/desc = get_stun_description(target, user)
+
+ if (stun_animation)
+ user.do_attack_animation(target)
+
+ playsound(get_turf(src), on_stun_sound, 75, TRUE, -1)
+ target.Knockdown(knockdown_time_carbon)
+ target.apply_damage(stamina_damage, STAMINA, BODY_ZONE_CHEST)
+ additional_effects_carbon(target, user)
+
+ log_combat(user, target, "stunned", src)
+ add_fingerprint(user)
+
+ target.visible_message(desc["visible"], desc["local"])
+
+ if(!iscarbon(user))
+ target.LAssailant = null
+ else
+ target.LAssailant = WEAKREF(user)
+ cooldown_check = world.time + cooldown
+ else
+ var/wait_desc = get_wait_description()
+ if (wait_desc)
+ to_chat(user, wait_desc)
+
+/obj/item/conversion_kit
+ name = "conversion kit"
+ desc = "A strange box containing wood working tools and an instruction paper to turn stun batons into something else."
+ icon = 'icons/obj/storage.dmi'
+ icon_state = "uk"
+ custom_price = 450
+
+/obj/item/melee/classic_baton/telescopic
+ name = "telescopic baton"
+ desc = "A compact yet robust personal defense weapon. Can be concealed when folded."
+ icon_state = "telebaton_0"
+ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
+ item_state = null
+ slot_flags = ITEM_SLOT_BELT
+ w_class = WEIGHT_CLASS_SMALL
+ item_flags = NONE
+ force = 0
+ on = FALSE
+ on_sound = 'sound/weapons/batonextend.ogg'
+
+ on_icon_state = "telebaton_1"
+ off_icon_state = "telebaton_0"
+ on_item_state = "nullrod"
+ force_on = 10
+ force_off = 0
+ weight_class_on = WEIGHT_CLASS_BULKY
+
+/obj/item/melee/classic_baton/telescopic/attack_self(mob/user)
+ on = !on
+ var/list/desc = get_on_description()
+
+ if(on)
+ to_chat(user, desc["local_on"])
+ icon_state = on_icon_state
+ item_state = on_item_state
+ w_class = weight_class_on
+ force = force_on
+ attack_verb = list("smacked", "struck", "cracked", "beaten")
+ else
+ to_chat(user, desc["local_off"])
+ icon_state = off_icon_state
+ item_state = null //no sprite for concealment even when in hand
+ slot_flags = ITEM_SLOT_BELT
+ w_class = WEIGHT_CLASS_SMALL
+ force = force_off
+ attack_verb = list("hit", "poked")
+
+ playsound(src.loc, on_sound, 50, TRUE)
+ add_fingerprint(user)
+
+/obj/item/melee/classic_baton/telescopic/contractor_baton
+ name = "contractor baton"
+ desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets."
+ icon_state = "contractor_baton_0"
+ item_state = null
+ slot_flags = ITEM_SLOT_BELT
+ w_class = WEIGHT_CLASS_SMALL
+ item_flags = NONE
+ force = 5
+
+ cooldown = 25
+ stamina_damage = 85
+ affect_silicon = TRUE
+ on_sound = 'sound/weapons/contractorbatonextend.ogg'
+ on_stun_sound = 'sound/effects/contractorbatonhit.ogg'
+
+ on_icon_state = "contractor_baton_1"
+ off_icon_state = "contractor_baton_0"
+ on_item_state = "contractor_baton"
+ force_on = 16
+ force_off = 5
+ weight_class_on = WEIGHT_CLASS_NORMAL
+
+/obj/item/melee/classic_baton/telescopic/contractor_baton/get_wait_description()
+ return "The baton is still charging!"
+
+/obj/item/melee/classic_baton/telescopic/contractor_baton/additional_effects_carbon(mob/living/target, mob/living/user)
+ target.Jitter(20)
+ target.stuttering += 20
diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm
new file mode 100644
index 000000000000..21bde05c0dd3
--- /dev/null
+++ b/code/game/objects/items/melee/sword.dm
@@ -0,0 +1,539 @@
+/obj/item/melee/sword
+ icon = 'icons/obj/weapon/sword.dmi'
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ pickup_sound = 'sound/items/unsheath.ogg'
+ drop_sound = 'sound/items/handling/metal_drop.ogg'
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ flags_1 = CONDUCT_1
+ slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
+ w_class = WEIGHT_CLASS_BULKY
+ obj_flags = UNIQUE_RENAME
+ block_chance = 25
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ sharpness = IS_SHARP
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
+ resistance_flags = FIRE_PROOF
+
+/obj/item/melee/sword/claymore
+ name = "claymore"
+ desc = "What are you standing around staring at this for? Get to killing!"
+ icon_state = "claymore"
+ item_state = "claymore"
+ force = 30
+ throwforce = 10
+ block_chance = 40
+ max_integrity = 200
+
+/obj/item/melee/sword/claymore/Initialize()
+ . = ..()
+ AddComponent(/datum/component/butchering, 40, 105)
+
+/obj/item/melee/sword/bone
+ name = "bone sword"
+ desc = "Jagged pieces of bone are tied to what looks like a goliaths femur."
+ icon_state = "bone_sword"
+ item_state = "bone_sword"
+ force = 15
+ throwforce = 10
+ armour_penetration = 15
+
+/obj/item/melee/sword/scrap
+ name = "scrap sword"
+ desc = "A jagged and painful weapon only effective on targets without an armour"
+ icon_state = "machete0"
+ force = 24
+ throwforce = 10
+ armour_penetration = -35
+ max_integrity = 100
+
+/obj/item/melee/sword/mass
+ name = "mass produced machete"
+ desc = "A middle ground between a machete and a short sword. A simple construction of stamped steel but its so cheap its hard to complain. Its right between being a one hand and two handed weapon"
+ icon_state = "machete0"
+ base_icon_state = "machete"
+ force = 20
+ throwforce = 15
+ max_integrity = 50
+
+/obj/item/melee/sword/mass/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=20, force_wielded=22, icon_wielded="[base_icon_state]1")
+
+/obj/item/melee/sword/katana
+ name = "katana"
+ desc = "Woefully underpowered in D20."
+ icon_state = "katana"
+ item_state = "katana"
+ slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
+ force = 30
+ throwforce = 10
+ w_class = WEIGHT_CLASS_HUGE
+ block_chance = 10
+ max_integrity = 200
+
+/obj/item/melee/sword/chainsaw
+ name = "sacred chainsaw sword"
+ desc = "Suffer not a heretic to live."
+ icon_state = "chainswordon"
+ item_state = "chainswordon"
+ force = 15
+ throwforce = 10
+ armour_penetration = 25
+ slot_flags = ITEM_SLOT_BELT
+ attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
+ hitsound = 'sound/weapons/chainsawhit.ogg'
+ tool_behaviour = TOOL_SAW
+ toolspeed = 1.5 //slower than a real saw
+
+/obj/item/melee/sword/sabre
+ name = "officer's sabre"
+ desc = "An elegant weapon, its monomolecular edge is capable of cutting through flesh and bone with ease."
+ icon_state = "sabre"
+ item_state = "sabre"
+ force = 15
+ throwforce = 10
+ block_chance = 60
+ armour_penetration = 75
+ attack_verb = list("slashed", "cut")
+ hitsound = 'sound/weapons/rapierhit.ogg'
+ custom_materials = list(/datum/material/iron = 1000)
+
+/obj/item/melee/sword/sabre/Initialize()
+ . = ..()
+ AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results.
+
+/obj/item/melee/sword/sabre/on_enter_storage(datum/component/storage/concrete/S)
+ var/obj/item/storage/belt/sabre/B = S.real_location()
+ if(istype(B))
+ playsound(B, 'sound/items/sheath.ogg', 25, TRUE)
+
+/obj/item/melee/sword/sabre/solgov
+ name = "solarian sabre"
+ desc = "A refined ceremonial blade often given to soldiers and high ranking officials of SolGov."
+ icon_state = "sabresolgov"
+ item_state = "sabresolgov"
+
+/obj/item/melee/sword/sabre/suns
+ name = "SUNS sabre"
+ desc = "A blade of Solarian origin given to SUNS followers."
+ icon_state = "suns-sabre"
+ item_state = "suns-sabre"
+
+/obj/item/melee/sword/sabre/suns/captain
+ name = "SUNS captain sabre"
+ desc = "An elegant blade awarded to SUNS captains. Despite its higher craftmanship, it appears to be just as effective as a normal sabre."
+ icon_state = "suns-capsabre"
+ item_state = "suns-capsabre"
+
+/obj/item/melee/sword/sabre/suns/cmo
+ name = "SUNS stick sabre"
+ desc = "A thin blade used by SUNS medical instructors."
+ icon_state = "suns-swordstick"
+ item_state = "suns-swordstick"
+
+/obj/item/melee/sword/sabre/suns/telescopic
+ name = "telescopic sabre"
+ desc = "A telescopic and retractable blade given to SUNS peacekeepers for easy concealment and carry. It's design makes it slightly less effective than normal sabres sadly, however it is still excelent at piercing armor."
+ icon_state = "suns-tsword"
+ item_state = "suns-tsword"
+ force = 0
+ throwforce = 0
+ block_chance = 0
+
+ slot_flags = ITEM_SLOT_BELT
+ w_class = WEIGHT_CLASS_SMALL
+ attack_verb = list("smacked", "prodded")
+
+ var/extended = FALSE
+ var/extend_sound = 'sound/weapons/batonextend.ogg'
+
+ var/on_icon_state = "suns-tsword_ext"
+ var/on_item_state = "suns-tsword_ext"
+ var/off_icon_state = "suns-tsword"
+ var/off_item_state = "suns-tsword"
+
+ var/force_on = 10
+ var/on_throwforce = 10
+ var/on_blockchance = 40
+
+ var/force_off = 0
+ var/off_throwforce = 0
+ var/off_blockchance = 0
+
+ var/weight_class_on = WEIGHT_CLASS_BULKY
+
+/obj/item/melee/sword/sabre/suns/telescopic/attack_self(mob/user)
+ extended = !extended
+
+ if(extended)
+ to_chat(user, "You extend the [src].")
+ icon_state = on_icon_state
+ item_state = on_item_state
+ slot_flags = 0
+ w_class = weight_class_on
+ force = force_on
+ throwforce = on_throwforce
+ block_chance = on_blockchance
+ attack_verb = list("slashed", "cut")
+ else
+ to_chat(user, "You collapse the [src].")
+ icon_state = off_icon_state
+ item_state = off_item_state
+ slot_flags = ITEM_SLOT_BELT
+ w_class = WEIGHT_CLASS_SMALL
+ force = force_off
+ throwforce = off_throwforce
+ block_chance = off_blockchance
+ attack_verb = list("smacked", "prodded")
+
+ playsound(get_turf(src), extend_sound, 50, TRUE)
+ add_fingerprint(user)
+
+/obj/item/melee/sword/supermatter
+ name = "supermatter sword"
+ desc = "In a universe full of bad ideas, this might just be the worst."
+ icon_state = "supermatter_sword"
+ item_state = "supermatter_sword"
+ slot_flags = null
+ force = 0.001
+ armour_penetration = 1000
+ var/obj/machinery/power/supermatter_crystal/shard
+ var/balanced = 1
+ force_string = "INFINITE"
+
+/obj/item/melee/sword/supermatter/Initialize()
+ . = ..()
+ shard = new /obj/machinery/power/supermatter_crystal(src)
+ qdel(shard.countdown)
+ shard.countdown = null
+ START_PROCESSING(SSobj, src)
+ visible_message("[src] appears, balanced ever so perfectly on its hilt. This isn't ominous at all.")
+
+/obj/item/melee/sword/supermatter/process()
+ if(balanced || throwing || ismob(src.loc) || isnull(src.loc))
+ return
+ if(!isturf(src.loc))
+ var/atom/target = src.loc
+ forceMove(target.loc)
+ consume_everything(target)
+ else
+ var/turf/T = get_turf(src)
+ if(!isspaceturf(T))
+ consume_turf(T)
+
+/obj/item/melee/sword/supermatter/afterattack(target, mob/user, proximity_flag)
+ . = ..()
+ if(user && target == user)
+ user.dropItemToGround(src)
+ if(proximity_flag)
+ consume_everything(target)
+
+/obj/item/melee/sword/supermatter/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+ ..()
+ if(ismob(hit_atom))
+ var/mob/M = hit_atom
+ if(src.loc == M)
+ M.dropItemToGround(src)
+ consume_everything(hit_atom)
+
+/obj/item/melee/sword/supermatter/pickup(user)
+ ..()
+ balanced = 0
+
+/obj/item/melee/sword/supermatter/ex_act(severity, target)
+ visible_message("The blast wave smacks into [src] and rapidly flashes to ash.",\
+ "You hear a loud crack as you are washed with a wave of heat.")
+ consume_everything()
+
+/obj/item/melee/sword/supermatter/acid_act()
+ visible_message("The acid smacks into [src] and rapidly flashes to ash.",\
+ "You hear a loud crack as you are washed with a wave of heat.")
+ consume_everything()
+
+/obj/item/melee/sword/supermatter/bullet_act(obj/projectile/P)
+ visible_message("[P] smacks into [src] and rapidly flashes to ash.",\
+ "You hear a loud crack as you are washed with a wave of heat.")
+ consume_everything(P)
+ return BULLET_ACT_HIT
+
+
+/obj/item/melee/sword/supermatter/proc/consume_everything(target)
+ if(isnull(target))
+ shard.Consume()
+ else if(!isturf(target))
+ shard.Bumped(target)
+ else
+ consume_turf(target)
+
+/obj/item/melee/sword/supermatter/proc/consume_turf(turf/T)
+ var/oldtype = T.type
+ var/turf/newT = T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
+ if(newT.type == oldtype)
+ return
+ playsound(T, 'sound/effects/supermatter.ogg', 50, TRUE)
+ T.visible_message("[T] smacks into [src] and rapidly flashes to ash.",\
+ "You hear a loud crack as you are washed with a wave of heat.")
+ shard.Consume()
+
+/obj/item/melee/sword/supermatter/add_blood_DNA(list/blood_dna)
+ return FALSE
+
+/obj/item/melee/sword/greyking
+ name = "blade of the grey-king"
+ desc = "A legendary sword made with 3 replica katanas nailed together and dipped in heavy narcotics."
+ icon_state = "grey_sword"
+ item_state = "swordoff"
+ slot_flags = ITEM_SLOT_BACK
+ force = 15
+ throwforce = 8
+ block_chance = 30
+ attack_verb = list("struck", "slashed", "mall-ninjad", "tided", "multi-shanked", "shredded")
+
+ var/prick_chance = 50
+ var/prick_chems = list(
+ /datum/reagent/toxin = 10,
+ /datum/reagent/toxin/mindbreaker = 10,
+ /datum/reagent/drug/space_drugs = 10,
+ /datum/reagent/drug/crank = 5,
+ /datum/reagent/drug/methamphetamine = 5,
+ /datum/reagent/drug/bath_salts = 5,
+ /datum/reagent/drug/aranesp = 5,
+ /datum/reagent/drug/pumpup = 10,
+ /datum/reagent/medicine/omnizine = 10,
+ /datum/reagent/medicine/earthsblood = 15,
+ /datum/reagent/medicine/omnizine/protozine = 15
+ )
+
+/obj/item/melee/sword/greyking/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ if (iscarbon(target) && prob(prick_chance))
+ var/mob/living/carbon/C = target
+ var/datum/reagent/R = pick(prick_chems)
+ C.reagents.add_reagent(R, prick_chems[R])
+ C.visible_message("[user] is pricked!", \
+ "You've been pricked by the [src]!")
+ log_combat(user, C, "pricked", src.name, "with [prick_chems[R]]u of [R]")
+ return ..()
+
+//HF blade
+/obj/item/melee/sword/vibro
+ icon_state = "hfrequency0"
+ base_icon_state = "hfrequency"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ name = "vibro sword"
+ desc = "A potent weapon capable of cutting through nearly anything. Wielding it in two hands will allow you to deflect gunfire."
+ armour_penetration = 100
+ block_chance = 30
+ force = 20
+ throwforce = 20
+ throw_speed = 4
+ sharpness = IS_SHARP
+ attack_verb = list("cut", "sliced", "diced")
+ slot_flags = ITEM_SLOT_BACK
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ var/wielded = FALSE // track wielded status on item
+
+/obj/item/melee/sword/vibro/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
+
+/obj/item/melee/sword/vibro/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/butchering, 20, 105)
+ AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="[base_icon_state]1")
+
+/// triggered on wield of two handed item
+/obj/item/melee/sword/vibro/proc/on_wield(obj/item/source, mob/user)
+ SIGNAL_HANDLER
+
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/melee/sword/vibro/proc/on_unwield(obj/item/source, mob/user)
+ SIGNAL_HANDLER
+
+ wielded = FALSE
+
+/obj/item/melee/sword/vibro/update_icon_state()
+ icon_state = "[base_icon_state]0"
+ return ..()
+
+/obj/item/melee/sword/vibro/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ if(wielded)
+ final_block_chance *= 2
+ if(wielded || attack_type != PROJECTILE_ATTACK)
+ if(prob(final_block_chance))
+ if(attack_type == PROJECTILE_ATTACK)
+ owner.visible_message("[owner] deflects [attack_text] with [src]!")
+ playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE)
+ return 1
+ else
+ owner.visible_message("[owner] parries [attack_text] with [src]!")
+ return 1
+ return 0
+
+/obj/item/melee/sword/weebstick
+ name = "Weeb Stick"
+ desc = "Glorious nippon steel, folded 1000 times."
+ icon_state = "weeb_blade"
+ item_state = "weeb_blade"
+ slot_flags = ITEM_SLOT_BACK
+ sharpness = IS_SHARP_ACCURATE
+ force = 25
+ throw_speed = 4
+ throw_range = 5
+ throwforce = 12
+ block_chance = 20
+ armour_penetration = 50
+ hitsound = 'sound/weapons/anime_slash.ogg'
+
+/obj/item/melee/sword/weebstick/Initialize()
+ . = ..()
+ AddComponent(/datum/component/butchering, 25, 90, 5) //Not made for scalping victims, but will work nonetheless
+
+/obj/item/melee/sword/weebstick/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ if(attack_type == PROJECTILE_ATTACK)
+ final_block_chance = block_chance / 2 //Pretty good...
+ return ..()
+
+/obj/item/melee/sword/weebstick/on_exit_storage(datum/component/storage/concrete/S)
+ var/obj/item/storage/belt/weebstick/B = S.real_location()
+ if(istype(B))
+ playsound(B, 'sound/items/unsheath.ogg', 25, TRUE)
+
+/obj/item/melee/sword/weebstick/on_enter_storage(datum/component/storage/concrete/S)
+ var/obj/item/storage/belt/weebstick/B = S.real_location()
+ if(istype(B))
+ playsound(B, 'sound/items/sheath.ogg', 25, TRUE)
+
+/obj/item/storage/belt/weebstick
+ name = "nanoforged blade sheath"
+ desc = "It yearns to bath in the blood of your enemies... but you hold it back!"
+ icon = 'icons/obj/weapon/sword.dmi'
+ icon_state = "weeb_sheath"
+ item_state = "sheath"
+ force = 3
+ var/primed = FALSE //Prerequisite to anime bullshit
+ // ##The anime bullshit## - Mostly stolen from action/innate/dash
+ var/dash_sound = 'sound/weapons/unsheathed_blade.ogg'
+ var/beam_effect = "blood_beam"
+ var/phasein = /obj/effect/temp_visual/dir_setting/cult/phase
+ var/phaseout = /obj/effect/temp_visual/dir_setting/cult/phase
+
+/obj/item/storage/belt/weebstick/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ STR.max_items = 1
+ STR.use_sound = null
+ STR.max_w_class = WEIGHT_CLASS_BULKY
+ STR.set_holdable(list(
+ /obj/item/melee/sword/weebstick
+ ))
+
+/obj/item/storage/belt/weebstick/examine(mob/user)
+ . = ..()
+ if(length(contents))
+ . += "Use [src] in-hand to prime for an opening strike."
+ . += "Alt-click it to quickly draw the blade."
+
+/obj/item/storage/belt/weebstick/AltClick(mob/user)
+ if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)) || primed)
+ return
+ if(length(contents))
+ var/obj/item/I = contents[1]
+ playsound(user, dash_sound, 25, TRUE)
+ user.visible_message("[user] swiftly draws \the [I].", "You draw \the [I].")
+ user.put_in_hands(I)
+ update_appearance()
+ else
+ to_chat(user, "[src] is empty!")
+
+/obj/item/storage/belt/weebstick/attack_self(mob/user)
+ if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
+ return
+ if(length(contents))
+ var/datum/component/storage/CP = GetComponent(/datum/component/storage)
+ if(primed)
+ CP.locked = FALSE
+ playsound(user, 'sound/items/sheath.ogg', 25, TRUE)
+ to_chat(user, "You return your stance.")
+ primed = FALSE
+ update_appearance()
+ else
+ CP.locked = TRUE //Prevents normal removal of the blade while primed
+ playsound(user, 'sound/items/unsheath.ogg', 25, TRUE)
+ user.visible_message("[user] grips the blade within [src] and primes to attack.", "You take an opening stance...", "You hear a weapon being drawn...")
+ primed = TRUE
+ update_appearance()
+ else
+ to_chat(user, "[src] is empty!")
+
+/obj/item/storage/belt/weebstick/afterattack(atom/A, mob/living/user, proximity_flag, params)
+ . = ..()
+ if(primed && length(contents))
+ if(!(A in view(user.client.view, user)))
+ return
+ var/obj/item/I = contents[1]
+ if(!user.put_in_inactive_hand(I))
+ to_chat(user, "You need a free hand!")
+ return
+ var/datum/component/storage/CP = GetComponent(/datum/component/storage)
+ CP.locked = FALSE
+ primed = FALSE
+ update_appearance()
+ primed_attack(A, user)
+ if(CanReach(A, I))
+ I.melee_attack_chain(user, A, params)
+ user.swap_hand()
+
+/obj/item/storage/belt/weebstick/proc/primed_attack(atom/target, mob/living/user)
+ var/turf/end = get_turf(user)
+ var/turf/start = get_turf(user)
+ var/obj/spot1 = new phaseout(start, user.dir)
+ var/halt = FALSE
+ // Stolen dash code
+ for(var/T in getline(start, get_turf(target)))
+ var/turf/tile = T
+ for(var/mob/living/victim in tile)
+ if(victim != user)
+ playsound(victim, 'sound/weapons/anime_slash.ogg', 10, TRUE)
+ victim.take_bodypart_damage(15)
+ // Unlike actual ninjas, we stop noclip-dashing here.
+ if(isclosedturf(T))
+ halt = TRUE
+ for(var/obj/O in tile)
+ // We ignore mobs as we are cutting through them
+ if(!O.CanPass(user, tile))
+ halt = TRUE
+ if(halt)
+ break
+ else
+ end = T
+ user.forceMove(end) // YEET
+ playsound(start, dash_sound, 35, TRUE)
+ var/obj/spot2 = new phasein(end, user.dir)
+ spot1.Beam(spot2, beam_effect, time=20)
+ user.visible_message("In a flash of red, [user] draws [user.p_their()] blade!", "You dash forward while drawing your weapon!", "You hear a blade slice through the air at impossible speeds!")
+
+/obj/item/storage/belt/weebstick/update_icon_state()
+ icon_state = "weeb_sheath"
+ item_state = "sheath"
+ if(contents.len)
+ if(primed)
+ icon_state += "-primed"
+ else
+ icon_state += "-blade"
+ item_state += "-sabre"
+ return ..()
+
+/obj/item/storage/belt/weebstick/PopulateContents()
+ //Time to generate names now that we have the sword
+ var/n_title = pick(GLOB.ninja_titles)
+ var/n_name = pick(GLOB.ninja_names)
+ var/obj/item/melee/sword/weebstick/sword = new /obj/item/melee/sword/weebstick(src)
+ sword.name = "[n_title] blade of clan [n_name]"
+ name = "[n_title] scabbard of clan [n_name]"
+ update_appearance()
diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/melee/teleprod.dm
similarity index 100%
rename from code/game/objects/items/teleprod.dm
rename to code/game/objects/items/melee/teleprod.dm
diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm
new file mode 100644
index 000000000000..11c1b118570b
--- /dev/null
+++ b/code/game/objects/items/melee/weaponry.dm
@@ -0,0 +1,119 @@
+
+
+/obj/item/wirerod
+ name = "wired rod"
+ desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit."
+ icon = 'icons/obj/weapon/spear.dmi'
+ icon_state = "wiredrod"
+ item_state = "rods"
+ flags_1 = CONDUCT_1
+ force = 9
+ throwforce = 10
+ w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(/datum/material/iron=1150, /datum/material/glass=75)
+ attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
+
+/obj/item/wirerod/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/shard))
+ var/obj/item/melee/spear/S = new /obj/item/melee/spear
+
+ remove_item_from_storage(user)
+ if (!user.transferItemToLoc(I, S))
+ return
+ S.CheckParts(list(I))
+ qdel(src)
+
+ user.put_in_hands(S)
+ to_chat(user, "You fasten the glass shard to the top of the rod with the cable.")
+
+ else if(istype(I, /obj/item/assembly/igniter) && !(HAS_TRAIT(I, TRAIT_NODROP)))
+ var/obj/item/melee/baton/cattleprod/P = new /obj/item/melee/baton/cattleprod
+
+ remove_item_from_storage(user)
+
+ to_chat(user, "You fasten [I] to the top of the rod with the cable.")
+
+ qdel(I)
+ qdel(src)
+
+ user.put_in_hands(P)
+ else
+ return ..()
+
+/obj/item/throwing_star
+ name = "throwing star"
+ desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts."
+ icon_state = "throwingstar"
+ item_state = "eshield0"
+ lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
+ force = 2
+ throwforce = 20 //20 + 2 (WEIGHT_CLASS_SMALL) * 4 (EMBEDDED_IMPACT_PAIN_MULTIPLIER) = 28 damage on hit due to guaranteed embedding
+ throw_speed = 4
+ embedding = list("pain_mult" = 4, "embed_chance" = 100, "fall_chance" = 0, "embed_chance_turf_mod" = 15)
+ armour_penetration = 40
+
+ w_class = WEIGHT_CLASS_SMALL
+ sharpness = IS_SHARP
+ custom_materials = list(/datum/material/iron=500, /datum/material/glass=500)
+ resistance_flags = FIRE_PROOF
+
+/obj/item/throwing_star/stamina
+ name = "shock throwing star"
+ desc = "An aerodynamic disc designed to cause excruciating pain when stuck inside fleeing targets, hopefully without causing fatal harm."
+ throwforce = 5
+ embedding = list("pain_chance" = 5, "embed_chance" = 100, "fall_chance" = 0, "jostle_chance" = 10, "pain_stam_pct" = 0.8, "jostle_pain_mult" = 3)
+
+/obj/item/throwing_star/toy
+ name = "toy throwing star"
+ desc = "An aerodynamic disc strapped with adhesive for sticking to people, good for playing pranks and getting yourself killed by security."
+ sharpness = IS_BLUNT
+ force = 0
+ throwforce = 0
+ embedding = list("pain_mult" = 0, "jostle_pain_mult" = 0, "embed_chance" = 100, "fall_chance" = 0)
+
+/obj/item/throwing_star/magspear
+ name = "magnetic spear"
+ desc = "A reusable spear that is typically loaded into kinetic spearguns."
+ icon = 'icons/obj/ammo_bullets.dmi'
+ icon_state = "magspear"
+ throwforce = 25 //kills regular carps in one hit
+ force = 10
+ throw_range = 0 //throwing these invalidates the speargun
+ attack_verb = list("stabbed", "ripped", "gored", "impaled")
+ embedding = list("pain_mult" = 8, "embed_chance" = 100, "fall_chance" = 0, "impact_pain_mult" = 15) //55 damage+embed on hit
+
+/obj/item/mounted_chainsaw
+ name = "mounted chainsaw"
+ desc = "A chainsaw that has replaced your arm."
+ icon_state = "chainsaw_on"
+ item_state = "mounted_chainsaw"
+ lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
+ item_flags = ABSTRACT | DROPDEL
+ w_class = WEIGHT_CLASS_HUGE
+ force = 24
+ throwforce = 0
+ throw_range = 0
+ throw_speed = 0
+ sharpness = IS_SHARP
+ attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
+ hitsound = 'sound/weapons/chainsawhit.ogg'
+ tool_behaviour = TOOL_SAW
+ toolspeed = 1
+
+/obj/item/mounted_chainsaw/Initialize()
+ . = ..()
+ ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
+
+/obj/item/mounted_chainsaw/Destroy()
+ var/obj/item/bodypart/part
+ new /obj/item/chainsaw(get_turf(src))
+ if(iscarbon(loc))
+ var/mob/living/carbon/holder = loc
+ var/index = holder.get_held_index_of_item(src)
+ if(index)
+ part = holder.hand_bodyparts[index]
+ . = ..()
+ if(part)
+ part.drop_limb()
diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm
index 619ebf3eb0e9..f32230a732ba 100644
--- a/code/game/objects/items/miscellaneous.dm
+++ b/code/game/objects/items/miscellaneous.dm
@@ -94,7 +94,7 @@
/obj/item/storage/box/hero/scottish/PopulateContents()
new /obj/item/clothing/under/costume/kilt(src)
- new /obj/item/claymore/weak/ceremonial(src)
+ new /obj/item/melee/sword/claymore(src)
new /obj/item/toy/crayon/spraycan(src)
new /obj/item/clothing/shoes/sandal(src)
@@ -105,7 +105,7 @@
/obj/item/storage/box/hero/carphunter/PopulateContents()
new /obj/item/clothing/suit/space/hardsuit/carp/old(src)
new /obj/item/clothing/mask/gas/carp(src)
- new /obj/item/kitchen/knife/hunting(src)
+ new /obj/item/melee/knife/hunting(src)
new /obj/item/storage/box/papersack/meat(src)
new /obj/item/fishing_rod(src)
new /obj/item/fishing_line(src)
@@ -149,7 +149,6 @@
/obj/item/skub
desc = "It's skub."
name = "skub"
- icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "skub"
w_class = WEIGHT_CLASS_BULKY
attack_verb = list("skubbed")
@@ -217,17 +216,6 @@
ouija_spaghetti_list[initial(A.name)] = A
return ouija_spaghetti_list
-/obj/structure/legionpike
- name = "legion on a spear"
- desc = "EXTREME interior decorating. You can feel it watching you."
- icon = 'icons/obj/structures.dmi'
- icon_state = "headpike-legion"
- density = FALSE
- anchored = TRUE
- light_color = "#8B0000"
- light_power = 2
- light_range = 2
-
//rare and valulable gems- designed to eventually be used for archeology, or to be given as opposed to money as loot. Auctioned off at export, or kept as a trophy.
/obj/item/gem/rupee
name = "\improper Ruperium Crystal"
@@ -282,3 +270,283 @@
light_power = 1
light_color = "#4785a4"
w_class = WEIGHT_CLASS_SMALL
+
+/obj/item/phone
+ name = "red phone"
+ desc = "Should anything ever go wrong..."
+ icon_state = "red_phone"
+ force = 3
+ throwforce = 2
+ throw_speed = 3
+ throw_range = 4
+ w_class = WEIGHT_CLASS_SMALL
+ attack_verb = list("called", "rang")
+ hitsound = 'sound/weapons/ring.ogg'
+
+/obj/item/roastingstick
+ name = "advanced roasting stick"
+ desc = "A telescopic roasting stick with a miniature shield generator designed to ensure entry into various high-tech shielded cooking ovens and firepits."
+ icon_state = "roastingstick_0"
+ item_state = "null"
+ slot_flags = ITEM_SLOT_BELT
+ w_class = WEIGHT_CLASS_SMALL
+ item_flags = NONE
+ force = 0
+ attack_verb = list("hit", "poked")
+ var/obj/item/reagent_containers/food/snacks/sausage/held_sausage
+ var/static/list/ovens
+ var/on = FALSE
+ var/datum/beam/beam
+
+/obj/item/roastingstick/Initialize()
+ . = ..()
+ if (!ovens)
+ ovens = typecacheof(list(/obj/singularity, /obj/machinery/power/supermatter_crystal, /obj/structure/bonfire))
+
+/obj/item/roastingstick/attack_self(mob/user)
+ on = !on
+ if(on)
+ extend(user)
+ else
+ if (held_sausage)
+ to_chat(user, "You can't retract [src] while [held_sausage] is attached!")
+ return
+ retract(user)
+
+ playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ add_fingerprint(user)
+
+/obj/item/roastingstick/attackby(atom/target, mob/user)
+ ..()
+ if (istype(target, /obj/item/reagent_containers/food/snacks/sausage))
+ if (!on)
+ to_chat(user, "You must extend [src] to attach anything to it!")
+ return
+ if (held_sausage)
+ to_chat(user, "[held_sausage] is already attached to [src]!")
+ return
+ if (user.transferItemToLoc(target, src))
+ held_sausage = target
+ else
+ to_chat(user, "[target] doesn't seem to want to get on [src]!")
+ update_appearance()
+
+/obj/item/roastingstick/attack_hand(mob/user)
+ ..()
+ if (held_sausage)
+ user.put_in_hands(held_sausage)
+ held_sausage = null
+ update_appearance()
+
+/obj/item/roastingstick/update_overlays()
+ . = ..()
+ if (held_sausage)
+ . += mutable_appearance(icon, "roastingstick_sausage")
+
+/obj/item/roastingstick/proc/extend(user)
+ to_chat(user, "You extend [src].")
+ icon_state = "roastingstick_1"
+ item_state = "nullrod"
+ w_class = WEIGHT_CLASS_BULKY
+
+/obj/item/roastingstick/proc/retract(user)
+ to_chat(user, "You collapse [src].")
+ icon_state = "roastingstick_0"
+ item_state = null
+ w_class = WEIGHT_CLASS_SMALL
+
+/obj/item/roastingstick/handle_atom_del(atom/target)
+ if (target == held_sausage)
+ held_sausage = null
+ update_appearance()
+
+/obj/item/roastingstick/afterattack(atom/target, mob/user, proximity)
+ . = ..()
+ if (!on)
+ return
+ if (is_type_in_typecache(target, ovens))
+ if (held_sausage && held_sausage.roasted)
+ to_chat(src, "Your [held_sausage] has already been cooked!")
+ return
+ if (istype(target, /obj/singularity) && get_dist(user, target) < 10)
+ to_chat(user, "You send [held_sausage] towards [target].")
+ playsound(src, 'sound/items/rped.ogg', 50, TRUE)
+ beam = user.Beam(target,icon_state="rped_upgrade",time=100)
+ else if (user.Adjacent(target))
+ to_chat(user, "You extend [src] towards [target].")
+ playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ else
+ return
+ if(do_after(user, 100, target = user))
+ finish_roasting(user, target)
+ else
+ QDEL_NULL(beam)
+ playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE)
+
+/obj/item/roastingstick/proc/finish_roasting(user, atom/target)
+ to_chat(user, "You finish roasting [held_sausage].")
+ playsound(src,'sound/items/welder2.ogg',50,TRUE)
+ held_sausage.add_atom_colour(rgb(103,63,24), FIXED_COLOUR_PRIORITY)
+ held_sausage.name = "[target.name]-roasted [held_sausage.name]"
+ held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]."
+ update_appearance()
+
+/obj/item/skateboard
+ name = "improvised skateboard"
+ desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon."
+ icon_state = "skateboard"
+ item_state = "skateboard"
+ force = 12
+ throwforce = 4
+ w_class = WEIGHT_CLASS_NORMAL
+ attack_verb = list("smacked", "whacked", "slammed", "smashed")
+ ///The vehicle counterpart for the board
+ var/board_item_type = /obj/vehicle/ridden/scooter/skateboard
+
+/obj/item/skateboard/attack_self(mob/user)
+ var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))//this probably has fucky interactions with telekinesis but for the record it wasnt my fault
+ S.buckle_mob(user)
+ qdel(src)
+
+/obj/item/skateboard/pro
+ name = "skateboard"
+ desc = "A RaDSTORMz brand professional skateboard. It looks sturdy and well made."
+ icon_state = "skateboard2"
+ item_state = "skateboard2"
+ board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro
+ custom_premium_price = 500
+
+/obj/item/skateboard/hoverboard
+ name = "hoverboard"
+ desc = "A blast from the past, so retro!"
+ icon_state = "hoverboard_red"
+ item_state = "hoverboard_red"
+ board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard
+ custom_premium_price = 2015
+
+/obj/item/skateboard/hoverboard/admin
+ name = "\improper Board Of Directors"
+ desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too."
+ icon_state = "hoverboard_nt"
+ item_state = "hoverboard_nt"
+ board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin
+
+/obj/item/statuebust
+ name = "bust"
+ desc = "A priceless ancient marble bust, the kind that belongs in a museum." //or you can hit people with it
+ icon = 'icons/obj/statue.dmi'
+ icon_state = "bust"
+ force = 15
+ throwforce = 10
+ throw_speed = 5
+ throw_range = 2
+ attack_verb = list("busted")
+ var/impressiveness = 45
+
+/obj/item/statuebust/Initialize()
+ . = ..()
+ AddComponent(/datum/component/art, impressiveness)
+ AddElement(/datum/element/beauty, 1000)
+
+/obj/item/statuebust/hippocratic
+ name = "hippocrates bust"
+ desc = "A bust of the famous Greek physician Hippocrates of Kos, often referred to as the father of western medicine."
+ icon_state = "hippocratic"
+ impressiveness = 50
+
+/obj/item/extendohand
+ name = "extendo-hand"
+ desc = "Futuristic tech has allowed these classic spring-boxing toys to essentially act as a fully functional hand-operated hand prosthetic."
+ icon_state = "extendohand"
+ item_state = "extendohand"
+ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
+ force = 0
+ throwforce = 5
+ reach = 2
+ var/min_reach = 2
+
+/obj/item/extendohand/acme
+ name = "\improper ACME Extendo-Hand"
+ desc = "A novelty extendo-hand produced by the ACME corporation. Originally designed to knock out roadrunners."
+
+/obj/item/extendohand/attack(atom/M, mob/living/carbon/human/user)
+ var/dist = get_dist(M, user)
+ if(dist < min_reach)
+ to_chat(user, "[M] is too close to use [src] on.")
+ return
+ M.attack_hand(user)
+
+/obj/item/gohei
+ name = "gohei"
+ desc = "A wooden stick with white streamers at the end. Originally used by shrine maidens to purify things."
+ force = 5
+ throwforce = 5
+ hitsound = "swing_hit"
+ attack_verb = list("whacked", "thwacked", "walloped", "socked")
+ icon_state = "gohei"
+ item_state = "gohei"
+ lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
+
+/obj/item/ectoplasm
+ name = "ectoplasm"
+ desc = "Spooky."
+ gender = PLURAL
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "ectoplasm"
+
+/obj/item/ectoplasm/angelic
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "angelplasm"
+
+/obj/item/cane
+ name = "cane"
+ desc = "A cane used by a true gentleman."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "cane"
+ item_state = "stick"
+ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
+ force = 5
+ throwforce = 5
+ w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron=50)
+ attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
+
+/obj/item/staff
+ name = "wizard staff"
+ desc = "Apparently a staff used by the wizard."
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "staff"
+ lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
+ force = 3
+ throwforce = 5
+ throw_speed = 2
+ throw_range = 5
+ w_class = WEIGHT_CLASS_SMALL
+ armour_penetration = 100
+ attack_verb = list("bludgeoned", "whacked", "disciplined")
+ resistance_flags = FLAMMABLE
+
+/obj/item/staff/broom
+ name = "broom"
+ desc = "Used for sweeping, and flying into the night while cackling. Black cat not included."
+ icon = 'icons/obj/wizard.dmi'
+ icon_state = "broom"
+ resistance_flags = FLAMMABLE
+
+/obj/item/staff/stick
+ name = "stick"
+ desc = "A great tool to drag someone else's drinks across the bar."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "cane"
+ item_state = "stick"
+ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
+ force = 3
+ throwforce = 5
+ throw_speed = 2
+ throw_range = 5
+ w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm
index 5aff78b5561d..9e314d848e3e 100644
--- a/code/game/objects/items/paint.dm
+++ b/code/game/objects/items/paint.dm
@@ -5,7 +5,6 @@
gender= PLURAL
name = "paint"
desc = "Used to recolor floors and walls. Can be removed by the janitor."
- icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "paint_neutral"
var/paint_color = "FFFFFF"
item_state = "paintcan"
diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm
deleted file mode 100644
index 05183ed479db..000000000000
--- a/code/game/objects/items/pitchfork.dm
+++ /dev/null
@@ -1,102 +0,0 @@
-/obj/item/pitchfork
- icon_state = "pitchfork0"
- base_icon_state = "pitchfork"
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- name = "pitchfork"
- desc = "A simple tool used for moving hay."
- force = 7
- throwforce = 15
- w_class = WEIGHT_CLASS_BULKY
- attack_verb = list("attacked", "impaled", "pierced")
- hitsound = 'sound/weapons/bladeslice.ogg'
- sharpness = IS_SHARP
- max_integrity = 200
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
- resistance_flags = FIRE_PROOF
- var/wielded = FALSE // track wielded status on item
-
-/obj/item/pitchfork/Initialize()
- . = ..()
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
-
-/obj/item/pitchfork/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=7, force_wielded=15, icon_wielded="[base_icon_state]1")
-
-/// triggered on wield of two handed item
-/obj/item/pitchfork/proc/on_wield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = TRUE
-
-/// triggered on unwield of two handed item
-/obj/item/pitchfork/proc/on_unwield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = FALSE
-
-/obj/item/pitchfork/update_icon_state()
- icon_state = "[base_icon_state]0"
- return ..()
-
-/obj/item/pitchfork/demonic
- name = "demonic pitchfork"
- desc = "A red pitchfork, it looks like the work of the devil."
- force = 19
- throwforce = 24
- light_system = MOVABLE_LIGHT
- light_range = 3
- light_power = 6
- light_color = COLOR_SOFT_RED
-
-
-/obj/item/pitchfork/demonic/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=19, force_wielded=25)
-
-/obj/item/pitchfork/demonic/greater
- force = 24
- throwforce = 50
-
-/obj/item/pitchfork/demonic/greater/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=24, force_wielded=34)
-
-/obj/item/pitchfork/demonic/ascended
- force = 100
- throwforce = 100
-
-/obj/item/pitchfork/demonic/ascended/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=100, force_wielded=500000) // Kills you DEAD
-
-/obj/item/pitchfork/demonic/pickup(mob/living/user)
- . = ..()
- if(isliving(user) && user.mind && user.owns_soul() && !is_devil(user))
- var/mob/living/U = user
- U.visible_message("As [U] picks [src] up, [U]'s arms briefly catch fire.", \
- "\"As you pick up [src] your arms ignite, reminding you of all your past sins.\"")
- if(ishuman(U))
- var/mob/living/carbon/human/H = U
- H.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
- else
- U.adjustFireLoss(rand(force/2,force))
-
-/obj/item/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user)
- if(user.mind && user.owns_soul() && !is_devil(user))
- to_chat(user, "[src] burns in your hands.")
- user.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
- ..()
-
-/obj/item/pitchfork/demonic/ascended/afterattack(atom/target, mob/user, proximity)
- . = ..()
- if(!proximity || !wielded)
- return
- if(iswallturf(target))
- var/turf/closed/wall/W = target
- user.visible_message("[user] blasts \the [target] with \the [src]!")
- playsound(target, 'sound/magic/disintegrate.ogg', 100, TRUE)
- W.dismantle_wall(devastated = FALSE)
- return
diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm
index 704a388d97f1..f54aa4f6447b 100644
--- a/code/game/objects/items/religion.dm
+++ b/code/game/objects/items/religion.dm
@@ -281,15 +281,3 @@
new /obj/item/clothing/head/helmet/plate/crusader/red(src)
new /obj/item/clothing/gloves/plate/red(src)
new /obj/item/clothing/shoes/plate/red(src)
-
-
-/obj/item/claymore/weak
- desc = "This one is rusted."
- force = 30
- armour_penetration = 15
-
-/obj/item/claymore/weak/ceremonial
- desc = "A rusted claymore, once at the heart of a powerful scottish clan struck down and oppressed by tyrants, it has been passed down the ages as a symbol of defiance."
- force = 15
- block_chance = 30
- armour_penetration = 5
diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm
deleted file mode 100644
index 04d7629623b5..000000000000
--- a/code/game/objects/items/singularityhammer.dm
+++ /dev/null
@@ -1,145 +0,0 @@
-/obj/item/singularityhammer
- name = "singularity hammer"
- desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows."
- icon_state = "singularity0"
- base_icon_state = "singularity_hammer"
- lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
- flags_1 = CONDUCT_1
- slot_flags = ITEM_SLOT_BACK
- force = 5
- throwforce = 15
- throw_range = 1
- w_class = WEIGHT_CLASS_HUGE
- armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
- resistance_flags = FIRE_PROOF | ACID_PROOF
- force_string = "LORD SINGULOTH HIMSELF"
- var/charged = 5
- var/wielded = FALSE // track wielded status on item
-
-/obj/item/singularityhammer/Initialize()
- . = ..()
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
- START_PROCESSING(SSobj, src)
-
-/obj/item/singularityhammer/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="[base_icon_state]1")
-
-/// triggered on wield of two handed item
-/obj/item/singularityhammer/proc/on_wield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = TRUE
-
-/// triggered on unwield of two handed item
-/obj/item/singularityhammer/proc/on_unwield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = FALSE
-
-/obj/item/singularityhammer/update_icon_state()
- icon_state = "[base_icon_state]0"
- return ..()
-
-/obj/item/singularityhammer/Destroy()
- STOP_PROCESSING(SSobj, src)
- return ..()
-
-/obj/item/singularityhammer/process()
- if(charged < 5)
- charged++
-
-/obj/item/singularityhammer/proc/vortex(turf/pull, mob/wielder)
- for(var/atom/X in orange(5,pull))
- if(ismovable(X))
- var/atom/movable/A = X
- if(A == wielder)
- continue
- if(A && !A.anchored && !ishuman(X) && !isobserver(X))
- step_towards(A,pull)
- step_towards(A,pull)
- step_towards(A,pull)
- else if(ishuman(X))
- var/mob/living/carbon/human/H = X
- if(istype(H.shoes, /obj/item/clothing/shoes/magboots))
- var/obj/item/clothing/shoes/magboots/M = H.shoes
- if(M.magpulse)
- continue
- H.apply_effect(20, EFFECT_PARALYZE, 0)
- step_towards(H,pull)
- step_towards(H,pull)
- step_towards(H,pull)
-
-/obj/item/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
- . = ..()
- if(!proximity)
- return
- if(wielded)
- if(charged == 5)
- charged = 0
- if(istype(A, /mob/living/))
- var/mob/living/Z = A
- Z.take_bodypart_damage(20,0)
- playsound(user, 'sound/weapons/marauder.ogg', 50, TRUE)
- var/turf/target = get_turf(A)
- vortex(target,user)
-
-/obj/item/mjollnir
- name = "Mjolnir"
- desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy."
- icon_state = "mjollnir0"
- base_icon_state = "mjollnir"
- lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
- flags_1 = CONDUCT_1
- slot_flags = ITEM_SLOT_BACK
- force = 5
- throwforce = 30
- throw_range = 7
- w_class = WEIGHT_CLASS_HUGE
- var/wielded = FALSE // track wielded status on item
-
-/obj/item/mjollnir/Initialize()
- . = ..()
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
-
-/obj/item/mjollnir/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_multiplier=5, icon_wielded="[base_icon_state]1", attacksound="sparks")
-
-/// triggered on wield of two handed item
-/obj/item/mjollnir/proc/on_wield(obj/item/source, mob/user)
- wielded = TRUE
-
-/// triggered on unwield of two handed item
-/obj/item/mjollnir/proc/on_unwield(obj/item/source, mob/user)
- wielded = FALSE
-
-/obj/item/mjollnir/update_icon_state()
- icon_state = "[base_icon_state]0"
- return ..()
-
-/obj/item/mjollnir/proc/shock(mob/living/target)
- target.Stun(60)
- var/datum/effect_system/lightning_spread/s = new /datum/effect_system/lightning_spread
- s.set_up(5, 1, target.loc)
- s.start()
- target.visible_message("[target.name] is shocked by [src]!", \
- "You feel a powerful shock course through your body sending you flying!", \
- "You hear a heavy electrical crack!")
- var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src)))
- target.throw_at(throw_target, 200, 4)
- return
-
-/obj/item/mjollnir/attack(mob/living/M, mob/user)
- ..()
- if(wielded)
- shock(M)
-
-/obj/item/mjollnir/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
- . = ..()
- if(isliving(hit_atom))
- shock(hit_atom)
diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm
deleted file mode 100644
index be6b9d3a5a14..000000000000
--- a/code/game/objects/items/spear.dm
+++ /dev/null
@@ -1,283 +0,0 @@
-//spears
-/obj/item/spear
- icon_state = "spearglass0"
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- name = "spear"
- desc = "A haphazardly-constructed yet still deadly weapon of ancient design."
- force = 10
- w_class = WEIGHT_CLASS_BULKY
- slot_flags = ITEM_SLOT_BACK
- throwforce = 20
- throw_speed = 4
- embedding = list("impact_pain_mult" = 3)
- armour_penetration = 10
- custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075)
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
- sharpness = IS_SHARP
- max_integrity = 200
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
- species_exception = list(/datum/species/kepori)
- var/war_cry = "AAAAARGH!!!"
- var/icon_prefix = "spearglass"
-
-/obj/item/spear/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad.
- AddComponent(/datum/component/jousting)
- AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1")
-
-/obj/item/spear/update_icon_state()
- icon_state = "[icon_prefix]0"
- return ..()
-
-/obj/item/spear/CheckParts(list/parts_list)
- var/obj/item/shard/tip = locate() in parts_list
- if (istype(tip, /obj/item/shard/plasma))
- throwforce = 21
- icon_prefix = "spearplasma"
- AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1")
- update_appearance()
- qdel(tip)
- ..()
-
-/obj/item/spear/explosive
- name = "explosive lance"
- icon_state = "spearbomb0"
- base_icon_state = "spearbomb"
- icon_prefix = "spearbomb"
- var/obj/item/grenade/explosive = null
- var/wielded = FALSE // track wielded status on item
-
-/obj/item/spear/explosive/Initialize(mapload)
- . = ..()
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
- set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances
-
-/obj/item/spear/explosive/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1")
-
-/// triggered on wield of two handed item
-/obj/item/spear/explosive/proc/on_wield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = TRUE
-
-/// triggered on unwield of two handed item
-/obj/item/spear/explosive/proc/on_unwield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = FALSE
-
-/obj/item/spear/explosive/proc/set_explosive(obj/item/grenade/G)
- if(explosive)
- QDEL_NULL(explosive)
- G.forceMove(src)
- explosive = G
- desc = "A makeshift spear with [G] attached to it"
-
-/obj/item/spear/explosive/CheckParts(list/parts_list)
- var/obj/item/grenade/G = locate() in parts_list
- if(G)
- var/obj/item/spear/lancePart = locate() in parts_list
- var/datum/component/two_handed/comp_twohand = lancePart.GetComponent(/datum/component/two_handed)
- if(comp_twohand)
- var/lance_wielded = comp_twohand.force_wielded
- var/lance_unwielded = comp_twohand.force_unwielded
- AddComponent(/datum/component/two_handed, force_unwielded=lance_unwielded, force_wielded=lance_wielded)
- throwforce = lancePart.throwforce
- icon_prefix = lancePart.icon_prefix
- parts_list -= G
- parts_list -= lancePart
- set_explosive(G)
- qdel(lancePart)
- ..()
-
-/obj/item/spear/explosive/examine(mob/user)
- . = ..()
- . += "Alt-click to set your war cry."
-
-/obj/item/spear/explosive/AltClick(mob/user)
- if(user.canUseTopic(src, BE_CLOSE))
- ..()
- if(istype(user) && loc == user)
- var/input = stripped_input(user,"What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50)
- if(input)
- src.war_cry = input
-
-/obj/item/spear/explosive/afterattack(atom/movable/AM, mob/user, proximity)
- . = ..()
- if(!proximity)
- return
- if(wielded)
- user.say("[war_cry]", forced="spear warcry")
- explosive.forceMove(AM)
- explosive.prime()
- qdel(src)
-
-//GREY TIDE
-/obj/item/spear/grey_tide
- name = "\improper Grey Tide"
- desc = "Recovered from the aftermath of a revolt aboard Defense Outpost Theta Aegis, in which a seemingly endless tide of Assistants caused heavy casualities among Nanotrasen military forces."
- attack_verb = list("gored")
- force=15
-
-/obj/item/spear/grey_tide/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=15, force_wielded=25, icon_wielded="[icon_prefix]1")
-
-/obj/item/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity)
- . = ..()
- if(!proximity)
- return
- user.faction |= "greytide([REF(user)])"
- if(isliving(AM))
- var/mob/living/L = AM
- if(istype (L, /mob/living/simple_animal/hostile/illusion))
- return
- if(!L.stat && prob(50))
- var/mob/living/simple_animal/hostile/illusion/M = new(user.loc)
- M.faction = user.faction.Copy()
- M.Copy_Parent(user, 100, user.health/2.5, 12, 30)
- M.GiveTarget(L)
-
-/*
- * Bone Spear
- */
-/obj/item/spear/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification.
- icon_state = "bone_spear0"
- name = "bone spear"
- base_icon_state = "bone_spear0"
- icon_prefix = "bone_spear"
- desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology."
- icon = 'icons/obj/items_and_weapons.dmi'
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- mob_overlay_icon = 'icons/mob/clothing/back.dmi'
- force = 12
- throwforce = 22
- armour_penetration = 15 //Enhanced armor piercing
-
-/obj/item/spear/bonespear/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=12, force_wielded=20, icon_wielded="[icon_prefix]1")
-/obj/item/spear/dragonspear//version of the bone spear crafted from the trophy dropped by the Ash Drake. High damage, high ap, burns.
- name = "dragonslayer's spear"
- desc = "A bone spear crafted from the leading spine of a fully-grown drake, razor-sharp and hotter then magma. Wielded by the deranged, pyromaniacs, and champions of lavaland."
- icon = 'icons/obj/items_and_weapons.dmi'
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- mob_overlay_icon = 'icons/mob/clothing/back.dmi'
- force = 20
- throwforce = 25
- block_chance = 15//lol,lmao
- armour_penetration = 30
- embedding = list("impact_pain_mult" = 5)
- icon_prefix = "dragonspear"
- base_icon_state = "dragonspear0"
- icon_state = "dragonspear0"
- var/list/nemesis_factions = list("mining", "boss")
- var/faction_bonus_force = 25
- attack_verb = list("seared", "braided", "impaled", "smote", "gored")
- hitsound = 'sound/weapons/sear.ogg'
- var/cooldown_time = 0 SECONDS
- COOLDOWN_DECLARE(freeze_cooldown)
-
-/obj/item/spear/dragonspear/attack(mob/living/target, mob/living/carbon/human/user)
- var/nemesis_faction = FALSE
- if(LAZYLEN(nemesis_factions))
- for(var/F in target.faction)
- if(F in nemesis_factions)
- nemesis_faction = TRUE
- force += faction_bonus_force
- throwforce += faction_bonus_force
- nemesis_effects(user, target)
- break
- . = ..()
- if(nemesis_faction)
- force -= faction_bonus_force
- throwforce -= faction_bonus_force
-
-/obj/item/spear/dragonspear/proc/nemesis_effects(mob/living/user, mob/living/target)
- return
-
-/obj/item/spear/dragonspear/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=20, force_wielded=25, icon_wielded="[icon_prefix]1")
- AddComponent(/datum/component/butchering, 60, 150)
-
-/obj/item/spear/dragonspear/attack(atom/target, blocked = FALSE)
- if(iscarbon(target))
- var/mob/living/carbon/M = target
- M.adjust_fire_stacks(3)
- M.IgniteMob()
- M.apply_damage(5, BURN)
- M.adjust_bodytemperature(150)
- if(isanimal(target))
- var/mob/living/simple_animal/M = target
- M.apply_damage(15, BURN)
- ..()
-
-//crystal spear
-/obj/item/spear/crystal
- icon_state = "crystal_spear0"
- name = "crystal spear"
- desc = "While more 'sharp stick' than spear, this thing is extremely dangerous neverless. Crafted out of the mysterous crystals, it can hit for very high damage, although it will break with repeated use."
- icon = 'icons/obj/items_and_weapons.dmi'
- base_icon_state = "crystal_spear"
- icon_prefix = "crystal_spear"
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- mob_overlay_icon = 'icons/mob/clothing/back.dmi'
- force = 12
- throwforce = 40
- armour_penetration = 20
- max_integrity = 300 //you can repair this with duct tape
- var/damage_to_take_on_hit = 25 //every time we hit something, deal how much damage?
-
-/obj/item/spear/crystal/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/two_handed, force_unwielded=12, force_wielded=30, icon_wielded="[icon_prefix]1") //4 hit crit
-
-/obj/item/spear/crystal/examine(mob/user)
- . = ..()
- . += "You can throw it for very high damage and stuns fauna, though this will shatter it instantly."
- var/healthpercent = (obj_integrity/max_integrity) * 100
- switch(healthpercent)
- if(50 to 99)
- . += "It looks slightly damaged."
- if(25 to 50)
- . += "It appears heavily damaged."
- if(0 to 25)
- . += "It's falling apart!"
-
-/obj/item/spear/crystal/attack(mob/living/M, mob/living/user)
- . = ..()
- take_damage(damage_to_take_on_hit)
-
-/obj/item/spear/crystal/attack_obj(obj/O, mob/living/user)
- . = ..()
- take_damage(damage_to_take_on_hit)
-
-/obj/item/spear/crystal/obj_destruction(damage_flag)
- visible_message("[src] shatters into a million pieces!")
- playsound(src,"shatter", 70)
- new /obj/effect/decal/cleanable/glass/strange(get_turf(src))
- return ..()
-
-/obj/item/spear/crystal/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) //destroyes when thrown
- . = ..()
- if(ishostile(hit_atom))
- var/mob/living/simple_animal/hostile/hostile_target = hit_atom
- var/hostile_ai_status = hostile_target.AIStatus
- hostile_target.AIStatus = AI_OFF
- addtimer(VARSET_CALLBACK(hostile_target, AIStatus, hostile_ai_status), 5 SECONDS)
-
- new /obj/effect/temp_visual/goliath_tentacle/crystal/visual_only(get_turf(src))
- visible_message("[src] shatters into a million pieces!")
- playsound(src,"shatter", 70)
- new /obj/effect/decal/cleanable/glass/strange(get_turf(src))
- qdel(src)
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 264ab12646ea..10eb8c1e2cf8 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -382,7 +382,7 @@
desc = "Used to secure limbs following a fracture."
gender = PLURAL
singular_name = "splint"
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "splint"
apply_sounds = list('sound/effects/rip1.ogg', 'sound/effects/rip2.ogg')
self_delay = 40
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index da08c87a5a35..23a8c8d5e5f0 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -339,7 +339,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
var/obj/item/stack/sheet/cotton/cloth/C = I
to_chat(user, "You begin to wrap the [C] around the [src]...")
if(do_after(user, 35, target = src))
- var/obj/item/kitchen/knife/shiv/S = new /obj/item/kitchen/knife/shiv
+ var/obj/item/melee/knife/shiv/S = new /obj/item/melee/knife/shiv
C.use(1)
to_chat(user, "You wrap the [C] around the [src] forming a makeshift weapon.")
remove_item_from_storage(src)
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index 9fc6fa808a46..560031fa03da 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -74,7 +74,6 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
/obj/item/emptysandbag
name = "empty sandbag"
desc = "A bag to be filled with sand."
- icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "sandbag"
w_class = WEIGHT_CLASS_TINY
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 4443218e4385..5dde37c0b90d 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -519,7 +519,8 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
GLOBAL_LIST_INIT(bone_recipes, list( \
new /datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar/bone, 3), \
- new /datum/stack_recipe("bone dagger", /obj/item/kitchen/knife/combat/bone, 2)))
+ new /datum/stack_recipe("bone dagger", /obj/item/melee/knife/bone, 2)))
+
/obj/item/stack/sheet/bone
name = "bones"
icon = 'icons/obj/mining.dmi'
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index fb56a7a15886..c2679adf8ae9 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -291,7 +291,7 @@
/obj/item/ammo_box/a762_stripper,
/obj/item/ammo_box/amagpellet_claris, //that's the last of the clips
/obj/item/reagent_containers/food/snacks/donut,
- /obj/item/kitchen/knife/combat,
+ /obj/item/melee/knife/combat,
/obj/item/flashlight/seclite,
/obj/item/melee/classic_baton/telescopic,
/obj/item/radio,
@@ -367,7 +367,7 @@
/obj/item/storage/fancy/cigarettes,
/obj/item/reagent_containers/food/drinks/bottle,
/obj/item/stack/medical,
- /obj/item/kitchen/knife,
+ /obj/item/melee/knife/kitchen,
/obj/item/reagent_containers/hypospray,
/obj/item/gps,
/obj/item/storage/bag/ore,
@@ -382,7 +382,7 @@
/obj/item/storage/bag/plants,
/obj/item/stack/marker_beacon,
/obj/item/restraints/legcuffs/bola/watcher,
- /obj/item/claymore/bone,
+ /obj/item/melee/sword/bone,
/obj/item/key/lasso
))
@@ -786,7 +786,7 @@
STR.use_sound = null //if youre wondering why this is null, its so you can look in your sheath to prepare to draw, without letting anyone know youre preparing to draw it
STR.max_w_class = WEIGHT_CLASS_BULKY
STR.set_holdable(list(
- /obj/item/melee/sabre
+ /obj/item/melee/sword/sabre
))
/obj/item/storage/belt/sabre/examine(mob/user)
@@ -814,7 +814,7 @@
return ..()
/obj/item/storage/belt/sabre/PopulateContents()
- new /obj/item/melee/sabre(src)
+ new /obj/item/melee/sword/sabre(src)
update_appearance()
/obj/item/storage/belt/sabre/solgov
@@ -833,11 +833,11 @@
STR.use_sound = null
STR.max_w_class = WEIGHT_CLASS_BULKY
STR.set_holdable(list(
- /obj/item/melee/sabre/solgov
+ /obj/item/melee/sword/sabre/solgov
))
/obj/item/storage/belt/sabre/solgov/PopulateContents()
- new /obj/item/melee/sabre/solgov(src)
+ new /obj/item/melee/sword/sabre/solgov(src)
update_appearance()
/obj/item/storage/belt/sabre/suns
@@ -862,11 +862,11 @@
STR.use_sound = null
STR.max_w_class = WEIGHT_CLASS_BULKY
STR.set_holdable(list(
- /obj/item/melee/sabre/suns
+ /obj/item/melee/sword/sabre/suns
))
/obj/item/storage/belt/sabre/suns/PopulateContents()
- new /obj/item/melee/sabre/suns(src)
+ new /obj/item/melee/sword/sabre/suns(src)
update_appearance()
@@ -887,11 +887,11 @@
STR.use_sound = null
STR.max_w_class = WEIGHT_CLASS_BULKY
STR.set_holdable(list(
- /obj/item/melee/sabre/suns/captain
+ /obj/item/melee/sword/sabre/suns/captain
))
/obj/item/storage/belt/sabre/suns/captain/PopulateContents()
- new /obj/item/melee/sabre/suns/captain(src)
+ new /obj/item/melee/sword/sabre/suns/captain(src)
update_appearance()
/obj/item/storage/belt/sabre/suns/cmo
@@ -917,11 +917,11 @@
STR.use_sound = null
STR.max_w_class = WEIGHT_CLASS_BULKY
STR.set_holdable(list(
- /obj/item/melee/sabre/suns/cmo
+ /obj/item/melee/sword/sabre/suns/cmo
))
/obj/item/storage/belt/sabre/suns/cmo/PopulateContents()
- new /obj/item/melee/sabre/suns/cmo(src)
+ new /obj/item/melee/sword/sabre/suns/cmo(src)
update_appearance()
/obj/item/storage/belt/security/webbing/inteq
diff --git a/code/game/objects/items/storage/ration.dm b/code/game/objects/items/storage/ration.dm
index b016cc339260..169e0dfad0a6 100644
--- a/code/game/objects/items/storage/ration.dm
+++ b/code/game/objects/items/storage/ration.dm
@@ -54,7 +54,7 @@
/obj/item/reagent_containers/food/snacks/ration/entree/vegan_chili = 1,
/obj/item/reagent_containers/food/snacks/ration/side/vegan_crackers = 1,
/obj/item/reagent_containers/food/snacks/ration/side/cornbread = 1,
- /obj/item/reagent_containers/food/snacks/ration/snack/pizza_crackers = 1,
+ /obj/item/reagent_containers/food/snacks/ration/snack/fruit_puree = 1,
/obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread = 1,
/obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage = 1,
/obj/item/ration_heater = 1
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index 4bb91fe95726..39e533f2a4a3 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -22,7 +22,7 @@
new /obj/item/multitool/ai_detect(src) // 1 tc
new /obj/item/encryptionkey/syndicate(src) // 2 tc
new /obj/item/reagent_containers/syringe/mulligan(src) // 4 tc
- new /obj/item/kitchen/knife/switchblade(src) //I'll count this as 2 tc
+ new /obj/item/melee/knife/switchblade(src) //I'll count this as 2 tc
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate (src) // 2 tc this shit heals
new /obj/item/flashlight/emp(src) // 2 tc
new /obj/item/chameleon(src) // 7 tc
@@ -117,7 +117,7 @@
new /obj/item/card/emag(src) // 6 tc
/obj/item/storage/box/syndicate/bundle_B/PopulateContents()
- switch (pickweight(list( "bond" = 2, "ninja" = 1, "darklord" = 1, "white_whale_holy_grail" = 2, "mad_scientist" = 2, "bee" = 1, "mr_freeze" = 2, "made_man"= 1)))
+ switch (pickweight(list( "bond" = 2, "ninja" = 1, "darklord" = 1, "white_whale_holy_grail" = 2, "mad_scientist" = 2, "mr_freeze" = 2, "made_man"= 1)))
if("bond")
new /obj/item/gun/ballistic/automatic/pistol/ringneck(src)
new /obj/item/attachment/silencer(src)
@@ -129,7 +129,7 @@
new /obj/item/reagent_containers/glass/rag(src)
if("ninja")
- new /obj/item/katana(src) // Unique , hard to tell how much tc this is worth. 8 tc?
+ new /obj/item/melee/sword/katana(src)
new /obj/item/implanter/adrenalin(src) // 8 tc
for(var/i in 1 to 6)
new /obj/item/throwing_star(src) // ~5 tc for all 6
@@ -140,7 +140,6 @@
if("darklord")
new /obj/item/dualsaber(src)
new /obj/item/dnainjector/telemut/darkbundle(src)
- new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
new /obj/item/card/id/syndicate(src)
new /obj/item/clothing/shoes/chameleon/noslip(src) //because slipping while being a dark lord sucks
new /obj/item/book/granter/spell/summonitem(src)
@@ -167,16 +166,6 @@
new /obj/item/pen/edagger(src)
new /obj/item/gun/energy/decloner(src)
- if("bee")
- new /obj/item/paper/fluff/bee_objectives(src) // 0 tc (motivation)
- new /obj/item/clothing/suit/hooded/bee_costume(src) // 0 tc
- new /obj/item/clothing/mask/rat/bee(src) // 0 tc
- new /obj/item/storage/belt/fannypack/yellow(src) // 0 tc
- new /obj/item/grenade/spawnergrenade/buzzkill(src)
- new /obj/item/grenade/spawnergrenade/buzzkill(src)
- new /obj/item/reagent_containers/glass/bottle/beesease(src) // 10 tc?
- new /obj/item/melee/beesword(src) //priceless
-
if("mr_freeze")
new /obj/item/clothing/glasses/cold(src)
new /obj/item/clothing/gloves/color/black(src)
@@ -195,7 +184,7 @@
if("made_man")
new /obj/effect/spawner/lootdrop/mafia_outfit(src) // 0 TC, just an outfit for the new 'don of this family
new /obj/item/gun/ballistic/automatic/smg/firestorm/pan(src) // 20 TC, a gun with 50 .45 bullets on a three round burst is kinda outstanding
- new /obj/item/kitchen/knife/switchblade(src) // 3 TC? It's nice, but it's really a stealth/oh fuck I'm out of ammo weapon
+ new /obj/item/melee/knife/switchblade(src) // 3 TC? It's nice, but it's really a stealth/oh fuck I'm out of ammo weapon
new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) // 5 TC, free molotov assemblies
new /obj/item/reagent_containers/food/drinks/bottle/vodka (src)
new /obj/item/reagent_containers/food/drinks/bottle/vodka (src)
@@ -209,14 +198,6 @@
new /obj/item/reagent_containers/food/drinks/flask (src) // 1 TC, I can't believe I forgot about the booze flask AAAAAAA
new /obj/item/storage/secure/briefcase/syndie (src) // 1TC, for bribing the bartender to let you set up shop... amongst other actions.
-
-/obj/item/paper/fluff/bee_objectives
- name = "Objectives of a Bee Liberation Front Operative"
- default_raw_text = "Objective #1. Liberate all bees on the NT transport vessel 2416/B. Success!
Objective #2. Escape alive. Failed."
-
-
-
-
/obj/item/storage/box/syndicate/contract_kit
name = "Contract Kit"
desc = "Supplied to Syndicate contractors."
diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm
index b8f4451a9660..deca5b57397e 100644
--- a/code/game/objects/items/tanks/jetpack.dm
+++ b/code/game/objects/items/tanks/jetpack.dm
@@ -173,7 +173,7 @@
/obj/item/tank/jetpack/suit
name = "hardsuit jetpack upgrade"
desc = "A modular, compact set of thrusters designed to integrate with a hardsuit. It is fueled by a tank inserted into the suit's storage compartment."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "jetpack_upgrade"
item_state = "jetpack-black"
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 5ce082d79dc9..f1ce47a8f8fd 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -265,7 +265,7 @@
/obj/item/toy/sword
name = "toy sword"
desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up."
- icon = 'icons/obj/transforming_energy.dmi'
+ icon = 'icons/obj/weapon/energy.dmi'
icon_state = "sword"
item_state = "sword"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
@@ -348,7 +348,7 @@
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
var/active = FALSE
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
hitsound = 'sound/weapons/smash.ogg'
attack_verb = list("robusted")
@@ -407,7 +407,7 @@
/obj/item/toy/katana
name = "replica katana"
desc = "Woefully underpowered in D20."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/weapon/sword.dmi'
icon_state = "katana"
item_state = "katana"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
deleted file mode 100644
index 89eb9b0019e4..000000000000
--- a/code/game/objects/items/weaponry.dm
+++ /dev/null
@@ -1,759 +0,0 @@
-/obj/item/banhammer
- desc = "A banhammer."
- name = "banhammer"
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "toyhammer"
- slot_flags = ITEM_SLOT_BELT
- throwforce = 0
- force = 1
- w_class = WEIGHT_CLASS_TINY
- throw_speed = 3
- throw_range = 7
- attack_verb = list("banned")
- max_integrity = 200
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
- resistance_flags = FIRE_PROOF
-
-/*
-oranges says: This is a meme relating to the english translation of the ss13 russian wiki page on lurkmore.
-mrdoombringer sez: and remember kids, if you try and PR a fix for this item's grammar, you are admitting that you are, indeed, a newfriend.
-for further reading, please see: https://github.com/tgstation/tgstation/pull/30173 and https://translate.google.com/translate?sl=auto&tl=en&js=y&prev=_t&hl=en&ie=UTF-8&u=%2F%2Flurkmore.to%2FSS13&edit-text=&act=url
-*/
-/obj/item/banhammer/attack(mob/M, mob/user)
- if(user.zone_selected == BODY_ZONE_HEAD)
- M.visible_message("[user] is stroking the head of [M] with a banhammer.", "[user] is stroking your head with a banhammer.", "You hear a banhammer stroking a head.")
- else
- M.visible_message("[M] has been banned FOR NO REISIN by [user]!", "You have been banned FOR NO REISIN by [user]!", "You hear a banhammer banning someone.")
- playsound(loc, 'sound/effects/adminhelp.ogg', 15) //keep it at 15% volume so people don't jump out of their skin too much
- if(user.a_intent != INTENT_HELP)
- return ..(M, user)
-
-/obj/item/sord
- name = "\improper SORD"
- desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
- icon_state = "sord"
- item_state = "sord"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- slot_flags = ITEM_SLOT_BELT
- force = 2
- throwforce = 1
- w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
-/obj/item/claymore
- name = "claymore"
- desc = "What are you standing around staring at this for? Get to killing!"
- icon_state = "claymore"
- item_state = "claymore"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- pickup_sound = 'sound/items/handling/knife2_pickup.ogg'
- drop_sound = 'sound/items/handling/metal_drop.ogg'
- hitsound = 'sound/weapons/bladeslice.ogg'
- flags_1 = CONDUCT_1
- slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
- force = 40
- throwforce = 10
- w_class = WEIGHT_CLASS_NORMAL
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- block_chance = 40
- sharpness = IS_SHARP
- max_integrity = 200
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
- resistance_flags = FIRE_PROOF
-
-/obj/item/claymore/Initialize()
- . = ..()
- AddComponent(/datum/component/butchering, 40, 105)
-
-/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
- desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim."
- flags_1 = CONDUCT_1
- item_flags = DROPDEL //WOW BRO YOU LOST AN ARM, GUESS WHAT YOU DONT GET YOUR SWORD ANYMORE //I CANT BELIEVE SPOOKYDONUT WOULD BREAK THE REQUIREMENTS
- slot_flags = null
- block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY
- light_range = 3
- attack_verb = list("brutalized", "eviscerated", "disemboweled", "hacked", "carved", "cleaved") //ONLY THE MOST VISCERAL ATTACK VERBS
- var/notches = 0 //HOW MANY PEOPLE HAVE BEEN SLAIN WITH THIS BLADE
- var/obj/item/disk/nuclear/nuke_disk //OUR STORED NUKE DISK
-
-/obj/item/claymore/highlander/Initialize()
- . = ..()
- ADD_TRAIT(src, TRAIT_NODROP, HIGHLANDER)
- START_PROCESSING(SSobj, src)
-
-/obj/item/claymore/highlander/Destroy()
- if(nuke_disk)
- nuke_disk.forceMove(get_turf(src))
- nuke_disk.visible_message("The nuke disk is vulnerable!")
- nuke_disk = null
- STOP_PROCESSING(SSobj, src)
- return ..()
-
-/obj/item/claymore/highlander/process()
- if(ishuman(loc))
- var/mob/living/carbon/human/H = loc
- loc.layer = LARGE_MOB_LAYER //NO HIDING BEHIND PLANTS FOR YOU, DICKWEED (HA GET IT, BECAUSE WEEDS ARE PLANTS)
- H.bleedsuppress = TRUE //AND WE WON'T BLEED OUT LIKE COWARDS
- else
- if(!(flags_1 & ADMIN_SPAWNED_1))
- qdel(src)
-
-
-/obj/item/claymore/highlander/pickup(mob/living/user)
- . = ..()
- to_chat(user, "The power of Scotland protects you! You are shielded from all stuns and knockdowns.")
- user.add_stun_absorption("highlander", INFINITY, 1, " is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!")
- user.ignore_slowdown(HIGHLANDER)
-
-/obj/item/claymore/highlander/dropped(mob/living/user)
- . = ..()
- user.unignore_slowdown(HIGHLANDER)
-
-/obj/item/claymore/highlander/examine(mob/user)
- . = ..()
- . += "It has [!notches ? "nothing" : "[notches] notches"] scratched into the blade."
- if(nuke_disk)
- . += "It's holding the nuke disk!"
-
-/obj/item/claymore/highlander/attack(mob/living/target, mob/living/user)
- . = ..()
- if(!QDELETED(target) && iscarbon(target) && target.stat == DEAD && target.mind && target.mind.special_role == "highlander")
- user.fully_heal(admin_revive = FALSE) //STEAL THE LIFE OF OUR FALLEN FOES
- add_notch(user)
- target.visible_message("[target] crumbles to dust beneath [user]'s blows!", "As you fall, your body crumbles to dust!")
- target.dust()
-
-/obj/item/claymore/highlander/attack_self(mob/living/user)
- var/closest_victim
- var/closest_distance = 255
- for(var/mob/living/carbon/human/H in GLOB.player_list - user)
- if(H.mind.special_role == "highlander" && (!closest_victim || get_dist(user, closest_victim) < closest_distance))
- closest_victim = H
- if(!closest_victim)
- to_chat(user, "[src] thrums for a moment and falls dark. Perhaps there's nobody nearby.")
- return
- to_chat(user, "[src] thrums and points to the [dir2text(get_dir(user, closest_victim))].")
-
-/obj/item/claymore/highlander/IsReflect()
- return 1 //YOU THINK YOUR PUNY LASERS CAN STOP ME?
-
-/obj/item/claymore/highlander/proc/add_notch(mob/living/user) //DYNAMIC CLAYMORE PROGRESSION SYSTEM - THIS IS THE FUTURE
- notches++
- force++
- var/new_name = name
- switch(notches)
- if(1)
- to_chat(user, "Your first kill - hopefully one of many. You scratch a notch into [src]'s blade.")
- to_chat(user, "You feel your fallen foe's soul entering your blade, restoring your wounds!")
- new_name = "notched claymore"
- if(2)
- to_chat(user, "Another falls before you. Another soul fuses with your own. Another notch in the blade.")
- new_name = "double-notched claymore"
- add_atom_colour(rgb(255, 235, 235), ADMIN_COLOUR_PRIORITY)
- if(3)
- to_chat(user, "You're beginning to relish the thrill of battle.")
- new_name = "triple-notched claymore"
- add_atom_colour(rgb(255, 215, 215), ADMIN_COLOUR_PRIORITY)
- if(4)
- to_chat(user, "You've lost count of how many you've killed.")
- new_name = "many-notched claymore"
- add_atom_colour(rgb(255, 195, 195), ADMIN_COLOUR_PRIORITY)
- if(5)
- to_chat(user, "Five voices now echo in your mind, cheering the slaughter.")
- new_name = "battle-tested claymore"
- add_atom_colour(rgb(255, 175, 175), ADMIN_COLOUR_PRIORITY)
- if(6)
- to_chat(user, "Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe.")
- new_name = "battle-scarred claymore"
- add_atom_colour(rgb(255, 155, 155), ADMIN_COLOUR_PRIORITY)
- if(7)
- to_chat(user, "Kill. Butcher. Conquer.")
- new_name = "vicious claymore"
- add_atom_colour(rgb(255, 135, 135), ADMIN_COLOUR_PRIORITY)
- if(8)
- to_chat(user, "IT NEVER GETS OLD. THE SCREAMING. THE BLOOD AS IT SPRAYS ACROSS YOUR FACE.")
- new_name = "bloodthirsty claymore"
- add_atom_colour(rgb(255, 115, 115), ADMIN_COLOUR_PRIORITY)
- if(9)
- to_chat(user, "ANOTHER ONE FALLS TO YOUR BLOWS. ANOTHER WEAKLING UNFIT TO LIVE.")
- new_name = "gore-stained claymore"
- add_atom_colour(rgb(255, 95, 95), ADMIN_COLOUR_PRIORITY)
- if(10)
- user.visible_message("[user]'s eyes light up with a vengeful fire!", \
- "YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! THERE CAN BE ONLY ONE!!!")
- user.update_icons()
- new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]"
- icon_state = "claymore_gold"
- item_state = "cultblade"
- remove_atom_colour(ADMIN_COLOUR_PRIORITY)
-
- name = new_name
- playsound(user, 'sound/items/screwdriver2.ogg', 50, TRUE)
-
-/obj/item/katana
- name = "katana"
- desc = "Woefully underpowered in D20."
- icon_state = "katana"
- item_state = "katana"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- pickup_sound = 'sound/items/handling/knife2_pickup.ogg'
- drop_sound = 'sound/items/handling/metal_drop.ogg'
- flags_1 = CONDUCT_1
- slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
- force = 40
- throwforce = 10
- w_class = WEIGHT_CLASS_HUGE
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- block_chance = 10
- sharpness = IS_SHARP
- max_integrity = 200
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
- resistance_flags = FIRE_PROOF
- supports_variations = VOX_VARIATION
-
-/obj/item/katana/cursed
- name = "ominous katana"
- desc = "A japanese single-edged blade, once used to contain an ancient evil. The being within is grateful for being released, but beware: generosity has a price."
- icon_state = "ominous_katana"
- item_state = "ominous_katana"
- icon = 'icons/obj/lavaland/artefacts.dmi'
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- force = 35
- armour_penetration = 30
- max_integrity = 500
- resistance_flags = FIRE_PROOF | ACID_PROOF
- var/essence = 0//Used for blade abilities, mainly heals(If I can safely implement this I will nerf the damage slightly, and boost the selfdam)
- var/list/nemesis_factions = list("mining", "boss")
- var/faction_bonus_force = 25
-
-
-/obj/item/katana/cursed/examine(mob/user)
- . = ..()
- . += "To cut into the flesh of your target with this weapon is to feed the gluttonous emptiness within. Burn the blood of your enemies to replenish your own spent essence."
-
-/obj/item/katana/cursed/attack(mob/living/target, mob/living/user)
- . = ..()
- if(isliving(target) && target.stat != DEAD)
- essence += rand(15, 20)
-
-/obj/item/katana/cursed/attack(mob/living/target, mob/living/carbon/human/user)
- var/nemesis_faction = FALSE
- if(LAZYLEN(nemesis_factions))
- for(var/F in target.faction)
- if(F in nemesis_factions)
- nemesis_faction = TRUE
- force += faction_bonus_force
- nemesis_effects(user, target)
- break
- . = ..()
- if(nemesis_faction)
- force -= faction_bonus_force
-
-/obj/item/katana/cursed/proc/nemesis_effects(mob/living/user, mob/living/target)
- return
-
-/obj/item/katana/cursed/attack(mob/target, mob/living/carbon/human/user)
- if(user.mind && user.owns_soul())
- to_chat(user, "You feel a terrible chill as the emptiness within [src] devours on your life force!")
- user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN))
- user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN))
- user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN))
- user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN))
- ..()
-
-/obj/item/wirerod
- name = "wired rod"
- desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit."
- icon_state = "wiredrod"
- item_state = "rods"
- flags_1 = CONDUCT_1
- force = 9
- throwforce = 10
- w_class = WEIGHT_CLASS_NORMAL
- custom_materials = list(/datum/material/iron=1150, /datum/material/glass=75)
- attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
-
-/obj/item/wirerod/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/shard))
- var/obj/item/spear/S = new /obj/item/spear
-
- remove_item_from_storage(user)
- if (!user.transferItemToLoc(I, S))
- return
- S.CheckParts(list(I))
- qdel(src)
-
- user.put_in_hands(S)
- to_chat(user, "You fasten the glass shard to the top of the rod with the cable.")
-
- else if(istype(I, /obj/item/assembly/igniter) && !(HAS_TRAIT(I, TRAIT_NODROP)))
- var/obj/item/melee/baton/cattleprod/P = new /obj/item/melee/baton/cattleprod
-
- remove_item_from_storage(user)
-
- to_chat(user, "You fasten [I] to the top of the rod with the cable.")
-
- qdel(I)
- qdel(src)
-
- user.put_in_hands(P)
- else
- return ..()
-
-
-/obj/item/throwing_star
- name = "throwing star"
- desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts."
- icon_state = "throwingstar"
- item_state = "eshield0"
- lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
- force = 2
- throwforce = 20 //20 + 2 (WEIGHT_CLASS_SMALL) * 4 (EMBEDDED_IMPACT_PAIN_MULTIPLIER) = 28 damage on hit due to guaranteed embedding
- throw_speed = 4
- embedding = list("pain_mult" = 4, "embed_chance" = 100, "fall_chance" = 0, "embed_chance_turf_mod" = 15)
- armour_penetration = 40
-
- w_class = WEIGHT_CLASS_SMALL
- sharpness = IS_SHARP
- custom_materials = list(/datum/material/iron=500, /datum/material/glass=500)
- resistance_flags = FIRE_PROOF
-
-/obj/item/throwing_star/stamina
- name = "shock throwing star"
- desc = "An aerodynamic disc designed to cause excruciating pain when stuck inside fleeing targets, hopefully without causing fatal harm."
- throwforce = 5
- embedding = list("pain_chance" = 5, "embed_chance" = 100, "fall_chance" = 0, "jostle_chance" = 10, "pain_stam_pct" = 0.8, "jostle_pain_mult" = 3)
-
-/obj/item/throwing_star/toy
- name = "toy throwing star"
- desc = "An aerodynamic disc strapped with adhesive for sticking to people, good for playing pranks and getting yourself killed by security."
- sharpness = IS_BLUNT
- force = 0
- throwforce = 0
- embedding = list("pain_mult" = 0, "jostle_pain_mult" = 0, "embed_chance" = 100, "fall_chance" = 0)
-
-/obj/item/throwing_star/magspear
- name = "magnetic spear"
- desc = "A reusable spear that is typically loaded into kinetic spearguns."
- icon = 'icons/obj/ammo_bullets.dmi'
- icon_state = "magspear"
- throwforce = 25 //kills regular carps in one hit
- force = 10
- throw_range = 0 //throwing these invalidates the speargun
- attack_verb = list("stabbed", "ripped", "gored", "impaled")
- embedding = list("pain_mult" = 8, "embed_chance" = 100, "fall_chance" = 0, "impact_pain_mult" = 15) //55 damage+embed on hit
-
-/obj/item/phone
- name = "red phone"
- desc = "Should anything ever go wrong..."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "red_phone"
- force = 3
- throwforce = 2
- throw_speed = 3
- throw_range = 4
- w_class = WEIGHT_CLASS_SMALL
- attack_verb = list("called", "rang")
- hitsound = 'sound/weapons/ring.ogg'
-
-
-/obj/item/cane
- name = "cane"
- desc = "A cane used by a true gentleman."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "cane"
- item_state = "stick"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 5
- throwforce = 5
- w_class = WEIGHT_CLASS_SMALL
- custom_materials = list(/datum/material/iron=50)
- attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
-
-/obj/item/staff
- name = "wizard staff"
- desc = "Apparently a staff used by the wizard."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "staff"
- lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
- force = 3
- throwforce = 5
- throw_speed = 2
- throw_range = 5
- w_class = WEIGHT_CLASS_SMALL
- armour_penetration = 100
- attack_verb = list("bludgeoned", "whacked", "disciplined")
- resistance_flags = FLAMMABLE
-
-/obj/item/staff/broom
- name = "broom"
- desc = "Used for sweeping, and flying into the night while cackling. Black cat not included."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "broom"
- resistance_flags = FLAMMABLE
-
-/obj/item/staff/stick
- name = "stick"
- desc = "A great tool to drag someone else's drinks across the bar."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "cane"
- item_state = "stick"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 3
- throwforce = 5
- throw_speed = 2
- throw_range = 5
- w_class = WEIGHT_CLASS_SMALL
-
-/obj/item/ectoplasm
- name = "ectoplasm"
- desc = "Spooky."
- gender = PLURAL
- icon = 'icons/obj/wizard.dmi'
- icon_state = "ectoplasm"
-
-
-/obj/item/ectoplasm/angelic
- icon = 'icons/obj/wizard.dmi'
- icon_state = "angelplasm"
-
-/obj/item/mounted_chainsaw
- name = "mounted chainsaw"
- desc = "A chainsaw that has replaced your arm."
- icon_state = "chainsaw_on"
- item_state = "mounted_chainsaw"
- lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
- item_flags = ABSTRACT | DROPDEL
- w_class = WEIGHT_CLASS_HUGE
- force = 24
- throwforce = 0
- throw_range = 0
- throw_speed = 0
- sharpness = IS_SHARP
- attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
- hitsound = 'sound/weapons/chainsawhit.ogg'
- tool_behaviour = TOOL_SAW
- toolspeed = 1
-
-/obj/item/mounted_chainsaw/Initialize()
- . = ..()
- ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
-
-/obj/item/mounted_chainsaw/Destroy()
- var/obj/item/bodypart/part
- new /obj/item/chainsaw(get_turf(src))
- if(iscarbon(loc))
- var/mob/living/carbon/holder = loc
- var/index = holder.get_held_index_of_item(src)
- if(index)
- part = holder.hand_bodyparts[index]
- . = ..()
- if(part)
- part.drop_limb()
-
-/obj/item/statuebust
- name = "bust"
- desc = "A priceless ancient marble bust, the kind that belongs in a museum." //or you can hit people with it
- icon = 'icons/obj/statue.dmi'
- icon_state = "bust"
- force = 15
- throwforce = 10
- throw_speed = 5
- throw_range = 2
- attack_verb = list("busted")
- var/impressiveness = 45
-
-/obj/item/statuebust/Initialize()
- . = ..()
- AddComponent(/datum/component/art, impressiveness)
- AddElement(/datum/element/beauty, 1000)
-
-/obj/item/statuebust/hippocratic
- name = "hippocrates bust"
- desc = "A bust of the famous Greek physician Hippocrates of Kos, often referred to as the father of western medicine."
- icon_state = "hippocratic"
- impressiveness = 50
-
-/obj/item/melee/skateboard
- name = "improvised skateboard"
- desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon."
- icon_state = "skateboard"
- item_state = "skateboard"
- force = 12
- throwforce = 4
- w_class = WEIGHT_CLASS_NORMAL
- attack_verb = list("smacked", "whacked", "slammed", "smashed")
- ///The vehicle counterpart for the board
- var/board_item_type = /obj/vehicle/ridden/scooter/skateboard
-
-/obj/item/melee/skateboard/attack_self(mob/user)
- var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))//this probably has fucky interactions with telekinesis but for the record it wasnt my fault
- S.buckle_mob(user)
- qdel(src)
-
-/obj/item/melee/skateboard/pro
- name = "skateboard"
- desc = "A RaDSTORMz brand professional skateboard. It looks sturdy and well made."
- icon_state = "skateboard2"
- item_state = "skateboard2"
- board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro
- custom_premium_price = 500
-
-/obj/item/melee/skateboard/hoverboard
- name = "hoverboard"
- desc = "A blast from the past, so retro!"
- icon_state = "hoverboard_red"
- item_state = "hoverboard_red"
- board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard
- custom_premium_price = 2015
-
-/obj/item/melee/skateboard/hoverboard/admin
- name = "\improper Board Of Directors"
- desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too."
- icon_state = "hoverboard_nt"
- item_state = "hoverboard_nt"
- board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin
-
-/obj/item/melee/baseball_bat
- name = "baseball bat"
- desc = "There ain't a skull in the league that can withstand a swatter."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "baseball_bat"
- item_state = "baseball_bat"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 12
- throwforce = 12
- attack_verb = list("beat", "smacked")
- custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 3.5)
- w_class = WEIGHT_CLASS_HUGE
- var/homerun_ready = 0
- var/homerun_able = 0
-
-/obj/item/melee/baseball_bat/homerun
- name = "home run bat"
- desc = "This thing looks dangerous... Dangerously good at baseball, that is."
- homerun_able = 1
-
-/obj/item/melee/baseball_bat/attack_self(mob/user)
- if(!homerun_able)
- ..()
- return
- if(homerun_ready)
- to_chat(user, "You're already ready to do a home run!")
- ..()
- return
- to_chat(user, "You begin gathering strength...")
- playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, TRUE)
- if(do_after(user, 90, target = src))
- to_chat(user, "You gather power! Time for a home run!")
- homerun_ready = 1
- ..()
-
-/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user)
- . = ..()
- var/atom/throw_target = get_edge_target_turf(target, user.dir)
- if(homerun_ready)
- user.visible_message("It's a home run!")
- target.throw_at(throw_target, rand(8,10), 14, user)
- SSexplosions.medturf += throw_target
- playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, TRUE)
- homerun_ready = 0
- return
- else if(!target.anchored)
- target.throw_at(throw_target, rand(1,2), 2, user, gentle = TRUE)
-
-/obj/item/melee/baseball_bat/ablative
- name = "metal baseball bat"
- desc = "This bat is made of highly reflective, highly armored material."
- icon_state = "baseball_bat_metal"
- item_state = "baseball_bat_metal"
- force = 12
- throwforce = 15
-
-/obj/item/melee/baseball_bat/bone
- name = "bone club"
- desc = "A long and hard shaft of rock solid bone." // I am the master of comedy
- icon_state = "baseball_bat_bone"
- item_state = "baseball_bat_bone"
-
-/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers
- var/picksound = rand(1,2)
- var/turf = get_turf(src)
- if(picksound == 1)
- playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, TRUE)
- if(picksound == 2)
- playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, TRUE)
- return 1
-
-/obj/item/melee/flyswatter
- name = "flyswatter"
- desc = "Useful for killing insects of all sizes."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "flyswatter"
- item_state = "flyswatter"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 1
- throwforce = 1
- attack_verb = list("swatted", "smacked")
- hitsound = 'sound/effects/snap.ogg'
- w_class = WEIGHT_CLASS_SMALL
- //Things in this list will be instantly splatted. Flyman weakness is handled in the flyman species weakness proc.
- var/list/strong_against
-
-/obj/item/melee/flyswatter/Initialize()
- . = ..()
- strong_against = typecacheof(list(
- /mob/living/simple_animal/hostile/poison/bees/,
- /mob/living/simple_animal/butterfly,
- /mob/living/simple_animal/hostile/cockroach,
- /obj/item/queen_bee
- ))
-
-
-/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
- . = ..()
- if(proximity_flag)
- if(is_type_in_typecache(target, strong_against))
- new /obj/effect/decal/cleanable/insectguts(target.drop_location())
- to_chat(user, "You easily splat the [target].")
- if(istype(target, /mob/living/))
- var/mob/living/bug = target
- bug.death(1)
- else
- qdel(target)
-
-/obj/item/proc/can_trigger_gun(mob/living/user)
- if(!user.can_use_guns(src))
- return FALSE
- return TRUE
-
-/obj/item/extendohand
- name = "extendo-hand"
- desc = "Futuristic tech has allowed these classic spring-boxing toys to essentially act as a fully functional hand-operated hand prosthetic."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "extendohand"
- item_state = "extendohand"
- lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
- force = 0
- throwforce = 5
- reach = 2
- var/min_reach = 2
-
-/obj/item/extendohand/acme
- name = "\improper ACME Extendo-Hand"
- desc = "A novelty extendo-hand produced by the ACME corporation. Originally designed to knock out roadrunners."
-
-/obj/item/extendohand/attack(atom/M, mob/living/carbon/human/user)
- var/dist = get_dist(M, user)
- if(dist < min_reach)
- to_chat(user, "[M] is too close to use [src] on.")
- return
- M.attack_hand(user)
-
-/obj/item/gohei
- name = "gohei"
- desc = "A wooden stick with white streamers at the end. Originally used by shrine maidens to purify things. Now used by the station's valued weeaboos."
- force = 5
- throwforce = 5
- hitsound = "swing_hit"
- attack_verb = list("whacked", "thwacked", "walloped", "socked")
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "gohei"
- item_state = "gohei"
- lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
-
-//HF blade
-/obj/item/vibro_weapon
- icon_state = "hfrequency0"
- base_icon_state = "hfrequency"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- name = "vibro sword"
- desc = "A potent weapon capable of cutting through nearly anything. Wielding it in two hands will allow you to deflect gunfire."
- armour_penetration = 100
- block_chance = 30
- force = 20
- throwforce = 20
- throw_speed = 4
- sharpness = IS_SHARP
- attack_verb = list("cut", "sliced", "diced")
- w_class = WEIGHT_CLASS_BULKY
- slot_flags = ITEM_SLOT_BACK
- hitsound = 'sound/weapons/bladeslice.ogg'
- var/wielded = FALSE // track wielded status on item
-
-/obj/item/vibro_weapon/Initialize()
- . = ..()
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
-
-/obj/item/vibro_weapon/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/butchering, 20, 105)
- AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="[base_icon_state]1")
-
-/// triggered on wield of two handed item
-/obj/item/vibro_weapon/proc/on_wield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = TRUE
-
-/// triggered on unwield of two handed item
-/obj/item/vibro_weapon/proc/on_unwield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = FALSE
-
-/obj/item/vibro_weapon/update_icon_state()
- icon_state = "[base_icon_state]0"
- return ..()
-
-/obj/item/vibro_weapon/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(wielded)
- final_block_chance *= 2
- if(wielded || attack_type != PROJECTILE_ATTACK)
- if(prob(final_block_chance))
- if(attack_type == PROJECTILE_ATTACK)
- owner.visible_message("[owner] deflects [attack_text] with [src]!")
- playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE)
- return 1
- else
- owner.visible_message("[owner] parries [attack_text] with [src]!")
- return 1
- return 0
-
-/obj/item/claymore/bone
- name = "Bone Sword"
- desc = "Jagged pieces of bone are tied to what looks like a goliaths femur."
- icon_state = "bone_sword"
- item_state = "bone_sword"
- icon = 'icons/obj/items_and_weapons.dmi'
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- mob_overlay_icon = 'icons/mob/clothing/back.dmi'
- force = 15
- throwforce = 10
- armour_penetration = 15
-
-
-/obj/item/vibro_weapon/weak
- armour_penetration = 10
- block_chance = 10
- force = 15
- throwforce = 20
-
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
index dac919bb428c..39f65ca53a5b 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -98,7 +98,6 @@
icon_door = "black"
/obj/structure/closet/wardrobe/chaplain_black/PopulateContents()
- new /obj/item/storage/box/holy(src)
new /obj/item/clothing/accessory/pocketprotector/cosmetology(src)
new /obj/item/clothing/under/rank/civilian/chaplain(src)
new /obj/item/clothing/shoes/sneakers/black(src)
diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm
index 24c0f71d322c..a164248a2bdd 100644
--- a/code/game/objects/structures/fireaxe.dm
+++ b/code/game/objects/structures/fireaxe.dm
@@ -10,7 +10,7 @@
integrity_failure = 0.33
var/locked = TRUE
var/open = FALSE
- var/obj/item/fireaxe/fireaxe
+ var/obj/item/melee/axe/fire/fireaxe
/obj/structure/fireaxecabinet/Initialize()
. = ..()
@@ -49,8 +49,8 @@
obj_integrity = max_integrity
update_appearance()
else if(open || broken)
- if(istype(I, /obj/item/fireaxe) && !fireaxe)
- var/obj/item/fireaxe/F = I
+ if(istype(I, /obj/item/melee/axe/fire) && !fireaxe)
+ var/obj/item/melee/axe/fire/F = I
if(F && F.wielded)
to_chat(user, "Unwield the [F.name] first.")
return
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index 6a3cae5bbd72..362de185e9ba 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -362,12 +362,7 @@
/obj/structure/girder/cult/attackby(obj/item/W, mob/user, params)
add_fingerprint(user)
- if(istype(W, /obj/item/melee/cultblade/dagger) && iscultist(user)) //Cultists can demolish cult girders instantly with their tomes
- user.visible_message("[user] strikes [src] with [W]!", "You demolish [src].")
- new /obj/item/stack/sheet/mineral/hidden/hellstone(drop_location(), 1)
- qdel(src)
-
- else if(W.tool_behaviour == TOOL_WELDER)
+ if(W.tool_behaviour == TOOL_WELDER)
if(!W.tool_start_check(user, amount=0))
return
diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm
index c42983a5e0e5..5dbaa4a1e7c3 100644
--- a/code/game/objects/structures/headpike.dm
+++ b/code/game/objects/structures/headpike.dm
@@ -6,7 +6,7 @@
density = FALSE
anchored = TRUE
var/bonespear = FALSE
- var/obj/item/spear/spear
+ var/obj/item/melee/spear/spear
var/obj/item/bodypart/head/victim
/obj/structure/headpike/bone //for bone spears
@@ -24,9 +24,9 @@
victim = new(src)
victim.real_name = random_unique_name(prob(50))
- spear = locate(bonespear ? /obj/item/spear/bonespear : /obj/item/spear) in parts_list
+ spear = locate(bonespear ? /obj/item/melee/spear/bone : /obj/item/melee/spear) in parts_list
if(!spear)
- spear = bonespear ? new/obj/item/spear/bonespear(src) : new/obj/item/spear(src)
+ spear = bonespear ? new/obj/item/melee/spear/bone(src) : new/obj/item/melee/spear(src)
update_appearance()
return ..()
diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm
index e0f6e22f3e7e..637f2deeb515 100644
--- a/code/game/objects/structures/manned_turret.dm
+++ b/code/game/objects/structures/manned_turret.dm
@@ -214,7 +214,7 @@
/obj/item/gun_control
name = "turret controls"
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "offhand"
w_class = WEIGHT_CLASS_HUGE
item_flags = ABSTRACT | NOBLUDGEON | DROPDEL
diff --git a/code/game/objects/structures/salvaging.dm b/code/game/objects/structures/salvaging.dm
index 8d5ee571e2e0..dbd75dac488f 100644
--- a/code/game/objects/structures/salvaging.dm
+++ b/code/game/objects/structures/salvaging.dm
@@ -242,7 +242,6 @@
/obj/item/research_notes/loot/medium = 20,
/obj/item/research_notes/loot/big = 5, //you have a chance at summoning god damn ripley lobster from this thing, might as well
- /obj/item/disk/tech_disk/major = 3,
/obj/item/disk/tech_disk = 20,
/obj/item/disk/data = 20,
/obj/item/disk/holodisk = 20,
@@ -303,7 +302,6 @@
/obj/item/research_notes/loot/medium = 20,
/obj/item/research_notes/loot/big = 5,
- /obj/item/disk/tech_disk/major = 3,
/obj/item/disk/tech_disk = 20,
/obj/item/disk/data = 20,
/obj/item/disk/holodisk = 20,
@@ -591,7 +589,6 @@
/obj/effect/spawner/lootdrop/random_machine_circuit_common
loot = list(
/obj/item/circuitboard/machine/autolathe = 5,
- /obj/item/circuitboard/machine/bepis = 5,
/obj/item/circuitboard/machine/biogenerator = 5,
/obj/item/circuitboard/machine/cell_charger = 5,
/obj/item/circuitboard/machine/chem_heater = 5,
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 4ebd416675b8..a7404ef68a6c 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -726,7 +726,6 @@
/obj/item/rack_parts
name = "rack parts"
desc = "Parts of a rack."
- icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "rack_parts"
flags_1 = CONDUCT_1
custom_materials = list(/datum/material/iron=2000)
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index c22858ea591d..0d97598a0504 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -218,7 +218,7 @@
/obj/item/reagent_containers/food/snacks/urinalcake
name = "urinal cake"
desc = "The noble urinal cake, protecting the people's pipes from the people's pee. Edibility is suggested to be low."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "urinalcake"
w_class = WEIGHT_CLASS_TINY
list_reagents = list(/datum/reagent/chlorine = 3, /datum/reagent/ammonia = 1)
diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm
index dc410d027504..766d7e0e5a24 100644
--- a/code/game/turfs/closed/_closed.dm
+++ b/code/game/turfs/closed/_closed.dm
@@ -227,6 +227,8 @@
return ..()
/turf/closed/proc/attack_override(obj/item/W, mob/user, turf/loc)
+ if(!isclosedturf(src))
+ return
//the istype cascade has been spread among various procs for easy overriding or if we want to call something specific
if(try_decon(W, user, loc) || try_destroy(W, user, loc))
return
@@ -252,15 +254,18 @@
return TRUE
/turf/closed/proc/try_decon(obj/item/I, mob/user, turf/T)
+ var/act_duration = breakdown_duration
if(I.tool_behaviour == TOOL_WELDER)
if(!I.tool_start_check(user, amount=0))
return FALSE
-
to_chat(user, "You begin slicing through the outer plating...")
- while(I.use_tool(src, user, breakdown_duration, volume=50))
+ while(I.use_tool(src, user, act_duration, volume=50))
if(iswallturf(src))
to_chat(user, "You slice through some of the outer plating...")
- alter_integrity(-(I.wall_decon_damage),user,FALSE,TRUE)
+ if(!alter_integrity(-(I.wall_decon_damage),user,FALSE,TRUE))
+ return TRUE
+ else
+ break
return FALSE
diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm
index 0d9b3205cc27..3970cc403d73 100644
--- a/code/game/turfs/closed/minerals.dm
+++ b/code/game/turfs/closed/minerals.dm
@@ -79,16 +79,20 @@
return ..()
/turf/closed/mineral/try_decon(obj/item/I, mob/user, turf/T)
+ var/act_duration = breakdown_duration
if(I.tool_behaviour == TOOL_MINING)
if(!I.tool_start_check(user, amount=0))
return FALSE
to_chat(user, "You begin breaking through the rock...")
- while(I.use_tool(src, user, breakdown_duration, volume=50))
+ while(I.use_tool(src, user, act_duration, volume=50))
if(ismineralturf(src))
to_chat(user, "You break through some of the stone...")
SSblackbox.record_feedback("tally", "pick_used_mining", 1, I.type)
- alter_integrity(-(I.wall_decon_damage),user,FALSE,TRUE)
+ if(!alter_integrity(-(I.wall_decon_damage),user,FALSE,TRUE))
+ return TRUE
+ else
+ break
return FALSE
diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm
index 04d4bc7895d6..1ca5a1cc527c 100644
--- a/code/game/turfs/closed/wall/mineral_walls.dm
+++ b/code/game/turfs/closed/wall/mineral_walls.dm
@@ -243,7 +243,7 @@
/turf/closed/wall/mineral/wood/attackby(obj/item/W, mob/user)
if(W.get_sharpness() && W.force)
var/duration = (48/W.force) * 2 //In seconds, for now.
- if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe))
+ if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/melee/axe/fire))
duration /= 4 //Much better with hatchets and axes.
if(do_after(user, duration*10, target=src)) //Into deciseconds.
dismantle_wall(devastated = FALSE)
diff --git a/code/game/turfs/closed/wall/reinf_walls.dm b/code/game/turfs/closed/wall/reinf_walls.dm
index ed2f0141eaff..c0fb9232ad28 100644
--- a/code/game/turfs/closed/wall/reinf_walls.dm
+++ b/code/game/turfs/closed/wall/reinf_walls.dm
@@ -78,7 +78,8 @@
to_chat(user, "You begin slicing through the [src].")
while(W.use_tool(src,user,30,volume = 100))
to_chat(user, "You slice through some of the outer plating...")
- alter_integrity(-(W.wall_decon_damage))
+ if(!alter_integrity(-(W.wall_decon_damage)))
+ return TRUE
return 1
switch(d_state)
diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm
index bed648ff592b..1d8f242e216a 100644
--- a/code/game/turfs/closed/walls.dm
+++ b/code/game/turfs/closed/walls.dm
@@ -85,9 +85,10 @@
return null
/turf/closed/wall/attack_override(obj/item/W, mob/user, turf/loc)
- if(try_clean(W, user, loc) || try_wallmount(W, user, loc))
+ if(!iswallturf(src))
+ return
+ if(try_clean(W, user, loc) || try_wallmount(W, user, loc) || try_decon(W, user, loc) || try_destroy(W, user, loc))
return
- ..()
/turf/closed/wall/proc/try_clean(obj/item/W, mob/user, turf/T)
if((user.a_intent != INTENT_HELP))
@@ -122,19 +123,6 @@
return FALSE
-/turf/closed/wall/try_decon(obj/item/I, mob/user, turf/T)
- if(I.tool_behaviour == TOOL_WELDER)
- if(!I.tool_start_check(user, amount=0))
- return FALSE
-
- to_chat(user, "You begin slicing through the outer plating...")
- while(I.use_tool(src, user, breakdown_duration, volume=50))
- if(iswallturf(src))
- to_chat(user, "You slice through some of the outer plating...")
- alter_integrity(-(I.wall_decon_damage),FALSE,TRUE)
-
- return FALSE
-
/turf/closed/wall/singularity_pull(S, current_size)
..()
wall_singularity_pull(current_size)
diff --git a/code/game/turfs/open/floor/plating/wasteplanet.dm b/code/game/turfs/open/floor/plating/wasteplanet.dm
index 011cab93d28a..3cf9b047662c 100644
--- a/code/game/turfs/open/floor/plating/wasteplanet.dm
+++ b/code/game/turfs/open/floor/plating/wasteplanet.dm
@@ -58,6 +58,43 @@
initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS
planetary_atmos = TRUE
+//cement
+
+/turf/open/floor/concrete/wasteplanet
+ initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS
+ planetary_atmos = TRUE
+ baseturfs = /turf/open/floor/plating/asteroid/wasteplanet
+
+/turf/open/floor/concrete/wasteplanet/Initialize()
+ . = ..()
+ icon_state = pick(list(
+ "conc_smooth",
+ "conc_slab_1",
+ "conc_slab_2",
+ "conc_slab_3",
+ "conc_slab_4",
+ "conc_tiles"
+ ))
+
+/turf/open/floor/concrete/wasteplanet/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
+ return
+
+/turf/open/floor/concrete/reinforced/wasteplanet
+ initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS
+ planetary_atmos = TRUE
+ baseturfs = /turf/open/floor/plating/asteroid/wasteplanet
+
+/turf/open/floor/concrete/reinforced/wasteplanet/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
+ return
+
+/turf/open/floor/concrete/pavement/wasteplanet
+ initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS
+ planetary_atmos = TRUE
+ baseturfs = /turf/open/floor/plating/asteroid/wasteplanet
+
+/turf/open/floor/concrete/pavement/wasteplanet/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
+ return
+
//open turfs then open lits.
/turf/open/floor/plating/wasteplanet/lit
@@ -94,3 +131,37 @@
light_range = 2
light_power = 0.2
light_color = LIGHT_COLOR_FLARE
+
+/turf/open/floor/concrete/wasteplanet/lit
+ light_range = 2
+ light_power = 0.2
+ light_color = LIGHT_COLOR_FLARE
+
+/turf/open/floor/concrete/reinforced/wasteplanet/lit
+ light_range = 2
+ light_power = 0.2
+ light_color = LIGHT_COLOR_FLARE
+
+/turf/open/floor/concrete/pavement/wasteplanet/lit
+ light_range = 2
+ light_power = 0.2
+ light_color = LIGHT_COLOR_FLARE
+
+//closed turfs are a thing
+/turf/closed/wall/r_wall/wasteplanet
+ baseturfs = /turf/open/floor/plating/wasteplanet
+
+/turf/closed/wall/r_wall/rust/wasteplanet
+ baseturfs = /turf/open/floor/plating/wasteplanet/rust
+
+/turf/closed/wall/wasteplanet
+ baseturfs = /turf/open/floor/plating/wasteplanet
+
+/turf/closed/wall/rust/wasteplanet
+ baseturfs = /turf/open/floor/plating/wasteplanet/rust
+
+/turf/closed/wall/concrete/wasteplanet
+ baseturfs = /turf/open/floor/concrete/wasteplanet
+
+/turf/closed/wall/concrete/reinforced/wasteplanet
+ baseturfs = /turf/open/floor/concrete/wasteplanet
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index cf834c9f9c5d..e5888f8088df 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -216,9 +216,10 @@
"}
- var/list/mobs = sortmobs()
+ var/list/mobs = SSpoints_of_interest.get_mob_pois()
var/i = 1
- for(var/mob/M in mobs)
+ for(var/mob_name in mobs)
+ var/mob/M = mobs[mob_name]
if(M.ckey)
var/color = "#e6e6e6"
@@ -254,12 +255,7 @@
M_job = "Silicon-based"
else if(isanimal(M)) //simple animals
- if(iscorgi(M))
- M_job = "Corgi"
- else if(isslime(M))
- M_job = "slime"
- else
- M_job = "Animal"
+ M_job = "Animal"
else
M_job = "Living"
diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm
index 9b84224317a9..708448cf52cd 100644
--- a/code/modules/admin/verbs/adminjump.dm
+++ b/code/modules/admin/verbs/adminjump.dm
@@ -140,7 +140,7 @@
usr.forceMove(M.loc)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/sendmob(mob/M in sortmobs())
+/client/proc/sendmob(mob/M in SSpoints_of_interest.get_mob_pois())
set category = "Admin.Game"
set name = "Send Mob"
if(!src.holder)
diff --git a/code/modules/antagonists/blood_contract/blood_contract.dm b/code/modules/antagonists/blood_contract/blood_contract.dm
index edd8aba60422..c56ef47db93a 100644
--- a/code/modules/antagonists/blood_contract/blood_contract.dm
+++ b/code/modules/antagonists/blood_contract/blood_contract.dm
@@ -36,6 +36,6 @@
continue
to_chat(P, "You have an overwhelming desire to kill [H]. [H.p_theyve(TRUE)] been marked red! Whoever [H.p_they()] [H.p_were()], friend or foe, go kill [H.p_them()]!")
- var/obj/item/I = new /obj/item/kitchen/knife/butcher(get_turf(P))
+ var/obj/item/I = new /obj/item/melee/knife/butcher(get_turf(P))
P.put_in_hands(I, del_on_fail=TRUE)
QDEL_IN(I, duration)
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index c9232857a547..b4bfb265386d 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -182,34 +182,6 @@
magic_path = "/obj/item/melee/blood_magic/construction"
health_cost = 12
-/datum/action/innate/cult/blood_spell/equipment
- name = "Summon Equipment"
- desc = "Allows you to summon a ritual dagger, or empowers your hand to summon combat gear onto a cultist you touch, including cult armor, a cult bola, and a cult sword."
- button_icon_state = "equip"
- magic_path = "/obj/item/melee/blood_magic/armor"
-
-/datum/action/innate/cult/blood_spell/equipment/Activate()
- var/choice = alert(owner,"Choose your equipment type",,"Combat Equipment","Ritual Dagger","Cancel")
- if(choice == "Ritual Dagger")
- var/turf/T = get_turf(owner)
- owner.visible_message("[owner]'s hand glows red for a moment.", \
- "Red light begins to shimmer and take form within your hand!")
- var/obj/O = new /obj/item/melee/cultblade/dagger(T)
- if(owner.put_in_hands(O))
- to_chat(owner, "A ritual dagger appears in your hand!")
- else
- owner.visible_message(
- "A ritual dagger appears at [owner]'s feet!", \
- "A ritual dagger materializes at your feet.")
- SEND_SOUND(owner, sound('sound/effects/magic.ogg',0,1,25))
- charges--
- desc = base_desc
- desc += "
Has [charges] use\s remaining."
- if(charges<=0)
- qdel(src)
- else if(choice == "Combat Equipment")
- ..()
-
/datum/action/innate/cult/blood_spell/horror
name = "Hallucinations"
desc = "Gives hallucinations to a target at range. A silent and invisible spell."
@@ -339,7 +311,7 @@
/obj/item/melee/blood_magic
name = "\improper magical aura"
desc = "A sinister looking aura that distorts the flow of reality around it."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi'
icon_state = "disintegrate"
@@ -695,7 +667,6 @@
C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), ITEM_SLOT_BACK)
if(C == user)
qdel(src) //Clears the hands
- C.put_in_hands(new /obj/item/melee/cultblade(user))
C.put_in_hands(new /obj/item/restraints/legcuffs/bola/cult(user))
..()
@@ -812,29 +783,12 @@
/obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user)
if(iscultist(user))
- var/list/options = list("Blood Spear (150)", "Blood Beam (500)")
+ var/list/options = list("Blood Beam (500)")
var/choice = input(user, "Choose a greater blood rite...", "Greater Blood Rites") as null|anything in options
if(!choice)
to_chat(user, "You decide against conducting a greater blood rite.")
return
switch(choice)
- if("Blood Spear (150)")
- if(uses < BLOOD_SPEAR_COST)
- to_chat(user, "You need [BLOOD_SPEAR_COST] charges to perform this rite.")
- else
- uses -= BLOOD_SPEAR_COST
- var/turf/T = get_turf(user)
- qdel(src)
- var/datum/action/innate/cult/spear/S = new(user)
- var/obj/item/cult_spear/rite = new(T)
- S.Grant(user, rite)
- rite.spear_act = S
- if(user.put_in_hands(rite))
- to_chat(user, "A [rite.name] appears in your hand!")
- else
- user.visible_message(
- "A [rite.name] appears at [user]'s feet!", \
- "A [rite.name] materializes at your feet.")
if("Blood Beam (500)")
if(uses < BLOOD_BEAM_COST)
to_chat(user, "You need [BLOOD_BEAM_COST] charges to perform this rite.")
diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm
index 406c51956035..d6330b386f29 100644
--- a/code/modules/antagonists/cult/cult.dm
+++ b/code/modules/antagonists/cult/cult.dm
@@ -73,7 +73,6 @@
var/mob/living/carbon/H = owner.current
if(!istype(H))
return
- . += cult_give_item(/obj/item/melee/cultblade/dagger, H)
to_chat(owner, "These will help you jumpstart a cult of your own in this sector. Use them well, and remember - you are not the only one.")
@@ -168,10 +167,7 @@
to_chat(admin, "Spawning dagger failed!")
/datum/antagonist/cult/proc/admin_take_all(mob/admin)
- var/mob/living/current = owner.current
- for(var/o in current.GetAllContents())
- if(istype(o, /obj/item/melee/cultblade/dagger))
- qdel(o)
+ return
/datum/antagonist/cult/master
ignore_implant = TRUE
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 69c9248d6fb9..d13e3885a0df 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -6,209 +6,6 @@
throw_range = 5
w_class = WEIGHT_CLASS_SMALL
-/obj/item/melee/cultblade/dagger
- name = "ritual dagger"
- desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "render"
- item_state = "cultdagger"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- inhand_x_dimension = 32
- inhand_y_dimension = 32
- w_class = WEIGHT_CLASS_SMALL
- force = 15
- throwforce = 25
- armour_penetration = 35
- actions_types = list(/datum/action/item_action/cult_dagger)
- var/drawing_rune = FALSE
-
-/obj/item/melee/cultblade/dagger/Initialize()
- . = ..()
- var/image/I = image(icon = 'icons/effects/blood.dmi' , icon_state = null, loc = src)
- I.override = TRUE
- add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_dagger", I)
-
-/obj/item/melee/cultblade
- name = "eldritch longsword"
- desc = "A sword humming with unholy energy. It glows with a dim red light."
- icon_state = "cultblade"
- item_state = "cultblade"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- flags_1 = CONDUCT_1
- sharpness = IS_SHARP
- w_class = WEIGHT_CLASS_BULKY
- force = 30
- throwforce = 10
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended")
-
-/obj/item/melee/cultblade/Initialize()
- . = ..()
- AddComponent(/datum/component/butchering, 40, 100)
-
-/obj/item/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user)
- if(!iscultist(user))
- user.Paralyze(100)
- user.dropItemToGround(src, TRUE)
- user.visible_message(
- "A powerful force shoves [user] away from [target]!", \
- "\"You shouldn't play with sharp things. You'll poke someone's eye out.\"")
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- H.apply_damage(rand(force/2, force), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
- else
- user.adjustBruteLoss(rand(force/2,force))
- return
- ..()
-
-/obj/item/melee/cultblade/ghost
- name = "eldritch sword"
- force = 19 //can't break normal airlocks
- item_flags = NEEDS_PERMIT | DROPDEL
- flags_1 = NONE
-
-/obj/item/melee/cultblade/ghost/Initialize()
- . = ..()
- ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT)
-
-/obj/item/melee/cultblade/pickup(mob/living/user)
- ..()
- if(!iscultist(user))
- to_chat(user, "\"I wouldn't advise that.\"")
-
-/obj/item/cult_bastard
- name = "geometric bastard sword"
- desc = "An enormous sword, once used by Nar'Sien cultists to rapidly harvest the souls of non-believers. It still yet hungers to taste inpure blood."
- w_class = WEIGHT_CLASS_HUGE
- block_chance = 50
- throwforce = 20
- force = 30
- armour_penetration = 45
- throw_speed = 1
- throw_range = 3
- sharpness = IS_SHARP
- light_system = MOVABLE_LIGHT
- light_range = 4
- light_color = COLOR_RED
- attack_verb = list("cleaved", "bisected", "tore", "brutalized", "smashed", "ripped", "diced", "carved")
- icon_state = "cultbastard"
- item_state = "cultbastard"
- hitsound = 'sound/weapons/bladeslice.ogg'
- lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
- inhand_x_dimension = 64
- inhand_y_dimension = 64
- actions_types = list()
- item_flags = SLOWS_WHILE_IN_HAND
- var/datum/action/innate/dash/cult/jaunt
- var/datum/action/innate/cult/spin2win/linked_action
- var/spinning = FALSE
- var/spin_cooldown = 250
- var/dash_toggled = TRUE
- var/list/nemesis_factions = list("mining", "boss")
- var/faction_bonus_force = 25
-
-/obj/item/cult_bastard/Initialize()
- . = ..()
- jaunt = new(src)
- linked_action = new(src)
- AddComponent(/datum/component/butchering, 50, 120)
- AddComponent(/datum/component/two_handed, require_twohands=TRUE)
-
-/obj/item/cult_bastard/attack(mob/living/target, mob/living/carbon/human/user)
- var/nemesis_faction = FALSE
- if(LAZYLEN(nemesis_factions))
- for(var/F in target.faction)
- if(F in nemesis_factions)
- nemesis_faction = TRUE
- force += faction_bonus_force
- throwforce += faction_bonus_force
- nemesis_effects(user, target)
- break
- . = ..()
- if(nemesis_faction)
- force -= faction_bonus_force
- throwforce -= faction_bonus_force
-
-/obj/item/cult_bastard/proc/nemesis_effects(mob/living/user, mob/living/target)
- return
-
-/obj/item/cult_bastard/Destroy()
- QDEL_NULL(jaunt)
- QDEL_NULL(linked_action)
- return ..()
-
-/obj/item/cult_bastard/examine(mob/user)
- . = ..()
- . += "This weapon will absorb the souls of unconscious human foes."
- if(contents.len)
- . += "There are [contents.len] souls trapped within the sword's core."
- else
- . += "The sword appears to be quite lifeless."
-
-/obj/item/cult_bastard/can_be_pulled(user)
- return FALSE
-
-/obj/item/cult_bastard/attack_self(mob/user)
- dash_toggled = !dash_toggled
- if(dash_toggled)
- to_chat(loc, "You raise [src] and prepare to jaunt with it.")
- else
- to_chat(loc, "You lower [src] and prepare to swing it normally.")
-
-/obj/item/cult_bastard/pickup(mob/living/user)
- . = ..()
- force = initial(force)
- jaunt.Grant(user, src)
- linked_action.Grant(user, src)
- user.update_icons()
-
-/obj/item/cult_bastard/dropped(mob/user)
- . = ..()
- linked_action.Remove(user)
- jaunt.Remove(user)
- user.update_icons()
-
-/obj/item/cult_bastard/IsReflect()
- if(spinning)
- playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE)
- return TRUE
- else
- ..()
-
-/obj/item/cult_bastard/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(prob(final_block_chance))
- if(attack_type == PROJECTILE_ATTACK)
- owner.visible_message("[owner] deflects [attack_text] with [src]!")
- playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE)
- return TRUE
- else
- playsound(src, 'sound/weapons/parry.ogg', 75, TRUE)
- owner.visible_message("[owner] parries [attack_text] with [src]!")
- return TRUE
- return FALSE
-
-/obj/item/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters)
- . = ..()
- if(dash_toggled && !proximity)
- jaunt.Teleport(user, target)
- return
- if(proximity)
- if(ishuman(target))
- var/mob/living/carbon/human/H = target
- if(H.stat != CONSCIOUS)
- var/obj/item/soulstone/anybody/SS = new /obj/item/soulstone/anybody(src)
- SS.attack(H, user)
- if(!LAZYLEN(SS.contents))
- qdel(SS)
- if(istype(target, /obj/structure/constructshell) && contents.len)
- var/obj/item/soulstone/anybody/SS = contents[1]
- if(istype(SS))
- SS.transfer_soul("CONSTRUCT",target,user)
- qdel(SS)
-
/datum/action/innate/dash/cult
name = "Rend the Veil"
desc = "Use the sword to shear open the flimsy fabric of this reality and teleport to your target."
@@ -226,45 +23,6 @@
else
return FALSE
-
-
-/datum/action/innate/cult/spin2win
- name = "Geometer's Fury"
- desc = "You draw on the power of the sword's ancient runes, spinning it wildly around you as you become immune to most attacks."
- background_icon_state = "bg_demon"
- button_icon_state = "sintouch"
- var/cooldown = 0
- var/mob/living/carbon/human/holder
- var/obj/item/cult_bastard/sword
-
-/datum/action/innate/cult/spin2win/Grant(mob/user, obj/bastard)
- . = ..()
- sword = bastard
- holder = user
-
-/datum/action/innate/cult/spin2win/IsAvailable()
- if(cooldown <= world.time)
- return TRUE
- else
- return FALSE
-
-/datum/action/innate/cult/spin2win/Activate()
- cooldown = world.time + sword.spin_cooldown
- holder.changeNext_move(50)
- holder.apply_status_effect(/datum/status_effect/sword_spin)
- sword.spinning = TRUE
- sword.block_chance = 100
- sword.slowdown += 1.5
- addtimer(CALLBACK(src, PROC_REF(stop_spinning)), 50)
- holder.update_action_buttons_icon()
-
-/datum/action/innate/cult/spin2win/proc/stop_spinning()
- sword.spinning = FALSE
- sword.block_chance = 50
- sword.slowdown -= 1.5
- sleep(sword.spin_cooldown)
- holder.update_action_buttons_icon()
-
/obj/item/restraints/legcuffs/bola/cult
name = "\improper Nar'Sien bola"
desc = "A strong bola, bound with dark magic that allows it to pass harmlessly through Nar'Sien cultists. Throw it to trip and slow your victim."
@@ -303,7 +61,7 @@
icon_state = "cultrobes"
item_state = "cultrobes"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank)
+ allowed = list(/obj/item/tome, /obj/item/tank)
armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 40, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10)
flags_inv = HIDEJUMPSUIT
cold_protection = CHEST|GROIN|LEGS|ARMS
@@ -349,7 +107,7 @@
icon_state = "magusred"
item_state = "magusred"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
+ allowed = list(/obj/item/tome)
armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 50, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
@@ -369,7 +127,7 @@
item_state = "cult_armor"
desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. It can withstand hard vacuum."
w_class = WEIGHT_CLASS_BULKY
- allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank/internals/)
+ allowed = list(/obj/item/tome, /obj/item/tank/internals/)
armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult
@@ -430,7 +188,7 @@
/obj/item/clothing/suit/hooded/cultrobes/berserker
name = "flagellant's robes"
desc = "Blood-soaked robes infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage."
- allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
+ allowed = list(/obj/item/tome)
armor = list("melee" = -45, "bullet" = -45, "laser" = -45,"energy" = -55, "bomb" = -45, "bio" = -45, "rad" = -45, "fire" = 0, "acid" = 0)
slowdown = -0.6
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/berserkerhood
@@ -581,132 +339,9 @@
..()
to_chat(user, "\The [src] can only transport items!")
-
-/obj/item/cult_spear
- name = "blood halberd"
- desc = "A sickening spear composed entirely of crystallized blood."
- icon_state = "bloodspear0"
- base_icon_state = "occultpoleaxe"
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- slot_flags = 0
- force = 17
- throwforce = 40
- throw_speed = 2
- armour_penetration = 30
- block_chance = 30
- attack_verb = list("attacked", "impaled", "stabbed", "torn", "gored")
- sharpness = IS_SHARP
- hitsound = 'sound/weapons/bladeslice.ogg'
- var/datum/action/innate/cult/spear/spear_act
- var/wielded = FALSE // track wielded status on item
-
-/obj/item/cult_spear/Initialize()
- . = ..()
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
-
-/obj/item/cult_spear/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/butchering, 100, 90)
- AddComponent(/datum/component/two_handed, force_unwielded=17, force_wielded=24, icon_wielded="[base_icon_state]1")
-
-/// triggered on wield of two handed item
-/obj/item/cult_spear/proc/on_wield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = TRUE
-
-/// triggered on unwield of two handed item
-/obj/item/cult_spear/proc/on_unwield(obj/item/source, mob/user)
- SIGNAL_HANDLER
-
- wielded = FALSE
-
-/obj/item/cult_spear/update_icon_state()
- icon_state = "[base_icon_state]0"
- return ..()
-
-/obj/item/cult_spear/Destroy()
- if(spear_act)
- qdel(spear_act)
- return ..()
-
-/obj/item/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
- var/turf/T = get_turf(hit_atom)
- if(isliving(hit_atom))
- var/mob/living/L = hit_atom
- if(iscultist(L))
- playsound(src, 'sound/weapons/throwtap.ogg', 50)
- if(L.put_in_active_hand(src))
- L.visible_message("[L] catches [src] out of the air!")
- else
- L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!")
- else if(!..())
- if(!L.anti_magic_check())
- L.Paralyze(50)
- break_spear(T)
- else
- ..()
-
-/obj/item/cult_spear/proc/break_spear(turf/T)
- if(src)
- if(!T)
- T = get_turf(src)
- if(T)
- T.visible_message("[src] shatters and melts back into blood!")
- new /obj/effect/temp_visual/cult/sparks(T)
- new /obj/effect/decal/cleanable/blood/splatter(T)
- playsound(T, 'sound/effects/glassbr3.ogg', 100)
- qdel(src)
-
-/obj/item/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(wielded)
- final_block_chance *= 2
- if(prob(final_block_chance))
- if(attack_type == PROJECTILE_ATTACK)
- owner.visible_message("[owner] deflects [attack_text] with [src]!")
- playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE)
- return TRUE
- else
- playsound(src, 'sound/weapons/parry.ogg', 100, TRUE)
- owner.visible_message("[owner] parries [attack_text] with [src]!")
- return TRUE
- return FALSE
-
-/datum/action/innate/cult/spear
- name = "Bloody Bond"
- desc = "Call the blood spear back to your hand!"
- background_icon_state = "bg_demon"
- button_icon_state = "bloodspear"
- var/obj/item/cult_spear/spear
- var/cooldown = 0
-
-/datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear)
- . = ..()
- spear = blood_spear
- button.screen_loc = "6:157,4:-2"
- button.moved = "6:157,4:-2"
-
-/datum/action/innate/cult/spear/Activate()
- if(owner == spear.loc || cooldown > world.time)
- return
- var/ST = get_turf(spear)
- var/OT = get_turf(owner)
- if(get_dist(OT, ST) > 10)
- to_chat(owner,"The spear is too far away!")
- else
- cooldown = world.time + 20
- if(isliving(spear.loc))
- var/mob/living/L = spear.loc
- L.dropItemToGround(spear)
- L.visible_message("An unseen force pulls the blood spear from [L]'s hands!")
- spear.throw_at(owner, 10, 2, owner)
-
/obj/item/blood_beam
name = "\improper magical aura"
desc = "Sinister looking aura that distorts the flow of reality around it."
- icon = 'icons/obj/items_and_weapons.dmi'
lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi'
icon_state = "disintegrate"
diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm
index 60816a90d45d..27ba86d24bfa 100644
--- a/code/modules/antagonists/cult/cult_structures.dm
+++ b/code/modules/antagonists/cult/cult_structures.dm
@@ -64,13 +64,6 @@
icon_state = "[initial(icon_state)][anchored ? null : "_off"]"
return ..()
-/obj/structure/destructible/cult/attackby(obj/I, mob/user, params)
- if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user))
- set_anchored(!anchored)
- to_chat(user, "You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor.")
- else
- return ..()
-
/obj/structure/destructible/cult/proc/check_menu(mob/user)
if(!istype(user))
return FALSE
diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm
deleted file mode 100644
index 1ea84bd83a1f..000000000000
--- a/code/modules/antagonists/cult/ritual.dm
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
-
-This file contains the cult dagger and rune list code
-
-*/
-
-
-/obj/item/melee/cultblade/dagger/Initialize()
- . = ..()
- if(!LAZYLEN(GLOB.rune_types))
- GLOB.rune_types = list()
- var/static/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed)
- for(var/i_can_do_loops_now_thanks_remie in non_revealed_runes)
- var/obj/effect/rune/R = i_can_do_loops_now_thanks_remie
- GLOB.rune_types[initial(R.cultist_name)] = R //Uses the cultist name for displaying purposes
-
-/obj/item/melee/cultblade/dagger/examine(mob/user)
- . = ..()
- if(iscultist(user) || isobserver(user))
- . += {"The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar'Sie.\n
- Striking a cult structure will unanchor or reanchor it.\n
- Striking another cultist with it will purge holy water from them.\n
- Striking a noncultist, however, will tear their flesh."}
-
-/obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user)
- if(iscultist(M))
- if(M.reagents && M.reagents.has_reagent(/datum/reagent/water/holywater)) //allows cultists to be rescued from the clutches of ordained religion
- to_chat(user, "You remove the taint from [M]." )
- var/holy2unholy = M.reagents.get_reagent_amount(/datum/reagent/water/holywater)
- M.reagents.del_reagent(/datum/reagent/water/holywater)
- M.reagents.add_reagent(/datum/reagent/fuel/unholywater,holy2unholy)
- log_combat(user, M, "smacked", src, " removing the holy water from them")
- return FALSE
- . = ..()
-
-/obj/item/melee/cultblade/dagger/attack_self(mob/user)
- if(!iscultist(user))
- to_chat(user, "[src] is covered in unintelligible shapes and markings.")
- return
- scribe_rune(user)
-
-/obj/item/melee/cultblade/dagger/proc/scribe_rune(mob/living/user)
- if(drawing_rune)
- return
- drawing_rune = TRUE
- scribe_rune_attempt(user)
- drawing_rune = FALSE
-
-/obj/item/melee/cultblade/dagger/proc/scribe_rune_attempt(mob/living/user)
- var/turf/Turf = get_turf(user)
- var/chosen_keyword
- var/obj/effect/rune/rune_to_scribe
- var/entered_rune_name
- var/list/shields = list()
- var/area/A = get_area(src)
- var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
- if(!user_antag)
- return
- if(!check_rune_turf(Turf, user))
- return
- entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in GLOB.rune_types
- if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user))
- return
- rune_to_scribe = GLOB.rune_types[entered_rune_name]
- if(!rune_to_scribe)
- return
- if(initial(rune_to_scribe.req_keyword))
- chosen_keyword = stripped_input(user, "Enter a keyword for the new rune.", "Words of Power")
- if(!chosen_keyword)
- drawing_rune = FALSE
- scribe_rune(user) //Go back a menu!
- return
- Turf = get_turf(user) //we may have moved. adjust as needed...
- A = get_area(src)
- if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user))
- return
- if(ispath(rune_to_scribe, /obj/effect/rune/summon) && initial(A.name) == "Space")
- to_chat(user, "The veil is not weak enough here to summon a cultist!")
- return
- if(ispath(rune_to_scribe, /obj/effect/rune/apocalypse))
- if((world.time - SSticker.round_start_time) <= 6000)
- var/wait = 6000 - (world.time - SSticker.round_start_time)
- to_chat(user, "The veil is not yet weak enough for this rune - it will be available in [DisplayTimeText(wait)].")
- return
- var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives
- if(!(A in summon_objective.summon_spots))
- to_chat(user, "The Apocalypse rune will remove a ritual site (where Nar'Sie can be summoned), it can only be scribed in [english_list(summon_objective.summon_spots)]!")
- return
- if(summon_objective.summon_spots.len < 2)
- to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning!")
- return
- if(ispath(rune_to_scribe, /obj/effect/rune/narsie))
- var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives
- var/datum/objective/sacrifice/sac_objective = locate() in user_antag.cult_team.objectives
- if(!summon_objective)
- to_chat(user, "Nar'Sie does not wish to be summoned!")
- return
- if(sac_objective && !sac_objective.check_completion())
- to_chat(user, "The sacrifice is not complete. The portal would lack the power to open if you tried!")
- return
- if(summon_objective.check_completion())
- to_chat(user, "\"I am already here. There is no need to try to summon me now.\"")
- return
- if(!(A in summon_objective.summon_spots))
- to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!")
- return
- var/confirm_final = alert(user, "This is the FINAL step to summon Nar'Sie; it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for Nar'Sie!", "No")
- if(confirm_final == "No")
- to_chat(user, "You decide to prepare further before scribing the rune.")
- return
- Turf = get_turf(user)
- A = get_area(src)
- if(!(A in summon_objective.summon_spots)) // Check again to make sure they didn't move
- to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!")
- return
- priority_announce("Figments from an eldritch god are being summoned by [user] into [initial(A.name)] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/ai/spanomalies.ogg')
- for(var/B in spiral_range_turfs(1, user, 1))
- var/obj/structure/emergency_shield/sanguine/N = new(B)
- shields += N
- user.visible_message(
- "[user] [user.blood_volume ? "cuts open [user.p_their()] arm and begins writing in [user.p_their()] own blood":"begins sketching out a strange design"]!", \
- "You [user.blood_volume ? "slice open your arm and ":""]begin drawing a sigil of the Geometer.")
- if(user.blood_volume)
- user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
- var/scribe_mod = initial(rune_to_scribe.scribe_delay)
- if(istype(get_turf(user), /turf/open/floor/engine/cult) && !(ispath(rune_to_scribe, /obj/effect/rune/narsie)))
- scribe_mod *= 0.5
- if(!do_after(user, scribe_mod, target = get_turf(user)))
- for(var/V in shields)
- var/obj/structure/emergency_shield/sanguine/S = V
- if(S && !QDELETED(S))
- qdel(S)
- return
- if(!check_rune_turf(Turf, user))
- return
- user.visible_message(
- "[user] creates a strange circle[user.blood_volume ? " in [user.p_their()] own blood":""].", \
- "You finish drawing the arcane markings of the Geometer.")
- for(var/V in shields)
- var/obj/structure/emergency_shield/S = V
- if(S && !QDELETED(S))
- qdel(S)
- var/obj/effect/rune/R = new rune_to_scribe(Turf, chosen_keyword)
- R.add_mob_blood(user)
- to_chat(user, "The [lowertext(R.cultist_name)] rune [R.cultist_desc]")
- SSblackbox.record_feedback("tally", "cult_runes_scribed", 1, R.cultist_name)
-
-/obj/item/melee/cultblade/dagger/proc/check_rune_turf(turf/T, mob/user)
- if(isspaceturf(T))
- to_chat(user, "You cannot scribe runes in space!")
- return FALSE
- if(locate(/obj/effect/rune) in T)
- to_chat(user, "There is already a rune here.")
- return FALSE
- return TRUE
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index 5058dc73f081..3382672071cc 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -55,13 +55,6 @@ Runes can either be invoked by one's self or with many different cultists. Each
if(req_keyword && keyword)
. += "Keyword: [keyword]"
-/obj/effect/rune/attackby(obj/I, mob/user, params)
- if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user))
- SEND_SOUND(user,'sound/items/sheath.ogg')
- if(do_after(user, 15, target = src))
- to_chat(user, "You carefully erase the [lowertext(cultist_name)] rune.")
- qdel(src)
-
/obj/effect/rune/attack_hand(mob/living/user)
. = ..()
if(.)
@@ -241,7 +234,6 @@ structure_check() searches for nearby cultist structures required for the invoca
"[convertee] writhes in pain [brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!", // Hello there buddy! Come here often? I hope you were wondering wtf this string was
"AAAAAAAAAAAAAA-")
SSticker.mode.add_cultist(convertee.mind, 1)
- new /obj/item/melee/cultblade/dagger(get_turf(src))
convertee.mind.special_role = ROLE_CULTIST
to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \
and something evil takes root.")
@@ -458,10 +450,10 @@ structure_check() searches for nearby cultist structures required for the invoca
/obj/effect/rune/narsie/Initialize(mapload, set_keyword)
. = ..()
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
/obj/effect/rune/narsie/Destroy()
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
. = ..()
/obj/effect/rune/narsie/conceal() //can't hide this, and you wouldn't want to
@@ -477,7 +469,7 @@ structure_check() searches for nearby cultist structures required for the invoca
if(!(place in summon_objective.summon_spots))
to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!")
return
- if(locate(/obj/singularity/narsie) in GLOB.poi_list)
+ if(locate(/obj/singularity/narsie) in SSpoints_of_interest.other_points_of_interest)
for(var/M in invokers)
to_chat(M, "Nar'Sie is already on this plane!")
log_game("Nar'Sie rune failed - already summoned")
@@ -492,15 +484,6 @@ structure_check() searches for nearby cultist structures required for the invoca
color = RUNE_COLOR_RED
new /obj/singularity/narsie/large/cult(T) //Causes Nar'Sie to spawn even if the rune has been removed
-/obj/effect/rune/narsie/attackby(obj/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal.
- if((istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user)))
- user.visible_message("[user.name] begins erasing [src]...", "You begin erasing [src]...")
- if(do_after(user, 50, target = src)) //Prevents accidental erasures.
- log_game("Summon Narsie rune erased by [key_name(user)] with [I.name]")
- message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]")
- else
- ..()
-
//Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out.
/obj/effect/rune/raise_dead
cultist_name = "Revive"
diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm
index ff744ef05840..db087e100e2f 100644
--- a/code/modules/antagonists/devil/devil.dm
+++ b/code/modules/antagonists/devil/devil.dm
@@ -87,9 +87,6 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
var/form = BASIC_DEVIL
var/static/list/devil_spells = typecacheof(list(
/obj/effect/proc_holder/spell/aimed/fireball/hellish,
- /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork,
- /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater,
- /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended,
/obj/effect/proc_holder/spell/targeted/infernal_jaunt,
/obj/effect/proc_holder/spell/targeted/sintouch,
/obj/effect/proc_holder/spell/targeted/sintouch/ascended,
@@ -322,21 +319,17 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
/datum/antagonist/devil/proc/give_base_spells()
owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null))
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null))
/datum/antagonist/devil/proc/give_blood_spells()
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null))
owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null))
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null))
/datum/antagonist/devil/proc/give_true_spells()
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater(null))
owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null))
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null))
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null))
/datum/antagonist/devil/proc/give_arch_spells()
- owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended(null))
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null))
/datum/antagonist/devil/proc/beginResurrectionCheck(mob/living/body)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 920fbbdd557b..9c65e50130cf 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -38,7 +38,7 @@
core = new /obj/item/nuke_core(src)
STOP_PROCESSING(SSobj, core)
update_appearance()
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
previous_level = get_security_level()
/obj/machinery/nuclearbomb/Destroy()
@@ -46,7 +46,7 @@
if(!exploding)
// If we're not exploding, set the alert level back to normal
set_safety()
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
GLOB.nuke_list -= src
QDEL_NULL(countdown)
QDEL_NULL(core)
@@ -611,7 +611,7 @@ This is here to make the tiles around the station mininuke change when it's arme
AddElement(/datum/element/bed_tuckable, 6, -6, 0)
if(!fake)
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
last_disk_move = world.time
START_PROCESSING(SSobj, src)
@@ -658,24 +658,10 @@ This is here to make the tiles around the station mininuke change when it's arme
if(isobserver(user) || HAS_TRAIT(user.mind, TRAIT_DISK_VERIFIER))
. += "The serial numbers on [src] are incorrect."
-/obj/item/disk/nuclear/attackby(obj/item/I, mob/living/user, params)
- if(istype(I, /obj/item/claymore/highlander) && !fake)
- var/obj/item/claymore/highlander/H = I
- if(H.nuke_disk)
- to_chat(user, "Wait... what?")
- qdel(H.nuke_disk)
- H.nuke_disk = null
- return
- user.visible_message("[user] captures [src]!", "You've got the disk! Defend it with your life!")
- forceMove(H)
- H.nuke_disk = src
- return TRUE
- return ..()
-
/obj/item/disk/nuclear/Destroy(force=FALSE)
// respawning is handled in /obj/Destroy()
if(force)
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
. = ..()
/obj/item/disk/nuclear/fake
diff --git a/code/modules/antagonists/nukeop/equipment/pinpointer.dm b/code/modules/antagonists/nukeop/equipment/pinpointer.dm
index b316e60c5e14..c1f9ffa37428 100644
--- a/code/modules/antagonists/nukeop/equipment/pinpointer.dm
+++ b/code/modules/antagonists/nukeop/equipment/pinpointer.dm
@@ -32,7 +32,7 @@
target = null
switch(mode)
if(TRACK_NUKE_DISK)
- var/obj/item/disk/nuclear/N = locate() in GLOB.poi_list
+ var/obj/item/disk/nuclear/N = locate() in SSpoints_of_interest.other_points_of_interest
target = N
if(TRACK_MALF_AI)
for(var/V in GLOB.ai_list)
diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm
index 9f807d9521e7..f51c64142450 100644
--- a/code/modules/antagonists/nukeop/nukeop.dm
+++ b/code/modules/antagonists/nukeop/nukeop.dm
@@ -345,7 +345,7 @@
/datum/team/nuclear/antag_listing_entry()
var/disk_report = "Nuclear Disk(s)
"
disk_report += ""
- for(var/obj/item/disk/nuclear/N in GLOB.poi_list)
+ for(var/obj/item/disk/nuclear/N in SSpoints_of_interest.other_points_of_interest)
disk_report += "[N.name], "
var/atom/disk_loc = N.loc
while(!isturf(disk_loc))
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index a20b905b590d..ae651cf055e6 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -259,8 +259,8 @@
H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET)
H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE)
- H.put_in_hands(new /obj/item/claymore(H), TRUE)
- H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK)
+ H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE)
+ H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK)
/obj/item/voodoo
diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm
index 69ff4bcfc2f5..9f4349a2bbc8 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook.dm
@@ -351,16 +351,6 @@
limit = 3
category = "Assistance"
-/datum/spellbook_entry/item/mjolnir
- name = "Mjolnir"
- desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power."
- item_path = /obj/item/mjollnir
-
-/datum/spellbook_entry/item/singularity_hammer
- name = "Singularity Hammer"
- desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact."
- item_path = /obj/item/singularityhammer
-
/datum/spellbook_entry/item/battlemage
name = "Battlemage Armour"
desc = "An ensorceled suit of armour, protected by a powerful shield. The shield can completely negate sixteen attacks before being permanently depleted."
diff --git a/code/modules/autowiki/pages/techweb.dm b/code/modules/autowiki/pages/techweb.dm
index 0f4b87f9e2a2..42e58dd1cc66 100644
--- a/code/modules/autowiki/pages/techweb.dm
+++ b/code/modules/autowiki/pages/techweb.dm
@@ -9,9 +9,6 @@
if (!node.show_on_wiki)
continue
- if (!valid_node(node))
- continue
-
output += "\n\n" + include_template("Autowiki/TechwebEntry", list(
"name" = escape_value(node.display_name),
"description" = escape_value(node.description),
@@ -21,9 +18,6 @@
return output
-/datum/autowiki/techweb/proc/valid_node(datum/techweb_node/node)
- return !node.experimental
-
/datum/autowiki/techweb/proc/generate_designs(list/design_ids)
var/output = ""
@@ -50,9 +44,6 @@
/datum/autowiki/techweb/experimental
page = "Template:Autowiki/Content/Techweb/Experimental"
-/datum/autowiki/techweb/experimental/valid_node(datum/techweb_node/node)
- return node.experimental
-
/proc/sort_research_nodes(node_id_a, node_id_b)
var/datum/techweb_node/node_a = SSresearch.techweb_nodes[node_id_a]
var/datum/techweb_node/node_b = SSresearch.techweb_nodes[node_id_b]
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index 42d7643fb926..5fc667c4db4a 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -195,10 +195,10 @@
/obj/machinery/capture_the_flag/Initialize()
. = ..()
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
/obj/machinery/capture_the_flag/Destroy()
- GLOB.poi_list.Remove(src)
+ SSpoints_of_interest.remove_point_of_interest(src)
return ..()
/obj/machinery/capture_the_flag/process()
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 0bf0b74c715a..26361b99cfc6 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -61,11 +61,11 @@
if(instant || (roundstart && (mapload || (SSticker && SSticker.current_state > GAME_STATE_SETTING_UP))))
INVOKE_ASYNC(src, PROC_REF(create))
else if(ghost_usable)
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
LAZYADD(GLOB.mob_spawners[name], src)
/obj/effect/mob_spawn/Destroy()
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
var/list/spawners = GLOB.mob_spawners[name]
LAZYREMOVE(spawners, src)
if(!LAZYLEN(spawners))
diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm
index 3c4537caabab..0f76623f617c 100644
--- a/code/modules/awaymissions/mission_code/snowdin.dm
+++ b/code/modules/awaymissions/mission_code/snowdin.dm
@@ -507,9 +507,7 @@
/obj/effect/spawner/lootdrop/snowdin/dungeonheavy
name = "dungeon heavy"
- loot = list(/obj/item/singularityhammer = 25,
- /obj/item/mjollnir = 10,
- /obj/item/fireaxe = 25,
+ loot = list(/obj/item/melee/axe/fire = 25,
/obj/item/organ/brain/alien = 17,
/obj/item/dualsaber = 15,
/obj/item/organ/heart/demon = 7,
@@ -530,7 +528,7 @@
loot = list(/obj/item/stack/sheet/mineral/snow{amount = 25} = 10,
/obj/item/toy/snowball = 15,
/obj/item/shovel = 10,
- /obj/item/spear = 8,
+ /obj/item/melee/spear = 8,
)
//special items//--
diff --git a/code/modules/cargo/blackmarket/blackmarket_items/ammo.dm b/code/modules/cargo/blackmarket/blackmarket_items/ammo.dm
index 47f7fd884993..d5489edeb3e0 100644
--- a/code/modules/cargo/blackmarket/blackmarket_items/ammo.dm
+++ b/code/modules/cargo/blackmarket/blackmarket_items/ammo.dm
@@ -271,3 +271,25 @@
stock_min = 2
stock_max = 10
availability_prob = 10
+
+/datum/blackmarket_item/ammo/c38hotshot
+ name = ".38 Hearth Ammo Box"
+ desc = "We got our ship cook to marinade some .38 in some hearthwine we pocketed off some hunters. It'll cook your targets to a nice well done."
+ item = /obj/item/ammo_box/c38/hotshot
+
+ price_min = 300
+ price_max = 500
+ stock_min = 3
+ stock_max = 8
+ availability_prob = 50
+
+/datum/blackmarket_item/ammo/c38iceblox
+ name = ".38 Chilled Ammo Box"
+ desc = "One of our runners accidentally spilled some .38 into a fucking pristine icewine shipment. It'll freeze your targets faster than our runner froze solid outside for making a mess."
+ item = /obj/item/ammo_box/c38/iceblox
+
+ price_min = 300
+ price_max = 500
+ stock_min = 3
+ stock_max = 8
+ availability_prob = 50
diff --git a/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm b/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm
index d049589fe40a..7a9803085ab8 100644
--- a/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm
+++ b/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm
@@ -264,7 +264,7 @@
price_min = 1500
price_max = 2500
- stock = 1
+ stock_max = 3
availability_prob = 30
/datum/blackmarket_item/clothing/frontiersmen_hardsuit
diff --git a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm
index eb16758b103b..cd0fcf9fd7a9 100644
--- a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm
+++ b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm
@@ -15,7 +15,7 @@
/datum/blackmarket_item/weapon/bone_spear
name = "Bone Spear"
desc = "Authentic tribal spear, made from real bones! A steal at any price, especially if you're a caveman."
- item = /obj/item/spear/bonespear
+ item = /obj/item/melee/spear/bone
price_min = 200
price_max = 300
@@ -25,7 +25,7 @@
/datum/blackmarket_item/weapon/switchblade
name = "Switchblade"
desc = "Extra shrap switchblades for intimidation AND style. Bandages not included if you cut yourself."
- item = /obj/item/kitchen/knife/switchblade
+ item = /obj/item/melee/knife/switchblade
price_min = 500
price_max = 700
diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm
index 3ddc15dfa33b..37507132a865 100644
--- a/code/modules/cargo/bounties/assistant.dm
+++ b/code/modules/cargo/bounties/assistant.dm
@@ -15,7 +15,7 @@
name = "Skateboard"
description = "Nanotrasen has determined walking to be wasteful. Ship a skateboard to CentCom to speed operations up."
reward = 900 // the tony hawk
- wanted_types = list(/obj/vehicle/ridden/scooter/skateboard, /obj/item/melee/skateboard)
+ wanted_types = list(/obj/vehicle/ridden/scooter/skateboard, /obj/item/skateboard)
/datum/bounty/item/assistant/stunprod
name = "Stunprod"
@@ -35,7 +35,7 @@
description = "CentCom's security forces are going through budget cuts. You will be paid if you ship a set of spears."
reward = 2000
required_count = 5
- wanted_types = list(/obj/item/spear)
+ wanted_types = list(/obj/item/melee/spear)
/datum/bounty/item/assistant/toolbox
name = "Toolboxes"
diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm
index 4eb48b09c7cb..6527228f31ec 100644
--- a/code/modules/cargo/bounties/mining.dm
+++ b/code/modules/cargo/bounties/mining.dm
@@ -22,7 +22,7 @@
name = "Bone Axe"
description = "Station 12 has had their fire axes stolen by marauding clowns. Ship them a bone axe as a replacement."
reward = 7500
- wanted_types = list(/obj/item/fireaxe/boneaxe)
+ wanted_types = list(/obj/item/melee/axe/bone)
/datum/bounty/item/mining/bone_armor
name = "Bone Armor"
@@ -48,7 +48,7 @@
description = "Central Command's canteen is undergoing budget cuts. Ship over some bone daggers so our Chef can keep working."
reward = 5000
required_count = 3
- wanted_types = list(/obj/item/kitchen/knife/combat/bone)
+ wanted_types = list(/obj/item/melee/knife/bone)
/datum/bounty/item/mining/polypore_mushroom
name = "Mushroom Bowl"
diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm
index dfec659e1644..0b302925e10e 100644
--- a/code/modules/cargo/centcom_podlauncher.dm
+++ b/code/modules/cargo/centcom_podlauncher.dm
@@ -383,7 +383,7 @@
if (specificTarget)
specificTarget = null
return
- var/list/mobs = getpois()//code stolen from observer.dm
+ var/list/mobs = SSpoints_of_interest.get_mob_pois()
var/inputTarget = input("Select a mob! (Smiting does this automatically)", "Target", null, null) as null|anything in mobs
if (isnull(inputTarget))
return
diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm
index 4779886622a4..3ca8ec9ece05 100644
--- a/code/modules/cargo/exports/lavaland.dm
+++ b/code/modules/cargo/exports/lavaland.dm
@@ -9,9 +9,7 @@
/obj/item/book_of_babel,
/obj/item/wisp_lantern,
/obj/item/reagent_containers/glass/bottle/potion/flight,
- /obj/item/katana/cursed,
/obj/item/clothing/glasses/godeye,
- /obj/item/melee/ghost_sword,
/obj/item/clothing/suit/space/hardsuit/cult,
/obj/item/voodoo,
/obj/item/grenade/clusterbuster/inferno,
@@ -22,9 +20,7 @@
/obj/item/lava_staff,
/obj/item/ship_in_a_bottle,
/obj/item/clothing/shoes/clown_shoes/banana_shoes,
- /obj/item/kitchen/knife/envy,
/obj/item/veilrender/vealrender,
- /obj/item/nullrod/scythe/talking/necro,
/obj/item/clothing/suit/armor/ascetic)
/datum/export/lavaland/major //valuable chest/ruin loot and staff of storms
diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm
index bbe73991f7ef..c6ee67ed091e 100644
--- a/code/modules/cargo/exports/weapons.dm
+++ b/code/modules/cargo/exports/weapons.dm
@@ -13,7 +13,7 @@
/datum/export/weapon/knife
cost = 100
unit_name = "combat knife"
- export_types = list(/obj/item/kitchen/knife/combat)
+ export_types = list(/obj/item/melee/knife/combat)
/datum/export/weapon/taser
diff --git a/code/modules/cargo/packs/ammo.dm b/code/modules/cargo/packs/ammo.dm
index 6fa0b54966c1..a7ab407b428e 100644
--- a/code/modules/cargo/packs/ammo.dm
+++ b/code/modules/cargo/packs/ammo.dm
@@ -72,6 +72,18 @@
cost = 500
contains = list(/obj/item/ammo_box/a12g/slug)
+/datum/supply_pack/ammo/blank_shells
+ name = "Blank Shell Crate"
+ desc = "Contains a box of blank shells."
+ cost = 500
+ contains = list(/obj/item/ammo_box/a12g/blanks)
+
+/datum/supply_pack/ammo/blank_ammo_disk
+ name = "Blank Ammo Design Disk Crate"
+ desc = "Run your own training drills!"
+ cost = 1000
+ contains = list(/obj/item/disk/design_disk/blanks)
+
/datum/supply_pack/ammo/techshells
name = "Unloaded Shotgun Technological Shells Crate"
desc = "Contains a box of 7 versatile tech shells, capable of producing a variety of deadly effects for any situation. Some assembly required."
diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm
index 01bfcc1dc756..fd3ba6c74863 100644
--- a/code/modules/cargo/packs/costumes_toys.dm
+++ b/code/modules/cargo/packs/costumes_toys.dm
@@ -115,7 +115,7 @@
if(prob(30)) //Not all mafioso have mustaches, some people also find this item annoying.
new /obj/item/clothing/mask/fakemoustache/italian(C)
if(prob(10)) //A little extra sugar every now and then to shake things up.
- new /obj/item/kitchen/knife/switchblade(C)
+ new /obj/item/melee/knife/switchblade(C)
/datum/supply_pack/costumes_toys/mech_suits
name = "Exosuit Pilot's Suit Crate"
diff --git a/code/modules/cargo/packs/exploration.dm b/code/modules/cargo/packs/exploration.dm
index e88cf65a3931..5f70f2b9c2a1 100644
--- a/code/modules/cargo/packs/exploration.dm
+++ b/code/modules/cargo/packs/exploration.dm
@@ -129,3 +129,14 @@
contains = list(
/obj/item/gps
)
+
+/datum/supply_pack/exploration/flares
+ name = "Flare Supply Pack"
+ desc = "Contains 4 boxes of flares (28 total)! Great for lighting things up."
+ cost = 100
+ contains = list(
+ /obj/item/storage/box/flares,
+ /obj/item/storage/box/flares,
+ /obj/item/storage/box/flares,
+ /obj/item/storage/box/flares,
+ )
diff --git a/code/modules/cargo/packs/material.dm b/code/modules/cargo/packs/material.dm
index 238b6491ea3b..e396854387de 100644
--- a/code/modules/cargo/packs/material.dm
+++ b/code/modules/cargo/packs/material.dm
@@ -112,8 +112,8 @@
crate_name = "wood planks crate"
/datum/supply_pack/material/concrete_mix
- name = "Concrete Mix (Jug)"
- desc = "Feeling lazy? Need a structure and quick? Use concrete! Just add water."
+ name = "Concrete Bag"
+ desc = "Feeling lazy? Need a structure and quick? Use F.O.O.D.'s near-instant concrete mix! Just add water."
cost = 500
- contains = list(/obj/item/reagent_containers/glass/chem_jug/concrete_mix)
+ contains = list(/obj/item/reagent_containers/glass/concrete_bag)
crate_name = "Concrete Mix"
diff --git a/code/modules/cargo/packs/mechs.dm b/code/modules/cargo/packs/mechs.dm
index 7790e696ee15..744e9f67e2f2 100644
--- a/code/modules/cargo/packs/mechs.dm
+++ b/code/modules/cargo/packs/mechs.dm
@@ -220,6 +220,15 @@ Mech Equipment
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
)
+/datum/supply_pack/mech/equipment/recharger
+ name = "Exosuit Recharger kit"
+ desc = "Two boards for an exosuit recharger and recharger console. For the stylish exosuit bay."
+ cost = 400
+ contains = list(
+ /obj/item/circuitboard/computer/mech_bay_power_console,
+ /obj/item/circuitboard/machine/mech_recharger
+ )
+
/*
weapons
*/
diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm
index 28f15b583206..f0f062160c79 100644
--- a/code/modules/cargo/packs/sec_supply.dm
+++ b/code/modules/cargo/packs/sec_supply.dm
@@ -72,11 +72,24 @@
name = "Survival Knives Crate"
desc = "Contains three sharpened survival knives. Each knife guaranteed to fit snugly inside any galactic-standard boot."
cost = 500
- contains = list(/obj/item/kitchen/knife/combat/survival,
- /obj/item/kitchen/knife/combat/survival,
- /obj/item/kitchen/knife/combat/survival)
+ contains = list(/obj/item/melee/knife/survival,
+ /obj/item/melee/knife/survival,
+ /obj/item/melee/knife/survival)
crate_name = "combat knife crate"
+/*
+/datum/supply_pack/sec_supply/machete
+ name = "Stampted Steel Machete Crate"
+ desc = "Contains five mass produced machetes. A perfect choice for crews on a budget."
+ cost = 500
+ contains = list(/obj/item/melee/sword/mass,
+ /obj/item/melee/sword/mass,
+ /obj/item/melee/sword/mass,
+ /obj/item/melee/sword/mass,
+ /obj/item/melee/sword/mass)
+ crate_name = "combat knife crate"
+*/
+
/datum/supply_pack/sec_supply/fire
name = "Incendiary Weapons Crate"
desc = "Burn, baby burn. Contains three incendiary grenades and three prebuilt flamethrowers."
diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm
index c532202a3df3..6bb58bb2b4e5 100644
--- a/code/modules/clothing/masks/boxing.dm
+++ b/code/modules/clothing/masks/boxing.dm
@@ -4,7 +4,7 @@
icon_state = "balaclava"
item_state = "balaclava"
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
- visor_flags_inv = HIDEFACE|HIDEFACIALHAIR
+ visor_flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
w_class = WEIGHT_CLASS_SMALL
actions_types = list(/datum/action/item_action/adjust)
diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm
index d68c49e61778..8401455bf7d8 100644
--- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm
+++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm
@@ -44,7 +44,7 @@
suit = pickweight(list(
/obj/item/clothing/suit/armor/vest = 5,
/obj/item/clothing/suit/armor/vest/bulletproof/frontier = 5,
- /obj/item/clothing/suit/armor/vest/scrap_armor = 1))
+ /obj/item/clothing/suit/armor/vest/scrap = 1))
if(prob(30))
mask = pickweight(list(
@@ -123,9 +123,9 @@
/obj/item/gun/energy/e_gun/mini))
if("Melee")
r_hand = pickweight(list(
- /obj/item/kitchen/knife/combat/survival = 15,
+ /obj/item/melee/knife/survival = 15,
/obj/item/melee/baseball_bat = 10,
- /obj/item/melee/roastingstick = 2,
+ /obj/item/roastingstick = 2,
/obj/item/kitchen/fork = 1,
/obj/item/melee/flyswatter = 1,
))
@@ -173,14 +173,14 @@
suit = /obj/item/clothing/suit/armor/frontier
suit_store = /obj/item/gun/ballistic/automatic/pistol/deagle
- backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/ammo_box/magazine/m50=2, /obj/item/binoculars=1, /obj/item/kitchen/knife/combat/survival)
+ backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/ammo_box/magazine/m50=2, /obj/item/binoculars=1, /obj/item/melee/knife/survival)
/datum/outfit/job/frontiersmen/ert/leader/unnarmed
name = "ERT - Frontiersman Officer (Unnarmed)"
suit_store = null
- backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/binoculars=1, /obj/item/kitchen/knife/combat/survival)
+ backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/binoculars=1, /obj/item/melee/knife/survival)
/datum/outfit/job/frontiersmen/ert/medic
name = "ERT - Frontiersman Medic"
diff --git a/code/modules/clothing/outfits/ert/indie_ert.dm b/code/modules/clothing/outfits/ert/indie_ert.dm
index e45f0895d0f4..236f9ee75c57 100644
--- a/code/modules/clothing/outfits/ert/indie_ert.dm
+++ b/code/modules/clothing/outfits/ert/indie_ert.dm
@@ -75,7 +75,7 @@
jobtype = /datum/job/chief_engineer
job_icon = "chiefengineer"
- back = /obj/item/fireaxe
+ back = /obj/item/melee/axe/fire
suit = /obj/item/clothing/suit/space/hardsuit/engine
suit_store = /obj/item/tank/internals/oxygen/red
head = null
diff --git a/code/modules/clothing/outfits/ert/inteq_ert.dm b/code/modules/clothing/outfits/ert/inteq_ert.dm
index b3fc0c61970c..9fd796d04516 100644
--- a/code/modules/clothing/outfits/ert/inteq_ert.dm
+++ b/code/modules/clothing/outfits/ert/inteq_ert.dm
@@ -15,7 +15,7 @@
belt = /obj/item/storage/belt/security/webbing/inteq/skm
back = /obj/item/storage/backpack/fireproof
- l_pocket = /obj/item/kitchen/knife/combat
+ l_pocket = /obj/item/melee/knife/combat
r_pocket = /obj/item/flashlight/seclite
backpack_contents = list(/obj/item/radio=1)
diff --git a/code/modules/clothing/outfits/ert/minutemen_ert.dm b/code/modules/clothing/outfits/ert/minutemen_ert.dm
index 482777814c64..d5a3ec72e94c 100644
--- a/code/modules/clothing/outfits/ert/minutemen_ert.dm
+++ b/code/modules/clothing/outfits/ert/minutemen_ert.dm
@@ -9,7 +9,7 @@
head = /obj/item/clothing/head/helmet/riot/clip
belt = /obj/item/storage/belt/military/clip/cm15
glasses = /obj/item/clothing/glasses/hud/health/night
- r_pocket = /obj/item/kitchen/knife/combat
+ r_pocket = /obj/item/melee/knife/combat
l_pocket = /obj/item/extinguisher/mini
backpack_contents = list(
diff --git a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm
index a66ee78c7239..1ca40cd640e3 100644
--- a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm
+++ b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm
@@ -29,7 +29,7 @@
belt = /obj/item/storage/belt/security/full
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
/obj/item/melee/baton/loaded=1)
- l_pocket = /obj/item/kitchen/knife/switchblade
+ l_pocket = /obj/item/melee/knife/switchblade
/datum/outfit/centcom/ert/commander/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -287,7 +287,7 @@
)
belt = /obj/item/storage/belt/military/assault
glasses = /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch
- l_pocket = /obj/item/kitchen/knife/combat
+ l_pocket = /obj/item/melee/knife/combat
r_pocket = /obj/item/tank/internals/emergency_oxygen/double
uniform = /obj/item/clothing/under/rank/security/officer/military
accessory = /obj/item/clothing/accessory/holster/marine
@@ -399,7 +399,7 @@
box = /obj/item/storage/box/survival/security
l_pocket = /obj/item/restraints/handcuffs
- r_pocket = /obj/item/kitchen/knife/combat
+ r_pocket = /obj/item/melee/knife/combat
backpack_contents = list(/obj/item/radio=1, /obj/item/stock_parts/cell/gun/upgraded=2, /obj/item/screwdriver=1)
diff --git a/code/modules/clothing/outfits/ert/syndicate_ert.dm b/code/modules/clothing/outfits/ert/syndicate_ert.dm
index f2dadc4e0d95..c37dab500091 100644
--- a/code/modules/clothing/outfits/ert/syndicate_ert.dm
+++ b/code/modules/clothing/outfits/ert/syndicate_ert.dm
@@ -14,7 +14,7 @@
back = /obj/item/storage/backpack/security
belt = /obj/item/storage/belt/military/c20r
- r_pocket = /obj/item/kitchen/knife/combat
+ r_pocket = /obj/item/melee/knife/combat
l_pocket = /obj/item/grenade/frag
implants = list(/obj/item/implant/weapons_auth)
@@ -75,7 +75,7 @@
belt = /obj/item/storage/belt/security
suit_store = /obj/item/gun/ballistic/automatic/marksman/taipan
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
l_pocket = /obj/item/binoculars
backpack_contents = list(/obj/item/ammo_box/magazine/sniper_rounds=2, /obj/item/radio=1)
@@ -133,7 +133,7 @@
head = /obj/item/clothing/head/soft/cybersun/medical
belt = /obj/item/storage/belt/medical/webbing/paramedic
back = /obj/item/storage/backpack/ert/medical
- l_pocket = /obj/item/kitchen/knife/combat/survival
+ l_pocket = /obj/item/melee/knife/survival
r_pocket = /obj/item/pinpointer/crew
accessory = /obj/item/clothing/accessory/holster/marine
diff --git a/code/modules/clothing/outfits/factions/frontiersmen.dm b/code/modules/clothing/outfits/factions/frontiersmen.dm
index 44d0c4920784..997eec2209d4 100644
--- a/code/modules/clothing/outfits/factions/frontiersmen.dm
+++ b/code/modules/clothing/outfits/factions/frontiersmen.dm
@@ -133,7 +133,7 @@
shoes = /obj/item/clothing/shoes/jackboots
head = /obj/item/clothing/head/beret/sec/frontier/officer
gloves = /obj/item/clothing/gloves/combat
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
// Head of Security
/datum/outfit/job/frontiersmen/hos
@@ -184,7 +184,7 @@
accessory = /obj/item/clothing/accessory/armband/med
uniform = /obj/item/clothing/under/frontiersmen
glasses = /obj/item/clothing/glasses/hud/health
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
suit = /obj/item/clothing/suit/frontiersmen
head = /obj/item/clothing/head/frontier
belt = /obj/item/storage/belt/medical/webbing/frontiersmen
diff --git a/code/modules/clothing/outfits/factions/independent.dm b/code/modules/clothing/outfits/factions/independent.dm
index e9b783de9780..2b93739fb0f9 100644
--- a/code/modules/clothing/outfits/factions/independent.dm
+++ b/code/modules/clothing/outfits/factions/independent.dm
@@ -53,7 +53,7 @@
uniform = /obj/item/clothing/under/utility
head = /obj/item/clothing/head/soft/black
shoes = /obj/item/clothing/shoes/combat
- l_pocket = /obj/item/kitchen/knife/combat/survival
+ l_pocket = /obj/item/melee/knife/survival
gloves = /obj/item/clothing/gloves/combat
implants = list(/obj/item/implant/radio)
@@ -145,7 +145,7 @@
suit = /obj/item/clothing/suit/armor/vest/marine/medium
head = /obj/item/clothing/head/soft/black
shoes = /obj/item/clothing/shoes/combat
- l_pocket = /obj/item/kitchen/knife/combat
+ l_pocket = /obj/item/melee/knife/combat
implants = list(/obj/item/implant/radio)
accessory = null
@@ -298,7 +298,7 @@
uniform = /obj/item/clothing/under/utility
head = /obj/item/clothing/head/soft/black
shoes = /obj/item/clothing/shoes/combat
- l_pocket = /obj/item/kitchen/knife/combat
+ l_pocket = /obj/item/melee/knife/combat
backpack_contents = list(/obj/item/melee/baton/loaded=1)
@@ -349,7 +349,7 @@
uniform = /obj/item/clothing/under/utility
head = /obj/item/clothing/head/soft/black
shoes = /obj/item/clothing/shoes/combat
- l_pocket = /obj/item/kitchen/knife/combat/survival
+ l_pocket = /obj/item/melee/knife/survival
gloves = /obj/item/clothing/gloves/color/red/insulated
implants = list(/obj/item/implant/radio)
@@ -572,7 +572,7 @@
l_pocket = /obj/item/storage/bag/ore
backpack_contents = list(
/obj/item/flashlight/seclite=1,\
- /obj/item/kitchen/knife/combat/survival=1,\
+ /obj/item/melee/knife/survival=1,\
/obj/item/stack/marker_beacon/ten=1,\
/obj/item/radio/weather_monitor=1)
diff --git a/code/modules/clothing/outfits/factions/nanotrasen.dm b/code/modules/clothing/outfits/factions/nanotrasen.dm
index b22c69b38f6b..e292a6e61d03 100644
--- a/code/modules/clothing/outfits/factions/nanotrasen.dm
+++ b/code/modules/clothing/outfits/factions/nanotrasen.dm
@@ -316,7 +316,7 @@
backpack_contents = list(
/obj/item/flashlight/seclite=1,
- /obj/item/kitchen/knife/combat/survival=1,
+ /obj/item/melee/knife/survival=1,
/obj/item/stack/marker_beacon/ten=1,
/obj/item/radio/weather_monitor=1,
)
@@ -569,7 +569,7 @@
backpack = /obj/item/storage/backpack/ert/security
belt = /obj/item/storage/belt/military
id = /obj/item/card/id/ert/security
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite)
/datum/outfit/job/nanotrasen/security/ert/engi
@@ -580,7 +580,7 @@
backpack = /obj/item/storage/backpack/ert/engineer
belt = /obj/item/storage/belt/utility/full/ert
id = /obj/item/card/id/ert/security
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite)
accessory = /obj/item/clothing/accessory/armband/engine
glasses = /obj/item/clothing/glasses/hud/diagnostic/sunglasses
@@ -593,7 +593,7 @@
backpack = /obj/item/storage/backpack/ert/medical
belt = /obj/item/storage/belt/medical/webbing/paramedic
id = /obj/item/card/id/ert/security
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite)
accessory = /obj/item/clothing/accessory/armband/med
glasses = /obj/item/clothing/glasses/hud/health/night
diff --git a/code/modules/clothing/outfits/factions/solgov.dm b/code/modules/clothing/outfits/factions/solgov.dm
index 3b14fc89dafa..c4aed59c7e21 100644
--- a/code/modules/clothing/outfits/factions/solgov.dm
+++ b/code/modules/clothing/outfits/factions/solgov.dm
@@ -101,7 +101,7 @@
implants = list(/obj/item/implant/mindshield)
backpack_contents = list(
- /obj/item/kitchen/knife/letter_opener = 1
+ /obj/item/melee/knife/letter_opener = 1
)
/datum/outfit/job/solgov/overseer
@@ -159,7 +159,7 @@
r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack
backpack_contents = list(
/obj/item/flashlight/seclite=1,\
- /obj/item/kitchen/knife/combat/survival=1,\
+ /obj/item/melee/knife/survival=1,\
/obj/item/stack/marker_beacon/ten=1)
backpack = /obj/item/storage/backpack/explorer
diff --git a/code/modules/clothing/outfits/factions/syndicate.dm b/code/modules/clothing/outfits/factions/syndicate.dm
index 269b476ccd91..1d91a94b766d 100644
--- a/code/modules/clothing/outfits/factions/syndicate.dm
+++ b/code/modules/clothing/outfits/factions/syndicate.dm
@@ -516,7 +516,7 @@
head = /obj/item/clothing/head/HoS/beret/syndicate
gloves = /obj/item/clothing/gloves/color/white
id = /obj/item/card/id/syndicate_command/crew_id
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
glasses = /obj/item/clothing/glasses/hud/health
backpack_contents = list(/obj/item/storage/box/ids=1,\
/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
@@ -532,7 +532,7 @@
head = /obj/item/clothing/head/HoS/cybersun
gloves = /obj/item/clothing/gloves/combat
id = /obj/item/card/id/syndicate_command/crew_id
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
glasses = /obj/item/clothing/glasses/sunglasses
/datum/outfit/job/syndicate/head_of_personnel/suns
@@ -634,7 +634,7 @@
uniform = /obj/item/clothing/under/syndicate/suns/pkuniform
suit = /obj/item/clothing/suit/armor/vest/suns/hos
- belt = /obj/item/melee/sabre/suns/telescopic
+ belt = /obj/item/melee/sword/sabre/suns/telescopic
gloves = /obj/item/clothing/gloves/tackler/dolphin/suns
shoes = /obj/item/clothing/shoes/combat/suns
head = /obj/item/clothing/head/welding/suns/hos
@@ -711,7 +711,7 @@
head = /obj/item/clothing/head/hardliners
suit = /obj/item/clothing/suit/hardliners
glasses = /obj/item/clothing/glasses/hud/health
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
back = /obj/item/storage/backpack/duffelbag/syndie/med
id = /obj/item/card/id/syndicate_command/crew_id
backpack_contents = list(/obj/item/storage/box/survival/syndie=1, /obj/item/storage/firstaid/medical,)
@@ -723,7 +723,7 @@
head = /obj/item/clothing/head/ngr/surgical
suit = /obj/item/clothing/suit/ngr/smock
glasses = /obj/item/clothing/glasses/hud/health
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
back = /obj/item/storage/backpack/duffelbag/syndie/med
id = /obj/item/card/id/syndicate_command/crew_id
backpack_contents = list(/obj/item/storage/box/survival/syndie=1, /obj/item/storage/firstaid/medical,)
@@ -897,7 +897,7 @@
job_icon = "securityofficer"
uniform = /obj/item/clothing/under/syndicate
- r_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/melee/knife/survival
belt = /obj/item/storage/belt/military
back = /obj/item/storage/backpack
suit = /obj/item/clothing/suit/armor/vest
@@ -994,7 +994,7 @@
uniform = /obj/item/clothing/under/syndicate/suns/pkuniform
suit = /obj/item/clothing/suit/armor/vest/suns
alt_suit = /obj/item/clothing/suit/toggle/suns/pkcoat
- belt = /obj/item/melee/sabre/suns/telescopic
+ belt = /obj/item/melee/sword/sabre/suns/telescopic
gloves = /obj/item/clothing/gloves/tackler/dolphin/suns
shoes = /obj/item/clothing/shoes/jackboots/suns/long
head = /obj/item/clothing/head/welding/suns
@@ -1020,7 +1020,7 @@
r_pocket = /obj/item/storage/bag/ore
backpack_contents = list(
/obj/item/flashlight/seclite=1,\
- /obj/item/kitchen/knife/combat/survival=1,\
+ /obj/item/melee/knife/survival=1,\
/obj/item/mining_voucher=1,\
/obj/item/stack/marker_beacon/ten=1)
diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm
index 100cc7ff0f52..1754e84c7e8e 100644
--- a/code/modules/clothing/outfits/standard.dm
+++ b/code/modules/clothing/outfits/standard.dm
@@ -102,7 +102,6 @@
uniform = /obj/item/clothing/under/color/black/ghost
suit = /obj/item/clothing/suit/hooded/cultrobes/alt/ghost
shoes = /obj/item/clothing/shoes/cult/alt/ghost
- r_hand = /obj/item/melee/cultblade/ghost
/datum/outfit/wizard
name = "Blue Wizard"
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 67dc7ce529b3..6e825e48ea4b 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -36,7 +36,7 @@ Contains:
desc = "A prototype designed to replace the ageing MK.II SWAT suit. Based on the streamlined MK.II model, the traditional ceramic and graphene plate construction was replaced with plasteel, allowing superior armor against most threats. There's room for some kind of energy projection device on the back."
icon_state = "deathsquad"
item_state = "swat_suit"
- allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat)
+ allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat)
armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 60, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
@@ -50,7 +50,7 @@ Contains:
desc = "A tactical space suit first developed in a joint effort by the defunct IS-ERI and Nanotrasen in 20XX for military space operations. A tried and true workhorse, it is very difficult to move in but offers robust protection against all threats!"
icon_state = "heavy"
item_state = "swat_suit"
- allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat)
+ allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat)
armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 40, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100)
strip_delay = 120
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -363,7 +363,7 @@ Contains:
armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 10, "fire" = 100, "acid" = 100)
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw)
/obj/item/clothing/suit/space/hardsuit/berserker/RemoveHelmet()
var/obj/item/clothing/head/helmet/space/hardsuit/berserker/helm = helmet
@@ -489,7 +489,7 @@ Contains:
desc = "A custom version of the MK.II SWAT suit, modified to look rugged and tough. Works as a space suit, if you can find a helmet."
icon_state = "hunter"
item_state = "swat_suit"
- allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat)
+ allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat)
armor = list("melee" = 60, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
resistance_flags = FIRE_PROOF | ACID_PROOF
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index a16680353b6f..b9eb2b6d7c53 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -277,7 +277,7 @@
desc = "A classic suit of plate armour, highly effective at stopping melee attacks."
icon_state = "riot_knight_green"
item_state = "riot_knight_green"
- allowed = list(/obj/item/nullrod, /obj/item/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/plasmaman)
+ allowed = list(/obj/item/melee/sword/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/plasmaman)
/obj/item/clothing/suit/armor/riot/knight/yellow
icon_state = "riot_knight_yellow"
@@ -400,13 +400,6 @@
icon_state = "armor_syndie"
item_state = "syndiearmor"
-/obj/item/clothing/suit/armor/vest/scrap_armor
- name = "scrap armor"
- desc = "An 'armor' vest consisting of sheet metal held together with cable. Who thought this was a good idea?"
- icon_state = "scraparmor"
- item_state = "scraparmor"
- armor = list("melee" = 5)
-
/obj/item/clothing/suit/armor/curator
name = "treasure hunter's coat"
desc = "Both fashionable and lightly armoured, this jacket is favoured by treasure hunters the galaxy over."
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 3ef1628c19b4..c62d0e92b8c0 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -98,4 +98,4 @@
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit/Initialize()
. = ..()
- allowed += list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/cane)
+ allowed += list(/obj/item/storage/book/bible, /obj/item/cane)
diff --git a/code/modules/clothing/suits/chaplainsuits.dm b/code/modules/clothing/suits/chaplainsuits.dm
index 58802e01b8a1..073966a5fc15 100644
--- a/code/modules/clothing/suits/chaplainsuits.dm
+++ b/code/modules/clothing/suits/chaplainsuits.dm
@@ -1,10 +1,10 @@
//Chaplain Suit Subtypes
//If any new staple chaplain items get added, put them in these lists
/obj/item/clothing/suit/chaplainsuit
- allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
+ allowed = list(/obj/item/storage/book/bible, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
/obj/item/clothing/suit/hooded/chaplainsuit
- allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
+ allowed = list(/obj/item/storage/book/bible, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
//Suits
/obj/item/clothing/suit/chaplainsuit/holidaypriest
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index 4e3f6d5e3a9c..763be0e2f468 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -76,7 +76,7 @@
name = "goliath cloak"
icon_state = "goliath_cloak"
desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits."
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat/bone, /obj/item/kitchen/knife/combat/survival)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/organ/regenerative_core/legion, /obj/item/melee/knife/bone, /obj/item/melee/knife/survival)
armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 35, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot
hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath
body_parts_covered = CHEST|GROIN|ARMS
@@ -94,7 +94,7 @@
name = "drake armour"
icon_state = "dragon"
desc = "A suit of armour fashioned from the remains of an ash drake."
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/melee/spear)
armor = list("melee" = 50, "bullet" = 10, "laser" = 40, "energy" = 50, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100)
hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 312f14dec507..3b1735208dda 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -278,7 +278,7 @@
hoodtype = /obj/item/clothing/head/hooded/enginseer
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDEGLOVES
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun, /obj/item/melee, /obj/item/nullrod, /obj/item/radio, /obj/item/storage/book)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun, /obj/item/melee, /obj/item/radio, /obj/item/storage/book)
/obj/item/clothing/head/hooded/enginseer
name = "enginseer's hood"
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index f8e8c3f69909..6e8b87b06285 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -132,7 +132,7 @@
item_state = "imperium_monk"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
flags_inv = HIDESHOES|HIDEJUMPSUIT
- allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
+ allowed = list(/obj/item/storage/book/bible, /obj/item/melee/sword, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
/obj/item/clothing/suit/chickensuit
diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm
index f7710d52a12d..0d05c4e0cf7f 100644
--- a/code/modules/clothing/under/accessories.dm
+++ b/code/modules/clothing/under/accessories.dm
@@ -137,6 +137,7 @@
icon_state = "bronze"
custom_materials = list(/datum/material/iron=1000)
resistance_flags = FIRE_PROOF
+ attachment_slot = null
var/medaltype = "medal" //Sprite used for medalbox
var/commended = FALSE
@@ -393,7 +394,6 @@
desc = "A legion skull fitted to a codpiece, intended to protect the important things in life."
icon_state = "skull"
above_suit = TRUE
- armor = list("melee" = 10, "bullet" = 10, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 40, "acid" = 40)
attachment_slot = GROIN
/obj/item/clothing/accessory/skilt
@@ -402,7 +402,6 @@
icon_state = "skilt"
above_suit = TRUE
minimize_when_attached = FALSE
- armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25)
attachment_slot = GROIN
/obj/item/clothing/accessory/holster
@@ -411,6 +410,7 @@
icon_state = "holster"
item_state = "holster"
pocket_storage_component_path = /datum/component/storage/concrete/pockets/holster
+ attachment_slot = null
/obj/item/clothing/accessory/holster/detective
name = "detective's shoulder holster"
@@ -479,7 +479,7 @@
icon_state = "rilena_pin"
above_suit = FALSE
minimize_when_attached = TRUE
- attachment_slot = CHEST
+ attachment_slot = null
/obj/item/clothing/accessory/rilena_pin/on_uniform_equip(obj/item/clothing/under/U, user)
var/mob/living/L = user
diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm
index adde1124935f..4ba2d878ad46 100644
--- a/code/modules/events/immovable_rod.dm
+++ b/code/modules/events/immovable_rod.dm
@@ -62,7 +62,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
z_original = z
destination = end
special_target = aimed_at
- GLOB.poi_list += src
+ SSpoints_of_interest.make_point_of_interest(src)
var/special_target_valid = FALSE
if(special_target)
@@ -81,7 +81,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
ghost.ManualFollow(src)
/obj/effect/immovablerod/Destroy()
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
. = ..()
/obj/effect/immovablerod/Moved()
diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm
deleted file mode 100644
index e99b0d754910..000000000000
--- a/code/modules/events/wizard/curseditems.dm
+++ /dev/null
@@ -1,60 +0,0 @@
-/datum/round_event_control/wizard/cursed_items //fashion disasters
- name = "Cursed Items"
- weight = 3
- typepath = /datum/round_event/wizard/cursed_items
- max_occurrences = 3
- earliest_start = 0 MINUTES
-
-//Note about adding items to this: Because of how NODROP_1 works if an item spawned to the hands can also be equiped to a slot
-//it will be able to be put into that slot from the hand, but then get stuck there. To avoid this make a new subtype of any
-//item you want to equip to the hand, and set its slots_flags = null. Only items equiped to hands need do this.
-
-/datum/round_event/wizard/cursed_items/start()
- var/item_set = pick("wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators", "catgirls2015")
- var/list/loadout[SLOTS_AMT]
- var/ruins_spaceworthiness
- var/ruins_wizard_loadout
-
- switch(item_set)
- if("wizardmimic")
- loadout[ITEM_SLOT_OCLOTHING] = /obj/item/clothing/suit/wizrobe
- loadout[ITEM_SLOT_FEET] = /obj/item/clothing/shoes/sandal/magic
- loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/wizard
- ruins_spaceworthiness = 1
- if("swords")
- loadout[ITEM_SLOT_HANDS] = /obj/item/katana/cursed
- if("bigfatdoobie")
- loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/cigarette/rollie/trippy
- ruins_spaceworthiness = 1
- if("boxing")
- loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/luchador
- loadout[ITEM_SLOT_GLOVES] = /obj/item/clothing/gloves/boxing
- ruins_spaceworthiness = 1
- if("voicemodulators")
- loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/chameleon
- if("catgirls2015")
- loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/kitty
- ruins_spaceworthiness = 1
- ruins_wizard_loadout = 1
-
- for(var/mob/living/carbon/human/H as anything in GLOB.human_list)
- if(ruins_spaceworthiness && isspaceturf(H.loc) || isplasmaman(H))
- continue //#savetheminers
- if(ruins_wizard_loadout && iswizard(H))
- continue
- if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry
- H.gender = FEMALE
- for(var/i in 1 to loadout.len)
- if(loadout[i])
- var/obj/item/J = loadout[i]
- var/obj/item/I = new J //dumb but required because of byond throwing a fit anytime new gets too close to a list
- H.dropItemToGround(H.get_item_by_slot(i), TRUE)
- H.equip_to_slot_or_del(I, i)
- ADD_TRAIT(I, TRAIT_NODROP, CURSED_ITEM_TRAIT)
- I.item_flags |= DROPDEL
- I.name = "cursed " + I.name
-
- for(var/mob/living/carbon/human/H as anything in GLOB.human_list)
- var/datum/effect_system/smoke_spread/smoke = new
- smoke.set_up(0, H.loc)
- smoke.start()
diff --git a/code/modules/events/wizard/greentext.dm b/code/modules/events/wizard/greentext.dm
index 890bbc0f1f2b..8e4baab893fc 100644
--- a/code/modules/events/wizard/greentext.dm
+++ b/code/modules/events/wizard/greentext.dm
@@ -34,7 +34,7 @@
/obj/item/greentext/Initialize(mapload)
. = ..()
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
roundend_callback = CALLBACK(src, PROC_REF(check_winner))
SSticker.OnRoundend(roundend_callback)
@@ -83,7 +83,7 @@
if(!(resistance_flags & ON_FIRE) && !force)
return QDEL_HINT_LETMELIVE
- GLOB.poi_list.Remove(src)
+ SSpoints_of_interest.remove_point_of_interest(src)
LAZYREMOVE(SSticker.round_end_events, roundend_callback)
roundend_callback = null //This ought to free the callback datum, and prevent us from harddeling
for(var/i in GLOB.player_list)
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 4774ea852424..69c15b1e3494 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -1023,11 +1023,11 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(prob(25))
target.halitem.icon_state = "plasticx40"
if(3) //sword
- target.halitem.icon = 'icons/obj/transforming_energy.dmi'
+ target.halitem.icon = 'icons/obj/weapon/energy.dmi'
target.halitem.icon_state = "sword0"
target.halitem.name = "Energy Sword"
if(4) //stun baton
- target.halitem.icon = 'icons/obj/items_and_weapons.dmi'
+ target.halitem.icon = 'icons/obj/items.dmi'
target.halitem.icon_state = "stunbaton"
target.halitem.name = "Stun Baton"
if(5) //emag
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index 785607cdef67..49de009448f2 100644
--- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -602,7 +602,7 @@
desc = "Legend says something amazing happens when you collect enough of these."
custom_price = 100
custom_premium_price = 110
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "sandstar"
w_class = WEIGHT_CLASS_TINY
custom_materials = list(/datum/material/gold = 200)
diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm
index c7bcf963faf2..5ec9408dc414 100644
--- a/code/modules/food_and_drinks/food/snacks_soup.dm
+++ b/code/modules/food_and_drinks/food/snacks_soup.dm
@@ -159,12 +159,12 @@
tastes = list("tomato" = 1, "squirming" = 1)
foodtype = MEAT | GORE
-/obj/item/reagent_containers/food/snacks/soup/milo
- name = "milosoup"
+/obj/item/reagent_containers/food/snacks/soup/miso
+ name = "miso soup"
desc = "The universes best soup! Yum!!!"
- icon_state = "milosoup"
+ icon_state = "misosoup"
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3)
- tastes = list("milo" = 1) // wtf is milo
+ tastes = list("miso" = 1) // wtf is milo
foodtype = VEGETABLES
/obj/item/reagent_containers/food/snacks/soup/mushroom
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
index b1191fda7ada..1eb1d255c340 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
@@ -265,7 +265,7 @@
/datum/reagent/consumable/milk = 1,
/datum/reagent/consumable/cherryjelly = 5,
/obj/item/stock_parts/cell/super =1,
- /obj/item/melee/sabre = 1
+ /obj/item/melee/sword/sabre = 1
)
result = /obj/item/reagent_containers/food/snacks/powercrepe
subcategory = CAT_MISCFOOD
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm
index daf98f0444a4..3443b32e931e 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm
@@ -115,15 +115,15 @@
subcategory = CAT_SOUP
-/datum/crafting_recipe/food/milosoup
- name = "Milo soup"
+/datum/crafting_recipe/food/misosoup
+ name = "Miso soup"
reqs = list(
/datum/reagent/water = 10,
/obj/item/reagent_containers/glass/bowl = 1,
/obj/item/reagent_containers/food/snacks/soydope = 2,
/obj/item/reagent_containers/food/snacks/tofu = 2
)
- result = /obj/item/reagent_containers/food/snacks/soup/milo
+ result = /obj/item/reagent_containers/food/snacks/soup/miso
subcategory = CAT_SOUP
/datum/crafting_recipe/food/bloodsoup
diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm
index d56fd4f9c32c..c0d985e89d79 100644
--- a/code/modules/holodeck/items.dm
+++ b/code/modules/holodeck/items.dm
@@ -13,7 +13,7 @@
/obj/item/holo/esword
name = "holographic energy sword"
desc = "May the force be with you. Sorta."
- icon = 'icons/obj/transforming_energy.dmi'
+ icon = 'icons/obj/weapon/energy.dmi'
icon_state = "sword"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
@@ -69,7 +69,7 @@
/obj/item/toy/beach_ball/holoball
name = "basketball"
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "basketball"
item_state = "basketball"
desc = "Here's your chance, do your dance at the Space Jam."
diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm
index f9633ade7661..3fa14561b8d1 100644
--- a/code/modules/hydroponics/grown/nettle.dm
+++ b/code/modules/hydroponics/grown/nettle.dm
@@ -45,7 +45,7 @@
seed = /obj/item/seeds/nettle
name = "nettle"
desc = "It's probably not wise to touch it with bare hands..."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "nettle"
lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi'
diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm
index 97773e39f277..d3f847d7e292 100644
--- a/code/modules/hydroponics/grown/root.dm
+++ b/code/modules/hydroponics/grown/root.dm
@@ -28,7 +28,7 @@
/obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params)
if(I.get_sharpness())
to_chat(user, "You sharpen the carrot into a shiv with [I].")
- var/obj/item/kitchen/knife/shiv/carrot/Shiv = new /obj/item/kitchen/knife/shiv/carrot
+ var/obj/item/melee/knife/shiv/carrot/Shiv = new /obj/item/melee/knife/shiv/carrot
remove_item_from_storage(user)
qdel(src)
user.put_in_hands(Shiv)
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 74d004849a2a..56ad2264ce01 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -59,7 +59,7 @@
/obj/item/cultivator
name = "cultivator"
desc = "It's used for removing weeds or scratching your back."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "cultivator"
item_state = "cultivator"
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
@@ -106,7 +106,7 @@
/obj/item/hatchet
name = "hatchet"
desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/weapon/axe.dmi'
icon_state = "hatchet"
item_state = "hatchet"
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm
index ab4ceb6968c0..5efe0a0a00d2 100644
--- a/code/modules/jobs/job_types/chaplain.dm
+++ b/code/modules/jobs/job_types/chaplain.dm
@@ -15,20 +15,6 @@
var/obj/item/storage/book/bible/booze/B = new
- if(GLOB.religion)
- B.deity_name = GLOB.deity
- B.name = GLOB.bible_name
- B.icon_state = GLOB.bible_icon_state
- B.item_state = GLOB.bible_item_state
- to_chat(H, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.")
- H.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK)
- var/nrt = GLOB.holy_weapon_type || /obj/item/nullrod
- var/obj/item/nullrod/N = new nrt(H)
- H.put_in_hands(N)
- if(GLOB.religious_sect)
- GLOB.religious_sect.on_conversion(H)
- return
-
var/new_religion = DEFAULT_RELIGION
if(M.client && M.client.prefs.custom_names["religion"])
new_religion = M.client.prefs.custom_names["religion"]
diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm
index 1469e592b4de..341116d30c8c 100644
--- a/code/modules/jobs/job_types/shaft_miner.dm
+++ b/code/modules/jobs/job_types/shaft_miner.dm
@@ -26,7 +26,7 @@
r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack
backpack_contents = list(
/obj/item/flashlight/seclite=1,\
- /obj/item/kitchen/knife/combat/survival=1,\
+ /obj/item/melee/knife/survival=1,\
/obj/item/stack/marker_beacon/ten=1,\
/obj/item/radio/weather_monitor=1)
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 55d33ee80d20..9c6e90469fcc 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -319,7 +319,7 @@
scanner.computer.inventory.Add(src)
to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'")
- else if(istype(I, /obj/item/kitchen/knife) || I.tool_behaviour == TOOL_WIRECUTTER)
+ else if(istype(I, /obj/item/melee/knife) || I.tool_behaviour == TOOL_WIRECUTTER)
to_chat(user, "You begin to carve out [title]...")
if(do_after(user, 30, target = src))
to_chat(user, "You carve out the pages from [title]! You didn't want to read it anyway.")
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index 71de02b3ca1c..38b3728651ce 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -358,7 +358,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
return null
/obj/machinery/computer/bookmanagement/proc/print_forbidden_lore(mob/user)
- new /obj/item/melee/cultblade/dagger(get_turf(src))
to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a sinister dagger sitting on the desk. You don't even remember where it came from...")
user.visible_message("[user] stares at the blank screen for a few moments, [user.p_their()] expression frozen in fear. When [user.p_they()] finally awaken[user.p_s()] from it, [user.p_they()] look[user.p_s()] a lot older.", 2)
diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm
index 2040764eefb9..251cf46e7c5f 100644
--- a/code/modules/mapping/mapping_helpers.dm
+++ b/code/modules/mapping/mapping_helpers.dm
@@ -280,7 +280,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
//cake + knife to cut it!
if(length(table))
var/turf/food_turf = get_turf(pick(table))
- new /obj/item/kitchen/knife(food_turf)
+ new /obj/item/melee/knife/kitchen(food_turf)
var/obj/item/food/cake/birthday/iancake = new(food_turf)
iancake.desc = "Happy birthday, Ian!"
diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm
index 21bfb509e6fb..ea43fe78f176 100644
--- a/code/modules/mining/abandoned_crates.dm
+++ b/code/modules/mining/abandoned_crates.dm
@@ -136,7 +136,7 @@
for(var/i in 1 to 3)
new /obj/item/clothing/mask/cigarette/rollie(src)
if(6 to 10)
- new /obj/item/melee/skateboard/pro(src)
+ new /obj/item/skateboard/pro(src)
if(11 to 15)
new /mob/living/simple_animal/bot/honkbot(src)
if(16 to 20)
@@ -211,7 +211,7 @@
for(var/i in 1 to 30)
new /mob/living/simple_animal/hostile/cockroach(src)
if(92)
- new /obj/item/katana(src)
+ new /obj/item/melee/sword/katana(src)
if(93)
new /obj/item/dnainjector/xraymut(src)
if(94)
@@ -220,7 +220,6 @@
if(95)
new /obj/item/toy/plush/nukeplushie(src)
if(96)
- new /obj/item/banhammer(src)
for(var/i in 1 to 3)
new /obj/item/mine/pressure/sound(src)
if(97)
@@ -237,5 +236,5 @@
if(99)
new /obj/item/implanter/sad_trombone(src)
if(100)
- new /obj/item/melee/skateboard/hoverboard(src)
+ new /obj/item/skateboard/hoverboard(src)
spawned_loot = TRUE
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index 3b390da34251..b5e112713a82 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -190,3 +190,37 @@
/obj/item/clothing/head/hooded/survivor_hood/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
+
+/obj/item/clothing/suit/hooded/scrap
+ name = "scrap suit"
+ desc = "A ragged makeshift suit."
+ lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing_righthand.dmi'
+ icon_state = "survivor"
+ item_state = "survivor_suit"
+ body_parts_covered = CHEST|GROIN|LEGS|ARMS
+ min_cold_protection_temperature = (FIRE_SUIT_MIN_TEMP_PROTECT * 2)
+ cold_protection = CHEST|GROIN|LEGS|ARMS
+ max_heat_protection_temperature = (FIRE_SUIT_MAX_TEMP_PROTECT / 2)
+ heat_protection = CHEST|GROIN|LEGS|ARMS
+ hoodtype = /obj/item/clothing/head/hooded/scrap
+ armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals)
+ resistance_flags = FIRE_PROOF
+ supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION
+
+/obj/item/clothing/head/hooded/scrap
+ name = "scrap hood"
+ desc = "A loose-fitting hood. It gets the job done."
+ icon_state = "explorerold"
+ suit = /obj/item/clothing/suit/hooded/scrap
+ body_parts_covered = HEAD
+ flags_inv = HIDEHAIR|HIDEEARS
+ armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30)
+
+/obj/item/clothing/suit/armor/vest/scrap
+ name = "scrap armor"
+ desc = "An 'armor' vest consisting of sheet metal held together with cable. Who thought this was a good idea?"
+ icon_state = "scraparmor"
+ item_state = "scraparmor"
+ armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30)
diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm
index 2a38ae896e76..15f7cb2e3a69 100644
--- a/code/modules/mining/equipment/survival_pod.dm
+++ b/code/modules/mining/equipment/survival_pod.dm
@@ -308,17 +308,16 @@
var/possible = list(/obj/item/ship_in_a_bottle,
/obj/item/gun/energy/pulse,
/obj/item/book/granter/martial/carp,
- /obj/item/melee/supermatter_sword,
+ /obj/item/melee/sword/supermatter,
/obj/item/shield/changeling,
/obj/item/lava_staff,
- /obj/item/energy_katana,
+ /obj/item/melee/sword/energy_katana,
/obj/item/hierophant_club,
/obj/item/gun/energy/minigun,
/obj/item/gun/ballistic/automatic/assault/hydra/lmg/extended,
/obj/item/stack/telecrystal/twenty,
/obj/item/nuke_core,
- /obj/item/phylactery,
- /obj/item/banhammer)
+ /obj/item/phylactery)
/obj/item/fakeartefact/Initialize()
. = ..()
diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm
index f9563cc078eb..bf6fb15c9332 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -419,7 +419,7 @@
/obj/item/seeds/lavaland/puce/attackby(obj/item/item, mob/user, params)
. = ..()
//anyone intending to add more garnishes using this method should componentize this
- if(!istype(item, /obj/item/kitchen/knife))
+ if(!istype(item, /obj/item/melee/knife))
return
playsound(src, 'sound/effects/glassbr1.ogg', 50, TRUE, -1)
to_chat(user, "You start breaking [src] up into shards...")
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 2af5515e47a7..e3e9f6aac8f0 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -21,8 +21,6 @@
new /obj/item/clothing/suit/space/hardsuit/cult(src)
if(3)
new /obj/item/necromantic_stone/lava(src)
- if(4)
- new /obj/item/katana/cursed(src)
if(5)
new /obj/item/clothing/glasses/godeye(src)
if(6)
@@ -47,7 +45,7 @@
new /obj/item/borg/upgrade/modkit/lifesteal(src)
new /obj/item/bedsheet/cult(src)
if(14)
- new /obj/item/nullrod/scythe/talking/necro(src)
+ new /obj/item/scythe(src)
if(15)
new /obj/item/book_of_babel(src)
if(16)
@@ -80,8 +78,6 @@
new /obj/item/gun/energy/spur(src)
if(28)
new /obj/item/clothing/suit/armor/ascetic(src)
- if(29)
- new /obj/item/kitchen/knife/envy(src)
/obj/structure/closet/crate/necropolis/tendril/greater
desc = "It's watching you wearily. It seems terribly bloated."
@@ -96,8 +92,6 @@
new /obj/item/clothing/suit/space/hardsuit/cult(src)
if(3)
new /obj/item/necromantic_stone/lava(src)
- if(4)
- new /obj/item/katana/cursed(src)
if(5)
new /obj/item/clothing/glasses/godeye(src)
if(6)
@@ -122,7 +116,7 @@
new /obj/item/borg/upgrade/modkit/lifesteal(src)
new /obj/item/bedsheet/cult(src)
if(14)
- new /obj/item/nullrod/scythe/talking/necro(src)
+ new /obj/item/scythe(src)
if(15)
new /obj/item/book_of_babel(src)
if(16)
@@ -155,36 +149,6 @@
new /obj/item/gun/energy/spur(src)
if(28)
new /obj/item/clothing/suit/armor/ascetic(src)
- if(29)
- new /obj/item/kitchen/knife/envy(src)
-
-//KA modkit design discs
-/obj/item/disk/design_disk/modkit_disc
- name = "KA Mod Disk"
- desc = "A design disc containing the design for a unique kinetic accelerator modkit. It's compatible with a research console."
- illustration = "accel"
- color = "#6F6F6F"
- var/modkit_design = /datum/design/unique_modkit
-
-/obj/item/disk/design_disk/modkit_disc/Initialize()
- . = ..()
- blueprints[1] = new modkit_design
-
-/obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe
- name = "Offensive Mining Explosion Mod Disk"
- modkit_design = /datum/design/unique_modkit/offensive_turf_aoe
-
-/obj/item/disk/design_disk/modkit_disc/rapid_repeater
- name = "Rapid Repeater Mod Disk"
- modkit_design = /datum/design/unique_modkit/rapid_repeater
-
-/obj/item/disk/design_disk/modkit_disc/resonator_blast
- name = "Resonator Blast Mod Disk"
- modkit_design = /datum/design/unique_modkit/resonator_blast
-
-/obj/item/disk/design_disk/modkit_disc/bounty
- name = "Death Syphon Mod Disk"
- modkit_design = /datum/design/unique_modkit/bounty
/datum/design/unique_modkit
category = list("Mining Designs", "Cyborg Upgrade Modules") //can't be normally obtained
@@ -738,8 +702,8 @@
H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET)
H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE)
- H.put_in_hands(new /obj/item/claymore(H), TRUE)
- H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK)
+ H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE)
+ H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK)
//ice cube
/obj/item/freeze_cube
@@ -1204,7 +1168,7 @@
var/loot = rand(1,4)
switch(loot)
if(1)
- new /obj/item/melee/ghost_sword(src)
+ new /obj/item/melee/sword/claymore(src)
if(2)
new /obj/item/lava_staff(src)
if(3)
@@ -1212,91 +1176,6 @@
if(4)
new /obj/item/dragons_blood(src)
-/obj/item/melee/ghost_sword
- name = "\improper spectral blade"
- desc = "A rusted and dulled blade. It doesn't look like it'd do much damage. It glows weakly."
- icon_state = "spectral"
- item_state = "spectral"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- flags_1 = CONDUCT_1
- sharpness = IS_SHARP
- w_class = WEIGHT_CLASS_BULKY
- force = 1
- throwforce = 1
- hitsound = 'sound/effects/ghost2.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended")
- var/summon_cooldown = 0
- var/list/mob/dead/observer/spirits
-
-/obj/item/melee/ghost_sword/Initialize()
- . = ..()
- spirits = list()
- START_PROCESSING(SSobj, src)
- GLOB.poi_list |= src
- AddComponent(/datum/component/butchering, 150, 90)
-
-/obj/item/melee/ghost_sword/Destroy()
- for(var/mob/dead/observer/G in spirits)
- G.invisibility = GLOB.observer_default_invisibility
- spirits.Cut()
- STOP_PROCESSING(SSobj, src)
- GLOB.poi_list -= src
- . = ..()
-
-/obj/item/melee/ghost_sword/attack_self(mob/user)
- if(summon_cooldown > world.time)
- to_chat(user, "You just recently called out for aid. You don't want to annoy the spirits!")
- return
- to_chat(user, "You call out for aid, attempting to summon spirits to your side.")
-
- notify_ghosts("[user] is raising [user.p_their()] [src], calling for your help!",
- enter_link="(Click to help)",
- source = user, action=NOTIFY_ORBIT, ignore_key = POLL_IGNORE_SPECTRAL_BLADE, header = "Spectral blade")
-
- summon_cooldown = world.time + 300
-
-/obj/item/melee/ghost_sword/process()
- ghost_check()
-
-/obj/item/melee/ghost_sword/proc/ghost_check()
- var/ghost_counter = 0
- var/turf/T = get_turf(src)
- var/list/contents = T.GetAllContents()
- var/mob/dead/observer/current_spirits = list()
- for(var/thing in contents)
- var/atom/A = thing
- A.transfer_observers_to(src)
-
- for(var/i in orbiters?.orbiters)
- if(!isobserver(i))
- continue
- var/mob/dead/observer/G = i
- ghost_counter++
- G.invisibility = 0
- current_spirits |= G
-
- for(var/mob/dead/observer/G in spirits - current_spirits)
- G.invisibility = GLOB.observer_default_invisibility
-
- spirits = current_spirits
-
- return ghost_counter
-
-/obj/item/melee/ghost_sword/attack(mob/living/target, mob/living/carbon/human/user)
- force = 0
- var/ghost_counter = ghost_check()
-
- force = clamp((ghost_counter * 4), 0, 75)
- user.visible_message("[user] strikes with the force of [ghost_counter] vengeful spirits!")
- ..()
-
-/obj/item/melee/ghost_sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- var/ghost_counter = ghost_check()
- final_block_chance += clamp((ghost_counter * 5), 0, 75)
- owner.visible_message("[owner] is protected by a ring of [ghost_counter] ghosts!")
- return ..()
-
//Blood
/obj/item/dragons_blood
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index 15cde601689e..4b2774c3894a 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -121,6 +121,6 @@
new /obj/item/clothing/suit/hooded/explorer(src)
new /obj/item/clothing/mask/gas/explorer(src)
new /obj/item/gun/energy/kinetic_accelerator(src)
- new /obj/item/kitchen/knife/combat/survival(src)
+ new /obj/item/melee/knife/survival(src)
new /obj/item/flashlight/seclite(src)
new /obj/item/clothing/gloves/explorer(src)
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 8fbf9c32a38e..2dbbd9d4b65b 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -35,6 +35,7 @@
. = ..()
GLOB.new_player_list += src
+ SSpoints_of_interest.make_point_of_interest(src)
/mob/dead/new_player/Destroy()
GLOB.new_player_list -= src
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index c15c4a1af835..0fcfa5c13940 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -62,6 +62,9 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
var/datum/orbit_menu/orbit_menu
var/datum/spawners_menu/spawners_menu
+ // The POI we're orbiting (orbit menu)
+ var/orbiting_ref
+
/mob/dead/observer/Initialize()
set_invisibility(GLOB.observer_default_invisibility)
@@ -142,6 +145,8 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
. = ..()
+ SSpoints_of_interest.make_point_of_interest(src)
+
grant_all_languages()
show_data_huds()
data_huds_on = 1
@@ -499,7 +504,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/list/dest = list() //List of possible destinations (mobs)
var/target = null //Chosen target.
- dest += getpois(mobs_only = TRUE) //Fill list, prompt user with list
+ dest += SSpoints_of_interest.get_mob_pois()
target = input("Please, select a player!", "Jump to Mob", null, null) as null|anything in dest
if (!target)//Make sure we actually have a target
@@ -839,20 +844,24 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/reset_perspective(atom/A)
if(client)
if(ismob(client.eye) && (client.eye != src))
- var/mob/target = client.eye
- observetarget = null
- if(target.observers)
- LAZYREMOVE(target.observers, src)
+ cleanup_observe()
if(..())
if(hud_used)
client.screen = list()
hud_used.show_hud(hud_used.hud_version)
+/mob/dead/observer/proc/cleanup_observe()
+ var/mob/target = client.eye
+ observetarget = null
+ client?.perspective = initial(client.perspective)
+ if(target.observers)
+ LAZYREMOVE(target.observers, src)
+
/mob/dead/observer/verb/observe()
set name = "Observe"
set category = "Ghost"
- var/list/creatures = getpois()
+ var/list/creatures = SSpoints_of_interest.get_mob_pois()
reset_perspective(null)
diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm
index 86d54577538c..051faa5bedac 100644
--- a/code/modules/mob/dead/observer/orbit.dm
+++ b/code/modules/mob/dead/observer/orbit.dm
@@ -1,6 +1,9 @@
/datum/orbit_menu
+ ///mobs worth orbiting. Because spaghetti, all mobs have the point of interest, but only some are allowed to actually show up.
+ ///this obviously should be changed in the future, so we only add mobs as POI if they actually are interesting, and we don't use
+ ///a typecache.
+ var/static/list/mob_allowed_typecache
var/mob/dead/observer/owner
- var/auto_observe = FALSE
/datum/orbit_menu/New(mob/dead/observer/new_owner)
if(!istype(new_owner))
@@ -23,87 +26,243 @@
switch(action)
if ("orbit")
var/ref = params["ref"]
- var/atom/movable/poi = (locate(ref) in GLOB.mob_list) || (locate(ref) in GLOB.poi_list)
- if (poi == null)
- . = TRUE
- return
+ var/auto_observe = params["auto_observe"]
+ var/atom/movable/poi = SSpoints_of_interest.get_poi_atom_by_ref(ref)
+
+ if((ismob(poi) && !SSpoints_of_interest.is_valid_poi(poi, CALLBACK(src, PROC_REF(validate_mob_poi)))) \
+ || !SSpoints_of_interest.is_valid_poi(poi)
+ )
+ to_chat(usr, span_notice("That point of interest is no longer valid."))
+ return TRUE
+
+ var/mob/dead/observer/user = usr
owner.ManualFollow(poi)
owner.reset_perspective(null)
+ user.orbiting_ref = ref
if (auto_observe)
owner.do_observe(poi)
. = TRUE
if ("refresh")
update_static_data(owner, ui)
. = TRUE
- if ("toggle_observe")
- auto_observe = !auto_observe
- if (auto_observe && owner.orbit_target)
- owner.do_observe(owner.orbit_target)
- else
- owner.reset_perspective(null)
+
/datum/orbit_menu/ui_data(mob/user)
var/list/data = list()
- data["auto_observe"] = auto_observe
+
+ if(isobserver(user))
+ data["orbiting"] = get_currently_orbiting(user)
+
return data
/datum/orbit_menu/ui_static_data(mob/user)
- var/list/data = list()
+ var/list/new_mob_pois = SSpoints_of_interest.get_mob_pois(CALLBACK(src, PROC_REF(validate_mob_poi)), append_dead_role = FALSE)
+ var/list/new_other_pois = SSpoints_of_interest.get_other_pois()
var/list/alive = list()
var/list/antagonists = list()
+ var/list/critical = list()
var/list/dead = list()
var/list/ghosts = list()
var/list/misc = list()
var/list/npcs = list()
+ var/list/ships = list()
- var/list/pois = getpois(skip_mindless = TRUE, specify_dead_role = FALSE)
- for (var/name in pois)
+ for(var/name in new_mob_pois)
var/list/serialized = list()
- serialized["name"] = name
-
- var/poi = pois[name]
-
- serialized["ref"] = REF(poi)
-
- var/mob/M = poi
- if (istype(M))
- if (isobserver(M))
- ghosts += list(serialized)
- else if (M.stat == DEAD)
- dead += list(serialized)
- else if (M.mind == null)
- npcs += list(serialized)
- else
- var/number_of_orbiters = M.orbiters?.orbiters?.len
- if (number_of_orbiters)
- serialized["orbiters"] = number_of_orbiters
-
- var/datum/mind/mind = M.mind
- var/was_antagonist = FALSE
-
- for (var/_A in mind.antag_datums)
- var/datum/antagonist/A = _A
- if (A.show_to_ghosts)
- was_antagonist = TRUE
- serialized["antag"] = A.name
- antagonists += list(serialized)
- break
-
- if (!was_antagonist)
- alive += list(serialized)
+ var/mob/mob_poi = new_mob_pois[name]
+ var/number_of_orbiters = length(mob_poi.get_all_orbiters())
+
+ if(isnewplayer(mob_poi))
+ continue
+
+ serialized["ref"] = REF(mob_poi)
+ serialized["full_name"] = mob_poi.name
+ serialized["job"] = mob_poi.job
+ if(number_of_orbiters)
+ serialized["orbiters"] = number_of_orbiters
+
+ if(isobserver(mob_poi))
+ ghosts += list(serialized)
+ continue
+
+ if(mob_poi.stat == DEAD)
+ dead += list(serialized)
+ continue
+
+ if(isnull(mob_poi.mind))
+ if(isliving(mob_poi))
+ var/mob/living/npc = mob_poi
+ serialized["health"] = FLOOR((npc.health / npc.maxHealth * 100), 1)
+
+ npcs += list(serialized)
+ continue
+
+ serialized["client"] = !!mob_poi.client
+ serialized["name"] = mob_poi.real_name
+
+ if(isliving(mob_poi))
+ serialized += get_living_data(mob_poi)
+
+ var/list/antag_data = get_antag_data(mob_poi.mind)
+ if(length(antag_data))
+ serialized += antag_data
+ antagonists += list(serialized)
+ continue
+
+ alive += list(serialized)
+
+ for(var/name in new_other_pois)
+ var/atom/atom_poi = new_other_pois[name]
+
+ var/list/other_data = get_misc_data(atom_poi)
+ var/misc_data = list(other_data[1])
+
+ if(istype(atom_poi, /obj/machinery/computer/helm))
+ ships += misc_data
else
- misc += list(serialized)
-
- data["alive"] = alive
- data["antagonists"] = antagonists
- data["dead"] = dead
- data["ghosts"] = ghosts
- data["misc"] = misc
- data["npcs"] = npcs
- return data
+ misc += misc_data
+
+ if(other_data[2]) // Critical = TRUE
+ critical += misc_data
+
+ return list(
+ "alive" = alive,
+ "antagonists" = antagonists,
+ "critical" = critical,
+ "dead" = dead,
+ "ghosts" = ghosts,
+ "misc" = misc,
+ "npcs" = npcs,
+ "ships" = ships,
+ )
/datum/orbit_menu/ui_assets()
. = ..() || list()
. += get_asset_datum(/datum/asset/simple/orbit)
+/// Helper function to get threat type, group, overrides for job and icon
+/datum/orbit_menu/proc/get_antag_data(datum/mind/poi_mind) as /list
+ var/list/serialized = list()
+
+ for(var/datum/antagonist/antag as anything in poi_mind.antag_datums)
+ if(!antag.show_to_ghosts)
+ continue
+
+ serialized["antag"] = antag.name
+ serialized["antag_group"] = antag.antagpanel_category
+ serialized["job"] = antag.name
+ serialized["icon"] = antag.antag_hud_name
+
+ return serialized
+
+/// Helper to get the current thing we're orbiting (if any)
+/datum/orbit_menu/proc/get_currently_orbiting(mob/dead/observer/user)
+ if(isnull(user.orbiting_ref))
+ return
+
+ var/atom/poi = SSpoints_of_interest.get_poi_atom_by_ref(user.orbiting_ref)
+ if(isnull(poi))
+ user.orbiting_ref = null
+ return
+
+ if((ismob(poi) && !SSpoints_of_interest.is_valid_poi(poi, CALLBACK(src, PROC_REF(validate_mob_poi)))) \
+ || !SSpoints_of_interest.is_valid_poi(poi)
+ )
+ user.orbiting_ref = null
+ return
+
+ var/list/serialized = list()
+
+ if(!ismob(poi))
+ var/list/misc_info = get_misc_data(poi)
+ serialized += misc_info[1]
+ return serialized
+
+ var/mob/mob_poi = poi
+ serialized["full_name"] = mob_poi.name
+ serialized["ref"] = REF(poi)
+
+ if(mob_poi.mind)
+ serialized["client"] = !!mob_poi.client
+ serialized["name"] = mob_poi.real_name
+
+ if(isliving(mob_poi))
+ serialized += get_living_data(mob_poi)
+
+ return serialized
+
+/// Helper function to get job / icon / health data for a living mob
+/datum/orbit_menu/proc/get_living_data(mob/living/player) as /list
+ var/list/serialized = list()
+
+ serialized["health"] = FLOOR((player.health / player.maxHealth * 100), 1)
+
+ return serialized
+
+
+/// Gets a list: Misc data and whether it's critical. Handles all snowflakey type cases
+/datum/orbit_menu/proc/get_misc_data(atom/movable/atom_poi) as /list
+ var/list/misc = list()
+ var/critical = FALSE
+
+ misc["ref"] = REF(atom_poi)
+ misc["full_name"] = atom_poi.name
+
+ // Display the nuke timer
+ if(istype(atom_poi, /obj/machinery/nuclearbomb))
+ var/obj/machinery/nuclearbomb/bomb = atom_poi
+
+ if(bomb.timing)
+ misc["extra"] = "Timer: [bomb.countdown?.displayed_text]s"
+ critical = TRUE
+
+ return list(misc, critical)
+
+ // Display the holder if its a nuke disk
+ if(istype(atom_poi, /obj/item/disk/nuclear))
+ var/obj/item/disk/nuclear/disk = atom_poi
+ var/mob/holder = disk.pulledby || get(disk, /mob)
+ misc["extra"] = "Location: [holder?.real_name || "Unsecured"]"
+
+ return list(misc, critical)
+
+ // Display singuloths if they exist
+ if(istype(atom_poi, /obj/singularity))
+ var/obj/singularity/singulo = atom_poi
+ misc["extra"] = "Energy: [round(singulo.energy)]"
+
+ if(singulo.current_size > 2)
+ critical = TRUE
+
+ return list(misc, critical)
+
+ if(istype(atom_poi, /obj/machinery/computer/helm))
+ var/obj/machinery/computer/helm/helm_poi = atom_poi
+ if(helm_poi.current_ship)
+ misc["extra"] = "Ship: [helm_poi.current_ship.name]"
+
+ return list(misc, critical)
+
+ return list(misc, critical)
+
+/**
+ * Helper POI validation function passed as a callback to various SSpoints_of_interest procs.
+ *
+ * Provides extended validation above and beyond standard, limiting mob POIs without minds or ckeys
+ * unless they're mobs, camera mobs or megafauna. Also allows exceptions for mobs that are deadchat controlled.
+ *
+ * If they satisfy that requirement, falls back to default validation for the POI.
+ */
+/datum/orbit_menu/proc/validate_mob_poi(datum/point_of_interest/mob_poi/potential_poi)
+ var/mob/potential_mob_poi = potential_poi.target
+ if(!potential_mob_poi.mind && !potential_mob_poi.ckey)
+ if(!mob_allowed_typecache)
+ mob_allowed_typecache = typecacheof(list(
+ /mob/living/simple_animal/hostile/megafauna,
+ /mob/living/simple_animal/hostile/boss
+ ))
+ if(!is_type_in_typecache(potential_mob_poi, mob_allowed_typecache) && !potential_mob_poi.GetComponent(/datum/component/deadchat_control))
+ return FALSE
+
+ return potential_poi.validate()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 1258df8b84c5..6046cfe82b63 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -9,6 +9,7 @@
diag_hud.add_to_hud(src)
faction += "[REF(src)]"
GLOB.mob_living_list += src
+ SSpoints_of_interest.make_point_of_interest(src)
if(speed)
update_living_varspeed()
diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
index 01610cd13644..665e75da9cef 100644
--- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
@@ -170,7 +170,7 @@
to_chat(user, "Please close the access panel before locking it.")
else
to_chat(user, "\The [src] doesn't seem to respect your authority.")
- else if(istype(W, /obj/item/kitchen/knife) && user.a_intent != INTENT_HARM)
+ else if(istype(W, /obj/item/melee/knife) && user.a_intent != INTENT_HARM)
to_chat(user, "You start attaching \the [W] to \the [src]...")
if(do_after(user, 25, target = src))
deputize(W, user)
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
index e0537594c8ff..76dc1f095009 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
@@ -30,11 +30,6 @@
var/area/A = get_area(src)
if(A)
notify_ghosts("A drone shell has been created in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_DRONE)
- GLOB.poi_list |= src
-
-/obj/effect/mob_spawn/drone/Destroy()
- GLOB.poi_list -= src
- . = ..()
//ATTACK GHOST IGNORING PARENT RETURN VALUE
/obj/effect/mob_spawn/drone/attack_ghost(mob/user)
diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm
index d43d744e2800..b6f5c58b424e 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -115,7 +115,7 @@
name = "pile of bear armor"
desc = "A scattered pile of various shaped armor pieces fitted for a bear, some duct tape, and a nail filer. Crude instructions \
are written on the back of one of the plates. This seems like an awful idea."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "bear_armor_upgrade"
/obj/item/bear_armor/afterattack(atom/target, mob/user, proximity_flag)
diff --git a/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm b/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm
index ba5f75ffb249..d8b4af5344ea 100644
--- a/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm
+++ b/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm
@@ -9,7 +9,7 @@
melee_damage_lower = 15
melee_damage_upper = 15
loot = list(/obj/effect/mob_spawn/human/corpse/frontier,
- /obj/item/kitchen/knife/combat/survival)
+ /obj/item/melee/knife/survival)
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
faction = list(FACTION_ANTAG_FRONTIERSMEN)
footstep_type = FOOTSTEP_MOB_SHOE
diff --git a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm
index b251dda91e48..147c2081f622 100644
--- a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm
+++ b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm
@@ -49,7 +49,7 @@
loot = list(/obj/effect/decal/remains/human,
/obj/item/clothing/suit/armor/witchhunter,
/obj/item/clothing/head/witchunter,
- /obj/item/claymore/weak{name = "holy sword"})
+ /obj/item/melee/sword/claymore{name = "holy sword"})
/mob/living/simple_animal/hostile/human/skeleton/ice
name = "ice skeleton"
diff --git a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm
index 799c24550689..d8995c3cbbd1 100644
--- a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm
+++ b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm
@@ -131,7 +131,7 @@
/obj/item/stack/marker_beacon/ten = 15,
/obj/item/mining_scanner = 5,
/obj/item/extinguisher/mini = 10,
- /obj/item/kitchen/knife/combat = 5,
+ /obj/item/melee/knife/combat = 5,
/obj/item/flashlight/seclite = 10,
/obj/item/stack/sheet/sinew = 10,
/obj/item/stack/sheet/bone = 5,
@@ -147,7 +147,7 @@
/obj/item/stack/marker_beacon/ten = 10,
/obj/item/mining_scanner = 20,
/obj/item/extinguisher/mini = 10,
- /obj/item/kitchen/knife/combat/survival = 10,
+ /obj/item/melee/knife/survival = 10,
/obj/item/flashlight/seclite = 10,
/obj/item/stack/sheet/sinew = 10,
/obj/item/stack/sheet/bone = 10
@@ -159,11 +159,11 @@
/obj/item/stack/marker_beacon/ten = 5,
/obj/item/mining_scanner = 5,
/obj/item/extinguisher/mini = 10,
- /obj/item/kitchen/knife/combat/survival = 12,
+ /obj/item/melee/knife/survival = 12,
/obj/item/flashlight/seclite = 10,
/obj/item/stack/sheet/sinew = 5,
/obj/item/stack/sheet/bone = 5,
- /obj/item/kitchen/knife/combat = 3,
+ /obj/item/melee/knife/combat = 3,
/obj/item/reagent_containers/food/snacks/rationpack = 30
)
)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm
index a762a9298279..d3a50564ca75 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm
@@ -58,7 +58,7 @@
speed = 5
move_to_delay = 5
speak_emote = list("verbalizes")
- mob_trophy = /obj/item/nullrod/armblade/tentacle
+ mob_trophy = /obj/item/melee/synthetic_arm_blade
loot = list(/obj/effect/spawner/clawloot)
health = 2250
maxHealth = 2250
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 863abf56dad1..ff06df9c6113 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -607,12 +607,12 @@ GLOBAL_DATUM(blackbox, /obj/machinery/smartfridge/black_box)
var/ready_to_deploy = FALSE
/obj/machinery/anomalous_crystal/helpers/Destroy()
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
. = ..()
/obj/machinery/anomalous_crystal/helpers/ActivationReaction(mob/user, method)
if(..() && !ready_to_deploy)
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
ready_to_deploy = TRUE
notify_ghosts("An anomalous crystal has been activated in [get_area(src)]! This crystal can always be used by ghosts hereafter.", enter_link = "(Click to enter)", ghost_sound = 'sound/effects/ghost2.ogg', source = src, action = NOTIFY_ATTACK, header = "Anomalous crystal activated")
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm
index 08ef1a7b21cb..c06c78068ce9 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm
@@ -23,8 +23,8 @@
ranged_cooldown_time = 20
vision_range = 10
damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 0.5, CLONE = 0.5, STAMINA = 0, OXY = 0.5)
- loot = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted)
- mob_trophy = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll)
+ loot = list(/obj/item/melee/sword/claymore, /obj/item/clothing/suit/space/hardsuit/cult/enchanted)
+ mob_trophy = list(/obj/item/melee/sword/claymore, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll)
wander = FALSE
del_on_death = TRUE
blood_volume = BLOOD_VOLUME_NORMAL
@@ -40,7 +40,7 @@
/datum/action/innate/megafauna_attack/rapid_fire)
move_force = MOVE_FORCE_NORMAL
var/turf/starting
- var/obj/item/claymore/cursed/mob/weapon
+ var/obj/item/melee/sword/claymore/weapon
var/charging = FALSE
var/dash_cooldown = 6 SECONDS
var/runic_blast_cooldown = 14 SECONDS
@@ -50,23 +50,6 @@
var/dash_num = 3
var/newcolor = rgb(149, 10, 10)
-/obj/item/claymore/cursed
- name = "cursed longsword"
- desc = "For those who overcame a great challenge. It glows with a dim red light."
- icon_state = "cultblade"
- item_state = "cultblade"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- w_class = WEIGHT_CLASS_BULKY
- throwforce = 25
- block_chance = 65
- armour_penetration = 50
- sharpness = IS_SHARP
-
-/obj/item/claymore/cursed/mob
- block_chance = 0
- force = 16
-
/mob/living/simple_animal/hostile/megafauna/cult_templar/Initialize()
. = ..()
starting = get_turf(src)
@@ -421,7 +404,7 @@
/obj/item/clothing/suit/space/hardsuit/cult/enchanted
name = "\improper Cursed Nar'Sien hardened armor"
desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. This one is cursed, screaming voices into the mind of the wearer."
- allowed = list(/obj/item/gun, /obj/item/nullrod, /obj/item/tank/internals)
+ allowed = list(/obj/item/gun, /obj/item/tank/internals)
armor = list("melee" = 75, "bullet" = 50, "laser" = 30, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 80, "fire" = 100, "acid" = 100)
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | LAVA_PROOF
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
index b7ca291a5be4..bd9133ffce20 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
@@ -297,6 +297,8 @@
/// track our timers and reagents
/obj/item/organ/legion_skull/proc/skull_check()
+ if(!owner)
+ return
if(!malignance)
malignance = new()
malignance.infect(owner, FALSE)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm
index f0c70edc3037..1a347db1646b 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm
@@ -230,7 +230,7 @@
/obj/item/stack/marker_beacon/ten = 2,
/obj/item/mining_scanner = 2,
/obj/item/extinguisher/mini = 2,
- /obj/item/kitchen/knife/combat/survival = 3,
+ /obj/item/melee/knife/survival = 3,
/obj/item/flashlight/seclite = 3,
/obj/item/stack/sheet/sinew = 3,
/obj/item/stack/sheet/bone = 3
@@ -275,7 +275,7 @@
if(prob(75))
back = pick(/obj/item/storage/backpack/industrial, /obj/item/storage/backpack/satchel/eng, /obj/item/storage/backpack/duffelbag/engineering, /obj/item/storage/backpack/messenger/engi)
if(prob(10))
- back = /obj/item/fireaxe
+ back = /obj/item/melee/axe/fire
for(var/i = 1 to 3)
if(prob(75))
backpack_contents += pickweight(list(
@@ -424,7 +424,7 @@
if(prob(75))
accessory = /obj/item/clothing/accessory/armband/cargo
if(prob(25))
- suit = /obj/item/clothing/suit/armor/vest/scrap_armor
+ suit = /obj/item/clothing/suit/armor/vest/scrap
suit_store = /obj/item/gun/ballistic/rifle/illestren
/datum/outfit/generic/cargo
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index b1788a7aa50d..a05c2e65688e 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -462,7 +462,7 @@
else
client.perspective = EYE_PERSPECTIVE
client.eye = loc
- return 1
+ return TRUE
/// Show the mob's inventory to another mob
/mob/proc/show_inv(mob/user)
diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm
index 69da2287eb72..767a229d98f5 100644
--- a/code/modules/mod/modules/modules_ninja.dm
+++ b/code/modules/mod/modules/modules_ninja.dm
@@ -170,7 +170,7 @@
/// The item linked to the module that will get recalled.
var/obj/item/linked_weapon
/// The accepted typepath we can link to.
- var/accepted_type = /obj/item/energy_katana
+ var/accepted_type = /obj/item/melee/sword/energy_katana
/obj/item/mod/module/weapon_recall/on_suit_activation()
ADD_TRAIT(mod.wearer, TRAIT_NOGUNS, MOD_TRAIT)
diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm
index d082503a012d..06324b8f8b78 100644
--- a/code/modules/modular_computers/file_system/programs/radar.dm
+++ b/code/modules/modular_computers/file_system/programs/radar.dm
@@ -156,7 +156,7 @@
*something like "mob_209". In order to find the actual atom, we need
*to search the appropriate list for the REF string. This is dependant
*on the program (Lifeline uses GLOB.human_list, while Fission360 uses
- *GLOB.poi_list), but the result will be the same; evaluate the string and
+ *SSpoints_of_interest.other_points_of_interest), but the result will be the same; evaluate the string and
*return an atom reference.
*/
/datum/computer_file/program/radar/proc/find_atom()
@@ -269,7 +269,7 @@
pointercolor = "red"
/datum/computer_file/program/radar/fission360/find_atom()
- return locate(selected) in GLOB.poi_list
+ return locate(selected) in SSpoints_of_interest.other_points_of_interest
/datum/computer_file/program/radar/fission360/scan()
if(world.time < next_scan)
@@ -286,7 +286,7 @@
name = nuke.name,
)
objects += list(nukeinfo)
- var/obj/item/disk/nuclear/disk = locate() in GLOB.poi_list
+ var/obj/item/disk/nuclear/disk = locate() in SSpoints_of_interest.other_points_of_interest
if(trackable(disk))
var/list/nukeinfo = list(
ref = REF(disk),
diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm
index c00d32d25809..14392e1c0874 100644
--- a/code/modules/ninja/energy_katana.dm
+++ b/code/modules/ninja/energy_katana.dm
@@ -1,37 +1,30 @@
-/obj/item/energy_katana
+/obj/item/melee/sword/energy_katana
name = "energy katana"
desc = "A katana infused with strong energy."
icon_state = "energy_katana"
item_state = "energy_katana"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
force = 40
throwforce = 20
block_chance = 50
armour_penetration = 50
- w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT
- sharpness = IS_SHARP
max_integrity = 200
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/datum/effect_system/spark_spread/spark_system
var/datum/action/innate/dash/ninja/jaunt
var/dash_toggled = TRUE
-/obj/item/energy_katana/Initialize()
+/obj/item/melee/sword/energy_katana/Initialize()
. = ..()
jaunt = new(src)
spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
-/obj/item/energy_katana/attack_self(mob/user)
+/obj/item/melee/sword/energy_katana/attack_self(mob/user)
dash_toggled = !dash_toggled
to_chat(user, "You [dash_toggled ? "enable" : "disable"] the dash function on [src].")
-/obj/item/energy_katana/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+/obj/item/melee/sword/energy_katana/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(dash_toggled)
jaunt.Teleport(user, target)
@@ -41,13 +34,13 @@
playsound(user, 'sound/weapons/blade1.ogg', 50, TRUE)
target.emag_act(user)
-/obj/item/energy_katana/pickup(mob/living/user)
+/obj/item/melee/sword/energy_katana/pickup(mob/living/user)
. = ..()
jaunt.Grant(user, src)
user.update_icons()
playsound(src, 'sound/items/unsheath.ogg', 25, TRUE)
-/obj/item/energy_katana/dropped(mob/user)
+/obj/item/melee/sword/energy_katana/dropped(mob/user)
. = ..()
jaunt?.Remove(user)
user.update_icons()
@@ -55,7 +48,7 @@
//If we hit the Ninja who owns this Katana, they catch it.
//Works for if the Ninja throws it or it throws itself or someone tries
//To throw it at the ninja
-/obj/item/energy_katana/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+/obj/item/melee/sword/energy_katana/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
if(ishuman(hit_atom))
var/mob/living/carbon/human/H = hit_atom
if(istype(H.wear_suit, /obj/item/clothing/suit/space/space_ninja))
@@ -66,7 +59,7 @@
..()
-/obj/item/energy_katana/proc/returnToOwner(mob/living/carbon/human/user, doSpark = 1, caught = 0)
+/obj/item/melee/sword/energy_katana/proc/returnToOwner(mob/living/carbon/human/user, doSpark = 1, caught = 0)
if(!istype(user))
return
forceMove(get_turf(user))
@@ -94,7 +87,7 @@
to_chat(user, "[msg]")
-/obj/item/energy_katana/Destroy()
+/obj/item/melee/sword/energy_katana/Destroy()
QDEL_NULL(spark_system)
QDEL_NULL(jaunt)
return ..()
diff --git a/code/modules/ninja/outfit.dm b/code/modules/ninja/outfit.dm
index 2b5976db4d59..1c3c24927bfd 100644
--- a/code/modules/ninja/outfit.dm
+++ b/code/modules/ninja/outfit.dm
@@ -12,7 +12,7 @@
l_pocket = /obj/item/grenade/c4/x4
r_pocket = /obj/item/tank/internals/emergency_oxygen
internals_slot = ITEM_SLOT_RPOCKET
- belt = /obj/item/energy_katana
+ belt = /obj/item/melee/sword/energy_katana
implants = list(/obj/item/implant/explosive)
diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm
index cb355014d4e7..4f368b630496 100644
--- a/code/modules/ninja/suit/suit.dm
+++ b/code/modules/ninja/suit/suit.dm
@@ -26,7 +26,7 @@ Contents:
var/datum/effect_system/spark_spread/spark_system
var/datum/techweb/stored_research
var/obj/item/disk/tech_disk/t_disk//To copy design onto disk.
- var/obj/item/energy_katana/energyKatana //For teleporting the katana back to the ninja (It's an ability)
+ var/obj/item/melee/sword/energy_katana/energyKatana //For teleporting the katana back to the ninja (It's an ability)
//Other articles of ninja gear worn together, used to easily reference them after initializing.
var/obj/item/clothing/head/helmet/space/space_ninja/n_hood
diff --git a/code/modules/overmap/helm.dm b/code/modules/overmap/helm.dm
index 5b1f27fa2cb9..3b825ce39524 100644
--- a/code/modules/overmap/helm.dm
+++ b/code/modules/overmap/helm.dm
@@ -49,6 +49,8 @@
/obj/machinery/computer/helm/Initialize(mapload, obj/item/circuitboard/C)
. = ..()
+ if(!viewer)
+ SSpoints_of_interest.make_point_of_interest(src)
jump_allowed = world.time + CONFIG_GET(number/bluespace_jump_wait)
ntnet_relay = new(src)
@@ -76,6 +78,7 @@
SStgui.close_uis(src)
ASSERT(length(concurrent_users) == 0)
QDEL_NULL(ntnet_relay)
+ SSpoints_of_interest.remove_point_of_interest(src)
if(current_ship)
current_ship.helms -= src
current_ship = null
diff --git a/code/modules/overmap/ships/controlled_ship_datum.dm b/code/modules/overmap/ships/controlled_ship_datum.dm
index 5d851e52f4fd..efa4e36026c0 100644
--- a/code/modules/overmap/ships/controlled_ship_datum.dm
+++ b/code/modules/overmap/ships/controlled_ship_datum.dm
@@ -56,7 +56,7 @@
var/owner_check_timer_id
/// The ship's join mode. Controls whether players can join freely, have to apply, or can't join at all.
- var/join_mode = SHIP_JOIN_MODE_OPEN
+ var/join_mode = SHIP_JOIN_MODE_CLOSED
/// Lazylist of /datum/ship_applications for this ship. Only used if join_mode == SHIP_JOIN_MODE_APPLY
var/list/datum/ship_application/applications
diff --git a/code/modules/photography/_pictures.dm b/code/modules/photography/_pictures.dm
index 511d75ac6c3f..6570cd00bb04 100644
--- a/code/modules/photography/_pictures.dm
+++ b/code/modules/photography/_pictures.dm
@@ -45,7 +45,7 @@
if(!picture_image)
return
var/icon/small_img = icon(picture_image)
- var/icon/ic = icon('icons/obj/items_and_weapons.dmi', iconstate ? iconstate :"photo")
+ var/icon/ic = icon('icons/obj/items.dmi', iconstate ? iconstate :"photo")
small_img.Scale(8, 8)
ic.Blend(small_img,ICON_OVERLAY, 13, 13)
picture_icon = ic
diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm
index e91a03e421f3..c2096983fb03 100644
--- a/code/modules/photography/camera/camera.dm
+++ b/code/modules/photography/camera/camera.dm
@@ -4,7 +4,6 @@
/obj/item/camera
name = "camera"
- icon = 'icons/obj/items_and_weapons.dmi'
desc = "A polaroid camera."
icon_state = "camera"
item_state = "camera"
diff --git a/code/modules/photography/camera/film.dm b/code/modules/photography/camera/film.dm
index b44b93361083..a6001011eb29 100644
--- a/code/modules/photography/camera/film.dm
+++ b/code/modules/photography/camera/film.dm
@@ -3,7 +3,6 @@
*/
/obj/item/camera_film
name = "film cartridge"
- icon = 'icons/obj/items_and_weapons.dmi'
desc = "A camera film cartridge. Insert it into a camera to reload it."
icon_state = "film"
item_state = "electropack"
diff --git a/code/modules/photography/photos/album.dm b/code/modules/photography/photos/album.dm
index 2ba5f5499307..19c2c1297f6b 100644
--- a/code/modules/photography/photos/album.dm
+++ b/code/modules/photography/photos/album.dm
@@ -4,7 +4,7 @@
/obj/item/storage/photo_album
name = "photo album"
desc = "A big book used to store photos and mementos."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "album"
item_state = "album"
lefthand_file = 'icons/mob/inhands/misc/books_lefthand.dmi'
diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm
index 7274d477babb..ea3b4ff6a99d 100644
--- a/code/modules/photography/photos/photo.dm
+++ b/code/modules/photography/photos/photo.dm
@@ -3,7 +3,7 @@
*/
/obj/item/photo
name = "photo"
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "photo"
item_state = "paper"
w_class = WEIGHT_CLASS_TINY
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 9218b829e940..499a88b161f1 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -38,7 +38,7 @@
src.energy = starting_energy
. = ..()
START_PROCESSING(SSobj, src)
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
GLOB.singularities |= src
for(var/obj/machinery/power/singularity_beacon/singubeacon in GLOB.machines)
if(singubeacon.active)
@@ -53,7 +53,7 @@
/obj/singularity/Destroy()
STOP_PROCESSING(SSobj, src)
- GLOB.poi_list.Remove(src)
+ SSpoints_of_interest.remove_point_of_interest(src)
GLOB.singularities.Remove(src)
return ..()
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index b6fc6367e85c..400366415d9a 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -275,7 +275,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
SSair.start_processing_machine(src, mapload)
countdown = new(src)
countdown.start()
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
radio = new(src)
radio.keyslot = new radio_key
radio.listening = 0
@@ -293,7 +293,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
investigate_log("has been destroyed.", INVESTIGATE_SUPERMATTER)
SSair.stop_processing_machine(src)
QDEL_NULL(radio)
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
QDEL_NULL(countdown)
if(is_main_engine && GLOB.main_supermatter_engine == src)
GLOB.main_supermatter_engine = null
@@ -804,7 +804,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
/obj/machinery/power/supermatter_crystal/attackby(obj/item/W, mob/living/user, params)
if(!istype(W) || (W.item_flags & ABSTRACT) || !istype(user))
return
- if(istype(W, /obj/item/melee/roastingstick))
+ if(istype(W, /obj/item/roastingstick))
return ..()
if(istype(W, /obj/item/clothing/mask/cigarette))
var/obj/item/clothing/mask/cigarette/cig = W
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index 7d58610fc7f7..d4a6f71cca4d 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -151,7 +151,7 @@
/obj/singularity/energy_ball/orbit(obj/singularity/energy_ball/target)
if (istype(target))
target.orbiting_balls += src
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
target.dissipate_strength = target.orbiting_balls.len
. = ..()
diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm
index e235e00b98f6..8705a932b392 100644
--- a/code/modules/projectiles/ammunition/ballistic/revolver.dm
+++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm
@@ -88,14 +88,14 @@
projectile_type = /obj/projectile/bullet/c38/dumdum
/obj/item/ammo_casing/c38/hotshot
- name = ".38 hot shot bullet casing"
- desc = "A .38 hot shot bullet casing."
+ name = ".38 hearth bullet casing"
+ desc = "A .38 hearth bullet casing."
bullet_skin = "incen"
projectile_type = /obj/projectile/bullet/c38/hotshot
/obj/item/ammo_casing/c38/iceblox
- name = ".38 iceblox bullet casing"
- desc = "A .38 iceblox bullet casing."
+ name = ".38 chilled bullet casing"
+ desc = "A .38 chilled bullet casing."
bullet_skin = "surplus"
projectile_type = /obj/projectile/bullet/c38/iceblox
diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
index 9f6a8c169ecd..24854030c041 100644
--- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm
+++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
@@ -46,6 +46,13 @@
icon_state = "incendiary"
projectile_type = /obj/projectile/bullet/incendiary/shotgun
+/obj/item/ammo_casing/shotgun/blank
+ name = "blank shell"
+ desc = "A shell packed with powder but no projectile."
+ icon_state = "blank"
+ projectile_type = /obj/projectile/bullet/pellet/blank
+ custom_materials = list(/datum/material/iron=250)
+
/obj/item/ammo_casing/shotgun/improvised
name = "improvised shell"
desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards."
diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
index b590f0831df1..5b78f1fc93a1 100644
--- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
+++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
@@ -113,13 +113,13 @@
ammo_type = /obj/item/ammo_casing/c38/dumdum
/obj/item/ammo_box/c38/hotshot
- name = "speed loader (.38 hot shot)"
- desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These hot shot bullets contain an incendiary payload that set targets alight."
+ name = "speed loader (.38 hearth)"
+ desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These hearthwine bullets contain an incendiary payload that set targets alight."
ammo_type = /obj/item/ammo_casing/c38/hotshot
/obj/item/ammo_box/c38/iceblox
- name = "speed loader (.38 iceblox)"
- desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These iceblox bullets contain a cryogenic payload that chills targets."
+ name = "speed loader (.38 chilled)"
+ desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These icewine bullets contain a cryogenic payload that chills targets."
ammo_type = /obj/item/ammo_casing/c38/iceblox
/obj/item/ammo_box/c38/empty
@@ -213,6 +213,18 @@
icon_state = "38box-surplus"
ammo_type = /obj/item/ammo_casing/c38/surplus
+/obj/item/ammo_box/c38_box/hotshot
+ name = "ammo box (.38 hearth)"
+ desc = "An unorthodox .38 Special cartridge infused with hearthwine. Catches the target on fire."
+ icon_state = "38hotshot"
+ ammo_type = /obj/item/ammo_casing/c38/hotshot
+
+/obj/item/ammo_box/c38_box/iceblox
+ name = "ammo box (.38 chilled)"
+ desc = "An unorthodox .38 Special cartridge infused with icewine. Chills the target, slowing them down."
+ icon_state = "38iceblox"
+ ammo_type = /obj/item/ammo_casing/c38/iceblox
+
/obj/item/ammo_box/a12g
name = "ammo box (12g buckshot)"
desc = "A box of 12-gauge buckshot shells, devastating at close range."
@@ -238,6 +250,12 @@
icon_state = "12gbox-rubbershot"
ammo_type = /obj/item/ammo_casing/shotgun/rubbershot
+/obj/item/ammo_box/a12g/blanks
+ name = "ammo box (12g blanks)"
+ desc = "A box of 12-gauge blank shells, designed for training."
+ icon_state ="12gbox-slug"
+ ammo_type = /obj/item/ammo_casing/shotgun/blank
+
/obj/item/ammo_box/c9mm
name = "ammo box (9mm)"
desc = "A box of standard 9mm ammo."
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index f97dc5a5ce86..28ef8cecdd80 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -207,6 +207,12 @@
///this is how much deviation the gun recoil can have, recoil pushes the screen towards the reverse angle you shot + some deviation which this is the max.
var/recoil_deviation = 22.5
+ ///Used if the guns recoil is lower then the min, it clamps the highest recoil
+ var/min_recoil = 0
+
+ var/gunslinger_recoil_bonus = 0
+ var/gunslinger_spread_bonus = 0
+
/// how many shots per burst, Ex: most machine pistols, M90, some ARs are 3rnd burst, while others like the GAR and laser minigun are 2 round burst.
var/burst_size = 3
///The rate of fire when firing in a burst. Not the delay between bursts
@@ -318,9 +324,6 @@
///This prevents gun from firing until the coodown is done, affected by lag
var/current_cooldown = 0
- var/gunslinger_recoil_bonus = 0
- var/gunslinger_spread_bonus = 0
-
/obj/item/gun/Initialize()
. = ..()
RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
@@ -815,7 +818,7 @@
/obj/item/gun/proc/calculate_recoil(mob/user, recoil_bonus = 0)
if(HAS_TRAIT(user, TRAIT_GUNSLINGER))
recoil_bonus += gunslinger_recoil_bonus
- return clamp(recoil_bonus, 0 , INFINITY)
+ return clamp(recoil_bonus, min_recoil , INFINITY)
/obj/item/gun/proc/calculate_spread(mob/user, bonus_spread)
var/final_spread = 0
@@ -984,7 +987,6 @@
human_holder = src
for(var/obj/item/gun/at_risk in get_all_contents())
var/chance_to_fire = GUN_NO_SAFETY_MALFUNCTION_CHANCE_MEDIUM
- var/did_fire = FALSE
if(human_holder)
// gun is less likely to go off in a holster
if(at_risk == human_holder.s_store)
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 0288813fd089..00f48cc29239 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -13,6 +13,8 @@
has_safety = TRUE
safety = TRUE
+ min_recoil = 0.1
+
valid_attachments = list(
/obj/item/attachment/silencer,
/obj/item/attachment/laser_sight,
diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm
index 2d3cb6908c83..2be77ee20835 100644
--- a/code/modules/projectiles/guns/ballistic/rifle.dm
+++ b/code/modules/projectiles/guns/ballistic/rifle.dm
@@ -127,6 +127,8 @@
sawn_off = TRUE
weapon_weight = WEAPON_MEDIUM
w_class = WEIGHT_CLASS_NORMAL
+ spread = 24
+ spread_unwielded = 30
slot_flags = ITEM_SLOT_BELT
/obj/item/gun/ballistic/rifle/solgov
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index eb8ea3355fe9..2d70bf9851bb 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -432,6 +432,14 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq)
sawn_off = TRUE
slot_flags = ITEM_SLOT_BELT
+ wield_slowdown = 0.25
+ wield_delay = 0.3 SECONDS //OP? maybe
+
+ spread = 8
+ spread_unwielded = 15
+ recoil = 3 //or not
+ recoil_unwielded = 5
+
/obj/item/gun/ballistic/shotgun/automatic/combat/compact/compact
name = "compact compact combat shotgun"
desc = "A compact version of the compact version of the semi automatic combat shotgun. For when you want a gun the same size as your brain."
diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm
index c2e5b4cb2933..40fd10e94785 100644
--- a/code/modules/projectiles/guns/energy/pulse.dm
+++ b/code/modules/projectiles/guns/energy/pulse.dm
@@ -46,7 +46,7 @@
/obj/item/gun/energy/pulse/prize/Initialize()
. = ..()
- GLOB.poi_list += src
+ SSpoints_of_interest.make_point_of_interest(src)
var/turf/T = get_turf(src)
message_admins("A pulse rifle prize has been created at [ADMIN_VERBOSEJMP(T)]")
@@ -55,7 +55,7 @@
notify_ghosts("Someone won a pulse rifle as a prize!", source = src, action = NOTIFY_ORBIT, header = "Pulse rifle prize")
/obj/item/gun/energy/pulse/prize/Destroy()
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
. = ..()
/obj/item/gun/energy/pulse/pistol
diff --git a/code/modules/projectiles/projectile/bullets/revolver.dm b/code/modules/projectiles/projectile/bullets/revolver.dm
index dede2ce0d7ce..340aa692f5b2 100644
--- a/code/modules/projectiles/projectile/bullets/revolver.dm
+++ b/code/modules/projectiles/projectile/bullets/revolver.dm
@@ -69,7 +69,7 @@
imp.implant(M)
/obj/projectile/bullet/c38/hotshot //similar to incendiary bullets, but do not leave a flaming trail
- name = ".38 hot shot bullet"
+ name = ".38 hearth bullet"
ricochets_max = 0
/obj/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = FALSE)
@@ -80,7 +80,7 @@
M.IgniteMob()
/obj/projectile/bullet/c38/iceblox //see /obj/projectile/temp for the original code
- name = ".38 iceblox bullet"
+ name = ".38 chilled bullet"
var/temperature = 100
ricochets_max = 0
diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm
index ba9c8c88d7f8..a069102a39cc 100644
--- a/code/modules/projectiles/projectile/bullets/shotgun.dm
+++ b/code/modules/projectiles/projectile/bullets/shotgun.dm
@@ -114,3 +114,9 @@
damage = 30
armour_penetration = -25
tile_dropoff = 3
+
+/obj/projectile/bullet/pellet/blank
+ name = "blank"
+ damage = 30
+ range = 2
+ armour_penetration = -70
diff --git a/code/modules/reagents/reagent_containers/concrete_bags.dm b/code/modules/reagents/reagent_containers/concrete_bags.dm
new file mode 100644
index 000000000000..eaceb1c85631
--- /dev/null
+++ b/code/modules/reagents/reagent_containers/concrete_bags.dm
@@ -0,0 +1,58 @@
+/* In a better world, the logic for transfering reagents out of containers wouldn't be in /glass */
+
+/obj/item/reagent_containers/glass/concrete_bag
+ name = "\improper concrete mix bag"
+ desc = "A bag of concrete mixture from the F.O.O.D corportation. Just add water!"
+ w_class = WEIGHT_CLASS_HUGE //25+ kg
+ throw_range = 1
+
+ amount_per_transfer_from_this = 25
+ possible_transfer_amounts = list(25,50,75,100)
+ list_reagents = list(/datum/reagent/concrete_mix = 200)
+ reagent_flags = OPENCONTAINER
+ volume = 200
+
+ icon = 'icons/obj/chemical/concrete.dmi'
+ icon_state = "concrete_bag"
+ item_state = "concrete_bag"
+ lefthand_file = 'icons/mob/inhands/misc/concrete_bag_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/misc/concrete_bag_righthand.dmi'
+ fill_icon_thresholds = null
+
+ var/opened = FALSE
+ var/opened_icon_state = "concrete_bag_open"
+
+ drop_sound = 'sound/items/handling/cloth_drop.ogg'
+ pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
+
+/obj/item/reagent_containers/glass/concrete_bag/examine(mob/user)
+ . = ..()
+ if(!opened)
+ . += span_notice("[src] is unopened")
+ else
+ . += span_notice("[src] has been opened")
+
+/obj/item/reagent_containers/glass/concrete_bag/AltClick(mob/user)
+ if(!can_interact(user))
+ return
+ if(!opened)
+ if(do_after(user, 3 SECONDS))
+ visible_message(span_notice("[user] tears the top of [src] off!"), span_notice("You tear the top off [src]!"))
+ playsound(src, 'sound/items/poster_ripped.ogg', 50, 1)
+ new /obj/effect/decal/cleanable/generic(get_turf(src))
+ icon_state = opened_icon_state
+ spillable = TRUE
+ opened = TRUE
+ return
+ return
+ return
+
+/obj/item/reagent_containers/glass/concrete_bag/attack_self(mob/user)
+ if(!opened)
+ return
+ ..()
+
+/obj/item/reagent_containers/glass/concrete_bag/attack(mob/user)
+ if(!opened)
+ return
+ ..()
diff --git a/code/modules/reagents/reagent_containers/jug.dm b/code/modules/reagents/reagent_containers/jug.dm
index 8214a0747dfc..de1570a9ef5c 100644
--- a/code/modules/reagents/reagent_containers/jug.dm
+++ b/code/modules/reagents/reagent_containers/jug.dm
@@ -147,8 +147,3 @@
/obj/item/reagent_containers/glass/chem_jug/hexacrete
name = "chemical jug (hexacrete)"
list_reagents = list(/datum/reagent/concrete/hexacrete = 150)
-
-/obj/item/reagent_containers/glass/chem_jug/concrete_mix
- name = "chemical jug (concrete mix)"
- desc = "Just pour out and add water!"
- list_reagents = list(/datum/reagent/concrete_mix = 150)
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index b4f46e6e4c19..1fe7a307353d 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -180,7 +180,7 @@
/obj/item/reagent_containers/spray/pepper
name = "pepperspray"
desc = "Manufactured by UhangInc, used to blind and down an opponent quickly."
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
icon_state = "pepperspray"
item_state = "pepperspray"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
diff --git a/code/modules/research/bepis.dm b/code/modules/research/bepis.dm
deleted file mode 100644
index bb56a69adf2b..000000000000
--- a/code/modules/research/bepis.dm
+++ /dev/null
@@ -1,275 +0,0 @@
-//This system is designed to act as an in-between for cargo and science, and the first major money sink in the game outside of just buying things from cargo (As of 10/9/19, anyway).
-
-//economics defined values, subject to change should anything be too high or low in practice.
-
-#define MACHINE_OPERATION 100000
-#define MACHINE_OVERLOAD 500000
-#define MAJOR_THRESHOLD 5500
-#define MINOR_THRESHOLD 3500
-#define STANDARD_DEVIATION 1000
-
-/obj/machinery/rnd/bepis
- name = "\improper B.E.P.I.S. Chamber"
- desc = "A high fidelity testing device which unlocks the secrets of the known universe using the two most powerful substances available to man: excessive amounts of electricity and capital."
- icon = 'icons/obj/machines/bepis.dmi'
- icon_state = "chamber"
- base_icon_state = "chamber"
- density = TRUE
- layer = ABOVE_MOB_LAYER
- use_power = IDLE_POWER_USE
- active_power_usage = ACTIVE_DRAW_HIGH
- circuit = /obj/item/circuitboard/machine/bepis
-
- var/banking_amount = 100
- var/banked_cash = 0 //stored player cash
- var/datum/bank_account/account //payer's account.
- var/account_name //name of the payer's account.
- var/error_cause = null
- //Vars related to probability and chance of success for testing
- var/major_threshold = MAJOR_THRESHOLD
- var/minor_threshold = MINOR_THRESHOLD
- var/std = STANDARD_DEVIATION //That's Standard Deviation, what did you think it was?
- //Stock part variables
- var/power_saver = 1
- var/inaccuracy_percentage = 1.5
- var/positive_cash_offset = 0
- var/negative_cash_offset = 0
- var/minor_rewards = list(
- //To add a new minor reward, add it here.
- /obj/item/stack/circuit_stack/full,
- /obj/item/pen/survival,
- /obj/item/toy/sprayoncan,
- )
- var/static/list/item_list = list()
-
-/obj/machinery/rnd/bepis/attackby(obj/item/O, mob/user, params)
- if(default_deconstruction_screwdriver(user, "chamber_open", "chamber", O))
- update_icon_state()
- return
- if(default_deconstruction_crowbar(O))
- return
- if(!is_operational)
- to_chat(user, "[src] can't accept money when it's not functioning.")
- return
- if(istype(O, /obj/item/holochip) || istype(O, /obj/item/spacecash/bundle))
- var/deposit_value = O.get_item_credit_value()
- banked_cash += deposit_value
- qdel(O)
- say("Deposited [deposit_value] credits into storage.")
- update_icon_state()
- return
- if(istype(O, /obj/item/card/bank))
- var/obj/item/card/bank/bank_card = O
- if(bank_card.registered_account)
- account = bank_card.registered_account
- account_name = bank_card.registered_name
- say("New account detected. Console Updated.")
- else
- say("No account detected on card. Aborting.")
- return
- return ..()
-
-/obj/machinery/rnd/bepis/RefreshParts()
- var/C = 0
- var/M = 0
- var/L = 0
- var/S = 0
- for(var/obj/item/stock_parts/capacitor/Cap in component_parts)
- C += ((Cap.rating - 1) * 0.1)
- power_saver = 1 - C
- for(var/obj/item/stock_parts/manipulator/Manip in component_parts)
- M += ((Manip.rating - 1) * 250)
- positive_cash_offset = M
- for(var/obj/item/stock_parts/micro_laser/Laser in component_parts)
- L += ((Laser.rating - 1) * 250)
- negative_cash_offset = L
- for(var/obj/item/stock_parts/scanning_module/Scan in component_parts)
- S += ((Scan.rating - 1) * 0.25)
- inaccuracy_percentage = (1.5 - S)
-
-/obj/machinery/rnd/bepis/proc/depositcash()
- var/deposit_value = 0
- deposit_value = banking_amount
- if(deposit_value == 0)
- update_icon_state()
- say("Attempting to deposit 0 credits. Aborting.")
- return
- deposit_value = clamp(round(deposit_value, 1), 1, 15000)
- if(!account)
- say("Cannot find user account. Please swipe a valid ID.")
- return
- if(!account.has_money(deposit_value))
- say("You do not possess enough credits.")
- return
- account.adjust_money(-deposit_value, "bepis") //The money vanishes, not paid to any accounts.
- SSblackbox.record_feedback("amount", "BEPIS_credits_spent", deposit_value)
- log_econ("[deposit_value] credits were inserted into [src] by [account.account_holder]")
- banked_cash += deposit_value
- use_power(1000 * power_saver)
- say("Cash deposit successful. There is [banked_cash] in the chamber.")
- update_icon_state()
- return
-
-/obj/machinery/rnd/bepis/proc/withdrawcash()
- var/withdraw_value = 0
- withdraw_value = banking_amount
- if(withdraw_value > banked_cash)
- say("Cannot withdraw more than stored funds. Aborting.")
- else
- banked_cash -= withdraw_value
- new /obj/item/spacecash/bundle(src.loc, withdraw_value)
- say("Withdrawing [withdraw_value] credits from the chamber.")
- update_icon_state()
- return
-
-/obj/machinery/rnd/bepis/proc/calcsuccess()
- var/turf/dropturf = null
- var/gauss_major = 0
- var/gauss_minor = 0
- var/gauss_real = 0
- var/list/turfs = block(locate(x-1,y-1,z),locate(x+1,y+1,z)) //NO MORE DISCS IN WINDOWS
- while(length(turfs))
- var/turf/T = pick_n_take(turfs)
- if(T.is_blocked_turf(TRUE))
- continue
- else
- dropturf = T
- break
- if (!dropturf)
- dropturf = drop_location()
- gauss_major = (gaussian(major_threshold, std) - negative_cash_offset) //This is the randomized profit value that this experiment has to surpass to unlock a tech.
- gauss_minor = (gaussian(minor_threshold, std) - negative_cash_offset) //And this is the threshold to instead get a minor prize.
- gauss_real = (gaussian(banked_cash, std*inaccuracy_percentage) + positive_cash_offset) //this is the randomized profit value that your experiment expects to give.
- say("Real: [gauss_real]. Minor: [gauss_minor]. Major: [gauss_major].")
- flick("chamber_flash",src)
- update_icon_state()
- banked_cash = 0
- if((gauss_real >= gauss_major) && (SSresearch.techweb_nodes_experimental.len > 0)) //Major Success.
- say("Experiment concluded with major success. New technology node discovered on technology disc.")
- new /obj/item/disk/tech_disk/major(dropturf,1)
- if(SSresearch.techweb_nodes_experimental.len == 0)
- say("Expended all available experimental technology nodes. Resorting to minor rewards.")
- return
- if(gauss_real >= gauss_minor) //Minor Success.
- var/reward = pick(minor_rewards)
- new reward(dropturf)
- say("Experiment concluded with partial success. Dispensing compiled research efforts.")
- return
- if(gauss_real <= -1) //Critical Failure
- say("ERROR: CRITICAL MACHIME MALFUNCTI- ON. CURRENCY IS NOT CRASH. CANNOT COMPUTE COMMAND: 'make bucks'") //not a typo, for once.
- new /mob/living/simple_animal/deer(dropturf, 1)
- use_power(MACHINE_OVERLOAD * power_saver) //To prevent gambling at low cost and also prevent spamming for infinite deer.
- return
- //Minor Failure
- error_cause = pick("attempted to sell grey products to American dominated market.","attempted to sell gray products to British dominated market.","placed wild assumption that PDAs would go out of style.","simulated product #76 damaged brand reputation mortally.","simulated business model resembled 'pyramid scheme' by 98.7%.","product accidently granted override access to all vessel doors.")
- say("Experiment concluded with zero product viability. Cause of error: [error_cause]")
- return
-
-/obj/machinery/rnd/bepis/update_icon_state()
- if(panel_open == TRUE)
- icon_state = "[base_icon_state]_open"
- return ..()
- if((use_power == ACTIVE_POWER_USE) && (banked_cash > 0) && (is_operational))
- icon_state = "[base_icon_state]_active_loaded"
- return ..()
- if (((use_power == IDLE_POWER_USE) && (banked_cash > 0)) || (banked_cash > 0) && (!is_operational))
- icon_state = "[base_icon_state]_loaded"
- return ..()
- if(use_power == ACTIVE_POWER_USE && is_operational)
- icon_state = "[base_icon_state]_active"
- return ..()
- if(((use_power == IDLE_POWER_USE) && (banked_cash == 0)) || (!is_operational))
- icon_state = base_icon_state
- return ..()
- return ..()
-
-/obj/machinery/rnd/bepis/ui_interact(mob/user, datum/tgui/ui)
- ui = SStgui.try_update_ui(user, src, ui)
- if(!ui)
- ui = new(user, src, "Bepis", name)
- ui.open()
- RefreshParts()
-
-/obj/machinery/rnd/bepis/ui_data(mob/user)
- var/list/data = list()
- var/powered = FALSE
- var/zvalue = (banked_cash - (major_threshold - positive_cash_offset - negative_cash_offset))/(std)
- var/std_success = 0
- var/prob_success = 0
- //Admittedly this is messy, but not nearly as messy as the alternative, which is jury-rigging an entire Z-table into the code, or making an adaptive z-table.
- var/z = abs(zvalue)
- if(z > 0 && z <= 0.5)
- std_success = 19.1
- else if(z > 0.5 && z <= 1.0)
- std_success = 34.1
- else if(z > 1.0 && z <= 1.5)
- std_success = 43.3
- else if(z > 1.5 && z <= 2.0)
- std_success = 47.7
- else if(z > 2.0 && z <= 2.5)
- std_success = 49.4
- else
- std_success = 50
- if(zvalue > 0)
- prob_success = 50 + std_success
- else if(zvalue == 0)
- prob_success = 50
- else
- prob_success = 50 - std_success
-
- if(use_power == ACTIVE_POWER_USE)
- powered = TRUE
- data["account_owner"] = account_name
- data["amount"] = banking_amount
- data["stored_cash"] = banked_cash
- data["mean_value"] = (major_threshold - positive_cash_offset - negative_cash_offset)
- data["error_name"] = error_cause
- data["power_saver"] = power_saver
- data["accuracy_percentage"] = inaccuracy_percentage * 100
- data["positive_cash_offset"] = positive_cash_offset
- data["negative_cash_offset"] = negative_cash_offset
- data["manual_power"] = powered ? FALSE : TRUE
- data["silicon_check"] = issilicon(user)
- data["success_estimate"] = prob_success
- return data
-
-/obj/machinery/rnd/bepis/ui_act(action,params)
- . = ..()
- if(.)
- return
- switch(action)
- if("deposit_cash")
- if(use_power == IDLE_POWER_USE)
- return
- depositcash()
- if("withdraw_cash")
- if(use_power == IDLE_POWER_USE)
- return
- withdrawcash()
- if("begin_experiment")
- if(use_power == IDLE_POWER_USE)
- return
- if(banked_cash == 0)
- say("Please deposit funds to begin testing.")
- return
- calcsuccess()
- use_power(MACHINE_OPERATION * power_saver) //This thing should eat your APC battery if you're not careful.
- set_idle_power() //Machine shuts off after use to prevent spam and look better visually.
- update_icon_state()
- if("amount")
- var/input = text2num(params["amount"])
- if(input)
- banking_amount = input
- if("toggle_power")
- if(use_power == ACTIVE_POWER_USE)
- set_idle_power()
- else
- set_active_power()
- update_icon_state()
- if("account_reset")
- if(use_power == IDLE_POWER_USE)
- return
- account_name = ""
- account = null
- say("Account settings reset.")
- . = TRUE
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 79b28ccef331..340119a4e78a 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -97,18 +97,25 @@ other types of metals and chemistry for reagents).
color = "#8b70ff"
illustration = "design"
custom_materials = list(/datum/material/iron =300, /datum/material/glass =100)
+ var/disk_name = "Design Disk"
+ var/design_name
var/list/blueprints = list()
- var/list/starting_blueprints = list()
+ var/starting_blueprints = list()
var/max_blueprints = 1
/obj/item/disk/design_disk/Initialize()
. = ..()
pixel_x = base_pixel_x + rand(-5, 5)
pixel_y = base_pixel_y + rand(-5, 5)
- blueprints = new/list(max_blueprints)
+ if(design_name)
+ name = jointext(list(disk_name, design_name), " - ")
+ if(length(starting_blueprints))
+ for(var/design in starting_blueprints)
+ blueprints += new design()
/obj/item/disk/design_disk/adv
name = "Advanced Component Design Disk"
+ disk_name = "Advanced Design Disk"
color = "#bed876"
desc = "A disk for storing device design data for construction in lathes. This one has a little bit of extra storage space."
custom_materials = list(/datum/material/iron =300, /datum/material/glass = 100, /datum/material/silver = 50)
@@ -116,6 +123,7 @@ other types of metals and chemistry for reagents).
/obj/item/disk/design_disk/super
name = "Super Component Design Disk"
+ disk_name = "Super Design Disk"
color = "#c25454"
desc = "A disk for storing device design data for construction in lathes. This one has more extra storage space."
custom_materials = list(/datum/material/iron =300, /datum/material/glass = 100, /datum/material/silver = 50, /datum/material/gold = 50)
@@ -123,6 +131,7 @@ other types of metals and chemistry for reagents).
/obj/item/disk/design_disk/elite
name = "Elite Component Design Disk"
+ disk_name = "Elite Design Disk"
color = "#333333"
desc = "A disk for storing device design data for construction in lathes. This one has absurd amounts of extra storage space."
custom_materials = list(/datum/material/iron =300, /datum/material/glass = 100, /datum/material/silver = 100, /datum/material/gold = 100, /datum/material/bluespace = 50)
@@ -130,39 +139,60 @@ other types of metals and chemistry for reagents).
//Disks with content
/obj/item/disk/design_disk/ammo_c10mm
- name = "Design Disk - 10mm Ammo"
+ design_name = "10mm Ammo"
desc = "A design disk containing the pattern for a refill box of standard 10mm ammo, used in Stechkin pistols."
-
-/obj/item/disk/design_disk/ammo_c10mm/Initialize()
- . = ..()
- blueprints[1] = new /datum/design/c10mm()
-
+ starting_blueprints = (/datum/design/c10mm)
/obj/item/disk/design_disk/disposable_gun
- name = "design disk - disposable gun"
+ design_name = "Disposable gun"
desc = "A design disk containing designs for a cheap and disposable gun."
illustration = "gun"
max_blueprints = 2
-
-/obj/item/disk/design_disk/disposable_gun/Initialize()
- . = ..()
- blueprints[1] = new /datum/design/disposable_gun()
+ starting_blueprints = list(/datum/design/disposable_gun)
/obj/item/disk/design_disk/clip_mechs
- name = "design disk - CLIP exosuit modifications"
+ design_name = "CLIP exosuit modifications"
desc = "A design disk containing specifications for CLIP-custom exosuit conversions."
color = "#57b8f0"
max_blueprints = 2
-
-/obj/item/disk/design_disk/clip_mechs/Initialize()
- . = ..()
- blueprints[1] = new /datum/design/clip_ripley_upgrade()
- blueprints[2] = new /datum/design/clip_durand_upgrade()
+ starting_blueprints = list(/datum/design/clip_ripley_upgrade, /datum/design/clip_durand_upgrade)
/obj/item/disk/design_disk/ammo_c9mm
- name = "Design Disk - 9mm Ammo"
+ design_name = "9mm Ammo"
desc = "A design disk containing the pattern for a refill box of standard 9mm ammo, used in Commander pistols."
-
-/obj/item/disk/design_disk/ammo_c9mm/Initialize()
- . = ..()
- blueprints[1] = new /datum/design/c9mmautolathe()
+ starting_blueprints = list(/datum/design/c9mmautolathe)
+
+/obj/item/disk/design_disk/blanks
+ design_name = "Blank Ammo"
+ starting_blueprints = list(/datum/design/blank_shell)
+
+
+/obj/item/disk/design_disk/ammo_1911
+ design_name = "1911 Magazine"
+ desc = "A design disk containing the pattern for the classic 1911's seven round .45ACP magazine."
+ illustration = "ammo"
+ starting_blueprints = list(/datum/design/colt_1911_magazine)
+
+//KA modkit design discs
+/obj/item/disk/design_disk/modkit_disc
+ design_name = "KA Mod"
+ desc = "A design disc containing the design for a unique kinetic accelerator modkit. It's compatible with a research console."
+ illustration = "accel"
+ color = "#6F6F6F"
+ starting_blueprints = list(/datum/design/unique_modkit)
+
+/obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe
+ design_name = "Offensive Mining Explosion Mod"
+ starting_blueprints = list(/datum/design/unique_modkit/offensive_turf_aoe)
+
+/obj/item/disk/design_disk/modkit_disc/rapid_repeater
+ design_name = "Rapid Repeater Mod"
+ starting_blueprints = list(/datum/design/unique_modkit/rapid_repeater)
+
+/obj/item/disk/design_disk/modkit_disc/resonator_blast
+ design_name = "Resonator Blast Mod"
+ starting_blueprints = list(/datum/design/unique_modkit/resonator_blast)
+
+/obj/item/disk/design_disk/modkit_disc/bounty
+ design_name = "Death Syphon Mod"
+ starting_blueprints = list(/datum/design/unique_modkit/bounty)
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index a2b295f2e6fa..0b679dfcc4bf 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -356,7 +356,7 @@
id = "kitchen_knife"
build_type = AUTOLATHE
materials = list(/datum/material/iron = 12000)
- build_path = /obj/item/kitchen/knife
+ build_path = /obj/item/melee/knife/kitchen
category = list("initial","Dinnerware")
/datum/design/plastic_knife
@@ -364,7 +364,7 @@
id = "plastic_knife"
build_type = AUTOLATHE | PROTOLATHE
materials = list(/datum/material/plastic = 100)
- build_path = /obj/item/kitchen/knife/plastic
+ build_path = /obj/item/melee/knife/plastic
category = list("initial", "Tool Designs","Dinnerware")
/datum/design/fork
@@ -796,6 +796,14 @@
build_path = /obj/item/ammo_casing/shotgun/beanbag
category = list("initial", "Security", "Ammo")
+/datum/design/blank_shell
+ name = "Shotgun Blank"
+ id = "blank_shell"
+ build_type = AUTOLATHE | PROTOLATHE
+ materials = list(/datum/material/iron = 2000)
+ build_path = /obj/item/ammo_casing/shotgun/blank
+ category = list("Security", "Ammo")
+
/datum/design/riot_dart
name = "Foam Riot Dart"
id = "riot_dart"
@@ -865,7 +873,7 @@
id = "cleaver"
build_type = AUTOLATHE
materials = list(/datum/material/iron = 18000)
- build_path = /obj/item/kitchen/knife/butcher
+ build_path = /obj/item/melee/knife/butcher
category = list("initial", "Dinnerware")
/datum/design/spraycan
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index fdfe0f7f7341..bbc83dd1e705 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -238,14 +238,6 @@
category = list("Research Machinery")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
-/datum/design/board/bepis
- name = "Machine Design (B.E.P.I.S. Board)"
- desc = "The circuit board for a B.E.P.I.S."
- id = "bepis"
- build_path = /obj/item/circuitboard/machine/bepis
- category = list("Research Machinery")
- departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_CARGO
-
/datum/design/board/rdserver
name = "Machine Design (R&D Server Board)"
desc = "The circuit board for an R&D Server."
diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm
index 816cd4f9fdbf..98a088756d81 100644
--- a/code/modules/research/designs/misc_designs.dm
+++ b/code/modules/research/designs/misc_designs.dm
@@ -229,7 +229,7 @@
id = "roastingstick"
build_type = PROTOLATHE
materials = list(/datum/material/iron=1000, /datum/material/glass = 500, /datum/material/bluespace = 250)
- build_path = /obj/item/melee/roastingstick
+ build_path = /obj/item/roastingstick
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 2a8f390e9e36..1c3edc8b7c32 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -18,7 +18,7 @@
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_BALLISTICS
/datum/design/c38_hotshot
- name = "Speed Loader (.38 Hot Shot)"
+ name = "Speed Loader (.38 Hearth)"
desc = "Designed to quickly reload revolvers. Hot Shot bullets contain an incendiary payload."
id = "c38_hotshot"
build_type = PROTOLATHE
@@ -28,7 +28,7 @@
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_BALLISTICS
/datum/design/c38_iceblox
- name = "Speed Loader (.38 Iceblox)"
+ name = "Speed Loader (.38 Chilled)"
desc = "Designed to quickly reload revolvers. Iceblox bullets contain a cryogenic payload."
id = "c38_iceblox"
build_type = PROTOLATHE
diff --git a/code/modules/research/research_disk.dm b/code/modules/research/research_disk.dm
index 5f4fce5fd457..0354fddd50de 100644
--- a/code/modules/research/research_disk.dm
+++ b/code/modules/research/research_disk.dm
@@ -23,17 +23,6 @@
. = ..()
stored_research = new /datum/techweb/admin
-/obj/item/disk/tech_disk/major
- name = "Reformatted technology disk"
- desc = "A disk containing a new, completed tech from the B.E.P.I.S. Upload the disk to an R&D Console to redeem the tech."
- color = "#FFBAFF"
- illustration = "bepis"
- custom_materials = list(/datum/material/iron=300, /datum/material/glass=100)
-
-/obj/item/disk/tech_disk/major/Initialize()
- . = ..()
- stored_research = new /datum/techweb/bepis
-
/obj/item/research_notes
name = "research notes"
desc = "Valuable scientific data. Use it in a research console to scan it."
diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm
index 339edcfaa9a3..4aae75fbeab2 100644
--- a/code/modules/research/techweb/_techweb.dm
+++ b/code/modules/research/techweb/_techweb.dm
@@ -53,19 +53,6 @@
organization = ship_name
return ..()
-/datum/techweb/bepis //Should contain only 1 BEPIS tech selected at random.
- id = "EXPERIMENTAL"
- organization = "Nanotrasen R&D"
-
-/datum/techweb/bepis/New()
- . = ..()
- var/bepis_id = pick(SSresearch.techweb_nodes_experimental) //To add a new tech to the BEPIS, add the ID to this pick list.
- var/datum/techweb_node/BN = (SSresearch.techweb_node_by_id(bepis_id))
- hidden_nodes -= BN.id //Has to be removed from hidden nodes
- research_node(BN, TRUE, FALSE)
- update_node_status(BN)
- SSresearch.techweb_nodes_experimental -= bepis_id
-
/datum/techweb/Destroy()
researched_nodes = null
researched_designs = null
diff --git a/code/modules/research/techweb/_techweb_node.dm b/code/modules/research/techweb/_techweb_node.dm
index 73d732e28a1f..ff2b93791a77 100644
--- a/code/modules/research/techweb/_techweb_node.dm
+++ b/code/modules/research/techweb/_techweb_node.dm
@@ -7,7 +7,6 @@
var/display_name = "Errored Node"
var/description = "Why are you seeing this?"
var/hidden = FALSE //Whether it starts off hidden.
- var/experimental = FALSE //If the tech can be randomly granted by the BEPIS as a reward. Meant to be fully given in tech disks, not researched.
var/starting_node = FALSE //Whether it's available without any research.
var/list/prereq_ids = list()
var/list/design_ids = list()
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 5ad8c1915c97..12dee3405a8c 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -13,7 +13,7 @@
// Cargo Stuff
"c-reader", "desttagger", "salestagger", "handlabel", "packagewrap",
// Research Stuff
- "destructive_analyzer", "experimentor", "rdconsole", "bepis", "rdserver", "design_disk", "tech_disk", "mechfab",
+ "destructive_analyzer", "experimentor", "rdconsole", "rdserver", "design_disk", "tech_disk", "mechfab",
// Miscellaneous Stufff
"paystand", "space_heater", "bucket", "plastic_knife", "plastic_fork", "plastic_spoon", "fax",
// Security Stuff
@@ -1159,110 +1159,6 @@
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
export_price = 5000
-////////////////////////B.E.P.I.S. Locked Techs////////////////////////
-/datum/techweb_node/light_apps
- id = "light_apps"
- display_name = "Illumination Applications"
- description = "Applications of lighting and vision technology not originally thought to be commercially viable."
- prereq_ids = list("base")
- design_ids = list("bright_helmet", "rld_mini")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 2500
- hidden = TRUE
- experimental = TRUE
-
-/datum/techweb_node/rolling_table
- id = "rolling_table"
- display_name = "Advanced Wheel Applications"
- description = "Adding wheels to things can lead to extremely beneficial outcomes."
- prereq_ids = list("base")
- design_ids = list("rolling_table")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 2500
- hidden = TRUE
- experimental = TRUE
-
-/datum/techweb_node/Mauna_Mug
- id = "mauna_mug"
- display_name = "Mauna Mug"
- description = "A bored scientist was thinking to himself for very long...and then realized his coffee got cold! He made this invention to solve this extreme problem."
- prereq_ids = list("base")
- design_ids = list("mauna_mug")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 2500
- hidden = TRUE
- experimental = TRUE
-
-/datum/techweb_node/spec_eng
- id = "spec_eng"
- display_name = "Specialized Engineering"
- description = "Conventional wisdom has deemed these engineering products 'technically' safe, but far too dangerous to traditionally condone."
- prereq_ids = list("base")
- design_ids = list("lava_rods", "eng_gloves")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 2500
- hidden = TRUE
- experimental = TRUE
-
-/datum/techweb_node/aus_security
- id = "aus_security"
- display_name = "Australicus Security Protocols"
- description = "It is said that security in the Australicus sector is tight, so we took some pointers from their equipment. Thankfully, our sector lacks any signs of these, 'dropbears'."
- prereq_ids = list("base")
- design_ids = list("stun_boomerang")
-
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 2500
- hidden = TRUE
- experimental = TRUE
-
-/datum/techweb_node/interrogation
- id = "interrogation"
- display_name = "Enhanced Interrogation Technology"
- description = "By cross-referencing several declassified documents from past dictatorial regimes, we were able to develop an incredibly effective interrogation device. \
- Ethical concerns about loss of free will do not apply to criminals, according to galactic law."
- prereq_ids = list("base")
- design_ids = list("hypnochair")
-
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3500)
- export_price = 3500
- hidden = TRUE
- experimental = TRUE
-
-/datum/techweb_node/sticky_advanced
- id = "sticky_advanced"
- display_name = "Advanced Tapenology"
- description = "The absolute pinnacle of engineering!"
- design_ids = list("electric_tape", "super_tape")
-
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 2500
- hidden = TRUE
- experimental = TRUE
-
-/datum/techweb_node/tackle_advanced
- id = "tackle_advanced"
- display_name = "Advanced Grapple Technology"
- description = "Nanotrasen would like to remind its researching staff that it is never acceptable to \"glomp\" your coworkers, and further \"scientific trials\" on the subject \
- will no longer be accepted in its academic journals."
- design_ids = list("tackle_dolphin", "tackle_rocket")
-
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 2500
- hidden = TRUE
- experimental = TRUE
-
-/datum/techweb_node/fishing
- id = "fishing"
- display_name = "Fishing Technology"
- description = "Cutting edge fishing advancements."
- prereq_ids = list("base")
- design_ids = list("fishing_rod_tech")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 2500
- hidden = TRUE
- experimental = TRUE
-
//Helpers for debugging/balancing the techweb in its entirety!
/proc/total_techweb_exports()
var/list/datum/techweb_node/processing = list()
diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm
index ac663059d0c0..3f80f17e8a32 100644
--- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm
@@ -16,35 +16,6 @@ Slimecrossing Weapons
if(prob(20))
user.emote("scream")
-//Rainbow knife - Burning Rainbow
-/obj/item/kitchen/knife/rainbowknife
- name = "rainbow knife"
- desc = "A strange, transparent knife which constantly shifts color. It hums slightly when moved."
- icon = 'icons/obj/slimecrossing.dmi'
- icon_state = "rainbowknife"
- item_state = "rainbowknife"
- force = 18
- throwforce = 15
- damtype = BRUTE
-
-/obj/item/kitchen/knife/rainbowknife/afterattack(atom/O, mob/user, proximity)
- if(proximity && istype(O, /mob/living))
- damtype = pick(BRUTE, BURN, TOX, OXY)
- switch(damtype)
- if(BRUTE)
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("slashed","sliced","cut")
- if(BURN)
- hitsound = 'sound/weapons/sear.ogg'
- attack_verb = list("burned","singed","heated")
- if(TOX)
- hitsound = 'sound/weapons/pierce.ogg'
- attack_verb = list("poisoned","dosed","toxified")
- if(OXY)
- hitsound = 'sound/effects/space_wind.ogg'
- attack_verb = list("suffocated","winded","vacuumed")
- return ..()
-
//Adamantine shield - Chilling Adamantine
/obj/item/shield/adamantineshield
name = "adamantine shield"
diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm
index e9fd98232e2c..26c151e42316 100644
--- a/code/modules/research/xenobiology/crossbreeding/burning.dm
+++ b/code/modules/research/xenobiology/crossbreeding/burning.dm
@@ -305,11 +305,3 @@ Burning extracts:
new /obj/item/shield/adamantineshield(get_turf(user))
..()
-/obj/item/slimecross/burning/rainbow
- colour = "rainbow"
- effect_desc = "Creates the Rainbow Knife, a kitchen knife that deals random types of damage."
-
-/obj/item/slimecross/burning/rainbow/do_effect(mob/user)
- user.visible_message("[src] flattens into a glowing rainbow blade.")
- new /obj/item/kitchen/knife/rainbowknife(get_turf(user))
- ..()
diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
index 7b5bd27a8ada..0747fb746ddd 100644
--- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm
+++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
@@ -102,34 +102,3 @@
var/turf/open/chasm/C = T
C.set_target(dest)
C.drop(user)
-
-//can't be bothered to do sloth right now, will make later
-
-/obj/item/kitchen/knife/envy //Envy's knife: Found in the Envy ruin. Attackers take on the appearance of whoever they strike.
- name = "envy's knife"
- desc = "Their success will be yours."
- icon = 'icons/obj/wizard.dmi'
- icon_state = "render"
- item_state = "knife"
- lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
- force = 18
- throwforce = 10
- w_class = WEIGHT_CLASS_NORMAL
- hitsound = 'sound/weapons/bladeslice.ogg'
-
-/obj/item/kitchen/knife/envy/afterattack(atom/movable/AM, mob/living/carbon/human/user, proximity)
- . = ..()
- if(!proximity)
- return
- if(!istype(user))
- return
- if(ishuman(AM))
- var/mob/living/carbon/human/H = AM
- if(user.real_name != H.dna.real_name)
- user.real_name = H.dna.real_name
- H.dna.transfer_identity(user, transfer_SE=1)
- user.updateappearance(mutcolor_update=1)
- user.domutcheck()
- user.visible_message("[user]'s appearance shifts into [H]'s!", \
- "[H.p_they(TRUE)] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.")
diff --git a/code/modules/ruins/rockplanet_ruin_code.dm b/code/modules/ruins/rockplanet_ruin_code.dm
index d09bbe9d5dd7..5eea45c24c6c 100644
--- a/code/modules/ruins/rockplanet_ruin_code.dm
+++ b/code/modules/ruins/rockplanet_ruin_code.dm
@@ -100,7 +100,7 @@
/obj/item/strange_crystal/attackby(obj/item/item, mob/user, params)
. = ..()
- if(!istype(item, /obj/item/kitchen/knife))
+ if(!istype(item, /obj/item/melee/knife))
return
playsound(src, 'sound/effects/glassbr1.ogg', 50, TRUE, -1)
to_chat(user, "You start breaking [src] up into shards...")
diff --git a/code/modules/ruins/spaceruin_code/bigderelict1.dm b/code/modules/ruins/spaceruin_code/bigderelict1.dm
index 99af3b9efa28..9e2a0957547b 100644
--- a/code/modules/ruins/spaceruin_code/bigderelict1.dm
+++ b/code/modules/ruins/spaceruin_code/bigderelict1.dm
@@ -6,13 +6,3 @@
/obj/item/paper/crumpled/ruins/bigderelict1/coward
icon_state = "scrap_bloodied"
default_raw_text = "If anyone finds this, please, don't let my kids know I died a coward.."
-
-/obj/item/disk/design_disk/ammo_1911
- name = "design disk - 1911 magazine"
- desc = "A design disk containing the pattern for the classic 1911's seven round .45ACP magazine."
- illustration = "ammo"
-
-/obj/item/disk/design_disk/ammo_1911/Initialize()
- . = ..()
- var/datum/design/colt_1911_magazine/M = new
- blueprints[1] = M
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index 0c535f58ae23..756d889f5bc5 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -91,7 +91,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/item/storage/overmap_ship, 28)
new /obj/item/tank/internals/oxygen/red(src)
new /obj/item/tank/internals/oxygen/red(src)
new /obj/item/pickaxe/emergency(src)
- new /obj/item/kitchen/knife/hunting(src)
+ new /obj/item/melee/knife/hunting(src)
new /obj/item/survivalcapsule(src)
/obj/item/storage/overmap_ship/fueled/PopulateContents()
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index 14a7497728a9..5af554a60557 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -321,6 +321,9 @@
///A list of all gravity generators currently linked to the shuttle.
var/list/gravgen_list = list()
+ ///A list of all turrets currently linked to the shuttle.
+ var/list/turret_list = list()
+
///if this shuttle can move docking ports other than the one it is docked at
var/can_move_docking_ports = TRUE
@@ -428,6 +431,7 @@
for(var/each in place)
var/atom/atom = each
atom.connect_to_shuttle(src, dock)
+ SEND_SIGNAL(src, COMSIG_SHIP_DONE_CONNECTING, dock)
//this is a hook for custom behaviour. Maybe at some point we could add checks to see if engines are intact
/obj/docking_port/mobile/proc/can_move()
diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm
index c34d5cf7c985..d2e3cc957ad9 100644
--- a/code/modules/spells/spell_types/conjure.dm
+++ b/code/modules/spells/spell_types/conjure.dm
@@ -63,7 +63,7 @@
range = -1
clothes_req = FALSE
var/obj/item/item
- var/item_type = /obj/item/banhammer
+ var/item_type = /obj/item
school = "conjuration"
charge_max = 150
cooldown_min = 10
diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm
index 421b7f40f11c..f1654551df3a 100644
--- a/code/modules/spells/spell_types/devil.dm
+++ b/code/modules/spells/spell_types/devil.dm
@@ -1,25 +1,3 @@
-/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork
- name = "Summon Pitchfork"
- desc = "A devil's weapon of choice. Use this to summon/unsummon your pitchfork."
- invocation_type = "none"
- include_user = TRUE
- range = -1
- clothes_req = FALSE
- item_type = /obj/item/pitchfork/demonic
-
- school = "conjuration"
- charge_max = 150
- cooldown_min = 10
- action_icon = 'icons/mob/actions/actions_minor_antag.dmi'
- action_icon_state = "pitchfork"
- action_background_icon_state = "bg_demon"
-
-/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater
- item_type = /obj/item/pitchfork/demonic/greater
-
-/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended
- item_type = /obj/item/pitchfork/demonic/ascended
-
/obj/effect/proc_holder/spell/targeted/conjure_item/violin
item_type = /obj/item/instrument/violin/golden
desc = "A devil's instrument of choice. Use this to summon/unsummon your golden violin."
diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm
index 5cf7e7e1e509..94f0c8a4fcad 100644
--- a/code/modules/spells/spell_types/godhand.dm
+++ b/code/modules/spells/spell_types/godhand.dm
@@ -4,7 +4,7 @@
var/catchphrase = "High Five!"
var/on_use_sound = null
var/obj/effect/proc_holder/spell/targeted/touch/attached_spell
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi'
icon_state = "latexballon"
diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm
index 720670e3fc21..38e2f0df145e 100644
--- a/code/modules/spells/spell_types/lichdom.dm
+++ b/code/modules/spells/spell_types/lichdom.dm
@@ -99,7 +99,7 @@
name = "phylactery of [mind.name]"
active_phylacteries++
- GLOB.poi_list |= src
+ SSpoints_of_interest.make_point_of_interest(src)
START_PROCESSING(SSobj, src)
if(initial(SSticker.mode.round_ends_with_antag_death))
SSticker.mode.round_ends_with_antag_death = FALSE
@@ -107,7 +107,7 @@
/obj/item/phylactery/Destroy(force=FALSE)
STOP_PROCESSING(SSobj, src)
active_phylacteries--
- GLOB.poi_list -= src
+ SSpoints_of_interest.remove_point_of_interest(src)
if(!active_phylacteries)
SSticker.mode.round_ends_with_antag_death = initial(SSticker.mode.round_ends_with_antag_death)
. = ..()
diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm
index d1c882f96620..0807e1e5c8cc 100644
--- a/code/modules/surgery/advanced/lobotomy.dm
+++ b/code/modules/surgery/advanced/lobotomy.dm
@@ -26,7 +26,7 @@
implements = list(
TOOL_SCALPEL = 85, // there is no way this should be reasonable to do basically at all without a real surgery. ghetto lobotomy, for real?
/obj/item/melee/transforming/energy/sword = 25,
- /obj/item/kitchen/knife = 15,
+ /obj/item/melee/knife = 15,
/obj/item/shard = 10,
/obj/item = 5)
time = 10 SECONDS
diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm
index 91cd1dce07e4..e737acbb78d7 100644
--- a/code/modules/surgery/amputation.dm
+++ b/code/modules/surgery/amputation.dm
@@ -14,9 +14,9 @@
TOOL_SCALPEL = 100,
TOOL_SAW = 100,
/obj/item/melee/arm_blade = 80,
- /obj/item/fireaxe = 50,
+ /obj/item/melee/axe/fire = 50,
/obj/item/hatchet = 40,
- /obj/item/kitchen/knife/butcher = 25)
+ /obj/item/melee/knife/butcher = 25)
time = 6.4 SECONDS
preop_sound = 'sound/surgery/scalpel1.ogg'
success_sound = 'sound/surgery/organ2.ogg'
diff --git a/code/modules/surgery/coronary_bypass.dm b/code/modules/surgery/coronary_bypass.dm
index a4628d19efff..ceb376f3587c 100644
--- a/code/modules/surgery/coronary_bypass.dm
+++ b/code/modules/surgery/coronary_bypass.dm
@@ -22,7 +22,7 @@
name = "incise heart"
implements = list(
TOOL_SCALPEL = 90,
- /obj/item/kitchen/knife = 40,
+ /obj/item/melee/knife = 40,
/obj/item/shard = 33)
time = 1.6 SECONDS
preop_sound = 'sound/surgery/scalpel1.ogg'
diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm
index 70dbac246e4e..eccf729d263f 100644
--- a/code/modules/surgery/experimental_dissection.dm
+++ b/code/modules/surgery/experimental_dissection.dm
@@ -34,7 +34,7 @@
/obj/item/scalpel/augment = 75,
/obj/item/scalpel/advanced = 60,
TOOL_SCALPEL = 45,
- /obj/item/kitchen/knife = 30,
+ /obj/item/melee/knife = 30,
/obj/item/shard = 10)// special tools not only cut down time but also improve probability
time = 125
silicons_obey_prob = TRUE
diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm
index f4bd48c4729d..6d00f5ae7588 100644
--- a/code/modules/surgery/gastrectomy.dm
+++ b/code/modules/surgery/gastrectomy.dm
@@ -25,7 +25,7 @@
implements = list(
TOOL_SCALPEL = 95,
/obj/item/melee/transforming/energy/sword = 33,
- /obj/item/kitchen/knife = 40,
+ /obj/item/melee/knife = 40,
/obj/item/shard = 10)
time = 52
experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //for consistency across organ surgeries
diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm
index e612b6fa18c5..0571cf9b2397 100644
--- a/code/modules/surgery/hepatectomy.dm
+++ b/code/modules/surgery/hepatectomy.dm
@@ -24,7 +24,7 @@
implements = list(
TOOL_SCALPEL = 95,
/obj/item/melee/transforming/energy/sword = 33,
- /obj/item/kitchen/knife = 40,
+ /obj/item/melee/knife = 40,
/obj/item/shard = 25)
time = 52
experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //repeatable so not as much xp
diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm
index 09ef68f03e18..79d3d79bcee5 100644
--- a/code/modules/surgery/lobectomy.dm
+++ b/code/modules/surgery/lobectomy.dm
@@ -23,7 +23,7 @@
implements = list(
TOOL_SCALPEL = 95,
/obj/item/melee/transforming/energy/sword = 33,
- /obj/item/kitchen/knife = 40,
+ /obj/item/melee/knife = 40,
/obj/item/shard = 25)
time = 4.2 SECONDS
preop_sound = 'sound/surgery/scalpel1.ogg'
diff --git a/code/modules/surgery/mechanic_steps.dm b/code/modules/surgery/mechanic_steps.dm
index 3730f7cf1302..694081f7af78 100644
--- a/code/modules/surgery/mechanic_steps.dm
+++ b/code/modules/surgery/mechanic_steps.dm
@@ -4,7 +4,7 @@
implements = list(
TOOL_SCREWDRIVER = 100,
TOOL_SCALPEL = 75, // med borgs could try to unscrew shell with scalpel
- /obj/item/kitchen/knife = 50,
+ /obj/item/melee/knife/kitchen = 50,
/obj/item = 10)
time = 2.4 SECONDS
preop_sound = 'sound/items/screwdriver.ogg'
@@ -28,7 +28,7 @@
implements = list(
TOOL_SCREWDRIVER = 100,
TOOL_SCALPEL = 75,
- /obj/item/kitchen/knife = 50,
+ /obj/item/melee/knife/kitchen = 50,
/obj/item = 10)
time = 2.4 SECONDS
preop_sound = 'sound/items/screwdriver.ogg'
diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm
index 42018e6c1d87..8959a7f99715 100644
--- a/code/modules/surgery/organic_steps.dm
+++ b/code/modules/surgery/organic_steps.dm
@@ -5,7 +5,7 @@
implements = list(
TOOL_SCALPEL = 100,
/obj/item/melee/transforming/energy/sword = 40,
- /obj/item/kitchen/knife = 40,
+ /obj/item/melee/knife = 40,
/obj/item/shard = 25,
/obj/item = 15) //any sharp item
time = 1.6 SECONDS
@@ -151,18 +151,18 @@
name = "saw bone"
implements = list(
TOOL_SAW = 100,
- /obj/item/fireaxe = 50,
+ /obj/item/melee/axe/fire = 50,
/obj/item/melee/arm_blade = 40,
/obj/item/hatchet = 40,
- /obj/item/kitchen/knife/butcher = 33,
+ /obj/item/melee/knife/butcher = 33,
/obj/item = 10) //10% success (sort of) with any sharp item with a force>=10
time = 5.4 SECONDS
preop_sound = list(
/obj/item/circular_saw = 'sound/surgery/saw.ogg',
/obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg',
- /obj/item/fireaxe = 'sound/surgery/scalpel1.ogg',
+ /obj/item/melee/axe/fire = 'sound/surgery/scalpel1.ogg',
/obj/item/hatchet = 'sound/surgery/scalpel1.ogg',
- /obj/item/kitchen/knife/butcher = 'sound/surgery/scalpel1.ogg',
+ /obj/item/melee/knife/butcher = 'sound/surgery/scalpel1.ogg',
/obj/item = 'sound/surgery/scalpel1.ogg',
)
success_sound = 'sound/surgery/bone3.ogg'
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index 5d6fac852d51..665086d1981d 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -232,11 +232,11 @@
/obj/item/organ/cyberimp/arm/toolset/emag_act(mob/user)
for(var/datum/weakref/created_item in items_list)
var/obj/potential_knife = created_item.resolve()
- if(istype(/obj/item/kitchen/knife/combat/cyborg, potential_knife))
+ if(istype(/obj/item/melee/knife/combat/cyborg, potential_knife))
return FALSE
to_chat(user, "You unlock [src]'s integrated knife!")
- items_list += WEAKREF(new /obj/item/kitchen/knife/combat/cyborg(src))
+ items_list += WEAKREF(new /obj/item/melee/knife/combat/cyborg(src))
return TRUE
/obj/item/organ/cyberimp/arm/esword
diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm
index 9c87a5b5a93f..ed54575bb1bf 100644
--- a/code/modules/surgery/plastic_surgery.dm
+++ b/code/modules/surgery/plastic_surgery.dm
@@ -8,7 +8,7 @@
name = "reshape face"
implements = list(
TOOL_SCALPEL = 100,
- /obj/item/kitchen/knife = 40,
+ /obj/item/melee/knife = 40,
TOOL_WIRECUTTER = 33)
time = 64
experience_given = MEDICAL_SKILL_MEDIUM
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index 317297c4fe8d..5da5f497bda4 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -171,7 +171,7 @@
//spases 4 legibilititie
icon_state = "swa"
- icon = 'icons/obj/items_and_weapons.dmi'
+ icon = 'icons/obj/items.dmi'
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index d26226e3ea83..ef4630109543 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -1892,7 +1892,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/role_restricted/greykingsword
name = "Blade of The Grey Tide"
desc = "A weapon of legend, forged by the greatest crackheads of our generation."
- item = /obj/item/melee/greykingsword
+ item = /obj/item/melee/sword/greyking
cost = 2
restricted_roles = list("Assistant", "Chemist")
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index 8d6acea28452..ebef11cd2630 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -57,7 +57,7 @@
///Stores the default icon state
var/board_icon = "skateboard"
///The handheld item counterpart for the board
- var/board_item_type = /obj/item/melee/skateboard
+ var/board_item_type = /obj/item/skateboard
///Stamina drain multiplier
var/instability = 10
@@ -165,13 +165,13 @@
desc = "A RaDSTORMz brand professional skateboard. Looks a lot more stable than the average board."
icon_state = "skateboard2"
board_icon = "skateboard2"
- board_item_type = /obj/item/melee/skateboard/pro
+ board_item_type = /obj/item/skateboard/pro
instability = 6
/obj/vehicle/ridden/scooter/skateboard/hoverboard/
name = "hoverboard"
desc = "A blast from the past, so retro!"
- board_item_type = /obj/item/melee/skateboard/hoverboard
+ board_item_type = /obj/item/skateboard/hoverboard
instability = 3
icon_state = "hoverboard_red"
board_icon = "hoverboard_red"
@@ -188,7 +188,7 @@
/obj/vehicle/ridden/scooter/skateboard/hoverboard/admin
name = "\improper Board Of Directors"
desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too."
- board_item_type = /obj/item/melee/skateboard/hoverboard/admin
+ board_item_type = /obj/item/skateboard/hoverboard/admin
instability = 0
icon_state = "hoverboard_nt"
board_icon = "hoverboard_nt"
diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm
index 3e51271093ad..18b8fd522aab 100644
--- a/code/modules/vending/drinnerware.dm
+++ b/code/modules/vending/drinnerware.dm
@@ -15,10 +15,10 @@
/obj/item/reagent_containers/food/condiment/peppermill = 5,
/obj/item/clothing/suit/apron/chef = 2,
/obj/item/kitchen/rollingpin = 2,
- /obj/item/kitchen/knife = 2,
- /obj/item/kitchen/knife/pizza_cutter = 2,
+ /obj/item/melee/knife/kitchen = 2,
+ /obj/item/melee/knife/pizza_cutter = 2,
/obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2,
- /obj/item/kitchen/knife/butcher = 1)
+ /obj/item/melee/knife/butcher = 1)
refill_canister = /obj/item/vending_refill/dinnerware
default_price = 50
extra_price = 250
diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm
index c803fa347e9f..e54479cd55ca 100644
--- a/code/modules/vending/games.dm
+++ b/code/modules/vending/games.dm
@@ -15,8 +15,8 @@
/obj/item/camera = 3,
/obj/item/dyespray = 3)
premium = list(
- /obj/item/melee/skateboard/pro = 3,
- /obj/item/melee/skateboard/hoverboard = 1)
+ /obj/item/skateboard/pro = 3,
+ /obj/item/skateboard/hoverboard = 1)
refill_canister = /obj/item/vending_refill/games
default_price = 50
extra_price = 250
diff --git a/code/modules/vending/sustenance.dm b/code/modules/vending/sustenance.dm
index 0677a77edb58..02a95555468f 100644
--- a/code/modules/vending/sustenance.dm
+++ b/code/modules/vending/sustenance.dm
@@ -11,7 +11,7 @@
/obj/item/reagent_containers/food/drinks/ice/prison = 12,
/obj/item/reagent_containers/food/snacks/candy_corn/prison = 6)
contraband = list(
- /obj/item/kitchen/knife = 6,
+ /obj/item/melee/knife/kitchen = 6,
/obj/item/reagent_containers/food/drinks/coffee = 12,
/obj/item/tank/internals/emergency_oxygen = 6,
/obj/item/clothing/mask/breath = 6)
diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm
index da3fdb134010..4686c12da1ad 100644
--- a/code/modules/vending/wardrobes.dm
+++ b/code/modules/vending/wardrobes.dm
@@ -375,8 +375,7 @@
icon_state = "chapdrobe"
product_ads = "Are you being bothered by cultists or pesky revenants? Then come and dress like the holy man!;Clothes for men of the cloth!"
vend_reply = "Thank you for using the ChapDrobe!"
- products = list(/obj/item/storage/box/holy = 1,
- /obj/item/storage/backpack/cultpack = 1,
+ products = list(/obj/item/storage/backpack/cultpack = 1,
/obj/item/clothing/head/beret/service = 1, //WS edit - berets
/obj/item/clothing/accessory/pocketprotector/cosmetology = 1,
/obj/item/clothing/under/rank/civilian/chaplain = 1,
diff --git a/html/changelogs/AutoChangeLog-pr-3400.yml b/html/changelogs/AutoChangeLog-pr-3400.yml
deleted file mode 100644
index 3149437636dc..000000000000
--- a/html/changelogs/AutoChangeLog-pr-3400.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: PositiveEntropy
-changes:
- - {rscadd: Gorlex Splinters now have winter coats!}
-delete-after: true
diff --git a/html/changelogs/archive/2024-09.yml b/html/changelogs/archive/2024-09.yml
index c3b2ce482d47..d5ef25458196 100644
--- a/html/changelogs/archive/2024-09.yml
+++ b/html/changelogs/archive/2024-09.yml
@@ -124,3 +124,83 @@
Sadhorizon:
- rscadd: Added "ballistic goggles" - new indie security clothing item.
- imageadd: Added Kepori bulletproof helmet sprites.
+2024-09-22:
+ Bjarl:
+ - code_imp: Ship Turrets can now be attached to control consoles outside the area
+ they are in. please look at ship maps for examples on how.
+ - rscadd: Every single ship with turrets now does the above
+ PositiveEntropy:
+ - rscadd: Gorlex Splinters now have winter coats!
+ Sadhorizon:
+ - bugfix: Panacea-class is no longer an independent ship.
+2024-09-23:
+ Bjarl:
+ - rscadd: You can now buy flares at the outpost
+ - rscadd: Wasteplanets now will generate concrete filled caves.
+2024-09-24:
+ Apogee-dev:
+ - balance: Changed decoration on Miskilamo ships to look similar to each other
+ - balance: reduced Kilo starting funds to 1500
+ - bugfix: fixed wires on Mudskipper
+ Bjarl:
+ - bugfix: turrets will now _actually_ connect to their console. i swear im a real
+ coder.
+ FalloutFalcon:
+ - code_imp: bunch of code organization related to melee
+ - refactor: cleaned up a bunch of melee items to have better inheritance and paths
+ PositiveEntropy:
+ - imageadd: Resprites all balaclavas!
+ Thera-Pissed:
+ - rscdel: unused did_fire var
+ - rscdel: B.E.P.I.S. and related tech nodes.
+ rye, erika:
+ - rscadd: concrete jugs have been replaced by much more appropriate concrete bags,
+ jee, i hope whoever made *that* blunder got fired.
+ thgvr:
+ - balance: Colossus now only has 2 recruit slots instead of a whopping !!5!!
+ - rscadd: A bunch of kepori underwear have sprites now
+ trazodont:
+ - bugfix: miso soup spelling error
+ zimon9:
+ - rscadd: Adds a bit more contrast to the output of health analyzers
+2024-09-25:
+ Jedi-Toothpaste:
+ - bugfix: Added windows to the mudskipper and shetland's engines.
+ - bugfix: Adjusted the blast doors which open on the Shetland's engines.
+ SomeguyManperson:
+ - bugfix: sawn off illestren/improvised shotgun stats are now consistent if they
+ are spawned in
+2024-09-26:
+ FalloutFalcon:
+ - rscadd: Added new blank shells for training drills!
+ - refactor: Minor refactor of design disks to reduce repeated code
+ - rscadd: Ballistics now have a minimum recoil, not enough to mess up your shot!
+ - bugfix: ships now start closed. shiptesters be writing there memos and ship names.
+ - rscadd: You can now see ships in the orbit menu and its alot prettier!
+ - code_imp: ported tg points of interest and a much improved orbit menu
+ Gristlebee:
+ - bugfix: fixes wall deconstruction causing runtimes
+ Jedi-Toothpaste:
+ - bugfix: Fixed the lack of windows for the Kilo's Thrusters, and fixed the broken
+ link for the new blast doors.
+ generalthrax:
+ - balance: Most common accessories now fit on pants
+ - rscadd: Exosuit Recharger machines are now available from cargo
+ - balance: Rust Reds on the blackmarket are now available to a maximum of 3
+ zimon9:
+ - rscadd: Added fruit puree to vegan rations
+ - rscdel: Removed pizza crackers from vegan rations
+2024-09-27:
+ Jedi-Toothpaste:
+ - rscadd: Firelocks to the Valor-Class' Doors
+ - rscadd: Lighting to dark areas on the Valor-Class' Doors
+ - rscadd: New areas on the Valor-Class to seperate rooms
+ - rscadd: Added APC for the Surgical Area
+ PositiveEntropy:
+ - imageadd: Adjusts the inner part of the normal rabbit ears.
+2024-09-28:
+ Sadhorizon:
+ - rscadd: Added a fax machine to the Dwayne-class.
+ SomeguyManperson:
+ - bugfix: legion skulls will no longer check if they should rise up and consume
+ their owner if they are ownerless
diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi
index bfcc9970930f..8affe54d81d4 100644
Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ
diff --git a/icons/mob/clothing/underwear/species/kepori/underwear_legs_kepori.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_legs_kepori.dmi
index 166e1a7624d9..133061149889 100644
Binary files a/icons/mob/clothing/underwear/species/kepori/underwear_legs_kepori.dmi and b/icons/mob/clothing/underwear/species/kepori/underwear_legs_kepori.dmi differ
diff --git a/icons/mob/clothing/underwear/species/kepori/underwear_legs_keporiOLD.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_legs_keporiOLD.dmi
deleted file mode 100644
index aa9c16beb0ab..000000000000
Binary files a/icons/mob/clothing/underwear/species/kepori/underwear_legs_keporiOLD.dmi and /dev/null differ
diff --git a/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi
index 1a6a59cd5241..56c2757dc0f6 100644
Binary files a/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi and b/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi differ
diff --git a/icons/mob/inhands/misc/concrete_bag_lefthand.dmi b/icons/mob/inhands/misc/concrete_bag_lefthand.dmi
new file mode 100644
index 000000000000..9d331882dfc1
Binary files /dev/null and b/icons/mob/inhands/misc/concrete_bag_lefthand.dmi differ
diff --git a/icons/mob/inhands/misc/concrete_bag_righthand.dmi b/icons/mob/inhands/misc/concrete_bag_righthand.dmi
new file mode 100644
index 000000000000..707222f919ea
Binary files /dev/null and b/icons/mob/inhands/misc/concrete_bag_righthand.dmi differ
diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi
index 41093fde051e..49732e254e41 100644
Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi
index a8559339cd26..9797eb3ee366 100644
Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ
diff --git a/icons/mob/species/human/rabbit.dmi b/icons/mob/species/human/rabbit.dmi
index fcc6599f7356..26f0cb080d22 100644
Binary files a/icons/mob/species/human/rabbit.dmi and b/icons/mob/species/human/rabbit.dmi differ
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index 403b198c179b..ec5f14748540 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/ammo_shotshells.dmi b/icons/obj/ammo_shotshells.dmi
index fe37023686bd..55b00cdd0b21 100644
Binary files a/icons/obj/ammo_shotshells.dmi and b/icons/obj/ammo_shotshells.dmi differ
diff --git a/icons/obj/chemical/concrete.dmi b/icons/obj/chemical/concrete.dmi
new file mode 100644
index 000000000000..26c557e42436
Binary files /dev/null and b/icons/obj/chemical/concrete.dmi differ
diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi
index cbe3366557f0..9685db38db1e 100644
Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ
diff --git a/icons/obj/food/soupsalad.dmi b/icons/obj/food/soupsalad.dmi
index 1205fd888adc..d1baf327dd89 100644
Binary files a/icons/obj/food/soupsalad.dmi and b/icons/obj/food/soupsalad.dmi differ
diff --git a/icons/obj/improvised.dmi b/icons/obj/improvised.dmi
index 43fc38a4be59..20890be4cbc1 100644
Binary files a/icons/obj/improvised.dmi and b/icons/obj/improvised.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
new file mode 100644
index 000000000000..e38eb539cf4d
Binary files /dev/null and b/icons/obj/items.dmi differ
diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi
deleted file mode 100644
index a0ceaebd8383..000000000000
Binary files a/icons/obj/items_and_weapons.dmi and /dev/null differ
diff --git a/icons/obj/mysterybox.dmi b/icons/obj/mysterybox.dmi
deleted file mode 100644
index 0023dc066376..000000000000
Binary files a/icons/obj/mysterybox.dmi and /dev/null differ
diff --git a/icons/obj/transforming_energy.dmi b/icons/obj/transforming_energy.dmi
deleted file mode 100644
index ff2f99832d1c..000000000000
Binary files a/icons/obj/transforming_energy.dmi and /dev/null differ
diff --git a/icons/obj/weapon/axe.dmi b/icons/obj/weapon/axe.dmi
new file mode 100644
index 000000000000..0ff8a4364833
Binary files /dev/null and b/icons/obj/weapon/axe.dmi differ
diff --git a/icons/obj/weapon/baton.dmi b/icons/obj/weapon/baton.dmi
new file mode 100644
index 000000000000..c39a8b4e073b
Binary files /dev/null and b/icons/obj/weapon/baton.dmi differ
diff --git a/icons/obj/weapon/blunt.dmi b/icons/obj/weapon/blunt.dmi
new file mode 100644
index 000000000000..480515bbd794
Binary files /dev/null and b/icons/obj/weapon/blunt.dmi differ
diff --git a/icons/obj/weapon/energy.dmi b/icons/obj/weapon/energy.dmi
new file mode 100644
index 000000000000..5100d715923a
Binary files /dev/null and b/icons/obj/weapon/energy.dmi differ
diff --git a/icons/obj/item/knife.dmi b/icons/obj/weapon/knife.dmi
similarity index 100%
rename from icons/obj/item/knife.dmi
rename to icons/obj/weapon/knife.dmi
diff --git a/icons/obj/weapon/misc.dmi b/icons/obj/weapon/misc.dmi
new file mode 100644
index 000000000000..9eabb2c3eaf7
Binary files /dev/null and b/icons/obj/weapon/misc.dmi differ
diff --git a/icons/obj/weapon/spear.dmi b/icons/obj/weapon/spear.dmi
new file mode 100644
index 000000000000..98b3761430ed
Binary files /dev/null and b/icons/obj/weapon/spear.dmi differ
diff --git a/icons/obj/weapon/sword.dmi b/icons/obj/weapon/sword.dmi
new file mode 100644
index 000000000000..dc8fd8fd5d7d
Binary files /dev/null and b/icons/obj/weapon/sword.dmi differ
diff --git a/shiptest.dme b/shiptest.dme
index 8288edd38bea..e460d129f655 100644
--- a/shiptest.dme
+++ b/shiptest.dme
@@ -163,6 +163,7 @@
#include "code\__DEFINES\dcs\helpers.dm"
#include "code\__DEFINES\dcs\signals\signals.dm"
#include "code\__DEFINES\dcs\signals\signals_mod.dm"
+#include "code\__DEFINES\dcs\signals\signals_ship.dm"
#include "code\__DEFINES\dcs\signals\signals_storage.dm"
#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_carbon.dm"
#include "code\__DEFINES\dcs\signals\signals_obj\signals_object.dm"
@@ -369,6 +370,7 @@
#include "code\controllers\subsystem\persistence.dm"
#include "code\controllers\subsystem\physics.dm"
#include "code\controllers\subsystem\ping.dm"
+#include "code\controllers\subsystem\points_of_interest.dm"
#include "code\controllers\subsystem\profiler.dm"
#include "code\controllers\subsystem\radiation.dm"
#include "code\controllers\subsystem\radio.dm"
@@ -671,6 +673,7 @@
#include "code\datums\elements\lazy_fishing_spot.dm"
#include "code\datums\elements\light_blocking.dm"
#include "code\datums\elements\mobappearance.dm"
+#include "code\datums\elements\point_of_interest.dm"
#include "code\datums\elements\plant_backfire.dm"
#include "code\datums\elements\renamemob.dm"
#include "code\datums\elements\selfknockback.dm"
@@ -856,6 +859,7 @@
#include "code\game\area\areas\ruins\space.dm"
#include "code\game\area\areas\ruins\templates.dm"
#include "code\game\area\areas\ruins\wasteplanet.dm"
+#include "code\game\atom\atom_orbit.dm"
#include "code\game\gamemodes\events.dm"
#include "code\game\gamemodes\game_mode.dm"
#include "code\game\gamemodes\objective.dm"
@@ -1158,7 +1162,6 @@
#include "code\game\objects\items\cardboard_cutouts.dm"
#include "code\game\objects\items\cards_ids.dm"
#include "code\game\objects\items\cash.dm"
-#include "code\game\objects\items\chainsaw.dm"
#include "code\game\objects\items\charter.dm"
#include "code\game\objects\items\chromosome.dm"
#include "code\game\objects\items\chrono_eraser.dm"
@@ -1178,19 +1181,15 @@
#include "code\game\objects\items\dna_injector.dm"
#include "code\game\objects\items\documents.dm"
#include "code\game\objects\items\door_seal.dm"
-#include "code\game\objects\items\dualsaber.dm"
#include "code\game\objects\items\dyekit.dm"
#include "code\game\objects\items\eightball.dm"
-#include "code\game\objects\items\energyhalberd.dm"
#include "code\game\objects\items\etherealdiscoball.dm"
#include "code\game\objects\items\extinguisher.dm"
-#include "code\game\objects\items\fireaxe.dm"
#include "code\game\objects\items\flamethrower.dm"
#include "code\game\objects\items\gift.dm"
#include "code\game\objects\items\granters.dm"
#include "code\game\objects\items\handcuffs.dm"
#include "code\game\objects\items\holosign_creator.dm"
-#include "code\game\objects\items\holy_weapons.dm"
#include "code\game\objects\items\hot_potato.dm"
#include "code\game\objects\items\hourglass.dm"
#include "code\game\objects\items\inducer.dm"
@@ -1203,10 +1202,8 @@
#include "code\game\objects\items\paiwire.dm"
#include "code\game\objects\items\pet_carrier.dm"
#include "code\game\objects\items\pinpointer.dm"
-#include "code\game\objects\items\pitchfork.dm"
#include "code\game\objects\items\plushes.dm"
#include "code\game\objects\items\pneumaticCannon.dm"
-#include "code\game\objects\items\powerfist.dm"
#include "code\game\objects\items\puzzle_pieces.dm"
#include "code\game\objects\items\RCD.dm"
#include "code\game\objects\items\RCL.dm"
@@ -1220,20 +1217,15 @@
#include "code\game\objects\items\shrapnel.dm"
#include "code\game\objects\items\shuttle_creator.dm"
#include "code\game\objects\items\signs.dm"
-#include "code\game\objects\items\singularityhammer.dm"
-#include "code\game\objects\items\spear.dm"
-#include "code\game\objects\items\stunbaton.dm"
#include "code\game\objects\items\survery_handheld.dm"
#include "code\game\objects\items\taster.dm"
#include "code\game\objects\items\teleportation.dm"
-#include "code\game\objects\items\teleprod.dm"
#include "code\game\objects\items\theft_tools.dm"
#include "code\game\objects\items\toy_mechs.dm"
#include "code\game\objects\items\toys.dm"
#include "code\game\objects\items\trash.dm"
#include "code\game\objects\items\vending_items.dm"
#include "code\game\objects\items\wayfinding.dm"
-#include "code\game\objects\items\weaponry.dm"
#include "code\game\objects\items\attachments\_attachment.dm"
#include "code\game\objects\items\attachments\bayonet.dm"
#include "code\game\objects\items\attachments\laser_sight.dm"
@@ -1322,9 +1314,20 @@
#include "code\game\objects\items\implants\implanter.dm"
#include "code\game\objects\items\implants\implantpad.dm"
#include "code\game\objects\items\implants\implantuplink.dm"
+#include "code\game\objects\items\melee\chainsaw.dm"
+#include "code\game\objects\items\melee\dualsaber.dm"
#include "code\game\objects\items\melee\energy.dm"
+#include "code\game\objects\items\melee\energyhalberd.dm"
+#include "code\game\objects\items\melee\fireaxe.dm"
+#include "code\game\objects\items\melee\knife.dm"
#include "code\game\objects\items\melee\misc.dm"
+#include "code\game\objects\items\melee\powerfist.dm"
+#include "code\game\objects\items\melee\spear.dm"
+#include "code\game\objects\items\melee\stunbaton.dm"
+#include "code\game\objects\items\melee\sword.dm"
+#include "code\game\objects\items\melee\teleprod.dm"
#include "code\game\objects\items\melee\transforming.dm"
+#include "code\game\objects\items\melee\weaponry.dm"
#include "code\game\objects\items\robot\ai_upgrades.dm"
#include "code\game\objects\items\robot\robot_items.dm"
#include "code\game\objects\items\robot\robot_parts.dm"
@@ -1699,7 +1702,6 @@
#include "code\modules\antagonists\cult\cult_items.dm"
#include "code\modules\antagonists\cult\cult_structures.dm"
#include "code\modules\antagonists\cult\cult_turf_overlay.dm"
-#include "code\modules\antagonists\cult\ritual.dm"
#include "code\modules\antagonists\cult\rune_spawn_action.dm"
#include "code\modules\antagonists\cult\runes.dm"
#include "code\modules\antagonists\devil\devil.dm"
@@ -2144,7 +2146,6 @@
#include "code\modules\events\holiday\vday.dm"
#include "code\modules\events\holiday\xmas.dm"
#include "code\modules\events\wizard\aid.dm"
-#include "code\modules\events\wizard\curseditems.dm"
#include "code\modules\events\wizard\departmentrevolt.dm"
#include "code\modules\events\wizard\embeddies.dm"
#include "code\modules\events\wizard\fakeexplosion.dm"
@@ -3186,6 +3187,7 @@
#include "code\modules\reagents\reagent_containers\borghydro.dm"
#include "code\modules\reagents\reagent_containers\bottle.dm"
#include "code\modules\reagents\reagent_containers\chem_pack.dm"
+#include "code\modules\reagents\reagent_containers\concrete_bags.dm"
#include "code\modules\reagents\reagent_containers\dropper.dm"
#include "code\modules\reagents\reagent_containers\glass.dm"
#include "code\modules\reagents\reagent_containers\hypospray.dm"
@@ -3213,7 +3215,6 @@
#include "code\modules\religion\rites.dm"
#include "code\modules\requests\request.dm"
#include "code\modules\requests\requests_manager.dm"
-#include "code\modules\research\bepis.dm"
#include "code\modules\research\designs.dm"
#include "code\modules\research\destructive_analyzer.dm"
#include "code\modules\research\experimentor.dm"
diff --git a/tgui/packages/tgui/interfaces/Bepis.js b/tgui/packages/tgui/interfaces/Bepis.js
deleted file mode 100644
index 99718415ddc9..000000000000
--- a/tgui/packages/tgui/interfaces/Bepis.js
+++ /dev/null
@@ -1,123 +0,0 @@
-import { useBackend } from '../backend';
-import {
- Box,
- Button,
- Grid,
- LabeledList,
- NumberInput,
- Section,
-} from '../components';
-import { Window } from '../layouts';
-
-export const Bepis = (props, context) => {
- const { act, data } = useBackend(context);
- const { amount } = data;
- return (
-
-
-
- act('toggle_power')}
- />
- }
- >
- All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S.
- performs hundreds of tests a second using electrical and financial
- resources to invent new products, or discover new technologies
- otherwise overlooked for being too risky or too niche to produce!
-
- act('account_reset')}
- />
- }
- >
- Console is currently being operated by{' '}
- {data.account_owner ? data.account_owner : 'no one'}.
-
-
-
-
-
-
- {data.stored_cash}
-
-
- {data.accuracy_percentage}%
-
-
- {data.positive_cash_offset}
-
-
- {data.negative_cash_offset}
-
-
-
- act('amount', {
- amount: value,
- })
- }
- />
-
-
-
-
-
-
-
-
- Average technology cost: {data.mean_value}
-
- Current chance of Success: Est. {data.success_estimate}%
-
- {data.error_name && (
-
- Previous Failure Reason: Deposited cash value too low.
- Please insert more money for future success.
-
- )}
-
- act('begin_experiment')}
- content="Begin Testing"
- />
-
-
-
-
-
-
- );
-};
diff --git a/tgui/packages/tgui/interfaces/Orbit.js b/tgui/packages/tgui/interfaces/Orbit.js
deleted file mode 100644
index 91bf9d1f7929..000000000000
--- a/tgui/packages/tgui/interfaces/Orbit.js
+++ /dev/null
@@ -1,218 +0,0 @@
-import { createSearch } from 'common/string';
-import { multiline } from 'common/string';
-import { resolveAsset } from '../assets';
-import { useBackend, useLocalState } from '../backend';
-import {
- Box,
- Button,
- Divider,
- Flex,
- Icon,
- Input,
- Section,
-} from '../components';
-import { Window } from '../layouts';
-
-const PATTERN_NUMBER = / \(([0-9]+)\)$/;
-
-const searchFor = (searchText) =>
- createSearch(searchText, (thing) => thing.name);
-
-const compareString = (a, b) => (a < b ? -1 : a > b);
-
-const compareNumberedText = (a, b) => {
- const aName = a.name;
- const bName = b.name;
-
- // Check if aName and bName are the same except for a number at the end
- // e.g. Medibot (2) and Medibot (3)
- const aNumberMatch = aName.match(PATTERN_NUMBER);
- const bNumberMatch = bName.match(PATTERN_NUMBER);
-
- if (
- aNumberMatch &&
- bNumberMatch &&
- aName.replace(PATTERN_NUMBER, '') === bName.replace(PATTERN_NUMBER, '')
- ) {
- const aNumber = parseInt(aNumberMatch[1], 10);
- const bNumber = parseInt(bNumberMatch[1], 10);
-
- return aNumber - bNumber;
- }
-
- return compareString(aName, bName);
-};
-
-const BasicSection = (props, context) => {
- const { act } = useBackend(context);
- const { searchText, source, title } = props;
- const things = source.filter(searchFor(searchText));
- things.sort(compareNumberedText);
- return (
- source.length > 0 && (
-
- {things.map((thing) => (
-
- act('orbit', {
- ref: thing.ref,
- })
- }
- />
- ))}
-
- )
- );
-};
-
-const OrbitedButton = (props, context) => {
- const { act } = useBackend(context);
- const { color, thing } = props;
-
- return (
-
- act('orbit', {
- ref: thing.ref,
- })
- }
- >
- {thing.name}
- {thing.orbiters && (
-
- {'('}
- {thing.orbiters}{' '}
-
- {')'}
-
- )}
-
- );
-};
-
-export const Orbit = (props, context) => {
- const { act, data } = useBackend(context);
- const { alive, antagonists, auto_observe, dead, ghosts, misc, npcs } = data;
-
- const [searchText, setSearchText] = useLocalState(context, 'searchText', '');
-
- const collatedAntagonists = {};
- for (const antagonist of antagonists) {
- if (collatedAntagonists[antagonist.antag] === undefined) {
- collatedAntagonists[antagonist.antag] = [];
- }
- collatedAntagonists[antagonist.antag].push(antagonist);
- }
-
- const sortedAntagonists = Object.entries(collatedAntagonists);
- sortedAntagonists.sort((a, b) => {
- return compareString(a[0], b[0]);
- });
-
- const orbitMostRelevant = (searchText) => {
- for (const source of [
- sortedAntagonists.map(([_, antags]) => antags),
- alive,
- ghosts,
- dead,
- npcs,
- misc,
- ]) {
- const member = source
- .filter(searchFor(searchText))
- .sort(compareNumberedText)[0];
- if (member !== undefined) {
- act('orbit', { ref: member.ref });
- break;
- }
- }
- };
-
- return (
-
-
-
- {antagonists.length > 0 && (
-
- {sortedAntagonists.map(([name, antags]) => (
-
- {antags
- .filter(searchFor(searchText))
- .sort(compareNumberedText)
- .map((antag) => (
-
- ))}
-
- ))}
-
- )}
-
-
- {alive
- .filter(searchFor(searchText))
- .sort(compareNumberedText)
- .map((thing) => (
-
- ))}
-
-
-
- {ghosts
- .filter(searchFor(searchText))
- .sort(compareNumberedText)
- .map((thing) => (
-
- ))}
-
-
-
-
-
-
-
-
-
- );
-};
diff --git a/tgui/packages/tgui/interfaces/Orbit/OrbitContent.tsx b/tgui/packages/tgui/interfaces/Orbit/OrbitContent.tsx
new file mode 100644
index 000000000000..f3c59a75e189
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/Orbit/OrbitContent.tsx
@@ -0,0 +1,98 @@
+import { toTitleCase } from 'common/string';
+
+import { useBackend } from '../../backend';
+import { NoticeBox, Section, Stack, Table, Tooltip } from '../../components';
+
+import { getAntagCategories } from './helpers';
+import { AntagGroup, Observable, OrbitData } from './types';
+import { OrbitSection } from './OrbitSection';
+
+type ContentSection = {
+ content: Observable[];
+ title: string;
+ color?: string;
+};
+
+export const OrbitContent = (props, context) => {
+ const { act, data } = useBackend(context);
+ const { antagonists = [], critical = [] } = data;
+ const { searchText, autoObserve } = props;
+
+ let antagGroups: AntagGroup[] = [];
+ if (antagonists.length) {
+ antagGroups = getAntagCategories(antagonists);
+ }
+
+ const sections: readonly ContentSection[] = [
+ {
+ content: data.alive,
+ title: 'Alive',
+ color: 'good',
+ },
+ {
+ content: data.dead,
+ title: 'Dead',
+ },
+ {
+ content: data.ghosts,
+ title: 'Ghosts',
+ },
+ {
+ content: data.misc,
+ title: 'Misc',
+ },
+ {
+ content: data.npcs,
+ title: 'NPCs',
+ },
+ {
+ content: data.ships,
+ title: 'Ships',
+ },
+ ];
+
+ return (
+
+
+ {critical.map((crit) => (
+
+ act('orbit', { ref: crit.ref })}
+ >
+
+
+ {toTitleCase(crit.full_name)}
+ {crit.extra}
+
+
+
+
+ ))}
+
+ {antagGroups.map(([title, members]) => (
+
+ ))}
+
+ {sections.map((section) => (
+
+ ))}
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/Orbit/OrbitItem.tsx b/tgui/packages/tgui/interfaces/Orbit/OrbitItem.tsx
new file mode 100644
index 000000000000..957104afa8b9
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/Orbit/OrbitItem.tsx
@@ -0,0 +1,50 @@
+import { useBackend } from '../../backend';
+import { Stack, Button, Flex, Icon } from '../../components';
+
+import { capitalizeFirst } from 'common/string';
+
+import { getDisplayColor, getDisplayName } from './helpers';
+import { Antagonist, Observable, OrbitData } from './types';
+
+type Props = {
+ item: Observable | Antagonist;
+ autoObserve: boolean;
+ color: string | undefined;
+};
+
+export const OrbitItem = (props: Props, context) => {
+ const { item, autoObserve, color } = props;
+ const { full_name, icon, job, name, orbiters, ref } = item;
+
+ const { act, data } = useBackend(context);
+ const { orbiting } = data;
+
+ const selected = ref === orbiting?.ref;
+ const validIcon = !!job && !!icon && icon !== 'hudunknown';
+
+ return (
+ act('orbit', { auto_observe: autoObserve, ref })}
+ style={{
+ display: 'flex',
+ }}
+ >
+
+
+
+ {capitalizeFirst(getDisplayName(full_name, name))}
+
+ {!!orbiters && (
+
+
+ {orbiters}
+
+ )}
+
+ {selected && }
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/Orbit/OrbitSection.tsx b/tgui/packages/tgui/interfaces/Orbit/OrbitSection.tsx
new file mode 100644
index 000000000000..d27d9080e08d
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/Orbit/OrbitSection.tsx
@@ -0,0 +1,65 @@
+import { Collapsible, Flex, Tooltip } from '../../components';
+import { isJobOrNameMatch } from './helpers';
+import { OrbitItem } from './OrbitItem';
+import { OrbitTooltip } from './OrbitTooltip';
+import { Observable } from './types';
+
+type Props = {
+ color?: string;
+ section: Observable[];
+ title: string;
+ searchQuery: string;
+ autoObserve: boolean;
+};
+
+/**
+ * Displays a collapsible with a map of observable items.
+ * Filters the results if there is a provided search query.
+ */
+export const OrbitSection = (props: Props) => {
+ const { color, section = [], title, searchQuery, autoObserve } = props;
+
+ const filteredSection = section.filter((observable) =>
+ isJobOrNameMatch(observable, searchQuery)
+ );
+
+ if (!filteredSection.length) {
+ return null;
+ }
+
+ return (
+
+
+ {filteredSection.map((item) => {
+ const content = (
+
+ );
+
+ if (!item.health && !item.extra) {
+ return content;
+ }
+
+ return (
+ }
+ key={item.ref}
+ position="bottom-start"
+ >
+ {content}
+
+ );
+ })}
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/Orbit/OrbitTooltip.tsx b/tgui/packages/tgui/interfaces/Orbit/OrbitTooltip.tsx
new file mode 100644
index 000000000000..0a941dcb0fb5
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/Orbit/OrbitTooltip.tsx
@@ -0,0 +1,57 @@
+import { LabeledList, NoticeBox } from '../../components';
+import { Antagonist, Observable } from './types';
+
+type Props = {
+ item: Observable | Antagonist;
+};
+
+/** Displays some info on the mob as a tooltip. */
+export const OrbitTooltip = (props: Props) => {
+ const { item } = props;
+ const { extra, name, full_name, health, job } = item;
+
+ let antag;
+ if ('antag' in item) {
+ antag = item.antag;
+ }
+
+ const extraInfo = extra?.split(':');
+ const displayHealth = !!health && health >= 0 ? `${health}%` : 'Critical';
+ const showAFK = 'client' in item && !item.client;
+
+ return (
+ <>
+
+ Last Known Data
+
+
+ {extraInfo ? (
+
+ {extraInfo[1]}
+
+ ) : (
+ <>
+ {!!name && (
+ {name}
+ )}
+ {!!full_name && (
+
+ {full_name}
+
+ )}
+ {!!job && {job}}
+ {!!antag && (
+ {antag}
+ )}
+ {!!health && (
+
+ {displayHealth}
+
+ )}
+ >
+ )}
+ {showAFK && Away}
+
+ >
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/Orbit/constants.ts b/tgui/packages/tgui/interfaces/Orbit/constants.ts
new file mode 100644
index 000000000000..1edadc9bfe45
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/Orbit/constants.ts
@@ -0,0 +1,8 @@
+export const HEALTH = {
+ Good: 69, // nice
+ Average: 19,
+ Bad: 0,
+ Crit: -30,
+ Dead: -100,
+ Ruined: -200,
+} as const;
diff --git a/tgui/packages/tgui/interfaces/Orbit/helpers.ts b/tgui/packages/tgui/interfaces/Orbit/helpers.ts
new file mode 100644
index 000000000000..7046f784cd6c
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/Orbit/helpers.ts
@@ -0,0 +1,119 @@
+import { createSearch } from '../../../common/string';
+
+import { HEALTH } from './constants';
+import { AntagGroup, Antagonist, Observable } from './types';
+
+const PATTERN_NUMBER = / \(([0-9]+)\)$/;
+
+/** Return a map of strings with each antag in its antag_category */
+export const getAntagCategories = (antagonists: Antagonist[]): AntagGroup[] => {
+ const categories = new Map();
+
+ for (const player of antagonists) {
+ const { antag_group } = player;
+
+ if (!categories.has(antag_group)) {
+ categories.set(antag_group, []);
+ }
+ categories.get(antag_group)!.push(player);
+ }
+
+ const sorted = Array.from(categories.entries()).sort((a, b) => {
+ const lowerA = a[0].toLowerCase();
+ const lowerB = b[0].toLowerCase();
+
+ if (lowerA < lowerB) return -1;
+ if (lowerA > lowerB) return 1;
+ return 0;
+ });
+
+ return sorted;
+};
+
+/** Returns a disguised name in case the person is wearing someone else's ID */
+export const getDisplayName = (
+ full_name: string,
+ nickname?: string
+): string => {
+ if (!nickname) {
+ return full_name;
+ }
+
+ return nickname;
+};
+
+/** Displays color for buttons based on the health or orbiter count. */
+export const getDisplayColor = (
+ item: Observable,
+ override?: string
+): string => {
+ const { job, health, orbiters } = item;
+
+ // Things like blob camera, etc
+ if (typeof health !== 'number') {
+ return override ? 'good' : 'grey';
+ }
+
+ // Players that are AFK
+ if ('client' in item && !item.client) {
+ return 'grey';
+ }
+
+ return getHealthColor(health);
+};
+
+/** Returns the display color for certain health percentages */
+const getHealthColor = (health: number): string => {
+ switch (true) {
+ case health > HEALTH.Good:
+ return 'good';
+ case health > HEALTH.Average:
+ return 'average';
+ default:
+ return 'bad';
+ }
+};
+
+/** Checks if a full name or job title matches the search. */
+export const isJobOrNameMatch = (
+ observable: Observable,
+ searchQuery: string
+): boolean => {
+ if (!searchQuery) return true;
+
+ const { full_name, job } = observable;
+
+ return (
+ full_name?.toLowerCase().includes(searchQuery?.toLowerCase()) ||
+ job?.toLowerCase().includes(searchQuery?.toLowerCase()) ||
+ false
+ );
+};
+
+export const searchFor = (searchText) =>
+ createSearch(searchText, (thing: Observable) => thing.full_name);
+
+export const compareString = (a, b) => (a < b ? -1 : a > b);
+
+export const compareNumberedText = (a, b) => {
+ const aName = a.name;
+ const bName = b.name;
+
+ // Check if aName and bName are the same except for a number at the end
+ // e.g. Medibot (2) and Medibot (3)
+ const aNumberMatch = aName.match(PATTERN_NUMBER);
+ const bNumberMatch = bName.match(PATTERN_NUMBER);
+
+ if (
+ aNumberMatch &&
+ bNumberMatch &&
+ aName.replace(PATTERN_NUMBER, '') === bName.replace(PATTERN_NUMBER, '')
+ ) {
+ const aNumber = parseInt(aNumberMatch[1], 10);
+ const bNumber = parseInt(bNumberMatch[1], 10);
+
+ return aNumber - bNumber;
+ }
+
+ return compareString(aName, bName);
+};
diff --git a/tgui/packages/tgui/interfaces/Orbit/index.tsx b/tgui/packages/tgui/interfaces/Orbit/index.tsx
new file mode 100644
index 000000000000..f0854f7bfa69
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/Orbit/index.tsx
@@ -0,0 +1,86 @@
+import { multiline } from '../../../common/string';
+import { useBackend, useLocalState } from '../../backend';
+import { Button, Divider, Flex, Icon, Input, Section } from '../../components';
+import { Window } from '../../layouts';
+
+import { searchFor } from './helpers';
+import { OrbitData } from './types';
+import { OrbitContent } from './OrbitContent';
+
+export const Orbit = (props, context) => {
+ const { act, data } = useBackend(context);
+
+ const [searchText, setSearchText] = useLocalState(context, 'searchText', '');
+ const [autoObserve, setAutoObserve] = useLocalState(
+ context,
+ 'autoObserve',
+ false
+ );
+
+ const orbitMostRelevant = () => {
+ const mostRelevant = [
+ data.antagonists,
+ data.alive,
+ data.ghosts,
+ data.dead,
+ data.npcs,
+ data.misc,
+ data.ships,
+ ]
+ .flat()
+ .filter(searchFor(searchText))
+ .sort()[0];
+
+ if (mostRelevant !== undefined) {
+ act('orbit', { ref: mostRelevant.ref });
+ }
+ };
+
+ return (
+
+
+
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/Orbit/types.ts b/tgui/packages/tgui/interfaces/Orbit/types.ts
new file mode 100644
index 000000000000..4912ae10db4c
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/Orbit/types.ts
@@ -0,0 +1,38 @@
+import { BooleanLike } from '../../../common/react';
+
+export type Antagonist = Observable & { antag: string; antag_group: string };
+
+export type AntagGroup = [string, Antagonist[]];
+
+export type OrbitData = {
+ alive: Observable[];
+ antagonists: Antagonist[];
+ critical: Critical[];
+ dead: Observable[];
+ ghosts: Observable[];
+ misc: Observable[];
+ npcs: Observable[];
+ ships: Observable[];
+ orbiting: Observable | null;
+ autoObserve: boolean;
+};
+
+export type Observable = {
+ full_name: string;
+ ref: string;
+ // Optionals
+} & Partial<{
+ client: BooleanLike;
+ extra: string;
+ health: number;
+ icon: string;
+ job: string;
+ name: string;
+ orbiters: number;
+}>;
+
+type Critical = {
+ extra: string;
+ full_name: string;
+ ref: string;
+};
diff --git a/tools/UpdatePaths/Scripts/2776_cultbegone.txt b/tools/UpdatePaths/Scripts/2776_cultbegone.txt
index f2297a7003e7..a4da9dcb3d80 100644
--- a/tools/UpdatePaths/Scripts/2776_cultbegone.txt
+++ b/tools/UpdatePaths/Scripts/2776_cultbegone.txt
@@ -32,12 +32,12 @@
/obj/item/toy/plush/narplush : /obj/item/toy/plush/lizardplushie
/obj/item/bedsheet/cult : /obj/item/bedsheet/dorms
-/obj/item/melee/cultblade : /obj/item/claymore/weak
-/obj/item/melee/cultblade/dagger : /obj/item/kitchen/knife/combat
-/obj/item/melee/cultblade/ghost : /obj/item/kitchen/knife/combat
-/obj/item/toy/toy_dagger : /obj/item/kitchen/knife
-/obj/item/kitchen/knife/bloodletter : /obj/item/kitchen/knife/combat
-/obj/item/kitchen/ritual : /obj/item/kitchen/knife/combat
+/obj/item/melee/cultblade : /obj/item/melee/sword/claymore/weak
+/obj/item/melee/cultblade/dagger : /obj/item/melee/knife/combat
+/obj/item/melee/cultblade/ghost : /obj/item/melee/knife/combat
+/obj/item/toy/toy_dagger : /obj/item/melee/knife/kitcken
+/obj/item/melee/knife/kitcken/bloodletter : /obj/item/melee/knife/combat
+/obj/item/kitchen/ritual : /obj/item/melee/knife/combat
/obj/item/restraints/legcuffs/bola/cult : /obj/item/restraints/legcuffs/bola
/obj/effect/rune : @DELETE
diff --git a/tools/UpdatePaths/Scripts/2932_melee.txt b/tools/UpdatePaths/Scripts/2932_melee.txt
new file mode 100644
index 000000000000..60b81ff02b18
--- /dev/null
+++ b/tools/UpdatePaths/Scripts/2932_melee.txt
@@ -0,0 +1,17 @@
+/obj/item/kitchen/knife : /obj/item/melee/knife/kitchen {@OLD}
+/obj/item/kitchen/knife/plastic : /obj/item/melee/knife/plastic {@OLD}
+/obj/item/kitchen/knife/letter_opener : /obj/item/melee/knife/letter_opener {@OLD}
+/obj/item/kitchen/knife/combat : /obj/item/melee/knife/combat {@OLD}
+/obj/item/kitchen/knife/combat/bone : /obj/item/melee/knife/bone {@OLD}
+/obj/item/kitchen/knife/combat/survival : /obj/item/melee/knife/survival {@OLD}
+/obj/item/kitchen/knife/switchblade : /obj/item/melee/knife/switchblade {@OLD}
+/obj/item/kitchen/knife/hunting : obj/item/melee/knife/hunting {@OLD}
+/obj/item/kitchen/knife/shiv : obj/item/melee/knife/shiv {@OLD}
+
+/obj/item/spear : /obj/item/melee/spear {@OLD}
+/obj/item/spear/explosive : /obj/item/melee/spear/explosive {@OLD}
+/obj/item/spear/bonespear : /obj/item/melee/spear/bone {@OLD}
+/obj/item/melee/spear/bonespear : /obj/item/melee/spear/bone {@OLD}
+
+/obj/item/claymore : /obj/item/melee/sword/claymore {@OLD}
+/obj/item/claymore/bone : /obj/item/melee/sword/bone {@OLD}
|