diff --git a/_maps/RandomRuins/AnywhereRuins/fountain_hall.dmm b/_maps/RandomRuins/AnywhereRuins/fountain_hall.dmm
index bddadc7b0c..f1b0582ec3 100644
--- a/_maps/RandomRuins/AnywhereRuins/fountain_hall.dmm
+++ b/_maps/RandomRuins/AnywhereRuins/fountain_hall.dmm
@@ -2,156 +2,172 @@
"a" = (
/turf/template_noop,
/area/template_noop)
-"b" = (
-/turf/closed/wall/mineral/cult,
-/area/ruin/unpowered)
"c" = (
/obj/structure/healingfountain,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/purple,
/area/ruin/unpowered)
"d" = (
/obj/structure/fluff/divine/conduit,
-/turf/open/floor/engine/cult,
+/turf/open/floor/mineral/plasma,
/area/ruin/unpowered)
"e" = (
/obj/structure/sacrificealtar,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/purple,
/area/ruin/unpowered)
"f" = (
-/turf/open/floor/engine/cult,
+/mob/living/simple_animal/butterfly,
+/turf/open/floor/carpet/purple,
/area/ruin/unpowered)
"g" = (
/mob/living/simple_animal/butterfly,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/red,
/area/ruin/unpowered)
"h" = (
/obj/structure/fans/tiny/invisible,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/red,
+/area/ruin/unpowered)
+"u" = (
+/turf/open/floor/carpet/purple,
+/area/ruin/unpowered)
+"G" = (
+/turf/closed/wall/mineral/cult{
+ sheet_amount = 0
+ },
+/area/ruin/unpowered)
+"J" = (
+/mob/living/simple_animal/butterfly,
+/turf/open/floor/carpet/royalblack,
+/area/ruin/unpowered)
+"T" = (
+/turf/open/floor/carpet/royalblack,
+/area/ruin/unpowered)
+"U" = (
+/turf/open/floor/carpet/red,
/area/ruin/unpowered)
(1,1,1) = {"
a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
"}
(2,1,1) = {"
a
-b
+G
d
-f
-f
+U
+T
+T
+T
+J
+T
+T
+T
+T
+T
+T
d
-f
-f
-d
-f
-f
-d
-f
-f
-d
-b
+G
"}
(3,1,1) = {"
-b
-b
+G
+G
e
g
-f
-f
+U
+d
g
-f
-f
-f
-f
-g
-f
-g
-f
-b
+U
+d
+U
+U
+d
+U
+U
+u
+G
"}
(4,1,1) = {"
-b
+G
c
f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
+U
+T
+u
+T
+T
+u
+T
+T
+u
+T
+T
+T
h
"}
(5,1,1) = {"
-b
-b
+G
+G
e
-f
-f
-f
-f
g
-f
-f
-f
-f
-f
-f
-f
-b
+U
+d
+g
+U
+d
+U
+U
+d
+U
+U
+u
+G
"}
(6,1,1) = {"
a
-b
+G
d
-g
-f
+U
+T
+T
+T
+J
+T
+T
+T
+T
+T
+T
d
-f
-f
-d
-f
-f
-d
-f
-g
-d
-b
+G
"}
(7,1,1) = {"
a
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
+G
"}
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
index a43e6129b7..7e9ce9db68 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm
@@ -42,6 +42,10 @@
"ak" = (
/obj/structure/toilet,
/obj/effect/turf_decal/sand,
+/obj/item/reagent_containers/food/drinks/beer/light{
+ pixel_x = 9
+ },
+/obj/effect/decal/cleanable/vomit/old,
/turf/open/floor/plating,
/area/ruin/powered/beach)
"al" = (
@@ -191,7 +195,9 @@
/turf/open/floor/plasteel,
/area/ruin/powered/beach)
"aM" = (
-/obj/structure/reagent_dispensers/beerkeg,
+/obj/structure/reagent_dispensers/beerkeg{
+ reagent_id = /datum/reagent/consumable/ethanol/beer/light
+ },
/turf/open/floor/wood,
/area/ruin/powered/beach)
"aN" = (
@@ -371,7 +377,7 @@
/turf/open/floor/plating/beach/sand,
/area/ruin/powered/beach)
"bP" = (
-/obj/item/reagent_containers/food/drinks/beer,
+/obj/item/reagent_containers/food/drinks/beer/light,
/turf/open/floor/plating/beach/sand,
/area/ruin/powered/beach)
"bQ" = (
@@ -463,6 +469,7 @@
/obj/item/storage/box/drinkingglasses,
/obj/item/storage/box/beakers,
/obj/item/storage/box/donkpockets,
+/obj/item/soap,
/turf/open/floor/plating,
/area/ruin/powered/beach)
"hY" = (
@@ -537,6 +544,14 @@
},
/turf/open/floor/pod/light,
/area/ruin/powered/beach)
+"rV" = (
+/obj/effect/turf_decal/sand,
+/obj/item/reagent_containers/food/drinks/beer/light{
+ pixel_y = -3;
+ pixel_x = -9
+ },
+/turf/open/floor/plating,
+/area/ruin/powered/beach)
"sy" = (
/obj/effect/turf_decal/caution{
dir = 4
@@ -590,6 +605,11 @@
/obj/effect/turf_decal/sand,
/turf/open/floor/pod/light,
/area/ruin/powered/beach)
+"Gu" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/drinks/beer/light,
+/turf/open/floor/wood,
+/area/ruin/powered/beach)
"HC" = (
/obj/structure/rack,
/obj/item/clothing/shoes/sandal,
@@ -964,7 +984,7 @@ ar
ar
ar
ar
-ar
+bP
ar
bR
bT
@@ -984,7 +1004,7 @@ as
aw
aC
aC
-aP
+Gu
aW
aK
Ga
@@ -1108,7 +1128,7 @@ aa
aa
bW
ak
-au
+rV
aj
aE
aC
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
index 862c745f81..6feb378515 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
@@ -188,13 +188,13 @@
/area/ruin/unpowered/xenonest)
"aT" = (
/obj/structure/alien/weeds,
-/obj/item/twohanded/required/chainsaw,
+/obj/item/chainsaw,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aU" = (
/obj/structure/alien/weeds,
/obj/structure/bed/nest,
-/obj/item/twohanded/fireaxe/boneaxe,
+/obj/item/fireaxe/boneaxe,
/obj/item/clothing/head/helmet/gladiator,
/obj/item/clothing/mask/facehugger/impregnated,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
@@ -219,6 +219,7 @@
/obj/structure/alien/weeds,
/obj/effect/decal/cleanable/blood/gibs,
/mob/living/simple_animal/hostile/alien/drone,
+/obj/structure/alien/weeds/node,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aZ" = (
@@ -535,6 +536,11 @@
/obj/effect/mob_spawn/alien/corpse/humanoid/queen,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
+"wA" = (
+/obj/structure/alien/weeds,
+/obj/structure/alien/weeds/node,
+/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
"yf" = (
/obj/structure/alien/weeds/node,
/mob/living/simple_animal/hostile/alien/sentinel,
@@ -551,6 +557,12 @@
/obj/effect/mob_spawn/alien/corpse/humanoid/drone,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
+"QG" = (
+/obj/structure/alien/weeds,
+/obj/structure/bed/nest,
+/obj/structure/alien/weeds/node,
+/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
+/area/ruin/unpowered/xenonest)
"Uh" = (
/obj/structure/alien/weeds,
/obj/item/xenos_claw,
@@ -683,7 +695,7 @@ ac
ac
aj
ac
-am
+QG
ac
ac
ac
@@ -800,7 +812,7 @@ ac
ac
ac
ac
-ag
+wA
ag
ag
ar
@@ -884,7 +896,7 @@ aa
(7,1,1) = {"
ab
ac
-ag
+wA
ag
ag
ag
@@ -917,7 +929,7 @@ ac
ac
ZT
ac
-ag
+wA
ag
ac
ab
@@ -1349,7 +1361,7 @@ ar
lG
ag
ag
-ag
+wA
ad
ag
ag
@@ -1555,7 +1567,7 @@ ag
ac
aF
ag
-ag
+ar
ag
ag
ar
@@ -1603,7 +1615,7 @@ ao
ah
ac
ag
-ag
+wA
ag
ag
pE
@@ -1742,7 +1754,7 @@ ag
ag
ag
ag
-ac
+aw
ar
ag
bD
@@ -1791,9 +1803,9 @@ ac
ac
ac
ac
+wA
ag
-ag
-ac
+aw
ar
ag
bD
@@ -1828,7 +1840,7 @@ ac
ac
ag
Uh
-ag
+wA
aZ
be
bo
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
index 60ae409ea2..527a328563 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm
@@ -517,7 +517,7 @@
/turf/open/floor/plasteel,
/area/ruin/powered/animal_hospital)
"bt" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/turf/open/floor/plasteel,
/area/ruin/powered/animal_hospital)
"bu" = (
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm
index 80ad86e3c5..39ecc54ec7 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm
@@ -724,7 +724,7 @@
/area/lavaland/surface/outdoors)
"bP" = (
/obj/structure/stone_tile/block,
-/obj/item/twohanded/spear,
+/obj/item/spear,
/obj/effect/mapping_helpers/no_lava,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
@@ -896,7 +896,7 @@
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"ck" = (
-/obj/item/twohanded/spear,
+/obj/item/spear,
/obj/structure/stone_tile{
dir = 4
},
@@ -910,7 +910,7 @@
/obj/structure/stone_tile/cracked{
dir = 8
},
-/obj/item/twohanded/spear,
+/obj/item/spear,
/obj/effect/mapping_helpers/no_lava,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
@@ -1014,7 +1014,7 @@
/obj/structure/stone_tile/cracked{
dir = 1
},
-/obj/item/twohanded/spear,
+/obj/item/spear,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/ash_walkers)
"cA" = (
@@ -1058,7 +1058,7 @@
dir = 1
},
/obj/structure/table/wood,
-/obj/item/twohanded/spear,
+/obj/item/spear,
/obj/item/storage/belt,
/turf/open/indestructible/boss,
/area/ruin/unpowered/ash_walkers)
@@ -1100,7 +1100,7 @@
dir = 4
},
/obj/structure/table/wood,
-/obj/item/twohanded/spear,
+/obj/item/spear,
/obj/item/scythe,
/turf/open/indestructible/boss,
/area/ruin/unpowered/ash_walkers)
@@ -1128,7 +1128,7 @@
dir = 4
},
/obj/structure/table/wood,
-/obj/item/twohanded/spear,
+/obj/item/spear,
/obj/item/clothing/head/helmet/roman/legionnaire,
/turf/open/indestructible/boss,
/area/ruin/unpowered/ash_walkers)
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
index b71b6838b0..c7ae4c6eb4 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
@@ -203,6 +203,12 @@
/area/ruin/powered/snow_biodome)
"aR" = (
/obj/structure/flora/tree/pine/xmas,
+/obj/item/a_gift{
+ pixel_y = -5
+ },
+/obj/item/a_gift{
+ pixel_x = 6
+ },
/turf/open/floor/plating/asteroid/snow{
initial_gas_mix = "o2=22;n2=82;TEMP=180"
},
@@ -295,6 +301,12 @@
},
/turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome)
+"gy" = (
+/obj/item/toy/snowball,
+/turf/open/floor/plating/asteroid/snow{
+ initial_gas_mix = "o2=22;n2=82;TEMP=180"
+ },
+/area/ruin/powered/snow_biodome)
"gz" = (
/obj/structure/chair/stool,
/turf/open/floor/pod/dark,
@@ -316,6 +328,13 @@
},
/turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome)
+"rl" = (
+/obj/structure/flora/bush,
+/obj/item/toy/snowball,
+/turf/open/floor/plating/asteroid/snow{
+ initial_gas_mix = "o2=22;n2=82;TEMP=180"
+ },
+/area/ruin/powered/snow_biodome)
"tb" = (
/obj/effect/mapping_helpers/no_lava,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
@@ -361,13 +380,18 @@
/obj/structure/closet/secure_closet/freezer/fridge,
/turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome)
+"IQ" = (
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/drinks/mug,
+/turf/open/floor/wood,
+/area/ruin/powered/snow_biodome)
"JZ" = (
/obj/structure/table,
/obj/machinery/microwave,
/turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome)
"KS" = (
-/obj/item/twohanded/required/chainsaw,
+/obj/item/chainsaw,
/obj/structure/closet,
/obj/machinery/light/small{
dir = 4
@@ -380,6 +404,7 @@
/area/ruin/powered/snow_biodome)
"Oj" = (
/obj/structure/table,
+/obj/item/reagent_containers/food/drinks/mug,
/turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome)
"PD" = (
@@ -407,6 +432,7 @@
"QK" = (
/obj/structure/table,
/obj/item/storage/fancy/cigarettes/cigpack_carp,
+/obj/item/reagent_containers/food/drinks/mug,
/turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome)
"QN" = (
@@ -417,6 +443,13 @@
/obj/effect/decal/cleanable/oil,
/turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome)
+"SL" = (
+/obj/structure/flora/grass/both,
+/obj/item/toy/snowball,
+/turf/open/floor/plating/asteroid/snow{
+ initial_gas_mix = "o2=22;n2=82;TEMP=180"
+ },
+/area/ruin/powered/snow_biodome)
"Ub" = (
/obj/structure/filingcabinet,
/turf/open/floor/pod/dark,
@@ -577,7 +610,7 @@ aB
ak
ak
ak
-aI
+rl
by
ak
ak
@@ -740,7 +773,7 @@ aI
az
ak
ak
-ak
+gy
ak
ak
aI
@@ -916,7 +949,7 @@ Wg
ag
ah
as
-aw
+IQ
aA
aA
at
@@ -924,7 +957,7 @@ aM
aP
ak
ak
-aQ
+SL
ak
ak
az
@@ -1077,7 +1110,7 @@ Wg
an
Wg
ay
-ak
+gy
ak
ak
ak
@@ -1114,6 +1147,7 @@ aI
ak
ap
ak
+gy
ak
ak
ak
@@ -1121,8 +1155,7 @@ ak
ak
ak
ak
-ak
-ak
+gy
ak
aI
ak
@@ -1240,7 +1273,7 @@ ak
ak
az
ak
-ak
+gy
ak
bB
ak
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm
index df9620cb67..a14a8d3a13 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm
@@ -11,7 +11,7 @@
"d" = (
/turf/closed/wall/rust,
/area/ruin/unpowered)
-"e" = (
+"f" = (
/obj/structure/mirror{
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
icon_state = "mirror_broke";
@@ -22,17 +22,6 @@
/obj/effect/decal/cleanable/blood,
/turf/open/floor/plating,
/area/ruin/unpowered)
-"f" = (
-/obj/structure/mirror{
- desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
- icon_state = "mirror_broke";
- pixel_x = 28;
- broken = 1
- },
-/turf/open/floor/plating{
- icon_state = "panelscorched"
- },
-/area/ruin/unpowered)
"g" = (
/obj/effect/decal/cleanable/blood/tracks,
/obj/structure/mirror{
@@ -58,11 +47,12 @@
/obj/structure/mirror{
desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
icon_state = "mirror_broke";
- pixel_y = 28;
+ pixel_x = 28;
broken = 1
},
-/obj/item/kitchen/knife/envy,
-/turf/open/floor/plating,
+/turf/open/floor/plating{
+ icon_state = "panelscorched"
+ },
/area/ruin/unpowered)
"l" = (
/obj/structure/mirror{
@@ -106,6 +96,16 @@
/obj/effect/mapping_helpers/no_lava,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
+"T" = (
+/obj/structure/mirror{
+ desc = "This mirror has been shattered. It looks like the bad luck energies spilling from it are taking immediate effect on your surroundings!";
+ icon_state = "mirror_broke";
+ pixel_y = 28;
+ broken = 1
+ },
+/obj/item/kitchen/knife/envy,
+/turf/open/floor/plating,
+/area/ruin/unpowered)
(1,1,1) = {"
a
@@ -125,14 +125,8 @@ a
a
a
a
-a
-a
-a
"}
(2,1,1) = {"
-a
-a
-c
c
c
c
@@ -167,9 +161,6 @@ d
d
d
d
-d
-d
-d
c
a
"}
@@ -178,16 +169,13 @@ c
c
d
d
-d
-e
+f
g
g
g
m
m
m
-m
-m
o
m
j
@@ -201,14 +189,11 @@ d
d
d
d
-d
h
h
i
i
i
-i
-i
h
i
i
@@ -224,10 +209,7 @@ d
d
d
d
-d
-k
-i
-i
+T
i
i
i
@@ -245,12 +227,9 @@ d
d
d
d
-d
i
i
i
-j
-i
n
i
i
@@ -266,8 +245,7 @@ c
c
d
d
-d
-f
+k
j
l
l
@@ -276,8 +254,6 @@ l
l
l
l
-l
-l
j
d
c
@@ -299,9 +275,6 @@ d
d
d
d
-d
-d
-d
c
a
"}
@@ -322,8 +295,5 @@ c
c
c
c
-c
-c
-c
a
"}
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm
index d587d19b97..70ffdc85cd 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm
@@ -20,7 +20,7 @@
/turf/open/floor/plasteel/freezer,
/area/ruin/powered/gluttony)
"h" = (
-/obj/item/veilrender/vealrender,
+/obj/item/trash/boritos,
/turf/open/floor/plasteel/freezer,
/area/ruin/powered/gluttony)
"i" = (
@@ -65,6 +65,7 @@
/obj/machinery/light/small{
dir = 1
},
+/obj/item/trash/plate/alt,
/turf/open/floor/plasteel/freezer,
/area/ruin/powered/gluttony)
"v" = (
@@ -84,6 +85,28 @@
},
/turf/open/floor/plasteel/freezer,
/area/ruin/powered/gluttony)
+"B" = (
+/obj/item/veilrender/vealrender,
+/turf/open/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"E" = (
+/obj/machinery/light/small,
+/obj/item/trash/cheesie,
+/turf/open/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"G" = (
+/obj/item/trash/waffles,
+/turf/open/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"L" = (
+/obj/machinery/light/small,
+/obj/item/trash/plate/alt,
+/turf/open/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
+"N" = (
+/obj/item/trash/cheesie,
+/turf/open/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
"R" = (
/turf/closed/indestructible/riveted/uranium,
/area/ruin/powered/gluttony)
@@ -92,6 +115,10 @@
/obj/structure/fans/tiny/invisible,
/turf/open/floor/plasteel/freezer,
/area/ruin/powered/gluttony)
+"Z" = (
+/obj/item/trash/plate/alt,
+/turf/open/floor/plasteel/freezer,
+/area/ruin/powered/gluttony)
(1,1,1) = {"
a
@@ -191,7 +218,7 @@ b
b
c
R
-h
+j
i
o
R
@@ -213,9 +240,9 @@ b
b
c
R
-i
-i
-v
+h
+G
+L
R
c
b
@@ -258,7 +285,7 @@ c
c
R
t
-i
+N
m
R
c
@@ -305,10 +332,10 @@ g
g
i
p
-i
+G
z
l
-i
+Z
R
c
b
@@ -324,10 +351,10 @@ g
g
g
g
+B
n
i
-i
-i
+h
i
i
i
@@ -346,12 +373,12 @@ r
g
g
g
-i
+N
g
i
l
A
-i
+Z
q
R
c
@@ -368,7 +395,7 @@ R
R
R
g
-i
+h
v
R
R
@@ -391,7 +418,7 @@ c
R
r
i
-i
+q
R
c
c
@@ -435,7 +462,7 @@ c
R
j
i
-v
+E
R
c
b
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
index df450b9803..671fdd54d6 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
@@ -20,9 +20,7 @@
/area/ruin/powered/greed)
"f" = (
/obj/structure/cursed_slot_machine,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/black,
/area/ruin/powered/greed)
"g" = (
/obj/structure/table/wood/poker,
@@ -41,11 +39,6 @@
icon_state = "carpetsymbol"
},
/area/ruin/powered/greed)
-"i" = (
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
-/area/ruin/powered/greed)
"j" = (
/obj/structure/table/wood/poker,
/obj/item/coin/adamantine,
@@ -57,28 +50,28 @@
/obj/machinery/computer/arcade/battle{
set_obj_flags = "EMAGGED"
},
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/black,
/area/ruin/powered/greed)
"l" = (
/obj/item/coin/gold,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/black,
/area/ruin/powered/greed)
"m" = (
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/black,
/area/ruin/powered/greed)
"n" = (
/obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c1000,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet,
/area/ruin/powered/greed)
"o" = (
/obj/item/storage/bag/money,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/black,
/area/ruin/powered/greed)
"p" = (
/obj/structure/table/wood/poker,
/obj/item/stack/ore/gold,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet,
/area/ruin/powered/greed)
"q" = (
/obj/structure/table/wood/poker,
@@ -88,19 +81,19 @@
brightness = 3;
dir = 8
},
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet,
/area/ruin/powered/greed)
"r" = (
/obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c500,
/obj/item/stack/spacecash/c100,
/obj/item/stack/spacecash/c1000,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet,
/area/ruin/powered/greed)
"s" = (
/obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c200,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet,
/area/ruin/powered/greed)
"u" = (
/obj/structure/table/wood/poker,
@@ -110,25 +103,30 @@
/obj/machinery/light/small{
dir = 4
},
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet,
/area/ruin/powered/greed)
"v" = (
/obj/item/coin/gold,
/obj/machinery/light/small,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/black,
/area/ruin/powered/greed)
"w" = (
/obj/item/storage/bag/money,
/obj/machinery/light/small,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/black,
+/area/ruin/powered/greed)
+"H" = (
+/turf/open/floor/carpet/purple,
/area/ruin/powered/greed)
"J" = (
/obj/machinery/door/airlock/gold,
/obj/structure/fans/tiny/invisible,
-/turf/open/floor/engine/cult,
+/turf/open/floor/carpet/purple,
/area/ruin/powered/greed)
"W" = (
-/turf/closed/wall/mineral/cult,
+/turf/closed/wall/mineral/cult{
+ sheet_amount = 0
+ },
/area/ruin/powered/greed)
(1,1,1) = {"
@@ -337,7 +335,7 @@ a
c
W
f
-i
+m
m
l
m
@@ -345,7 +343,7 @@ o
m
m
m
-m
+H
J
a
a
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm
index b66fbdf3d5..e582f6e9ce 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm
@@ -21,6 +21,7 @@
"f" = (
/obj/structure/table/wood,
/obj/item/storage/box/cups,
+/obj/item/reagent_containers/food/snacks/lollipop,
/turf/open/floor/wood{
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
@@ -181,11 +182,19 @@
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
/area/ruin/unpowered)
+"B" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/trash/candy,
+/turf/open/floor/wood{
+ initial_gas_mix = "o2=14;n2=23;TEMP=300"
+ },
+/area/ruin/unpowered)
"C" = (
/obj/structure/chair/wood/wings{
dir = 4
},
/obj/effect/decal/cleanable/dirt,
+/obj/item/reagent_containers/food/snacks/candy,
/turf/open/floor/plating{
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
@@ -214,6 +223,7 @@
/area/ruin/unpowered)
"G" = (
/obj/structure/table/wood,
+/obj/item/reagent_containers/food/snacks/lollipop,
/turf/open/floor/wood{
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
@@ -288,6 +298,35 @@
initial_gas_mix = "o2=14;n2=23;TEMP=300"
},
/area/ruin/unpowered)
+"R" = (
+/obj/structure/table/wood,
+/obj/effect/spawner/lootdrop/pizzaparty,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/reagent_containers/food/snacks/candy,
+/turf/open/floor/wood{
+ initial_gas_mix = "o2=14;n2=23;TEMP=300"
+ },
+/area/ruin/unpowered)
+"V" = (
+/obj/item/reagent_containers/food/snacks/gumball,
+/turf/open/floor/wood{
+ initial_gas_mix = "o2=14;n2=23;TEMP=300"
+ },
+/area/ruin/unpowered)
+"X" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/toy/snappop,
+/turf/open/floor/wood{
+ initial_gas_mix = "o2=14;n2=23;TEMP=300"
+ },
+/area/ruin/unpowered)
+"Z" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/reagent_containers/food/snacks/gumball,
+/turf/open/floor/wood{
+ initial_gas_mix = "o2=14;n2=23;TEMP=300"
+ },
+/area/ruin/unpowered)
(1,1,1) = {"
a
@@ -359,8 +398,8 @@ b
c
c
e
-h
-h
+B
+Z
e
Q
e
@@ -397,8 +436,8 @@ b
d
f
n
-h
-h
+M
+X
c
e
M
@@ -417,7 +456,7 @@ b
d
g
o
-h
+B
h
C
J
@@ -435,7 +474,7 @@ b
b
b
e
-h
+Z
p
q
x
@@ -461,7 +500,7 @@ r
y
E
h
-h
+X
c
b
b
@@ -496,7 +535,7 @@ b
b
e
e
-h
+X
t
A
G
@@ -515,12 +554,12 @@ b
b
b
d
-k
+R
h
s
s
H
-h
+B
O
d
b
@@ -536,9 +575,9 @@ b
b
d
k
-h
+M
u
-s
+V
s
o
n
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pride.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pride.dmm
index cf4938f369..f42aef243a 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pride.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pride.dmm
@@ -3,8 +3,8 @@
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"b" = (
-/turf/closed/mineral/volcanic/lava_land_surface,
-/area/lavaland/surface/outdoors)
+/turf/closed/wall/mineral/diamond,
+/area/ruin/powered/pride)
"c" = (
/turf/open/lava/smooth/lava_land_surface,
/area/lavaland/surface/outdoors)
@@ -23,6 +23,10 @@
"g" = (
/turf/open/floor/mineral/silver,
/area/ruin/powered/pride)
+"i" = (
+/obj/item/clothing/gloves/ring,
+/turf/open/floor/mineral/silver,
+/area/ruin/powered/pride)
"j" = (
/obj/structure/mirror{
pixel_x = -32
@@ -33,13 +37,8 @@
/turf/open/floor/mineral/silver,
/area/ruin/powered/pride)
"k" = (
-/obj/structure/mirror{
- pixel_x = 32
- },
-/obj/machinery/light/small{
- dir = 1
- },
-/turf/open/floor/mineral/silver,
+/obj/structure/mirror/magic/pride,
+/turf/closed/wall/mineral/diamond,
/area/ruin/powered/pride)
"l" = (
/obj/structure/mirror{
@@ -60,19 +59,65 @@
},
/turf/open/floor/mineral/silver,
/area/ruin/powered/pride)
+"o" = (
+/obj/structure/mirror{
+ pixel_x = -32
+ },
+/obj/item/lipstick/random,
+/turf/open/floor/mineral/silver,
+/area/ruin/powered/pride)
+"q" = (
+/obj/structure/mirror{
+ pixel_x = -32
+ },
+/obj/item/clothing/gloves/ring/silver,
+/turf/open/floor/mineral/silver,
+/area/ruin/powered/pride)
"r" = (
/obj/machinery/light/small,
/turf/open/floor/mineral/silver,
/area/ruin/powered/pride)
+"u" = (
+/obj/structure/mirror{
+ pixel_x = 32
+ },
+/obj/item/lipstick/random,
+/turf/open/floor/mineral/silver,
+/area/ruin/powered/pride)
+"D" = (
+/obj/item/clothing/head/wig/random,
+/turf/open/floor/mineral/silver,
+/area/ruin/powered/pride)
"G" = (
-/turf/closed/wall/mineral/diamond,
+/turf/closed/mineral/volcanic/lava_land_surface,
+/area/lavaland/surface/outdoors)
+"I" = (
+/obj/item/clothing/gloves/ring/silver,
+/turf/open/floor/mineral/silver,
+/area/ruin/powered/pride)
+"J" = (
+/obj/structure/mirror{
+ pixel_x = 32
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/open/floor/mineral/silver,
+/area/ruin/powered/pride)
+"L" = (
+/obj/item/lipstick/random,
+/turf/open/floor/mineral/silver,
/area/ruin/powered/pride)
"O" = (
-/obj/structure/mirror/magic/pride,
-/turf/closed/wall/mineral/diamond,
+/obj/item/clothing/gloves/ring/diamond,
+/turf/open/floor/mineral/silver,
+/area/ruin/powered/pride)
+"V" = (
+/obj/item/clothing/head/wig,
+/turf/open/floor/mineral/silver,
/area/ruin/powered/pride)
"Y" = (
-/obj/machinery/door/airlock/diamond,
+/obj/machinery/door/airlock/silver/glass,
/turf/open/floor/mineral/silver{
blocks_air = 1
},
@@ -95,10 +140,6 @@ a
a
a
a
-a
-a
-a
-a
"}
(2,1,1) = {"
a
@@ -116,91 +157,71 @@ c
c
c
c
-c
-c
-c
-c
a
"}
(3,1,1) = {"
+G
+c
+c
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
b
-c
-c
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
c
a
"}
(4,1,1) = {"
c
c
-G
-G
-G
+b
+b
j
-e
+q
e
l
e
e
l
e
-e
-l
-e
-e
-G
+o
+b
c
a
"}
(5,1,1) = {"
c
-G
-G
-G
-G
-G
-g
-g
-g
-g
-g
+b
+b
g
g
g
+L
g
+V
g
+L
+i
r
-G
+b
a
a
"}
(6,1,1) = {"
c
-G
-G
-G
-G
-G
+b
O
g
+k
g
g
-g
-g
+I
g
g
g
@@ -212,77 +233,61 @@ a
"}
(7,1,1) = {"
c
-G
-G
-G
-G
-G
-g
-g
-g
-g
-g
-g
+b
+b
g
g
+L
+D
g
+L
+i
g
+D
r
-G
-c
+b
+a
a
"}
(8,1,1) = {"
c
c
-G
-G
-G
-k
+b
+b
+J
f
f
m
f
f
m
+u
f
-f
-m
-f
-f
-G
+b
c
a
"}
(9,1,1) = {"
+G
+c
+c
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
b
-c
-c
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
c
a
"}
(10,1,1) = {"
-b
-b
-c
-c
-c
-c
+G
+G
c
c
c
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm
index 3576cab5c7..aa56cce5ca 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm
@@ -641,4 +641,4 @@ a
a
a
a
-"}
+"}
\ No newline at end of file
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
index dab9d0316b..e310f8a6da 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm
@@ -5181,7 +5181,7 @@
/turf/open/floor/plating,
/area/ruin/unpowered/syndicate_lava_base/arrivals)
"mu" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/decal/cleanable/dirt,
diff --git a/_maps/RandomRuins/SpaceRuins/arcade.dmm b/_maps/RandomRuins/SpaceRuins/arcade.dmm
index 771c33c55b..74bdc9a7b8 100644
--- a/_maps/RandomRuins/SpaceRuins/arcade.dmm
+++ b/_maps/RandomRuins/SpaceRuins/arcade.dmm
@@ -151,7 +151,7 @@
/turf/open/floor/engine,
/area/ruin/powered)
"J" = (
-/obj/item/twohanded/dualsaber/toy,
+/obj/item/dualsaber/toy,
/turf/open/floor/light/colour_cycle/dancefloor_b,
/area/ruin/powered)
"K" = (
diff --git a/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm
index a89d1422d2..d8677f11d8 100644
--- a/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm
+++ b/_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm
@@ -165,7 +165,7 @@
/turf/open/floor/plasteel/grimy,
/area/ruin/space/has_grav/hilbertresearchfacility)
"D" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/grimy,
/area/ruin/space/has_grav/hilbertresearchfacility)
"E" = (
diff --git a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm
index 0baac3252a..9ac2fed86f 100644
--- a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm
+++ b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm
@@ -185,7 +185,7 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/powered/cat_man)
"aF" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -294,7 +294,7 @@
/area/ruin/space/has_grav/powered/cat_man)
"aV" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -552,7 +552,7 @@
/area/ruin/space/has_grav/powered/cat_man)
"bF" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
index 343c79a895..8528099d30 100644
--- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm
@@ -597,7 +597,7 @@
icon_state = "2-4"
},
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/effect/decal/cleanable/dirt,
@@ -639,7 +639,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation)
"bW" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/effect/decal/cleanable/dirt,
@@ -858,7 +858,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
"cz" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/structure/cable{
@@ -918,7 +918,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation/deltacorridor)
"cH" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/effect/decal/cleanable/dirt,
@@ -1127,7 +1127,7 @@
/area/ruin/space/has_grav/ancientstation)
"dn" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/machinery/light/small{
@@ -1179,7 +1179,7 @@
/area/ruin/space/has_grav/ancientstation/hydroponics)
"ds" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/machinery/light/small{
@@ -3980,7 +3980,7 @@
icon_state = "1-4"
},
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/effect/decal/cleanable/dirt,
@@ -4015,7 +4015,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/ancientstation)
"jJ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/structure/cable{
@@ -5010,7 +5010,7 @@
/turf/open/floor/plating,
/area/ruin/space/has_grav/ancientstation)
"PV" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/effect/decal/cleanable/dirt,
diff --git a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm
index dd7e700146..791aac277d 100644
--- a/_maps/RandomRuins/SpaceRuins/spacehermit.dmm
+++ b/_maps/RandomRuins/SpaceRuins/spacehermit.dmm
@@ -112,7 +112,7 @@
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"ax" = (
-/obj/item/twohanded/spear,
+/obj/item/spear,
/turf/open/floor/plating/asteroid,
/area/ruin/powered)
"ay" = (
diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm
index 209feb82e3..5da534a08e 100644
--- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm
+++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm
@@ -148,7 +148,7 @@
/turf/open/floor/wood,
/area/ruin/space/has_grav/hotel/guestroom/room_3)
"aD" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02"
},
/turf/open/floor/wood,
@@ -189,7 +189,7 @@
/turf/open/floor/wood,
/area/ruin/space/has_grav/hotel/guestroom/room_4)
"aL" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/wood,
@@ -230,7 +230,7 @@
/turf/open/floor/wood,
/area/ruin/space/has_grav/hotel/guestroom/room_5)
"aT" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/wood,
@@ -271,7 +271,7 @@
/turf/open/floor/wood,
/area/ruin/space/has_grav/hotel/guestroom/room_6)
"bb" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18"
},
/turf/open/floor/wood,
@@ -1113,7 +1113,7 @@
/turf/open/floor/wood,
/area/ruin/space/has_grav/hotel/guestroom/room_2)
"dq" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/wood,
@@ -1177,7 +1177,7 @@
/turf/open/floor/wood,
/area/ruin/space/has_grav/hotel/guestroom/room_1)
"dy" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/turf/open/floor/wood,
@@ -1855,7 +1855,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/hotel/bar)
"fI" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02"
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
@@ -2035,7 +2035,7 @@
},
/area/ruin/space/has_grav/hotel/dock)
"gh" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/wood,
@@ -2435,7 +2435,7 @@
/turf/open/floor/carpet,
/area/ruin/space/has_grav/hotel)
"hq" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18"
},
/turf/open/floor/plasteel/dark,
@@ -3013,7 +3013,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/hotel/power)
"iM" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/turf/open/floor/wood,
/area/ruin/space/has_grav/hotel)
"iN" = (
@@ -4817,7 +4817,7 @@
/turf/open/floor/plasteel/dark,
/area/ruin/space/has_grav/hotel/pool)
"mD" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-25"
},
/obj/effect/turf_decal/tile/neutral{
diff --git a/_maps/RandomRuins/SpaceRuinsStation/roid6.dmm b/_maps/RandomRuins/SpaceRuinsStation/roid6.dmm
index 794300cdb5..56967b0c37 100644
--- a/_maps/RandomRuins/SpaceRuinsStation/roid6.dmm
+++ b/_maps/RandomRuins/SpaceRuinsStation/roid6.dmm
@@ -44,7 +44,7 @@
/area/ruin/space/has_grav)
"C" = (
/obj/effect/decal/remains/human,
-/obj/item/twohanded/spear,
+/obj/item/spear,
/turf/open/floor/mineral/titanium/blue,
/area/ruin/space/has_grav)
"F" = (
diff --git a/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm b/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm
index a9c5eab318..f8d701debe 100644
--- a/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm
+++ b/_maps/RandomRuins/StationRuins/Box/Engine/engine_teg.dmm
@@ -948,7 +948,7 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"BT" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/engine/engineering)
"BY" = (
diff --git a/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm b/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm
index 1bfb337d99..5bc10b30f0 100644
--- a/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm
+++ b/_maps/RandomRuins/StationRuins/Lavaland/Mining_Station/Mining_Station_Public_01.dmm
@@ -399,7 +399,7 @@
/turf/open/floor/plating,
/area/mine/laborcamp/security)
"hf" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/mine/living_quarters)
"hm" = (
@@ -1565,7 +1565,7 @@
/turf/open/floor/plating,
/area/mine/laborcamp)
"zy" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
diff --git a/_maps/RandomZLevels/VR/syndicate_trainer.dmm b/_maps/RandomZLevels/VR/syndicate_trainer.dmm
index 0a44006802..5b010e74d9 100644
--- a/_maps/RandomZLevels/VR/syndicate_trainer.dmm
+++ b/_maps/RandomZLevels/VR/syndicate_trainer.dmm
@@ -1370,7 +1370,7 @@
/turf/open/indestructible,
/area/awaymission/centcomAway/general)
"hW" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/turf/open/indestructible,
/area/awaymission/centcomAway/general)
"hX" = (
@@ -1951,7 +1951,7 @@
"lv" = (
/obj/structure/rack,
/obj/item/restraints/legcuffs/beartrap,
-/obj/item/twohanded/fireaxe,
+/obj/item/fireaxe,
/turf/open/indestructible,
/area/awaymission/centcomAway/thunderdome)
"lw" = (
diff --git a/_maps/RandomZLevels/away_mission/SnowCabin.dmm b/_maps/RandomZLevels/away_mission/SnowCabin.dmm
index b4b344c268..249cb68b5d 100644
--- a/_maps/RandomZLevels/away_mission/SnowCabin.dmm
+++ b/_maps/RandomZLevels/away_mission/SnowCabin.dmm
@@ -1412,7 +1412,7 @@
/area/awaymission/cabin/snowforest)
"eA" = (
/obj/structure/table/wood,
-/obj/item/twohanded/required/chainsaw,
+/obj/item/chainsaw,
/turf/open/floor/wood/cold,
/area/awaymission/cabin/lumbermill)
"eB" = (
diff --git a/_maps/RandomZLevels/away_mission/moonoutpost19.dmm b/_maps/RandomZLevels/away_mission/moonoutpost19.dmm
index c7d5924b25..ff2db79c83 100644
--- a/_maps/RandomZLevels/away_mission/moonoutpost19.dmm
+++ b/_maps/RandomZLevels/away_mission/moonoutpost19.dmm
@@ -4746,7 +4746,7 @@
},
/area/awaymission/moonoutpost19/research)
"jq" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
desc = "A plastic potted plant.";
pixel_y = 3
},
@@ -6936,7 +6936,7 @@
},
/area/awaymission/moonoutpost19/arrivals)
"ob" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
desc = "A plastic potted plant.";
pixel_y = 3
},
diff --git a/_maps/RandomZLevels/away_mission/research.dmm b/_maps/RandomZLevels/away_mission/research.dmm
index 1b64538e33..cdb7cf680b 100644
--- a/_maps/RandomZLevels/away_mission/research.dmm
+++ b/_maps/RandomZLevels/away_mission/research.dmm
@@ -117,7 +117,7 @@
/turf/open/floor/plasteel/white,
/area/awaymission/research/interior/engineering)
"ax" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-20";
pixel_y = 3
},
@@ -1753,7 +1753,7 @@
/turf/open/floor/plasteel/dark,
/area/awaymission/research/interior/secure)
"dN" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/obj/effect/turf_decal/tile/purple{
@@ -4125,7 +4125,7 @@
/turf/open/floor/plasteel,
/area/awaymission/research/interior/genetics)
"hV" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/purple{
@@ -4220,7 +4220,7 @@
/turf/open/floor/plasteel,
/area/awaymission/research/interior/security)
"ii" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
desc = "A potted plant, it doesn't look very healthy...";
name = "dead potted plant"
},
@@ -4701,7 +4701,7 @@
/turf/open/floor/wood,
/area/awaymission/research/interior/dorm)
"jm" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/turf/open/floor/plasteel/yellowsiding{
@@ -5305,7 +5305,7 @@
/turf/open/floor/plating,
/area/awaymission/research/interior/medbay)
"kC" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/yellowsiding{
@@ -5662,7 +5662,7 @@
/turf/open/floor/plasteel/white,
/area/awaymission/research/interior/medbay)
"ly" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel/yellowsiding{
@@ -6140,7 +6140,7 @@
/turf/open/floor/plasteel/white,
/area/awaymission/research/interior/escapepods)
"mJ" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/effect/turf_decal/tile/green{
dir = 1
},
@@ -6177,7 +6177,7 @@
/turf/open/floor/grass,
/area/awaymission/research/interior/escapepods)
"mN" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/effect/turf_decal/tile/green,
diff --git a/_maps/RandomZLevels/away_mission/undergroundoutpost45.dmm b/_maps/RandomZLevels/away_mission/undergroundoutpost45.dmm
index 4394b36963..78a656128c 100644
--- a/_maps/RandomZLevels/away_mission/undergroundoutpost45.dmm
+++ b/_maps/RandomZLevels/away_mission/undergroundoutpost45.dmm
@@ -1434,7 +1434,7 @@
},
/area/awaymission/undergroundoutpost45/central)
"do" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/obj/effect/decal/cleanable/dirt,
@@ -2941,7 +2941,7 @@
},
/area/awaymission/undergroundoutpost45/central)
"fT" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/obj/effect/decal/cleanable/dirt,
@@ -5051,7 +5051,7 @@
},
/area/awaymission/undergroundoutpost45/gateway)
"kh" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/obj/effect/decal/cleanable/dirt,
@@ -6673,7 +6673,7 @@
/area/awaymission/undergroundoutpost45/research)
"mQ" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/turf/open/floor/plasteel/cafeteria{
@@ -8260,7 +8260,7 @@
},
/area/awaymission/undergroundoutpost45/research)
"pl" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/obj/effect/decal/cleanable/dirt,
@@ -9321,7 +9321,7 @@
},
/area/awaymission/undergroundoutpost45/engineering)
"rk" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/obj/effect/turf_decal/tile/yellow{
@@ -12227,7 +12227,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/obj/effect/decal/cleanable/dirt,
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index f6c10ed798..3a1ce84ba2 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -17691,7 +17691,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-20"
},
/turf/open/floor/plasteel,
@@ -21029,7 +21029,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/plasteel,
@@ -21590,7 +21590,7 @@
dir = 1;
pixel_y = -24
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-08"
},
/turf/open/floor/wood,
@@ -24147,7 +24147,7 @@
/obj/effect/turf_decal/tile/purple{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-13"
},
/turf/open/floor/plasteel,
@@ -24196,7 +24196,7 @@
/obj/effect/turf_decal/tile/purple{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel,
@@ -29753,7 +29753,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel/white,
@@ -33842,7 +33842,7 @@
/obj/machinery/light_switch{
pixel_y = -23
},
-/obj/item/twohanded/required/kirbyplants/dead,
+/obj/item/kirbyplants/dead,
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/heads/hor)
"bCg" = (
@@ -39007,7 +39007,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/turf/open/floor/plasteel/white/side{
dir = 1
},
@@ -48276,8 +48276,8 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/item/twohanded/rcl/pre_loaded,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/turf/open/floor/plasteel,
/area/engine/engineering)
"cnB" = (
@@ -52007,7 +52007,7 @@
/obj/structure/table/reinforced,
/obj/machinery/cell_charger,
/obj/item/stock_parts/cell/high/plus,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/turf/open/floor/plasteel,
/area/crew_quarters/heads/chief)
"cBN" = (
@@ -53727,7 +53727,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-04"
},
/turf/open/floor/plasteel/white,
@@ -53860,7 +53860,7 @@
/turf/open/floor/plating,
/area/crew_quarters/fitness)
"exP" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/turf/open/floor/plasteel,
@@ -54206,7 +54206,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-06"
},
/turf/open/floor/plasteel/white/corner{
@@ -54404,7 +54404,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18"
},
/turf/open/floor/plasteel,
@@ -56365,7 +56365,7 @@
/turf/open/floor/plasteel,
/area/security/processing)
"lPr" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/turf/open/floor/plasteel,
@@ -57945,7 +57945,7 @@
/turf/open/floor/carpet,
/area/crew_quarters/theatre)
"qTV" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/white,
diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm
index c9ec41aeb3..2691bcfb0e 100644
--- a/_maps/map_files/CogStation/CogStation.dmm
+++ b/_maps/map_files/CogStation/CogStation.dmm
@@ -1203,7 +1203,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel/checker,
@@ -1404,7 +1404,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel/dark/corner{
@@ -3635,7 +3635,7 @@
/turf/open/floor/wood,
/area/crew_quarters/fitness)
"aiS" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-06"
},
/turf/open/floor/wood,
@@ -9565,7 +9565,7 @@
/obj/effect/turf_decal/tile/green{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
@@ -12206,7 +12206,7 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/obj/machinery/camera{
@@ -13796,7 +13796,7 @@
/turf/open/floor/carpet,
/area/chapel/main)
"aEJ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-08"
},
/turf/open/floor/wood,
@@ -13834,7 +13834,7 @@
/turf/open/floor/wood,
/area/crew_quarters/barbershop)
"aEP" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/turf/open/floor/wood,
/area/crew_quarters/barbershop)
"aEQ" = (
@@ -17309,7 +17309,7 @@
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-06"
},
/turf/open/floor/plasteel,
@@ -18721,7 +18721,7 @@
/obj/structure/sign/warning/securearea{
pixel_x = -32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_y = 3
},
@@ -18737,7 +18737,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/turf/open/floor/plasteel/dark/side{
dir = 1
},
@@ -19855,7 +19855,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02"
},
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{
@@ -20407,7 +20407,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
@@ -21269,7 +21269,7 @@
name = "Station Intercom (Common)";
pixel_x = -26
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/turf/open/floor/plasteel,
@@ -21813,7 +21813,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/red,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/machinery/airalarm{
@@ -22918,7 +22918,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-08"
},
/turf/open/floor/plasteel/dark/side,
@@ -23381,7 +23381,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
@@ -25066,7 +25066,7 @@
/turf/closed/wall/r_wall,
/area/space/nearstation)
"bcd" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/turf/open/floor/plasteel/white,
@@ -27523,7 +27523,7 @@
dir = 1
},
/obj/structure/disposalpipe/segment,
-/obj/item/twohanded/required/kirbyplants/dead,
+/obj/item/kirbyplants/dead,
/turf/open/floor/plasteel,
/area/security/main)
"bhO" = (
@@ -27558,7 +27558,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_y = 3
},
@@ -27978,7 +27978,7 @@
dir = 4;
light_color = "#c1caff"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-20";
pixel_y = 3
},
@@ -28903,7 +28903,7 @@
dir = 4;
light_color = "#c1caff"
},
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/obj/item/stock_parts/cell/high/plus,
/obj/item/clothing/glasses/meson,
/obj/item/cartridge/atmos,
@@ -32531,7 +32531,7 @@
/turf/open/floor/plasteel,
/area/maintenance/disposal)
"brZ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02"
},
/turf/open/floor/wood,
@@ -32851,7 +32851,7 @@
/turf/open/floor/grass,
/area/hydroponics)
"bsG" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/turf/open/floor/plasteel/white,
@@ -33831,7 +33831,7 @@
/turf/open/floor/plating,
/area/construction)
"bvf" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/carpet{
@@ -38791,7 +38791,7 @@
/turf/open/floor/wood,
/area/crew_quarters/fitness)
"bFR" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-08"
},
/turf/open/floor/wood,
@@ -39257,7 +39257,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-20";
pixel_y = 3
},
@@ -39602,7 +39602,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/turf/open/floor/plasteel,
@@ -41826,7 +41826,7 @@
/turf/open/floor/plasteel/cafeteria,
/area/medical/medbay/central)
"bLX" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02"
},
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
@@ -45557,7 +45557,7 @@
/turf/open/floor/plating,
/area/quartermaster/warehouse)
"bTy" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/machinery/atmospherics/pipe/simple/orange/hidden{
dir = 9
},
@@ -47474,7 +47474,7 @@
pixel_x = 24;
pixel_y = 6
},
-/obj/item/twohanded/required/kirbyplants/photosynthetic,
+/obj/item/kirbyplants/photosynthetic,
/turf/open/floor/plasteel,
/area/crew_quarters/heads/chief)
"bXg" = (
@@ -47676,7 +47676,7 @@
},
/obj/effect/turf_decal/tile/purple,
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel,
@@ -49176,7 +49176,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-06"
},
/obj/machinery/airalarm{
@@ -53304,7 +53304,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/photosynthetic,
+/obj/item/kirbyplants/photosynthetic,
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"cjA" = (
@@ -53316,7 +53316,7 @@
dir = 4;
pixel_x = -28
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/quartermaster/office)
"cjB" = (
@@ -53851,8 +53851,8 @@
/obj/machinery/light_switch{
pixel_x = -24
},
-/obj/item/twohanded/rcl/pre_loaded,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/obj/item/stack/cable_coil/red,
/obj/item/stack/cable_coil/red,
/obj/item/stock_parts/cell/high/plus,
@@ -58876,7 +58876,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/photosynthetic,
+/obj/item/kirbyplants/photosynthetic,
/obj/effect/turf_decal/tile/red{
dir = 1
},
@@ -63861,7 +63861,7 @@
/obj/structure/sign/warning/securearea{
pixel_x = -32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/machinery/airalarm{
@@ -66936,7 +66936,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/photosynthetic,
+/obj/item/kirbyplants/photosynthetic,
/obj/machinery/airalarm{
pixel_y = 24
},
@@ -71090,7 +71090,7 @@
/turf/open/floor/plating,
/area/bridge)
"cQV" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02"
},
/obj/structure/cable{
diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm
index fd65a272e8..ce7186f523 100644
--- a/_maps/map_files/Deltastation/DeltaStation2.dmm
+++ b/_maps/map_files/Deltastation/DeltaStation2.dmm
@@ -333,7 +333,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 5
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -379,7 +379,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"acp" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
@@ -1019,7 +1019,7 @@
name = "Construction RC";
pixel_y = 32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
@@ -1082,7 +1082,7 @@
dir = 1
},
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
@@ -1092,7 +1092,7 @@
dir = 1
},
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
@@ -1109,7 +1109,7 @@
dir = 1
},
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -1373,14 +1373,14 @@
/area/hallway/secondary/entry)
"agk" = (
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"agl" = (
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
@@ -1686,7 +1686,7 @@
dir = 4;
pixel_x = -24
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
@@ -1926,7 +1926,7 @@
/area/maintenance/starboard/fore)
"aio" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/poster/contraband/random{
pixel_y = 32
},
@@ -1997,7 +1997,7 @@
/area/maintenance/starboard/fore)
"ais" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -2651,7 +2651,7 @@
dir = 4
},
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -2711,7 +2711,7 @@
"ajR" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -3124,7 +3124,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"akJ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral,
@@ -3148,7 +3148,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"akN" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -3401,7 +3401,7 @@
/turf/open/floor/plasteel/grimy,
/area/security/vacantoffice)
"alo" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
pixel_y = 24
},
@@ -3482,7 +3482,7 @@
pixel_x = 26;
pixel_y = 26
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
@@ -3906,7 +3906,7 @@
/turf/open/floor/plasteel/grimy,
/area/hallway/secondary/entry)
"amq" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/grimy,
/area/hallway/secondary/entry)
"amr" = (
@@ -4174,7 +4174,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/electronic_marketing_den)
"amN" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -4205,7 +4205,7 @@
/turf/open/floor/wood,
/area/crew_quarters/electronic_marketing_den)
"amQ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/electronic_marketing_den)
"amR" = (
@@ -4235,7 +4235,7 @@
/obj/machinery/light/small{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/electronic_marketing_den)
"amV" = (
@@ -4531,7 +4531,7 @@
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"anB" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -4561,7 +4561,7 @@
/turf/open/floor/plasteel,
/area/maintenance/starboard/fore)
"anD" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -5299,7 +5299,7 @@
/turf/open/floor/plasteel/dark,
/area/engine/atmospherics_engine)
"aoM" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/electronic_marketing_den)
"aoN" = (
@@ -5600,7 +5600,7 @@
/turf/open/floor/plasteel,
/area/maintenance/starboard/fore)
"apt" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"apu" = (
@@ -5994,7 +5994,7 @@
/turf/open/floor/plasteel/grimy,
/area/security/vacantoffice)
"aqf" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/security/vacantoffice)
"aqg" = (
@@ -6087,7 +6087,7 @@
/obj/machinery/newscaster{
pixel_y = -32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/grimy,
@@ -6484,7 +6484,7 @@
/turf/open/floor/wood,
/area/crew_quarters/electronic_marketing_den)
"aqT" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable/white,
/obj/machinery/power/apc{
areastring = "/area/crew_quarters/electronic_marketing_den";
@@ -6946,7 +6946,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"arM" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -6981,7 +6981,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"arQ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -8462,7 +8462,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/neutral{
@@ -8520,7 +8520,7 @@
/area/hallway/secondary/entry)
"auq" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/neutral,
@@ -9908,7 +9908,7 @@
/turf/open/floor/plating,
/area/crew_quarters/toilet/auxiliary)
"awM" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/camera{
c_tag = "Auxiliary Restroom";
name = "restroom camera"
@@ -10208,7 +10208,7 @@
"axr" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/bot,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
"axs" = (
@@ -10359,7 +10359,7 @@
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
"axG" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/warning/nosmoking{
pixel_x = 32
},
@@ -12299,7 +12299,7 @@
name = "Maintenance Garden"
})
"aBh" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light/small{
dir = 1
},
@@ -12352,7 +12352,7 @@
name = "Maintenance Garden"
})
"aBm" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/status_display/evac{
pixel_y = 32
},
@@ -12374,7 +12374,7 @@
name = "Maintenance Garden"
})
"aBo" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light/small{
dir = 1
},
@@ -13688,7 +13688,7 @@
/turf/open/floor/plasteel/grimy,
/area/hallway/secondary/service)
"aDH" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/nanotrasen{
pixel_x = 32
},
@@ -14600,7 +14600,7 @@
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
"aFu" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -14791,7 +14791,7 @@
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
"aFH" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 6
},
@@ -14807,7 +14807,7 @@
/turf/open/floor/plasteel,
/area/engine/atmospherics_engine)
"aFJ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
@@ -15724,7 +15724,7 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/disposal/incinerator)
"aGX" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
@@ -15877,7 +15877,7 @@
/area/engine/atmospherics_engine)
"aHj" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 6
},
@@ -15944,7 +15944,7 @@
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"aHq" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/newscaster{
pixel_x = -32
},
@@ -16034,7 +16034,7 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/bar)
"aHx" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -18576,7 +18576,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aLO" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
@@ -18680,7 +18680,7 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/supply)
"aLV" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/airalarm{
dir = 8;
pixel_x = 24
@@ -18859,7 +18859,7 @@
/obj/structure/cable/white{
icon_state = "4-8"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
@@ -19123,7 +19123,7 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/abandoned_gambling_den/secondary)
"aMR" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/abandoned_gambling_den/secondary)
"aMS" = (
@@ -19133,7 +19133,7 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/abandoned_gambling_den/secondary)
"aMT" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/airalarm{
pixel_y = 23
@@ -19156,7 +19156,7 @@
},
/area/crew_quarters/abandoned_gambling_den/secondary)
"aMV" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/abandoned_gambling_den/secondary)
"aMW" = (
@@ -19981,7 +19981,7 @@
/turf/open/floor/plasteel/dark,
/area/engine/atmos)
"aOo" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -20207,7 +20207,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/bar/atrium)
"aOH" = (
@@ -20965,7 +20965,7 @@
/turf/open/floor/plasteel/checker,
/area/engine/atmos)
"aPO" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
@@ -20990,7 +20990,7 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"aPQ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -21487,7 +21487,7 @@
/area/quartermaster/sorting)
"aQE" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/airalarm{
dir = 8;
pixel_x = 24
@@ -21725,7 +21725,7 @@
/area/security/prison)
"aRb" = (
/obj/machinery/light/small,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -21769,7 +21769,7 @@
/turf/open/floor/plasteel,
/area/security/prison)
"aRg" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small,
/turf/open/floor/plating{
@@ -23644,7 +23644,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/office)
"aTY" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 4
},
@@ -24472,7 +24472,7 @@
/turf/open/floor/engine/air,
/area/engine/atmos)
"aVc" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den/secondary)
@@ -24571,7 +24571,7 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/camera{
c_tag = "Service Hallway - Aft";
@@ -27017,7 +27017,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/office)
"aYR" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24;
@@ -27064,7 +27064,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"aYU" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
@@ -27169,7 +27169,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/qm)
"aZd" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light,
/obj/machinery/newscaster{
pixel_y = -32
@@ -27252,7 +27252,7 @@
/turf/open/floor/plating,
/area/quartermaster/qm)
"aZk" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable/white{
icon_state = "2-8"
},
@@ -27968,7 +27968,7 @@
/obj/machinery/newscaster{
pixel_x = -32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/red{
dir = 1
},
@@ -28073,7 +28073,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/office)
"baK" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/brown,
/obj/effect/turf_decal/tile/brown{
dir = 8
@@ -28365,7 +28365,7 @@
/turf/open/floor/plasteel,
/area/security/prison)
"bbn" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/warning/pods{
dir = 8;
pixel_y = -32
@@ -29767,7 +29767,7 @@
"bdP" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/disposalpipe/segment,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/brown{
@@ -29894,7 +29894,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/miningoffice)
"beb" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
@@ -30115,7 +30115,7 @@
/area/engine/atmos)
"beB" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24
@@ -30323,7 +30323,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
"beX" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 4
@@ -31242,7 +31242,7 @@
/turf/open/floor/plating,
/area/quartermaster/miningoffice)
"bgH" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -31296,7 +31296,7 @@
/area/quartermaster/miningoffice)
"bgL" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -32336,7 +32336,7 @@
/turf/open/floor/plasteel,
/area/security/brig)
"biE" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable/white{
icon_state = "1-2"
},
@@ -32365,7 +32365,7 @@
/turf/open/floor/plasteel,
/area/security/brig)
"biG" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/red{
dir = 1
},
@@ -32435,7 +32435,7 @@
/obj/machinery/newscaster/security_unit{
pixel_y = 32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/red{
dir = 1
},
@@ -33179,7 +33179,7 @@
/area/hallway/primary/fore)
"bjR" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/brown,
@@ -33245,7 +33245,7 @@
/area/quartermaster/miningoffice)
"bjW" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/brown{
dir = 1
},
@@ -34234,7 +34234,7 @@
/area/hallway/primary/fore)
"blJ" = (
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/brown,
@@ -34608,7 +34608,7 @@
/turf/open/floor/plasteel,
/area/security/main)
"bmr" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -34757,7 +34757,7 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -34795,7 +34795,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -34997,7 +34997,7 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -35886,7 +35886,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 6
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -36177,7 +36177,7 @@
/turf/open/floor/plating,
/area/security/execution/transfer)
"bpd" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -36958,7 +36958,7 @@
/turf/closed/wall/r_wall,
/area/engine/atmos)
"bqm" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/yellow{
@@ -39870,7 +39870,7 @@
/turf/open/floor/plasteel/dark,
/area/security/main)
"buT" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/power/apc{
areastring = "/area/crew_quarters/heads/hos";
name = "Head of Security's Office APC";
@@ -40115,7 +40115,7 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"bvk" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light/small,
/obj/machinery/light_switch{
pixel_x = 26;
@@ -40547,7 +40547,7 @@
/turf/open/floor/plasteel,
/area/security/execution/transfer)
"bwc" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 1;
pixel_y = -24
@@ -40582,7 +40582,7 @@
/turf/open/floor/plasteel,
/area/security/brig)
"bwe" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/red{
dir = 1
},
@@ -40627,7 +40627,7 @@
/turf/open/floor/plasteel,
/area/security/main)
"bwj" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -40688,7 +40688,7 @@
/obj/structure/cable/white{
icon_state = "2-4"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai)
@@ -40717,7 +40717,7 @@
/obj/structure/cable/white{
icon_state = "2-8"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/warning/nosmoking{
pixel_y = 32
},
@@ -41299,7 +41299,7 @@
/turf/open/floor/plating,
/area/security/execution/transfer)
"bxo" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -41703,7 +41703,7 @@
/area/engine/atmos)
"bxT" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
@@ -42135,7 +42135,7 @@
/obj/machinery/gulag_item_reclaimer{
pixel_y = 28
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable/white{
icon_state = "4-8"
},
@@ -42206,7 +42206,7 @@
/turf/open/floor/plasteel,
/area/security/execution/transfer)
"byI" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 8;
pixel_x = 24
@@ -42451,7 +42451,7 @@
/turf/open/floor/circuit/green,
/area/ai_monitored/turret_protected/ai)
"bzb" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -43465,7 +43465,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai)
"bAz" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 4
},
@@ -43994,7 +43994,7 @@
/turf/open/floor/plasteel,
/area/storage/tech)
"bBl" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/storage/tech)
@@ -44126,7 +44126,7 @@
name = "WARNING: BLAST DOORS";
pixel_y = 32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/blue{
@@ -44155,7 +44155,7 @@
/turf/open/floor/plasteel/dark,
/area/bridge)
"bBz" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
@@ -45070,7 +45070,7 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"bCU" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 1
},
@@ -45690,7 +45690,7 @@
/turf/open/floor/plasteel/dark,
/area/bridge)
"bDD" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable/white{
icon_state = "4-8"
},
@@ -46132,7 +46132,7 @@
/turf/open/floor/plasteel,
/area/security/execution/transfer)
"bEb" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/extinguisher_cabinet{
pixel_x = 26
},
@@ -46776,7 +46776,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bES" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/status_display/evac{
pixel_x = -32
},
@@ -46805,7 +46805,7 @@
/turf/open/floor/plasteel,
/area/storage/tech)
"bEV" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/status_display/ai{
pixel_x = 32
},
@@ -47163,7 +47163,7 @@
/turf/open/floor/plasteel/dark,
/area/bridge)
"bFr" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/effect/turf_decal/tile/blue{
dir = 1
@@ -47222,7 +47222,7 @@
/turf/open/floor/plasteel/grimy,
/area/bridge)
"bFx" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -47716,7 +47716,7 @@
dir = 4;
pixel_x = -24
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/engine/break_room)
@@ -47759,7 +47759,7 @@
dir = 1;
pixel_y = -22
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/engine/break_room)
@@ -47891,7 +47891,7 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"bGt" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 8;
pixel_x = 24
@@ -48118,7 +48118,7 @@
/turf/open/floor/plasteel,
/area/storage/primary)
"bGM" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/storage/primary)
@@ -48168,7 +48168,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/blue,
@@ -48446,7 +48446,7 @@
pixel_y = -32
},
/obj/machinery/light/small,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/blue,
@@ -48474,7 +48474,7 @@
/area/security/detectives_office)
"bHt" = (
/obj/structure/disposalpipe/segment,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/red{
@@ -48497,7 +48497,7 @@
/area/hallway/primary/starboard)
"bHv" = (
/obj/structure/disposalpipe/segment,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/red{
@@ -48903,7 +48903,7 @@
/turf/closed/wall,
/area/engine/break_room)
"bHY" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 8
},
@@ -50192,7 +50192,7 @@
/turf/closed/wall/r_wall,
/area/engine/transit_tube)
"bJQ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -50235,7 +50235,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -50298,7 +50298,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/chief)
"bJV" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
pixel_y = 24
},
@@ -50661,7 +50661,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/bridge/meeting_room/council)
"bKB" = (
@@ -50828,7 +50828,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/captain)
"bKT" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/captain)
"bKU" = (
@@ -51400,7 +51400,7 @@
/turf/open/floor/plasteel/dark,
/area/engine/transit_tube)
"bLK" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 8;
pixel_x = 24
@@ -51425,7 +51425,7 @@
/turf/open/floor/plasteel/dark,
/area/engine/transit_tube)
"bLL" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 8
},
@@ -51758,7 +51758,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"bMg" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/status_display/ai{
pixel_x = -32
},
@@ -51792,7 +51792,7 @@
/turf/open/floor/plasteel,
/area/storage/tech)
"bMj" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/status_display/evac{
pixel_x = 32
},
@@ -51976,7 +51976,7 @@
name = "Telecomms Monitoring APC";
pixel_y = 28
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable/white{
icon_state = "0-2"
},
@@ -52016,7 +52016,7 @@
/obj/machinery/airalarm{
pixel_y = 22
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
@@ -52372,7 +52372,7 @@
/turf/closed/wall,
/area/security/brig)
"bNk" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/door_timer{
id = "brig1";
name = "Cell 1";
@@ -53082,7 +53082,7 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"bOe" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/yellow{
dir = 4
@@ -54074,7 +54074,7 @@
/turf/closed/wall,
/area/engine/transit_tube)
"bPN" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/airalarm{
dir = 4;
pixel_x = -23
@@ -54110,7 +54110,7 @@
/turf/open/floor/plasteel/dark,
/area/engine/transit_tube)
"bPP" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/light_switch{
pixel_x = 22;
@@ -54280,7 +54280,7 @@
/turf/closed/wall,
/area/engine/break_room)
"bQb" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/engine/break_room)
@@ -54391,7 +54391,7 @@
/turf/open/floor/plasteel,
/area/storage/tech)
"bQm" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 1;
pixel_y = -24
@@ -54401,7 +54401,7 @@
/turf/open/floor/plasteel,
/area/storage/tech)
"bQn" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light_switch{
pixel_y = -26
},
@@ -54566,7 +54566,7 @@
/turf/open/floor/wood,
/area/bridge/meeting_room/council)
"bQG" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -54816,7 +54816,7 @@
dir = 1;
pixel_y = -26
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -54927,7 +54927,7 @@
/turf/open/floor/plasteel/dark,
/area/security/detectives_office)
"bRn" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
},
@@ -55200,7 +55200,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"bRF" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -55450,7 +55450,7 @@
/turf/open/floor/plating,
/area/crew_quarters/heads/chief)
"bSd" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/newscaster{
pixel_y = 32
},
@@ -55694,7 +55694,7 @@
/area/bridge/meeting_room/council)
"bSz" = (
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/bridge/meeting_room/council)
"bSA" = (
@@ -55753,12 +55753,12 @@
/turf/open/floor/plasteel/grimy,
/area/tcommsat/computer)
"bSG" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/grimy,
/area/tcommsat/computer)
"bSH" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/grimy,
/area/tcommsat/computer)
"bSI" = (
@@ -56361,7 +56361,7 @@
/turf/closed/wall/r_wall,
/area/ai_monitored/turret_protected/aisat_interior)
"bTB" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/turretid{
control_area = "/area/ai_monitored/turret_protected/aisat_interior";
name = "Antechamber Turret Control";
@@ -56593,7 +56593,7 @@
/turf/open/floor/plasteel/dark,
/area/engine/transit_tube)
"bTO" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -56857,7 +56857,7 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -57595,7 +57595,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bVk" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/door_timer{
id = "brig2";
name = "Cell 2";
@@ -58328,7 +58328,7 @@
/turf/open/floor/plasteel/dark,
/area/engine/transit_tube)
"bWe" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light/small{
dir = 4
},
@@ -58429,7 +58429,7 @@
/turf/open/floor/plating,
/area/crew_quarters/heads/chief)
"bWm" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 1;
pixel_x = -24;
@@ -58884,7 +58884,7 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/hop)
"bWS" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/disposalpipe/segment{
dir = 6
},
@@ -58900,7 +58900,7 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/hop)
"bWU" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/wood,
/area/crew_quarters/heads/hop)
@@ -59758,7 +59758,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"bXY" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 8;
pixel_x = 24
@@ -59860,7 +59860,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"bYh" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24
@@ -60129,7 +60129,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/chief)
"bYw" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light_switch{
pixel_x = 26;
pixel_y = -26
@@ -61146,7 +61146,7 @@
/area/ai_monitored/turret_protected/aisat_interior)
"cae" = (
/obj/structure/cable/white,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -61211,7 +61211,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"cai" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light,
/obj/machinery/airalarm{
dir = 1;
@@ -61248,7 +61248,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"cak" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light_switch{
pixel_x = -26
},
@@ -61331,7 +61331,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"cao" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/extinguisher_cabinet{
pixel_x = 26
},
@@ -61441,7 +61441,7 @@
/turf/open/floor/plating,
/area/security/checkpoint/engineering)
"caB" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/yellow{
@@ -61843,7 +61843,7 @@
/obj/structure/disposalpipe/segment{
dir = 5
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/red{
@@ -62198,7 +62198,7 @@
/turf/closed/wall,
/area/engine/engineering)
"cbW" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -62239,7 +62239,7 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"cca" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light_switch{
pixel_y = 26
@@ -62738,7 +62738,7 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/heads/captain/private)
"ccS" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
@@ -62804,7 +62804,7 @@
/turf/open/floor/plasteel/dark,
/area/security/courtroom)
"ccX" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -62844,7 +62844,7 @@
/turf/open/floor/plating,
/area/security/courtroom)
"cda" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -63125,7 +63125,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai_upload)
"cdw" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 1
},
@@ -63685,7 +63685,7 @@
/obj/structure/cable/white{
icon_state = "4-8"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -64817,7 +64817,7 @@
/obj/machinery/light{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/plaques/kiddie/library{
pixel_x = -32
},
@@ -64989,7 +64989,7 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/heads/captain/private)
"cgt" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/airalarm{
dir = 1;
pixel_y = -22
@@ -65009,7 +65009,7 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/captain/private)
"cgv" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 1;
pixel_y = -26
@@ -65999,7 +65999,7 @@
/turf/open/floor/plasteel/grimy,
/area/library)
"chP" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/library)
"chV" = (
@@ -67332,7 +67332,7 @@
/turf/open/floor/wood,
/area/lawoffice)
"ckg" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/sign/poster/official/report_crimes{
pixel_y = -32
@@ -68629,7 +68629,7 @@
/obj/machinery/status_display/ai{
pixel_x = 32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/wood,
/area/crew_quarters/heads/hop)
@@ -69227,7 +69227,7 @@
/area/aisat)
"cnu" = (
/obj/structure/cable/white,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/power/apc{
@@ -69269,7 +69269,7 @@
icon_state = "1-2"
},
/obj/structure/table/reinforced,
-/obj/item/twohanded/required/kirbyplants/photosynthetic{
+/obj/item/kirbyplants/photosynthetic{
pixel_y = 10
},
/obj/effect/turf_decal/tile/neutral{
@@ -69302,7 +69302,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/ai_upload)
"cny" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light,
/obj/machinery/airalarm{
dir = 1;
@@ -69789,7 +69789,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"cot" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/item/radio/intercom{
name = "Station Intercom";
pixel_x = -26
@@ -70405,7 +70405,7 @@
/turf/closed/wall,
/area/crew_quarters/heads/hop)
"cpD" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/hop)
"cpE" = (
@@ -70423,7 +70423,7 @@
dir = 1;
pixel_y = -26
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/hop)
"cpG" = (
@@ -70438,7 +70438,7 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/hop)
"cpH" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/wood,
/area/crew_quarters/heads/hop)
@@ -70601,7 +70601,7 @@
/turf/open/floor/plasteel/dark,
/area/security/courtroom)
"cpW" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -70616,7 +70616,7 @@
/turf/open/floor/plasteel/dark,
/area/security/courtroom)
"cpX" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
@@ -71555,7 +71555,7 @@
/turf/open/floor/plating,
/area/engine/engineering)
"crQ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/camera{
c_tag = "Engineering - Central";
dir = 4;
@@ -72637,7 +72637,7 @@
/turf/open/floor/plasteel,
/area/maintenance/port)
"ctH" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line{
dir = 6
@@ -72661,7 +72661,7 @@
/area/library)
"ctK" = (
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/camera{
c_tag = "Library - Aft";
dir = 1;
@@ -72682,7 +72682,7 @@
/area/library)
"ctM" = (
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light_switch{
pixel_y = -26
},
@@ -72690,7 +72690,7 @@
/turf/open/floor/plasteel/grimy,
/area/library)
"ctN" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/grimy,
/area/library)
"ctO" = (
@@ -72937,7 +72937,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/blue{
@@ -73350,7 +73350,7 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -73368,7 +73368,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -74249,7 +74249,7 @@
/turf/open/floor/plating,
/area/maintenance/port)
"cwq" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/dark,
/area/library)
"cwr" = (
@@ -74328,7 +74328,7 @@
/turf/open/floor/plasteel/dark,
/area/library)
"cwy" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -74381,7 +74381,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -74398,7 +74398,7 @@
/turf/open/floor/plasteel,
/area/ai_monitored/storage/eva)
"cwE" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -74430,7 +74430,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 5
},
@@ -74527,7 +74527,7 @@
/obj/structure/cable/white{
icon_state = "4-8"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/blue,
@@ -74585,7 +74585,7 @@
/turf/open/floor/plasteel,
/area/gateway)
"cwV" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
@@ -74728,7 +74728,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"cxh" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -75078,7 +75078,7 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"cxI" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/structure/sign/warning/electricshock{
pixel_y = 32
@@ -75942,7 +75942,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -76166,8 +76166,8 @@
pixel_x = 26
},
/obj/effect/turf_decal/bot,
-/obj/item/twohanded/rcl/pre_loaded,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/turf/open/floor/plasteel,
/area/engine/storage)
"czz" = (
@@ -77096,13 +77096,13 @@
/area/maintenance/port)
"cAZ" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/maintenance/port)
"cBa" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/extinguisher_cabinet{
pixel_x = -26
},
@@ -77149,7 +77149,7 @@
/turf/open/floor/plasteel/dark,
/area/library)
"cBh" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/newscaster{
pixel_x = 32
},
@@ -77519,7 +77519,7 @@
dir = 4;
pixel_x = -24
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -77596,7 +77596,7 @@
/turf/open/floor/plating,
/area/crew_quarters/toilet/restrooms)
"cBR" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -79212,7 +79212,7 @@
/turf/open/floor/plasteel/dark,
/area/library)
"cEr" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/item/radio/intercom{
name = "Station Intercom";
pixel_y = -26
@@ -79906,7 +79906,7 @@
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"cFy" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/dorms)
"cFz" = (
@@ -80150,7 +80150,7 @@
/area/engine/engineering)
"cFT" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable/white{
icon_state = "1-8"
},
@@ -80306,7 +80306,7 @@
name = "Station Intercom";
pixel_y = -26
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
@@ -80327,7 +80327,7 @@
/turf/open/floor/plasteel,
/area/ai_monitored/storage/eva)
"cGl" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/ai_monitored/storage/eva)
@@ -80387,7 +80387,7 @@
dir = 1;
pixel_y = -26
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light,
/turf/open/floor/plasteel/grimy,
/area/bridge/showroom/corporate)
@@ -80427,7 +80427,7 @@
pixel_x = 7;
pixel_y = -26
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light,
/turf/open/floor/plasteel/grimy,
/area/bridge/showroom/corporate)
@@ -80490,7 +80490,7 @@
dir = 1;
pixel_y = -22
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
@@ -80744,7 +80744,7 @@
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"cGY" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
@@ -80830,7 +80830,7 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"cHi" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
@@ -80894,7 +80894,7 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"cHp" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
@@ -80905,7 +80905,7 @@
/turf/open/floor/plasteel,
/area/engine/engineering)
"cHq" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/structure/sign/warning/electricshock{
pixel_y = -32
@@ -80984,7 +80984,7 @@
/area/maintenance/port)
"cHy" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plating,
/area/maintenance/port)
"cHz" = (
@@ -83165,7 +83165,7 @@
/turf/open/floor/plating,
/area/crew_quarters/dorms)
"cKY" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -83298,7 +83298,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
"cLi" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -83939,7 +83939,7 @@
},
/area/crew_quarters/dorms)
"cMs" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -85029,7 +85029,7 @@
/turf/open/floor/plasteel,
/area/maintenance/department/electrical)
"cOw" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/maintenance/department/electrical)
@@ -85046,7 +85046,7 @@
/obj/machinery/light_switch{
pixel_y = 26
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/bot,
@@ -85308,7 +85308,7 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"cPb" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 1
},
@@ -85447,7 +85447,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cPr" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 1
},
@@ -85562,7 +85562,7 @@
name = "medbay camera";
network = list("ss13","medbay")
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
@@ -85794,7 +85794,7 @@
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"cPT" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/item/radio/intercom{
name = "Station Intercom";
pixel_x = 26;
@@ -85932,7 +85932,7 @@
/turf/open/floor/plasteel/dark/corner,
/area/maintenance/department/electrical)
"cQi" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/maintenance/department/electrical)
@@ -86156,7 +86156,7 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"cQC" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/purple{
dir = 4
@@ -86372,7 +86372,7 @@
/turf/open/floor/plasteel,
/area/science/research)
"cQR" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/purple{
@@ -86381,7 +86381,7 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"cQS" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/blue{
@@ -86458,7 +86458,7 @@
/turf/open/floor/plasteel,
/area/medical/medbay/central)
"cQY" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/blue{
@@ -86467,7 +86467,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cQZ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/button/door{
desc = "A remote control switch for the medbay foyer.";
id = "MedbayFoyer";
@@ -86675,7 +86675,7 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/dorms)
"cRv" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/nanotrasen{
pixel_x = 32;
pixel_y = -32
@@ -87219,7 +87219,7 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/science/research)
"cSp" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/purple{
@@ -87585,7 +87585,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cSR" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/item/storage/pod{
pixel_x = 32;
pixel_y = 32
@@ -87846,7 +87846,7 @@
/obj/machinery/status_display/evac{
pixel_x = -32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/maintenance/department/electrical)
@@ -88018,7 +88018,7 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cTF" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
@@ -89359,7 +89359,7 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cVM" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 1
},
@@ -89550,7 +89550,7 @@
/turf/open/floor/plating,
/area/security/checkpoint/science/research)
"cWb" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/purple{
@@ -89603,7 +89603,7 @@
/turf/open/floor/plasteel,
/area/science/research)
"cWf" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/purple,
@@ -89628,7 +89628,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/blue{
@@ -89669,7 +89669,7 @@
/turf/open/floor/plasteel,
/area/medical/medbay/central)
"cWl" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/blue,
@@ -89990,7 +89990,7 @@
/turf/open/floor/plasteel,
/area/maintenance/department/electrical)
"cWK" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
@@ -90392,7 +90392,7 @@
/obj/machinery/light{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/camera{
c_tag = "Security Post - Science";
dir = 8;
@@ -90439,7 +90439,7 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"cXu" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/purple{
@@ -90485,7 +90485,7 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"cXy" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/purple,
@@ -90558,7 +90558,7 @@
/area/medical/medbay/central)
"cXJ" = (
/obj/structure/disposalpipe/segment,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/blue{
@@ -90601,7 +90601,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cXN" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/blue,
@@ -91099,7 +91099,7 @@
/obj/machinery/light_switch{
pixel_y = -26
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/maintenance/department/electrical)
@@ -91228,7 +91228,7 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cYT" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -91648,7 +91648,7 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/medical)
"cZE" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/airalarm{
dir = 8;
pixel_x = 24
@@ -92196,7 +92196,7 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"dau" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
@@ -92464,7 +92464,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/status_display/evac{
pixel_y = 32
},
@@ -94074,7 +94074,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"ddy" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
@@ -94292,7 +94292,7 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"ddT" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/science/xenobiology)
@@ -94581,7 +94581,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"dev" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light/small,
/obj/effect/turf_decal/tile/blue,
/turf/open/floor/plasteel/white,
@@ -94759,7 +94759,7 @@
/obj/structure/sign/departments/examroom{
pixel_x = -32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
@@ -94821,7 +94821,7 @@
/turf/open/floor/plasteel,
/area/medical/abandoned)
"deS" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/medical/abandoned)
@@ -95021,7 +95021,7 @@
/turf/open/floor/plasteel,
/area/science/research)
"dfl" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/item/storage/pod{
pixel_x = 32
},
@@ -95482,7 +95482,7 @@
/turf/closed/wall,
/area/crew_quarters/abandoned_gambling_den)
"dfZ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/cobweb,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
@@ -95494,7 +95494,7 @@
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"dgb" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/abandoned_gambling_den)
@@ -95537,7 +95537,7 @@
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"dgf" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
"dgg" = (
@@ -95713,7 +95713,7 @@
/turf/open/floor/plasteel/dark,
/area/science/xenobiology)
"dgu" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/purple{
dir = 1
},
@@ -95976,7 +95976,7 @@
/turf/open/floor/plasteel,
/area/science/lab)
"dgP" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/purple,
/turf/open/floor/plasteel/white,
/area/science/lab)
@@ -96584,7 +96584,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/abandoned_gambling_den)
"dhP" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/structure/sign/poster/contraband/random{
pixel_x = 32
@@ -97537,7 +97537,7 @@
/turf/open/floor/plasteel/white/corner,
/area/science/circuit)
"djo" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/science/research/abandoned)
@@ -97557,7 +97557,7 @@
/turf/open/floor/plasteel/white/side,
/area/science/circuit)
"djs" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
@@ -97862,7 +97862,7 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"djW" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -97981,7 +97981,7 @@
/turf/open/floor/plasteel,
/area/science/lab)
"dke" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/purple{
@@ -97997,7 +97997,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"dkf" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/yellow{
@@ -98344,7 +98344,7 @@
/area/medical/abandoned)
"dkJ" = (
/obj/machinery/light/small,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/medical/abandoned)
@@ -98993,7 +98993,7 @@
/turf/closed/wall,
/area/hallway/secondary/construction)
"dmi" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/crew_quarters/abandoned_gambling_den)
@@ -99138,7 +99138,7 @@
/turf/open/floor/plasteel,
/area/science/misc_lab)
"dmB" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/bot,
/obj/machinery/light_switch{
pixel_x = -26
@@ -99526,7 +99526,7 @@
/turf/open/floor/plasteel/white,
/area/medical/genetics/cloning)
"dno" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/purple{
dir = 1
},
@@ -99605,7 +99605,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"dnv" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
@@ -99682,7 +99682,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"dnC" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -101199,7 +101199,7 @@
/turf/open/floor/plasteel,
/area/science/explab)
"dqr" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -101848,7 +101848,7 @@
pixel_x = 1;
pixel_y = -24
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/white/side{
dir = 1
},
@@ -102000,7 +102000,7 @@
/obj/structure/cable/white,
/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/bot,
-/obj/item/twohanded/required/kirbyplants/dead,
+/obj/item/kirbyplants/dead,
/turf/open/floor/plasteel,
/area/crew_quarters/heads/hor)
"drY" = (
@@ -102261,7 +102261,7 @@
/turf/open/floor/plasteel/white,
/area/medical/genetics/cloning)
"dsy" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/blue,
/turf/open/floor/plasteel/white,
@@ -103223,7 +103223,7 @@
/turf/open/floor/plating,
/area/science/research/abandoned)
"dun" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/science/research/abandoned)
@@ -103629,7 +103629,7 @@
/turf/closed/wall,
/area/medical/genetics)
"dvd" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
dir = 4;
pixel_x = -24
@@ -103722,7 +103722,7 @@
/turf/open/floor/plasteel,
/area/medical/genetics)
"dvm" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/firealarm{
pixel_x = -26;
pixel_y = 26
@@ -104228,7 +104228,7 @@
/turf/open/floor/wood,
/area/crew_quarters/abandoned_gambling_den)
"dvY" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/abandoned_gambling_den)
"dvZ" = (
@@ -105713,7 +105713,7 @@
/turf/open/floor/plating,
/area/crew_quarters/heads/cmo)
"dyy" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
@@ -105759,7 +105759,7 @@
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/cmo)
"dyC" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -106505,7 +106505,7 @@
/turf/open/floor/plasteel,
/area/medical/genetics)
"dzR" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/purple,
/turf/open/floor/plasteel/white,
/area/medical/genetics)
@@ -106667,7 +106667,7 @@
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/cmo)
"dAf" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable/white{
icon_state = "0-8"
},
@@ -107160,7 +107160,7 @@
/turf/open/floor/plasteel,
/area/medical/genetics)
"dAZ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/airalarm{
dir = 1;
pixel_y = -22
@@ -107222,7 +107222,7 @@
/obj/structure/sign/poster/official/do_not_question{
pixel_y = -32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/purple{
dir = 8
},
@@ -109085,7 +109085,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"dEe" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/item/radio/intercom{
name = "Station Intercom";
pixel_y = -26
@@ -109476,7 +109476,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/science/robotics/lab)
"dEO" = (
@@ -109763,7 +109763,7 @@
/turf/open/floor/wood,
/area/crew_quarters/theatre/abandoned)
"dFq" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood{
icon_state = "wood-broken5"
},
@@ -110729,7 +110729,7 @@
/obj/machinery/newscaster{
pixel_x = -32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plating,
/area/security/detectives_office/private_investigators_office)
"dGM" = (
@@ -112258,7 +112258,7 @@
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/cmo)
"dJm" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/green{
dir = 8
@@ -112437,7 +112437,7 @@
/obj/machinery/light/small{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/poster/official/do_not_question{
pixel_x = 32
},
@@ -112733,7 +112733,7 @@
/turf/open/floor/circuit/green/telecomms/mainframe,
/area/science/server)
"dKh" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/purple{
dir = 8
@@ -113137,7 +113137,7 @@
dir = 4
},
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -113385,7 +113385,7 @@
/turf/open/floor/plasteel,
/area/maintenance/aft)
"dLj" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
@@ -113411,7 +113411,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"dLl" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/obj/effect/turf_decal/tile/green{
dir = 4
@@ -113523,7 +113523,7 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/theatre/abandoned)
"dLv" = (
@@ -113846,7 +113846,7 @@
/turf/open/floor/plasteel,
/area/science/research)
"dMg" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -114427,7 +114427,7 @@
/area/crew_quarters/theatre/abandoned)
"dNb" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/theatre/abandoned)
"dNc" = (
@@ -114435,7 +114435,7 @@
dir = 1;
pixel_y = -22
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood{
icon_state = "wood-broken3"
},
@@ -115217,7 +115217,7 @@
/turf/open/floor/plasteel,
/area/maintenance/port/aft)
"dOz" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/airalarm{
dir = 4;
pixel_x = -23
@@ -115297,7 +115297,7 @@
name = "hallway camera"
},
/obj/effect/turf_decal/bot,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -115348,7 +115348,7 @@
/area/hallway/primary/aft)
"dOI" = (
/obj/machinery/light/small,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/tile/green{
dir = 8
@@ -115745,7 +115745,7 @@
/area/library/abandoned)
"dPw" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -115771,7 +115771,7 @@
/area/library/abandoned)
"dPz" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/dark,
/area/library/abandoned)
"dPA" = (
@@ -115806,7 +115806,7 @@
/area/library/abandoned)
"dPE" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/grimy,
/area/library/abandoned)
"dPF" = (
@@ -116185,7 +116185,7 @@
/turf/open/floor/plating,
/area/medical/virology)
"dQi" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/green{
dir = 1
},
@@ -116195,7 +116195,7 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/green{
dir = 1
},
@@ -116205,7 +116205,7 @@
/turf/open/floor/plasteel/white,
/area/medical/virology)
"dQk" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/green{
dir = 4
},
@@ -116262,7 +116262,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = 26
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/green{
dir = 4
},
@@ -117955,14 +117955,14 @@
/turf/open/floor/plasteel/grimy,
/area/library/abandoned)
"dTq" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood{
icon_state = "wood-broken7"
},
/area/library/abandoned)
"dTr" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood{
icon_state = "wood-broken"
},
@@ -118029,7 +118029,7 @@
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"dTz" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -118053,7 +118053,7 @@
"dTC" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -118117,7 +118117,7 @@
/area/hallway/secondary/exit/departure_lounge)
"dTJ" = (
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -118369,7 +118369,7 @@
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"dUk" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 4
},
@@ -118436,7 +118436,7 @@
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"dUo" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -118457,7 +118457,7 @@
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"dUq" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/item/radio/intercom{
name = "Station Intercom";
pixel_y = 26
@@ -118523,7 +118523,7 @@
"dUv" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
@@ -118589,7 +118589,7 @@
/area/hallway/secondary/exit/departure_lounge)
"dUB" = (
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
@@ -118916,7 +118916,7 @@
/obj/machinery/status_display/evac{
pixel_y = 32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/medical/virology)
@@ -119496,11 +119496,11 @@
/area/library/abandoned)
"dWE" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plating,
/area/library/abandoned)
"dWF" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plating,
/area/library/abandoned)
"dWG" = (
@@ -119571,7 +119571,7 @@
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"dWM" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/camera{
c_tag = "Chapel - Port";
dir = 4;
@@ -119610,7 +119610,7 @@
},
/area/chapel/main)
"dWR" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel{
dir = 4;
icon_state = "chapel"
@@ -120150,7 +120150,7 @@
icon_state = "1-2"
},
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
@@ -120366,7 +120366,7 @@
},
/area/library/abandoned)
"dYl" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light/small,
/turf/open/floor/wood{
icon_state = "wood-broken3"
@@ -120390,7 +120390,7 @@
/area/library/abandoned)
"dYo" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/library/abandoned)
"dYp" = (
@@ -120528,7 +120528,7 @@
icon_state = "1-2"
},
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -120627,7 +120627,7 @@
/turf/open/floor/plasteel,
/area/medical/virology)
"dYS" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/medical/virology)
@@ -120636,7 +120636,7 @@
/obj/machinery/status_display/evac{
pixel_y = -32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/medical/virology)
@@ -120910,7 +120910,7 @@
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
@@ -121342,7 +121342,7 @@
/obj/structure/sign/nanotrasen{
pixel_y = -32
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
@@ -122136,7 +122136,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"ebP" = (
@@ -122242,7 +122242,7 @@
},
/area/chapel/main)
"ebZ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 4
},
@@ -122530,7 +122530,7 @@
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"ecE" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light_switch{
pixel_x = 24;
pixel_y = -24
@@ -122555,7 +122555,7 @@
name = "departures camera"
},
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -123352,7 +123352,7 @@
/turf/open/floor/plasteel/grimy,
/area/chapel/office)
"edW" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/warning/nosmoking{
pixel_x = 32
},
@@ -123508,7 +123508,7 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 10
},
@@ -123554,7 +123554,7 @@
icon_state = "1-2"
},
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 6
},
@@ -123620,7 +123620,7 @@
/turf/open/floor/plasteel/grimy,
/area/chapel/office)
"eey" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/camera{
c_tag = "Chapel Quarters";
name = "chapel camera"
@@ -124523,7 +124523,7 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/escape)
"egi" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/red,
/obj/effect/turf_decal/tile/red{
dir = 8
@@ -124987,7 +124987,7 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/camera{
c_tag = "MiniSat Service Bay";
dir = 8;
@@ -126296,7 +126296,7 @@
/turf/open/floor/plasteel/dark,
/area/science/mixing)
"oNF" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/security/prison)
"oSD" = (
@@ -126538,7 +126538,7 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"rPK" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm
index b205e7c324..b4c6b0c12d 100644
--- a/_maps/map_files/KiloStation/KiloStation.dmm
+++ b/_maps/map_files/KiloStation/KiloStation.dmm
@@ -3429,7 +3429,7 @@
/obj/structure/cable{
icon_state = "0-8"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel/showroomfloor,
@@ -8802,7 +8802,7 @@
/turf/open/floor/plating,
/area/medical/virology)
"aoR" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
@@ -8959,7 +8959,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/turf/open/floor/plasteel/dark,
/area/security/courtroom)
"apj" = (
@@ -9122,7 +9122,7 @@
/turf/open/floor/plasteel/dark,
/area/teleporter)
"apw" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
@@ -10947,7 +10947,7 @@
/turf/open/floor/engine,
/area/space)
"asg" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/dark,
@@ -11992,7 +11992,7 @@
/turf/open/floor/circuit/green/telecomms/mainframe,
/area/tcommsat/server)
"atV" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/effect/turf_decal/tile/neutral,
@@ -14194,7 +14194,7 @@
/obj/machinery/cell_charger,
/obj/item/stock_parts/cell/hyper,
/obj/item/stack/cable_coil,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
@@ -14307,8 +14307,8 @@
/obj/item/stack/cable_coil,
/obj/item/electronics/apc,
/obj/item/electronics/apc,
-/obj/item/twohanded/rcl/pre_loaded,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/turf/open/floor/plasteel/dark,
/area/engine/engineering)
"axR" = (
@@ -17393,7 +17393,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/blue,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer1{
@@ -19751,7 +19751,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel,
@@ -19770,7 +19770,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
desc = "After his promotion, he was transferred to Kilo Station to serve as the gateway's protector.";
icon_state = "plant-21";
name = "rodger"
@@ -20601,7 +20601,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/blue,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel/showroomfloor,
@@ -20638,7 +20638,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/dark,
@@ -21015,7 +21015,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/light{
@@ -22183,7 +22183,7 @@
/area/hallway/primary/aft)
"aKO" = (
/obj/effect/decal/cleanable/cobweb,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/obj/effect/decal/cleanable/blood/old,
@@ -22217,7 +22217,7 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"aKR" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/wood,
@@ -22678,7 +22678,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/airalarm{
@@ -24453,7 +24453,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel/showroomfloor,
@@ -24742,7 +24742,7 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -24875,7 +24875,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/purple,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/machinery/button/door{
@@ -28508,7 +28508,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/blue,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18"
},
/obj/machinery/camera{
@@ -28850,7 +28850,7 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/structure/disposalpipe/segment{
@@ -28949,7 +28949,7 @@
dir = 1
},
/obj/effect/decal/cleanable/cobweb,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -30057,7 +30057,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/yellow,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18"
},
/turf/open/floor/plasteel/showroomfloor,
@@ -33869,7 +33869,7 @@
},
/obj/effect/turf_decal/tile/yellow,
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel,
@@ -38992,7 +38992,7 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/plasteel,
@@ -39326,7 +39326,7 @@
/obj/effect/turf_decal/tile/green{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -39567,7 +39567,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/structure/cable{
icon_state = "4-8"
},
@@ -39606,7 +39606,7 @@
/area/quartermaster/sorting)
"blR" = (
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/structure/cable{
icon_state = "4-8"
},
@@ -39923,7 +39923,7 @@
/turf/open/floor/plasteel/dark,
/area/quartermaster/storage)
"bmo" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/machinery/firealarm{
@@ -40109,7 +40109,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/dark,
@@ -40960,7 +40960,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/yellow,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/plasteel,
@@ -40992,7 +40992,7 @@
/turf/open/floor/plasteel/dark,
/area/quartermaster/office)
"bnZ" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
@@ -42301,7 +42301,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/machinery/power/apc/highcap/ten_k{
areastring = "/area/bridge";
dir = 8;
@@ -42952,7 +42952,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/obj/machinery/light{
@@ -43018,7 +43018,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel/dark,
@@ -43216,7 +43216,7 @@
/obj/machinery/light/small{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/structure/spider/stickyweb,
@@ -43856,7 +43856,7 @@
/turf/open/floor/plasteel/dark,
/area/quartermaster/office)
"bsA" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -44007,7 +44007,7 @@
/turf/open/floor/plasteel,
/area/hydroponics)
"bsM" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/light_switch{
@@ -44136,7 +44136,7 @@
dir = 1
},
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/plasteel,
@@ -44744,7 +44744,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar)
"btZ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/neutral{
@@ -45146,7 +45146,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -45872,7 +45872,7 @@
/turf/open/floor/plasteel/showroomfloor,
/area/crew_quarters/toilet/restrooms)
"bvP" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/turf/open/floor/plasteel/showroomfloor,
@@ -45926,7 +45926,7 @@
/turf/open/floor/plasteel/dark,
/area/library)
"bvV" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -45969,7 +45969,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
@@ -46000,7 +46000,7 @@
/obj/structure/noticeboard{
pixel_y = 30
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-17";
pixel_x = -8;
pixel_y = 3
@@ -46124,7 +46124,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/structure/extinguisher_cabinet{
pixel_x = 24
},
@@ -46864,7 +46864,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/fitness/recreation)
"bxF" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -46970,14 +46970,14 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"bxO" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel/showroomfloor,
@@ -47265,7 +47265,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -48696,7 +48696,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/blue,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/structure/disposalpipe/segment,
@@ -49042,7 +49042,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -49723,7 +49723,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 6
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel,
@@ -51809,7 +51809,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/dark,
@@ -51937,7 +51937,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 9
},
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/structure/cable{
icon_state = "1-8"
},
@@ -52034,7 +52034,7 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/machinery/airalarm{
@@ -53281,7 +53281,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 10
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel,
@@ -53305,7 +53305,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 6
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel/dark/corner{
@@ -54405,7 +54405,7 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/decal/cleanable/cobweb/cobweb2,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/structure/extinguisher_cabinet{
@@ -54428,7 +54428,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/structure/extinguisher_cabinet{
@@ -54780,7 +54780,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/item/radio/intercom{
@@ -55592,7 +55592,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/obj/structure/cable{
@@ -55782,7 +55782,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/machinery/firealarm{
@@ -56179,7 +56179,7 @@
/obj/item/radio/intercom{
pixel_x = -28
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
},
@@ -57850,7 +57850,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/machinery/power/apc/highcap/five_k{
@@ -58148,7 +58148,7 @@
dir = 1
},
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
},
@@ -58242,7 +58242,7 @@
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-11"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -58401,7 +58401,7 @@
/obj/machinery/status_display/ai{
pixel_x = 32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -58484,7 +58484,7 @@
/area/hallway/primary/central)
"bPT" = (
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
},
@@ -58625,7 +58625,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/red,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -59282,7 +59282,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/decal/cleanable/dirt,
@@ -60372,7 +60372,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/plasteel,
@@ -60727,7 +60727,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/turf/open/floor/plasteel,
@@ -60975,7 +60975,7 @@
dir = 1
},
/obj/effect/decal/cleanable/dirt,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
},
@@ -62452,7 +62452,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/dark,
@@ -63053,7 +63053,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -63294,7 +63294,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/yellow,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/machinery/light,
@@ -63575,7 +63575,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
},
@@ -64071,7 +64071,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/red,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/structure/noticeboard{
@@ -64685,7 +64685,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bZx" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral,
@@ -64968,7 +64968,7 @@
/obj/effect/turf_decal/tile/red{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/light_switch{
@@ -65990,7 +65990,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/yellow,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/decal/cleanable/dirt,
@@ -66540,7 +66540,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/structure/cable{
@@ -67260,7 +67260,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/showroomfloor,
@@ -67358,7 +67358,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
},
@@ -67609,7 +67609,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer1{
@@ -68128,7 +68128,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/showroomfloor,
@@ -68157,7 +68157,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
dir = 9
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
},
@@ -68226,7 +68226,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -68250,7 +68250,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/effect/turf_decal/tile/neutral{
@@ -71550,7 +71550,7 @@
/turf/open/floor/plasteel,
/area/security/processing)
"cld" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
},
@@ -72402,7 +72402,7 @@
/obj/structure/noticeboard{
pixel_y = 28
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/plasteel,
@@ -72422,7 +72422,7 @@
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/turf/open/floor/plasteel,
@@ -80543,7 +80543,7 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/fore)
"cDr" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02";
pixel_y = 3
},
@@ -80825,7 +80825,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/security/armory)
"cDT" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/effect/turf_decal/tile/neutral,
@@ -84616,7 +84616,7 @@
icon_state = "1-4"
},
/obj/machinery/airalarm/directional/west,
-/obj/item/twohanded/required/kirbyplants/dead,
+/obj/item/kirbyplants/dead,
/turf/open/floor/wood,
/area/security/vacantoffice)
"esR" = (
@@ -85463,7 +85463,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm
index 825bc3c2aa..c6553c728e 100644
--- a/_maps/map_files/LambdaStation/lambda.dmm
+++ b/_maps/map_files/LambdaStation/lambda.dmm
@@ -15609,7 +15609,7 @@
/obj/effect/turf_decal/tile/purple{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/newscaster{
pixel_x = -30
},
@@ -15985,7 +15985,7 @@
/turf/closed/wall/r_wall,
/area/crew_quarters/heads/hor/private)
"aDh" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/hor/private)
"aDi" = (
@@ -16008,7 +16008,7 @@
/obj/effect/turf_decal/tile/purple{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/white,
/area/science/explab)
"aDl" = (
@@ -21689,7 +21689,7 @@
/turf/open/floor/plasteel,
/area/security/brig)
"aNv" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/trimline/neutral/filled/corner,
/turf/open/floor/plasteel/dark,
/area/security/brig)
@@ -21757,7 +21757,7 @@
/turf/open/floor/plasteel/grimy,
/area/lawoffice)
"aNA" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-08"
},
/obj/structure/disposalpipe/segment{
@@ -23804,7 +23804,7 @@
/turf/open/floor/plasteel,
/area/security/range)
"aRr" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/captain/private)
"aRs" = (
@@ -23834,7 +23834,7 @@
dir = 8;
light_color = "#e8eaff"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/hop/private)
"aRw" = (
@@ -25005,7 +25005,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"aTI" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/hallway/secondary/command)
"aTJ" = (
@@ -25230,7 +25230,7 @@
/turf/open/floor/plating,
/area/maintenance/fore/secondary)
"aUi" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/camera/autoname{
dir = 1
},
@@ -27581,7 +27581,7 @@
/turf/open/floor/plating,
/area/crew_quarters/heads/captain)
"aYV" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/captain)
"aYX" = (
@@ -34830,7 +34830,7 @@
/obj/effect/turf_decal/tile{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"bmX" = (
@@ -36560,7 +36560,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/crew_quarters/cafeteria)
"bqv" = (
@@ -38499,7 +38499,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/red,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"buh" = (
@@ -42115,7 +42115,7 @@
/turf/open/floor/plasteel/white,
/area/medical/cryo)
"bBv" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
@@ -45627,7 +45627,7 @@
/turf/open/floor/carpet/blue,
/area/crew_quarters/heads/cmo/private)
"bHP" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/cmo/private)
"bHQ" = (
@@ -48277,7 +48277,7 @@
/obj/structure/cable{
icon_state = "1-4"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/structure/cable{
icon_state = "0-4"
@@ -50299,7 +50299,7 @@
/turf/open/floor/wood,
/area/maintenance/bar)
"bPX" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/crew_quarters/cafeteria)
"bPY" = (
@@ -50976,7 +50976,7 @@
/turf/open/floor/plasteel/dark,
/area/bridge/showroom/corporate)
"bRs" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"bRu" = (
@@ -51416,7 +51416,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"bSx" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/trimline/neutral/filled/line{
dir = 8
},
@@ -52110,7 +52110,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"bTR" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/grimy,
@@ -55491,7 +55491,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable{
icon_state = "1-2"
},
@@ -56279,7 +56279,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/chief)
"cbt" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light_switch{
pixel_x = 26;
pixel_y = -26
@@ -60349,8 +60349,8 @@
},
/obj/item/stack/cable_coil,
/obj/item/stack/cable_coil,
-/obj/item/twohanded/rcl/pre_loaded,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/turf/open/floor/plasteel,
/area/engine/break_room)
"ckz" = (
@@ -61189,7 +61189,7 @@
/turf/open/floor/plasteel/dark,
/area/storage/tcom)
"cml" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable{
icon_state = "1-8"
},
@@ -63310,7 +63310,7 @@
/area/engine/break_room)
"cqz" = (
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/cable{
icon_state = "1-4"
},
@@ -64537,7 +64537,7 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"ctc" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile{
dir = 1
},
@@ -64547,7 +64547,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"ctd" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile{
dir = 4
},
@@ -64808,7 +64808,7 @@
/obj/structure/cable{
icon_state = "1-8"
},
-/obj/item/twohanded/required/kirbyplants/photosynthetic,
+/obj/item/kirbyplants/photosynthetic,
/obj/structure/disposalpipe/segment{
dir = 9
},
@@ -66739,7 +66739,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"cyc" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/trimline/yellow/filled/line{
dir = 6
},
@@ -66842,8 +66842,8 @@
},
/obj/item/electronics/airlock,
/obj/item/electronics/airlock,
-/obj/item/twohanded/rcl/pre_loaded,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/turf/open/floor/plasteel,
/area/engine/storage_shared)
"cyq" = (
@@ -67734,7 +67734,7 @@
/turf/open/floor/plasteel/dark,
/area/bridge)
"cAd" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/trimline/neutral/filled/corner{
dir = 4
},
@@ -70414,7 +70414,7 @@
/area/crew_quarters/locker)
"cFb" = (
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18"
},
/obj/item/radio/intercom{
@@ -75050,7 +75050,7 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"cNx" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/camera{
c_tag = "Atmospherics - Control Room";
dir = 4
@@ -78128,7 +78128,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"cUc" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/trimline/neutral/filled/line{
dir = 4
},
@@ -78138,7 +78138,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"cUd" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/sign/departments/holy{
pixel_x = -32
},
@@ -78405,7 +78405,7 @@
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cUN" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/chief/private)
"cUO" = (
@@ -80604,7 +80604,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel/dark,
/area/science/circuit)
"gIA" = (
@@ -80945,7 +80945,7 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/hallway/secondary/exit/departure_lounge)
"kNb" = (
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index be85b5186c..794f05498d 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -226,7 +226,7 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/turf/open/floor/plasteel,
@@ -245,7 +245,7 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/turf/open/floor/plasteel,
/area/security/prison)
"aaE" = (
@@ -1224,7 +1224,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-13"
},
/turf/open/floor/plasteel,
@@ -2668,7 +2668,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/obj/structure/sign/warning/securearea{
@@ -2992,7 +2992,7 @@
/turf/open/floor/plating,
/area/maintenance/solars/port/fore)
"afF" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -13096,7 +13096,7 @@
/turf/open/space,
/area/space/nearstation)
"aze" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/decal/cleanable/cobweb/cobweb2,
@@ -14391,7 +14391,7 @@
/area/maintenance/starboard/fore)
"aBD" = (
/obj/effect/decal/cleanable/cobweb,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-20";
pixel_y = 3
},
@@ -17087,8 +17087,8 @@
/obj/effect/turf_decal/bot{
dir = 1
},
-/obj/item/twohanded/rcl/pre_loaded,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/turf/open/floor/plasteel{
dir = 1
},
@@ -18152,7 +18152,7 @@
name = "Law Office APC";
pixel_y = 24
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/wood,
@@ -19168,7 +19168,7 @@
c_tag = "AI Upload Chamber - Fore";
network = list("aiupload")
},
-/obj/item/twohanded/required/kirbyplants/photosynthetic{
+/obj/item/kirbyplants/photosynthetic{
pixel_y = 10
},
/turf/open/floor/plasteel/dark,
@@ -21677,7 +21677,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -27
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/obj/effect/turf_decal/tile/neutral{
@@ -23960,7 +23960,7 @@
/turf/open/floor/plating,
/area/hallway/secondary/entry)
"aVt" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-13"
},
/obj/effect/turf_decal/stripes/line{
@@ -24308,7 +24308,7 @@
/obj/machinery/airalarm{
pixel_y = 23
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/effect/turf_decal/tile/neutral{
@@ -24419,7 +24419,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = 27
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/obj/item/radio/intercom{
@@ -25668,7 +25668,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"aYF" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/effect/turf_decal/stripes/line{
@@ -26198,7 +26198,7 @@
charge = 100;
maxcharge = 15000
},
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
@@ -36994,7 +36994,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"btR" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18"
},
/obj/effect/turf_decal/stripes/line{
@@ -37778,7 +37778,7 @@
/turf/open/floor/plasteel/grimy,
/area/tcommsat/computer)
"bvB" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-20"
},
/obj/effect/turf_decal/stripes/line{
@@ -40424,7 +40424,7 @@
/turf/open/floor/wood,
/area/library)
"bBx" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/wood,
@@ -43960,7 +43960,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/yellow,
@@ -44132,7 +44132,7 @@
/turf/open/floor/circuit/telecomms/mainframe,
/area/tcommsat/server)
"bJh" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/grimy,
@@ -44903,7 +44903,7 @@
/turf/open/floor/plasteel/dark,
/area/aisat)
"bKS" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-06"
},
/obj/effect/turf_decal/stripes/line{
@@ -45715,7 +45715,7 @@
icon_state = "map-right-MS";
pixel_y = -32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/obj/effect/turf_decal/tile/blue{
@@ -50967,7 +50967,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -27
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/effect/turf_decal/tile/blue{
@@ -51063,7 +51063,7 @@
dir = 8;
pixel_x = 24
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/purple,
@@ -54569,7 +54569,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"ceI" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-11"
},
/obj/effect/turf_decal/tile/yellow,
@@ -54664,7 +54664,7 @@
name = "Station Intercom (General)";
pixel_y = -30
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-08"
},
/obj/effect/turf_decal/tile/purple,
@@ -59467,7 +59467,7 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"coj" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/purple,
@@ -64176,7 +64176,7 @@
/obj/machinery/light_switch{
pixel_x = -23
},
-/obj/item/twohanded/required/kirbyplants/dead,
+/obj/item/kirbyplants/dead,
/turf/open/floor/plasteel/cafeteria{
dir = 5
},
@@ -68768,7 +68768,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/aft)
"cFQ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -71100,7 +71100,7 @@
/turf/open/floor/plasteel/white,
/area/science/research)
"cJQ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/purple{
@@ -72280,7 +72280,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = 27
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/obj/effect/turf_decal/stripes/line{
@@ -74121,7 +74121,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -27
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-04"
},
/obj/effect/turf_decal/stripes/line{
@@ -74187,7 +74187,7 @@
name = "Station Intercom (General)";
pixel_x = 29
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/obj/effect/turf_decal/stripes/line{
@@ -79738,7 +79738,7 @@
c_tag = "Departure Lounge - Port Fore";
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-24"
},
/obj/effect/turf_decal/stripes/line{
@@ -82772,7 +82772,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel/white,
diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm
index d3a1012177..a772122491 100644
--- a/_maps/map_files/Mining/Lavaland.dmm
+++ b/_maps/map_files/Mining/Lavaland.dmm
@@ -192,14 +192,14 @@
/area/ruin/unpowered/ash_walkers)
"ft" = (
/obj/structure/stone_tile/block,
-/obj/item/twohanded/bonespear,
+/obj/item/spear/bonespear,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/ash_walkers)
"fN" = (
/obj/structure/stone_tile{
dir = 4
},
-/obj/item/twohanded/bonespear,
+/obj/item/spear/bonespear,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"fQ" = (
@@ -529,7 +529,7 @@
},
/obj/structure/table/wood,
/obj/item/clothing/head/helmet/roman/legionnaire,
-/obj/item/twohanded/bonespear,
+/obj/item/spear/bonespear,
/turf/open/indestructible/boss,
/area/ruin/unpowered/ash_walkers)
"iK" = (
@@ -1829,8 +1829,8 @@
"An" = (
/obj/structure/stone_tile/slab,
/obj/structure/table/wood,
-/obj/item/twohanded/bonespear,
-/obj/item/twohanded/bonespear,
+/obj/item/spear/bonespear,
+/obj/item/spear/bonespear,
/turf/open/indestructible/boss,
/area/ruin/unpowered/ash_walkers)
"AH" = (
@@ -1840,7 +1840,7 @@
/obj/structure/stone_tile/cracked{
dir = 8
},
-/obj/item/twohanded/bonespear,
+/obj/item/spear/bonespear,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/ash_walkers)
"AU" = (
@@ -2069,7 +2069,7 @@
},
/obj/structure/table/wood,
/obj/item/scythe,
-/obj/item/twohanded/bonespear,
+/obj/item/spear/bonespear,
/turf/open/indestructible/boss,
/area/ruin/unpowered/ash_walkers)
"HX" = (
@@ -2198,7 +2198,7 @@
},
/obj/structure/table/wood,
/obj/item/storage/belt,
-/obj/item/twohanded/bonespear,
+/obj/item/spear/bonespear,
/turf/open/indestructible/boss,
/area/ruin/unpowered/ash_walkers)
"Qk" = (
@@ -2425,7 +2425,7 @@
/obj/structure/stone_tile/cracked{
dir = 1
},
-/obj/item/twohanded/bonespear,
+/obj/item/spear/bonespear,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/ash_walkers)
"WT" = (
diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm
index 4e02632088..f0dd697530 100644
--- a/_maps/map_files/OmegaStation/OmegaStation.dmm
+++ b/_maps/map_files/OmegaStation/OmegaStation.dmm
@@ -545,7 +545,7 @@
dir = 4
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -601,7 +601,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/neutral{
@@ -1288,17 +1288,31 @@
/turf/open/floor/plating,
/area/engine/gravity_generator)
"abR" = (
-/obj/structure/lattice,
-/turf/open/space,
-/area/asteroid/nearstation)
+/obj/machinery/vr_sleeper{
+ dir = 4
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
"abS" = (
/obj/item/stack/ore/glass,
/obj/effect/turf_decal/sand/plating,
/turf/open/floor/plating,
/area/asteroid/nearstation)
"abT" = (
-/turf/closed/wall,
-/area/asteroid/nearstation)
+/obj/machinery/door/airlock{
+ name = "Unisex Restroom"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/security/prison)
"abU" = (
/turf/closed/wall/r_wall,
/area/crew_quarters/heads/hos)
@@ -1716,11 +1730,15 @@
/turf/open/floor/plating/asteroid,
/area/asteroid/nearstation)
"acE" = (
-/obj/effect/decal/cleanable/blood/old,
-/turf/open/floor/plating{
- icon_state = "platingdmg1"
+/obj/structure/sink{
+ dir = 4;
+ pixel_x = 12
},
-/area/asteroid/nearstation)
+/obj/machinery/shower{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel/freezer,
+/area/security/prison)
"acF" = (
/turf/open/floor/plating,
/area/asteroid/nearstation)
@@ -1735,9 +1753,8 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/hos)
"acH" = (
-/obj/effect/decal/cleanable/cobweb/cobweb2,
-/turf/open/floor/plating,
-/area/asteroid/nearstation)
+/turf/closed/wall/r_wall,
+/area/security/prison)
"acI" = (
/obj/structure/window/reinforced{
dir = 8
@@ -1754,18 +1771,9 @@
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/hos)
"acJ" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/obj/machinery/door/airlock/maintenance_hatch{
- name = "Maintenance Hatch";
- req_access_txt = "12"
- },
-/turf/open/floor/plasteel,
-/area/asteroid/nearstation)
+/obj/structure/girder,
+/turf/open/floor/plating,
+/area/security/prison)
"acK" = (
/obj/structure/dresser,
/obj/structure/sign/warning/vacuum{
@@ -2220,21 +2228,21 @@
/turf/open/floor/plating,
/area/asteroid/nearstation)
"adw" = (
-/turf/open/floor/plating{
- icon_state = "panelscorched"
+/obj/machinery/camera{
+ c_tag = "Prison - VR Sleepers"
},
-/area/asteroid/nearstation)
+/turf/open/floor/plasteel,
+/area/security/prison)
"adx" = (
-/obj/item/clothing/suit/space/orange,
-/obj/item/clothing/head/helmet/space/orange,
-/turf/open/floor/plating,
+/obj/structure/sign/warning/securearea,
+/turf/closed/wall/r_wall,
/area/asteroid/nearstation)
"ady" = (
/turf/closed/wall/rust,
/area/quartermaster/qm)
"adz" = (
-/obj/structure/sign/warning/vacuum,
-/turf/closed/wall,
+/obj/structure/lattice/catwalk,
+/turf/open/floor/plating/asteroid/airless,
/area/asteroid/nearstation)
"adA" = (
/obj/machinery/status_display,
@@ -2351,7 +2359,7 @@
/obj/structure/cable/white{
icon_state = "4-8"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/atmospherics/components/unary/vent_pump/on{
@@ -2666,9 +2674,11 @@
/turf/open/floor/plating,
/area/asteroid/nearstation)
"aem" = (
-/turf/open/floor/plating{
- icon_state = "platingdmg3"
+/obj/structure/lattice/catwalk,
+/obj/structure/sign/warning/securearea{
+ pixel_x = 32
},
+/turf/open/floor/plating/asteroid/airless,
/area/asteroid/nearstation)
"aen" = (
/obj/structure/cable/white{
@@ -2691,10 +2701,8 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/hos)
"aep" = (
-/turf/open/floor/plating{
- icon_state = "platingdmg2"
- },
-/area/asteroid/nearstation)
+/turf/open/floor/plasteel,
+/area/security/prison)
"aeq" = (
/obj/machinery/door/airlock/silver{
name = "Bathroom"
@@ -3225,36 +3233,39 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/hos)
"afe" = (
-/obj/machinery/door/airlock/maintenance_hatch{
- name = "Security Maintenance";
- req_access_txt = "63"
- },
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/machinery/door/firedoor,
+/obj/machinery/turnstile{
+ name = "Genpop Exit Turnstile";
+ req_access_txt = "70";
+ dir = 8
+ },
/turf/open/floor/plasteel,
-/area/security/brig)
+/area/security/prison)
"aff" = (
/turf/closed/wall,
/area/crew_quarters/heads/hos)
"afg" = (
-/obj/effect/turf_decal/stripes/line,
-/obj/effect/turf_decal/stripes/line{
+/obj/item/stack/ore/glass,
+/turf/open/floor/plating/asteroid/airless,
+/area/asteroid/nearstation)
+"afh" = (
+/obj/machinery/vr_sleeper{
+ dir = 4
+ },
+/obj/effect/turf_decal/tile/red{
dir = 1
},
-/obj/machinery/door/airlock/maintenance_hatch{
- name = "Security Maintenance";
- req_access_txt = "63"
+/obj/effect/turf_decal/tile/red{
+ dir = 8
},
/turf/open/floor/plasteel,
-/area/security/brig)
-"afh" = (
-/obj/structure/barricade/wooden,
-/turf/open/floor/plating,
-/area/asteroid/nearstation)
+/area/security/prison)
"afi" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
@@ -3287,7 +3298,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/captain/private)
"afl" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood,
/area/crew_quarters/heads/captain/private)
"afm" = (
@@ -3324,7 +3335,7 @@
/obj/machinery/recharger{
pixel_x = 5
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-15";
pixel_x = -6;
pixel_y = 12
@@ -3691,9 +3702,14 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"afL" = (
-/obj/structure/girder/reinforced,
-/turf/open/floor/plating,
-/area/asteroid/nearstation)
+/obj/machinery/hydroponics/soil,
+/obj/item/seeds/carrot,
+/obj/machinery/camera{
+ c_tag = "Prison - Main Room";
+ dir = 4
+ },
+/turf/open/floor/plating/asteroid,
+/area/security/prison)
"afM" = (
/obj/item/stack/ore/iron,
/obj/structure/barricade/wooden,
@@ -3719,20 +3735,10 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"afP" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 5
- },
-/obj/item/poster/random_contraband{
- pixel_x = 3;
- pixel_y = 3
- },
-/obj/item/poster/random_contraband{
- pixel_x = -3;
- pixel_y = -3
- },
-/obj/item/poster/random_contraband,
-/turf/open/floor/plasteel,
-/area/asteroid/nearstation)
+/obj/machinery/hydroponics/soil,
+/obj/item/seeds/grass,
+/turf/open/floor/plating/asteroid,
+/area/security/prison)
"afQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -4251,22 +4257,20 @@
/turf/closed/wall/r_wall,
/area/security/brig)
"agG" = (
-/obj/structure/reagent_dispensers/peppertank{
+/obj/machinery/newscaster{
pixel_y = 32
},
-/turf/open/floor/plasteel/dark,
-/area/security/brig)
+/turf/open/floor/plasteel,
+/area/security/prison)
"agH" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 6
+/obj/machinery/light/small{
+ dir = 1
},
-/obj/effect/turf_decal/delivery,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
+/obj/effect/turf_decal/loading_area{
+ dir = 4
},
-/turf/open/floor/plasteel/dark,
-/area/security/brig)
+/turf/open/floor/plasteel,
+/area/security/prison)
"agI" = (
/obj/structure/table/wood,
/obj/item/paper_bin,
@@ -4793,27 +4797,23 @@
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"ahu" = (
-/turf/closed/wall/r_wall,
-/area/asteroid/nearstation)
-"ahv" = (
-/obj/machinery/door/firedoor,
-/obj/structure/cable/white{
- icon_state = "2-8"
- },
-/obj/structure/cable/white{
- icon_state = "2-4"
- },
-/obj/machinery/door/airlock/security/glass{
- name = "Security E.V.A. Storage";
- req_access_txt = "63"
- },
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Security Maintenance";
+ req_access_txt = "63"
+ },
+/obj/machinery/door/firedoor,
/turf/open/floor/plasteel,
-/area/security/brig)
+/area/security/prison)
+"ahv" = (
+/obj/effect/turf_decal/loading_area{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
"ahw" = (
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/heads/hos)
@@ -4852,24 +4852,23 @@
/turf/open/floor/plasteel,
/area/crew_quarters/heads/hos)
"ahz" = (
-/obj/structure/sign/nanotrasen{
- pixel_x = -32
+/obj/structure/reagent_dispensers/peppertank{
+ pixel_y = 32
},
-/obj/machinery/light{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
},
/turf/open/floor/plasteel/dark,
/area/security/brig)
"ahA" = (
-/obj/structure/rack,
-/obj/item/clothing/suit/fire/firefighter,
-/obj/item/clothing/mask/gas,
-/obj/item/clothing/head/hardhat/red,
-/obj/effect/turf_decal/stripes/line{
- dir = 6
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/structure/chair{
+ dir = 8
},
/turf/open/floor/plasteel,
-/area/asteroid/nearstation)
+/area/security/prison)
"ahB" = (
/obj/effect/turf_decal/sand/plating,
/obj/item/stack/ore/silver,
@@ -4877,17 +4876,34 @@
/turf/open/floor/plating,
/area/asteroid/nearstation)
"ahC" = (
-/obj/machinery/status_display/ai{
- pixel_x = 32
+/obj/structure/sign/nanotrasen{
+ pixel_x = -32
},
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/closet{
+ name = "Evidence Closet"
+ },
+/obj/item/poster/random_contraband{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/poster/random_contraband{
+ pixel_x = -3;
+ pixel_y = -3
+ },
+/obj/item/poster/random_contraband,
/turf/open/floor/plasteel/dark,
/area/security/brig)
"ahD" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 9
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
},
-/turf/open/floor/plasteel,
-/area/asteroid/nearstation)
+/obj/item/reagent_containers/glass/bucket,
+/turf/open/floor/plating/asteroid,
+/area/security/prison)
"ahE" = (
/obj/structure/table/wood,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -5386,16 +5402,9 @@
/turf/open/floor/plasteel/dark,
/area/security/brig)
"aiv" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 10
- },
-/obj/effect/turf_decal/delivery,
-/obj/effect/turf_decal/tile/neutral,
-/obj/effect/turf_decal/tile/neutral{
- dir = 8
- },
-/turf/open/floor/plasteel/dark,
-/area/security/brig)
+/obj/item/cultivator,
+/turf/open/floor/plating/asteroid,
+/area/security/prison)
"aiw" = (
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/obj/item/stack/cable_coil/white,
@@ -5686,15 +5695,14 @@
/turf/open/floor/plasteel/dark,
/area/security/brig)
"aiS" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
+/obj/structure/sign/poster/official/do_not_question{
+ pixel_y = -32
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
},
-/obj/structure/table,
-/obj/item/extinguisher/mini,
-/obj/item/tank/internals/emergency_oxygen/engi,
-/obj/item/clothing/mask/breath,
/turf/open/floor/plasteel,
-/area/asteroid/nearstation)
+/area/security/prison)
"aiT" = (
/obj/structure/rack,
/obj/item/gun/energy/ionrifle,
@@ -5774,51 +5782,24 @@
/turf/open/floor/plating,
/area/security/brig)
"aja" = (
-/obj/structure/closet/secure_closet/brig{
- id = "brig1";
- name = "Cell 1 Locker"
+/obj/machinery/status_display/ai{
+ pixel_x = 32
},
-/obj/machinery/light/small{
- dir = 1
+/obj/structure/closet{
+ name = "Evidence Closet"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
-/turf/open/floor/plasteel,
+/turf/open/floor/plasteel/dark,
/area/security/brig)
"ajb" = (
-/obj/machinery/flasher{
- id = "brig1";
- pixel_y = 26
+/obj/item/radio/intercom{
+ name = "Station Intercom";
+ pixel_y = -26
},
-/obj/structure/chair,
-/obj/structure/cable/white{
- icon_state = "2-4"
- },
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
- dir = 8
- },
-/obj/machinery/camera{
- c_tag = "Security - Cell 1"
- },
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel,
-/area/security/brig)
+/area/security/prison)
"ajc" = (
/obj/structure/cable/white{
icon_state = "0-8"
@@ -5831,7 +5812,7 @@
/turf/open/floor/plating,
/area/security/brig)
"ajd" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -6175,7 +6156,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/camera{
@@ -6313,10 +6294,14 @@
/turf/open/floor/plasteel,
/area/science/mixing)
"ajQ" = (
-/obj/item/stack/ore/iron,
-/obj/effect/turf_decal/sand/plating,
-/turf/open/floor/plating,
-/area/asteroid/nearstation)
+/obj/effect/turf_decal/loading_area{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
"ajR" = (
/obj/machinery/photocopier,
/obj/machinery/firealarm{
@@ -6424,27 +6409,23 @@
/turf/open/floor/plasteel,
/area/security/brig)
"ajZ" = (
-/obj/structure/cable/white{
- icon_state = "1-4"
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
},
-/obj/structure/cable/white{
- icon_state = "4-8"
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
},
-/obj/machinery/door/window/brigdoor/security/cell/westright{
- id = "brig1";
- name = "Cell 1"
+/obj/machinery/door/firedoor,
+/obj/machinery/turnstile{
+ name = "Genpop Entrance Turnstile";
+ req_access_txt = "69";
+ dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/effect/turf_decal/tile/red{
- dir = 1
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
- },
/turf/open/floor/plasteel,
-/area/security/brig)
+/area/security/prison)
"aka" = (
/obj/structure/cable/white{
icon_state = "4-8"
@@ -6456,21 +6437,15 @@
/turf/open/floor/plasteel,
/area/security/brig)
"akb" = (
-/obj/structure/cable/white{
- icon_state = "1-4"
- },
-/obj/structure/cable/white{
- icon_state = "1-8"
- },
-/obj/effect/turf_decal/tile/red,
-/obj/effect/turf_decal/tile/red{
- dir = 4
- },
-/obj/effect/turf_decal/tile/red{
- dir = 8
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
},
+/obj/structure/rack,
+/obj/item/clothing/suit/fire/firefighter,
+/obj/item/clothing/mask/gas,
+/obj/item/clothing/head/hardhat/red,
/turf/open/floor/plasteel,
-/area/security/brig)
+/area/maintenance/port/fore)
"akc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/red{
@@ -7157,11 +7132,6 @@
/turf/open/floor/plasteel,
/area/security/brig)
"akZ" = (
-/obj/machinery/door_timer{
- id = "brig1";
- name = "Cell 1";
- pixel_x = 32
- },
/obj/structure/chair{
dir = 8
},
@@ -7169,6 +7139,10 @@
dir = 4
},
/obj/effect/turf_decal/tile/red,
+/obj/machinery/status_display{
+ pixel_x = 32;
+ pixel_y = 0
+ },
/turf/open/floor/plasteel,
/area/security/brig)
"ala" = (
@@ -7272,7 +7246,7 @@
/turf/closed/wall,
/area/hallway/primary/central)
"alm" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/light{
@@ -7328,7 +7302,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"als" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/light{
@@ -8018,7 +7992,7 @@
pixel_y = -24
},
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/brown,
@@ -8680,7 +8654,7 @@
/turf/open/floor/plasteel,
/area/security/brig)
"anF" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/door_timer{
@@ -8751,7 +8725,7 @@
name = "Station Intercom";
pixel_x = -26
},
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/chief)
"anL" = (
@@ -9096,7 +9070,7 @@
/turf/open/floor/plasteel,
/area/quartermaster/miningdock)
"aon" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/structure/cable/white{
@@ -10812,7 +10786,7 @@
/turf/open/floor/plasteel,
/area/security/brig)
"aqP" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/firealarm{
@@ -11150,11 +11124,18 @@
/turf/open/floor/plating,
/area/maintenance/port/fore)
"art" = (
-/obj/effect/turf_decal/stripes/line{
- dir = 10
+/obj/machinery/firealarm{
+ dir = 1;
+ pixel_y = -26
+ },
+/obj/effect/turf_decal/loading_area{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
},
/turf/open/floor/plasteel,
-/area/maintenance/port/fore)
+/area/security/prison)
"aru" = (
/obj/machinery/newscaster/security_unit{
pixel_x = -32
@@ -11739,7 +11720,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/bar/atrium)
"ase" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/red{
@@ -11799,7 +11780,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/bar/atrium)
"asi" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/red{
@@ -13072,7 +13053,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -13710,7 +13691,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -14295,7 +14276,7 @@
dir = 8;
pixel_x = 24
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral,
@@ -15130,7 +15111,7 @@
/obj/machinery/status_display/ai{
pixel_y = 32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/bot,
@@ -15582,6 +15563,71 @@
/obj/item/cigbutt,
/turf/open/floor/plating,
/area/maintenance/port)
+"axZ" = (
+/turf/closed/wall/r_wall/rust,
+/area/security/prison)
+"aya" = (
+/obj/machinery/door/firedoor,
+/obj/structure/cable/white{
+ icon_state = "2-8"
+ },
+/obj/structure/cable/white{
+ icon_state = "2-4"
+ },
+/obj/machinery/door/airlock/security/glass{
+ name = "Security E.V.A. Storage";
+ req_access_txt = "63"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"ayb" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"ayc" = (
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"ayd" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/closet/crate,
+/obj/effect/spawner/lootdrop/maintenance{
+ lootcount = 2;
+ name = "2maintenance loot spawner"
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/port/fore)
+"aye" = (
+/obj/machinery/hydroponics/soil,
+/obj/item/seeds/ambrosia,
+/turf/open/floor/plating/asteroid,
+/area/security/prison)
+"ayf" = (
+/obj/machinery/hydroponics/soil,
+/obj/item/seeds/potato,
+/turf/open/floor/plating/asteroid,
+/area/security/prison)
+"ayg" = (
+/obj/item/stack/ore/glass,
+/turf/open/floor/plating/asteroid,
+/area/asteroid/nearstation)
"ayh" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{
dir = 8
@@ -15744,6 +15790,16 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/dorms)
+"ayy" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/structure/closet/crate{
+ icon_state = "crateopen"
+ },
+/obj/effect/spawner/lootdrop/maintenance,
+/turf/open/floor/plasteel,
+/area/maintenance/port/fore)
"ayz" = (
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/dorms)
@@ -15766,6 +15822,30 @@
/obj/item/bedsheet/red,
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
+"ayD" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/security/glass{
+ id_tag = "secinterior";
+ name = "Brig";
+ req_access_txt = "63"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/structure/cable/white{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
"ayE" = (
/obj/structure/table/wood,
/obj/item/instrument/violin,
@@ -16093,6 +16173,95 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/hallway/secondary/exit)
+"azc" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/machinery/light/small,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"azd" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/obj/structure/cable/white{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aze" = (
+/obj/machinery/door/poddoor/preopen{
+ id = "brigfront";
+ name = "Brig Blast door"
+ },
+/obj/machinery/turnstile{
+ name = "Genpop Exit Turnstile";
+ req_access_txt = "70";
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/security/brig)
+"azf" = (
+/obj/item/clothing/suit/space/orange,
+/obj/item/clothing/head/helmet/space/orange,
+/turf/open/floor/plating/asteroid,
+/area/asteroid/nearstation)
+"azg" = (
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Maintenance Hatch";
+ req_access_txt = "12"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/port/fore)
+"azh" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/obj/structure/table,
+/obj/item/extinguisher/mini,
+/obj/item/tank/internals/emergency_oxygen/engi,
+/obj/item/clothing/mask/breath,
+/obj/machinery/light/small{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/maintenance/port/fore)
+"azi" = (
+/turf/closed/wall,
+/area/security/prison)
+"azj" = (
+/obj/machinery/light/small{
+ brightness = 3;
+ dir = 8
+ },
+/obj/structure/toilet{
+ dir = 8
+ },
+/turf/open/floor/plasteel/freezer,
+/area/security/prison)
+"azk" = (
+/obj/item/stack/ore/silver,
+/obj/item/stack/ore/iron,
+/turf/open/floor/plating/asteroid/airless,
+/area/asteroid/nearstation)
"azl" = (
/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{
dir = 4
@@ -16121,6 +16290,15 @@
dir = 1
},
/area/engine/atmos)
+"azn" = (
+/obj/machinery/door/airlock/public/glass,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"azo" = (
+/obj/machinery/holopad,
+/obj/effect/turf_decal/bot,
+/turf/open/floor/plasteel,
+/area/security/prison)
"azp" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -16444,6 +16622,13 @@
icon_state = "platingdmg1"
},
/area/maintenance/starboard/central)
+"azQ" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/vending/sustenance,
+/turf/open/floor/plasteel,
+/area/security/prison)
"azR" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -16556,6 +16741,43 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/exit)
+"aAa" = (
+/obj/machinery/cryopod,
+/obj/machinery/computer/cryopod{
+ pixel_y = 26
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aAb" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aAc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aAd" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aAe" = (
+/obj/machinery/firealarm{
+ dir = 8;
+ pixel_x = 24
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aAf" = (
+/obj/machinery/biogenerator,
+/turf/open/floor/plasteel,
+/area/security/prison)
"aAg" = (
/turf/open/floor/engine/air,
/area/engine/atmos)
@@ -16580,6 +16802,31 @@
/obj/structure/grille,
/turf/closed/wall/r_wall,
/area/engine/atmos)
+"aAk" = (
+/obj/machinery/seed_extractor,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aAl" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/sink{
+ dir = 8;
+ pixel_x = -12;
+ pixel_y = 2
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aAm" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/obj/item/plant_analyzer,
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
"aAn" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 6
@@ -16587,6 +16834,12 @@
/obj/machinery/meter,
/turf/open/floor/plasteel,
/area/engine/atmos)
+"aAo" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
"aAp" = (
/obj/machinery/atmospherics/pipe/simple/cyan/visible{
dir = 4
@@ -16674,6 +16927,23 @@
},
/turf/open/floor/plasteel,
/area/engine/atmos)
+"aAw" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/door/airlock/maintenance_hatch{
+ name = "Security Maintenance";
+ req_access_txt = "63"
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
"aAx" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
/obj/effect/turf_decal/tile/neutral{
@@ -17015,6 +17285,12 @@
},
/turf/open/floor/plating,
/area/maintenance/starboard/central)
+"aAU" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/security/prison)
"aAV" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -17164,29 +17440,144 @@
},
/turf/open/floor/plasteel,
/area/hallway/secondary/exit)
+"aBi" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/turf/open/floor/plating,
+/area/security/prison)
+"aBj" = (
+/obj/machinery/light/small{
+ dir = 8
+ },
+/obj/structure/cable/white{
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ areastring = "/area/security/prison";
+ dir = 8;
+ name = "Prison Wing APC";
+ pixel_x = -26
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aBk" = (
+/obj/structure/closet/secure_closet/genpop,
+/obj/structure/cable/white{
+ icon_state = "2-8"
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aBl" = (
+/obj/machinery/airalarm/unlocked{
+ dir = 4;
+ pixel_x = -23
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aBm" = (
+/obj/structure/closet/secure_closet/genpop,
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aBo" = (
+/obj/structure/cable/white{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
"aBp" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output{
dir = 1
},
/turf/open/floor/engine/o2,
/area/engine/atmos)
+"aBq" = (
+/obj/structure/cable/white{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
"aBr" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output{
dir = 1
},
/turf/open/floor/engine/n2,
/area/engine/atmos)
+"aBs" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable/white{
+ icon_state = "0-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/security/prison)
"aBt" = (
/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input{
dir = 1
},
/turf/open/floor/engine/n2,
/area/engine/atmos)
+"aBu" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aBv" = (
+/obj/structure/closet/secure_closet/genpop,
+/obj/machinery/camera{
+ c_tag = "Prison - Entryway";
+ dir = 8
+ },
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aBw" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aBx" = (
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
"aBy" = (
/obj/effect/turf_decal/stripes/line,
/obj/machinery/atmospherics/pipe/simple/cyan/visible,
/turf/open/floor/plasteel,
/area/engine/atmos)
+"aBz" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/security/prison)
"aBA" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -17546,7 +17937,7 @@
/obj/machinery/light{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/red{
@@ -17690,12 +18081,102 @@
/obj/structure/sign/warning/vacuum,
/turf/open/floor/plating,
/area/hallway/secondary/exit)
+"aCo" = (
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/tile/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/security/prison)
+"aCp" = (
+/obj/effect/turf_decal/delivery,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aCq" = (
+/obj/effect/turf_decal/delivery,
+/obj/effect/turf_decal/tile/neutral,
+/obj/effect/turf_decal/tile/neutral{
+ dir = 8
+ },
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel/dark,
+/area/security/brig)
+"aCr" = (
+/obj/machinery/door/firedoor,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/door/airlock/security/glass{
+ name = "Gen-Pop Access";
+ req_access_txt = "2"
+ },
+/turf/open/floor/plasteel{
+ heat_capacity = 1e+006
+ },
+/area/security/prison)
"aCs" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
/obj/machinery/light/small,
/obj/machinery/atmospherics/miner/oxygen,
/turf/open/floor/engine/o2,
/area/engine/atmos)
+"aCt" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/turnstile{
+ name = "Genpop Exit Turnstile";
+ icon_state = "turnstile_map";
+ dir = 1;
+ req_access_txt = "70"
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel{
+ heat_capacity = 1e+006
+ },
+/area/security/prison)
+"aCu" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
+/turf/open/floor/plasteel,
+/area/security/brig)
+"aCv" = (
+/obj/structure/cable/white{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/obj/structure/cable/white{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/security/brig)
"aCw" = (
/obj/machinery/portable_atmospherics/canister/nitrogen,
/obj/machinery/light/small,
@@ -18276,7 +18757,7 @@
},
/area/engine/break_room)
"aDB" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/yellow{
@@ -18963,7 +19444,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/dorms)
"aEL" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/status_display{
@@ -19716,7 +20197,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -26
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/camera{
@@ -20049,7 +20530,7 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"aGu" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/yellow,
@@ -20617,7 +21098,7 @@
/obj/structure/cable/white{
icon_state = "2-8"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
@@ -20925,7 +21406,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/bar/atrium)
"aHU" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/structure/sign/poster/random{
@@ -20978,7 +21459,7 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/starboard)
"aHZ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/bot,
@@ -22522,8 +23003,8 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/rcl/pre_loaded,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -23413,7 +23894,7 @@
/turf/open/floor/grass,
/area/hydroponics)
"aMt" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/light{
@@ -23461,7 +23942,7 @@
/turf/open/floor/plating,
/area/maintenance/starboard/central)
"aMy" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/bot,
@@ -23474,7 +23955,7 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/starboard)
"aMz" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/brown{
@@ -24181,7 +24662,7 @@
/turf/closed/wall,
/area/hydroponics)
"aOm" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/red{
@@ -24228,7 +24709,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aOq" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/red{
@@ -25123,7 +25604,7 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/port/aft)
"aPX" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -25413,7 +25894,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/starboard)
"aQA" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/newscaster{
@@ -26114,7 +26595,7 @@
/obj/structure/cable/white{
icon_state = "0-2"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/camera{
@@ -26671,7 +27152,7 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/lounge)
"aTA" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18"
},
/obj/machinery/camera{
@@ -28337,7 +28818,7 @@
/turf/open/floor/plasteel/grimy,
/area/crew_quarters/lounge)
"aWR" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -28600,7 +29081,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone3)
"aXu" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/button/door{
@@ -30912,7 +31393,7 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone3)
"bbr" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/blue,
@@ -33811,7 +34292,7 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/aft)
"bgw" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/airalarm{
@@ -33834,7 +34315,7 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/aft)
"bgy" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -34530,7 +35011,7 @@
/turf/open/floor/plasteel/white/corner,
/area/hallway/secondary/entry)
"bhL" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -34641,7 +35122,7 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/starboard/aft)
"bhU" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -35937,7 +36418,7 @@
/turf/closed/wall/r_wall,
/area/engine/atmos)
"bkt" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/light{
@@ -35980,7 +36461,7 @@
/turf/open/floor/plasteel,
/area/hallway/secondary/entry)
"bkE" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -40454,10 +40935,6 @@
"swC" = (
/turf/closed/wall/r_wall/rust,
/area/crew_quarters/heads/captain/private)
-"swF" = (
-/obj/structure/sign/warning/securearea,
-/turf/closed/wall/rust,
-/area/asteroid/nearstation)
"swG" = (
/turf/closed/wall/rust,
/area/security/detectives_office)
@@ -40496,9 +40973,6 @@
/obj/machinery/status_display/supply,
/turf/closed/wall/rust,
/area/quartermaster/storage)
-"swN" = (
-/turf/closed/wall/rust,
-/area/asteroid/nearstation)
"swZ" = (
/turf/closed/wall/r_wall/rust,
/area/security/brig)
@@ -41624,7 +42098,7 @@
/turf/closed/wall/rust,
/area/chapel/main)
"sLg" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/delivery,
@@ -74462,7 +74936,7 @@ aik
aaW
abj
abj
-abu
+ahB
abu
pNE
gap
@@ -74964,7 +75438,7 @@ aaa
aac
aac
aad
-aah
+adx
aad
aac
aac
@@ -75221,7 +75695,7 @@ aaa
aaa
aaa
aac
-aac
+adz
aad
aad
aad
@@ -75233,7 +75707,7 @@ agK
abu
aad
aad
-abj
+azf
abi
pNE
aoq
@@ -75478,7 +75952,7 @@ aaa
aaa
aaa
aac
-aac
+adz
aac
aac
aad
@@ -75735,7 +76209,7 @@ aaa
aaa
aaa
aaa
-aac
+adz
aac
aac
aac
@@ -75745,7 +76219,7 @@ aad
aad
adv
aaW
-abj
+ayg
ahB
abu
acF
@@ -75992,7 +76466,7 @@ aaa
aaa
aaa
aaa
-abR
+aXc
aac
aac
aad
@@ -76001,7 +76475,7 @@ aad
aad
abi
ael
-abj
+abu
abu
abu
alG
@@ -76249,17 +76723,17 @@ aaa
aaa
aaa
aaa
-abR
+aXc
aac
aac
aad
aad
-aad
-aad
-abT
-abi
-aaV
-ajQ
+aro
+aro
+aro
+aro
+azg
+aro
aro
aro
asm
@@ -76506,17 +76980,17 @@ aaa
aaa
aac
aac
-aac
+adz
aac
aac
aad
aad
-aad
-aad
-aaW
-abj
-abj
-abu
+aro
+ars
+ars
+ars
+ars
+ars
arp
ars
ars
@@ -76763,19 +77237,19 @@ aac
aac
aad
aac
-aac
+aem
aad
aad
aad
aad
-abi
-agE
-abj
-abi
-aad
-aad
+aro
+ars
+akb
+asu
+ayd
+ayy
arq
-art
+azh
ars
asy
ars
@@ -77019,14 +77493,14 @@ aaa
aac
aad
aad
-aad
-swF
-aad
-aad
-aad
-aad
-aad
-abj
+acH
+acH
+acH
+acH
+acH
+acH
+acH
+ars
agF
agF
agF
@@ -77276,14 +77750,14 @@ aac
aac
aad
aad
-aad
-aad
-aad
-aad
-aad
-aad
-aad
-abu
+acH
+afL
+ahD
+aye
+aAl
+aAf
+acH
+ars
agF
apw
aqB
@@ -77533,14 +78007,14 @@ aac
aac
aad
aad
-aad
-aad
-aad
-aad
-aad
-aad
-abT
-agE
+acH
+afP
+aiv
+ayf
+aAd
+aAk
+acH
+ars
swZ
apR
aqD
@@ -77790,14 +78264,14 @@ aad
aad
aad
aad
-aad
-aad
-aad
-aad
-aad
-ahu
-afL
-aaW
+acH
+azQ
+aAc
+aAc
+aAm
+acH
+acH
+ars
swZ
ain
aqG
@@ -78044,17 +78518,17 @@ aaa
aad
aad
aad
-aad
-aad
-aad
-aad
-aad
-aad
-aad
-aad
-ahu
-abu
-abj
+acH
+acH
+acH
+acH
+aAa
+aep
+azo
+aAo
+acH
+ars
+ars
agF
aio
aiT
@@ -78301,15 +78775,15 @@ aac
aad
aad
aad
-aad
-aad
-aad
-aad
-abi
-abi
-swN
-abi
-agF
+acH
+abR
+afh
+azi
+agG
+aiS
+acH
+aAw
+acH
afT
agF
agF
@@ -78558,17 +79032,17 @@ aac
aad
aad
aad
-aad
-aad
-aad
-aaV
-aaW
-abj
-adv
-ael
-agF
+acH
+adw
+aep
+azn
+aep
+ajb
+acH
+aAU
+acH
afU
-ahz
+ahC
aiu
aiq
aiV
@@ -78815,18 +79289,18 @@ aad
aad
aad
aad
-aad
-aaV
-abi
-abj
-abj
-abS
-abu
-acF
-agF
-agG
-afU
-aiv
+acH
+abT
+azi
+azi
+aep
+ajQ
+acH
+aAU
+acH
+ahz
+aBw
+aCp
air
aiW
ajW
@@ -79072,19 +79546,19 @@ aad
aad
aad
aad
-aad
-aaW
-abj
-abj
-abS
-acD
-acF
-aem
-afg
-afU
-afU
-agH
-ahv
+acH
+acE
+azj
+acH
+afe
+ajZ
+acH
+aBi
+ahu
+aBo
+aBx
+aCq
+aya
aiX
agm
akY
@@ -79329,17 +79803,17 @@ aad
aad
aad
aad
-aad
-aad
-abi
-abj
-abu
-acE
-adx
-acF
-agF
-afU
-ahC
+acH
+acH
+acH
+acH
+agH
+art
+acH
+acJ
+acH
+aBq
+aja
aiR
ait
aiY
@@ -79587,20 +80061,20 @@ aad
aad
aad
aad
-aad
-aad
-aaW
-abu
-acF
-acF
-acF
-agF
+aac
+azk
+acH
afe
-agF
-swZ
-agF
-aiZ
ajZ
+acH
+acH
+acH
+aBs
+acH
+axZ
+acH
+aiZ
+ayD
ala
aiZ
amN
@@ -79844,20 +80318,20 @@ aad
aad
aad
aad
-aad
-aad
-abi
-abi
-acJ
-adz
-swN
-abT
-acF
-ahD
-aiS
-agF
-aja
-aka
+afg
+aac
+acH
+ahv
+ayb
+aAb
+aBj
+aBl
+aBu
+aBz
+aBz
+aCr
+aCu
+azc
ala
alP
aka
@@ -80102,19 +80576,19 @@ aad
aad
aad
aad
-aad
-aad
-abT
+bvI
acH
-adw
-aep
-afh
-aem
-afP
ahA
-swZ
-ajb
-akb
+ayc
+aAe
+aBk
+aBm
+aBv
+aCo
+aCo
+aCt
+aCv
+azd
ala
alQ
bxA
@@ -80360,7 +80834,7 @@ aad
aad
aad
aad
-aad
+acH
abU
abU
abU
@@ -80371,7 +80845,7 @@ abU
abU
abU
ajc
-ajc
+aze
aip
ajc
ajc
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 18d1b115a4..eda78e4206 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -1537,7 +1537,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"afe" = (
-/obj/item/twohanded/required/kirbyplants/photosynthetic{
+/obj/item/kirbyplants/photosynthetic{
pixel_y = 10
},
/obj/structure/cable/yellow{
@@ -1567,7 +1567,7 @@
/turf/open/floor/plasteel/dark,
/area/ai_monitored/turret_protected/aisat_interior)
"afg" = (
-/obj/item/twohanded/required/kirbyplants/photosynthetic{
+/obj/item/kirbyplants/photosynthetic{
pixel_y = 10
},
/obj/structure/cable/yellow{
@@ -5479,7 +5479,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/dark,
@@ -9400,7 +9400,7 @@
/area/hallway/primary/central)
"awe" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"awf" = (
@@ -9481,7 +9481,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
@@ -9625,7 +9625,7 @@
},
/area/crew_quarters/fitness/recreation)
"awC" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/machinery/power/apc{
@@ -10071,7 +10071,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"axF" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel,
@@ -10163,7 +10163,7 @@
/obj/structure/cable{
icon_state = "0-2"
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/carpet,
/area/crew_quarters/heads/captain)
"axT" = (
@@ -11161,7 +11161,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"aAo" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/obj/effect/turf_decal/tile/red,
@@ -11857,7 +11857,7 @@
/turf/open/floor/plasteel/white/corner,
/area/crew_quarters/fitness/recreation)
"aBY" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/plasteel,
@@ -11924,7 +11924,7 @@
/area/maintenance/department/security/brig)
"aCi" = (
/obj/structure/table/wood,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18";
pixel_y = 12
},
@@ -12011,7 +12011,7 @@
/obj/structure/extinguisher_cabinet{
pixel_y = 30
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -13234,7 +13234,7 @@
/turf/open/floor/wood,
/area/crew_quarters/heads/hop)
"aEM" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-24"
},
/obj/structure/cable{
@@ -13916,7 +13916,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/captain)
"aGn" = (
-/obj/item/twohanded/required/kirbyplants/photosynthetic{
+/obj/item/kirbyplants/photosynthetic{
layer = 3.1
},
/obj/structure/window/reinforced/fulltile,
@@ -15468,7 +15468,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aKg" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-04"
},
/turf/open/floor/plasteel/white/corner{
@@ -16031,7 +16031,7 @@
/obj/machinery/airalarm{
pixel_y = 22
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/turf/open/floor/plasteel,
@@ -17480,13 +17480,13 @@
/obj/machinery/light/small{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plating,
/area/maintenance/department/crew_quarters/bar)
"aPy" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plating{
@@ -21277,7 +21277,7 @@
/area/crew_quarters/bar)
"aYe" = (
/obj/structure/table/reinforced,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18";
pixel_y = 10
},
@@ -21326,7 +21326,7 @@
"aYi" = (
/obj/structure/table/reinforced,
/obj/structure/disposalpipe/segment,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18";
pixel_y = 10
},
@@ -21777,7 +21777,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/kitchen)
"aYY" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/turf/open/floor/plasteel/dark,
@@ -22808,7 +22808,7 @@
/turf/open/floor/plasteel,
/area/hydroponics)
"bbd" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/green,
@@ -24508,7 +24508,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bfp" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/button/door{
@@ -24949,7 +24949,7 @@
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
"bgv" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-14"
},
/obj/effect/turf_decal/tile/neutral{
@@ -25911,7 +25911,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"biP" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/structure/disposalpipe/segment{
@@ -26030,7 +26030,7 @@
/turf/open/floor/plasteel,
/area/medical/medbay/central)
"bji" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/blue,
@@ -26083,7 +26083,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"bjn" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/purple,
@@ -27332,7 +27332,7 @@
/turf/open/floor/plasteel,
/area/security/checkpoint/medical)
"bmw" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05"
},
/obj/effect/turf_decal/tile/blue{
@@ -27711,7 +27711,7 @@
dir = 8;
pixel_x = 28
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-11"
},
/obj/machinery/light/small{
@@ -27962,7 +27962,7 @@
/turf/open/floor/engine,
/area/science/explab)
"bnZ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/neutral{
@@ -28330,7 +28330,7 @@
/turf/open/floor/plasteel/dark,
/area/hallway/primary/aft)
"boT" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/bot,
@@ -28357,7 +28357,7 @@
dir = 1
},
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/neutral{
@@ -30326,7 +30326,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bsW" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -30715,7 +30715,7 @@
/turf/open/floor/grass,
/area/medical/genetics)
"btU" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/blue,
@@ -30980,7 +30980,7 @@
/area/science/robotics/lab)
"buw" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/item/twohanded/required/kirbyplants/photosynthetic{
+/obj/item/kirbyplants/photosynthetic{
pixel_y = 10
},
/obj/effect/turf_decal/tile/purple{
@@ -30999,7 +30999,7 @@
/turf/open/floor/plasteel/dark,
/area/science/explab)
"buy" = (
-/obj/item/twohanded/required/kirbyplants/photosynthetic{
+/obj/item/kirbyplants/photosynthetic{
pixel_y = 10
},
/obj/effect/turf_decal/tile/purple,
@@ -31038,7 +31038,7 @@
/turf/open/floor/plasteel,
/area/science/explab)
"buD" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-11"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -33011,7 +33011,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants/photosynthetic{
+/obj/item/kirbyplants/photosynthetic{
pixel_y = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -33403,7 +33403,7 @@
/turf/open/floor/plasteel/white,
/area/medical/genetics)
"bzM" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/green,
@@ -34198,7 +34198,7 @@
/turf/open/floor/plasteel/dark,
/area/crew_quarters/heads/hor)
"bBu" = (
-/obj/item/twohanded/required/kirbyplants/dead,
+/obj/item/kirbyplants/dead,
/obj/structure/disposalpipe/segment{
dir = 10
},
@@ -34295,7 +34295,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bBB" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-20";
pixel_y = 3
},
@@ -35994,7 +35994,7 @@
/turf/open/floor/plasteel/white,
/area/crew_quarters/heads/cmo)
"bEH" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-16"
},
/obj/machinery/light_switch{
@@ -38240,7 +38240,7 @@
/turf/open/floor/plasteel/dark,
/area/maintenance/department/engine)
"bJi" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plating,
@@ -39422,7 +39422,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bLT" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/machinery/airalarm{
@@ -40328,7 +40328,7 @@
/turf/open/floor/plasteel/white,
/area/medical/virology)
"bNR" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/green,
@@ -42445,7 +42445,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"bSP" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-02"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -44964,7 +44964,7 @@
/turf/open/floor/plating,
/area/maintenance/department/engine)
"bYI" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_y = 3
},
@@ -45731,7 +45731,7 @@
/area/engine/engineering)
"caw" = (
/obj/structure/table,
-/obj/item/twohanded/rcl/pre_loaded,
+/obj/item/rcl/pre_loaded,
/turf/open/floor/plasteel,
/area/engine/engineering)
"cax" = (
@@ -46864,7 +46864,7 @@
/turf/open/floor/plasteel/dark,
/area/chapel/main/monastery)
"ceK" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-08"
},
/turf/open/floor/plasteel/dark,
@@ -48021,7 +48021,7 @@
/turf/open/floor/plating,
/area/maintenance/department/chapel/monastery)
"cjP" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/item/radio/intercom{
@@ -49777,7 +49777,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"cpT" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 8
@@ -49785,7 +49785,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"cpU" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/effect/turf_decal/tile/purple,
/obj/effect/turf_decal/tile/purple{
dir = 8
@@ -49982,7 +49982,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/aft)
"cqE" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-18";
layer = 3
},
@@ -50634,7 +50634,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel/dark,
@@ -50726,7 +50726,7 @@
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/dark,
@@ -51277,7 +51277,7 @@
icon_state = "1-4"
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/dark,
@@ -51536,7 +51536,7 @@
/turf/open/floor/plating,
/area/maintenance/department/chapel/monastery)
"cwr" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/structure/cable{
@@ -51981,7 +51981,7 @@
/turf/open/floor/plasteel/dark,
/area/library)
"cyQ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/camera{
@@ -51994,7 +51994,7 @@
/turf/open/floor/plasteel/dark,
/area/library)
"cyR" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/dark,
@@ -52246,7 +52246,7 @@
/area/library)
"cAs" = (
/obj/structure/table/wood,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05";
pixel_y = 10
},
@@ -53009,7 +53009,7 @@
},
/area/hallway/secondary/exit/departure_lounge)
"dpb" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_y = 3
},
@@ -54230,7 +54230,7 @@
/turf/open/floor/plating,
/area/maintenance/department/security/brig)
"gkR" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/structure/extinguisher_cabinet{
pixel_y = 30
},
@@ -54529,7 +54529,7 @@
/area/science/xenobiology)
"gKz" = (
/obj/structure/table/wood,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22";
pixel_y = 8
},
@@ -55667,7 +55667,7 @@
/obj/structure/sign/plaques/deempisi{
pixel_y = 28
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_y = 3
},
@@ -56125,7 +56125,7 @@
/turf/open/floor/carpet,
/area/lawoffice)
"kxs" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plating,
@@ -56436,7 +56436,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel/dark,
@@ -57438,7 +57438,7 @@
/turf/open/floor/plasteel/white/corner,
/area/hallway/primary/central)
"nyO" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/light/small{
@@ -57678,7 +57678,7 @@
/turf/open/floor/engine,
/area/engine/supermatter)
"nVU" = (
-/obj/item/twohanded/spear,
+/obj/item/spear,
/turf/open/floor/plating,
/area/maintenance/department/engine)
"nWP" = (
@@ -58663,7 +58663,7 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"pXT" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/obj/machinery/power/apc{
areastring = "/area/lawoffice";
dir = 8;
@@ -58678,7 +58678,7 @@
/turf/closed/wall/r_wall,
/area/engine/engineering)
"pYw" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-03"
},
/obj/structure/extinguisher_cabinet{
diff --git a/_maps/map_files/Snaxi/Snaxi.dmm b/_maps/map_files/Snaxi/Snaxi.dmm
index e0380d4689..c8b76b4922 100644
--- a/_maps/map_files/Snaxi/Snaxi.dmm
+++ b/_maps/map_files/Snaxi/Snaxi.dmm
@@ -1548,7 +1548,7 @@
/turf/open/floor/plasteel/white,
/area/science/lab)
"ayu" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-16"
},
/obj/effect/turf_decal/tile/purple{
@@ -7757,7 +7757,7 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/carpet,
@@ -9031,7 +9031,7 @@
/obj/structure/cable{
icon_state = "2-8"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel/dark,
@@ -9409,7 +9409,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/fore)
"dij" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/carpet,
@@ -11361,7 +11361,7 @@
/turf/open/floor/plasteel,
/area/janitor)
"eue" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-04"
},
/obj/effect/turf_decal/tile/blue{
@@ -17394,7 +17394,7 @@
/obj/machinery/light{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/wood,
@@ -22642,7 +22642,7 @@
/turf/open/floor/engine,
/area/engine/engineering)
"lfs" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-08"
},
/turf/open/floor/plasteel,
@@ -27858,7 +27858,7 @@
/turf/open/floor/carpet,
/area/quartermaster/miningoffice)
"old" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "applebush"
},
/turf/open/floor/wood,
@@ -28531,7 +28531,7 @@
/turf/open/floor/carpet,
/area/crew_quarters/heads/hop)
"oGU" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/wood,
@@ -29602,7 +29602,7 @@
c_tag = "Courtroom East";
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "applebush"
},
/turf/open/floor/wood,
@@ -32153,7 +32153,7 @@
/turf/open/floor/carpet,
/area/crew_quarters/dorms)
"qHO" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -32961,7 +32961,7 @@
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants,
+/obj//obj/item/kirbyplants,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
"rhX" = (
@@ -34346,7 +34346,7 @@
/area/engine/engineering)
"saN" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel,
@@ -34837,7 +34837,7 @@
dir = 8
},
/obj/effect/turf_decal/tile/blue,
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel/dark,
@@ -36237,7 +36237,7 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/plasteel/dark,
@@ -43182,7 +43182,7 @@
/obj/structure/cable{
icon_state = "0-4"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/machinery/power/apc{
diff --git a/_maps/map_files/debug/multiz.dmm b/_maps/map_files/debug/multiz.dmm
index 3f7cacd1a8..4614829679 100644
--- a/_maps/map_files/debug/multiz.dmm
+++ b/_maps/map_files/debug/multiz.dmm
@@ -1300,7 +1300,7 @@
"dO" = (
/obj/structure/table,
/obj/machinery/light,
-/obj/item/twohanded/fireaxe,
+/obj/item/fireaxe,
/obj/item/extinguisher,
/turf/open/floor/plasteel,
/area/storage/primary)
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index f82ba2d735..ba1711d0ed 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -58,7 +58,7 @@
/obj/structure/table/wood{
layer = 3.3
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05";
pixel_y = 4
},
@@ -294,7 +294,7 @@
/area/holodeck/rec_center/winterwonderland)
"aT" = (
/obj/structure/table/wood,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-05";
pixel_y = 10
},
@@ -1686,19 +1686,19 @@
/obj/item/melee/chainofcommand{
name = "chain whip"
},
-/obj/item/twohanded/spear,
+/obj/item/spear,
/turf/open/floor/holofloor/asteroid,
/area/holodeck/rec_center/thunderdome1218)
"ez" = (
/obj/structure/table/wood,
/obj/item/scythe,
-/obj/item/twohanded/spear,
+/obj/item/spear,
/turf/open/floor/holofloor/asteroid,
/area/holodeck/rec_center/thunderdome1218)
"eA" = (
/obj/structure/table/wood,
/obj/item/tailclub,
-/obj/item/twohanded/spear,
+/obj/item/spear,
/turf/open/floor/holofloor/asteroid,
/area/holodeck/rec_center/thunderdome1218)
"eB" = (
@@ -2916,11 +2916,11 @@
/turf/open/floor/circuit/green/anim,
/area/ctf)
"hE" = (
-/obj/item/twohanded/ctf/blue,
+/obj/item/ctf/blue,
/turf/open/floor/circuit/green/anim,
/area/ctf)
"hF" = (
-/obj/item/twohanded/ctf/red,
+/obj/item/ctf/red,
/turf/open/floor/circuit/green/anim,
/area/ctf)
"hG" = (
@@ -4002,7 +4002,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/control)
"ke" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -4106,7 +4106,7 @@
/turf/open/floor/plasteel,
/area/centcom/supply)
"kk" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/neutral{
@@ -4211,7 +4211,7 @@
/turf/open/floor/plasteel/grimy,
/area/centcom/control)
"kB" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/firealarm{
@@ -4234,7 +4234,7 @@
/obj/structure/window/reinforced{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/grimy,
@@ -4243,7 +4243,7 @@
/obj/structure/window/reinforced{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/grimy,
@@ -4284,13 +4284,13 @@
/obj/structure/window/reinforced{
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel/grimy,
/area/centcom/control)
"kJ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/airalarm{
@@ -4733,7 +4733,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"lQ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/firealarm{
@@ -5168,7 +5168,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"mL" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/green{
@@ -5180,7 +5180,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"mM" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -5957,7 +5957,7 @@
/obj/machinery/status_display/ai{
pixel_y = 32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-15";
pixel_x = -6;
pixel_y = 12
@@ -6171,7 +6171,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"oy" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -6517,7 +6517,7 @@
/turf/open/floor/plasteel/grimy,
/area/centcom/ferry)
"ph" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/light{
@@ -6751,7 +6751,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/control)
"pw" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/structure/extinguisher_cabinet{
@@ -6998,13 +6998,13 @@
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"qd" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/wood,
/area/centcom/ferry)
"qe" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/light_switch{
@@ -7525,7 +7525,7 @@
/turf/open/floor/plasteel,
/area/centcom/ferry)
"rt" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/newscaster{
@@ -7550,7 +7550,7 @@
/turf/open/floor/wood,
/area/centcom/ferry)
"rv" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/light{
@@ -7732,7 +7732,7 @@
/turf/open/floor/grass,
/area/centcom/control)
"rL" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/structure/extinguisher_cabinet{
@@ -8611,7 +8611,7 @@
/turf/open/floor/plasteel,
/area/centcom/ferry)
"tJ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/green{
@@ -8650,7 +8650,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"tO" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/green{
@@ -8667,7 +8667,7 @@
/turf/closed/indestructible/riveted,
/area/centcom/evac)
"tS" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/stripes/line{
@@ -9109,7 +9109,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"uT" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/neutral{
@@ -9139,7 +9139,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"uV" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -10077,7 +10077,7 @@
/turf/open/floor/plating,
/area/centcom/ferry)
"xi" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/delivery,
@@ -10147,7 +10147,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"xp" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/green{
@@ -10159,7 +10159,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"xq" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/green,
@@ -10178,7 +10178,7 @@
/turf/open/floor/plating,
/area/centcom/evac)
"xs" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/stripes/line{
@@ -10741,7 +10741,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"zd" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/light{
@@ -11247,7 +11247,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"Am" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/red{
@@ -11268,7 +11268,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"Ap" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/blue,
@@ -11541,7 +11541,7 @@
/turf/open/floor/plasteel,
/area/centcom/evac)
"Ba" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/stripes/line,
@@ -12161,7 +12161,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"Cw" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/power/apc{
@@ -12198,7 +12198,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"Cy" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/light,
@@ -12219,7 +12219,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/ferry)
"Cz" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/structure/extinguisher_cabinet{
@@ -12616,7 +12616,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/evac)
"Df" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/structure/extinguisher_cabinet{
@@ -13008,7 +13008,7 @@
/turf/open/floor/plasteel/dark,
/area/centcom/control)
"DV" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/green{
@@ -13017,7 +13017,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"DW" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/green,
@@ -13571,7 +13571,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeobserve)
"Fs" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/green{
@@ -13585,7 +13585,7 @@
},
/area/tdome/tdomeobserve)
"Fu" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/green,
@@ -13670,7 +13670,7 @@
/turf/open/floor/plasteel/white,
/area/tdome/tdomeobserve)
"FG" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/red,
@@ -13750,7 +13750,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeobserve)
"FQ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/green{
@@ -13848,7 +13848,7 @@
},
/area/tdome/tdomeobserve)
"Gg" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/neutral{
@@ -13862,7 +13862,7 @@
},
/area/tdome/tdomeobserve)
"Gh" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/red{
@@ -13871,7 +13871,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeobserve)
"Gi" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/red{
@@ -13884,7 +13884,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeobserve)
"Gj" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/red,
@@ -13913,7 +13913,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeobserve)
"Gn" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/green,
@@ -13923,7 +13923,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeobserve)
"Go" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/green,
@@ -13936,7 +13936,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeobserve)
"Gp" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/green{
@@ -14876,7 +14876,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeobserve)
"HZ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral,
@@ -14966,7 +14966,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeobserve)
"Ig" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -15790,7 +15790,7 @@
/turf/open/floor/plasteel,
/area/tdome/tdomeadmin)
"JZ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/firealarm{
@@ -15822,7 +15822,7 @@
/turf/open/floor/plasteel/dark,
/area/tdome/tdomeadmin)
"Kc" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -17577,7 +17577,7 @@
/turf/open/floor/wood,
/area/centcom/holding)
"RQ" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -18850,7 +18850,7 @@
/turf/open/indestructible/binary,
/area/space)
"Zh" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/indestructible/hotelwood,
diff --git a/_maps/shuttles/arrival_delta.dmm b/_maps/shuttles/arrival_delta.dmm
index 62e30ef335..16fc34e62b 100644
--- a/_maps/shuttles/arrival_delta.dmm
+++ b/_maps/shuttles/arrival_delta.dmm
@@ -203,7 +203,7 @@
/obj/machinery/status_display/evac{
pixel_x = -32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -226,7 +226,7 @@
/obj/machinery/status_display/ai{
pixel_x = 32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral,
@@ -277,7 +277,7 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/arrival)
"A" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -312,7 +312,7 @@
/turf/open/floor/plasteel,
/area/shuttle/arrival)
"E" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral,
diff --git a/_maps/shuttles/arrival_omega.dmm b/_maps/shuttles/arrival_omega.dmm
index f580149163..decb5f9d52 100644
--- a/_maps/shuttles/arrival_omega.dmm
+++ b/_maps/shuttles/arrival_omega.dmm
@@ -138,7 +138,7 @@
/turf/open/floor/plasteel,
/area/shuttle/arrival)
"o" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm
index 7bc7de9bf1..55fd4bd56a 100644
--- a/_maps/shuttles/emergency_bar.dmm
+++ b/_maps/shuttles/emergency_bar.dmm
@@ -175,7 +175,7 @@
pixel_x = 6;
pixel_y = 24
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -385,7 +385,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bc" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -424,7 +424,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bg" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/bar,
@@ -557,7 +557,7 @@
/turf/open/floor/plating/airless,
/area/shuttle/escape)
"bG" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
diff --git a/_maps/shuttles/emergency_birdboat.dmm b/_maps/shuttles/emergency_birdboat.dmm
index 43a6a85bf7..dcffda7ba2 100644
--- a/_maps/shuttles/emergency_birdboat.dmm
+++ b/_maps/shuttles/emergency_birdboat.dmm
@@ -47,7 +47,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"k" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/mineral/titanium/blue,
@@ -144,7 +144,7 @@
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"B" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/mineral/titanium,
diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm
index f49e70aeb9..9608f7f28a 100644
--- a/_maps/shuttles/emergency_cere.dmm
+++ b/_maps/shuttles/emergency_cere.dmm
@@ -420,7 +420,7 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"aM" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/item/radio/intercom{
@@ -446,7 +446,7 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"aP" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/item/radio/intercom{
@@ -968,7 +968,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"ca" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -994,7 +994,7 @@
/obj/machinery/light{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm
index 564115443d..b4b22b2ff6 100644
--- a/_maps/shuttles/emergency_delta.dmm
+++ b/_maps/shuttles/emergency_delta.dmm
@@ -167,7 +167,7 @@
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"an" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -196,7 +196,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"ap" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -800,7 +800,7 @@
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"bz" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/button/flasher{
@@ -814,7 +814,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bA" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral{
@@ -1018,7 +1018,7 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"cb" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -1338,7 +1338,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"cA" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
diff --git a/_maps/shuttles/emergency_imfedupwiththisworld.dmm b/_maps/shuttles/emergency_imfedupwiththisworld.dmm
index 349918ef29..ca2e6059ec 100644
--- a/_maps/shuttles/emergency_imfedupwiththisworld.dmm
+++ b/_maps/shuttles/emergency_imfedupwiththisworld.dmm
@@ -155,7 +155,7 @@
/turf/open/floor/carpet,
/area/shuttle/escape)
"y" = (
-/obj/item/twohanded/required/kirbyplants,
+/obj/item/kirbyplants,
/turf/open/floor/wood,
/area/shuttle/escape)
"z" = (
diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm
index a7faface75..8a16763007 100644
--- a/_maps/shuttles/emergency_luxury.dmm
+++ b/_maps/shuttles/emergency_luxury.dmm
@@ -305,7 +305,7 @@
/turf/open/floor/carpet/royalblue,
/area/shuttle/escape/luxury)
"bg" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/carpet/red,
@@ -320,7 +320,7 @@
/turf/open/floor/carpet/royalblue,
/area/shuttle/escape/luxury)
"bj" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -328,13 +328,13 @@
/turf/open/floor/wood,
/area/shuttle/escape/luxury)
"bk" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/carpet/royalblue,
/area/shuttle/escape/luxury)
"bl" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -437,7 +437,7 @@
dir = 4;
light_range = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/carpet/red,
diff --git a/_maps/shuttles/emergency_omega.dmm b/_maps/shuttles/emergency_omega.dmm
index bd99f35bb5..83b9c28305 100644
--- a/_maps/shuttles/emergency_omega.dmm
+++ b/_maps/shuttles/emergency_omega.dmm
@@ -194,7 +194,7 @@
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"as" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -317,7 +317,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aC" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -530,7 +530,7 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aS" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency_pubby.dmm
index 0eea5ab1c8..7c43bef2ce 100644
--- a/_maps/shuttles/emergency_pubby.dmm
+++ b/_maps/shuttles/emergency_pubby.dmm
@@ -110,7 +110,7 @@
/obj/machinery/computer/security/telescreen/entertainment{
pixel_y = 32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_x = -3;
pixel_y = 3
@@ -183,7 +183,7 @@
/area/shuttle/escape)
"aB" = (
/obj/structure/window/reinforced,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-11"
},
/obj/effect/turf_decal/tile/green,
@@ -589,7 +589,7 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"bu" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/mineral/plastitanium/red/brig,
diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm
index 05446968e7..daba49a238 100644
--- a/_maps/shuttles/emergency_raven.dmm
+++ b/_maps/shuttles/emergency_raven.dmm
@@ -1014,7 +1014,7 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"bV" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/green{
@@ -1029,7 +1029,7 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"bW" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/green{
@@ -1094,7 +1094,7 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"cd" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/green{
@@ -1107,7 +1107,7 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"ce" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/green,
diff --git a/_maps/shuttles/emergency_scrapheap.dmm b/_maps/shuttles/emergency_scrapheap.dmm
index 4bd8f07c8e..cc51c2b8f8 100644
--- a/_maps/shuttles/emergency_scrapheap.dmm
+++ b/_maps/shuttles/emergency_scrapheap.dmm
@@ -194,7 +194,7 @@
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"aF" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aG" = (
diff --git a/_maps/shuttles/emergency_syndicate.dmm b/_maps/shuttles/emergency_syndicate.dmm
index 85048b9d89..3c2c3cb19b 100644
--- a/_maps/shuttles/emergency_syndicate.dmm
+++ b/_maps/shuttles/emergency_syndicate.dmm
@@ -1351,7 +1351,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/dark,
@@ -1842,7 +1842,7 @@
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/turf/open/floor/plasteel/dark,
diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm
index a12e8858cb..1b4e685bd0 100644
--- a/_maps/shuttles/ferry_lighthouse.dmm
+++ b/_maps/shuttles/ferry_lighthouse.dmm
@@ -236,7 +236,7 @@
/turf/open/floor/wood,
/area/shuttle/transport)
"bd" = (
-/obj/item/twohanded/required/kirbyplants/dead{
+/obj/item/kirbyplants/dead{
desc = "It doesn't look very healthy...";
name = "potted plant"
},
diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm
index 825cb26e3a..0a25527358 100644
--- a/_maps/templates/shelter_2.dmm
+++ b/_maps/templates/shelter_2.dmm
@@ -93,7 +93,7 @@
/area/survivalpod)
"q" = (
/obj/structure/tubes,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/pod,
/area/survivalpod)
"r" = (
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index 3cb60b1143..dff52f4748 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -269,11 +269,12 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
//stamina cost defines.
#define STAM_COST_ATTACK_OBJ_MULT 1.2
-#define STAM_COST_ATTACK_MOB_MULT 0.8
+#define STAM_COST_ATTACK_MOB_MULT 1
#define STAM_COST_BATON_MOB_MULT 1
#define STAM_COST_NO_COMBAT_MULT 1.25
#define STAM_COST_W_CLASS_MULT 1.25
#define STAM_COST_THROW_MULT 2
+#define STAM_COST_THROW_MOB 2.5 //multiplied by (mob size + 1)^2.
///Multiplier of the (STAMINA_NEAR_CRIT - user current stamina loss) : (STAMINA_NEAR_CRIT - STAMINA_SOFTCRIT) ratio used in damage penalties when stam soft-critted.
#define STAM_CRIT_ITEM_ATTACK_PENALTY 0.66
@@ -284,6 +285,12 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
/// Added delay when firing guns stam-softcritted. Summed with a hardset CLICK_CD_RANGE delay, similar to STAM_CRIT_DAMAGE_DELAY otherwise.
#define STAM_CRIT_GUN_DELAY 2.75
+//stamina recovery defines. Blocked if combat mode is on.
+#define STAM_RECOVERY_STAM_CRIT -7.5
+#define STAM_RECOVERY_RESTING -6
+#define STAM_RECOVERY_NORMAL -3
+#define STAM_RECOVERY_LIMB 4 //limbs recover stamina separately from handle_status_effects(), and aren't blocked by combat mode.
+
/**
* should the current-attack-damage be lower than the item force multiplied by this value,
* a "inefficiently" prefix will be added to the message.
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index c6b008329a..86b518234b 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -198,6 +198,8 @@
#define COMSIG_MOB_ANTAG_ON_GAIN "mob_antag_on_gain" //from base of /datum/antagonist/on_gain(): (antag_datum)
#define COMSIG_MOB_SPELL_CAN_CAST "mob_spell_can_cast" //from base of /obj/effect/proc_holder/spell/can_cast(): (spell)
+#define COMSIG_MOB_SWAP_HANDS "mob_swap_hands" //from base of mob/swap_hand(): (obj/item)
+ #define COMPONENT_BLOCK_SWAP 1
// /client signals
#define COMSIG_MOB_CLIENT_LOGIN "mob_client_login" //sent when a mob/login() finishes: (client)
@@ -283,7 +285,12 @@
#define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" //from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone)
#define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" //return a truthy value to prevent ensouling, checked in /obj/effect/proc_holder/spell/targeted/lichdom/cast(): (mob/user)
#define COMSIG_ITEM_HIT_REACT "item_hit_react" //from base of obj/item/hit_reaction(): (list/args)
-#define COMSIG_ITEM_WEARERCROSSED "wearer_crossed" //called on item when crossed by something (): (/atom/movable)
+#define COMSIG_ITEM_WEARERCROSSED "wearer_crossed" //called on item when crossed by something (): (/atom/movable)
+#define COMSIG_ITEM_SHARPEN_ACT "sharpen_act" //from base of item/sharpener/attackby(): (amount, max)
+ #define COMPONENT_BLOCK_SHARPEN_APPLIED 1
+ #define COMPONENT_BLOCK_SHARPEN_BLOCKED 2
+ #define COMPONENT_BLOCK_SHARPEN_ALREADY 4
+ #define COMPONENT_BLOCK_SHARPEN_MAXED 8
#define COMSIG_ITEM_MICROWAVE_ACT "microwave_act" //called on item when microwaved (): (obj/machinery/microwave/M)
#define COMSIG_ITEM_WORN_OVERLAYS "item_worn_overlays" //from base of obj/item/worn_overlays(): (isinhands, icon_file, used_state, style_flags, list/overlays)
// THE FOLLOWING TWO BLOCKS SHOULD RETURN BLOCK FLAGS AS DEFINED IN __DEFINES/combat.dm!
@@ -419,6 +426,11 @@
#define COMSIG_TRY_STORAGE_RETURN_INVENTORY "storage_return_inventory" //(list/list_to_inject_results_into, recursively_search_inside_storages = TRUE)
#define COMSIG_TRY_STORAGE_CAN_INSERT "storage_can_equip" //(obj/item/insertion_candidate, mob/user, silent) - returns bool
+// /datum/component/two_handed signals
+#define COMSIG_TWOHANDED_WIELD "twohanded_wield" //from base of datum/component/two_handed/proc/wield(mob/living/carbon/user): (/mob/user)
+ #define COMPONENT_TWOHANDED_BLOCK_WIELD 1
+#define COMSIG_TWOHANDED_UNWIELD "twohanded_unwield" //from base of datum/component/two_handed/proc/unwield(mob/living/carbon/user): (/mob/user)
+
// /datum/action signals
#define COMSIG_ACTION_TRIGGER "action_trigger" //from base of datum/action/proc/Trigger(): (datum/action)
#define COMPONENT_ACTION_BLOCK_TRIGGER 1
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 90bbc2c797..071dab20b1 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -462,7 +462,7 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
#define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")
// list of all null rod weapons
-#define HOLY_WEAPONS /obj/item/nullrod, /obj/item/twohanded/dualsaber/hypereutactic/chaplain, /obj/item/gun/energy/laser/redtag/hitscan/chaplain, /obj/item/multitool/chaplain, /obj/item/clothing/gloves/fingerless/pugilist/chaplain, /obj/item/melee/baseball_bat/chaplain
+#define HOLY_WEAPONS /obj/item/nullrod, /obj/item/dualsaber/hypereutactic/chaplain, /obj/item/gun/energy/laser/redtag/hitscan/chaplain, /obj/item/multitool/chaplain, /obj/item/clothing/gloves/fingerless/pugilist/chaplain, /obj/item/melee/baseball_bat/chaplain
// Used by PDA and cartridge code to reduce repetitiveness of spritesheets
#define PDAIMG(what) {""}
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index 9391834552..3155fe2548 100644
--- a/code/__HELPERS/icons.dm
+++ b/code/__HELPERS/icons.dm
@@ -1136,7 +1136,7 @@ GLOBAL_LIST_INIT(freon_color_matrix, list("#2E5E69", "#60A2A8", "#A1AFB1", rgb(0
if (!isicon(I))
if (isfile(thing)) //special snowflake
var/name = sanitize_filename("[generate_asset_name(thing)].png")
- if (!SSassets.cache[name])
+ if(!SSassets.cache[name])
register_asset(name, thing)
for (var/thing2 in targets)
send_asset(thing2, key)
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index 4ed286eb08..0088dde15a 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -153,7 +153,7 @@
var/image/item_overlay = image(holding)
item_overlay.alpha = 92
- if(!user.can_equip(holding, slot_id, TRUE))
+ if(!user.can_equip(holding, slot_id, TRUE, TRUE, TRUE))
item_overlay.color = "#FF0000"
else
item_overlay.color = "#00ff00"
diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm
index 87158f021e..f556f7dee7 100644
--- a/code/controllers/subsystem/traumas.dm
+++ b/code/controllers/subsystem/traumas.dm
@@ -79,7 +79,7 @@ SUBSYSTEM_DEF(traumas)
/obj/item/pda/clown, /obj/item/grown/bananapeel)),
"greytide" = typecacheof(list(/obj/item/clothing/under/color/grey, /obj/item/melee/baton/cattleprod,
- /obj/item/twohanded/spear, /obj/item/clothing/mask/gas)),
+ /obj/item/spear, /obj/item/clothing/mask/gas)),
"lizards" = typecacheof(list(/obj/item/toy/plush/lizardplushie, /obj/item/reagent_containers/food/snacks/kebab/tail,
/obj/item/organ/tail/lizard, /obj/item/reagent_containers/food/drinks/bottle/lizardwine)),
@@ -120,7 +120,7 @@ SUBSYSTEM_DEF(traumas)
/obj/item/card/id/captains_spare, /obj/item/card/id/centcom, /obj/machinery/door/airlock/command)),
"the supernatural" = typecacheof(list(/obj/structure/destructible/cult, /obj/item/tome,
- /obj/item/melee/cultblade, /obj/item/twohanded/required/cult_bastard, /obj/item/restraints/legcuffs/bola/cult,
+ /obj/item/melee/cultblade, /obj/item/cult_bastard, /obj/item/restraints/legcuffs/bola/cult,
/obj/item/clothing/suit/cultrobes, /obj/item/clothing/suit/space/hardsuit/cult,
/obj/item/clothing/suit/hooded/cultrobes, /obj/item/clothing/head/hooded/cult_hoodie, /obj/effect/rune,
/obj/item/stack/sheet/runed_metal, /obj/machinery/door/airlock/cult, /obj/singularity/narsie,
@@ -151,7 +151,7 @@ SUBSYSTEM_DEF(traumas)
"anime" = typecacheof(list(/obj/item/clothing/under/costume/schoolgirl, /obj/item/katana, /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/head/kitty/genuine, /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/twohanded/vibro_weapon,
+ /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)),
"mimes" = typecacheof(list(/obj/item/pda/mime, /obj/item/clothing/under/rank/civilian/mime, /obj/item/clothing/mask/gas/mime,
@@ -168,7 +168,7 @@ SUBSYSTEM_DEF(traumas)
/obj/machinery/porta_turret/syndicate, /obj/structure/closet/syndicate, /obj/machinery/suit_storage_unit/syndicate, /obj/item/clothing/under/syndicate, /obj/item/folder/syndicate, /obj/item/documents/syndicate, /obj/item/clothing/glasses/phantomthief/syndicate, /obj/item/antag_spawner/nuke_ops, /obj/item/storage/box/syndicate,
/obj/structure/fluff/empty_sleeper/syndicate, /obj/item/implant/radio/syndicate, /obj/item/clothing/head/helmet/space/syndicate, /obj/machinery/nuclearbomb/syndicate, /obj/item/grenade/syndieminibomb, /obj/item/storage/backpack/duffelbag/syndie, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver,
/obj/item/gun/ballistic/automatic/shotgun/bulldog, /obj/item/gun/ballistic/automatic/c20r, /obj/item/gun/ballistic/automatic/m90, /obj/item/gun/ballistic/automatic/l6_saw, /obj/item/storage/belt/grenade/full, /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate, /obj/item/gun/energy/kinetic_accelerator/crossbow,
- /obj/item/melee/transforming/energy/sword/saber, /obj/item/twohanded/dualsaber, /obj/item/melee/powerfist, /obj/item/storage/box/syndie_kit, /obj/item/grenade/spawnergrenade/manhacks, /obj/item/grenade/chem_grenade/bioterrorfoam, /obj/item/reagent_containers/spray/chemsprayer/bioterror, /obj/item/ammo_box/magazine/m10mm,
+ /obj/item/melee/transforming/energy/sword/saber, /obj/item/dualsaber, /obj/item/melee/powerfist, /obj/item/storage/box/syndie_kit, /obj/item/grenade/spawnergrenade/manhacks, /obj/item/grenade/chem_grenade/bioterrorfoam, /obj/item/reagent_containers/spray/chemsprayer/bioterror, /obj/item/ammo_box/magazine/m10mm,
/obj/item/ammo_box/magazine/pistolm9mm, /obj/item/ammo_box/a357, /obj/item/ammo_box/magazine/m12g, /obj/item/ammo_box/magazine/mm195x129, /obj/item/antag_spawner/nuke_ops, /obj/mecha/combat/gygax/dark, /obj/mecha/combat/marauder/mauler, /obj/item/soap/syndie, /obj/item/gun/syringe/syndicate, /obj/item/cartridge/virus/syndicate,
/obj/item/cartridge/virus/frame, /obj/item/chameleon, /obj/item/storage/box/syndie_kit/cutouts, /obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/card/emag, /obj/item/storage/toolbox/syndicate, /obj/item/storage/book/bible/syndicate, /obj/item/encryptionkey/binary, /obj/item/encryptionkey/syndicate, /obj/item/aiModule/syndicate,
/obj/item/clothing/shoes/magboots/syndie, /obj/item/powersink, /obj/item/sbeacondrop, /obj/item/sbeacondrop/bomb, /obj/item/syndicatedetonator, /obj/item/shield/energy, /obj/item/assault_pod, /obj/item/slimepotion/slime/sentience/nuclear, /obj/item/stack/telecrystal, /obj/item/jammer, /obj/item/codespeak_manual/unlimited,
@@ -176,7 +176,7 @@ SUBSYSTEM_DEF(traumas)
/obj/machinery/computer/pod/old/syndicate, /obj/machinery/vending/medical/syndicate_access, /obj/item/mmi/syndie, /obj/item/target/syndicate, /obj/machinery/vending/cigarette/syndicate, /obj/item/robot_module/syndicate, /obj/item/clothing/mask/gas/syndicate, /obj/machinery/power/singularity_beacon/syndicate, /obj/item/clothing/head/syndicatefake,
/obj/item/radio/headset/syndicate, /obj/item/gun/ballistic/automatic/pistol/antitank/syndicate, /obj/item/pda/syndicate, /obj/item/clothing/suit/armor/vest/capcarapace/syndicate, /obj/item/gun/ballistic/automatic/flechette, /obj/item/ammo_box/magazine/flechette, /obj/item/clothing/suit/toggle/lawyer/black/syndie, /obj/item/melee/transforming/energy/sword/cx/traitor,
/obj/structure/sign/poster/contraband/syndicate_pistol, /obj/structure/sign/poster/contraband/syndicate_recruitment, /obj/item/bedsheet/syndie, /obj/item/borg/upgrade/syndicate, /obj/item/tank/jetpack/oxygen/harness, /obj/item/firing_pin/implant/pindicate, /obj/item/reagent_containers/glass/bottle/traitor, /obj/item/storage/belt/military,
- /obj/item/twohanded/shockpaddles/syndicate, /obj/item/clothing/mask/cigarette/syndicate, /obj/item/toy/plush/nukeplushie)),
+ /obj/item/shockpaddles/syndicate, /obj/item/clothing/mask/cigarette/syndicate, /obj/item/toy/plush/nukeplushie)),
"eye" = typecacheof(list(/obj/item/organ/eyes, /obj/item/reagent_containers/syringe))
)
diff --git a/code/datums/components/crafting/recipes/recipes_misc.dm b/code/datums/components/crafting/recipes/recipes_misc.dm
index 63ef711858..86d1e77661 100644
--- a/code/datums/components/crafting/recipes/recipes_misc.dm
+++ b/code/datums/components/crafting/recipes/recipes_misc.dm
@@ -244,7 +244,7 @@
/datum/crafting_recipe/rcl
name = "Makeshift Rapid Cable Layer"
- result = /obj/item/twohanded/rcl/ghetto
+ result = /obj/item/rcl/ghetto
time = 40
tools = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH)
reqs = list(/obj/item/stack/sheet/metal = 15)
diff --git a/code/datums/components/crafting/recipes/recipes_primal.dm b/code/datums/components/crafting/recipes/recipes_primal.dm
index bb4f4ce6d5..e646d24018 100644
--- a/code/datums/components/crafting/recipes/recipes_primal.dm
+++ b/code/datums/components/crafting/recipes/recipes_primal.dm
@@ -50,7 +50,7 @@
/datum/crafting_recipe/bonespear
name = "Bone Spear"
- result = /obj/item/twohanded/bonespear
+ result = /obj/item/spear/bonespear
time = 30
reqs = list(/obj/item/stack/sheet/bone = 4,
/obj/item/stack/sheet/sinew = 1)
@@ -58,7 +58,7 @@
/datum/crafting_recipe/boneaxe
name = "Bone Axe"
- result = /obj/item/twohanded/fireaxe/boneaxe
+ result = /obj/item/fireaxe/boneaxe
time = 50
reqs = list(/obj/item/stack/sheet/bone = 6,
/obj/item/stack/sheet/sinew = 3)
@@ -74,20 +74,20 @@
/datum/crafting_recipe/headpike
name = "Spike Head (Glass Spear)"
time = 65
- reqs = list(/obj/item/twohanded/spear = 1,
+ reqs = list(/obj/item/spear = 1,
/obj/item/bodypart/head = 1)
parts = list(/obj/item/bodypart/head = 1,
- /obj/item/twohanded/spear = 1)
+ /obj/item/spear = 1)
result = /obj/structure/headpike
category = CAT_PRIMAL
/datum/crafting_recipe/headpikebone
name = "Spike Head (Bone Spear)"
time = 65
- reqs = list(/obj/item/twohanded/bonespear = 1,
+ reqs = list(/obj/item/spear/bonespear = 1,
/obj/item/bodypart/head = 1)
parts = list(/obj/item/bodypart/head = 1,
- /obj/item/twohanded/bonespear = 1)
+ /obj/item/spear/bonespear = 1)
result = /obj/structure/headpike/bone
category = CAT_PRIMAL
diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm
index 9d712ef059..177f6fb2b6 100644
--- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm
+++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm
@@ -42,7 +42,7 @@
/datum/crafting_recipe/spear
name = "Spear"
- result = /obj/item/twohanded/spear
+ result = /obj/item/spear
reqs = list(/obj/item/restraints/handcuffs/cable = 1,
/obj/item/shard = 1,
/obj/item/stack/rods = 1)
@@ -110,7 +110,7 @@
/datum/crafting_recipe/chainsaw
name = "Chainsaw"
- result = /obj/item/twohanded/required/chainsaw
+ result = /obj/item/chainsaw
reqs = list(/obj/item/circular_saw = 1,
/obj/item/stack/cable_coil = 3,
/obj/item/stack/sheet/plasteel = 5)
@@ -141,7 +141,7 @@
result = /obj/item/bombcore/chemical
reqs = list(
/obj/item/stock_parts/matter_bin = 1,
- /obj/item/twohanded/required/gibtonite = 1,
+ /obj/item/gibtonite = 1,
/obj/item/grenade/chem_grenade = 2
)
parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2)
@@ -173,10 +173,10 @@
/datum/crafting_recipe/lance
name = "Explosive Lance (Grenade)"
- result = /obj/item/twohanded/spear
- reqs = list(/obj/item/twohanded/spear = 1,
+ result = /obj/item/spear
+ reqs = list(/obj/item/spear = 1,
/obj/item/grenade = 1)
- parts = list(/obj/item/twohanded/spear = 1,
+ parts = list(/obj/item/spear = 1,
/obj/item/grenade = 1)
time = 15
category = CAT_WEAPONRY
diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm
index 28b06b4867..e19edc89d8 100644
--- a/code/datums/components/storage/concrete/bag_of_holding.dm
+++ b/code/datums/components/storage/concrete/bag_of_holding.dm
@@ -34,3 +34,8 @@
qdel(A)
return
. = ..()
+
+/datum/component/storage/concrete/bluespace/bag_of_holding/can_be_inserted(obj/item/I, stop_messages = FALSE, mob/M)
+ if(I.GetComponent(/datum/component/storage/concrete/bluespace/bag_of_holding))
+ return TRUE
+ return ..()
diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm
new file mode 100644
index 0000000000..77a9a79bf4
--- /dev/null
+++ b/code/datums/components/twohanded.dm
@@ -0,0 +1,311 @@
+/**
+ * Two Handed Component
+ *
+ * When applied to an item it will make it two handed
+ *
+ */
+/datum/component/two_handed
+ dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS // Only one of the component can exist on an item
+ var/wielded = FALSE /// Are we holding the two handed item properly
+ var/force_multiplier = 0 /// The multiplier applied to force when wielded, does not work with force_wielded, and force_unwielded
+ var/force_wielded = 0 /// The force of the item when weilded
+ var/force_unwielded = 0 /// The force of the item when unweilded
+ var/wieldsound = FALSE /// Play sound when wielded
+ var/unwieldsound = FALSE /// Play sound when unwielded
+ var/attacksound = FALSE /// Play sound on attack when wielded
+ var/require_twohands = FALSE /// Does it have to be held in both hands
+ var/icon_wielded = FALSE /// The icon that will be used when wielded
+ var/obj/item/offhand/offhand_item = null /// Reference to the offhand created for the item
+ var/sharpened_increase = 0 /// The amount of increase recived from sharpening the item
+
+/**
+ * Two Handed component
+ *
+ * vars:
+ * * require_twohands (optional) Does the item need both hands to be carried
+ * * wieldsound (optional) The sound to play when wielded
+ * * unwieldsound (optional) The sound to play when unwielded
+ * * attacksound (optional) The sound to play when wielded and attacking
+ * * force_multiplier (optional) The force multiplier when wielded, do not use with force_wielded, and force_unwielded
+ * * force_wielded (optional) The force setting when the item is wielded, do not use with force_multiplier
+ * * force_unwielded (optional) The force setting when the item is unwielded, do not use with force_multiplier
+ * * icon_wielded (optional) The icon to be used when wielded
+ */
+/datum/component/two_handed/Initialize(require_twohands=FALSE, wieldsound=FALSE, unwieldsound=FALSE, attacksound=FALSE, \
+ force_multiplier=0, force_wielded=0, force_unwielded=0, icon_wielded=FALSE)
+ if(!isitem(parent))
+ return COMPONENT_INCOMPATIBLE
+
+ src.require_twohands = require_twohands
+ src.wieldsound = wieldsound
+ src.unwieldsound = unwieldsound
+ src.attacksound = attacksound
+ src.force_multiplier = force_multiplier
+ src.force_wielded = force_wielded
+ src.force_unwielded = force_unwielded
+ src.icon_wielded = icon_wielded
+
+// Inherit the new values passed to the component
+/datum/component/two_handed/InheritComponent(datum/component/two_handed/new_comp, original, require_twohands, wieldsound, unwieldsound, \
+ force_multiplier, force_wielded, force_unwielded, icon_wielded)
+ if(!original)
+ return
+ if(require_twohands)
+ src.require_twohands = require_twohands
+ if(wieldsound)
+ src.wieldsound = wieldsound
+ if(unwieldsound)
+ src.unwieldsound = unwieldsound
+ if(attacksound)
+ src.attacksound = attacksound
+ if(force_multiplier)
+ src.force_multiplier = force_multiplier
+ if(force_wielded)
+ src.force_wielded = force_wielded
+ if(force_unwielded)
+ src.force_unwielded = force_unwielded
+ if(icon_wielded)
+ src.icon_wielded = icon_wielded
+
+// register signals withthe parent item
+/datum/component/two_handed/RegisterWithParent()
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/on_attack_self)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/on_attack)
+ RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON, .proc/on_update_icon)
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_moved)
+ RegisterSignal(parent, COMSIG_ITEM_SHARPEN_ACT, .proc/on_sharpen)
+
+// Remove all siginals registered to the parent item
+/datum/component/two_handed/UnregisterFromParent()
+ UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED,
+ COMSIG_ITEM_DROPPED,
+ COMSIG_ITEM_ATTACK_SELF,
+ COMSIG_ITEM_ATTACK,
+ COMSIG_ATOM_UPDATE_ICON,
+ COMSIG_MOVABLE_MOVED,
+ COMSIG_ITEM_SHARPEN_ACT))
+
+/// Triggered on equip of the item containing the component
+/datum/component/two_handed/proc/on_equip(datum/source, mob/user, slot)
+ if(require_twohands && slot == SLOT_HANDS) // force equip the item
+ wield(user)
+ if(!user.is_holding(parent) && wielded && !require_twohands)
+ unwield(user)
+
+/// Triggered on drop of item containing the component
+/datum/component/two_handed/proc/on_drop(datum/source, mob/user)
+ if(require_twohands)
+ unwield(user, show_message=TRUE)
+ if(wielded)
+ unwield(user)
+ if(source == offhand_item && !QDELETED(src))
+ qdel(src)
+
+/// Triggered on attack self of the item containing the component
+/datum/component/two_handed/proc/on_attack_self(datum/source, mob/user)
+ if(wielded)
+ unwield(user)
+ else
+ wield(user)
+
+/**
+ * Wield the two handed item in both hands
+ *
+ * vars:
+ * * user The mob/living/carbon that is wielding the item
+ */
+/datum/component/two_handed/proc/wield(mob/living/carbon/user)
+ if(wielded)
+ return
+ if(ismonkey(user))
+ to_chat(user, "It's too heavy for you to wield fully.")
+ return
+ if(user.get_inactive_held_item())
+ if(require_twohands)
+ to_chat(user, "[parent] is too cumbersome to carry in one hand!")
+ user.dropItemToGround(parent, force=TRUE)
+ else
+ to_chat(user, "You need your other hand to be empty!")
+ return
+ if(user.get_num_arms() < 2)
+ if(require_twohands)
+ user.dropItemToGround(parent, force=TRUE)
+ to_chat(user, "You don't have enough intact hands.")
+ return
+
+ // wield update status
+ if(SEND_SIGNAL(parent, COMSIG_TWOHANDED_WIELD, user) & COMPONENT_TWOHANDED_BLOCK_WIELD)
+ return // blocked wield from item
+ wielded = TRUE
+ RegisterSignal(user, COMSIG_MOB_SWAP_HANDS, .proc/on_swap_hands)
+
+ // update item stats and name
+ var/obj/item/parent_item = parent
+ if(force_multiplier)
+ parent_item.force *= force_multiplier
+ else if(force_wielded)
+ parent_item.force = force_wielded
+ if(sharpened_increase)
+ parent_item.force += sharpened_increase
+ parent_item.name = "[parent_item.name] (Wielded)"
+ parent_item.update_icon()
+
+ if(iscyborg(user))
+ to_chat(user, "You dedicate your module to [parent].")
+ else
+ to_chat(user, "You grab [parent] with both hands.")
+
+ // Play sound if one is set
+ if(wieldsound)
+ playsound(parent_item.loc, wieldsound, 50, TRUE)
+
+ // Let's reserve the other hand
+ offhand_item = new(user)
+ offhand_item.name = "[parent_item.name] - offhand"
+ offhand_item.desc = "Your second grip on [parent_item]."
+ offhand_item.wielded = TRUE
+ RegisterSignal(offhand_item, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ user.put_in_inactive_hand(offhand_item)
+
+/**
+ * Unwield the two handed item
+ *
+ * vars:
+ * * user The mob/living/carbon that is unwielding the item
+ * * show_message (option) show a message to chat on unwield
+ */
+/datum/component/two_handed/proc/unwield(mob/living/carbon/user, show_message=TRUE)
+ if(!wielded || !user)
+ return
+
+ // wield update status
+ wielded = FALSE
+ UnregisterSignal(user, COMSIG_MOB_SWAP_HANDS)
+ SEND_SIGNAL(parent, COMSIG_TWOHANDED_UNWIELD, user)
+
+ // update item stats
+ var/obj/item/parent_item = parent
+ if(sharpened_increase)
+ parent_item.force -= sharpened_increase
+ if(force_multiplier)
+ parent_item.force /= force_multiplier
+ else if(force_unwielded)
+ parent_item.force = force_unwielded
+
+ // update the items name to remove the wielded status
+ var/sf = findtext(parent_item.name, " (Wielded)", -10) // 10 == length(" (Wielded)")
+ if(sf)
+ parent_item.name = copytext(parent_item.name, 1, sf)
+ else
+ parent_item.name = "[initial(parent_item.name)]"
+
+ // Update icons
+ parent_item.update_icon()
+ if(user.get_item_by_slot(ITEM_SLOT_BACK) == parent)
+ user.update_inv_back()
+ else
+ user.update_inv_hands()
+
+ // if the item requires two handed drop the item on unwield
+ if(require_twohands)
+ user.dropItemToGround(parent, force=TRUE)
+
+ // Show message if requested
+ if(show_message)
+ if(iscyborg(user))
+ to_chat(user, "You free up your module.")
+ else if(require_twohands)
+ to_chat(user, "You drop [parent].")
+ else
+ to_chat(user, "You are now carrying [parent] with one hand.")
+
+ // Play sound if set
+ if(unwieldsound)
+ playsound(parent_item.loc, unwieldsound, 50, TRUE)
+
+ // Remove the object in the offhand
+ if(offhand_item)
+ UnregisterSignal(offhand_item, COMSIG_ITEM_DROPPED)
+ qdel(offhand_item)
+ // Clear any old refrence to an item that should be gone now
+ offhand_item = null
+
+/**
+ * on_attack triggers on attack with the parent item
+ */
+/datum/component/two_handed/proc/on_attack(obj/item/source, mob/living/target, mob/living/user)
+ if(wielded && attacksound)
+ var/obj/item/parent_item = parent
+ playsound(parent_item.loc, attacksound, 50, TRUE)
+
+/**
+ * on_update_icon triggers on call to update parent items icon
+ *
+ * Updates the icon using icon_wielded if set
+ */
+/datum/component/two_handed/proc/on_update_icon(datum/source)
+ if(icon_wielded && wielded)
+ var/obj/item/parent_item = parent
+ if(parent_item)
+ parent_item.icon_state = icon_wielded
+ return COMSIG_ATOM_NO_UPDATE_ICON_STATE
+
+/**
+ * on_moved Triggers on item moved
+ */
+/datum/component/two_handed/proc/on_moved(datum/source, mob/user, dir)
+ unwield(user)
+
+/**
+ * on_swap_hands Triggers on swapping hands, blocks swap if the other hand is busy
+ */
+/datum/component/two_handed/proc/on_swap_hands(mob/user, obj/item/held_item)
+ if(!held_item)
+ return
+ if(held_item == parent)
+ return COMPONENT_BLOCK_SWAP
+
+/**
+ * on_sharpen Triggers on usage of a sharpening stone on the item
+ */
+/datum/component/two_handed/proc/on_sharpen(obj/item/item, amount, max_amount)
+ if(!item)
+ return COMPONENT_BLOCK_SHARPEN_BLOCKED
+ if(sharpened_increase)
+ return COMPONENT_BLOCK_SHARPEN_ALREADY
+ var/wielded_val = 0
+ if(force_multiplier)
+ var/obj/item/parent_item = parent
+ if(wielded)
+ wielded_val = parent_item.force
+ else
+ wielded_val = parent_item.force * force_multiplier
+ else
+ wielded_val = force_wielded
+ if(wielded_val > max_amount)
+ return COMPONENT_BLOCK_SHARPEN_MAXED
+ sharpened_increase = min(amount, (max_amount - wielded_val))
+ return COMPONENT_BLOCK_SHARPEN_APPLIED
+
+/**
+ * The offhand dummy item for two handed items
+ *
+ */
+/obj/item/offhand
+ name = "offhand"
+ icon_state = "offhand"
+ w_class = WEIGHT_CLASS_HUGE
+ item_flags = ABSTRACT
+ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ var/wielded = FALSE // Off Hand tracking of wielded status
+
+/obj/item/offhand/Destroy()
+ wielded = FALSE
+ return ..()
+
+/obj/item/offhand/equipped(mob/user, slot)
+ . = ..()
+ if(wielded && !user.is_holding(src) && !QDELETED(src))
+ qdel(src)
diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm
index 82ddd90b42..a2a9e376e1 100644
--- a/code/datums/martial/sleeping_carp.dm
+++ b/code/datums/martial/sleeping_carp.dm
@@ -180,14 +180,12 @@
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/twohanded/bostaff
+/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
- force_unwielded = 10
- force_wielded = 24
throwforce = 20
throw_speed = 2
attack_verb = list("smashed", "slammed", "whacked", "thwacked")
@@ -196,11 +194,29 @@
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/twohanded/bostaff/update_icon_state()
- icon_state = "bostaff[wielded]"
+/obj/item/staff/bostaff/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
-/obj/item/twohanded/bostaff/attack(mob/target, mob/living/user)
+/obj/item/staff/bostaff/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=24, icon_wielded="bostaff1")
+
+/// triggered on wield of two handed item
+/obj/item/staff/bostaff/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/staff/bostaff/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/staff/bostaff/update_icon_state()
+ icon_state = "bostaff0"
+
+/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].")
@@ -249,7 +265,7 @@
else
return ..()
-/obj/item/twohanded/bostaff/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+/obj/item/staff/bostaff/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(!wielded)
return BLOCK_NONE
return ..()
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index f6cfc79879..faed65e9c4 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -365,9 +365,9 @@
status_type = STATUS_EFFECT_REPLACE
alert_type = null
var/mutable_appearance/marked_underlay
- var/obj/item/twohanded/kinetic_crusher/hammer_synced
+ var/obj/item/kinetic_crusher/hammer_synced
-/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, obj/item/twohanded/kinetic_crusher/new_hammer_synced)
+/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, obj/item/kinetic_crusher/new_hammer_synced)
. = ..()
if(.)
hammer_synced = new_hammer_synced
diff --git a/code/datums/wires/explosive.dm b/code/datums/wires/explosive.dm
index dc4db9e85d..25493f2e30 100644
--- a/code/datums/wires/explosive.dm
+++ b/code/datums/wires/explosive.dm
@@ -75,8 +75,8 @@
/datum/wires/explosive/gibtonite
- holder_type = /obj/item/twohanded/required/gibtonite
+ holder_type = /obj/item/gibtonite
/datum/wires/explosive/gibtonite/explode()
- var/obj/item/twohanded/required/gibtonite/P = holder
+ var/obj/item/gibtonite/P = holder
P.GibtoniteReaction(null, 2)
\ No newline at end of file
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index 2f3645a248..23f065318e 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -44,7 +44,7 @@
/datum/game_mode/wizard/are_special_antags_dead()
- for(var/datum/mind/wizard in wizards)
+ for(var/datum/mind/wizard in wizards | apprentices)
if(isliving(wizard.current) && wizard.current.stat!=DEAD)
return FALSE
@@ -58,6 +58,14 @@
return TRUE
+/datum/game_mode/wizard/check_finished()
+ . = ..()
+ if(.)
+ finished = TRUE
+ else if(gamemode_ready && are_special_antags_dead() && !CONFIG_GET(keyed_list/continuous)[config_tag])
+ finished = TRUE
+ . = TRUE
+
/datum/game_mode/wizard/set_round_result()
..()
if(finished)
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 2d9880578c..8a91c266a0 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -42,9 +42,9 @@
/obj/item/clothing/mask/facehugger/toy = ARCADE_WEIGHT_RARE,
/obj/item/gun/ballistic/automatic/toy/pistol/unrestricted = ARCADE_WEIGHT_TRICK,
/obj/item/hot_potato/harmless/toy = ARCADE_WEIGHT_RARE,
- /obj/item/twohanded/dualsaber/toy = ARCADE_WEIGHT_RARE,
- /obj/item/twohanded/dualsaber/hypereutactic/toy = ARCADE_WEIGHT_RARE,
- /obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow = ARCADE_WEIGHT_RARE,
+ /obj/item/dualsaber/toy = ARCADE_WEIGHT_RARE,
+ /obj/item/dualsaber/hypereutactic/toy = ARCADE_WEIGHT_RARE,
+ /obj/item/dualsaber/hypereutactic/toy/rainbow = ARCADE_WEIGHT_RARE,
/obj/item/storage/box/snappops = ARCADE_WEIGHT_TRICK,
/obj/item/clothing/under/syndicate/tacticool = ARCADE_WEIGHT_TRICK,
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 0f5f459588..778023c1a9 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1062,11 +1062,11 @@
to_chat(user, "The airlock's bolts prevent it from being forced!")
else if( !welded && !operating)
if(!beingcrowbarred) //being fireaxe'd
- var/obj/item/twohanded/fireaxe/F = I
- if(F.wielded)
- INVOKE_ASYNC(src, (density ? .proc/open : .proc/close), 2)
- else
- to_chat(user, "You need to be wielding the fire axe to do that!")
+ var/obj/item/fireaxe/axe = I
+ if(!axe.wielded)
+ to_chat(user, "You need to be wielding \the [axe] to do that!")
+ return
+ INVOKE_ASYNC(src, (density ? .proc/open : .proc/close), 2)
else
INVOKE_ASYNC(src, (density ? .proc/open : .proc/close), 2)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 02a7e4ef97..8b2eb9d1d7 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -182,7 +182,7 @@
return
/obj/machinery/door/attackby(obj/item/I, mob/user, params)
- if(user.a_intent != INTENT_HARM && (istype(I, /obj/item/crowbar) || istype(I, /obj/item/twohanded/fireaxe)))
+ if(user.a_intent != INTENT_HARM && (istype(I, /obj/item/crowbar) || istype(I, /obj/item/fireaxe)))
try_to_crowbar(I, user)
return 1
else if(istype(I, /obj/item/weldingtool))
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
old mode 100644
new mode 100755
index 2fff2011c1..426c818ccb
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -19,7 +19,7 @@
/obj/item/modular_computer,
/obj/item/ammo_casing/mws_batt,
/obj/item/ammo_box/magazine/mws_mag,
- /obj/item/twohanded/electrostaff,
+ /obj/item/electrostaff,
/obj/item/gun/ballistic/automatic/magrifle))
/obj/machinery/recharger/RefreshParts()
diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm
index ee28f118fa..dcd86c9f24 100644
--- a/code/game/machinery/wishgranter.dm
+++ b/code/game/machinery/wishgranter.dm
@@ -108,7 +108,7 @@
killwish.health = killwish.maxHealth
killwish.vine_grab_distance = 6
killwish.melee_damage_upper = 30
- killwish.loot = list(/obj/item/twohanded/dualsaber/hypereutactic)
+ killwish.loot = list(/obj/item/dualsaber/hypereutactic)
charges--
insisting = FALSE
if(!charges)
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index 40104d5ea8..d5f53b2f1c 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -146,14 +146,13 @@
spawn(0)
new /datum/hallucination/delusion(victim, TRUE, "demon",duration,0)
- var/obj/item/twohanded/required/chainsaw/doomslayer/chainsaw = new(victim.loc)
+ var/obj/item/chainsaw/doomslayer/chainsaw = new(victim.loc)
victim.log_message("entered a blood frenzy", LOG_ATTACK)
ADD_TRAIT(chainsaw, TRAIT_NODROP, CHAINSAW_FRENZY_TRAIT)
victim.drop_all_held_items()
victim.put_in_hands(chainsaw, forced = TRUE)
chainsaw.attack_self(victim)
- chainsaw.wield(victim)
victim.reagents.add_reagent(/datum/reagent/medicine/adminordrazine,25)
to_chat(victim, "KILL, KILL, KILL! YOU HAVE NO ALLIES ANYMORE, KILL THEM ALL!")
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 79e0eceb8f..9f1b830cf0 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -496,11 +496,11 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
//if this is being done by a mob other than M, it will include the mob equipper, who is trying to equip the item to mob M. equipper will be null otherwise.
//If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen.
//Set disable_warning to TRUE if you wish it to not give you outputs.
-/obj/item/proc/mob_can_equip(mob/living/M, mob/living/equipper, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE)
+/obj/item/proc/mob_can_equip(mob/living/M, mob/living/equipper, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning)
if(!M)
return FALSE
- return M.can_equip(src, slot, disable_warning, bypass_equip_delay_self)
+ return M.can_equip(src, slot, disable_warning, bypass_equip_delay_self, clothing_check, return_warning)
/obj/item/verb/verb_pickup()
set src in oview(1)
diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm
index f3ea461c74..6e305c30ee 100644
--- a/code/game/objects/items/RCL.dm
+++ b/code/game/objects/items/RCL.dm
@@ -1,4 +1,4 @@
-/obj/item/twohanded/rcl
+/obj/item/rcl
name = "rapid cable layer"
desc = "A device used to rapidly deploy cables. It has screws on the side which can be removed to slide off the cables. Do not use without insulation!"
icon = 'icons/obj/tools.dmi'
@@ -23,15 +23,26 @@
var/datum/radial_menu/persistent/wiring_gui_menu
var/mob/listeningTo
-/obj/item/twohanded/rcl/Initialize()
+/obj/item/rcl/Initialize()
. = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
update_icon()
-/obj/item/twohanded/rcl/ComponentInitialize()
+/obj/item/rcl/ComponentInitialize()
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
+ AddComponent(/datum/component/two_handed)
-/obj/item/twohanded/rcl/attackby(obj/item/W, mob/user)
+/// triggered on wield of two handed item
+/obj/item/rcl/proc/on_wield(obj/item/source, mob/user)
+ active = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/rcl/proc/on_unwield(obj/item/source, mob/user)
+ active = FALSE
+
+/obj/item/rcl/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W
@@ -86,26 +97,26 @@
else
..()
-/obj/item/twohanded/rcl/examine(mob/user)
+/obj/item/rcl/examine(mob/user)
. = ..()
if(loaded)
. += "It contains [loaded.amount]/[max_amount] cables."
-/obj/item/twohanded/rcl/Destroy()
+/obj/item/rcl/Destroy()
QDEL_NULL(loaded)
last = null
listeningTo = null
QDEL_NULL(wiring_gui_menu)
return ..()
-/obj/item/twohanded/rcl/update_icon_state()
+/obj/item/rcl/update_icon_state()
icon_state = initial(icon_state)
item_state = initial(item_state)
if(!loaded || !loaded.amount)
icon_state += "-empty"
item_state += "-0"
-/obj/item/twohanded/rcl/update_overlays()
+/obj/item/rcl/update_overlays()
. = ..()
if(!loaded || !loaded.amount)
return
@@ -113,7 +124,7 @@
cable_overlay.color = GLOB.cable_colors[colors[current_color_index]]
. += cable_overlay
-/obj/item/twohanded/rcl/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
+/obj/item/rcl/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(!isinhands || !(loaded?.amount))
return
@@ -121,7 +132,7 @@
cable_overlay.color = GLOB.cable_colors[colors[current_color_index]]
. += cable_overlay
-/obj/item/twohanded/rcl/proc/is_empty(mob/user, loud = 1)
+/obj/item/rcl/proc/is_empty(mob/user, loud = 1)
update_icon()
if(!loaded || !loaded.amount)
if(loud)
@@ -130,26 +141,23 @@
QDEL_NULL(loaded)
loaded = null
QDEL_NULL(wiring_gui_menu)
- unwield(user)
- active = wielded
return TRUE
return FALSE
-/obj/item/twohanded/rcl/pickup(mob/user)
+/obj/item/rcl/pickup(mob/user)
..()
getMobhook(user)
-/obj/item/twohanded/rcl/dropped(mob/wearer)
+/obj/item/rcl/dropped(mob/wearer)
..()
UnregisterSignal(wearer, COMSIG_MOVABLE_MOVED)
listeningTo = null
last = null
-/obj/item/twohanded/rcl/attack_self(mob/user)
+/obj/item/rcl/attack_self(mob/user)
..()
- active = wielded
if(!active)
last = null
else if(!last)
@@ -158,7 +166,7 @@
last = C
break
-obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
+obj/item/rcl/proc/getMobhook(mob/to_hook)
if(listeningTo == to_hook)
return
if(listeningTo)
@@ -166,7 +174,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
RegisterSignal(to_hook, COMSIG_MOVABLE_MOVED, .proc/trigger)
listeningTo = to_hook
-/obj/item/twohanded/rcl/proc/trigger(mob/user)
+/obj/item/rcl/proc/trigger(mob/user)
if(active)
layCable(user)
if(wiring_gui_menu) //update the wire options as you move
@@ -174,7 +182,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
//previous contents of trigger(), lays cable each time the player moves
-/obj/item/twohanded/rcl/proc/layCable(mob/user)
+/obj/item/rcl/proc/layCable(mob/user)
if(!isturf(user.loc))
return
if(is_empty(user, 0))
@@ -207,7 +215,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
update_icon()
//searches the current tile for a stub cable of the same colour
-/obj/item/twohanded/rcl/proc/findLinkingCable(mob/user)
+/obj/item/rcl/proc/findLinkingCable(mob/user)
var/turf/T
if(!isturf(user.loc))
return
@@ -223,10 +231,8 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
continue
if(C.d1 == 0)
return C
- return
-
-/obj/item/twohanded/rcl/proc/wiringGuiGenerateChoices(mob/user)
+/obj/item/rcl/proc/wiringGuiGenerateChoices(mob/user)
var/fromdir = 0
var/obj/structure/cable/linkingCable = findLinkingCable(user)
if(linkingCable)
@@ -243,12 +249,12 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
wiredirs[icondir] = img
return wiredirs
-/obj/item/twohanded/rcl/proc/showWiringGui(mob/user)
+/obj/item/rcl/proc/showWiringGui(mob/user)
var/list/choices = wiringGuiGenerateChoices(user)
wiring_gui_menu = show_radial_menu_persistent(user, src , choices, select_proc = CALLBACK(src, .proc/wiringGuiReact, user), radius = 42)
-/obj/item/twohanded/rcl/proc/wiringGuiUpdate(mob/user)
+/obj/item/rcl/proc/wiringGuiUpdate(mob/user)
if(!wiring_gui_menu)
return
@@ -259,7 +265,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
//Callback used to respond to interactions with the wiring menu
-/obj/item/twohanded/rcl/proc/wiringGuiReact(mob/living/user,choice)
+/obj/item/rcl/proc/wiringGuiReact(mob/living/user,choice)
if(!choice) //close on a null choice (the center button)
QDEL_NULL(wiring_gui_menu)
return
@@ -290,7 +296,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
wiringGuiUpdate(user)
-/obj/item/twohanded/rcl/ui_action_click(mob/user, action)
+/obj/item/rcl/ui_action_click(mob/user, action)
if(istype(action, /datum/action/item_action/rcl_col))
current_color_index++;
if (current_color_index > colors.len)
@@ -308,13 +314,13 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook)
else //open the menu
showWiringGui(user)
-/obj/item/twohanded/rcl/pre_loaded/Initialize() //Comes preloaded with cable, for testing stuff
+/obj/item/rcl/pre_loaded/Initialize() //Comes preloaded with cable, for testing stuff
loaded = new()
loaded.max_amount = max_amount
loaded.amount = max_amount
return ..()
-/obj/item/twohanded/rcl/ghetto
+/obj/item/rcl/ghetto
actions_types = list()
max_amount = 30
name = "makeshift rapid cable layer"
diff --git a/code/game/objects/items/binoculars.dm b/code/game/objects/items/binoculars.dm
new file mode 100644
index 0000000000..347f0ad3a7
--- /dev/null
+++ b/code/game/objects/items/binoculars.dm
@@ -0,0 +1,65 @@
+/obj/item/binoculars
+ name = "binoculars"
+ desc = "Used for long-distance surveillance."
+ item_state = "binoculars"
+ icon_state = "binoculars"
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
+ slot_flags = ITEM_SLOT_BELT
+ w_class = WEIGHT_CLASS_SMALL
+ var/mob/listeningTo
+ var/zoom_out_amt = 6
+ var/zoom_amt = 10
+
+/obj/item/binoculars/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+
+/obj/item/binoculars/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=8, force_wielded=12)
+
+/obj/item/binoculars/Destroy()
+ listeningTo = null
+ return ..()
+
+/obj/item/binoculars/proc/on_wield(obj/item/source, mob/user)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/unwield)
+ listeningTo = user
+ user.visible_message("[user] holds [src] up to [user.p_their()] eyes.", "You hold [src] up to your eyes.")
+ item_state = "binoculars_wielded"
+ user.regenerate_icons()
+ if(!user?.client)
+ return
+ var/client/C = user.client
+ var/_x = 0
+ var/_y = 0
+ switch(user.dir)
+ if(NORTH)
+ _y = zoom_amt
+ if(EAST)
+ _x = zoom_amt
+ if(SOUTH)
+ _y = -zoom_amt
+ if(WEST)
+ _x = -zoom_amt
+ C.change_view(world.view + zoom_out_amt)
+ C.pixel_x = world.icon_size*_x
+ C.pixel_y = world.icon_size*_y
+/obj/item/binoculars/proc/on_unwield(obj/item/source, mob/user)
+ unwield(user)
+
+/obj/item/binoculars/proc/unwield(mob/user)
+ if(listeningTo)
+ UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
+ listeningTo = null
+ user.visible_message("[user] lowers [src].", "You lower [src].")
+ item_state = "binoculars"
+ user.regenerate_icons()
+ if(user && user.client)
+ user.regenerate_icons()
+ var/client/C = user.client
+ C.change_view(CONFIG_GET(string/default_view))
+ user.client.pixel_x = 0
+ user.client.pixel_y = 0
diff --git a/code/game/objects/items/broom.dm b/code/game/objects/items/broom.dm
new file mode 100644
index 0000000000..225644109f
--- /dev/null
+++ b/code/game/objects/items/broom.dm
@@ -0,0 +1,69 @@
+/obj/item/broom
+ name = "broom"
+ desc = "This is my BROOMSTICK! It can be used manually or braced with two hands to sweep items as you move. It has a telescopic handle for compact storage."
+ icon = 'icons/obj/janitor.dmi'
+ icon_state = "broom0"
+ lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
+ force = 8
+ throwforce = 10
+ throw_speed = 3
+ throw_range = 7
+ w_class = WEIGHT_CLASS_NORMAL
+ attack_verb = list("swept", "brushed off", "bludgeoned", "whacked")
+ resistance_flags = FLAMMABLE
+
+/obj/item/broom/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+
+/obj/item/broom/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=8, force_wielded=12, icon_wielded="broom1")
+
+/obj/item/broom/update_icon_state()
+ icon_state = "broom0"
+
+/// triggered on wield of two handed item
+/obj/item/broom/proc/on_wield(obj/item/source, mob/user)
+ to_chat(user, "You brace the [src] against the ground in a firm sweeping stance.")
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/sweep)
+
+/// triggered on unwield of two handed item
+/obj/item/broom/proc/on_unwield(obj/item/source, mob/user)
+ UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
+
+/obj/item/broom/afterattack(atom/A, mob/user, proximity)
+ . = ..()
+ if(!proximity)
+ return
+ sweep(user, A, FALSE)
+
+/obj/item/broom/proc/sweep(mob/user, atom/A, moving = TRUE)
+ var/turf/target
+ if (!moving)
+ if (isturf(A))
+ target = A
+ else
+ target = A.loc
+ else
+ target = user.loc
+ if (!isturf(target))
+ return
+ if (locate(/obj/structure/table) in target.contents)
+ return
+ var/i = 0
+ for(var/obj/item/garbage in target.contents)
+ if(!garbage.anchored)
+ garbage.Move(get_step(target, user.dir), user.dir)
+ i++
+ if(i >= 20)
+ break
+ if(i >= 1)
+ playsound(loc, 'sound/weapons/thudswoosh.ogg', 30, TRUE, -1)
+
+/obj/item/broom/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) //bless you whoever fixes this copypasta
+ J.put_in_cart(src, user)
+ J.mybroom=src
+ J.update_icon()
diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm
new file mode 100644
index 0000000000..f382aa1ed3
--- /dev/null
+++ b/code/game/objects/items/chainsaw.dm
@@ -0,0 +1,93 @@
+
+// CHAINSAW
+/obj/item/chainsaw
+ name = "chainsaw"
+ desc = "A versatile power tool. Useful for limbing trees and delimbing humans."
+ icon_state = "chainsaw_off"
+ lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
+ flags_1 = CONDUCT_1
+ force = 13
+ var/force_on = 24
+ w_class = WEIGHT_CLASS_HUGE
+ throwforce = 13
+ throw_speed = 2
+ throw_range = 4
+ custom_materials = list(/datum/material/iron=13000)
+ attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
+ hitsound = "swing_hit"
+ sharpness = IS_SHARP
+ actions_types = list(/datum/action/item_action/startchainsaw)
+ tool_behaviour = TOOL_SAW
+ toolspeed = 0.5
+ var/on = FALSE
+ var/wielded = FALSE // track wielded status on item
+
+/obj/item/chainsaw/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+
+/obj/item/chainsaw/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/butchering, 30, 100, 0, 'sound/weapons/chainsawhit.ogg', TRUE)
+ AddComponent(/datum/component/two_handed, require_twohands=TRUE)
+ AddElement(/datum/element/update_icon_updates_onmob)
+
+/// triggered on wield of two handed item
+/obj/item/chainsaw/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/chainsaw/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/chainsaw/suicide_act(mob/living/carbon/user)
+ if(on)
+ user.visible_message("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ playsound(src, 'sound/weapons/chainsawhit.ogg', 100, 1)
+ var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)
+ if(myhead)
+ myhead.dismember()
+ else
+ user.visible_message("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!")
+ playsound(src, 'sound/weapons/genhit1.ogg', 100, 1)
+ return(BRUTELOSS)
+
+/obj/item/chainsaw/attack_self(mob/user)
+ on = !on
+ to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]")
+ force = on ? force_on : initial(force)
+ throwforce = on ? force_on : force
+ update_icon()
+ var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering)
+ butchering.butchering_enabled = on
+
+ if(on)
+ hitsound = 'sound/weapons/chainsawhit.ogg'
+ else
+ hitsound = "swing_hit"
+
+/obj/item/chainsaw/update_icon_state()
+ icon_state = "chainsaw_[on ? "on" : "off"]"
+
+/obj/item/chainsaw/get_dismemberment_chance()
+ if(wielded)
+ . = ..()
+
+/obj/item/chainsaw/doomslayer
+ name = "THE GREAT COMMUNICATOR"
+ desc = "VRRRRRRR!!!"
+ armour_penetration = 100
+ force_on = 30
+
+/obj/item/chainsaw/doomslayer/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ block_return[BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE] = 100
+ return ..()
+
+/obj/item/chainsaw/doomslayer/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
+ owner.visible_message("Ranged attacks just make [owner] angrier!")
+ playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, 1)
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return ..()
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 7cc76da312..b683ea9934 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -19,7 +19,7 @@
var/on = FALSE //if the paddles are equipped (1) or on the defib (0)
var/safety = TRUE //if you can zap people with the defibs on harm mode
var/powered = FALSE //if there's a cell in the defib with enough power for a revive, blocks paddles from reviving otherwise
- var/obj/item/twohanded/shockpaddles/paddles
+ var/obj/item/shockpaddles/paddles
var/obj/item/stock_parts/cell/cell
var/combat = FALSE //can we revive through space suits?
var/grab_ghost = FALSE // Do we pull the ghost back into their body?
@@ -106,7 +106,6 @@
/obj/item/defibrillator/attackby(obj/item/W, mob/user, params)
if(W == paddles)
- paddles.unwield()
toggle_paddles()
else if(istype(W, /obj/item/stock_parts/cell))
var/obj/item/stock_parts/cell/C = W
@@ -170,7 +169,6 @@
return
else
//Remove from their hands and back onto the defib unit
- paddles.unwield()
remove_paddles(user)
update_power()
@@ -179,7 +177,7 @@
A.UpdateButtonIcon()
/obj/item/defibrillator/proc/make_paddles()
- return new /obj/item/twohanded/shockpaddles(src)
+ return new /obj/item/shockpaddles(src)
/obj/item/defibrillator/equipped(mob/user, slot)
..()
@@ -256,13 +254,12 @@
/obj/item/defibrillator/compact/combat/loaded/attackby(obj/item/W, mob/user, params)
if(W == paddles)
- paddles.unwield()
toggle_paddles()
return
//paddles
-/obj/item/twohanded/shockpaddles
+/obj/item/shockpaddles
name = "defibrillator paddles"
desc = "A pair of plastic-gripped paddles with flat metal surfaces that are used to deliver powerful electric shocks."
icon = 'icons/obj/items_and_weapons.dmi'
@@ -284,24 +281,48 @@
var/grab_ghost = FALSE
var/tlimit = DEFIB_TIME_LIMIT * 10
var/disarm_shock_time = 10
+ var/wielded = FALSE // track wielded status on item
- var/mob/listeningTo
+/obj/item/shockpaddles/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+ if(!req_defib)
+ return //If it doesn't need a defib, just say it exists
+ if (!loc || !istype(loc, /obj/item/defibrillator)) //To avoid weird issues from admin spawns
+ return INITIALIZE_HINT_QDEL
+ defib = loc
+ busy = FALSE
+ update_icon()
-/obj/item/twohanded/shockpaddles/ComponentInitialize()
+/obj/item/shockpaddles/ComponentInitialize()
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
+ AddComponent(/datum/component/two_handed, force_unwielded=8, force_wielded=12)
-/obj/item/twohanded/shockpaddles/equipped(mob/user, slot)
+/// triggered on wield of two handed item
+/obj/item/shockpaddles/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/shockpaddles/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/shockpaddles/Destroy()
+ defib = null
+ return ..()
+
+/obj/item/shockpaddles/equipped(mob/user, slot)
. = ..()
if(!req_defib)
return
RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/check_range)
-/obj/item/twohanded/shockpaddles/Moved()
+/obj/item/shockpaddles/Moved()
. = ..()
check_range()
-/obj/item/twohanded/shockpaddles/proc/check_range()
+/obj/item/shockpaddles/proc/check_range()
if(!req_defib || !defib)
return
if(!in_range(src,defib))
@@ -312,7 +333,7 @@
visible_message("[src] snap back into [defib].")
snap_back()
-/obj/item/twohanded/shockpaddles/proc/recharge(var/time)
+/obj/item/shockpaddles/proc/recharge(var/time)
if(req_defib || !time)
return
cooldown = TRUE
@@ -324,57 +345,36 @@
cooldown = FALSE
update_icon()
-/obj/item/twohanded/shockpaddles/New(mainunit)
- ..()
- if(check_defib_exists(mainunit, src) && req_defib)
- defib = mainunit
- forceMove(defib)
- busy = FALSE
- update_icon()
-
-/obj/item/twohanded/shockpaddles/update_icon_state()
- icon_state = "defibpaddles[wielded]"
- item_state = "defibpaddles[wielded]"
- if(cooldown)
- icon_state = "defibpaddles[wielded]_cooldown"
-
-/obj/item/twohanded/shockpaddles/suicide_act(mob/user)
+/obj/item/shockpaddles/suicide_act(mob/user)
user.visible_message("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!")
if(req_defib)
defib.deductcharge(revivecost)
playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1)
return (OXYLOSS)
-/obj/item/twohanded/shockpaddles/dropped(mob/user)
+/obj/item/shockpaddles/update_icon_state()
+ icon_state = "defibpaddles[wielded]"
+ item_state = "defibpaddles[wielded]"
+ if(cooldown)
+ icon_state = "defibpaddles[wielded]_cooldown"
+
+/obj/item/shockpaddles/dropped(mob/user)
if(!req_defib)
return ..()
if(user)
UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
- var/obj/item/twohanded/offhand/O = user.get_inactive_held_item()
- if(istype(O))
- O.unwield()
if(user != loc)
to_chat(user, "The paddles snap back into the main unit.")
snap_back()
- return unwield(user)
-/obj/item/twohanded/shockpaddles/proc/snap_back()
+/obj/item/shockpaddles/proc/snap_back()
if(!defib)
return
defib.on = FALSE
forceMove(defib)
defib.update_power()
-/obj/item/twohanded/shockpaddles/proc/check_defib_exists(mainunit, mob/living/carbon/M, obj/O)
- if(!req_defib)
- return TRUE //If it doesn't need a defib, just say it exists
- if (!mainunit || !istype(mainunit, /obj/item/defibrillator)) //To avoid weird issues from admin spawns
- qdel(O)
- return FALSE
- else
- return TRUE
-
-/obj/item/twohanded/shockpaddles/attack(mob/M, mob/user)
+/obj/item/shockpaddles/attack(mob/M, mob/user)
if(busy)
return
@@ -426,7 +426,7 @@
do_help(H, user)
-/obj/item/twohanded/shockpaddles/proc/shock_touching(dmg, mob/H)
+/obj/item/shockpaddles/proc/shock_touching(dmg, mob/H)
if(!H.pulledby || !isliving(H.pulledby))
return
if(req_defib && defib.pullshocksafely)
@@ -437,7 +437,7 @@
M.visible_message("[M] is electrocuted by [M.p_their()] contact with [H]!")
M.emote("scream")
-/obj/item/twohanded/shockpaddles/proc/do_disarm(mob/living/M, mob/living/user)
+/obj/item/shockpaddles/proc/do_disarm(mob/living/M, mob/living/user)
if(req_defib && defib.safety)
return
if(!req_defib && !combat)
@@ -465,7 +465,7 @@
else
recharge(60)
-/obj/item/twohanded/shockpaddles/proc/do_harm(mob/living/carbon/H, mob/living/user)
+/obj/item/shockpaddles/proc/do_harm(mob/living/carbon/H, mob/living/user)
if(req_defib && defib.safety)
return
if(!req_defib && !combat)
@@ -520,7 +520,7 @@
busy = FALSE
update_icon()
-/obj/item/twohanded/shockpaddles/proc/do_help(mob/living/carbon/H, mob/living/user)
+/obj/item/shockpaddles/proc/do_help(mob/living/carbon/H, mob/living/user)
user.visible_message("[user] begins to place [src] on [H]'s chest.", "You begin to place [src] on [H]'s chest...")
busy = TRUE
update_icon()
@@ -677,14 +677,14 @@
return TRUE
return ..()
-/obj/item/twohanded/shockpaddles/cyborg
+/obj/item/shockpaddles/cyborg
name = "cyborg defibrillator paddles"
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "defibpaddles0"
item_state = "defibpaddles0"
req_defib = FALSE
-/obj/item/twohanded/shockpaddles/cyborg/attack(mob/M, mob/user)
+/obj/item/shockpaddles/cyborg/attack(mob/M, mob/user)
if(iscyborg(user))
var/mob/living/silicon/robot/R = user
if(R.emagged)
@@ -696,7 +696,7 @@
. = ..()
-/obj/item/twohanded/shockpaddles/syndicate
+/obj/item/shockpaddles/syndicate
name = "syndicate defibrillator paddles"
desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and to deliver powerful shocks offensively."
combat = TRUE
diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm
new file mode 100644
index 0000000000..8c7049c713
--- /dev/null
+++ b/code/game/objects/items/dualsaber.dm
@@ -0,0 +1,353 @@
+/*
+ * Double-Bladed Energy Swords - Cheridan
+ */
+/obj/item/dualsaber
+ icon_state = "dualsaber0"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
+ name = "double-bladed energy sword"
+ desc = "Handle with care."
+ force = 3
+ throwforce = 5
+ throw_speed = 3
+ throw_range = 5
+ w_class = WEIGHT_CLASS_SMALL
+ item_flags = SLOWS_WHILE_IN_HAND
+ var/w_class_on = WEIGHT_CLASS_BULKY
+ hitsound = "swing_hit"
+ var/hitsound_on = 'sound/weapons/blade1.ogg'
+ armour_penetration = 35
+ var/saber_color = "green"
+ light_color = "#00ff00"//green
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ 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
+ block_parry_data = /datum/block_parry_data/dual_esword
+ var/hacked = FALSE
+ /// Can this reflect all energy projectiles?
+ var/can_reflect = TRUE
+ var/brightness_on = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD
+ var/list/possible_colors = list("red", "blue", "green", "purple")
+ var/list/rainbow_colors = list(LIGHT_COLOR_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)
+ var/spinnable = TRUE
+ total_mass = 0.4 //Survival flashlights typically weigh around 5 ounces.
+ var/total_mass_on = 3.4
+ var/wielded = FALSE // track wielded status on item
+ var/slowdown_wielded = 0
+
+/datum/block_parry_data/dual_esword
+ block_damage_absorption = 2
+ block_damage_multiplier = 0.15
+ block_damage_multiplier_override = list(
+ ATTACK_TYPE_MELEE = 0.25
+ )
+ block_start_delay = 0 // instantaneous block
+ block_stamina_cost_per_second = 2.5
+ block_stamina_efficiency = 3
+ block_lock_sprinting = TRUE
+ // no attacking while blocking
+ block_lock_attacking = TRUE
+ block_projectile_mitigation = 75
+
+ parry_time_windup = 0
+ parry_time_active = 8
+ parry_time_spindown = 0
+ // we want to signal to players the most dangerous phase, the time when automatic counterattack is a thing.
+ parry_time_windup_visual_override = 1
+ parry_time_active_visual_override = 3
+ parry_time_spindown_visual_override = 4
+ parry_flags = PARRY_DEFAULT_HANDLE_FEEDBACK // esword users can attack while parrying.
+ parry_time_perfect = 2 // first ds isn't perfect
+ parry_time_perfect_leeway = 1
+ parry_imperfect_falloff_percent = 10
+ parry_efficiency_to_counterattack = 100
+ parry_efficiency_considered_successful = 25 // VERY generous
+ parry_efficiency_perfect = 90
+ parry_failed_stagger_duration = 3 SECONDS
+ parry_failed_clickcd_duration = CLICK_CD_MELEE
+
+ // more efficient vs projectiles
+ block_stamina_efficiency_override = list(
+ TEXT_ATTACK_TYPE_PROJECTILE = 4
+ )
+
+/obj/item/dualsaber/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+
+/obj/item/dualsaber/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=3, force_wielded=34, \
+ wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg')
+
+/obj/item/dualsaber/Initialize()
+ . = ..()
+ if(LAZYLEN(possible_colors))
+ saber_color = pick(possible_colors)
+ switch(saber_color)
+ if("red")
+ light_color = LIGHT_COLOR_RED
+ if("green")
+ light_color = LIGHT_COLOR_GREEN
+ if("blue")
+ light_color = LIGHT_COLOR_LIGHT_CYAN
+ if("purple")
+ light_color = LIGHT_COLOR_LAVENDER
+
+/// Triggered on wield of two handed item
+/// Specific hulk checks due to reflection chance for balance issues and switches hitsounds.
+/obj/item/dualsaber/proc/on_wield(obj/item/source, mob/living/carbon/user)
+ if(user.has_dna() && user.dna.check_mutation(HULK))
+ to_chat(user, "You lack the grace to wield this!")
+ return COMPONENT_TWOHANDED_BLOCK_WIELD
+ wielded = TRUE
+ sharpness = IS_SHARP
+ w_class = w_class_on
+ total_mass = total_mass_on
+ hitsound = 'sound/weapons/blade1.ogg'
+ slowdown += slowdown_wielded
+ START_PROCESSING(SSobj, src)
+ set_light(brightness_on)
+ AddElement(/datum/element/sword_point)
+ item_flags |= (ITEM_CAN_BLOCK|ITEM_CAN_PARRY)
+
+/// Triggered on unwield of two handed item
+/// switch hitsounds
+/obj/item/dualsaber/proc/on_unwield(obj/item/source, mob/living/carbon/user)
+ sharpness = initial(sharpness)
+ w_class = initial(w_class)
+ total_mass = initial(total_mass)
+ wielded = FALSE
+ hitsound = "swing_hit"
+ slowdown_wielded -= slowdown_wielded
+ STOP_PROCESSING(SSobj, src)
+ set_light(0)
+ RemoveElement(/datum/element/sword_point)
+ item_flags &= ~(ITEM_CAN_BLOCK|ITEM_CAN_PARRY)
+
+/obj/item/dualsaber/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ . = ..()
+
+/obj/item/dualsaber/update_icon_state()
+ if(wielded)
+ icon_state = "dualsaber[saber_color][wielded]"
+ else
+ icon_state = "dualsaber0"
+ clean_blood()
+
+/obj/item/dualsaber/suicide_act(mob/living/carbon/user)
+ if(wielded)
+ user.visible_message("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!")
+ var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)//stole from chainsaw code
+ var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN)
+ B.organ_flags &= ~ORGAN_VITAL //this cant possibly be a good idea
+ var/randdir
+ for(var/i in 1 to 24)//like a headless chicken!
+ if(user.is_holding(src))
+ randdir = pick(GLOB.alldirs)
+ user.Move(get_step(user, randdir),randdir)
+ user.emote("spin")
+ if (i == 3 && myhead)
+ myhead.drop_limb()
+ sleep(3)
+ else
+ user.visible_message("[user] panics and starts choking to death!")
+ return OXYLOSS
+ else
+ user.visible_message("[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!")
+ return BRUTELOSS
+
+/obj/item/dualsaber/attack(mob/target, mob/living/carbon/human/user)
+ if(user.has_dna() && user.dna.check_mutation(HULK))
+ to_chat(user, "You grip the blade too hard and accidentally drop it!")
+ user.dropItemToGround(src)
+ return
+ ..()
+ if(HAS_TRAIT(user, TRAIT_CLUMSY) && (wielded) && prob(40))
+ impale(user)
+ return
+ if(spinnable && (wielded) && prob(50))
+ INVOKE_ASYNC(src, .proc/jedi_spin, user)
+
+/obj/item/dualsaber/proc/jedi_spin(mob/living/user)
+ for(var/i in list(NORTH,SOUTH,EAST,WEST,EAST,SOUTH,NORTH,SOUTH,EAST,WEST,EAST,SOUTH))
+ user.setDir(i)
+ if(i == WEST)
+ user.emote("flip")
+ sleep(1)
+
+/obj/item/dualsaber/proc/impale(mob/living/user)
+ to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on [src].")
+ if (force)
+ user.take_bodypart_damage(20,25)
+ else
+ user.adjustStaminaLoss(25)
+
+/obj/item/dualsaber/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!wielded)
+ return NONE
+ if(can_reflect && is_energy_reflectable_projectile(object) && (attack_type & ATTACK_TYPE_PROJECTILE))
+ block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_RETURN_TO_SENDER //no you
+ return BLOCK_SHOULD_REDIRECT | BLOCK_SUCCESS | BLOCK_REDIRECTED
+ return ..()
+
+/obj/item/dualsaber/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) //In case thats just so happens that it is still activated on the groud, prevents hulk from picking it up
+ if(wielded)
+ to_chat(user, "You can't pick up such dangerous item with your meaty hands without losing fingers, better not to!")
+ return 1
+
+/obj/item/dualsaber/process()
+ if(wielded)
+ if(hacked)
+ rainbow_process()
+ open_flame()
+ else
+ STOP_PROCESSING(SSobj, src)
+
+/obj/item/dualsaber/proc/rainbow_process()
+ light_color = pick(rainbow_colors)
+
+/obj/item/dualsaber/ignition_effect(atom/A, mob/user)
+ // same as /obj/item/melee/transforming/energy, mostly
+ if(!wielded)
+ return ""
+ var/in_mouth = ""
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ if(C.wear_mask)
+ in_mouth = ", barely missing [user.p_their()] nose"
+ . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process."
+ playsound(loc, hitsound, get_clamped_volume(), 1, -1)
+ add_fingerprint(user)
+ // Light your candles while spinning around the room
+ if(spinnable)
+ INVOKE_ASYNC(src, .proc/jedi_spin, user)
+
+/obj/item/dualsaber/green
+ possible_colors = list("green")
+
+/obj/item/dualsaber/red
+ possible_colors = list("red")
+
+/obj/item/dualsaber/blue
+ possible_colors = list("blue")
+
+/obj/item/dualsaber/purple
+ possible_colors = list("purple")
+
+/obj/item/dualsaber/attackby(obj/item/W, mob/user, params)
+ if(istype(W, /obj/item/multitool))
+ if(!hacked)
+ hacked = TRUE
+ to_chat(user, "2XRNBW_ENGAGE")
+ saber_color = "rainbow"
+ update_icon()
+ else
+ to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.")
+ else
+ return ..()
+
+/////////////////////////////////////////////////////
+// HYPEREUTACTIC Blades /////////////////////////
+/////////////////////////////////////////////////////
+
+/obj/item/dualsaber/hypereutactic
+ icon = 'icons/obj/1x2.dmi'
+ icon_state = "hypereutactic"
+ lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
+ item_state = "hypereutactic"
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+ name = "hypereutactic blade"
+ desc = "A supermassive weapon envisioned to cleave the very fabric of space and time itself in twain, the hypereutactic blade dynamically flash-forges a hypereutactic crystaline nanostructure capable of passing through most known forms of matter like a hot knife through butter."
+ force = 7
+ hitsound_on = 'sound/weapons/nebhit.ogg'
+ armour_penetration = 60
+ light_color = "#37FFF7"
+ rainbow_colors = list("#FF0000", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF","#FF00FF", "#3399ff", "#ff9900", "#fb008b", "#9800ff", "#00ffa3", "#ccff00")
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "destroyed", "ripped", "devastated", "shredded")
+ spinnable = FALSE
+ total_mass_on = 4
+ slowdown_wielded = 1
+
+/obj/item/dualsaber/hypereutactic/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=7, force_wielded=40, \
+ wieldsound='sound/weapons/nebon.ogg', unwieldsound='sound/weapons/nebhit.ogg')
+ AddElement(/datum/element/update_icon_updates_onmob)
+
+/obj/item/dualsaber/hypereutactic/update_icon_state()
+ return
+
+/obj/item/dualsaber/hypereutactic/update_overlays()
+ . = ..()
+ var/mutable_appearance/blade_overlay = mutable_appearance(icon, "hypereutactic_blade")
+ var/mutable_appearance/gem_overlay = mutable_appearance(icon, "hypereutactic_gem")
+
+ if(light_color)
+ blade_overlay.color = light_color
+ gem_overlay.color = light_color
+
+ . += gem_overlay
+
+ if(wielded)
+ . += blade_overlay
+
+ clean_blood()
+
+/obj/item/dualsaber/hypereutactic/AltClick(mob/living/user)
+ . = ..()
+ if(!user.canUseTopic(src, BE_CLOSE, FALSE) || hacked)
+ return
+ if(user.incapacitated() || !istype(user))
+ to_chat(user, "You can't do that right now!")
+ return
+ if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
+ var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null
+ if(!energy_color_input || !user.canUseTopic(src, BE_CLOSE, FALSE) || hacked)
+ return
+ light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
+ update_icon()
+ update_light()
+ return TRUE
+
+/obj/item/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
+ . = ..()
+ if(isinhands)
+ var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem")
+ gem_inhand.color = light_color
+ . += gem_inhand
+ if(wielded)
+ var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "hypereutactic_blade")
+ blade_inhand.color = light_color
+ . += blade_inhand
+
+/obj/item/dualsaber/hypereutactic/examine(mob/user)
+ . = ..()
+ if(!hacked)
+ . += "Alt-click to recolor it."
+
+/obj/item/dualsaber/hypereutactic/rainbow_process()
+ . = ..()
+ update_icon()
+ update_light()
+
+/obj/item/dualsaber/hypereutactic/chaplain
+ name = "divine lightblade"
+ desc = "A giant blade of bright and holy light, said to cut down the wicked with ease."
+ force = 5
+ block_chance = 50
+ armour_penetration = 0
+ var/chaplain_spawnable = TRUE
+ can_reflect = FALSE
+ obj_flags = UNIQUE_RENAME
+
+/obj/item/dualsaber/hypereutactic/chaplain/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=20, \
+ wieldsound='sound/weapons/nebon.ogg', unwieldsound='sound/weapons/nebhit.ogg')
+ AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
diff --git a/code/game/objects/items/electrostaff.dm b/code/game/objects/items/electrostaff.dm
new file mode 100644
index 0000000000..8d1fe4ebd1
--- /dev/null
+++ b/code/game/objects/items/electrostaff.dm
@@ -0,0 +1,263 @@
+
+/obj/item/electrostaff
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "electrostaff"
+ item_state = "electrostaff"
+ lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
+ name = "riot suppression electrostaff"
+ desc = "A large quarterstaff, with massive silver electrodes mounted at the end."
+ w_class = WEIGHT_CLASS_HUGE
+ slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_OCLOTHING
+ throwforce = 15 //if you are a madman and finish someone off with this, power to you.
+ throw_speed = 1
+ item_flags = NO_MAT_REDEMPTION
+ attack_verb = list("struck", "beaten", "thwacked", "pulped")
+ total_mass = 5 //yeah this is a heavy thing, beating people with it while it's off is not going to do you any favors. (to curb stun-kill rampaging without it being on)
+ block_parry_data = /datum/block_parry_data/electrostaff
+ var/obj/item/stock_parts/cell/cell = /obj/item/stock_parts/cell/high
+ var/on = FALSE
+ var/can_block_projectiles = FALSE //can't block guns
+ var/lethal_cost = 400 //10000/400*20 = 500. decent enough?
+ var/lethal_damage = 20
+ var/lethal_stam_cost = 4
+ var/stun_cost = 333 //10000/333*25 = 750. stunbatons are at time of writing 10000/1000*49 = 490.
+ var/stun_status_effect = STATUS_EFFECT_ELECTROSTAFF //a small slowdown effect
+ var/stun_stamdmg = 40
+ var/stun_status_duration = 25
+ var/stun_stam_cost = 3.5
+ var/wielded = FALSE // track wielded status on item
+
+// haha security desword time /s
+/datum/block_parry_data/electrostaff
+ block_damage_absorption = 0
+ block_damage_multiplier = 1
+ can_block_attack_types = ~ATTACK_TYPE_PROJECTILE // only able to parry non projectiles
+ block_damage_multiplier_override = list(
+ TEXT_ATTACK_TYPE_MELEE = 0.5, // only useful on melee and unarmed
+ TEXT_ATTACK_TYPE_UNARMED = 0.3
+ )
+ block_start_delay = 0.5 // near instantaneous block
+ block_stamina_cost_per_second = 3
+ block_stamina_efficiency = 2 // haha this is a horrible idea
+ // more slowdown that deswords because security
+ block_slowdown = 2
+ // no attacking while blocking
+ block_lock_attacking = TRUE
+
+ parry_time_windup = 1
+ parry_time_active = 5
+ parry_time_spindown = 0
+ parry_time_spindown_visual_override = 1
+ parry_flags = PARRY_DEFAULT_HANDLE_FEEDBACK | PARRY_LOCK_ATTACKING // no attacking while parrying
+ parry_time_perfect = 0
+ parry_time_perfect_leeway = 0.5
+ parry_efficiency_perfect = 100
+ parry_imperfect_falloff_percent = 1
+ parry_imperfect_falloff_percent_override = list(
+ TEXT_ATTACK_TYPE_PROJECTILE = 45 // really crappy vs projectiles
+ )
+ parry_time_perfect_leeway_override = list(
+ TEXT_ATTACK_TYPE_PROJECTILE = 1 // extremely harsh window for projectiles
+ )
+ // not extremely punishing to fail, but no spamming the parry.
+ parry_cooldown = 2.5 SECONDS
+ parry_failed_stagger_duration = 1.5 SECONDS
+ parry_failed_clickcd_duration = 1 SECONDS
+
+/obj/item/electrostaff/Initialize(mapload)
+ . = ..()
+ if(ispath(cell))
+ cell = new cell
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/turn_on)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/turn_off)
+
+/obj/item/electrostaff/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_multiplier=2, wieldsound="sparks", unwieldsound="sparks")
+
+/obj/item/electrostaff/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ QDEL_NULL(cell)
+ return ..()
+
+/obj/item/electrostaff/get_cell()
+ . = cell
+ if(iscyborg(loc))
+ var/mob/living/silicon/robot/R = loc
+ . = R.get_cell()
+
+/obj/item/electrostaff/proc/min_hitcost()
+ return min(stun_cost, lethal_cost)
+
+/obj/item/electrostaff/proc/turn_on(obj/item/source, mob/user)
+ wielded = TRUE
+ item_flags |= (ITEM_CAN_BLOCK|ITEM_CAN_PARRY)
+ if(!cell)
+ if(user)
+ to_chat(user, "[src] has no cell.")
+ return
+ if(cell.charge < min_hitcost())
+ if(user)
+ to_chat(user, "[src] is out of charge.")
+ return
+ on = TRUE
+ START_PROCESSING(SSobj, src)
+ if(user)
+ to_chat(user, "You turn [src] on.")
+
+/obj/item/electrostaff/proc/turn_off(obj/item/source, mob/user)
+ wielded = FALSE
+ item_flags &= ~(ITEM_CAN_BLOCK|ITEM_CAN_PARRY)
+ if(user)
+ to_chat(user, "You turn [src] off.")
+ on = FALSE
+ STOP_PROCESSING(SSobj, src)
+
+/obj/item/electrostaff/update_icon_state()
+ if(!wielded)
+ icon_state = item_state = "electrostaff"
+ else
+ icon_state = item_state = (on? "electrostaff_1" : "electrostaff_0")
+ set_light(7, on? 1 : 0, LIGHT_COLOR_CYAN)
+
+/obj/item/electrostaff/examine(mob/living/user)
+ . = ..()
+ if(cell)
+ . += "The cell charge is [round(cell.percent())]%."
+ else
+ . += "There is no cell installed!"
+
+/obj/item/electrostaff/attackby(obj/item/W, mob/user, params)
+ if(istype(W, /obj/item/stock_parts/cell))
+ var/obj/item/stock_parts/cell/C = W
+ if(cell)
+ to_chat(user, "[src] already has a cell!")
+ else
+ if(C.maxcharge < min_hit_cost())
+ to_chat(user, "[src] requires a higher capacity cell.")
+ return
+ if(!user.transferItemToLoc(W, src))
+ return
+ cell = C
+ to_chat(user, "You install a cell in [src].")
+
+ else if(W.tool_behaviour == TOOL_SCREWDRIVER)
+ if(cell)
+ cell.update_icon()
+ cell.forceMove(get_turf(src))
+ cell = null
+ to_chat(user, "You remove the cell from [src].")
+ turn_off(user, TRUE)
+ else
+ return ..()
+
+/obj/item/electrostaff/process()
+ deductcharge(50) //Wasteful!
+
+/obj/item/electrostaff/proc/min_hit_cost()
+ return min(lethal_cost, stun_cost)
+
+/obj/item/electrostaff/proc/deductcharge(amount)
+ var/obj/item/stock_parts/cell/C = get_cell()
+ if(!C)
+ turn_off()
+ return FALSE
+ C.use(min(amount, C.charge))
+ if(QDELETED(src))
+ return FALSE
+ if(C.charge < min_hit_cost())
+ turn_off()
+
+/obj/item/electrostaff/attack(mob/living/target, mob/living/user)
+ if(IS_STAMCRIT(user))//CIT CHANGE - makes it impossible to baton in stamina softcrit
+ to_chat(user, "You're too exhausted to use [src] properly.")//CIT CHANGE - ditto
+ return //CIT CHANGE - ditto
+ if(on && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
+ clowning_around(user) //ouch!
+ return
+ if(iscyborg(target))
+ return ..()
+ var/list/return_list = list()
+ if(target.mob_run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user, null, return_list) & BLOCK_SUCCESS) //No message; run_block() handles that
+ playsound(target, 'sound/weapons/genhit.ogg', 50, 1)
+ return FALSE
+ if(user.a_intent != INTENT_HARM)
+ if(stun_act(target, user, null, return_list))
+ user.do_attack_animation(target)
+ user.adjustStaminaLossBuffered(stun_stam_cost)
+ return
+ else if(!harm_act(target, user, null, return_list))
+ return ..() //if you can't fry them just beat them with it
+ else //we did harm act them
+ user.do_attack_animation(target)
+ user.adjustStaminaLossBuffered(lethal_stam_cost)
+
+/obj/item/electrostaff/proc/stun_act(mob/living/target, mob/living/user, no_charge_and_force = FALSE, list/block_return = list())
+ var/stunforce = block_calculate_resultant_damage(stun_stamdmg, block_return)
+ if(!no_charge_and_force)
+ if(!on)
+ target.visible_message("[user] has bapped [target] with [src]. Luckily it was off.", \
+ "[user] has bapped you with [src]. Luckily it was off")
+ turn_off() //if it wasn't already off
+ return FALSE
+ var/obj/item/stock_parts/cell/C = get_cell()
+ var/chargeleft = C.charge
+ deductcharge(stun_cost)
+ if(QDELETED(src) || QDELETED(C)) //boom
+ return FALSE
+ if(chargeleft < stun_cost)
+ stunforce *= round(chargeleft/stun_cost, 0.1)
+ target.adjustStaminaLoss(stunforce)
+ target.apply_effect(EFFECT_STUTTER, stunforce)
+ SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK)
+ if(user)
+ target.lastattacker = user.real_name
+ target.lastattackerckey = user.ckey
+ target.visible_message("[user] has shocked [target] with [src]!", \
+ "[user] has shocked you with [src]!")
+ log_combat(user, target, "stunned with an electrostaff")
+ playsound(src, 'sound/weapons/staff.ogg', 50, 1, -1)
+ target.apply_status_effect(stun_status_effect, stun_status_duration)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ H.forcesay(GLOB.hit_appends)
+ return TRUE
+
+/obj/item/electrostaff/proc/harm_act(mob/living/target, mob/living/user, no_charge_and_force = FALSE, list/block_return = list())
+ var/lethal_force = block_calculate_resultant_damage(lethal_damage, block_return)
+ if(!no_charge_and_force)
+ if(!on)
+ return FALSE //standard item attack
+ var/obj/item/stock_parts/cell/C = get_cell()
+ var/chargeleft = C.charge
+ deductcharge(lethal_cost)
+ if(QDELETED(src) || QDELETED(C)) //boom
+ return FALSE
+ if(chargeleft < stun_cost)
+ lethal_force *= round(chargeleft/lethal_cost, 0.1)
+ target.adjustFireLoss(lethal_force) //good against ointment spam
+ SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK)
+ if(user)
+ target.lastattacker = user.real_name
+ target.lastattackerckey = user.ckey
+ target.visible_message("[user] has seared [target] with [src]!", \
+ "[user] has seared you with [src]!")
+ log_combat(user, target, "burned with an electrostaff")
+ playsound(src, 'sound/weapons/sear.ogg', 50, 1, -1)
+ return TRUE
+
+/obj/item/electrostaff/proc/clowning_around(mob/living/user)
+ user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \
+ "You accidentally hit yourself with [src]!")
+ SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
+ harm_act(user, user, TRUE)
+ stun_act(user, user, TRUE)
+ deductcharge(lethal_cost)
+
+/obj/item/electrostaff/emp_act(severity)
+ . = ..()
+ if (!(. & EMP_PROTECT_SELF))
+ turn_off()
+ if(!iscyborg(loc))
+ deductcharge(1000 / severity, TRUE, FALSE)
diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm
new file mode 100644
index 0000000000..41c1cbe915
--- /dev/null
+++ b/code/game/objects/items/fireaxe.dm
@@ -0,0 +1,71 @@
+/*
+ * Fireaxe
+ */
+/obj/item/fireaxe // DEM AXES MAN, marker -Agouri
+ icon_state = "fireaxe0"
+ 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
+ slot_flags = ITEM_SLOT_BACK
+ attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
+ 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/fireaxe/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+
+/obj/item/fireaxe/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="fireaxe1")
+
+/// triggered on wield of two handed item
+/obj/item/fireaxe/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/fireaxe/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/fireaxe/update_icon_state()
+ icon_state = "fireaxe0"
+
+/obj/item/fireaxe/suicide_act(mob/user)
+ user.visible_message("[user] axes [user.p_them()]self from head to toe! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (BRUTELOSS)
+
+/obj/item/fireaxe/afterattack(atom/A, mob/living/user, proximity)
+ . = ..()
+ if(!proximity || !wielded || IS_STAMCRIT(user))
+ return
+ if(istype(A, /obj/structure/window)) //destroys windows and grilles in one hit (or more if it has a ton of health like plasmaglass)
+ var/obj/structure/window/W = A
+ W.take_damage(200, BRUTE, "melee", 0)
+ else if(istype(A, /obj/structure/grille))
+ var/obj/structure/grille/G = A
+ G.take_damage(40, BRUTE, "melee", 0)
+
+/*
+ * Bone Axe
+ */
+/obj/item/fireaxe/boneaxe // Blatant imitation of the fireaxe, but made out of bone.
+ icon_state = "bone_axe0"
+ 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."
+
+/obj/item/fireaxe/boneaxe/update_icon_state()
+ icon_state = "bone_axe0"
+
+/obj/item/fireaxe/boneaxe/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=23, icon_wielded="bone_axe1")
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index 381257721e..d6396f9902 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -168,6 +168,7 @@
icon_state = "witchhunterhat"
item_state = "witchhunterhat"
flags_cover = HEADCOVERSEYES
+ flags_inv = HIDEHAIR
/obj/item/storage/box/holy/follower
name = "Followers of the Chaplain Kit"
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index aec3c333b7..20960da7c6 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -369,7 +369,7 @@
return
else
to_chat(user, "You combine the two light swords, making a single supermassive blade! You're cool.")
- new /obj/item/twohanded/dualsaber/hypereutactic(user.drop_location())
+ new /obj/item/dualsaber/hypereutactic(user.drop_location())
qdel(W)
qdel(src)
else
diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm
new file mode 100644
index 0000000000..49d0b64498
--- /dev/null
+++ b/code/game/objects/items/pitchfork.dm
@@ -0,0 +1,101 @@
+/obj/item/pitchfork
+ icon_state = "pitchfork0"
+ 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/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+
+/obj/item/pitchfork/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=7, force_wielded=15, icon_wielded="pitchfork1")
+ AddElement(/datum/element/sword_point)
+
+/// triggered on wield of two handed item
+/obj/item/pitchfork/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/pitchfork/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/pitchfork/update_icon_state()
+ icon_state = "pitchfork0"
+
+/obj/item/pitchfork/demonic
+ name = "demonic pitchfork"
+ desc = "A red pitchfork, it looks like the work of the devil."
+ force = 19
+ throwforce = 24
+
+/obj/item/pitchfork/demonic/Initialize()
+ . = ..()
+ set_light(3,6,LIGHT_COLOR_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/suicide_act(mob/user)
+ user.visible_message("[user] impales [user.p_them()]self in [user.p_their()] abdomen with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ return (BRUTELOSS)
+
+/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.break_wall()
+ W.ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
+ return
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index bf82ee1ea9..d33ecedf0a 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -459,7 +459,7 @@
/obj/item/borg/upgrade/defib/deactivate(mob/living/silicon/robot/R, user = usr)
. = ..()
if (.)
- var/obj/item/twohanded/shockpaddles/cyborg/S = locate() in R.module
+ var/obj/item/shockpaddles/cyborg/S = locate() in R.module
R.module.remove_module(S, TRUE)
/obj/item/borg/upgrade/processor
diff --git a/code/game/objects/items/sharpener.dm b/code/game/objects/items/sharpener.dm
index 014d4cb159..6bf0b27fb4 100644
--- a/code/game/objects/items/sharpener.dm
+++ b/code/game/objects/items/sharpener.dm
@@ -24,24 +24,22 @@
if(istype(I, /obj/item/melee/transforming/energy))
to_chat(user, "You don't think \the [I] will be the thing getting modified if you use it on \the [src]!")
return
- if(istype(I, /obj/item/twohanded))//some twohanded items should still be sharpenable, but handle force differently. therefore i need this stuff
- var/obj/item/twohanded/TH = I
- if(TH.force_wielded >= max)
- to_chat(user, "[TH] is much too powerful to sharpen further!")
- return
- if(TH.wielded)
- to_chat(user, "[TH] must be unwielded before it can be sharpened!")
- return
- if(TH.force_wielded > initial(TH.force_wielded))
- to_chat(user, "[TH] has already been refined before. It cannot be sharpened further!")
- return
- TH.force_wielded = clamp(TH.force_wielded + increment, 0, max)//wieldforce is increased since normal force wont stay
- if(I.force > initial(I.force))
+
+ var/signal_out = SEND_SIGNAL(I, COMSIG_ITEM_SHARPEN_ACT, increment, max)
+ if(signal_out & COMPONENT_BLOCK_SHARPEN_MAXED)
+ to_chat(user, "[I] is much too powerful to sharpen further!")
+ return
+ if(signal_out & COMPONENT_BLOCK_SHARPEN_BLOCKED)
+ to_chat(user, "[I] is not able to be sharpened right now!")
+ return
+ if((signal_out & COMPONENT_BLOCK_SHARPEN_ALREADY) || (I.force > initial(I.force) && !signal_out))
to_chat(user, "[I] has already been refined before. It cannot be sharpened further!")
return
+ if(!(signal_out & COMPONENT_BLOCK_SHARPEN_APPLIED))
+ I.force = clamp(I.force + increment, 0, max)
+
user.visible_message("[user] sharpens [I] with [src]!", "You sharpen [I], making it much more deadly than before.")
I.sharpness = IS_SHARP_ACCURATE
- I.force = clamp(I.force + increment, 0, max)
I.throwforce = clamp(I.throwforce + increment, 0, max)
I.name = "[prefix] [I.name]"
name = "worn out [name]"
diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm
index dc761ee3bf..7a6c159160 100644
--- a/code/game/objects/items/singularityhammer.dm
+++ b/code/game/objects/items/singularityhammer.dm
@@ -1,4 +1,4 @@
-/obj/item/twohanded/singularityhammer
+/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 = "mjollnir0"
@@ -7,35 +7,47 @@
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BACK
force = 5
- force_unwielded = 5
- force_wielded = 20
throwforce = 15
throw_range = 1
w_class = WEIGHT_CLASS_HUGE
- var/charged = 5
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"
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
+ var/charged = 5
+ var/wielded = FALSE // track wielded status on item
-/obj/item/twohanded/singularityhammer/New()
+/obj/item/singularityhammer/New()
..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
START_PROCESSING(SSobj, src)
-/obj/item/twohanded/singularityhammer/Destroy()
+/obj/item/singularityhammer/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="mjollnir1")
+
+/// triggered on wield of two handed item
+/obj/item/singularityhammer/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/singularityhammer/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/singularityhammer/update_icon_state()
+ icon_state = "mjollnir0"
+
+/obj/item/singularityhammer/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
-/obj/item/twohanded/singularityhammer/process()
+/obj/item/singularityhammer/process()
if(charged < 5)
charged++
return
-/obj/item/twohanded/singularityhammer/update_icon_state() //Currently only here to fuck with the on-mob icons.
- icon_state = "mjollnir[wielded]"
- return
-
-/obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder)
+/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
@@ -55,9 +67,8 @@
step_towards(H,pull)
step_towards(H,pull)
step_towards(H,pull)
- return
-/obj/item/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
+/obj/item/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
. = ..()
if(!proximity)
return
@@ -71,7 +82,7 @@
var/turf/target = get_turf(A)
vortex(target,user)
-/obj/item/twohanded/mjollnir
+/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"
@@ -80,14 +91,33 @@
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BACK
force = 5
- force_unwielded = 5
- force_wielded = 25
throwforce = 30
throw_range = 7
w_class = WEIGHT_CLASS_HUGE
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
+ var/wielded = FALSE // track wielded status on item
-/obj/item/twohanded/mjollnir/proc/shock(mob/living/target)
+/obj/item/mjollnir/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+
+/obj/item/mjollnir/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_multiplier=5, icon_wielded="mjollnir1", 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 = "mjollnir0"
+
+/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)
@@ -99,17 +129,12 @@
target.throw_at(throw_target, 200, 4)
return
-/obj/item/twohanded/mjollnir/attack(mob/living/M, mob/user)
+/obj/item/mjollnir/attack(mob/living/M, mob/user)
..()
if(wielded)
- playsound(src.loc, "sparks", 50, 1)
shock(M)
-/obj/item/twohanded/mjollnir/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+/obj/item/mjollnir/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
. = ..()
if(isliving(hit_atom))
shock(hit_atom)
-
-/obj/item/twohanded/mjollnir/update_icon_state() //Currently only here to fuck with the on-mob icons.
- icon_state = "mjollnir[wielded]"
- return
diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm
new file mode 100644
index 0000000000..376362d7c3
--- /dev/null
+++ b/code/game/objects/items/spear.dm
@@ -0,0 +1,185 @@
+//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)
+ var/obj/item/grenade/explosive = null
+ var/war_cry = "AAAAARGH!!!"
+ var/icon_prefix = "spearglass"
+ var/wielded = FALSE // track wielded status on item
+
+/obj/item/spear/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+
+/obj/item/spear/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad.
+ AddComponent(/datum/component/jousting)
+ AddElement(/datum/element/sword_point)
+ 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/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/spear/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/spear/rightclick_attack_self(mob/user)
+ if(explosive)
+ explosive.attack_self(user)
+ return
+ . = ..()
+
+/obj/item/spear/update_icon_state()
+ icon_state = "[icon_prefix]0"
+
+/obj/item/spear/update_overlays()
+ . = ..()
+ if(explosive)
+ . += "spearbomb_overlay"
+
+/obj/item/spear/suicide_act(mob/living/carbon/user)
+ user.visible_message("[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
+ if(explosive) //Citadel Edit removes qdel and explosive.forcemove(AM)
+ user.say("[war_cry]", forced="spear warcry")
+ explosive.prime()
+ user.gib()
+ return BRUTELOSS
+ return BRUTELOSS
+
+/obj/item/spear/examine(mob/user)
+ . = ..()
+ if(explosive)
+ . += "Alt-click to set your war cry."
+ . += "Right-click in combat mode to activate the attached explosive."
+
+/obj/item/spear/afterattack(atom/movable/AM, mob/user, proximity)
+ . = ..()
+ if(!proximity)
+ return
+ if(isopenturf(AM)) //So you can actually melee with it
+ return
+ if(explosive && wielded) //Citadel edit removes qdel and explosive.forcemove(AM)
+ user.say("[war_cry]", forced="spear warcry")
+ explosive.prime()
+
+/obj/item/spear/grenade_prime_react(obj/item/grenade/nade) //Citadel edit, removes throw_impact because memes
+ nade.forceMove(get_turf(src))
+ qdel(src)
+
+/obj/item/spear/AltClick(mob/user)
+ . = ..()
+ if(user.canUseTopic(src, BE_CLOSE))
+ ..()
+ if(!explosive)
+ return
+ 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
+ return TRUE
+
+/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
+ embedding = list(embed_chance = 75, pain_mult = 1.5) //plasmaglass spears are sharper
+ updateEmbedding()
+ icon_prefix = "spearplasma"
+ AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1")
+ qdel(tip)
+ var/obj/item/spear/S = locate() in parts_list
+ if(S)
+ if(S.explosive)
+ S.explosive.forceMove(get_turf(src))
+ S.explosive = null
+ parts_list -= S
+ qdel(S)
+ ..()
+ var/obj/item/grenade/G = locate() in contents
+ if(G)
+ explosive = G
+ name = "explosive lance"
+ embedding = list(embed_chance = 0, pain_mult = 1)//elances should not be embeddable
+ updateEmbedding()
+ desc = "A makeshift spear with \a [G] attached to it."
+ update_icon()
+
+//GREY TIDE
+/obj/item/spear/grey_tide
+ icon_state = "spearglass0"
+ 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."
+ throwforce = 20
+ throw_speed = 4
+ attack_verb = list("gored")
+ var/clonechance = 50
+ var/clonedamage = 12
+ var/clonespeed = 0
+ var/clone_replication_chance = 30
+ var/clone_lifespan = 100
+
+/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(clonechance))
+ var/mob/living/simple_animal/hostile/illusion/M = new(user.loc)
+ M.faction = user.faction.Copy()
+ M.set_varspeed(clonespeed)
+ M.Copy_Parent(user, clone_lifespan, user.health/2.5, clonedamage, clone_replication_chance)
+ 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"
+ lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
+ name = "bone spear"
+ desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology."
+ force = 11
+ w_class = WEIGHT_CLASS_BULKY
+ slot_flags = ITEM_SLOT_BACK
+ reach = 2
+ throwforce = 22
+ embedding = list("embedded_impact_pain_multiplier" = 3)
+ armour_penetration = 15 //Enhanced armor piercing
+ custom_materials = null
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
+ sharpness = IS_SHARP
+ icon_prefix = "bone_spear"
+
+/obj/item/spear/bonespear/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=20, icon_wielded="[icon_prefix]1")
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index f5843a7df2..7692278ba3 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -430,6 +430,7 @@ GLOBAL_LIST_INIT(snow_recipes, list ( \
singular_name = "alien alloy sheet"
sheettype = "abductor"
merge_type = /obj/item/stack/sheet/mineral/abductor
+ walltype = /turf/closed/wall/mineral/abductor
GLOBAL_LIST_INIT(abductor_recipes, list ( \
new/datum/stack_recipe("alien bed", /obj/structure/bed/abductor, 2, one_per_turf = 1, on_floor = 1), \
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 4a396c9210..4fa742df46 100755
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -586,7 +586,7 @@
/obj/item/key/janitor,
/obj/item/clothing/gloves,
/obj/item/melee/flyswatter,
- /obj/item/twohanded/broom,
+ /obj/item/broom,
/obj/item/paint/paint_remover,
/obj/item/assembly/mousetrap,
/obj/item/screwdriver,
diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm
index e3f590aa2a..5d5f0eaa24 100644
--- a/code/game/objects/items/storage/book.dm
+++ b/code/game/objects/items/storage/book.dm
@@ -173,12 +173,12 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
var/unholy2clean = A.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater)
A.reagents.del_reagent(/datum/reagent/fuel/unholywater)
A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean)
- if(istype(A, /obj/item/twohanded/required/cult_bastard) || istype(A, /obj/item/melee/cultblade) && !iscultist(user))
+ if(istype(A, /obj/item/cult_bastard) || istype(A, /obj/item/melee/cultblade) && !iscultist(user))
to_chat(user, "You begin to exorcise [A].")
playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,1)
if(do_after(user, 40, target = A))
playsound(src,'sound/effects/pray_chaplain.ogg',60,1)
- if(istype(A, /obj/item/twohanded/required/cult_bastard))
+ if(istype(A, /obj/item/cult_bastard))
for(var/obj/item/soulstone/SS in A.contents)
SS.usability = TRUE
for(var/mob/living/simple_animal/shade/EX in SS)
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index ffa3d83304..3b66e32d0a 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -117,7 +117,7 @@
new /obj/item/pizzabox/bomb
if("darklord") //20 tc + tk + summon item close enough for now
- new /obj/item/twohanded/dualsaber(src)
+ 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)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index cd630a2c82..aa2c6d1c88 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -272,7 +272,7 @@
return
else
to_chat(user, "You attach the ends of the two plastic swords, making a single double-bladed toy! You're fake-cool.")
- var/obj/item/twohanded/dualsaber/toy/newSaber = new /obj/item/twohanded/dualsaber/toy(user.loc)
+ var/obj/item/dualsaber/toy/newSaber = new /obj/item/dualsaber/toy(user.loc)
if(hacked) // That's right, we'll only check the "original" "sword".
newSaber.hacked = TRUE
qdel(W)
@@ -363,7 +363,7 @@
return
else
to_chat(user, "You combine the two plastic swords, making a single supermassive toy! You're fake-cool.")
- new /obj/item/twohanded/dualsaber/hypereutactic/toy(user.loc)
+ new /obj/item/dualsaber/hypereutactic/toy(user.loc)
qdel(W)
qdel(src)
else
@@ -437,41 +437,46 @@
/*
* Subtype of Double-Bladed Energy Swords
*/
-/obj/item/twohanded/dualsaber/toy
+/obj/item/dualsaber/toy
name = "double-bladed toy sword"
desc = "A cheap, plastic replica of TWO energy swords. Double the fun!"
force = 0
throwforce = 0
throw_speed = 3
throw_range = 5
- force_unwielded = 0
- force_wielded = 0
block_parry_data = null
attack_verb = list("attacked", "struck", "hit")
total_mass_on = TOTAL_MASS_TOY_SWORD
sharpness = IS_BLUNT
-/obj/item/twohanded/dualsaber/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+/obj/item/dualsaber/toy/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg')
+
+/obj/item/dualsaber/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
return BLOCK_NONE
-/obj/item/twohanded/dualsaber/hypereutactic/toy
+/obj/item/dualsaber/hypereutactic/toy
name = "\improper DX Hyper-Euplastic LightSword"
desc = "A supermassive toy envisioned to cleave the very fabric of space and time itself in twain. Realistic visuals and sounds! Ages 8 and up."
force = 0
throwforce = 0
throw_speed = 3
throw_range = 5
- force_unwielded = 0
- force_wielded = 0
+
attack_verb = list("attacked", "struck", "hit")
total_mass_on = TOTAL_MASS_TOY_SWORD
slowdown_wielded = 0
sharpness = IS_BLUNT
-/obj/item/twohanded/dualsaber/hypereutactic/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+/obj/item/dualsaber/toy/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg')
+
+/obj/item/dualsaber/hypereutactic/toy/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
return BLOCK_NONE
-/obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow
+/obj/item/dualsaber/hypereutactic/toy/rainbow
name = "\improper Hyper-Euclidean Reciprocating Trigonometric Zweihander"
desc = "A custom-built toy with fancy rainbow lights built-in."
hacked = TRUE
@@ -823,12 +828,11 @@
var/obj/item/toy/cards/singlecard/H = new/obj/item/toy/cards/singlecard(user.loc)
if(holo)
holo.spawned += H // track them leaving the holodeck
- choice = cards[1]
+ choice = popleft(cards)
H.cardname = choice
H.parentdeck = src
var/O = src
H.apply_card_vars(H,O)
- src.cards -= choice
H.pickup(user)
user.put_in_hands(H)
user.visible_message("[user] draws a card from the deck.", "You draw a card from the deck.")
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
deleted file mode 100644
index 8c9cde5b76..0000000000
--- a/code/game/objects/items/twohanded.dm
+++ /dev/null
@@ -1,1411 +0,0 @@
-/* Two-handed Weapons
- * Contains:
- * Twohanded
- * Fireaxe
- * Double-Bladed Energy Swords
- * Spears
- * CHAINSAWS
- * Bone Axe and Spear
- * And more
- */
-
-/*##################################################################
-##################### TWO HANDED WEAPONS BE HERE~ -Agouri :3 ########
-####################################################################*/
-
-//Rewrote TwoHanded weapons stuff and put it all here. Just copypasta fireaxe to make new ones ~Carn
-//This rewrite means we don't have two variables for EVERY item which are used only by a few weapons.
-//It also tidies stuff up elsewhere.
-
-
-
-
-/*
- * Twohanded
- */
-/obj/item/twohanded
- var/wielded = FALSE
- var/force_unwielded // default to null, the number force will be set to on unwield()
- var/force_wielded // same as above but for wield()
- var/wieldsound = null
- var/unwieldsound = null
- var/slowdown_wielded = 0
- /// Do we need to be wielded to actively block/parry?
- var/requires_wield_to_block_parry = TRUE
- item_flags = SLOWS_WHILE_IN_HAND
-
-/obj/item/twohanded/proc/unwield(mob/living/carbon/user, show_message = TRUE)
- if(!wielded || !user)
- return
- wielded = 0
- if(!isnull(force_unwielded))
- force = force_unwielded
- var/sf = findtext(name, " (Wielded)", -10)//10 == length(" (Wielded)")
- if(sf)
- name = copytext(name, 1, sf)
- else //something wrong
- name = "[initial(name)]"
- update_icon()
- if(user.get_item_by_slot(SLOT_BACK) == src)
- user.update_inv_back()
- else
- user.update_inv_hands()
- if(show_message)
- if(iscyborg(user))
- to_chat(user, "You free up your module.")
- else
- to_chat(user, "You are now carrying [src] with one hand.")
- if(unwieldsound)
- playsound(loc, unwieldsound, 50, 1)
- var/obj/item/twohanded/offhand/O = user.get_inactive_held_item()
- if(O && istype(O))
- O.unwield()
- set_slowdown(slowdown - slowdown_wielded)
-
-/obj/item/twohanded/proc/wield(mob/living/carbon/user)
- if(wielded)
- return
- if(ismonkey(user))
- to_chat(user, "It's too heavy for you to wield fully.")
- return
- if(user.get_inactive_held_item())
- to_chat(user, "You need your other hand to be empty!")
- return
- if(user.get_num_arms() < 2)
- to_chat(user, "You don't have enough intact hands.")
- return
- wielded = 1
- if(!isnull(force_wielded))
- force = force_wielded
- name = "[name] (Wielded)"
- update_icon()
- if(iscyborg(user))
- to_chat(user, "You dedicate your module to [src].")
- else
- to_chat(user, "You grab [src] with both hands.")
- if (wieldsound)
- playsound(loc, wieldsound, 50, 1)
- var/obj/item/twohanded/offhand/O = new(user) ////Let's reserve his other hand~
- O.name = "[name] - offhand"
- O.desc = "Your second grip on [src]."
- O.wielded = TRUE
- user.put_in_inactive_hand(O)
- set_slowdown(slowdown + slowdown_wielded)
-
-/obj/item/twohanded/can_active_block()
- return ..() && (!requires_wield_to_block_parry || wielded)
-
-/obj/item/twohanded/can_active_parry()
- return ..() && (!requires_wield_to_block_parry || wielded)
-
-/obj/item/twohanded/dropped(mob/user)
- . = ..()
- //handles unwielding a twohanded weapon when dropped as well as clearing up the offhand
- if(!wielded)
- return
- unwield(user)
-
-/obj/item/twohanded/attack_self(mob/user)
- . = ..()
- if(wielded) //Trying to unwield it
- unwield(user)
- else //Trying to wield it
- wield(user)
-
-/obj/item/twohanded/equip_to_best_slot(mob/M)
- if(..())
- if(istype(src, /obj/item/twohanded/required))
- return // unwield forces twohanded-required items to be dropped.
- unwield(M)
- return
-
-/obj/item/twohanded/equipped(mob/user, slot)
- ..()
- if(!user.is_holding(src) && wielded && !istype(src, /obj/item/twohanded/required))
- unwield(user)
-
-///////////OFFHAND///////////////
-/obj/item/twohanded/offhand
- name = "offhand"
- icon_state = "offhand"
- w_class = WEIGHT_CLASS_HUGE
- item_flags = ABSTRACT
- resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
-
-/obj/item/twohanded/offhand/Destroy()
- wielded = FALSE
- return ..()
-
-/obj/item/twohanded/offhand/dropped(mob/living/user, show_message = TRUE) //Only utilized by dismemberment since you can't normally switch to the offhand to drop it.
- . = ..()
- var/obj/I = user.get_active_held_item()
- if(I && istype(I, /obj/item/twohanded))
- var/obj/item/twohanded/thw = I
- thw.unwield(user, show_message)
- if(istype(thw, /obj/item/twohanded/required))
- user.dropItemToGround(thw)
- if(!QDELETED(src))
- qdel(src)
-
-/obj/item/twohanded/offhand/unwield()
- if(wielded)//Only delete if we're wielded
- wielded = FALSE
- qdel(src)
-
-/obj/item/twohanded/offhand/wield()
- if(wielded)//Only delete if we're wielded
- wielded = FALSE
- qdel(src)
-
-/obj/item/twohanded/offhand/attack_self(mob/living/carbon/user) //You should never be able to do this in standard use of two handed items. This is a backup for lingering offhands.
- var/obj/item/twohanded/O = user.get_inactive_held_item()
- if (istype(O) && !istype(O, /obj/item/twohanded/offhand/)) //If you have a proper item in your other hand that the offhand is for, do nothing. This should never happen.
- return
- if (QDELETED(src))
- return
- qdel(src) //If it's another offhand, or literally anything else, qdel. If I knew how to add logging messages I'd put one here.
-
-///////////Two hand required objects///////////////
-//This is for objects that require two hands to even pick up
-/obj/item/twohanded/required
- w_class = WEIGHT_CLASS_HUGE
-
-/obj/item/twohanded/required/attack_self()
- return
-
-/obj/item/twohanded/required/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0)
- if(wielded && !slot_flags)
- if(!disable_warning)
- to_chat(M, "[src] is too cumbersome to carry with anything but your hands!")
- return 0
- return ..()
-
-/obj/item/twohanded/required/attack_hand(mob/user)//Can't even pick it up without both hands empty
- var/obj/item/twohanded/required/H = user.get_inactive_held_item()
- if(get_dist(src,user) > 1)
- return
- if(H != null)
- to_chat(user, "[src] is too cumbersome to carry in one hand!")
- return
- if(loc != user)
- wield(user)
- . = ..()
-
-/obj/item/twohanded/required/equipped(mob/user, slot)
- ..()
- var/slotbit = slotdefine2slotbit(slot)
- if(slot_flags & slotbit)
- var/datum/O = user.is_holding_item_of_type(/obj/item/twohanded/offhand)
- if(!O || QDELETED(O))
- return
- qdel(O)
- return
- if(slot == SLOT_HANDS)
- wield(user)
- else
- unwield(user)
-
-/obj/item/twohanded/required/dropped(mob/living/user, show_message = TRUE)
- unwield(user, show_message)
- ..()
-
-/obj/item/twohanded/required/wield(mob/living/carbon/user)
- ..()
- if(!wielded)
- user.dropItemToGround(src)
-
-/obj/item/twohanded/required/unwield(mob/living/carbon/user, show_message = TRUE)
- if(!wielded)
- return
- if(show_message)
- to_chat(user, "You drop [src].")
- ..(user, FALSE)
-
-/*
- * Fireaxe
- */
-/obj/item/twohanded/fireaxe // DEM AXES MAN, marker -Agouri
- icon_state = "fireaxe0"
- 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
- slot_flags = ITEM_SLOT_BACK
- force_unwielded = 5
- force_wielded = 24
- attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
- 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
-
-/obj/item/twohanded/fireaxe/Initialize()
- . = ..()
- AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools
-
-/obj/item/twohanded/fireaxe/update_icon_state() //Currently only here to fuck with the on-mob icons.
- icon_state = "fireaxe[wielded]"
- return
-
-/obj/item/twohanded/fireaxe/suicide_act(mob/user)
- user.visible_message("[user] axes [user.p_them()]self from head to toe! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
-
-/obj/item/twohanded/fireaxe/afterattack(atom/A, mob/living/user, proximity)
- . = ..()
- if(!proximity || IS_STAMCRIT(user)) //don't make stamcrit message they'll already have gotten one from the primary attack.
- return
- if(wielded) //destroys windows and grilles in one hit (or more if it has a ton of health like plasmaglass)
- if(istype(A, /obj/structure/window))
- var/obj/structure/window/W = A
- W.take_damage(200, BRUTE, "melee", 0)
- else if(istype(A, /obj/structure/grille))
- var/obj/structure/grille/G = A
- G.take_damage(40, BRUTE, "melee", 0)
-
-
-/*
- * Double-Bladed Energy Swords - Cheridan
- */
-/obj/item/twohanded/dualsaber
- icon_state = "dualsaber0"
- lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
- name = "double-bladed energy sword"
- desc = "Handle with care."
- force = 3
- throwforce = 5
- throw_speed = 3
- throw_range = 5
- w_class = WEIGHT_CLASS_SMALL
- var/w_class_on = WEIGHT_CLASS_BULKY
- item_flags = ITEM_CAN_PARRY | SLOWS_WHILE_IN_HAND | ITEM_CAN_BLOCK
- block_parry_data = /datum/block_parry_data/dual_esword
- force_unwielded = 3
- force_wielded = 34
- wieldsound = 'sound/weapons/saberon.ogg'
- unwieldsound = 'sound/weapons/saberoff.ogg'
- hitsound = "swing_hit"
- var/hitsound_on = 'sound/weapons/blade1.ogg'
- armour_penetration = 35
- var/saber_color = "green"
- light_color = "#00ff00"//green
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- 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
- var/hacked = FALSE
- /// Can this reflect all energy projectiles?
- var/can_reflect = TRUE
- var/brightness_on = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD
- var/list/possible_colors = list("red", "blue", "green", "purple")
- var/list/rainbow_colors = list(LIGHT_COLOR_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)
- var/spinnable = TRUE
- total_mass = 0.4 //Survival flashlights typically weigh around 5 ounces.
- var/total_mass_on = 3.4
-
-/datum/block_parry_data/dual_esword
- block_damage_absorption = 2
- block_damage_multiplier = 0.15
- block_damage_multiplier_override = list(
- ATTACK_TYPE_MELEE = 0.25
- )
- block_start_delay = 0 // instantaneous block
- block_stamina_cost_per_second = 2.5
- block_stamina_efficiency = 3
- block_lock_sprinting = TRUE
- // no attacking while blocking
- block_lock_attacking = TRUE
- block_projectile_mitigation = 75
-
- parry_time_windup = 0
- parry_time_active = 8
- parry_time_spindown = 0
- // we want to signal to players the most dangerous phase, the time when automatic counterattack is a thing.
- parry_time_windup_visual_override = 1
- parry_time_active_visual_override = 3
- parry_time_spindown_visual_override = 4
- parry_flags = PARRY_DEFAULT_HANDLE_FEEDBACK // esword users can attack while parrying.
- parry_time_perfect = 2 // first ds isn't perfect
- parry_time_perfect_leeway = 1
- parry_imperfect_falloff_percent = 10
- parry_efficiency_to_counterattack = 100
- parry_efficiency_considered_successful = 25 // VERY generous
- parry_efficiency_perfect = 90
- parry_failed_stagger_duration = 3 SECONDS
- parry_failed_clickcd_duration = CLICK_CD_MELEE
-
- // more efficient vs projectiles
- block_stamina_efficiency_override = list(
- TEXT_ATTACK_TYPE_PROJECTILE = 4
- )
-
-/obj/item/twohanded/dualsaber/suicide_act(mob/living/carbon/user)
- if(wielded)
- user.visible_message("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!")
-
- var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)//stole from chainsaw code
- var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN)
- B.organ_flags &= ~ORGAN_VITAL //this cant possibly be a good idea
- var/randdir
- for(var/i in 1 to 24)//like a headless chicken!
- if(user.is_holding(src))
- randdir = pick(GLOB.alldirs)
- user.Move(get_step(user, randdir),randdir)
- user.emote("spin")
- if (i == 3 && myhead)
- myhead.drop_limb()
- sleep(3)
- else
- user.visible_message("[user] panics and starts choking to death!")
- return OXYLOSS
-
-
- else
- user.visible_message("[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!")
- return BRUTELOSS
-
-/obj/item/twohanded/dualsaber/Initialize()
- . = ..()
- if(LAZYLEN(possible_colors))
- saber_color = pick(possible_colors)
- switch(saber_color)
- if("red")
- light_color = LIGHT_COLOR_RED
- if("green")
- light_color = LIGHT_COLOR_GREEN
- if("blue")
- light_color = LIGHT_COLOR_LIGHT_CYAN
- if("purple")
- light_color = LIGHT_COLOR_LAVENDER
-
-/obj/item/twohanded/dualsaber/Destroy()
- STOP_PROCESSING(SSobj, src)
- . = ..()
-
-/obj/item/twohanded/dualsaber/update_icon_state()
- if(wielded)
- icon_state = "dualsaber[saber_color][wielded]"
- else
- icon_state = "dualsaber0"
- clean_blood()
-
-/obj/item/twohanded/dualsaber/attack(mob/target, mob/living/carbon/human/user)
- if(user.has_dna())
- if(user.dna.check_mutation(HULK))
- to_chat(user, "You grip the blade too hard and accidentally close it!")
- unwield()
- return
- ..()
- if(HAS_TRAIT(user, TRAIT_CLUMSY) && (wielded) && prob(40))
- impale(user)
- return
- if(spinnable && (wielded) && prob(50))
- INVOKE_ASYNC(src, .proc/jedi_spin, user)
-
-/obj/item/twohanded/dualsaber/proc/jedi_spin(mob/living/user)
- for(var/i in list(NORTH,SOUTH,EAST,WEST,EAST,SOUTH,NORTH,SOUTH,EAST,WEST,EAST,SOUTH))
- user.setDir(i)
- if(i == WEST)
- user.emote("flip")
- sleep(1)
-
-/obj/item/twohanded/dualsaber/proc/impale(mob/living/user)
- to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on [src].")
- if (force_wielded)
- user.take_bodypart_damage(20,25)
- else
- user.adjustStaminaLoss(25)
-
-/obj/item/twohanded/dualsaber/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- if(!wielded)
- return NONE
- if(can_reflect && is_energy_reflectable_projectile(object) && (attack_type & ATTACK_TYPE_PROJECTILE))
- block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_RETURN_TO_SENDER //no you
- return BLOCK_SHOULD_REDIRECT | BLOCK_SUCCESS | BLOCK_REDIRECTED
- return ..()
-
-/obj/item/twohanded/dualsaber/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) //In case thats just so happens that it is still activated on the groud, prevents hulk from picking it up
- if(wielded)
- to_chat(user, "You can't pick up such dangerous item with your meaty hands without losing fingers, better not to!")
- return 1
-
-/obj/item/twohanded/dualsaber/wield(mob/living/carbon/M) //Specific wield () hulk checks due to reflection chance for balance issues and switches hitsounds.
- if(M.has_dna())
- if(M.dna.check_mutation(HULK))
- to_chat(M, "You lack the grace to wield this!")
- return
- ..()
- if(wielded)
- sharpness = IS_SHARP
- w_class = w_class_on
- total_mass = total_mass_on
- hitsound = 'sound/weapons/blade1.ogg'
- START_PROCESSING(SSobj, src)
- set_light(brightness_on)
- AddElement(/datum/element/sword_point)
-
-/obj/item/twohanded/dualsaber/unwield() //Specific unwield () to switch hitsounds.
- sharpness = initial(sharpness)
- w_class = initial(w_class)
- total_mass = initial(total_mass)
- ..()
- hitsound = "swing_hit"
- STOP_PROCESSING(SSobj, src)
- set_light(0)
- RemoveElement(/datum/element/sword_point)
-
-/obj/item/twohanded/dualsaber/process()
- if(wielded)
- if(hacked)
- rainbow_process()
- open_flame()
- else
- STOP_PROCESSING(SSobj, src)
-
-/obj/item/twohanded/dualsaber/proc/rainbow_process()
- light_color = pick(rainbow_colors)
-
-/obj/item/twohanded/dualsaber/ignition_effect(atom/A, mob/user)
- // same as /obj/item/melee/transforming/energy, mostly
- if(!wielded)
- return ""
- var/in_mouth = ""
- if(iscarbon(user))
- var/mob/living/carbon/C = user
- if(C.wear_mask)
- in_mouth = ", barely missing [user.p_their()] nose"
- . = "[user] swings [user.p_their()] [name][in_mouth]. [user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [A.name] in the process."
- playsound(loc, hitsound, get_clamped_volume(), 1, -1)
- add_fingerprint(user)
- // Light your candles while spinning around the room
- if(spinnable)
- INVOKE_ASYNC(src, .proc/jedi_spin, user)
-
-/obj/item/twohanded/dualsaber/green
- possible_colors = list("green")
-
-/obj/item/twohanded/dualsaber/red
- possible_colors = list("red")
-
-/obj/item/twohanded/dualsaber/blue
- possible_colors = list("blue")
-
-/obj/item/twohanded/dualsaber/purple
- possible_colors = list("purple")
-
-/obj/item/twohanded/dualsaber/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item/multitool))
- if(!hacked)
- hacked = TRUE
- to_chat(user, "2XRNBW_ENGAGE")
- saber_color = "rainbow"
- update_icon()
- else
- to_chat(user, "It's starting to look like a triple rainbow - no, nevermind.")
- else
- return ..()
-
-/////////////////////////////////////////////////////
-// HYPEREUTACTIC Blades /////////////////////////
-/////////////////////////////////////////////////////
-
-/obj/item/twohanded/dualsaber/hypereutactic
- icon = 'icons/obj/1x2.dmi'
- icon_state = "hypereutactic"
- lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
- item_state = "hypereutactic"
- inhand_x_dimension = 64
- inhand_y_dimension = 64
- name = "hypereutactic blade"
- desc = "A supermassive weapon envisioned to cleave the very fabric of space and time itself in twain, the hypereutactic blade dynamically flash-forges a hypereutactic crystaline nanostructure capable of passing through most known forms of matter like a hot knife through butter."
- force = 7
- force_unwielded = 7
- force_wielded = 40
- wieldsound = 'sound/weapons/nebon.ogg'
- unwieldsound = 'sound/weapons/neboff.ogg'
- hitsound_on = 'sound/weapons/nebhit.ogg'
- slowdown_wielded = 1
- armour_penetration = 60
- light_color = "#37FFF7"
- rainbow_colors = list("#FF0000", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF","#FF00FF", "#3399ff", "#ff9900", "#fb008b", "#9800ff", "#00ffa3", "#ccff00")
- attack_verb = list("attacked", "slashed", "stabbed", "sliced", "destroyed", "ripped", "devastated", "shredded")
- spinnable = FALSE
- total_mass_on = 4
-
-/obj/item/twohanded/dualsaber/hypereutactic/ComponentInitialize()
- . = ..()
- AddElement(/datum/element/update_icon_updates_onmob)
-
-/obj/item/twohanded/dualsaber/hypereutactic/update_icon_state()
- return
-
-/obj/item/twohanded/dualsaber/hypereutactic/update_overlays()
- . = ..()
- var/mutable_appearance/blade_overlay = mutable_appearance(icon, "hypereutactic_blade")
- var/mutable_appearance/gem_overlay = mutable_appearance(icon, "hypereutactic_gem")
-
- if(light_color)
- blade_overlay.color = light_color
- gem_overlay.color = light_color
-
- . += gem_overlay
-
- if(wielded)
- . += blade_overlay
-
- clean_blood()
-
-/obj/item/twohanded/dualsaber/hypereutactic/AltClick(mob/living/user)
- . = ..()
- if(!user.canUseTopic(src, BE_CLOSE, FALSE) || hacked)
- return
- if(user.incapacitated() || !istype(user))
- to_chat(user, "You can't do that right now!")
- return
- if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
- var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null
- if(!energy_color_input || !user.canUseTopic(src, BE_CLOSE, FALSE) || hacked)
- return
- light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
- update_icon()
- update_light()
- return TRUE
-
-/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
- . = ..()
- if(isinhands)
- var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem")
- gem_inhand.color = light_color
- . += gem_inhand
- if(wielded)
- var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "hypereutactic_blade")
- blade_inhand.color = light_color
- . += blade_inhand
-
-/obj/item/twohanded/dualsaber/hypereutactic/examine(mob/user)
- . = ..()
- if(!hacked)
- . += "Alt-click to recolor it."
-
-/obj/item/twohanded/dualsaber/hypereutactic/rainbow_process()
- . = ..()
- update_icon()
- update_light()
-
-/obj/item/twohanded/dualsaber/hypereutactic/chaplain
- name = "divine lightblade"
- desc = "A giant blade of bright and holy light, said to cut down the wicked with ease."
- force = 5
- force_unwielded = 5
- force_wielded = 20
- block_chance = 50
- armour_penetration = 0
- var/chaplain_spawnable = TRUE
- can_reflect = FALSE
- obj_flags = UNIQUE_RENAME
-
-/obj/item/twohanded/dualsaber/hypereutactic/chaplain/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)
-
-//spears
-/obj/item/twohanded/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
- force_unwielded = 10
- force_wielded = 18
- 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)
- var/obj/item/grenade/explosive = null
- var/war_cry = "AAAAARGH!!!"
- var/icon_prefix = "spearglass"
-
-/obj/item/twohanded/spear/Initialize()
- . = ..()
- AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad.
- AddComponent(/datum/component/jousting)
- AddElement(/datum/element/sword_point)
-
-/obj/item/twohanded/spear/attack_self(mob/user)
- if(explosive)
- explosive.attack_self(user)
- return
- . = ..()
-
-//Citadel additions : attack_self and rightclick_attack_self
-
-/obj/item/twohanded/rightclick_attack_self(mob/user)
- if(wielded) //Trying to unwield it
- unwield(user)
- else //Trying to wield it
- wield(user)
- return TRUE
-
-/obj/item/twohanded/spear/suicide_act(mob/living/carbon/user)
- user.visible_message("[user] begins to sword-swallow \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- if(explosive) //Citadel Edit removes qdel and explosive.forcemove(AM)
- user.say("[war_cry]", forced="spear warcry")
- explosive.prime()
- user.gib()
- return BRUTELOSS
- return BRUTELOSS
-
-/obj/item/twohanded/spear/examine(mob/user)
- . = ..()
- if(explosive)
- . += "Use in your hands to activate the attached explosive. Alt-click to set your war cry. Right-click in combat mode to wield"
-
-/obj/item/twohanded/spear/update_icon_state()
- if(explosive)
- icon_state = "spearbomb[wielded]"
- else
- icon_state = "[icon_prefix][wielded]"
-
-/obj/item/twohanded/spear/afterattack(atom/movable/AM, mob/user, proximity)
- . = ..()
- if(!proximity)
- return
- if(isopenturf(AM)) //So you can actually melee with it
- return
- if(explosive && wielded) //Citadel edit removes qdel and explosive.forcemove(AM)
- user.say("[war_cry]", forced="spear warcry")
- explosive.prime()
-
-/obj/item/twohanded/spear/grenade_prime_react(obj/item/grenade/nade) //Citadel edit, removes throw_impact because memes
- nade.forceMove(get_turf(src))
- qdel(src)
-
-/obj/item/twohanded/spear/AltClick(mob/user)
- . = ..()
- if(user.canUseTopic(src, BE_CLOSE))
- ..()
- if(!explosive)
- return
- 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
- return TRUE
-
-/obj/item/twohanded/spear/CheckParts(list/parts_list)
- var/obj/item/shard/tip = locate() in parts_list
- if (istype(tip, /obj/item/shard/plasma))
- force_wielded = 19
- force_unwielded = 11
- throwforce = 21
- embedding = list(embed_chance = 75, pain_mult = 1.5) //plasmaglass spears are sharper
- icon_prefix = "spearplasma"
- qdel(tip)
- var/obj/item/twohanded/spear/S = locate() in parts_list
- if(S)
- if(S.explosive)
- S.explosive.forceMove(get_turf(src))
- S.explosive = null
- parts_list -= S
- qdel(S)
- ..()
- var/obj/item/grenade/G = locate() in contents
- if(G)
- explosive = G
- name = "explosive lance"
- embedding = list(embed_chance = 0, pain_mult = 1)//elances should not be embeddable
- desc = "A makeshift spear with [G] attached to it."
- update_icon()
-
-// CHAINSAW
-/obj/item/twohanded/required/chainsaw
- name = "chainsaw"
- desc = "A versatile power tool. Useful for limbing trees and delimbing humans."
- icon_state = "chainsaw_off"
- lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi'
- flags_1 = CONDUCT_1
- force = 13
- var/force_on = 24
- w_class = WEIGHT_CLASS_HUGE
- throwforce = 13
- throw_speed = 2
- throw_range = 4
- custom_materials = list(/datum/material/iron=13000)
- attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
- hitsound = "swing_hit"
- sharpness = IS_SHARP
- actions_types = list(/datum/action/item_action/startchainsaw)
- var/on = FALSE
- tool_behaviour = TOOL_SAW
- toolspeed = 0.5
-
-/obj/item/twohanded/required/chainsaw/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/butchering, 30, 100, 0, 'sound/weapons/chainsawhit.ogg', TRUE)
- AddElement(/datum/element/update_icon_updates_onmob)
-
-/obj/item/twohanded/required/chainsaw/suicide_act(mob/living/carbon/user)
- if(on)
- user.visible_message("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- playsound(src, 'sound/weapons/chainsawhit.ogg', 100, 1)
- var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)
- if(myhead)
- myhead.dismember()
- else
- user.visible_message("[user] smashes [src] into [user.p_their()] neck, destroying [user.p_their()] esophagus! It looks like [user.p_theyre()] trying to commit suicide!")
- playsound(src, 'sound/weapons/genhit1.ogg', 100, 1)
- return(BRUTELOSS)
-
-/obj/item/twohanded/required/chainsaw/attack_self(mob/user)
- on = !on
- to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]")
- force = on ? force_on : initial(force)
- throwforce = on ? force_on : force
- update_icon()
- var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering)
- butchering.butchering_enabled = on
-
- if(on)
- hitsound = 'sound/weapons/chainsawhit.ogg'
- else
- hitsound = "swing_hit"
-
-/obj/item/twohanded/required/chainsaw/update_icon_state()
- icon_state = "chainsaw_[on ? "on" : "off"]"
-
-/obj/item/twohanded/required/chainsaw/get_dismemberment_chance()
- if(wielded)
- . = ..()
-
-/obj/item/twohanded/required/chainsaw/doomslayer
- name = "THE GREAT COMMUNICATOR"
- desc = "VRRRRRRR!!!"
- armour_penetration = 100
- force_on = 30
-
-/obj/item/twohanded/required/chainsaw/doomslayer/check_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- block_return[BLOCK_RETURN_REFLECT_PROJECTILE_CHANCE] = 100
- return ..()
-
-/obj/item/twohanded/required/chainsaw/doomslayer/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- if(attack_type & ATTACK_TYPE_PROJECTILE)
- owner.visible_message("Ranged attacks just make [owner] angrier!")
- playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, 1)
- return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
- return ..()
-
-//GREY TIDE
-/obj/item/twohanded/spear/grey_tide
- icon_state = "spearglass0"
- 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."
- force_unwielded = 15
- force_wielded = 25
- throwforce = 20
- throw_speed = 4
- attack_verb = list("gored")
- var/clonechance = 50
- var/clonedamage = 12
- var/clonespeed = 0
- var/clone_replication_chance = 30
- var/clone_lifespan = 100
-
-/obj/item/twohanded/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(clonechance))
- var/mob/living/simple_animal/hostile/illusion/M = new(user.loc)
- M.faction = user.faction.Copy()
- M.set_varspeed(clonespeed)
- M.Copy_Parent(user, clone_lifespan, user.health/2.5, clonedamage, clone_replication_chance)
- M.GiveTarget(L)
-
-/obj/item/twohanded/pitchfork
- icon_state = "pitchfork0"
- 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
- force_unwielded = 7
- force_wielded = 15
- 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
-
-/obj/item/twohanded/pitchfork/Initialize(mapload)
- AddElement(/datum/element/sword_point)
-
-/obj/item/twohanded/pitchfork/demonic
- name = "demonic pitchfork"
- desc = "A red pitchfork, it looks like the work of the devil."
- force = 19
- throwforce = 24
- force_unwielded = 19
- force_wielded = 25
-
-/obj/item/twohanded/pitchfork/demonic/Initialize()
- . = ..()
- set_light(3,6,LIGHT_COLOR_RED)
-
-/obj/item/twohanded/pitchfork/demonic/greater
- force = 24
- throwforce = 50
- force_unwielded = 24
- force_wielded = 34
-
-/obj/item/twohanded/pitchfork/demonic/ascended
- force = 100
- throwforce = 100
- force_unwielded = 100
- force_wielded = 500000 // Kills you DEAD.
-
-/obj/item/twohanded/pitchfork/update_icon_state()
- icon_state = "pitchfork[wielded]"
-
-/obj/item/twohanded/pitchfork/suicide_act(mob/user)
- user.visible_message("[user] impales [user.p_them()]self in [user.p_their()] abdomen with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
- return (BRUTELOSS)
-
-/obj/item/twohanded/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/twohanded/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/twohanded/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, 1)
- W.break_wall()
- W.ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
- return
-
-//HF blade
-
-/obj/item/twohanded/vibro_weapon
- icon_state = "hfrequency0"
- 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."
- force_unwielded = 20
- force_wielded = 40
- armour_penetration = 100
- block_chance = 40
- 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'
-
-/obj/item/twohanded/vibro_weapon/Initialize()
- . = ..()
- AddComponent(/datum/component/butchering, 20, 105)
- AddElement(/datum/element/sword_point)
-
-/obj/item/twohanded/vibro_weapon/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- if(wielded)
- final_block_chance *= 2
- if(wielded || !(attack_type & ATTACK_TYPE_PROJECTILE))
- if(prob(final_block_chance))
- if(attack_type & ATTACK_TYPE_PROJECTILE)
- 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, 1)
- block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_DEFLECT
- return BLOCK_SUCCESS | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT | BLOCK_PHYSICAL_EXTERNAL
- else
- owner.visible_message("[owner] parries [attack_text] with [src]!")
- return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
- return NONE
-
-/obj/item/twohanded/vibro_weapon/update_icon_state()
- icon_state = "hfrequency[wielded]"
-
-/*
- * Bone Axe
- */
-/obj/item/twohanded/fireaxe/boneaxe // Blatant imitation of the fireaxe, but made out of bone.
- icon_state = "bone_axe0"
- 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."
- force_wielded = 23
-
-/obj/item/twohanded/fireaxe/boneaxe/update_icon_state()
- icon_state = "bone_axe[wielded]"
-
-/*
- * Bone Spear
- */
-/obj/item/twohanded/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification.
- icon_state = "bone_spear0"
- lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
- name = "bone spear"
- desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology."
- force = 11
- w_class = WEIGHT_CLASS_BULKY
- slot_flags = ITEM_SLOT_BACK
- force_unwielded = 11
- force_wielded = 20 //I have no idea how to balance
- reach = 2
- throwforce = 22
- throw_speed = 4
- embedding = list("embedded_impact_pain_multiplier" = 3)
- armour_penetration = 15 //Enhanced armor piercing
- hitsound = 'sound/weapons/bladeslice.ogg'
- attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
- sharpness = IS_SHARP
-
-/obj/item/twohanded/bonespear/update_icon_state()
- icon_state = "bone_spear[wielded]"
-
-/obj/item/twohanded/binoculars
- name = "binoculars"
- desc = "Used for long-distance surveillance."
- item_state = "binoculars"
- icon_state = "binoculars"
- lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/items_righthand.dmi'
- slot_flags = ITEM_SLOT_BELT
- w_class = WEIGHT_CLASS_SMALL
- var/mob/listeningTo
- var/zoom_out_amt = 6
- var/zoom_amt = 10
-
-/obj/item/twohanded/binoculars/Destroy()
- listeningTo = null
- return ..()
-
-/obj/item/twohanded/binoculars/wield(mob/user)
- . = ..()
- if(!wielded)
- return
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/unwield)
- listeningTo = user
- user.visible_message("[user] holds [src] up to [user.p_their()] eyes.","You hold [src] up to your eyes.")
- item_state = "binoculars_wielded"
- user.regenerate_icons()
- if(!user?.client)
- return
- var/client/C = user.client
- var/_x = 0
- var/_y = 0
- switch(user.dir)
- if(NORTH)
- _y = zoom_amt
- if(EAST)
- _x = zoom_amt
- if(SOUTH)
- _y = -zoom_amt
- if(WEST)
- _x = -zoom_amt
- C.change_view(world.view + zoom_out_amt)
- C.pixel_x = world.icon_size*_x
- C.pixel_y = world.icon_size*_y
-
-/obj/item/twohanded/binoculars/unwield(mob/user)
- . = ..()
- UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
- listeningTo = null
- user.visible_message("[user] lowers [src].","You lower [src].")
- item_state = "binoculars"
- user.regenerate_icons()
- if(user && user.client)
- user.regenerate_icons()
- var/client/C = user.client
- C.change_view(CONFIG_GET(string/default_view))
- user.client.pixel_x = 0
- user.client.pixel_y = 0
-
-/obj/item/twohanded/electrostaff
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "electrostaff"
- item_state = "electrostaff"
- lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
- name = "riot suppression electrostaff"
- desc = "A large quarterstaff, with massive silver electrodes mounted at the end."
- w_class = WEIGHT_CLASS_HUGE
- slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_OCLOTHING
- force_unwielded = 5
- force_wielded = 10
- throwforce = 15 //if you are a madman and finish someone off with this, power to you.
- throw_speed = 1
- item_flags = NO_MAT_REDEMPTION | SLOWS_WHILE_IN_HAND | ITEM_CAN_BLOCK | ITEM_CAN_PARRY
- block_parry_data = /datum/block_parry_data/electrostaff
- attack_verb = list("struck", "beaten", "thwacked", "pulped")
- total_mass = 5 //yeah this is a heavy thing, beating people with it while it's off is not going to do you any favors. (to curb stun-kill rampaging without it being on)
- var/obj/item/stock_parts/cell/cell = /obj/item/stock_parts/cell/high
- var/on = FALSE
- var/lethal_cost = 400 //10000/400*20 = 500. decent enough?
- var/lethal_damage = 20
- var/lethal_stam_cost = 4
- var/stun_cost = 333 //10000/333*25 = 750. stunbatons are at time of writing 10000/1000*49 = 490.
- var/stun_status_effect = STATUS_EFFECT_ELECTROSTAFF //a small slowdown effect
- var/stun_stamdmg = 40
- var/stun_status_duration = 25
- var/stun_stam_cost = 3.5
-
-// haha security desword time /s
-/datum/block_parry_data/electrostaff
- block_damage_absorption = 0
- block_damage_multiplier = 1
- can_block_attack_types = ~ATTACK_TYPE_PROJECTILE // only able to parry non projectiles
- block_damage_multiplier_override = list(
- TEXT_ATTACK_TYPE_MELEE = 0.5, // only useful on melee and unarmed
- TEXT_ATTACK_TYPE_UNARMED = 0.3
- )
- block_start_delay = 0.5 // near instantaneous block
- block_stamina_cost_per_second = 3
- block_stamina_efficiency = 2 // haha this is a horrible idea
- // more slowdown that deswords because security
- block_slowdown = 2
- // no attacking while blocking
- block_lock_attacking = TRUE
-
- parry_time_windup = 1
- parry_time_active = 5
- parry_time_spindown = 0
- parry_time_spindown_visual_override = 1
- parry_flags = PARRY_DEFAULT_HANDLE_FEEDBACK | PARRY_LOCK_ATTACKING // no attacking while parrying
- parry_time_perfect = 0
- parry_time_perfect_leeway = 0.5
- parry_efficiency_perfect = 100
- parry_imperfect_falloff_percent = 1
- parry_imperfect_falloff_percent_override = list(
- TEXT_ATTACK_TYPE_PROJECTILE = 45 // really crappy vs projectiles
- )
- parry_time_perfect_leeway_override = list(
- TEXT_ATTACK_TYPE_PROJECTILE = 1 // extremely harsh window for projectiles
- )
- // not extremely punishing to fail, but no spamming the parry.
- parry_cooldown = 2.5 SECONDS
- parry_failed_stagger_duration = 1.5 SECONDS
- parry_failed_clickcd_duration = 1 SECONDS
-
-/obj/item/twohanded/electrostaff/Initialize(mapload)
- . = ..()
- if(ispath(cell))
- cell = new cell
-
-/obj/item/twohanded/electrostaff/Destroy()
- STOP_PROCESSING(SSobj, src)
- return ..()
-
-/obj/item/twohanded/electrostaff/get_cell()
- . = cell
- if(iscyborg(loc))
- var/mob/living/silicon/robot/R = loc
- . = R.get_cell()
-
-/obj/item/twohanded/electrostaff/proc/min_hitcost()
- return min(stun_cost, lethal_cost)
-
-/obj/item/twohanded/electrostaff/proc/turn_on(mob/user, silent = FALSE)
- if(on)
- return
- if(!cell)
- if(user)
- to_chat(user, "[src] has no cell.")
- return
- if(cell.charge < min_hitcost())
- if(user)
- to_chat(user, "[src] is out of charge.")
- return
- on = TRUE
- START_PROCESSING(SSobj, src)
- if(user)
- to_chat(user, "You turn [src] on.")
- update_icon()
- if(!silent)
- playsound(src, "sparks", 75, 1, -1)
-
-/obj/item/twohanded/electrostaff/proc/turn_off(mob/user, silent = FALSE)
- if(!on)
- return
- if(user)
- to_chat(user, "You turn [src] off.")
- on = FALSE
- STOP_PROCESSING(SSobj, src)
- update_icon()
- if(!silent)
- playsound(src, "sparks", 75, 1, -1)
-
-/obj/item/twohanded/electrostaff/proc/toggle(mob/user, silent = FALSE)
- if(on)
- turn_off(user, silent)
- else
- turn_on(user, silent)
-
-/obj/item/twohanded/electrostaff/wield(mob/user)
- . = ..()
- if(wielded)
- turn_on(user)
- add_fingerprint(user)
-
-/obj/item/twohanded/electrostaff/unwield(mob/user)
- . = ..()
- if(!wielded)
- turn_off(user)
- add_fingerprint(user)
-
-/obj/item/twohanded/electrostaff/update_icon_state()
- . = ..()
- if(!wielded)
- icon_state = "electrostaff"
- item_state = "electrostaff"
- else
- icon_state = item_state = (on? "electrostaff_1" : "electrostaff_0")
- set_light(7, on? 1 : 0, LIGHT_COLOR_CYAN)
-
-/obj/item/twohanded/electrostaff/examine(mob/living/user)
- . = ..()
- if(cell)
- . += "The cell charge is [round(cell.percent())]%."
- else
- . += "There is no cell installed!"
-
-/obj/item/twohanded/electrostaff/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item/stock_parts/cell))
- var/obj/item/stock_parts/cell/C = W
- if(cell)
- to_chat(user, "[src] already has a cell!")
- else
- if(C.maxcharge < min_hit_cost())
- to_chat(user, "[src] requires a higher capacity cell.")
- return
- if(!user.transferItemToLoc(W, src))
- return
- cell = C
- to_chat(user, "You install a cell in [src].")
-
- else if(W.tool_behaviour == TOOL_SCREWDRIVER)
- if(cell)
- cell.update_icon()
- cell.forceMove(get_turf(src))
- cell = null
- to_chat(user, "You remove the cell from [src].")
- turn_off(user, TRUE)
- else
- return ..()
-
-/obj/item/twohanded/electrostaff/process()
- deductcharge(50) //Wasteful!
-
-/obj/item/twohanded/electrostaff/proc/min_hit_cost()
- return min(lethal_cost, stun_cost)
-
-/obj/item/twohanded/electrostaff/proc/deductcharge(amount)
- var/obj/item/stock_parts/cell/C = get_cell()
- if(!C)
- turn_off()
- return FALSE
- C.use(min(amount, C.charge))
- if(QDELETED(src))
- return FALSE
- if(C.charge < min_hit_cost())
- turn_off()
-
-/obj/item/twohanded/electrostaff/attack(mob/living/target, mob/living/user)
- if(IS_STAMCRIT(user))//CIT CHANGE - makes it impossible to baton in stamina softcrit
- to_chat(user, "You're too exhausted to use [src] properly.")//CIT CHANGE - ditto
- return //CIT CHANGE - ditto
- if(on && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
- clowning_around(user) //ouch!
- return
- if(iscyborg(target))
- return ..()
- var/list/return_list = list()
- if(target.mob_run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user, null, return_list) & BLOCK_SUCCESS) //No message; run_block() handles that
- playsound(target, 'sound/weapons/genhit.ogg', 50, 1)
- return FALSE
- if(user.a_intent != INTENT_HARM)
- if(stun_act(target, user, null, return_list))
- user.do_attack_animation(target)
- user.adjustStaminaLossBuffered(stun_stam_cost)
- return
- else if(!harm_act(target, user, null, return_list))
- return ..() //if you can't fry them just beat them with it
- else //we did harm act them
- user.do_attack_animation(target)
- user.adjustStaminaLossBuffered(lethal_stam_cost)
-
-/obj/item/twohanded/electrostaff/proc/stun_act(mob/living/target, mob/living/user, no_charge_and_force = FALSE, list/block_return = list())
- var/stunforce = block_calculate_resultant_damage(stun_stamdmg, block_return)
- if(!no_charge_and_force)
- if(!on)
- target.visible_message("[user] has bapped [target] with [src]. Luckily it was off.", \
- "[user] has bapped you with [src]. Luckily it was off")
- turn_off() //if it wasn't already off
- return FALSE
- var/obj/item/stock_parts/cell/C = get_cell()
- var/chargeleft = C.charge
- deductcharge(stun_cost)
- if(QDELETED(src) || QDELETED(C)) //boom
- return FALSE
- if(chargeleft < stun_cost)
- stunforce *= round(chargeleft/stun_cost, 0.1)
- target.adjustStaminaLoss(stunforce)
- target.apply_effect(EFFECT_STUTTER, stunforce)
- SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK)
- if(user)
- target.lastattacker = user.real_name
- target.lastattackerckey = user.ckey
- target.visible_message("[user] has shocked [target] with [src]!", \
- "[user] has shocked you with [src]!")
- log_combat(user, target, "stunned with an electrostaff")
- playsound(src, 'sound/weapons/staff.ogg', 50, 1, -1)
- target.apply_status_effect(stun_status_effect, stun_status_duration)
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- H.forcesay(GLOB.hit_appends)
- return TRUE
-
-/obj/item/twohanded/electrostaff/proc/harm_act(mob/living/target, mob/living/user, no_charge_and_force = FALSE, list/block_return = list())
- var/lethal_force = block_calculate_resultant_damage(lethal_damage, block_return)
- if(!no_charge_and_force)
- if(!on)
- return FALSE //standard item attack
- var/obj/item/stock_parts/cell/C = get_cell()
- var/chargeleft = C.charge
- deductcharge(lethal_cost)
- if(QDELETED(src) || QDELETED(C)) //boom
- return FALSE
- if(chargeleft < stun_cost)
- lethal_force *= round(chargeleft/lethal_cost, 0.1)
- target.adjustFireLoss(lethal_force) //good against ointment spam
- SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK)
- if(user)
- target.lastattacker = user.real_name
- target.lastattackerckey = user.ckey
- target.visible_message("[user] has seared [target] with [src]!", \
- "[user] has seared you with [src]!")
- log_combat(user, target, "burned with an electrostaff")
- playsound(src, 'sound/weapons/sear.ogg', 50, 1, -1)
- return TRUE
-
-/obj/item/twohanded/electrostaff/proc/clowning_around(mob/living/user)
- user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \
- "You accidentally hit yourself with [src]!")
- SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
- harm_act(user, user, TRUE)
- stun_act(user, user, TRUE)
- deductcharge(lethal_cost)
-
-/obj/item/twohanded/electrostaff/emp_act(severity)
- . = ..()
- if (!(. & EMP_PROTECT_SELF))
- turn_off()
- if(!iscyborg(loc))
- deductcharge(1000 / severity, TRUE, FALSE)
-
-/obj/item/twohanded/broom
- name = "broom"
- desc = "This is my BROOMSTICK! It can be used manually or braced with two hands to sweep items as you move. It has a telescopic handle for compact storage." //LIES
- icon = 'icons/obj/janitor.dmi'
- icon_state = "broom0"
- lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
- force = 8
- throwforce = 10
- throw_speed = 3
- throw_range = 7
- w_class = WEIGHT_CLASS_NORMAL
- force_unwielded = 8
- force_wielded = 12
- attack_verb = list("swept", "brushed off", "bludgeoned", "whacked")
- resistance_flags = FLAMMABLE
-
-/obj/item/twohanded/broom/update_icon_state()
- icon_state = "broom[wielded]"
-
-/obj/item/twohanded/broom/wield(mob/user)
- . = ..()
- if(!wielded)
- return
- to_chat(user, "You brace the [src] against the ground in a firm sweeping stance.")
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/sweep)
-
-/obj/item/twohanded/broom/unwield(mob/user)
- . = ..()
- UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
-
-/obj/item/twohanded/broom/afterattack(atom/A, mob/user, proximity)
- . = ..()
- if(!proximity)
- return
- sweep(user, A, FALSE)
-
-/obj/item/twohanded/broom/proc/sweep(mob/user, atom/A, moving = TRUE)
- var/turf/target
- if (!moving)
- if (isturf(A))
- target = A
- else
- target = A.loc
- if(!isturf(target)) //read: Mob inventories.
- return
- else
- target = user.loc
- if (locate(/obj/structure/table) in target.contents)
- return
- var/i = 0
- for(var/obj/item/garbage in target.contents)
- if(!garbage.anchored)
- garbage.Move(get_step(target, user.dir), user.dir)
- i++
- if(i >= 20)
- break
- if(i >= 1)
- playsound(loc, 'sound/weapons/thudswoosh.ogg', 5, TRUE, -1)
-
-/obj/item/twohanded/broom/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) //bless you whoever fixes this copypasta
- J.put_in_cart(src, user)
- J.mybroom=src
- J.update_icon()
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 67dcd71e65..7524bb93e1 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -263,7 +263,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/obj/item/wirerod/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/shard))
- var/obj/item/twohanded/spear/S = new /obj/item/twohanded/spear
+ var/obj/item/spear/S = new /obj/item/spear
remove_item_from_storage(user)
if (!user.transferItemToLoc(I, S))
@@ -475,7 +475,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/obj/item/mounted_chainsaw/Destroy()
var/obj/item/bodypart/part
- new /obj/item/twohanded/required/chainsaw(get_turf(src))
+ 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)
@@ -759,3 +759,59 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
to_chat(user, "[M] is too close to use [src] on.")
return
M.attack_hand(user)
+
+//HF blade
+
+/obj/item/vibro_weapon
+ icon_state = "hfrequency0"
+ 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 = 40
+ 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/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+
+/obj/item/vibro_weapon/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/butchering, 20, 105)
+ AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="hfrequency1")
+ AddElement(/datum/element/sword_point)
+
+/// triggered on wield of two handed item
+/obj/item/vibro_weapon/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/vibro_weapon/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/vibro_weapon/update_icon_state()
+ icon_state = "hfrequency0"
+
+/obj/item/vibro_weapon/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(wielded)
+ final_block_chance *= 2
+ if(wielded || !(attack_type & ATTACK_TYPE_PROJECTILE))
+ if(prob(final_block_chance))
+ if(attack_type & ATTACK_TYPE_PROJECTILE)
+ 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, 1)
+ block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_DEFLECT
+ return BLOCK_SUCCESS | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT | BLOCK_PHYSICAL_EXTERNAL
+ else
+ owner.visible_message("[owner] parries [attack_text] with [src]!")
+ return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
+ return NONE
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 9f4da351fa..ad7680f2f9 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -273,8 +273,8 @@
icon_state = "tac"
/obj/structure/closet/secure_closet/lethalshots/PopulateContents()
..()
- new /obj/item/twohanded/electrostaff(src)
- new /obj/item/twohanded/electrostaff(src)
+ new /obj/item/electrostaff(src)
+ new /obj/item/electrostaff(src)
for(var/i in 1 to 3)
new /obj/item/storage/box/lethalshot(src)
diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm
index f4c1dd5ab9..bcf1016c1e 100644
--- a/code/game/objects/structures/fireaxe.dm
+++ b/code/game/objects/structures/fireaxe.dm
@@ -11,7 +11,7 @@
integrity_failure = 0.33
var/locked = TRUE
var/open = FALSE
- var/obj/item/twohanded/fireaxe/fireaxe
+ var/obj/item/fireaxe/fireaxe
/obj/structure/fireaxecabinet/Initialize()
. = ..()
@@ -50,8 +50,8 @@
obj_integrity = max_integrity
update_icon()
else if(open || broken)
- if(istype(I, /obj/item/twohanded/fireaxe) && !fireaxe)
- var/obj/item/twohanded/fireaxe/F = I
+ if(istype(I, /obj/item/fireaxe) && !fireaxe)
+ var/obj/item/fireaxe/F = I
if(F.wielded)
to_chat(user, "Unwield the [F.name] first.")
return
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index c1f8af43f0..ce78b92f38 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -288,7 +288,7 @@
icon_state = "fullgrass_[rand(1, 3)]"
. = ..()
-/obj/item/twohanded/required/kirbyplants
+/obj/item/kirbyplants
name = "potted plant"
icon = 'icons/obj/flora/plants.dmi'
icon_state = "plant-01"
@@ -300,24 +300,25 @@
throw_speed = 2
throw_range = 4
-/obj/item/twohanded/required/kirbyplants/Initialize()
+/obj/item/kirbyplants/ComponentInitialize()
. = ..()
AddElement(/datum/element/tactical)
addtimer(CALLBACK(src, /datum.proc/_AddElement, list(/datum/element/beauty, 500)), 0)
+ AddComponent(/datum/component/two_handed, require_twohands=TRUE, force_unwielded=10, force_wielded=10)
-/obj/item/twohanded/required/kirbyplants/random
+/obj/item/kirbyplants/random
icon = 'icons/obj/flora/_flora.dmi'
icon_state = "random_plant"
var/list/static/states
-/obj/item/twohanded/required/kirbyplants/random/Initialize()
+/obj/item/kirbyplants/random/Initialize()
. = ..()
icon = 'icons/obj/flora/plants.dmi'
if(!states)
generate_states()
icon_state = pick(states)
-/obj/item/twohanded/required/kirbyplants/random/proc/generate_states()
+/obj/item/kirbyplants/random/proc/generate_states()
states = list()
for(var/i in 1 to 25)
var/number
@@ -329,12 +330,12 @@
states += "applebush"
-/obj/item/twohanded/required/kirbyplants/dead
+/obj/item/kirbyplants/dead
name = "RD's potted plant"
desc = "A gift from the botanical staff, presented after the RD's reassignment. There's a tag on it that says \"Y'all come back now, y'hear?\"\nIt doesn't look very healthy..."
icon_state = "plant-25"
-/obj/item/twohanded/required/kirbyplants/photosynthetic
+/obj/item/kirbyplants/photosynthetic
name = "photosynthetic potted plant"
desc = "A bioluminescent plant."
icon_state = "plant-09"
diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm
index 581ce850de..65d930e08b 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/twohanded/spear/spear
+ var/obj/item/spear/spear
var/obj/item/bodypart/head/victim
/obj/structure/headpike/bone //for bone spears
@@ -20,9 +20,9 @@
name = "[victim.name] on a spear"
update_icon()
if(bonespear)
- spear = locate(/obj/item/twohanded/bonespear) in parts_list
+ spear = locate(/obj/item/spear/bonespear) in parts_list
else
- spear = locate(/obj/item/twohanded/spear) in parts_list
+ spear = locate(/obj/item/spear) in parts_list
/obj/structure/headpike/Initialize()
. = ..()
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 38133d9089..dc4a741b8b 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -8,7 +8,7 @@
//copypaste sorry
var/obj/item/storage/bag/trash/mybag
var/obj/item/mop/mymop
- var/obj/item/twohanded/broom/mybroom
+ var/obj/item/broom/mybroom
var/obj/item/reagent_containers/spray/cleaner/myspray
var/obj/item/lightreplacer/myreplacer
var/signs = 0
@@ -48,9 +48,9 @@
m.janicart_insert(user, src)
else
to_chat(user, fail_msg)
- else if(istype(I, /obj/item/twohanded/broom))
+ else if(istype(I, /obj/item/broom))
if(!mybroom)
- var/obj/item/twohanded/broom/b=I
+ var/obj/item/broom/b=I
b.janicart_insert(user,src)
else
to_chat(user, fail_msg)
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index 048394b942..0f1ec6fa85 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -803,7 +803,7 @@
stage = GIBTONITE_DETONATE
explosion(bombturf,1,2,5, adminlog = 0)
if(stage == GIBTONITE_STABLE) //Gibtonite deposit is now benign and extractable. Depending on how close you were to it blowing up before defusing, you get better quality ore.
- var/obj/item/twohanded/required/gibtonite/G = new (src)
+ var/obj/item/gibtonite/G = new (src)
if(det_time <= 0)
G.quality = 3
G.icon_state = "Gibtonite ore 3"
diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm
index 5c74eb4ecc..a5f0d5e824 100644
--- a/code/game/turfs/simulated/wall/mineral_walls.dm
+++ b/code/game/turfs/simulated/wall/mineral_walls.dm
@@ -136,7 +136,7 @@
/turf/closed/wall/mineral/wood/attackby(obj/item/W, mob/user)
if(W.sharpness && W.force)
var/duration = (48/W.force) * 2 //In seconds, for now.
- if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/twohanded/fireaxe))
+ if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe))
duration /= 4 //Much better with hatchets and axes.
var/src_type = type
if(do_after(user, duration*10, target=src) && type == src_type) //Into deciseconds.
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 5db289bd31..d8a7ae45f4 100755
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -182,7 +182,7 @@
target.zImpact(A, levels, src)
return TRUE
-/turf/proc/handleRCL(obj/item/twohanded/rcl/C, mob/user)
+/turf/proc/handleRCL(obj/item/rcl/C, mob/user)
if(C.loaded)
for(var/obj/structure/cable/LC in src)
if(!LC.d1 || !LC.d2)
@@ -205,7 +205,7 @@
coil.place_turf(src, user)
return TRUE
- else if(istype(C, /obj/item/twohanded/rcl))
+ else if(istype(C, /obj/item/rcl))
handleRCL(C, user)
return FALSE
diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm
index 44dcfc0ae6..417663fcb7 100644
--- a/code/modules/admin/fun_balloon.dm
+++ b/code/modules/admin/fun_balloon.dm
@@ -126,7 +126,7 @@
L.forceMove(LA)
L.hallucination = 0
to_chat(L, "The battle is won. Your bloodlust subsides.")
- for(var/obj/item/twohanded/required/chainsaw/doomslayer/chainsaw in L)
+ for(var/obj/item/chainsaw/doomslayer/chainsaw in L)
qdel(chainsaw)
else
to_chat(L, "You are not yet worthy of passing. Drag a severed head to the barrier to be allowed entry to the hall of champions.")
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index 52ead9a1e7..68a890028e 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -801,7 +801,7 @@
var/turf/T = get_turf(user)
qdel(src)
var/datum/action/innate/cult/spear/S = new(user)
- var/obj/item/twohanded/cult_spear/rite = new(T)
+ var/obj/item/cult_spear/rite = new(T)
S.Grant(user, rite)
rite.spear_act = S
if(user.put_in_hands(rite))
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 8f0f9a658c..5b2dd7d007 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -100,7 +100,7 @@
user.apply_damage(30, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
user.dropItemToGround(src)
-/obj/item/twohanded/required/cult_bastard
+/obj/item/cult_bastard
name = "bloody bastard sword"
desc = "An enormous sword used by Nar'Sien cultists to rapidly harvest the souls of non-believers."
w_class = WEIGHT_CLASS_HUGE
@@ -127,31 +127,35 @@
var/spin_cooldown = 250
var/dash_toggled = TRUE
-/obj/item/twohanded/required/cult_bastard/Initialize()
+/obj/item/cult_bastard/Initialize()
. = ..()
set_light(4)
jaunt = new(src)
linked_action = new(src)
- AddComponent(/datum/component/butchering, 50, 80)
-/obj/item/twohanded/required/cult_bastard/examine(mob/user)
+/obj/item/cult_bastard/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/butchering, 50, 80)
+ AddComponent(/datum/component/two_handed, require_twohands=TRUE)
+
+/obj/item/cult_bastard/examine(mob/user)
. = ..()
if(contents.len)
. += " There are [contents.len] souls trapped within the sword's core."
else
. += " The sword appears to be quite lifeless."
-/obj/item/twohanded/required/cult_bastard/can_be_pulled(user)
+/obj/item/cult_bastard/can_be_pulled(user)
return FALSE
-/obj/item/twohanded/required/cult_bastard/attack_self(mob/user)
+/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/twohanded/required/cult_bastard/pickup(mob/living/user)
+/obj/item/cult_bastard/pickup(mob/living/user)
. = ..()
if(!iscultist(user))
if(!is_servant_of_ratvar(user))
@@ -171,13 +175,13 @@
linked_action.Grant(user, src)
user.update_icons()
-/obj/item/twohanded/required/cult_bastard/dropped(mob/user)
+/obj/item/cult_bastard/dropped(mob/user)
. = ..()
linked_action.Remove(user)
jaunt.Remove(user)
user.update_icons()
-/obj/item/twohanded/required/cult_bastard/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+/obj/item/cult_bastard/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(spinning && is_energy_reflectable_projectile(object) && (attack_type & ATTACK_TYPE_PROJECTILE))
playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, 1)
return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL | BLOCK_REDIRECTED | BLOCK_SHOULD_REDIRECT
@@ -192,7 +196,7 @@
return BLOCK_SUCCESS | BLOCK_PHYSICAL_EXTERNAL
return BLOCK_NONE
-/obj/item/twohanded/required/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters)
+/obj/item/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters)
. = ..()
if(dash_toggled && !proximity)
jaunt.Teleport(user, target)
@@ -235,7 +239,7 @@
button_icon_state = "sintouch"
var/cooldown = 0
var/mob/living/carbon/human/holder
- var/obj/item/twohanded/required/cult_bastard/sword
+ var/obj/item/cult_bastard/sword
/datum/action/innate/cult/spin2win/Grant(mob/user, obj/bastard)
. = ..()
@@ -687,7 +691,7 @@
to_chat(user, "\The [src] can only transport items!")
-/obj/item/twohanded/cult_spear
+/obj/item/cult_spear
name = "blood halberd"
desc = "A sickening spear composed entirely of crystallized blood."
icon_state = "bloodspear0"
@@ -695,8 +699,6 @@
righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
slot_flags = 0
force = 17
- force_unwielded = 17
- force_wielded = 24
throwforce = 40
throw_speed = 2
armour_penetration = 30
@@ -705,20 +707,36 @@
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/twohanded/cult_spear/Initialize()
+
+/obj/item/cult_spear/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/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="bloodspear1")
-/obj/item/twohanded/cult_spear/Destroy()
+/// triggered on wield of two handed item
+/obj/item/cult_spear/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/cult_spear/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/cult_spear/update_icon_state()
+ icon_state = "bloodspear0"
+
+/obj/item/cult_spear/Destroy()
if(spear_act)
qdel(spear_act)
..()
-/obj/item/twohanded/cult_spear/update_icon_state()
- icon_state = "bloodspear[wielded]"
-
-/obj/item/twohanded/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+/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
@@ -741,7 +759,7 @@
else
..()
-/obj/item/twohanded/cult_spear/proc/break_spear(turf/T)
+/obj/item/cult_spear/proc/break_spear(turf/T)
if(src)
if(!T)
T = get_turf(src)
@@ -752,7 +770,7 @@
playsound(T, 'sound/effects/glassbr3.ogg', 100)
qdel(src)
-/obj/item/twohanded/cult_spear/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+/obj/item/cult_spear/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
if(wielded)
final_block_chance *= 2
if(prob(final_block_chance))
@@ -771,7 +789,7 @@
desc = "Call the blood spear back to your hand!"
background_icon_state = "bg_demon"
button_icon_state = "bloodspear"
- var/obj/item/twohanded/cult_spear/spear
+ var/obj/item/cult_spear/spear
var/cooldown = 0
/datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear)
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index eaef7a35f5..2701a2d006 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -234,7 +234,7 @@
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), SLOT_SHOES)
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/twohanded/spear(H), SLOT_BACK)
+ H.equip_to_slot_or_del(new /obj/item/spear(H), SLOT_BACK)
/obj/item/voodoo
diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm
index 881e668d9b..ab043ef1c9 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook.dm
@@ -430,12 +430,12 @@
/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/twohanded/mjollnir
+ 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/twohanded/singularityhammer
+ item_path = /obj/item/singularityhammer
/datum/spellbook_entry/item/battlemage
name = "Battlemage Armour"
diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm
index cf5bd2b4cc..8e3c7115e9 100644
--- a/code/modules/asset_cache/asset_list_items.dm
+++ b/code/modules/asset_cache/asset_list_items.dm
@@ -367,7 +367,7 @@
"dna_discovered.gif" = 'html/dna_discovered.gif',
"dna_undiscovered.gif" = 'html/dna_undiscovered.gif',
"dna_extra.gif" = 'html/dna_extra.gif'
-)
+ )
/datum/asset/simple/orbit
assets = list(
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index f841ae20ca..fcdc564380 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -7,7 +7,7 @@
#define AMMO_DROP_LIFETIME 300
#define CTF_REQUIRED_PLAYERS 4
-/obj/item/twohanded/ctf
+/obj/item/ctf
name = "banner"
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "banner"
@@ -16,6 +16,7 @@
righthand_file = 'icons/mob/inhands/equipment/banners_righthand.dmi'
desc = "A banner with Nanotrasen's logo on it."
slowdown = 2
+ item_flags = SLOWS_WHILE_IN_HAND
throw_speed = 0
throw_range = 1
force = 200
@@ -28,16 +29,20 @@
var/obj/effect/ctf/flag_reset/reset
var/reset_path = /obj/effect/ctf/flag_reset
-/obj/item/twohanded/ctf/Destroy()
+/obj/item/ctf/Destroy()
QDEL_NULL(reset)
return ..()
-/obj/item/twohanded/ctf/Initialize()
+/obj/item/ctf/Initialize()
. = ..()
if(!reset)
reset = new reset_path(get_turf(src))
-/obj/item/twohanded/ctf/process()
+/obj/item/ctf/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed)
+
+/obj/item/ctf/process()
if(is_ctf_target(loc)) //don't reset from someone's hands.
return PROCESS_KILL
if(world.time > reset_cooldown)
@@ -49,7 +54,7 @@
STOP_PROCESSING(SSobj, src)
//ATTACK HAND IGNORING PARENT RETURN VALUE
-/obj/item/twohanded/ctf/attack_hand(mob/living/user)
+/obj/item/ctf/attack_hand(mob/living/user)
if(!is_ctf_target(user) && !anyonecanpickup)
to_chat(user, "Non players shouldn't be moving the flag!")
return
@@ -73,7 +78,7 @@
STOP_PROCESSING(SSobj, src)
..()
-/obj/item/twohanded/ctf/dropped(mob/user)
+/obj/item/ctf/dropped(mob/user)
..()
user.anchored = FALSE
user.status_flags |= CANPUSH
@@ -86,7 +91,7 @@
anchored = TRUE
-/obj/item/twohanded/ctf/red
+/obj/item/ctf/red
name = "red flag"
icon_state = "banner-red"
item_state = "banner-red"
@@ -95,7 +100,7 @@
reset_path = /obj/effect/ctf/flag_reset/red
-/obj/item/twohanded/ctf/blue
+/obj/item/ctf/blue
name = "blue flag"
icon_state = "banner-blue"
item_state = "banner-blue"
@@ -276,8 +281,8 @@
attack_ghost(ghost)
/obj/machinery/capture_the_flag/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/twohanded/ctf))
- var/obj/item/twohanded/ctf/flag = I
+ if(istype(I, /obj/item/ctf))
+ var/obj/item/ctf/flag = I
if(flag.team != src.team)
user.transferItemToLoc(flag, get_turf(flag.reset), TRUE)
points++
@@ -294,7 +299,7 @@
if(istype(mob_area, /area/ctf))
to_chat(M, "[team] team wins!")
to_chat(M, "Teams have been cleared. Click on the machines to vote to begin another round.")
- for(var/obj/item/twohanded/ctf/W in M)
+ for(var/obj/item/ctf/W in M)
M.dropItemToGround(W)
M.dust()
for(var/obj/machinery/control_point/control in GLOB.machines)
@@ -335,7 +340,7 @@
var/list/ctf_object_typecache = typecacheof(list(
/obj/machinery,
/obj/effect/ctf,
- /obj/item/twohanded/ctf
+ /obj/item/ctf
))
for(var/atm in A)
if (isturf(A) || ismob(A) || isarea(A))
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index c11267a5f3..e91dfee034 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -661,5 +661,5 @@
/datum/outfit/lavaknight/captain
name ="Cydonian Knight Captain"
- l_pocket = /obj/item/twohanded/dualsaber/hypereutactic
+ l_pocket = /obj/item/dualsaber/hypereutactic
id = /obj/item/card/id/knight/captain
diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm
index 5bdc0d4532..c7e2609436 100644
--- a/code/modules/awaymissions/mission_code/snowdin.dm
+++ b/code/modules/awaymissions/mission_code/snowdin.dm
@@ -502,7 +502,7 @@
/obj/effect/spawner/lootdrop/snowdin/dungeonheavy
name = "dungeon heavy"
- loot = list(/obj/item/twohanded/fireaxe = 25,
+ loot = list(/obj/item/fireaxe = 25,
/obj/item/organ/brain/alien = 17,
/obj/item/organ/heart/cursed = 7,
/obj/item/book/granter/spell/forcewall = 17,
@@ -518,7 +518,7 @@
loot = list(/obj/item/stack/sheet/mineral/snow{amount = 25} = 10,
/obj/item/toy/snowball = 15,
/obj/item/shovel = 10,
- /obj/item/twohanded/spear = 8,
+ /obj/item/spear = 8,
)
//special items//--
diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm
index 4af28d78cc..744c01a257 100644
--- a/code/modules/cargo/bounties/assistant.dm
+++ b/code/modules/cargo/bounties/assistant.dm
@@ -31,7 +31,7 @@
description = "CentCom's security forces are going through budget cuts. You will be paid if you ship a set of spears."
reward = 1000
required_count = 5
- wanted_types = list(/obj/item/twohanded/spear)
+ wanted_types = list(/obj/item/spear)
/datum/bounty/item/assistant/toolbox
name = "Toolboxes"
@@ -134,7 +134,7 @@
description = "Central Command is looking to commission a new BirdBoat-class station. You've been ordered to supply the potted plants."
reward = 2000
required_count = 8
- wanted_types = list(/obj/item/twohanded/required/kirbyplants)
+ wanted_types = list(/obj/item/kirbyplants)
// /datum/bounty/item/assistant/earmuffs
// name = "Earmuffs"
@@ -160,7 +160,7 @@
name = "Chainsaw"
description = "The chef at CentCom is having trouble butchering her animals. She requests one chainsaw, please."
reward = 2500
- wanted_types = list(/obj/item/twohanded/required/chainsaw)
+ wanted_types = list(/obj/item/chainsaw)
/datum/bounty/item/assistant/ied
name = "IED"
diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm
index 1f3266af62..cd8d5707d8 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 = 3500
- wanted_types = list(/obj/item/twohanded/fireaxe/boneaxe)
+ wanted_types = list(/obj/item/fireaxe/boneaxe)
/datum/bounty/item/mining/bone_armor
name = "Bone Armor"
diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm
index 2342603bde..983348a358 100644
--- a/code/modules/cargo/exports/weapons.dm
+++ b/code/modules/cargo/exports/weapons.dm
@@ -267,7 +267,7 @@
/datum/export/weapon/duelsaber
cost = 360 //Get it?
unit_name = "energy saber"
- export_types = list(/obj/item/twohanded/dualsaber)
+ export_types = list(/obj/item/dualsaber)
/datum/export/weapon/esword
cost = 130
diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm
index 2b7ae21f88..a84e22f6f9 100644
--- a/code/modules/cargo/packs/misc.dm
+++ b/code/modules/cargo/packs/misc.dm
@@ -294,11 +294,11 @@
name = "Potted Plants Crate"
desc = "Spruce up the station with these lovely plants! Contains a random assortment of five potted plants from Nanotrasen's potted plant research division. Warranty void if thrown."
cost = 730
- contains = list(/obj/item/twohanded/required/kirbyplants/random,
- /obj/item/twohanded/required/kirbyplants/random,
- /obj/item/twohanded/required/kirbyplants/random,
- /obj/item/twohanded/required/kirbyplants/random,
- /obj/item/twohanded/required/kirbyplants/random)
+ contains = list(/obj/item/kirbyplants/random,
+ /obj/item/kirbyplants/random,
+ /obj/item/kirbyplants/random,
+ /obj/item/kirbyplants/random,
+ /obj/item/kirbyplants/random)
crate_name = "potted plants crate"
crate_type = /obj/structure/closet/crate/hydroponics
diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm
index 51bcd0a17c..c4dc57ebfa 100644
--- a/code/modules/client/client_defines.dm
+++ b/code/modules/client/client_defines.dm
@@ -134,6 +134,14 @@
var/parallax_layers_max = 3
var/parallax_animate_timer
+ // List of all asset filenames sent to this client by the asset cache, along with their assoicated md5s
+ var/list/sent_assets = list()
+ /// List of all completed blocking send jobs awaiting acknowledgement by send_asset
+ var/list/completed_asset_jobs = list()
+ /// Last asset send job id.
+ var/last_asset_job = 0
+ var/last_completed_asset_job = 0
+
//world.time of when the crew manifest can be accessed
var/crew_manifest_delay
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index aa1b6f801b..efcba9bd3e 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -325,6 +325,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
modless_key_bindings = sanitize_islist(modless_key_bindings, list())
verify_keybindings_valid() // one of these days this will runtime and you'll be glad that i put it in a different proc so no one gets their saves wiped
+ sanitize_speech_and_tongue()
return 1
@@ -346,6 +347,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
if(!GLOB.keybindings_by_name[bindname])
modless_key_bindings -= key
+/datum/preferences/proc/sanitize_speech_and_tongue()
+ if(!(custom_speech_verb in GLOB.speech_verbs))
+ custom_speech_verb = GLOB.speech_verbs[1]
+ if(!(custom_tongue in GLOB.roundstart_tongues))
+ custom_tongue = GLOB.roundstart_tongues[1]
+
/datum/preferences/proc/save_preferences()
if(!path)
return 0
diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm
index d692f9c3fb..afe74de6a0 100644
--- a/code/modules/clothing/outfits/standard.dm
+++ b/code/modules/clothing/outfits/standard.dm
@@ -123,7 +123,7 @@
l_pocket = /obj/item/reagent_containers/food/snacks/grown/banana
r_pocket = /obj/item/bikehorn
id = /obj/item/card/id
- r_hand = /obj/item/twohanded/fireaxe
+ r_hand = /obj/item/fireaxe
/datum/outfit/tunnel_clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
if(visualsOnly)
@@ -148,7 +148,7 @@
suit = /obj/item/clothing/suit/apron
l_pocket = /obj/item/kitchen/knife
r_pocket = /obj/item/scalpel
- r_hand = /obj/item/twohanded/fireaxe
+ r_hand = /obj/item/fireaxe
/datum/outfit/psycho/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
for(var/obj/item/carried_item in H.get_equipped_items(TRUE))
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index 0a3923b28c..d5f65e4fa8 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -59,7 +59,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/twohanded/spear, /obj/item/twohanded/bonespear, /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/spear, /obj/item/spear/bonespear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat/bone, /obj/item/kitchen/knife/combat/survival)
armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "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|ARMS|LEGS
@@ -75,7 +75,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/twohanded/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/spear)
armor = list("melee" = 70, "bullet" = 20, "laser" = 35, "energy" = 25, "bomb" = 25, "bio" = 0, "rad" = 0, "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/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 80bf04280a..05abed603c 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -867,7 +867,7 @@
icon_state = "coatnarsie"
item_state = "coatnarsie"
armor = list("melee" = 30, "bullet" = 20, "laser" = 30,"energy" = 10, "bomb" = 30, "bio" = 10, "rad" = 10, "fire" = 30, "acid" = 30)
- allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/restraints/legcuffs/bola/cult,/obj/item/melee/cultblade,/obj/item/melee/cultblade/dagger,/obj/item/reagent_containers/glass/beaker/unholywater,/obj/item/cult_shift,/obj/item/flashlight/flare/culttorch,/obj/item/twohanded/cult_spear)
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/restraints/legcuffs/bola/cult,/obj/item/melee/cultblade,/obj/item/melee/cultblade/dagger,/obj/item/reagent_containers/glass/beaker/unholywater,/obj/item/cult_shift,/obj/item/flashlight/flare/culttorch,/obj/item/cult_spear)
hoodtype = /obj/item/clothing/head/hooded/winterhood/narsie
var/real = TRUE
diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm
index aec4b404f3..eac16d2950 100644
--- a/code/modules/integrated_electronics/subtypes/manipulation.dm
+++ b/code/modules/integrated_electronics/subtypes/manipulation.dm
@@ -162,7 +162,7 @@
/obj/item/integrated_circuit/manipulation/grabber/do_work()
var/obj/item/AM = get_pin_data_as_type(IC_INPUT, 1, /obj/item)
- if(!QDELETED(AM) && !istype(AM, /obj/item/electronic_assembly) && !istype(AM, /obj/item/transfer_valve) && !istype(AM, /obj/item/twohanded) && !istype(assembly.loc, /obj/item/implant/storage))
+ if(!QDELETED(AM) && !istype(AM, /obj/item/electronic_assembly) && !istype(AM, /obj/item/transfer_valve) && !istype(assembly.loc, /obj/item/implant/storage) && !AM.GetComponent(/datum/component/two_handed))
var/mode = get_pin_data(IC_INPUT, 2)
switch(mode)
if(1)
@@ -300,7 +300,7 @@
var/target_y_rel = round(get_pin_data(IC_INPUT, 2))
var/obj/item/A = get_pin_data_as_type(IC_INPUT, 3, /obj/item)
- if(!A || A.anchored || A.throwing || A == assembly || istype(A, /obj/item/twohanded) || istype(A, /obj/item/transfer_valve))
+ if(!A || A.anchored || A.throwing || A == assembly || istype(A, /obj/item/transfer_valve) || A.GetComponent(/datum/component/two_handed))
return
if (istype(assembly.loc, /obj/item/implant/storage)) //Prevents the more abusive form of chestgun.
diff --git a/code/modules/integrated_electronics/subtypes/weaponized.dm b/code/modules/integrated_electronics/subtypes/weaponized.dm
index f7dea13052..950525ab7f 100644
--- a/code/modules/integrated_electronics/subtypes/weaponized.dm
+++ b/code/modules/integrated_electronics/subtypes/weaponized.dm
@@ -246,7 +246,7 @@
var/obj/item/A = get_pin_data_as_type(IC_INPUT, 3, /obj/item)
var/obj/item/integrated_circuit/atmospherics/AT = get_pin_data_as_type(IC_INPUT, 4, /obj/item/integrated_circuit/atmospherics)
- if(!A || A.anchored || A.throwing || A == assembly || istype(A, /obj/item/twohanded) || istype(A, /obj/item/transfer_valve))
+ if(!A || A.anchored || A.throwing || A == assembly || istype(A, /obj/item/transfer_valve) || A.GetComponent(/datum/component/two_handed))
return
var/obj/item/I = get_object()
diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm
index a09c4376fb..ebf7ba0f1f 100644
--- a/code/modules/jobs/job_types/shaft_miner.dm
+++ b/code/modules/jobs/job_types/shaft_miner.dm
@@ -16,7 +16,7 @@
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING,
ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
- paycheck = PAYCHECK_HARD
+ paycheck = PAYCHECK_EASY ///Not necessarily easy itself, but it can be trivial to make lot of cash on this job.
paycheck_department = ACCOUNT_CAR
display_order = JOB_DISPLAY_ORDER_SHAFT_MINER
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index dcd8e1a4ae..745c46b131 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -1,5 +1,5 @@
/*********************Mining Hammer****************/
-/obj/item/twohanded/kinetic_crusher
+/obj/item/kinetic_crusher
icon = 'icons/obj/mining.dmi'
icon_state = "crusher"
item_state = "crusher0"
@@ -11,8 +11,6 @@
force = 0 //You can't hit stuff unless wielded
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK
- force_unwielded = 0
- force_wielded = 20
throwforce = 5
throw_speed = 4
armour_penetration = 10
@@ -28,33 +26,45 @@
var/backstab_bonus = 30
var/light_on = FALSE
var/brightness_on = 7
+ var/wielded = FALSE // track wielded status on item
-/obj/item/twohanded/kinetic_crusher/cyborg //probably give this a unique sprite later
+/obj/item/kinetic_crusher/cyborg //probably give this a unique sprite later
desc = "An integrated version of the standard kinetic crusher with a grinded down axe head to dissuade mis-use against crewmen. Deals damage equal to the standard crusher against creatures, however."
force = 10 //wouldn't want to give a borg a 20 brute melee weapon unemagged now would we
detonation_damage = 60
wielded = 1
-/obj/item/twohanded/kinetic_crusher/cyborg/unwield()
- return
+/obj/item/kinetic_crusher/Initialize()
+ . = ..()
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
-/obj/item/twohanded/kinetic_crusher/Initialize()
+/obj/item/kinetic_crusher/ComponentInitialize()
. = ..()
AddComponent(/datum/component/butchering, 60, 110) //technically it's huge and bulky, but this provides an incentive to use it
+ AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=20)
-/obj/item/twohanded/kinetic_crusher/Destroy()
+/obj/item/kinetic_crusher/Destroy()
QDEL_LIST(trophies)
return ..()
-/obj/item/twohanded/kinetic_crusher/examine(mob/living/user)
+/// triggered on wield of two handed item
+/obj/item/kinetic_crusher/proc/on_wield(obj/item/source, mob/user)
+ wielded = TRUE
+
+/// triggered on unwield of two handed item
+/obj/item/kinetic_crusher/proc/on_unwield(obj/item/source, mob/user)
+ wielded = FALSE
+
+/obj/item/kinetic_crusher/examine(mob/living/user)
. = ..()
- . += "Mark a large creature with the destabilizing force, then hit them in melee to do [force_wielded + detonation_damage] damage."
- . += "Does [force_wielded + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force_wielded + detonation_damage]."
+ . += "Mark a large creature with the destabilizing force, then hit them in melee to do [force + detonation_damage] damage."
+ . += "Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage]."
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
. += "It has \a [T] attached, which causes [T.effect_desc()]."
-/obj/item/twohanded/kinetic_crusher/attackby(obj/item/I, mob/living/user)
+/obj/item/kinetic_crusher/attackby(obj/item/I, mob/living/user)
if(istype(I, /obj/item/crowbar))
if(LAZYLEN(trophies))
to_chat(user, "You remove [src]'s trophies.")
@@ -70,7 +80,7 @@
else
return ..()
-/obj/item/twohanded/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user)
+/obj/item/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user)
if(!wielded)
to_chat(user, "[src] is too heavy to use with one hand.")
return
@@ -84,7 +94,7 @@
if(!QDELETED(C) && !QDELETED(target))
C.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did
-/obj/item/twohanded/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams)
+/obj/item/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams)
. = ..()
if(istype(target, /obj/item/crusher_trophy))
var/obj/item/crusher_trophy/T = target
@@ -137,28 +147,28 @@
if(user && lavaland_equipment_pressure_check(get_turf(user))) //CIT CHANGE - makes sure below only happens in low pressure environments
user.adjustStaminaLoss(-30)//CIT CHANGE - makes crushers heal stamina
-/obj/item/twohanded/kinetic_crusher/proc/Recharge()
+/obj/item/kinetic_crusher/proc/Recharge()
if(!charged)
charged = TRUE
update_icon()
playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
-/obj/item/twohanded/kinetic_crusher/ui_action_click(mob/user, actiontype)
+/obj/item/kinetic_crusher/ui_action_click(mob/user, actiontype)
light_on = !light_on
playsound(user, 'sound/weapons/empty.ogg', 100, TRUE)
update_brightness(user)
update_icon()
-/obj/item/twohanded/kinetic_crusher/proc/update_brightness(mob/user = null)
+/obj/item/kinetic_crusher/proc/update_brightness(mob/user = null)
if(light_on)
set_light(brightness_on)
else
set_light(0)
-/obj/item/twohanded/kinetic_crusher/update_icon_state()
- item_state = "crusher[wielded]"
+/obj/item/kinetic_crusher/update_icon_state()
+ item_state = "crusher[wielded]" // this is not icon_state and not supported by 2hcomponent
-/obj/item/twohanded/kinetic_crusher/update_overlays()
+/obj/item/kinetic_crusher/update_overlays()
. = ..()
if(!charged)
. += "[icon_state]_uncharged"
@@ -175,7 +185,7 @@
flag = "bomb"
range = 6
log_override = TRUE
- var/obj/item/twohanded/kinetic_crusher/hammer_synced
+ var/obj/item/kinetic_crusher/hammer_synced
/obj/item/projectile/destabilizer/Destroy()
hammer_synced = null
@@ -214,12 +224,12 @@
return "errors"
/obj/item/crusher_trophy/attackby(obj/item/A, mob/living/user)
- if(istype(A, /obj/item/twohanded/kinetic_crusher))
+ if(istype(A, /obj/item/kinetic_crusher))
add_to(A, user)
else
..()
-/obj/item/crusher_trophy/proc/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user)
+/obj/item/crusher_trophy/proc/add_to(obj/item/kinetic_crusher/H, mob/living/user)
for(var/t in H.trophies)
var/obj/item/crusher_trophy/T = t
if(istype(T, denied_type) || istype(src, T.denied_type))
@@ -231,7 +241,7 @@
to_chat(user, "You attach [src] to [H].")
return TRUE
-/obj/item/crusher_trophy/proc/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user)
+/obj/item/crusher_trophy/proc/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
forceMove(get_turf(H))
H.trophies -= src
return TRUE
@@ -318,12 +328,12 @@
/obj/item/crusher_trophy/legion_skull/effect_desc()
return "a kinetic crusher to recharge [bonus_value*0.1] second\s faster"
-/obj/item/crusher_trophy/legion_skull/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user)
+/obj/item/crusher_trophy/legion_skull/add_to(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
H.charge_time -= bonus_value
-/obj/item/crusher_trophy/legion_skull/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user)
+/obj/item/crusher_trophy/legion_skull/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
H.charge_time += bonus_value
@@ -376,21 +386,19 @@
/obj/item/crusher_trophy/demon_claws/effect_desc()
return "melee hits to do [bonus_value * 0.2] more damage and heal you for [bonus_value * 0.1], with 5X effect on mark detonation"
-/obj/item/crusher_trophy/demon_claws/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user)
+/obj/item/crusher_trophy/demon_claws/add_to(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
H.force += bonus_value * 0.2
- H.force_unwielded += bonus_value * 0.2
- H.force_wielded += bonus_value * 0.2
H.detonation_damage += bonus_value * 0.8
+ AddComponent(/datum/component/two_handed, force_wielded=(20 + bonus_value * 0.2))
-/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user)
+/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
H.force -= bonus_value * 0.2
- H.force_unwielded -= bonus_value * 0.2
- H.force_wielded -= bonus_value * 0.2
H.detonation_damage -= bonus_value * 0.8
+ AddComponent(/datum/component/two_handed, force_wielded=20)
/obj/item/crusher_trophy/demon_claws/on_melee_hit(mob/living/target, mob/living/user)
user.heal_ordered_damage(bonus_value * 0.1, damage_heal_order)
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index dcaaffe487..b00e291685 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -32,7 +32,7 @@
new /datum/data/mining_equipment("500 Point Transfer Card", /obj/item/card/mining_point_card/mp500, 500),
new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600),
new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750),
- new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/kinetic_crusher, 750),
+ new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/kinetic_crusher, 750),
new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750),
new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 750),
new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 800),
@@ -221,7 +221,7 @@
new /obj/item/stack/marker_beacon/thirty(drop_location)
if("Crusher Kit")
new /obj/item/extinguisher/mini(drop_location)
- new /obj/item/twohanded/kinetic_crusher(drop_location)
+ new /obj/item/kinetic_crusher(drop_location)
if("Mining Conscription Kit")
new /obj/item/storage/backpack/duffelbag/mining_conscript(drop_location)
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index 36e607c0b8..b3462773d8 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -210,7 +210,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
item_state = "slag"
singular_name = "slag chunk"
-/obj/item/twohanded/required/gibtonite
+/obj/item/gibtonite
name = "gibtonite ore"
desc = "Extremely explosive if struck with mining equipment, Gibtonite is often used by miners to speed up their work by using it as a mining charge. This material is illegal to possess by unauthorized personnel under space law."
icon = 'icons/obj/mining.dmi'
@@ -224,12 +224,16 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
var/attacher = "UNKNOWN"
var/det_timer
-/obj/item/twohanded/required/gibtonite/Destroy()
+/obj/item/gibtonite/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, require_twohands=TRUE)
+
+/obj/item/gibtonite/Destroy()
qdel(wires)
wires = null
return ..()
-/obj/item/twohanded/required/gibtonite/attackby(obj/item/I, mob/user, params)
+/obj/item/gibtonite/attackby(obj/item/I, mob/user, params)
if(!wires && istype(I, /obj/item/assembly/igniter))
user.visible_message("[user] attaches [I] to [src].", "You attach [I] to [src].")
wires = new /datum/wires/explosive/gibtonite(src)
@@ -257,22 +261,22 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
return
..()
-/obj/item/twohanded/required/gibtonite/attack_self(user)
+/obj/item/gibtonite/attack_self(user)
if(wires)
wires.interact(user)
else
..()
-/obj/item/twohanded/required/gibtonite/bullet_act(obj/item/projectile/P)
+/obj/item/gibtonite/bullet_act(obj/item/projectile/P)
GibtoniteReaction(P.firer)
return ..()
-/obj/item/twohanded/required/gibtonite/ex_act()
+/obj/item/gibtonite/ex_act()
GibtoniteReaction(null, 1)
-/obj/item/twohanded/required/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0)
+/obj/item/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0)
if(!primed)
primed = TRUE
playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1)
@@ -298,7 +302,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(bombturf)]")
det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE)
-/obj/item/twohanded/required/gibtonite/proc/detonate(notify_admins)
+/obj/item/gibtonite/proc/detonate(notify_admins)
if(primed)
switch(quality)
if(GIBTONITE_QUALITY_HIGH)
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 74775203b1..83cc09a624 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -158,7 +158,7 @@
//Returns if a certain item can be equipped to a certain slot.
// Currently invalid for two-handed items - call obj/item/mob_can_equip() instead.
-/mob/proc/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE)
+/mob/proc/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning)
return FALSE
/mob/proc/can_put_in_hand(I, hand_index)
@@ -338,50 +338,63 @@
return FALSE
return TRUE
+//This is a SAFE proc. Use this instead of equip_to_slot()!
+//set qdel_on_fail to have it delete W if it fails to equip
+//set disable_warning to disable the 'you are unable to equip that' warning.
+//unset redraw_mob to prevent the mob from being redrawn at the end.
+/mob/proc/equip_to_slot_if_possible(obj/item/W, slot, qdel_on_fail = FALSE, disable_warning = FALSE, redraw_mob = TRUE, bypass_equip_delay_self = FALSE, clothing_check = FALSE)
+ if(!istype(W))
+ return FALSE
+ var/list/warning = list("You are unable to equip that!")
+ if(!W.mob_can_equip(src, null, slot, disable_warning, bypass_equip_delay_self, clothing_check, warning))
+ if(qdel_on_fail)
+ qdel(W)
+ else if(!disable_warning)
+ to_chat(src, warning[1])
+ return FALSE
+ equip_to_slot(W, slot, redraw_mob) //This proc should not ever fail.
+ return TRUE
+
+//This is an UNSAFE proc. It merely handles the actual job of equipping. All the checks on whether you can or can't equip need to be done before! Use mob_can_equip() for that task.
+//In most cases you will want to use equip_to_slot_if_possible()
+/mob/proc/equip_to_slot(obj/item/W, slot)
+ return
+
+//This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the round starts and when events happen and such.
+//Also bypasses equip delay checks, since the mob isn't actually putting it on.
+/mob/proc/equip_to_slot_or_del(obj/item/W, slot)
+ return equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, TRUE)
+
+//puts the item "W" into an appropriate slot in a human's inventory
+//returns 0 if it cannot, 1 if successful
+/mob/proc/equip_to_appropriate_slot(obj/item/W, clothing_check = FALSE)
+ if(!istype(W))
+ return 0
+ var/slot_priority = W.slot_equipment_priority
+
+ if(!slot_priority)
+ slot_priority = list( \
+ SLOT_BACK, SLOT_WEAR_ID,\
+ SLOT_W_UNIFORM, SLOT_WEAR_SUIT,\
+ SLOT_WEAR_MASK, SLOT_HEAD, SLOT_NECK,\
+ SLOT_SHOES, SLOT_GLOVES,\
+ SLOT_EARS, SLOT_GLASSES,\
+ SLOT_BELT, SLOT_S_STORE,\
+ SLOT_L_STORE, SLOT_R_STORE,\
+ SLOT_GENERC_DEXTROUS_STORAGE\
+ )
+
+ for(var/slot in slot_priority)
+ if(equip_to_slot_if_possible(W, slot, FALSE, TRUE, TRUE, FALSE, clothing_check)) //qdel_on_fail = 0; disable_warning = 1; redraw_mob = 1
+ return 1
+
+ return 0
+
//Outdated but still in use apparently. This should at least be a human proc.
//Daily reminder to murder this - Remie.
/mob/living/proc/get_equipped_items(include_pockets = FALSE)
return
-/mob/living/carbon/get_equipped_items(include_pockets = FALSE)
- var/list/items = list()
- if(back)
- items += back
- if(head)
- items += head
- if(wear_mask)
- items += wear_mask
- if(wear_neck)
- items += wear_neck
- return items
-
-/mob/living/carbon/human/get_equipped_items(include_pockets = FALSE)
- var/list/items = ..()
- if(belt)
- items += belt
- if(ears)
- items += ears
- if(glasses)
- items += glasses
- if(gloves)
- items += gloves
- if(shoes)
- items += shoes
- if(wear_id)
- items += wear_id
- if(wear_suit)
- items += wear_suit
- if(w_uniform)
- items += w_uniform
- if(include_pockets)
- if(l_store)
- items += l_store
- if(r_store)
- items += r_store
- if(s_store)
- items += s_store
- return items
-
/mob/living/proc/unequip_everything()
var/list/items = list()
items |= get_equipped_items(TRUE)
@@ -394,7 +407,7 @@
to_chat(M, "You are not holding anything to equip!")
return FALSE
- if(M.equip_to_appropriate_slot(src))
+ if(M.equip_to_appropriate_slot(src, TRUE))
M.update_inv_hands()
return TRUE
else
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 7b201e7492..8472c8bdae 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -47,16 +47,13 @@
/mob/living/carbon/swap_hand(held_index)
+ . = ..()
+ if(!.)
+ var/obj/item/held_item = get_active_held_item()
+ to_chat(usr, "Your other hand is too busy holding [held_item].")
+ return
if(!held_index)
held_index = (active_hand_index % held_items.len)+1
-
- var/obj/item/item_in_hand = src.get_active_held_item()
- if(item_in_hand) //this segment checks if the item in your hand is twohanded.
- var/obj/item/twohanded/TH = item_in_hand
- if(istype(TH))
- if(TH.wielded == 1)
- to_chat(usr, "Your other hand is too busy holding [TH]")
- return
var/oindex = active_hand_index
active_hand_index = held_index
if(hud_used)
@@ -182,7 +179,7 @@
to_chat(src, "You gently let go of [throwable_mob].")
return
- adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring
+ adjustStaminaLossBuffered(STAM_COST_THROW_MOB * ((throwable_mob.mob_size+1)**2))// throwing an entire person shall be very tiring
var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
var/turf/end_T = get_turf(target)
if(start_T && end_T)
@@ -1160,3 +1157,16 @@
dna.features["body_model"] = MALE
if(update_icon)
update_body()
+
+/mob/living/carbon/check_obscured_slots()
+ if(head)
+ if(head.flags_inv & HIDEMASK)
+ LAZYOR(., SLOT_WEAR_MASK)
+ if(head.flags_inv & HIDEEYES)
+ LAZYOR(., SLOT_GLASSES)
+ if(head.flags_inv & HIDEEARS)
+ LAZYOR(., SLOT_EARS)
+
+ if(wear_mask)
+ if(wear_mask.flags_inv & HIDEEYES)
+ LAZYOR(., SLOT_GLASSES)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index d79a332431..21199ca4c0 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -513,33 +513,15 @@
// Might need re-wording.
to_chat(user, "There is no exposed flesh or thin material [above_neck(target_zone) ? "on [p_their()] head" : "on [p_their()] body"].")
-/mob/living/carbon/human/proc/check_obscured_slots()
- var/list/obscured = list()
-
+/mob/living/carbon/human/check_obscured_slots()
+ . = ..()
if(wear_suit)
if(wear_suit.flags_inv & HIDEGLOVES)
- obscured |= SLOT_GLOVES
+ LAZYOR(., SLOT_GLOVES)
if(wear_suit.flags_inv & HIDEJUMPSUIT)
- obscured |= SLOT_W_UNIFORM
+ LAZYOR(., SLOT_W_UNIFORM)
if(wear_suit.flags_inv & HIDESHOES)
- obscured |= SLOT_SHOES
-
- if(head)
- if(head.flags_inv & HIDEMASK)
- obscured |= SLOT_WEAR_MASK
- if(head.flags_inv & HIDEEYES)
- obscured |= SLOT_GLASSES
- if(head.flags_inv & HIDEEARS)
- obscured |= SLOT_EARS
-
- if(wear_mask)
- if(wear_mask.flags_inv & HIDEEYES)
- obscured |= SLOT_GLASSES
-
- if(obscured.len)
- return obscured
- else
- return null
+ LAZYOR(., SLOT_SHOES)
/mob/living/carbon/human/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null)
if(judgement_criteria & JUDGE_EMAGGED)
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 8de143e2bd..a7593ca0cb 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -1,5 +1,32 @@
-/mob/living/carbon/human/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE)
- return dna.species.can_equip(I, slot, disable_warning, src, bypass_equip_delay_self)
+/mob/living/carbon/human/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning)
+ return dna.species.can_equip(I, slot, disable_warning, src, bypass_equip_delay_self, clothing_check, return_warning)
+
+/mob/living/carbon/human/get_equipped_items(include_pockets = FALSE)
+ var/list/items = ..()
+ if(belt)
+ items += belt
+ if(ears)
+ items += ears
+ if(glasses)
+ items += glasses
+ if(gloves)
+ items += gloves
+ if(shoes)
+ items += shoes
+ if(wear_id)
+ items += wear_id
+ if(wear_suit)
+ items += wear_suit
+ if(w_uniform)
+ items += w_uniform
+ if(include_pockets)
+ if(l_store)
+ items += l_store
+ if(r_store)
+ items += r_store
+ if(s_store)
+ items += s_store
+ return items
// Return the item currently in the slot ID
/mob/living/carbon/human/get_item_by_slot(slot_id)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 0b83c73dca..fa258eb814 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1068,11 +1068,16 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
// handles the equipping of species-specific gear
return
-/datum/species/proc/can_equip(obj/item/I, slot, disable_warning, mob/living/carbon/human/H, bypass_equip_delay_self = FALSE)
+/datum/species/proc/can_equip(obj/item/I, slot, disable_warning, mob/living/carbon/human/H, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning)
if(slot in no_equip)
if(!I.species_exception || !is_type_in_list(src, I.species_exception))
return FALSE
+ if(clothing_check && (slot in H.check_obscured_slots()))
+ if(return_warning)
+ return_warning[1] = "You are unable to equip that with your current garments in the way!"
+ return FALSE
+
var/num_arms = H.get_num_arms(FALSE)
var/num_legs = H.get_num_legs(FALSE)
@@ -1134,8 +1139,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(!CHECK_BITFIELD(I.item_flags, NO_UNIFORM_REQUIRED))
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST)
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
- if(!disable_warning)
- to_chat(H, "You need a jumpsuit before you can attach this [I.name]!")
+ if(return_warning)
+ return_warning[1] = "You need a jumpsuit before you can attach this [I.name]!"
return FALSE
if(!(I.slot_flags & ITEM_SLOT_BELT))
return
@@ -1176,8 +1181,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(!CHECK_BITFIELD(I.item_flags, NO_UNIFORM_REQUIRED))
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST)
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
- if(!disable_warning)
- to_chat(H, "You need a jumpsuit before you can attach this [I.name]!")
+ if(return_warning)
+ return_warning[1] = "You need a jumpsuit before you can attach this [I.name]!"
return FALSE
if( !(I.slot_flags & ITEM_SLOT_ID) )
return FALSE
@@ -1191,8 +1196,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_L_LEG)
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
- if(!disable_warning)
- to_chat(H, "You need a jumpsuit before you can attach this [I.name]!")
+ if(return_warning)
+ return_warning[1] = "You need a jumpsuit before you can attach this [I.name]!"
return FALSE
if(I.slot_flags & ITEM_SLOT_DENYPOCKET)
return FALSE
@@ -1207,8 +1212,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_R_LEG)
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
- if(!disable_warning)
- to_chat(H, "You need a jumpsuit before you can attach this [I.name]!")
+ if(return_warning)
+ return_warning[1] = "You need a jumpsuit before you can attach this [I.name]!"
return FALSE
if(I.slot_flags & ITEM_SLOT_DENYPOCKET)
return FALSE
@@ -1221,16 +1226,16 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(H.s_store)
return FALSE
if(!H.wear_suit)
- if(!disable_warning)
- to_chat(H, "You need a suit before you can attach this [I.name]!")
+ if(return_warning)
+ return_warning[1] = "You need a suit before you can attach this [I.name]!"
return FALSE
if(!H.wear_suit.allowed)
- if(!disable_warning)
- to_chat(H, "You somehow have a suit with no defined allowed items for suit storage, stop that.")
+ if(return_warning)
+ return_warning[1] = "You somehow have a suit with no defined allowed items for suit storage, stop that."
return FALSE
if(I.w_class > WEIGHT_CLASS_BULKY)
- if(!disable_warning)
- to_chat(H, "The [I.name] is too big to attach.") //should be src?
+ if(return_warning)
+ return_warning[1] = "The [I.name] is too big to attach."
return FALSE
if( istype(I, /obj/item/pda) || istype(I, /obj/item/pen) || is_type_in_list(I, H.wear_suit.allowed) )
return TRUE
diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index 50801e1c0d..cc837a490c 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -117,6 +117,18 @@
if(!QDELETED(src))
update_inv_legcuffed()
+/mob/living/carbon/get_equipped_items(include_pockets = FALSE)
+ var/list/items = list()
+ if(back)
+ items += back
+ if(head)
+ items += head
+ if(wear_mask)
+ items += wear_mask
+ if(wear_neck)
+ items += wear_neck
+ return items
+
//handle stuff to update when a mob equips/unequips a mask.
/mob/living/proc/wear_mask_update(obj/item/clothing/C, toggle_off = 1)
update_inv_wear_mask()
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 4209e020e4..889ec6d257 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -517,7 +517,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
/mob/living/carbon/handle_status_effects()
..()
if(getStaminaLoss() && !SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) //CIT CHANGE - prevents stamina regen while combat mode is active
- adjustStaminaLoss(!CHECK_MOBILITY(src, MOBILITY_STAND) ? ((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) ? -7.5 : -6) : -3)//CIT CHANGE - decreases adjuststaminaloss to stop stamina damage from being such a joke
+ adjustStaminaLoss(!CHECK_MOBILITY(src, MOBILITY_STAND) ? ((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) ? STAM_RECOVERY_STAM_CRIT : STAM_RECOVERY_RESTING) : STAM_RECOVERY_NORMAL)
if(!(combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && incomingstammult != 1)
incomingstammult = max(0.01, incomingstammult)
diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index 1b0856bfcd..149ec5f0e3 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -81,7 +81,7 @@
/mob/living/carbon/monkey/proc/pickup_and_wear(obj/item/I)
if(QDELETED(I) || I.loc != src)
return
- equip_to_appropriate_slot(I)
+ equip_to_appropriate_slot(I, TRUE)
/mob/living/carbon/monkey/resist_restraints()
var/obj/item/I = null
diff --git a/code/modules/mob/living/carbon/monkey/inventory.dm b/code/modules/mob/living/carbon/monkey/inventory.dm
index d5fffc70a2..34599028f7 100644
--- a/code/modules/mob/living/carbon/monkey/inventory.dm
+++ b/code/modules/mob/living/carbon/monkey/inventory.dm
@@ -1,4 +1,9 @@
-/mob/living/carbon/monkey/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE)
+/mob/living/carbon/monkey/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning)
+ if(clothing_check && (slot in check_obscured_slots()))
+ if(return_warning)
+ return_warning[1] = "You are unable to equip that with your current garments in the way!"
+ return FALSE
+
switch(slot)
if(SLOT_HANDS)
if(get_empty_held_indexes())
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 9e1e7a1b89..8f103c496e 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -340,7 +340,7 @@
/obj/item/organ_storage,
/obj/item/borg/lollipop,
/obj/item/sensor_device,
- /obj/item/twohanded/shockpaddles/cyborg)
+ /obj/item/shockpaddles/cyborg)
emag_modules = list(/obj/item/reagent_containers/borghypo/hacked)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/medical,
@@ -923,7 +923,7 @@
/obj/item/borg/sight/meson,
/obj/item/storage/bag/ore/cyborg,
/obj/item/pickaxe/drill/cyborg,
- /obj/item/twohanded/kinetic_crusher/cyborg,
+ /obj/item/kinetic_crusher/cyborg,
/obj/item/weldingtool/mini,
/obj/item/storage/bag/sheetsnatcher/borg,
/obj/item/t_scanner/adv_mining_scanner,
@@ -1043,7 +1043,7 @@
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/reagent_containers/borghypo/syndicate,
- /obj/item/twohanded/shockpaddles/syndicate,
+ /obj/item/shockpaddles/syndicate,
/obj/item/healthanalyzer/advanced,
/obj/item/surgical_drapes/advanced,
/obj/item/retractor,
diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
index f6aad5c03f..174ac869fa 100644
--- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
@@ -184,7 +184,7 @@
else
to_chat(user, "The [src] already has this mop!")
- else if(istype(W, /obj/item/twohanded/broom))
+ else if(istype(W, /obj/item/broom))
if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_CLEANER_BROOM))
to_chat(user, "You add to \the [src] a broom speeding it up!")
upgrades |= UPGRADE_CLEANER_BROOM
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
index 6e89f045da..8034e3c5e5 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm
@@ -19,7 +19,7 @@
return 0
-/mob/living/simple_animal/drone/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE)
+/mob/living/simple_animal/drone/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning)
switch(slot)
if(SLOT_HEAD)
if(head)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
index b4865c4337..a1850fabca 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
@@ -50,7 +50,7 @@
return 1
return 0
-/mob/living/simple_animal/hostile/guardian/dextrous/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE)
+/mob/living/simple_animal/hostile/guardian/dextrous/can_equip(obj/item/I, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE, clothing_check = FALSE, list/return_warning)
switch(slot)
if(SLOT_GENERC_DEXTROUS_STORAGE)
if(internal_storage)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index 02e1b47c95..7009f13f36 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -159,7 +159,7 @@
var/client/C = L.client
SSmedals.UnlockMedal("Boss [BOSS_KILL_MEDAL]", C)
SSmedals.UnlockMedal("[medaltype] [BOSS_KILL_MEDAL]", C)
- if(crusher_kill && istype(L.get_active_held_item(), /obj/item/twohanded/kinetic_crusher))
+ if(crusher_kill && istype(L.get_active_held_item(), /obj/item/kinetic_crusher))
SSmedals.UnlockMedal("[medaltype] [BOSS_KILL_MEDAL_CRUSHER]", C)
SSmedals.SetScore(BOSS_SCORE, C, 1)
SSmedals.SetScore(score_type, C, 1)
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 c371242bf2..16f892bbff 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
@@ -324,7 +324,7 @@
suit = /obj/item/clothing/suit/armor/bone
gloves = /obj/item/clothing/gloves/bracer
if(prob(5))
- back = pickweight(list(/obj/item/twohanded/bonespear = 3, /obj/item/twohanded/fireaxe/boneaxe = 2))
+ back = pickweight(list(/obj/item/spear/bonespear = 3, /obj/item/fireaxe/boneaxe = 2))
if(prob(10))
belt = /obj/item/storage/belt/mining/primitive
if(prob(30))
@@ -411,7 +411,7 @@
if(prob(5))
gloves = /obj/item/clothing/gloves/color/yellow
if(prob(10))
- back = /obj/item/twohanded/spear
+ back = /obj/item/spear
else if(prob(80)) //Now they dont always have a backpack
back = /obj/item/storage/backpack
backpack_contents = list(/obj/item/stack/cable_coil = 1, /obj/item/assembly/flash = 1, /obj/item/storage/fancy/donut_box = 1, /obj/item/storage/fancy/cigarettes/cigpack_shadyjims = 1, /obj/item/lighter = 1)
diff --git a/code/modules/mob/living/simple_animal/hostile/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/skeleton.dm
index f3138a773c..3091949552 100644
--- a/code/modules/mob/living/simple_animal/hostile/skeleton.dm
+++ b/code/modules/mob/living/simple_animal/hostile/skeleton.dm
@@ -53,7 +53,7 @@
melee_damage_upper = 20
deathmessage = "collapses into a pile of bones, its gear falling to the floor!"
loot = list(/obj/effect/decal/remains/human,
- /obj/item/twohanded/spear,
+ /obj/item/spear,
/obj/item/clothing/shoes/winterboots,
/obj/item/clothing/suit/hooded/wintercoat)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 3491fd2f95..261778b28f 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -537,17 +537,13 @@
mode()
/mob/living/simple_animal/swap_hand(hand_index)
+ . = ..()
+ if(!.)
+ return
if(!dextrous)
- return ..()
+ return
if(!hand_index)
hand_index = (active_hand_index % held_items.len)+1
- var/obj/item/held_item = get_active_held_item()
- if(held_item)
- if(istype(held_item, /obj/item/twohanded))
- var/obj/item/twohanded/T = held_item
- if(T.wielded == 1)
- to_chat(usr, "Your other hand is too busy holding the [T.name].")
- return
var/oindex = active_hand_index
active_hand_index = hand_index
if(hud_used)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index c5d2a34f89..0124249baf 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -227,69 +227,24 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA
var/obj/item/W = get_active_held_item()
if(istype(W))
- if(equip_to_slot_if_possible(W, slot,0,0,0))
- return 1
+ if(equip_to_slot_if_possible(W, slot, FALSE, FALSE, FALSE, TRUE))
+ return TRUE
if(!W)
// Activate the item
var/obj/item/I = get_item_by_slot(slot)
if(istype(I))
+ if(slot in check_obscured_slots())
+ to_chat(src, "You are unable to unequip that while wearing other garments over it!")
+ return FALSE
I.attack_hand(src)
- return 0
+ return FALSE
-//This is a SAFE proc. Use this instead of equip_to_slot()!
-//set qdel_on_fail to have it delete W if it fails to equip
-//set disable_warning to disable the 'you are unable to equip that' warning.
-//unset redraw_mob to prevent the mob from being redrawn at the end.
-/mob/proc/equip_to_slot_if_possible(obj/item/W, slot, qdel_on_fail = FALSE, disable_warning = FALSE, redraw_mob = TRUE, bypass_equip_delay_self = FALSE)
- if(!istype(W))
- return FALSE
- if(!W.mob_can_equip(src, null, slot, disable_warning, bypass_equip_delay_self))
- if(qdel_on_fail)
- qdel(W)
- else
- if(!disable_warning)
- to_chat(src, "You are unable to equip that!")
- return FALSE
- equip_to_slot(W, slot, redraw_mob) //This proc should not ever fail.
- return TRUE
-
-//This is an UNSAFE proc. It merely handles the actual job of equipping. All the checks on whether you can or can't equip need to be done before! Use mob_can_equip() for that task.
-//In most cases you will want to use equip_to_slot_if_possible()
-/mob/proc/equip_to_slot(obj/item/W, slot)
+/// Checks for slots that are currently obscured by other garments.
+/mob/proc/check_obscured_slots()
return
-//This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the round starts and when events happen and such.
-//Also bypasses equip delay checks, since the mob isn't actually putting it on.
-/mob/proc/equip_to_slot_or_del(obj/item/W, slot)
- return equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, TRUE)
-
-//puts the item "W" into an appropriate slot in a human's inventory
-//returns 0 if it cannot, 1 if successful
-/mob/proc/equip_to_appropriate_slot(obj/item/W)
- if(!istype(W))
- return 0
- var/slot_priority = W.slot_equipment_priority
-
- if(!slot_priority)
- slot_priority = list( \
- SLOT_BACK, SLOT_WEAR_ID,\
- SLOT_W_UNIFORM, SLOT_WEAR_SUIT,\
- SLOT_WEAR_MASK, SLOT_HEAD, SLOT_NECK,\
- SLOT_SHOES, SLOT_GLOVES,\
- SLOT_EARS, SLOT_GLASSES,\
- SLOT_BELT, SLOT_S_STORE,\
- SLOT_L_STORE, SLOT_R_STORE,\
- SLOT_GENERC_DEXTROUS_STORAGE\
- )
-
- for(var/slot in slot_priority)
- if(equip_to_slot_if_possible(W, slot, 0, 1, 1)) //qdel_on_fail = 0; disable_warning = 1; redraw_mob = 1
- return 1
-
- return 0
-
// reset_perspective(thing) set the eye to the thing (if it's equal to current default reset to mob perspective)
// reset_perspective() set eye to common default : mob on turf, loc otherwise
/mob/proc/reset_perspective(atom/A)
@@ -755,7 +710,11 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0)
return FALSE
/mob/proc/swap_hand()
- return
+ var/obj/item/held_item = get_active_held_item()
+ if(SEND_SIGNAL(src, COMSIG_MOB_SWAP_HANDS, held_item) & COMPONENT_BLOCK_SWAP)
+ to_chat(src, "Your other hand is too busy holding [held_item].")
+ return FALSE
+ return TRUE
/mob/proc/activate_hand(selhand)
return
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index eb456a3f44..e89507f33d 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -171,8 +171,8 @@ By design, d1 is the smallest direction and d2 is the highest
return
coil.cable_join(src, user)
- else if(istype(W, /obj/item/twohanded/rcl))
- var/obj/item/twohanded/rcl/R = W
+ else if(istype(W, /obj/item/rcl))
+ var/obj/item/rcl/R = W
if(R.loaded)
R.loaded.cable_join(src, user)
R.is_empty(user)
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 98025138da..f197a41cce 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -154,6 +154,11 @@
bottle?.forceMove(A)
return ..()
+//Insert our custom spritesheet css link into the html
+/obj/machinery/chem_master/ui_base_html(html)
+ var/datum/asset/spritesheet/assets = get_asset_datum(/datum/asset/spritesheet/simple/pills)
+ . = replacetext(html, "", assets.css_tag())
+
/obj/machinery/chem_master/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
@@ -164,11 +169,6 @@
ui = new(user, src, ui_key, "ChemMaster", name, 520, 550, master_ui, state)
ui.open()
-//Insert our custom spritesheet css link into the html
-/obj/machinery/chem_master/ui_base_html(html)
- var/datum/asset/spritesheet/simple/assets = get_asset_datum(/datum/asset/spritesheet/simple/pills)
- . = replacetext(html, "", assets.css_tag())
-
/obj/machinery/chem_master/ui_data(mob/user)
var/list/data = list()
data["isBeakerLoaded"] = beaker ? 1 : 0
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 6be2e658c1..98a117ea69 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -13,7 +13,7 @@
/obj/item/reagent_containers/blood/Initialize()
. = ..()
if(blood_type != null)
- reagents.add_reagent(/datum/reagent/blood, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
+ reagents.add_reagent(/datum/reagent/blood, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"bloodcolor"=bloodtype_to_color(blood_type), "blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
update_icon()
/obj/item/reagent_containers/blood/on_reagent_change(changetype)
diff --git a/code/modules/research/designs/autoylathe_designs.dm b/code/modules/research/designs/autoylathe_designs.dm
index c2076db121..6db9755585 100644
--- a/code/modules/research/designs/autoylathe_designs.dm
+++ b/code/modules/research/designs/autoylathe_designs.dm
@@ -63,7 +63,7 @@
name = "Double-Bladed Toy Sword"
id = "dbtoysword"
materials = list(/datum/material/plastic = 1000)
- build_path = /obj/item/twohanded/dualsaber/toy
+ build_path = /obj/item/dualsaber/toy
category = list("initial", "Melee")
/datum/design/autoylathe/toykatana
diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm
index 0a1fde30c2..1b608060ce 100644
--- a/code/modules/research/designs/misc_designs.dm
+++ b/code/modules/research/designs/misc_designs.dm
@@ -343,7 +343,7 @@
id = "broom"
build_type = PROTOLATHE | AUTOLATHE
materials = list(/datum/material/iron = 1000, /datum/material/glass = 600)
- build_path = /obj/item/twohanded/broom
+ build_path = /obj/item/broom
category = list("initial", "Equipment", "Misc")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index d543468c48..97555b7248 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -219,8 +219,6 @@ Nothing else in the console has ID requirements.
/obj/machinery/computer/rdconsole/proc/ui_header()
var/list/l = list()
- var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/research_designs)
- l += "[sheet.css_tag()][RDSCREEN_NOBREAK]"
l += "
[stored_research.organization] Research and Development Network"
l += "Available points: [techweb_point_display_rdconsole(stored_research.research_points, stored_research.last_bitcoins)]"
l += "Security protocols: [obj_flags & EMAGGED ? "Disabled" : "Enabled"]"
@@ -1075,6 +1073,9 @@ Nothing else in the console has ID requirements.
/obj/machinery/computer/rdconsole/ui_interact(mob/user)
. = ..()
var/datum/browser/popup = new(user, "rndconsole", name, 900, 600)
+ var/datum/asset/spritesheet/assets = get_asset_datum(/datum/asset/spritesheet/research_designs)
+
+ popup.add_head_content("")
popup.add_stylesheet("techwebs", 'html/browser/techwebs.css')
popup.set_content(generate_ui())
popup.open()
diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm
index 7b5004e722..1a8b82232b 100644
--- a/code/modules/research/xenobiology/crossbreeding/burning.dm
+++ b/code/modules/research/xenobiology/crossbreeding/burning.dm
@@ -276,7 +276,7 @@ Burning extracts:
/obj/item/slimecross/burning/adamantine/do_effect(mob/user)
user.visible_message("[src] crystallizes into a large shield!")
- new /obj/item/twohanded/required/adamantineshield(get_turf(user))
+ new /obj/item/shield/adamantineshield(get_turf(user))
..()
/obj/item/slimecross/burning/rainbow
@@ -440,7 +440,7 @@ Burning extracts:
attack_verb = list("irradiated","mutated","maligned")
return ..()
-/obj/item/twohanded/required/adamantineshield
+/obj/item/shield/adamantineshield
name = "adamantine shield"
desc = "A gigantic shield made of solid adamantium."
icon = 'icons/obj/slimecrossing.dmi'
@@ -450,12 +450,15 @@ Burning extracts:
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
slot_flags = ITEM_SLOT_BACK
block_chance = 75
+ force = 0
throw_range = 1 //How far do you think you're gonna throw a solid crystalline shield...?
throw_speed = 2
- force = 15 //Heavy, but hard to wield.
attack_verb = list("bashed","pounded","slammed")
item_flags = SLOWS_WHILE_IN_HAND
+/obj/item/shield/adamantineshield/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, require_twohands=TRUE, force_wielded=15)
/obj/effect/proc_holder/spell/targeted/shapeshift/slimeform
name = "Slime Transformation"
diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm
index 438c762ef6..3b76107905 100644
--- a/code/modules/spells/spell_types/devil.dm
+++ b/code/modules/spells/spell_types/devil.dm
@@ -5,7 +5,7 @@
include_user = 1
range = -1
clothes_req = NONE
- item_type = /obj/item/twohanded/pitchfork/demonic
+ item_type = /obj/item/pitchfork/demonic
school = "conjuration"
charge_max = 150
@@ -15,10 +15,10 @@
action_background_icon_state = "bg_demon"
/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater
- item_type = /obj/item/twohanded/pitchfork/demonic/greater
+ item_type = /obj/item/pitchfork/demonic/greater
/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended
- item_type = /obj/item/twohanded/pitchfork/demonic/ascended
+ item_type = /obj/item/pitchfork/demonic/ascended
/obj/effect/proc_holder/spell/targeted/conjure_item/violin
item_type = /obj/item/instrument/violin/golden
diff --git a/code/modules/surgery/advanced/revival.dm b/code/modules/surgery/advanced/revival.dm
index cf3a218d80..dd36af9b32 100644
--- a/code/modules/surgery/advanced/revival.dm
+++ b/code/modules/surgery/advanced/revival.dm
@@ -25,12 +25,12 @@
return TRUE
/datum/surgery_step/revive
name = "electrically stimulate brain"
- implements = list(/obj/item/twohanded/shockpaddles = 100, /obj/item/abductor/gizmo = 100, /obj/item/melee/baton = 75, /obj/item/organ/cyberimp/arm/baton = 75, /obj/item/organ/cyberimp/arm/gun/taser = 60, /obj/item/gun/energy/e_gun/advtaser = 60, /obj/item/gun/energy/taser = 60)
+ implements = list(/obj/item/shockpaddles = 100, /obj/item/abductor/gizmo = 100, /obj/item/melee/baton = 75, /obj/item/organ/cyberimp/arm/baton = 75, /obj/item/organ/cyberimp/arm/gun/taser = 60, /obj/item/gun/energy/e_gun/advtaser = 60, /obj/item/gun/energy/taser = 60)
time = 120
/datum/surgery_step/revive/tool_check(mob/user, obj/item/tool)
. = TRUE
- if(istype(tool, /obj/item/twohanded/shockpaddles))
- var/obj/item/twohanded/shockpaddles/S = tool
+ if(istype(tool, /obj/item/shockpaddles))
+ var/obj/item/shockpaddles/S = tool
if((S.req_defib && !S.defib.powered) || !S.wielded || S.cooldown || S.busy)
to_chat(user, "You need to wield both paddles, and [S.defib] must be powered!")
return FALSE
diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm
index 5c77532188..e00ff66ee7 100644
--- a/code/modules/surgery/amputation.dm
+++ b/code/modules/surgery/amputation.dm
@@ -6,7 +6,7 @@
requires_bodypart_type = 0
/datum/surgery_step/sever_limb
name = "sever limb"
- implements = list(TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/melee/arm_blade = 80, /obj/item/twohanded/required/chainsaw = 80, /obj/item/mounted_chainsaw = 80, /obj/item/twohanded/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25)
+ implements = list(TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/melee/arm_blade = 80, /obj/item/chainsaw = 80, /obj/item/mounted_chainsaw = 80, /obj/item/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25)
time = 64
/datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index 09ac7a8cb2..fcdb07ca17 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -651,7 +651,7 @@
held_index = 1
px_x = -6
px_y = 0
- stam_heal_tick = 4
+ stam_heal_tick = STAM_RECOVERY_LIMB
/obj/item/bodypart/l_arm/is_disabled()
if(HAS_TRAIT(owner, TRAIT_PARALYSIS_L_ARM))
@@ -711,7 +711,7 @@
held_index = 2
px_x = 6
px_y = 0
- stam_heal_tick = 4
+ stam_heal_tick = STAM_RECOVERY_LIMB
max_stamina_damage = 50
/obj/item/bodypart/r_arm/is_disabled()
@@ -771,7 +771,7 @@
body_damage_coeff = 0.75
px_x = -2
px_y = 12
- stam_heal_tick = 4
+ stam_heal_tick = STAM_RECOVERY_LIMB
max_stamina_damage = 50
/obj/item/bodypart/l_leg/is_disabled()
@@ -830,7 +830,7 @@
px_x = 2
px_y = 12
max_stamina_damage = 50
- stam_heal_tick = 4
+ stam_heal_tick = STAM_RECOVERY_LIMB
/obj/item/bodypart/r_leg/is_disabled()
if(HAS_TRAIT(owner, TRAIT_PARALYSIS_R_LEG))
diff --git a/code/modules/surgery/emergency_cardioversion_recovery.dm b/code/modules/surgery/emergency_cardioversion_recovery.dm
index 5646c43f00..5df90c5e80 100644
--- a/code/modules/surgery/emergency_cardioversion_recovery.dm
+++ b/code/modules/surgery/emergency_cardioversion_recovery.dm
@@ -6,13 +6,13 @@
/datum/surgery_step/ventricular_electrotherapy
name = "ventricular electrotherapy"
- implements = list(/obj/item/twohanded/shockpaddles = 90, /obj/item/defibrillator = 75, /obj/item/inducer = 55, /obj/item/stock_parts/cell = 25) //Just because the idea of a new player using the whole magine to defib is hillarious to me
+ implements = list(/obj/item/shockpaddles = 90, /obj/item/defibrillator = 75, /obj/item/inducer = 55, /obj/item/stock_parts/cell = 25) //Just because the idea of a new player using the whole magine to defib is hillarious to me
time = 50
repeatable = TRUE //So you can retry
/datum/surgery_step/ventricular_electrotherapy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(istype(tool, /obj/item/twohanded/shockpaddles))
- var/obj/item/twohanded/shockpaddles/pads = tool
+ if(istype(tool, /obj/item/shockpaddles))
+ var/obj/item/shockpaddles/pads = tool
if(!pads.wielded)
to_chat(user, "You need to wield the paddles in both hands before you can use them!")
return FALSE
@@ -23,8 +23,8 @@
playsound(src, 'sound/machines/defib_charge.ogg', 75, 0)
/datum/surgery_step/ventricular_electrotherapy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(istype(tool, /obj/item/twohanded/shockpaddles))
- var/obj/item/twohanded/shockpaddles/pads = tool
+ if(istype(tool, /obj/item/shockpaddles))
+ var/obj/item/shockpaddles/pads = tool
if(!pads.wielded)
return FALSE
var/mob/living/carbon/human/H = target
@@ -52,7 +52,7 @@
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5)
H.electrocute_act(0, (tool), 1, SHOCK_ILLUSION)
//If we're using a defib, let the defib handle the revive.
- if(istype(tool, /obj/item/twohanded/shockpaddles))
+ if(istype(tool, /obj/item/shockpaddles))
return
//Otherwise, we're ad hocing it
if(!(do_after(user, 50, target = target)))
diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm
index 3b05873a0a..0b38ecc2fe 100644
--- a/code/modules/surgery/organic_steps.dm
+++ b/code/modules/surgery/organic_steps.dm
@@ -91,7 +91,7 @@
//saw bone
/datum/surgery_step/saw
name = "saw bone"
- implements = list(TOOL_SAW = 100, /obj/item/melee/arm_blade = 75, /obj/item/twohanded/fireaxe = 50, /obj/item/hatchet = 35, /obj/item/kitchen/knife/butcher = 25)
+ implements = list(TOOL_SAW = 100, /obj/item/melee/arm_blade = 75, /obj/item/fireaxe = 50, /obj/item/hatchet = 35, /obj/item/kitchen/knife/butcher = 25)
time = 54
/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm
index 62ce16e7e6..8eac5b7895 100644
--- a/code/modules/surgery/prosthetic_replacement.dm
+++ b/code/modules/surgery/prosthetic_replacement.dm
@@ -13,7 +13,7 @@
return 1
/datum/surgery_step/add_prosthetic
name = "add prosthetic"
- implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100, /obj/item/twohanded/required/chainsaw = 100, /obj/item/melee/synthetic_arm_blade = 100)
+ implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100, /obj/item/chainsaw = 100, /obj/item/melee/synthetic_arm_blade = 100)
time = 32
var/organ_rejection_dam = 0
/datum/surgery_step/add_prosthetic/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -79,7 +79,7 @@
"[user] finishes attaching [tool]!",
"[user] finishes the attachment procedure!")
qdel(tool)
- if(istype(tool, /obj/item/twohanded/required/chainsaw))
+ if(istype(tool, /obj/item/chainsaw))
var/obj/item/mounted_chainsaw/new_arm = new(target)
target_zone == BODY_ZONE_R_ARM ? target.put_in_r_hand(new_arm) : target.put_in_l_hand(new_arm)
return 1
diff --git a/code/modules/uplink/uplink_items/uplink_dangerous.dm b/code/modules/uplink/uplink_items/uplink_dangerous.dm
index 99c9c505c0..7d96390115 100644
--- a/code/modules/uplink/uplink_items/uplink_dangerous.dm
+++ b/code/modules/uplink/uplink_items/uplink_dangerous.dm
@@ -109,7 +109,7 @@
name = "Double-Bladed Energy Sword"
desc = "The double-bladed energy sword does slightly more damage than a standard energy sword and will deflect \
all energy projectiles, but requires two hands to wield."
- item = /obj/item/twohanded/dualsaber
+ item = /obj/item/dualsaber
player_minimum = 25
cost = 16
exclude_modes = list(/datum/game_mode/nuclear/clown_ops)
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index e6cf779162..fca137a87d 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -658,6 +658,10 @@ GLOBAL_LIST_EMPTY(vending_products)
return
return ..()
+/obj/machinery/vending/ui_base_html(html)
+ var/datum/asset/spritesheet/assets = get_asset_datum(/datum/asset/spritesheet/vending)
+ . = replacetext(html, "", assets.css_tag())
+
/obj/machinery/vending/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm
index 1ce0b6cfaf..9093d55b0d 100644
--- a/code/modules/vending/liberation_toy.dm
+++ b/code/modules/vending/liberation_toy.dm
@@ -20,7 +20,7 @@
/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot = 10,
/obj/item/ammo_box/foambox/riot = 20,
/obj/item/toy/katana = 10,
- /obj/item/twohanded/dualsaber/toy = 5,
+ /obj/item/dualsaber/toy = 5,
/obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm
index d628c888a5..c5095ebff8 100644
--- a/code/modules/vending/toys.dm
+++ b/code/modules/vending/toys.dm
@@ -21,7 +21,7 @@
/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted = 10,
/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 10,
/obj/item/toy/katana = 10,
- /obj/item/twohanded/dualsaber/toy = 5)
+ /obj/item/dualsaber/toy = 5)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/donksoft
diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm
index 76ef5e6f23..8552d52b04 100644
--- a/code/modules/vending/wardrobes.dm
+++ b/code/modules/vending/wardrobes.dm
@@ -309,7 +309,7 @@
/obj/item/cartridge/janitor = 3,
/obj/item/clothing/gloves/color/black = 2,
/obj/item/clothing/head/soft/purple = 2,
- /obj/item/twohanded/broom = 2,
+ /obj/item/broom = 2,
/obj/item/paint/paint_remover = 2,
/obj/item/melee/flyswatter = 2,
/obj/item/flashlight = 2,
diff --git a/html/changelog.html b/html/changelog.html
index 3ff7bdb144..66f8141f28 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -50,6 +50,82 @@
-->
+
02 July 2020
+
Ghommie updated:
+
+
Fixing a few issues with twohanded items.
+
Unum decks now work correctly.
+
Abductor walls are once again buildable with alien alloy.
+
+
Trilbyspaceclone updated:
+
+
Makes pride and envy ruin a bit smaller!
+
Pride now has rings, lipstick wigs and silver walls/door making a nice and polished look then cyan blue walls.
+
more trash and better dagger placement on food ruin
+
Snowboim now has snowballs and toy gifts for the two skeles daw!
+
Beach boim now has carp light branding beer, as well as soap!
+
Greed ruin now uses nice slick walls and carpet!
+
Founten ruin looks a lot better with its carpets and well maintained fluff things, but walls suffered and no longer can salvage ruined metal...
+
Alien nest has a bit more glowy floors of resin looking a bit more lived in by the drones. As well as the "door" now being see through resin rather then the thicker stuff that you cant see through
+
Pizza party has a few more gifts, some candy and snap pops yay!
+
Sloth ruin is about 15~ tiles shorter, has and has more fruit for a bowl. How lazy!
+
+
silicons updated:
+
+
bohbombing is a thing now
+
+
+
30 June 2020
+
Fikou updated:
+
+
spray cans, airlock painters, and decal painters added to engineering/service/autolathe (where applicable)
+
+
Ghommie updated:
+
+
Fixed a gap on the male insect anthro torso sprite when facing south.
+
Fixed mecha ID access not being removable.
+
Fixed a peeve with the hypno trance status effect not sanitizing some heard hypnosis inputs (i.e. custom say messages like say"honks*clownem ipsum dolor")
+
fixed an issue about using stacks with only 1 amount left.
+
Fixed a peeve on attack messages against carbons/humans.
+
Fixed missing hypnochair board.
+
Fixed material walls and tiles. My bad on that port.
+
+
Ghommie (inspired by MrDoomBringer's work on tgstation) updated:
+
+
New check skills UI.
+
+
Ghommie (porting PRs by XTDM, coiax, MrDoomBringer) updated:
+
+
Random Events now have a follow link for ghosts!
+
Adds the Spontaneous Brain Trauma to the event pool. Sometimes your brain just goes a little wrong.
+
Sometimes a low level cloning pod will make errors in replicating your brain, leaving you with a mild brain trauma.
+
When a person is cloned, any mental traumas are cloned as well.
+
The wizard federation announces that the Curse of Madness is out of beta and is now available for purchase for 4 points. It causes long-lasting brain traumas to all inhabitants of a target space station.
+
The wizard federation declines responsibility for any self-harm caused by curses cast while inside the targeted station.
+
Due to the extensive testing of the Curse of Madness some unique new trauma types have appeared across Nanotrasen-controlled space.
+
Curse of Madness can now be triggered by a wizard's Summon Events, at the same chance as Summon Guns or Summon Magic.
+
When an admin triggers Curse of Madness manually, they can specify their own dark truth to horrify the station with.
+
+
nightred updated:
+
+
Created two_handed component
+
Updated all existing two handed items to use the new component
+
+
silicons updated:
+
+
typing indicators no longer generates duplicate message boxes.
+
config errors now have line numbers.
+
outgoing mentorpms are now blue instead of green for the sender.
+
*squish
+
+
timothyteakettle updated:
+
+
you can now select your tongue and speech verb in the character customization menu!
+
skeleton is now split into two more types, greater and lesser
+
non-carbon blood is now not white
+
fixed a bunch of grammar/spelling mistakes
+
+
29 June 2020
b1tt3r1n0 updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index a65ba322e7..921f9ce233 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -26137,3 +26137,74 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- balance: Made teratomas from sdgf less powergame
timothyteakettle:
- bugfix: slimes no longer have white blood by default
+2020-06-30:
+ Fikou:
+ - rscadd: spray cans, airlock painters, and decal painters added to engineering/service/autolathe
+ (where applicable)
+ Ghommie:
+ - bugfix: Fixed a gap on the male insect anthro torso sprite when facing south.
+ - bugfix: Fixed mecha ID access not being removable.
+ - bugfix: Fixed a peeve with the hypno trance status effect not sanitizing some
+ heard hypnosis inputs (i.e. custom say messages like say"honks*clownem ipsum
+ dolor")
+ - bugfix: fixed an issue about using stacks with only 1 amount left.
+ - bugfix: Fixed a peeve on attack messages against carbons/humans.
+ - bugfix: Fixed missing hypnochair board.
+ - bugfix: Fixed material walls and tiles. My bad on that port.
+ Ghommie (inspired by MrDoomBringer's work on tgstation):
+ - rscadd: New check skills UI.
+ Ghommie (porting PRs by XTDM, coiax, MrDoomBringer):
+ - tweak: Random Events now have a follow link for ghosts!
+ - rscadd: Adds the Spontaneous Brain Trauma to the event pool. Sometimes your brain
+ just goes a little wrong.
+ - rscadd: Sometimes a low level cloning pod will make errors in replicating your
+ brain, leaving you with a mild brain trauma.
+ - rscadd: When a person is cloned, any mental traumas are cloned as well.
+ - rscadd: The wizard federation announces that the Curse of Madness is out of beta
+ and is now available for purchase for 4 points. It causes long-lasting brain
+ traumas to all inhabitants of a target space station.
+ - rscadd: The wizard federation declines responsibility for any self-harm caused
+ by curses cast while inside the targeted station.
+ - rscadd: Due to the extensive testing of the Curse of Madness some unique new trauma
+ types have appeared across Nanotrasen-controlled space.
+ - rscadd: Curse of Madness can now be triggered by a wizard's Summon Events, at
+ the same chance as Summon Guns or Summon Magic.
+ - admin: When an admin triggers Curse of Madness manually, they can specify their
+ own dark truth to horrify the station with.
+ nightred:
+ - code_imp: Created two_handed component
+ - refactor: Updated all existing two handed items to use the new component
+ silicons:
+ - bugfix: typing indicators no longer generates duplicate message boxes.
+ - rscadd: config errors now have line numbers.
+ - tweak: outgoing mentorpms are now blue instead of green for the sender.
+ - soundadd: '*squish'
+ timothyteakettle:
+ - rscadd: you can now select your tongue and speech verb in the character customization
+ menu!
+ - rscadd: skeleton is now split into two more types, greater and lesser
+ - bugfix: non-carbon blood is now not white
+ - spellcheck: fixed a bunch of grammar/spelling mistakes
+2020-07-02:
+ Ghommie:
+ - bugfix: Fixing a few issues with twohanded items.
+ - bugfix: Unum decks now work correctly.
+ - bugfix: Abductor walls are once again buildable with alien alloy.
+ Trilbyspaceclone:
+ - tweak: Makes pride and envy ruin a bit smaller!
+ - rscadd: Pride now has rings, lipstick wigs and silver walls/door making a nice
+ and polished look then cyan blue walls.
+ - rscadd: more trash and better dagger placement on food ruin
+ - rscadd: Snowboim now has snowballs and toy gifts for the two skeles daw!
+ - tweak: Beach boim now has carp light branding beer, as well as soap!
+ - tweak: Greed ruin now uses nice slick walls and carpet!
+ - tweak: Founten ruin looks a lot better with its carpets and well maintained fluff
+ things, but walls suffered and no longer can salvage ruined metal...
+ - rscadd: Alien nest has a bit more glowy floors of resin looking a bit more lived
+ in by the drones. As well as the "door" now being see through resin rather then
+ the thicker stuff that you cant see through
+ - rscadd: Pizza party has a few more gifts, some candy and snap pops yay!
+ - balance: Sloth ruin is about 15~ tiles shorter, has and has more fruit for a bowl.
+ How lazy!
+ silicons:
+ - bugfix: bohbombing is a thing now
diff --git a/html/changelogs/AutoChangeLog-pr-12390.yml b/html/changelogs/AutoChangeLog-pr-12390.yml
deleted file mode 100644
index 372d14214a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12390.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-author: "Ghommie (porting PRs by XTDM, coiax, MrDoomBringer)"
-delete-after: True
-changes:
- - tweak: "Random Events now have a follow link for ghosts!"
- - rscadd: "Adds the Spontaneous Brain Trauma to the event pool. Sometimes your brain just goes a little wrong."
- - rscadd: "Sometimes a low level cloning pod will make errors in replicating your brain,
-leaving you with a mild brain trauma."
- - rscadd: "When a person is cloned, any mental traumas are cloned as well."
- - rscadd: "The wizard federation announces that the Curse of Madness is out of beta and is now available for purchase for 4 points. It causes long-lasting brain traumas to all inhabitants of a target space station."
- - rscadd: "The wizard federation declines responsibility for any self-harm caused by curses cast while inside the targeted station."
- - rscadd: "Due to the extensive testing of the Curse of Madness some unique new trauma types have appeared across Nanotrasen-controlled space."
- - rscadd: "Curse of Madness can now be triggered by a wizard's Summon Events,
-at the same chance as Summon Guns or Summon Magic."
- - admin: "When an admin triggers Curse of Madness manually, they can
-specify their own dark truth to horrify the station with."
diff --git a/html/changelogs/AutoChangeLog-pr-12416.yml b/html/changelogs/AutoChangeLog-pr-12416.yml
deleted file mode 100644
index 25d295457a..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12416.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie (inspired by MrDoomBringer's work on tgstation)"
-delete-after: True
-changes:
- - rscadd: "New check skills UI."
diff --git a/html/changelogs/AutoChangeLog-pr-12595.yml b/html/changelogs/AutoChangeLog-pr-12595.yml
deleted file mode 100644
index 20d018daf5..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12595.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "silicons"
-delete-after: True
-changes:
- - soundadd: "*squish"
diff --git a/html/changelogs/AutoChangeLog-pr-12598.yml b/html/changelogs/AutoChangeLog-pr-12598.yml
deleted file mode 100644
index 358bc96d81..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12598.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "timothyteakettle"
-delete-after: True
-changes:
- - rscadd: "you can now select your tongue and speech verb in the character customization menu!"
- - rscadd: "skeleton is now split into two more types, greater and lesser"
diff --git a/html/changelogs/AutoChangeLog-pr-12605.yml b/html/changelogs/AutoChangeLog-pr-12605.yml
deleted file mode 100644
index 1c514f15ac..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12605.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "silicons"
-delete-after: True
-changes:
- - rscadd: "config errors now have line numbers."
diff --git a/html/changelogs/AutoChangeLog-pr-12622.yml b/html/changelogs/AutoChangeLog-pr-12622.yml
deleted file mode 100644
index 9454154f66..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12622.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "timothyteakettle"
-delete-after: True
-changes:
- - spellcheck: "fixed a bunch of grammar/spelling mistakes"
diff --git a/html/changelogs/AutoChangeLog-pr-12623.yml b/html/changelogs/AutoChangeLog-pr-12623.yml
deleted file mode 100644
index 1e4b9638ca..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12623.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "silicons"
-delete-after: True
-changes:
- - tweak: "outgoing mentorpms are now blue instead of green for the sender."
diff --git a/html/changelogs/AutoChangeLog-pr-12626.yml b/html/changelogs/AutoChangeLog-pr-12626.yml
deleted file mode 100644
index 4fd9d4d2eb..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12626.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "silicons"
-delete-after: True
-changes:
- - bugfix: "typing indicators no longer generates duplicate message boxes."
diff --git a/html/changelogs/AutoChangeLog-pr-12629.yml b/html/changelogs/AutoChangeLog-pr-12629.yml
deleted file mode 100644
index 37ebb5d123..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12629.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Fikou"
-delete-after: True
-changes:
- - rscadd: "spray cans, airlock painters, and decal painters added to engineering/service/autolathe (where applicable)"
diff --git a/html/changelogs/AutoChangeLog-pr-12630.yml b/html/changelogs/AutoChangeLog-pr-12630.yml
new file mode 100644
index 0000000000..2692d13c99
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-12630.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - rscadd: "You can't (un)equip garments on/from obscured inventory slots anymore."
diff --git a/html/changelogs/AutoChangeLog-pr-12631.yml b/html/changelogs/AutoChangeLog-pr-12631.yml
new file mode 100644
index 0000000000..5ecdfbcaf0
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-12631.yml
@@ -0,0 +1,4 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - balance: "Lowered shaft miners' paycheck, they have other ways to make cash."
diff --git a/html/changelogs/AutoChangeLog-pr-12632.yml b/html/changelogs/AutoChangeLog-pr-12632.yml
new file mode 100644
index 0000000000..8343205ac9
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-12632.yml
@@ -0,0 +1,5 @@
+author: "Ghommie"
+delete-after: True
+changes:
+ - balance: "The stamina cost multiplier for swinging melee weapons against mobs has been brought back to 1 from 0.8"
+ - balance: "The stamina cost for throwing mobs now scales with their mob size variable."
diff --git a/html/changelogs/AutoChangeLog-pr-12645.yml b/html/changelogs/AutoChangeLog-pr-12645.yml
deleted file mode 100644
index ce62b0ae88..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12645.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - bugfix: "Fixed a gap on the male insect anthro torso sprite when facing south."
- - bugfix: "Fixed mecha ID access not being removable."
- - bugfix: "Fixed a peeve with the hypno trance status effect not sanitizing some heard hypnosis inputs (i.e. custom say messages like say\"honks*clownem ipsum dolor\")"
- - bugfix: "fixed an issue about using stacks with only 1 amount left."
- - bugfix: "Fixed a peeve on attack messages against carbons/humans."
- - bugfix: "Fixed missing hypnochair board."
- - bugfix: "Fixed material walls and tiles. My bad on that port."
diff --git a/html/changelogs/AutoChangeLog-pr-12657.yml b/html/changelogs/AutoChangeLog-pr-12657.yml
new file mode 100644
index 0000000000..bf14281695
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-12657.yml
@@ -0,0 +1,4 @@
+author: "bunny232"
+delete-after: True
+changes:
+ - tweak: "Witchhunter hat no longer obscures mask ears ,eyes, face and mouth"
diff --git a/html/changelogs/AutoChangeLog-pr-12661.yml b/html/changelogs/AutoChangeLog-pr-12661.yml
new file mode 100644
index 0000000000..832d0fcd24
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-12661.yml
@@ -0,0 +1,7 @@
+author: "LetterN"
+delete-after: True
+changes:
+ - tweak: "Ported some tags from tgui-3.0 to Vending.js"
+ - bugfix: "vending icons"
+ - bugfix: "r&d icons"
+ - bugfix: "chem master icons"
diff --git a/html/changelogs/AutoChangeLog-pr-12644.yml b/html/changelogs/AutoChangeLog-pr-12666.yml
similarity index 52%
rename from html/changelogs/AutoChangeLog-pr-12644.yml
rename to html/changelogs/AutoChangeLog-pr-12666.yml
index 5e291eb25d..00542d519d 100644
--- a/html/changelogs/AutoChangeLog-pr-12644.yml
+++ b/html/changelogs/AutoChangeLog-pr-12666.yml
@@ -1,4 +1,4 @@
author: "timothyteakettle"
delete-after: True
changes:
- - bugfix: "non-carbon blood is now not white"
+ - bugfix: "bloodpacks initialise correctly now"
diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi
index 27de829f6e..cf7a87d28b 100644
Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ
diff --git a/interface/skin.dmf b/interface/skin.dmf
index 8d68336754..cf49f0f30f 100644
--- a/interface/skin.dmf
+++ b/interface/skin.dmf
@@ -80,6 +80,7 @@ window "mainwindow"
anchor2 = none
background-color = #272727
is-visible = false
+ auto-format = false
saved-params = ""
elem "tooltip"
type = BROWSER
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 57cbdb6beb..47eef6a820 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -41,20 +41,6 @@
/datum/status_effect/chem/breast_enlarger/on_apply()//Removes clothes, they're too small to contain you. You belong to space now.
log_reagent("FERMICHEM: [owner]'s breasts has reached comical sizes. ID: [owner.key]")
- var/mob/living/carbon/human/H = owner
- var/message = FALSE
- if(H.w_uniform)
- H.dropItemToGround(H.w_uniform, TRUE)
- message = TRUE
- if(H.wear_suit)
- H.dropItemToGround(H.wear_suit, TRUE)
- message = TRUE
- if(message)
- playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1)
- H.visible_message("[H]'s chest suddenly bursts forth, ripping their clothes off!'", \
- "Your clothes give, ripping into peices under the strain of your swelling breasts! Unless you manage to reduce the size of your breasts, there's no way you're going to be able to put anything on over these melons..!")
- else
- to_chat(H, "Your bountiful bosom is so rich with mass, you seriously doubt you'll be able to fit any clothes over it.")
return ..()
/datum/status_effect/chem/breast_enlarger/tick()//If you try to wear clothes, you fail. Slows you down if you're comically huge
@@ -64,16 +50,6 @@
H.remove_status_effect(src)
return
moveCalc = 1+((round(B.cached_size) - 9)/3) //Afffects how fast you move, and how often you can click.
- var/message = FALSE
- if(H.w_uniform)
- H.dropItemToGround(H.w_uniform, TRUE)
- message = TRUE
- if(H.wear_suit)
- H.dropItemToGround(H.wear_suit, TRUE)
- message = TRUE
- if(message)
- playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1)
- to_chat(H, "Your enormous breasts are way too large to fit anything over them!")
if(last_checked_size != B.cached_size)
H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/breast_hypertrophy, multiplicative_slowdown = moveCalc)
@@ -115,20 +91,6 @@
/datum/status_effect/chem/penis_enlarger/on_apply()//Removes clothes, they're too small to contain you. You belong to space now.
log_reagent("FERMICHEM: [owner]'s dick has reached comical sizes. ID: [owner.key]")
- var/mob/living/carbon/human/H = owner
- var/message = FALSE
- if(H.w_uniform)
- H.dropItemToGround(H.w_uniform, TRUE)
- message = TRUE
- if(H.wear_suit)
- H.dropItemToGround(H.wear_suit, TRUE)
- message = TRUE
- if(message)
- playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1)
- H.visible_message("[H]'s schlong suddenly bursts forth, ripping their clothes off!'", \
- "Your clothes give, ripping into peices under the strain of your swelling pecker! Unless you manage to reduce the size of your emancipated trouser snake, there's no way you're going to be able to put anything on over this girth..!")
- else
- to_chat(H, "Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.")
return ..()
@@ -140,18 +102,6 @@
return
moveCalc = 1+((round(P.length) - 21)/3) //effects how fast you can move
bloodCalc = 1+((round(P.length) - 21)/15) //effects how much blood you need (I didn' bother adding an arousal check because I'm spending too much time on this organ already.)
-
- var/message = FALSE
- if(H.w_uniform)
- H.dropItemToGround(H.w_uniform, TRUE)
- message = TRUE
- if(H.wear_suit)
- H.dropItemToGround(H.wear_suit, TRUE)
- message = TRUE
- if(message)
- playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1)
- to_chat(H, "Your enormous package is way to large to fit anything over!")
-
if(P.length < 22 && H.has_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy))
to_chat(owner, "Your rascally willy has become a more managable size, liberating your movements.")
H.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/penis_hypertrophy)
diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm
index 8ecc6151a1..d428fc290a 100644
--- a/modular_citadel/code/modules/client/loadout/__donator.dm
+++ b/modular_citadel/code/modules/client/loadout/__donator.dm
@@ -220,7 +220,7 @@
/datum/gear/torisword
name = "Rainbow Zweihander"
category = SLOT_IN_BACKPACK
- path = /obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow
+ path = /obj/item/dualsaber/hypereutactic/toy/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/darksabre
diff --git a/tgstation.dme b/tgstation.dme
index 2d5a95e4a6..30eb73d00f 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -449,6 +449,7 @@
#include "code\datums\components\swarming.dm"
#include "code\datums\components\tackle.dm"
#include "code\datums\components\thermite.dm"
+#include "code\datums\components\twohanded.dm"
#include "code\datums\components\uplink.dm"
#include "code\datums\components\virtual_reality.dm"
#include "code\datums\components\wearertargeting.dm"
@@ -951,13 +952,16 @@
#include "code\game\objects\items\airlock_painter.dm"
#include "code\game\objects\items\apc_frame.dm"
#include "code\game\objects\items\balls.dm"
+#include "code\game\objects\items\binoculars.dm"
#include "code\game\objects\items\blueprints.dm"
#include "code\game\objects\items\body_egg.dm"
#include "code\game\objects\items\bodybag.dm"
#include "code\game\objects\items\boombox.dm"
+#include "code\game\objects\items\broom.dm"
#include "code\game\objects\items\candle.dm"
#include "code\game\objects\items\cardboard_cutouts.dm"
#include "code\game\objects\items\cards_ids.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"
@@ -975,8 +979,11 @@
#include "code\game\objects\items\dice.dm"
#include "code\game\objects\items\dna_injector.dm"
#include "code\game\objects\items\documents.dm"
+#include "code\game\objects\items\dualsaber.dm"
#include "code\game\objects\items\eightball.dm"
+#include "code\game\objects\items\electrostaff.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"
@@ -995,6 +1002,7 @@
#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"
@@ -1011,6 +1019,7 @@
#include "code\game\objects\items\shrapnel.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\taster.dm"
#include "code\game\objects\items\teleportation.dm"
@@ -1019,7 +1028,6 @@
#include "code\game\objects\items\theft_tools.dm"
#include "code\game\objects\items\toys.dm"
#include "code\game\objects\items\trash.dm"
-#include "code\game\objects\items\twohanded.dm"
#include "code\game\objects\items\vending_items.dm"
#include "code\game\objects\items\weaponry.dm"
#include "code\game\objects\items\circuitboards\circuitboard.dm"