diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
index 862c745f81..a361fd59c0 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,
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..0229068235 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm
@@ -367,7 +367,7 @@
/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
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 90f1cb9b3a..cd6cefc8ad 100644
--- a/_maps/RandomZLevels/away_mission/SnowCabin.dmm
+++ b/_maps/RandomZLevels/away_mission/SnowCabin.dmm
@@ -1459,7 +1459,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 7457379bcd..83d1227c5e 100644
--- a/_maps/RandomZLevels/away_mission/moonoutpost19.dmm
+++ b/_maps/RandomZLevels/away_mission/moonoutpost19.dmm
@@ -4845,7 +4845,7 @@
},
/area/awaymission/moonoutpost19/research)
"jq" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
desc = "A plastic potted plant.";
pixel_y = 3
},
@@ -7035,7 +7035,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 4f85d084b5..d2b6099eb1 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
},
@@ -1777,7 +1777,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{
@@ -4149,7 +4149,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{
@@ -4244,7 +4244,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"
},
@@ -4725,7 +4725,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{
@@ -5329,7 +5329,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{
@@ -5686,7 +5686,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{
@@ -6164,7 +6164,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
},
@@ -6201,7 +6201,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 b4ba9869ed..10992c70bf 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,
@@ -5165,7 +5165,7 @@
},
/area/awaymission/undergroundoutpost45/gateway)
"kh" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/obj/effect/decal/cleanable/dirt,
@@ -6787,7 +6787,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{
@@ -8374,7 +8374,7 @@
},
/area/awaymission/undergroundoutpost45/research)
"pl" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/obj/effect/decal/cleanable/dirt,
@@ -9435,7 +9435,7 @@
},
/area/awaymission/undergroundoutpost45/engineering)
"rk" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
layer = 5
},
/obj/effect/turf_decal/tile/yellow{
@@ -12341,7 +12341,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 2902cf12c4..ed4a150e09 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -17770,7 +17770,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,
@@ -21108,7 +21108,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,
@@ -21669,7 +21669,7 @@
dir = 1;
pixel_y = -24
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-08"
},
/turf/open/floor/wood,
@@ -24226,7 +24226,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,
@@ -24275,7 +24275,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,
@@ -29832,7 +29832,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,
@@ -33921,7 +33921,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" = (
@@ -39086,7 +39086,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
},
@@ -48355,8 +48355,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" = (
@@ -52086,7 +52086,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" = (
@@ -53806,7 +53806,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,
@@ -53939,7 +53939,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,
@@ -54285,7 +54285,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{
@@ -54483,7 +54483,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,
@@ -56444,7 +56444,7 @@
/turf/open/floor/plasteel,
/area/security/processing)
"lPr" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/turf/open/floor/plasteel,
@@ -58024,7 +58024,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 2a5e73676f..8c558e000e 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{
@@ -22924,7 +22924,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,
@@ -23387,7 +23387,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,
@@ -25072,7 +25072,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,
@@ -27529,7 +27529,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" = (
@@ -27564,7 +27564,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21";
pixel_y = 3
},
@@ -27984,7 +27984,7 @@
dir = 4;
light_color = "#c1caff"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-20";
pixel_y = 3
},
@@ -28909,7 +28909,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,
@@ -32537,7 +32537,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,
@@ -32857,7 +32857,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,
@@ -33837,7 +33837,7 @@
/turf/open/floor/plating,
/area/construction)
"bvf" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/carpet{
@@ -38797,7 +38797,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,
@@ -39263,7 +39263,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-20";
pixel_y = 3
},
@@ -39608,7 +39608,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,
@@ -41832,7 +41832,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{
@@ -45563,7 +45563,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
},
@@ -47480,7 +47480,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" = (
@@ -47682,7 +47682,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,
@@ -49182,7 +49182,7 @@
/obj/effect/turf_decal/tile/blue{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-06"
},
/obj/machinery/airalarm{
@@ -53310,7 +53310,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" = (
@@ -53322,7 +53322,7 @@
dir = 4;
pixel_x = -28
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel,
/area/quartermaster/office)
"cjB" = (
@@ -53857,8 +53857,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,
@@ -58882,7 +58882,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
},
@@ -63867,7 +63867,7 @@
/obj/structure/sign/warning/securearea{
pixel_x = -32
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "applebush"
},
/obj/machinery/airalarm{
@@ -66935,7 +66935,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
},
@@ -71089,7 +71089,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 8a4b5f8130..0d3665c58d 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
},
@@ -64990,7 +64990,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
@@ -65010,7 +65010,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
@@ -66000,7 +66000,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" = (
@@ -67333,7 +67333,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
@@ -68630,7 +68630,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)
@@ -69228,7 +69228,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{
@@ -69270,7 +69270,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{
@@ -69303,7 +69303,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;
@@ -69790,7 +69790,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
@@ -70406,7 +70406,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" = (
@@ -70424,7 +70424,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" = (
@@ -70439,7 +70439,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)
@@ -70602,7 +70602,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
@@ -70617,7 +70617,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
@@ -71556,7 +71556,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;
@@ -72638,7 +72638,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
@@ -72662,7 +72662,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;
@@ -72683,7 +72683,7 @@
/area/library)
"ctM" = (
/obj/machinery/light,
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light_switch{
pixel_y = -26
},
@@ -72691,7 +72691,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" = (
@@ -72938,7 +72938,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{
@@ -73351,7 +73351,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
},
@@ -73369,7 +73369,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
},
@@ -74250,7 +74250,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" = (
@@ -74329,7 +74329,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
},
@@ -74382,7 +74382,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -74399,7 +74399,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
},
@@ -74431,7 +74431,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/effect/turf_decal/stripes/line{
dir = 5
},
@@ -74528,7 +74528,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,
@@ -74586,7 +74586,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,
@@ -74729,7 +74729,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{
@@ -75079,7 +75079,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
@@ -75952,7 +75952,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
},
@@ -76176,8 +76176,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" = (
@@ -77125,13 +77125,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
},
@@ -77178,7 +77178,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
},
@@ -77555,7 +77555,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
},
@@ -77632,7 +77632,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
},
@@ -79245,7 +79245,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
@@ -79939,7 +79939,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" = (
@@ -80183,7 +80183,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"
},
@@ -80339,7 +80339,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,
@@ -80360,7 +80360,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)
@@ -80420,7 +80420,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)
@@ -80460,7 +80460,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)
@@ -80523,7 +80523,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
@@ -80777,7 +80777,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)
@@ -80863,7 +80863,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
},
@@ -80927,7 +80927,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
@@ -80938,7 +80938,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
@@ -81017,7 +81017,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" = (
@@ -83198,7 +83198,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
@@ -83331,7 +83331,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
@@ -83972,7 +83972,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
},
@@ -85062,7 +85062,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)
@@ -85079,7 +85079,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,
@@ -85341,7 +85341,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
},
@@ -85480,7 +85480,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
},
@@ -85595,7 +85595,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
@@ -85827,7 +85827,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;
@@ -85965,7 +85965,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)
@@ -86189,7 +86189,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
@@ -86405,7 +86405,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{
@@ -86414,7 +86414,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{
@@ -86491,7 +86491,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{
@@ -86500,7 +86500,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";
@@ -86708,7 +86708,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
@@ -87252,7 +87252,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{
@@ -87618,7 +87618,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
@@ -87879,7 +87879,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)
@@ -88051,7 +88051,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
},
@@ -89392,7 +89392,7 @@
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cVM" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 1
},
@@ -89583,7 +89583,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{
@@ -89636,7 +89636,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,
@@ -89661,7 +89661,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{
@@ -89702,7 +89702,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,
@@ -90023,7 +90023,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,
@@ -90425,7 +90425,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;
@@ -90472,7 +90472,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{
@@ -90518,7 +90518,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,
@@ -90591,7 +90591,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{
@@ -90634,7 +90634,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,
@@ -91132,7 +91132,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)
@@ -91261,7 +91261,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
@@ -91681,7 +91681,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
@@ -92229,7 +92229,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,
@@ -92497,7 +92497,7 @@
/obj/machinery/light{
dir = 1
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/status_display/evac{
pixel_y = 32
},
@@ -94107,7 +94107,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)
@@ -94325,7 +94325,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)
@@ -94614,7 +94614,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,
@@ -94792,7 +94792,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
},
@@ -94854,7 +94854,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)
@@ -95054,7 +95054,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
},
@@ -95515,7 +95515,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,
@@ -95527,7 +95527,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)
@@ -95570,7 +95570,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" = (
@@ -95746,7 +95746,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
},
@@ -96009,7 +96009,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)
@@ -96617,7 +96617,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
@@ -97570,7 +97570,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)
@@ -97590,7 +97590,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,
@@ -97895,7 +97895,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
},
@@ -98014,7 +98014,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{
@@ -98030,7 +98030,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{
@@ -98377,7 +98377,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)
@@ -99026,7 +99026,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)
@@ -99171,7 +99171,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
@@ -99559,7 +99559,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
},
@@ -99638,7 +99638,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
},
@@ -99715,7 +99715,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
},
@@ -101232,7 +101232,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
},
@@ -101881,7 +101881,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
},
@@ -102033,7 +102033,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" = (
@@ -102294,7 +102294,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,
@@ -103256,7 +103256,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)
@@ -103662,7 +103662,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
@@ -103755,7 +103755,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
@@ -104261,7 +104261,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" = (
@@ -105746,7 +105746,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
@@ -105792,7 +105792,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
},
@@ -106538,7 +106538,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)
@@ -106700,7 +106700,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"
},
@@ -107193,7 +107193,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
@@ -107255,7 +107255,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
},
@@ -109118,7 +109118,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
@@ -109509,7 +109509,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" = (
@@ -109796,7 +109796,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"
},
@@ -110762,7 +110762,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" = (
@@ -112291,7 +112291,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
@@ -112470,7 +112470,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
},
@@ -112766,7 +112766,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
@@ -113170,7 +113170,7 @@
dir = 4
},
/obj/effect/turf_decal/delivery,
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/turf/open/floor/plasteel,
@@ -113418,7 +113418,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
},
@@ -113444,7 +113444,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
@@ -113556,7 +113556,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" = (
@@ -113879,7 +113879,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
@@ -114460,7 +114460,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" = (
@@ -114468,7 +114468,7 @@
dir = 1;
pixel_y = -22
},
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/wood{
icon_state = "wood-broken3"
},
@@ -115250,7 +115250,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
@@ -115330,7 +115330,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,
@@ -115381,7 +115381,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
@@ -115778,7 +115778,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
},
@@ -115804,7 +115804,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" = (
@@ -115839,7 +115839,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" = (
@@ -116218,7 +116218,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
},
@@ -116228,7 +116228,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
},
@@ -116238,7 +116238,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
},
@@ -116295,7 +116295,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
},
@@ -117988,14 +117988,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"
},
@@ -118062,7 +118062,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
@@ -118086,7 +118086,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,
@@ -118150,7 +118150,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,
@@ -118402,7 +118402,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
},
@@ -118469,7 +118469,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
},
@@ -118490,7 +118490,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
@@ -118556,7 +118556,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,
@@ -118622,7 +118622,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,
@@ -118949,7 +118949,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)
@@ -119529,11 +119529,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" = (
@@ -119604,7 +119604,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;
@@ -119643,7 +119643,7 @@
},
/area/chapel/main)
"dWR" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/turf/open/floor/plasteel{
dir = 4;
icon_state = "chapel"
@@ -120183,7 +120183,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,
@@ -120399,7 +120399,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"
@@ -120423,7 +120423,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" = (
@@ -120561,7 +120561,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,
@@ -120660,7 +120660,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)
@@ -120669,7 +120669,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)
@@ -120943,7 +120943,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,
@@ -121375,7 +121375,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
},
@@ -122169,7 +122169,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" = (
@@ -122275,7 +122275,7 @@
},
/area/chapel/main)
"ebZ" = (
-/obj/item/twohanded/required/kirbyplants/random,
+/obj/item/kirbyplants/random,
/obj/machinery/light{
dir = 4
},
@@ -122563,7 +122563,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
@@ -122588,7 +122588,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,
@@ -123385,7 +123385,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
},
@@ -123541,7 +123541,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
},
@@ -123587,7 +123587,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
},
@@ -123653,7 +123653,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"
@@ -124556,7 +124556,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
@@ -125020,7 +125020,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;
@@ -126330,7 +126330,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" = (
@@ -126572,7 +126572,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 c08670c2c0..a143bf9bdf 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,
@@ -44940,7 +44940,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{
@@ -45770,7 +45770,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{
@@ -51026,7 +51026,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{
@@ -51122,7 +51122,7 @@
dir = 8;
pixel_x = 24
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/purple,
@@ -54628,7 +54628,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,
@@ -54723,7 +54723,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,
@@ -59526,7 +59526,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,
@@ -64235,7 +64235,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
},
@@ -68828,7 +68828,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
@@ -71160,7 +71160,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{
@@ -72340,7 +72340,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{
@@ -74181,7 +74181,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{
@@ -74247,7 +74247,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{
@@ -79798,7 +79798,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{
@@ -82832,7 +82832,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 ebdda21c5e..5e065a6a11 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{
@@ -2351,7 +2351,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{
@@ -3287,7 +3287,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 +3324,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
@@ -5832,7 +5832,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{
@@ -6176,7 +6176,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{
@@ -7273,7 +7273,7 @@
/turf/closed/wall,
/area/hallway/primary/central)
"alm" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/light{
@@ -7329,7 +7329,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{
@@ -8019,7 +8019,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,
@@ -8681,7 +8681,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{
@@ -8752,7 +8752,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" = (
@@ -9097,7 +9097,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{
@@ -10813,7 +10813,7 @@
/turf/open/floor/plasteel,
/area/security/brig)
"aqP" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/firealarm{
@@ -11740,7 +11740,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{
@@ -11800,7 +11800,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{
@@ -13073,7 +13073,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
@@ -13712,7 +13712,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{
@@ -14297,7 +14297,7 @@
dir = 8;
pixel_x = 24
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/neutral,
@@ -15132,7 +15132,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,
@@ -17548,7 +17548,7 @@
/obj/machinery/light{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/effect/turf_decal/tile/red{
@@ -18278,7 +18278,7 @@
},
/area/engine/break_room)
"aDB" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/yellow{
@@ -18965,7 +18965,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{
@@ -19718,7 +19718,7 @@
/obj/structure/extinguisher_cabinet{
pixel_x = -26
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/camera{
@@ -20051,7 +20051,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,
@@ -20619,7 +20619,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{
@@ -20927,7 +20927,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{
@@ -20980,7 +20980,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,
@@ -22524,8 +22524,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
},
@@ -23415,7 +23415,7 @@
/turf/open/floor/grass,
/area/hydroponics)
"aMt" = (
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-22"
},
/obj/machinery/light{
@@ -23463,7 +23463,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,
@@ -23476,7 +23476,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{
@@ -24183,7 +24183,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{
@@ -24230,7 +24230,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{
@@ -25125,7 +25125,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{
@@ -25415,7 +25415,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{
@@ -26116,7 +26116,7 @@
/obj/structure/cable/white{
icon_state = "0-2"
},
-/obj/item/twohanded/required/kirbyplants{
+/obj/item/kirbyplants{
icon_state = "plant-21"
},
/obj/machinery/camera{
@@ -26673,7 +26673,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{
@@ -28339,7 +28339,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
@@ -28602,7 +28602,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{
@@ -30914,7 +30914,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,
@@ -33813,7 +33813,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{
@@ -33836,7 +33836,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
@@ -34532,7 +34532,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
@@ -34643,7 +34643,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
@@ -35939,7 +35939,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{
@@ -35982,7 +35982,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
@@ -41626,7 +41626,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,
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 395a2a2dde..2c0ee99d77 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{
@@ -17391,7 +17391,7 @@
/obj/machinery/light{
dir = 4
},
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "plant-10"
},
/turf/open/floor/wood,
@@ -22647,7 +22647,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,
@@ -27866,7 +27866,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,
@@ -28539,7 +28539,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,
@@ -29610,7 +29610,7 @@
c_tag = "Courtroom East";
dir = 8
},
-/obj/item/twohanded/required/kirbyplants{
+/obj//obj/item/kirbyplants{
icon_state = "applebush"
},
/turf/open/floor/wood,
@@ -32161,7 +32161,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,
@@ -32969,7 +32969,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" = (
@@ -34354,7 +34354,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,
@@ -34845,7 +34845,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,
@@ -36248,7 +36248,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,
@@ -43206,7 +43206,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/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 a3fcb066d6..2ec21c83b3 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/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/twohanded.dm b/code/datums/components/twohanded.dm
new file mode 100644
index 0000000000..e9f99a995e
--- /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 == ITEM_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/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 635522fa41..b883c2d31f 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1058,11 +1058,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/RCL.dm b/code/game/objects/items/RCL.dm
index f3ea461c74..8c840eef2b 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,25 @@
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()
+/// 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/ComponentInitialize()
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
-/obj/item/twohanded/rcl/attackby(obj/item/W, mob/user)
+/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 +96,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 +123,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 +131,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 +140,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 +165,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 +173,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 +181,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 +214,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 +230,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 +248,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 +264,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 +295,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 +313,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..cb07c22504
--- /dev/null
+++ b/code/game/objects/items/dualsaber.dm
@@ -0,0 +1,348 @@
+/*
+ * 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/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/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/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..8fb656cc11 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
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/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/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/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 ed6d9e31db..dd317c5b23 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -30,7 +30,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),
@@ -176,7 +176,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/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 7b201e7492..b04f94afad 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)
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/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..9bf765649b 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -755,7 +755,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/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/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/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/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/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/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 712e86ce27..c43a6de0e4 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -448,6 +448,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"
@@ -950,13 +951,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"
@@ -974,8 +978,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"
@@ -994,6 +1001,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"
@@ -1010,6 +1018,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"
@@ -1018,7 +1027,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"