diff --git a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm index 77df46175bc6..cfe522aeb415 100644 --- a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm @@ -1458,7 +1458,7 @@ /turf/open/floor/plasteel/mono, /area/ruin/beach/complex) "wV" = ( -/obj/item/kitchen/knife/hunting{ +/obj/item/melee/knife/hunting{ name = "machete"; pixel_y = 8; desc = "Space vines HATE this one simple trick!" diff --git a/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm b/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm index 998e43b9085a..971fde63cb03 100644 --- a/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_crashed_engineer.dmm @@ -1232,7 +1232,7 @@ /obj/machinery/atmospherics/components/unary/passive_vent{ dir = 1 }, -/obj/item/fireaxe{ +/obj/item/melee/axe/fire{ name = "rusty fire axe" }, /turf/open/floor/engine/airless, diff --git a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm index ab5a6bb58d84..ed6c353d26d7 100644 --- a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm @@ -204,7 +204,7 @@ /obj/structure/closet/cabinet, /obj/item/pneumatic_cannon/speargun, /obj/item/storage/backpack/magspear_quiver, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /turf/open/floor/wood, /area/ruin/beach) "kr" = ( @@ -529,7 +529,7 @@ dir = 6 }, /obj/structure/table/reinforced, -/obj/item/kitchen/knife/butcher, +/obj/item/melee/knife/butcher, /turf/open/floor/plastic, /area/ruin/beach) "wg" = ( @@ -1032,7 +1032,7 @@ "Os" = ( /obj/structure/table/wood/reinforced, /obj/effect/turf_decal/corner/opaque/pink/diagonal, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_y = 12; pixel_x = 9 }, @@ -1052,7 +1052,7 @@ /obj/structure/closet/cabinet, /obj/item/pneumatic_cannon/speargun, /obj/item/storage/backpack/magspear_quiver, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /obj/machinery/light/small/directional/east{ light_color = "#d8b1b1" }, @@ -1244,7 +1244,6 @@ /turf/open/water/beach/deep, /area/overmap_encounter/planetoid/beachplanet/explored) "Vt" = ( -/obj/item/nullrod/carp, /obj/structure/bed/dogbed, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood/walnut, diff --git a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm index 29ad64707d84..bf43f3ee9f94 100644 --- a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm @@ -193,7 +193,7 @@ /turf/open/water/beach, /area/overmap_encounter/planetoid/beachplanet/explored) "eZ" = ( -/obj/item/melee/roastingstick, +/obj/item/roastingstick, /turf/open/floor/wood{ light_range = 2 }, diff --git a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm index a751740c08a2..d1a3ff05cf04 100644 --- a/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_ocean_town.dmm @@ -1628,7 +1628,7 @@ /obj/effect/turf_decal/weather/sand{ dir = 5 }, -/obj/item/melee/roastingstick, +/obj/item/roastingstick, /obj/item/reagent_containers/food/snacks/sausage, /turf/open/floor/plating/dirt{ light_range = 2 @@ -2304,7 +2304,7 @@ /obj/effect/turf_decal/weather/sand{ dir = 8 }, -/obj/item/melee/roastingstick, +/obj/item/roastingstick, /turf/open/floor/plating/dirt{ light_range = 2 }, diff --git a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm index 2b2479ffe0fb..67ac69292603 100644 --- a/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_pirate_crash.dmm @@ -16,7 +16,7 @@ /area/ruin/beach/piratecrash/storage) "af" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/corner/opaque/black/diagonal, /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -37,7 +37,7 @@ }, /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/fishfry, -/obj/item/kitchen/knife/shiv{ +/obj/item/melee/knife/shiv{ pixel_x = -6; pixel_y = 5 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm index 82c054f8fabf..707be4573d13 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_crashed_holemaker.dmm @@ -887,7 +887,7 @@ /area/ruin/unpowered/crashed_holemaker) "oC" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /turf/open/floor/wood{ icon_state = "wood-broken7" }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm index 06d6a8e9fd27..d26f9458a943 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm @@ -332,7 +332,7 @@ /obj/item/restraints/legcuffs/beartrap, /obj/item/reagent_containers/glass/bottle/venom, /obj/item/reagent_containers/glass/bottle/curare, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/food/snacks/meat/slab/human, /obj/item/reagent_containers/food/snacks/meat/slab/human, @@ -384,7 +384,7 @@ /obj/effect/decal/cleanable/blood/gibs/torso, /obj/structure/safe, /obj/item/ammo_box/a12g/slug, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm index 4954a9a5aaf4..d560e98b2f20 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm @@ -367,23 +367,6 @@ initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin/unpowered) -"sf" = ( -/obj/structure/table/wood, -/obj/item/nullrod{ - block_chance = 50; - desc = "This massive chart appears to be the layout of a SolGov outpost. It's covered in marks, scribbles in a language you don't recognize, and several stains. It's unusually sturdy."; - icon_state = "blueprints"; - item_state = "blueprints"; - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'; - name = "facility blueprints"; - pixel_y = 10; - righthand_file = 'icons/mob/inhands/items_righthand.dmi'; - w_class = 5 - }, -/turf/open/floor/wood{ - initial_gas_mix = "ICEMOON_ATMOS" - }, -/area/ruin/unpowered) "si" = ( /obj/structure/flora/rock/jungle, /obj/structure/flora/grass/jungle/b, @@ -1248,13 +1231,6 @@ }, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/ruin/unpowered) -"Zs" = ( -/obj/structure/table/wood, -/obj/item/banhammer, -/turf/open/floor/wood{ - initial_gas_mix = "ICEMOON_ATMOS" - }, -/area/ruin/unpowered) (1,1,1) = {" aW @@ -2252,7 +2228,7 @@ Hb aW WH jy -Zs +ib WH WH WH @@ -2284,7 +2260,7 @@ Hb aW Br ib -sf +ib WH WH fB diff --git a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm index 86e2ac4e5477..39d17f372342 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm @@ -798,7 +798,7 @@ /area/ruin/jungle/paradise/construction) "eY" = ( /obj/structure/table/reinforced, -/obj/item/kitchen/knife/butcher, +/obj/item/melee/knife/butcher, /obj/item/clothing/gloves/butchering, /turf/open/floor/pod/dark, /area/overmap_encounter/planetoid/cave/explored) diff --git a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm index 3d00a493af05..2eba13537777 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm @@ -308,7 +308,7 @@ /turf/open/floor/plating/rust, /area/ruin/jungle/syndifort/jerry) "ik" = ( -/obj/item/kitchen/knife/combat{ +/obj/item/melee/knife/combat{ name = "bushcutter"; force = 18 }, @@ -627,7 +627,7 @@ /area/ruin/jungle/syndifort/jerry) "ud" = ( /obj/structure/table, -/obj/item/kitchen/knife/combat{ +/obj/item/melee/knife/combat{ name = "bushcutter"; force = 18 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm index 444f4ec52509..483580cf70dd 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm @@ -1324,7 +1324,7 @@ /obj/item/cutting_board{ anchored = 1 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/unpowered/listening_post/canteen) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm index 935a852fac76..f9be78af5b89 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm @@ -637,7 +637,7 @@ /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/east, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_x = 7; pixel_y = 10 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm index 739e427fc008..a53bebe1ff01 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm @@ -1072,7 +1072,7 @@ "qj" = ( /obj/effect/turf_decal/corner/opaque/solgovblue/diagonal, /obj/structure/table/wood, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /turf/open/floor/plasteel/white, /area/ruin/unpowered/winter_biodome/living_quarters) "qr" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm index 9937cbeb46bb..17094a2d2bff 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm @@ -1807,7 +1807,7 @@ /area/ruin/unpowered/buried_shrine) "UF" = ( /obj/structure/stone_tile/block, -/obj/item/claymore/bone{ +/obj/item/melee/sword/bone{ pixel_x = 8; pixel_y = 21 }, @@ -1823,7 +1823,7 @@ /area/ruin/unpowered/buried_shrine) "VG" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife/combat/bone, +/obj/item/melee/knife/bone, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/buried_shrine) "Wd" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm index 9babc1631c8f..911b6cf6f4e5 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm @@ -254,7 +254,7 @@ /turf/open/floor/plating/asteroid/basalt/wasteland, /area/ruin/unpowered/elephant_graveyard) "bk" = ( -/obj/item/kitchen/knife/combat/bone, +/obj/item/melee/knife/bone, /obj/item/organ/tongue, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/asteroid/basalt/wasteland, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index 3efc7429d803..a5547c39e8fd 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -345,7 +345,7 @@ /obj/effect/mob_spawn/human/corpse{ mob_species = /datum/species/lizard/ashwalker }, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_x = 10; pixel_y = -2 }, @@ -611,7 +611,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, /area/overmap_encounter/planetoid/lava/explored) "pX" = ( -/obj/item/claymore/bone{ +/obj/item/melee/sword/bone{ pixel_x = -12; pixel_y = 11 }, @@ -1101,7 +1101,7 @@ pixel_y = -11; pixel_x = -7 }, -/obj/item/kitchen/knife/combat/bone{ +/obj/item/melee/knife/bone{ pixel_x = 10; pixel_y = -10 }, @@ -1474,7 +1474,7 @@ /turf/closed/mineral/random/volcanic, /area/overmap_encounter/planetoid/cave/explored) "PP" = ( -/obj/item/kitchen/knife/combat/bone{ +/obj/item/melee/knife/bone{ pixel_x = -2; pixel_y = 4 }, @@ -1706,7 +1706,7 @@ pixel_x = -2; pixel_y = 1 }, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_x = 8; pixel_y = 14 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index 2c84843cf776..c4a3a0397508 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -1098,7 +1098,7 @@ /obj/effect/decal/cleanable/blood{ icon_state = "drip1" }, -/obj/item/spear, +/obj/item/melee/spear, /obj/item/bodypart/l_arm, /turf/open/floor/plasteel/dark, /area/ruin/lavaland/factory/dorms) @@ -2691,8 +2691,8 @@ /turf/open/floor/carpet/blue, /area/ruin/lavaland/factory/manager_office) "zl" = ( -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/structure/closet/crate/secure/gear, /turf/open/floor/plasteel/mono, /area/ruin/lavaland/factory/warehouse) @@ -2982,7 +2982,7 @@ dir = 1 }, /obj/machinery/light/directional/west, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /obj/item/clothing/suit/hooded/cloak/goliath, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/white, @@ -3828,7 +3828,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/item/kitchen/knife/shiv, +/obj/item/melee/knife/shiv, /turf/open/floor/plasteel/white, /area/ruin/lavaland/factory/adminstrative) "LX" = ( @@ -4302,7 +4302,7 @@ "QM" = ( /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /turf/open/floor/wood, /area/ruin/lavaland/factory/adminstrative) "QR" = ( diff --git a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm index 448690c0e77a..6e7e5131b640 100644 --- a/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm +++ b/_maps/RandomRuins/ReebeRuins/reebe_arena.dmm @@ -45,10 +45,6 @@ "pm" = ( /turf/open/floor/bronze, /area/ruin/reebe) -"pW" = ( -/obj/item/nullrod/spear, -/turf/open/floor/bronze, -/area/ruin/reebe) "qj" = ( /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal, /obj/structure/fans/tiny/invisible, @@ -56,7 +52,6 @@ /area/ruin/reebe) "qC" = ( /obj/structure/chair/comfy/shuttle/bronze, -/obj/item/nullrod/spear, /turf/open/floor/bronze, /area/ruin/reebe) "vz" = ( @@ -91,7 +86,6 @@ /area/ruin/reebe) "Ag" = ( /obj/structure/table/bronze, -/obj/item/nullrod/spear, /turf/open/floor/bronze, /area/ruin/reebe) "AT" = ( @@ -220,17 +214,13 @@ /turf/open/floor/bronze, /area/ruin/reebe) "Ux" = ( -/obj/item/spear, +/obj/item/melee/spear, /obj/item/grenade/c4, /turf/open/floor/bronze, /area/ruin/reebe) "UU" = ( /turf/open/chasm/reebe_void, /area/ruin/reebe) -"VT" = ( -/obj/structure/table/bronze, -/turf/open/floor/bronze, -/area/ruin/reebe) "Xr" = ( /obj/machinery/door/airlock/bronze/seethru{ name = "Summoning Chamber" @@ -2127,7 +2117,7 @@ Cj Cj Fz pm -VT +Ag Ib Cj FD @@ -2186,7 +2176,7 @@ IC IC Cj Cj -VT +Ag Fz pm pm @@ -2251,7 +2241,7 @@ la la pm pm -pW +pm pm xy pm @@ -2505,7 +2495,7 @@ pm pm pm Cj -VT +Ag pm pm pm @@ -2559,7 +2549,7 @@ pm Cj pm pm -pW +pm JC pm JC @@ -2567,7 +2557,7 @@ pm JC pm De -VT +Ag pm pm pm @@ -2815,7 +2805,7 @@ pm JC pm De -VT +Ag pm pm pm @@ -2877,7 +2867,7 @@ pm pm pm Cj -VT +Ag pm pm pm @@ -2996,11 +2986,11 @@ JC pm pm Rc -VT +Ag Cj Ag -VT -VT +Ag +Ag pm pm pm @@ -3053,7 +3043,7 @@ IC IC IC De -VT +Ag pm pm pm @@ -3127,7 +3117,7 @@ pm pm pm pm -VT +Ag Cj pm pm @@ -3178,7 +3168,7 @@ IC IC Cj Cj -VT +Ag hO pm hO @@ -3188,7 +3178,7 @@ pm pm pm pm -VT +Ag Cj Cj pm @@ -3242,14 +3232,14 @@ IC Cj Cj Pn -VT +Ag Pn -VT +Ag Cj -VT +Ag pm pm -VT +Ag Cj Cj pm diff --git a/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm b/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm index c768b54fe0ab..e1b0f36f687c 100644 --- a/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm +++ b/_maps/RandomRuins/ReebeRuins/reebe_decayed_sm.dmm @@ -7,7 +7,6 @@ /turf/open/floor/bronze, /area/ruin/reebe) "d" = ( -/obj/item/nullrod/spear, /turf/open/floor/bronze, /area/ruin/reebe) "e" = ( @@ -57,9 +56,6 @@ "O" = ( /turf/closed/wall/mineral/bronze, /area/ruin/reebe) -"Y" = ( -/turf/open/floor/bronze, -/area/ruin/reebe) "Z" = ( /obj/effect/decal/remains/human, /turf/open/floor/bronze, @@ -78,8 +74,8 @@ a a "} (2,1,1) = {" -Y -Y +d +d C C x @@ -102,19 +98,19 @@ a o "} (4,1,1) = {" -Y +d O e C C O -Y +d O -Y +d E "} (5,1,1) = {" -Y +d B e C @@ -122,23 +118,23 @@ M v Z v -Y +d a "} (6,1,1) = {" -Y +d O C e e O -Y +d O -Y +d a "} (7,1,1) = {" -Y +d C y C @@ -154,19 +150,19 @@ E C C C -Y -Y -Y +d +d +d E a a "} (9,1,1) = {" -Y -Y +d +d E E -Y +d E a a diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm index 485303fb66c3..d6238dcf237b 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm @@ -223,7 +223,7 @@ /area/overmap_encounter/planetoid/sand/explored) "iL" = ( /obj/structure/statue/snow/snowman, -/obj/item/kitchen/knife/shiv/carrot, +/obj/item/melee/knife/shiv/carrot, /turf/open/floor/plating/asteroid/snow/lit/whitesands, /area/overmap_encounter/planetoid/sand/explored) "iQ" = ( @@ -652,7 +652,7 @@ /turf/open/floor/wood, /area/ruin) "yZ" = ( -/obj/item/spear, +/obj/item/melee/spear, /obj/effect/mob_spawn/human/corpse/damaged/whitesands/survivor, /turf/open/floor/plating/asteroid/whitesands/dried{ light_range = 2 diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm index eb48bcae1626..251b40fb4443 100644 --- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm @@ -1106,7 +1106,7 @@ "el" = ( /obj/structure/table/glass, /obj/item/toy/plush/lizardplushie, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /turf/open/floor/light, /area/ruin/space/has_grav/spacemall/shop2) "eo" = ( @@ -2138,7 +2138,7 @@ /area/ruin/space/has_grav/spacemall) "ip" = ( /obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/structure/table, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/spacemall/dorms) @@ -13759,7 +13759,7 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_x = 10 }, /obj/structure/disposalpipe/segment{ diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index f422e4ef1eb8..934b648c0bd6 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -70,7 +70,7 @@ /area/ruin/wasteplanet) "df" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife/combat/bone, +/obj/item/melee/knife/bone, /obj/item/flashlight/flare/torch, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) @@ -107,7 +107,7 @@ /area/ruin/wasteplanet) "ge" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife/combat/bone{ +/obj/item/melee/knife/bone{ pixel_x = -20 }, /obj/item/reagent_containers/food/snacks/salad/edensalad, @@ -120,7 +120,7 @@ "gm" = ( /obj/structure/closet/cabinet, /obj/item/clothing/suit/hooded/cloak/bone, -/obj/item/claymore/bone, +/obj/item/melee/sword/bone, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "gr" = ( @@ -423,7 +423,7 @@ /area/ruin/wasteplanet) "qo" = ( /obj/structure/closet/cabinet, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bone, /obj/item/clothing/suit/armor/witchhunter, /obj/item/reagent_containers/food/snacks/grown/berries/death, /turf/open/floor/wood/waste, @@ -491,7 +491,7 @@ /area/ruin/wasteplanet) "sV" = ( /obj/structure/closet/cabinet, -/obj/item/claymore/bone, +/obj/item/melee/sword/bone, /obj/item/clothing/suit/armor/witchhunter, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) @@ -578,7 +578,7 @@ /area/ruin/wasteplanet) "xk" = ( /obj/structure/table/wood, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bone, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "xu" = ( @@ -813,7 +813,7 @@ /turf/open/indestructible/hierophant/two/waste, /area/ruin/wasteplanet) "FP" = ( -/obj/item/kitchen/knife/combat/bone{ +/obj/item/melee/knife/bone{ pixel_x = 15 }, /turf/open/floor/wood/waste, @@ -960,7 +960,7 @@ "Li" = ( /obj/structure/closet/cabinet, /obj/item/clothing/suit/armor/bone, -/obj/item/fireaxe/boneaxe, +/obj/item/melee/axe/bone, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) "Lj" = ( @@ -1233,7 +1233,7 @@ /area/ruin/wasteplanet) "RT" = ( /obj/structure/table/wood, -/obj/item/spear/bonespear, +/obj/item/melee/spear/bone, /obj/item/stack/sheet/sinew, /turf/open/floor/wood/waste, /area/ruin/wasteplanet) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index fdfae529865d..e25bceb1dd44 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -1686,7 +1686,7 @@ /area/centcom/evac) "atW" = ( /obj/structure/rack, -/obj/item/nullrod/claymore{ +/obj/item/melee/sword/claymore{ damtype = "stamina"; force = 30 }, @@ -1908,7 +1908,7 @@ /area/wizard_station) "avt" = ( /obj/structure/rack, -/obj/item/nullrod/claymore/katana{ +/obj/item/melee/sword/katana{ damtype = "stamina"; force = 30 }, @@ -2467,7 +2467,7 @@ /turf/open/floor/plasteel, /area/wizard_station) "azO" = ( -/obj/item/kitchen/knife/ritual, +/obj/item/melee/knife/kitchen, /turf/open/floor/plasteel, /area/wizard_station) "azP" = ( @@ -3309,7 +3309,6 @@ /area/tdome/tdomeobserve) "aHq" = ( /obj/structure/closet/cardboard, -/obj/item/banhammer, /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel, /area/wizard_station) @@ -4051,7 +4050,7 @@ "aMx" = ( /obj/machinery/light/directional/east, /obj/structure/rack, -/obj/item/nullrod/claymore/saber/red{ +/obj/item/melee/sword/claymore{ damtype = "stamina"; force = 30 }, @@ -4979,7 +4978,7 @@ "aRS" = ( /obj/machinery/light/directional/west, /obj/structure/rack, -/obj/item/nullrod/claymore/glowing{ +/obj/item/melee/sword/claymore{ damtype = "stamina"; force = 30 }, @@ -5284,15 +5283,6 @@ /obj/item/reagent_containers/glass/beaker, /turf/open/floor/plasteel, /area/centcom/holding) -"aUh" = ( -/obj/machinery/light/directional/east, -/obj/structure/rack, -/obj/item/nullrod/claymore/darkblade{ - damtype = "stamina"; - force = 30 - }, -/turf/open/floor/wood, -/area/centcom/holding) "aUj" = ( /obj/item/coin/antagtoken, /obj/effect/turf_decal/industrial/outline/yellow, @@ -5493,7 +5483,7 @@ /area/wizard_station) "aVF" = ( /obj/structure/rack, -/obj/item/nullrod/scythe/vibro{ +/obj/item/scythe{ damtype = "stamina"; force = 30 }, @@ -5963,15 +5953,6 @@ /obj/effect/turf_decal/industrial/outline/yellow, /turf/open/floor/plasteel, /area/centcom/control) -"aYV" = ( -/obj/machinery/light/directional/west, -/obj/structure/rack, -/obj/item/nullrod/claymore/saber{ - damtype = "stamina"; - force = 30 - }, -/turf/open/floor/wood, -/area/centcom/holding) "aYW" = ( /obj/effect/landmark/thunderdome/one, /obj/effect/turf_decal/industrial/warning{ @@ -10982,7 +10963,7 @@ /obj/item/reagent_containers/food/condiment/peppermill{ pixel_x = -8 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 }, @@ -15510,7 +15491,7 @@ pixel_x = 7; pixel_y = -2 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_y = -5; pixel_x = -5 }, @@ -43310,7 +43291,7 @@ aCT aCT aNT avt -aYV +aRS aOU aOU aRS @@ -45883,7 +45864,7 @@ avt aMx aQg aTb -aUh +aMx atW aWO aaa diff --git a/_maps/outpost/nanotrasen_asteroid.dmm b/_maps/outpost/nanotrasen_asteroid.dmm index 08f1322e7c60..cc6986e98b8d 100644 --- a/_maps/outpost/nanotrasen_asteroid.dmm +++ b/_maps/outpost/nanotrasen_asteroid.dmm @@ -1774,7 +1774,7 @@ /area/outpost/crew/cryo) "gF" = ( /obj/structure/table/reinforced, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_y = 6; pixel_x = 9 }, @@ -11369,7 +11369,7 @@ "NP" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table/reinforced, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_x = -6; pixel_y = 2 }, @@ -13063,7 +13063,7 @@ pixel_x = -4; pixel_y = 6 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_y = 6; pixel_x = 9 }, diff --git a/_maps/shuttles/independent/independent_beluga.dmm b/_maps/shuttles/independent/independent_beluga.dmm index c8ef49a3b35e..6158b206d67c 100644 --- a/_maps/shuttles/independent/independent_beluga.dmm +++ b/_maps/shuttles/independent/independent_beluga.dmm @@ -2742,7 +2742,7 @@ pixel_y = 1 }, /obj/structure/table, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_x = 11; pixel_y = 7 }, diff --git a/_maps/shuttles/independent/independent_dwayne.dmm b/_maps/shuttles/independent/independent_dwayne.dmm index 533709f94692..a0383e507ec1 100644 --- a/_maps/shuttles/independent/independent_dwayne.dmm +++ b/_maps/shuttles/independent/independent_dwayne.dmm @@ -1477,7 +1477,7 @@ /obj/item/cutting_board{ anchored = 1 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable/cyan{ icon_state = "0-5" diff --git a/_maps/shuttles/independent/independent_junker.dmm b/_maps/shuttles/independent/independent_junker.dmm index 136e6e6e17fb..7819d04ec1c2 100644 --- a/_maps/shuttles/independent/independent_junker.dmm +++ b/_maps/shuttles/independent/independent_junker.dmm @@ -91,7 +91,7 @@ pixel_x = 4; pixel_y = 9 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_y = -3; pixel_x = 10 }, @@ -1790,7 +1790,7 @@ /obj/structure/cable{ icon_state = "5-10" }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_y = 1; pixel_x = 8 }, diff --git a/_maps/shuttles/independent/independent_kilo.dmm b/_maps/shuttles/independent/independent_kilo.dmm index 4577678b7f21..0dad29cb9f9b 100644 --- a/_maps/shuttles/independent/independent_kilo.dmm +++ b/_maps/shuttles/independent/independent_kilo.dmm @@ -1765,7 +1765,7 @@ /obj/item/cutting_board{ anchored = 1 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/corner/transparent/beige/full, /obj/effect/turf_decal/corner/transparent/brown/diagonal, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/independent/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm index 248ee9240efd..16f3ad2cbfa1 100644 --- a/_maps/shuttles/independent/independent_lagoon.dmm +++ b/_maps/shuttles/independent/independent_lagoon.dmm @@ -1361,7 +1361,7 @@ "iR" = ( /obj/structure/table/reinforced, /obj/item/storage/bag/tray, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/structure/cable{ icon_state = "2-4" }, @@ -4751,7 +4751,7 @@ /obj/structure/table/wood, /obj/item/paper_bin, /obj/item/pen/fountain, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/item/pen, /turf/open/floor/carpet/black, /area/ship/crew/library) @@ -5617,7 +5617,6 @@ /area/ship/hallway/starboard) "Mz" = ( /obj/structure/table/wood, -/obj/item/nullrod, /turf/open/floor/wood, /area/ship/crew/chapel) "MD" = ( @@ -6724,7 +6723,7 @@ pixel_x = 4; pixel_y = 9 }, -/obj/item/melee/skateboard/hoverboard{ +/obj/item/skateboard/hoverboard{ pixel_x = -4 }, /turf/open/floor/eighties, diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index 64275521c4e0..ac2be582662a 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -2261,8 +2261,8 @@ /obj/item/gps/mining{ gpstag = "SCAV1" }, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, /turf/open/floor/plasteel/patterned/grid, diff --git a/_maps/shuttles/independent/independent_rigger.dmm b/_maps/shuttles/independent/independent_rigger.dmm index 15265d30016b..da493fcdf548 100644 --- a/_maps/shuttles/independent/independent_rigger.dmm +++ b/_maps/shuttles/independent/independent_rigger.dmm @@ -1179,7 +1179,7 @@ "pv" = ( /obj/effect/turf_decal/corner/opaque/yellow/diagonal, /obj/structure/table, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /turf/open/floor/plasteel/white, /area/ship/crew/canteen) "pD" = ( diff --git a/_maps/shuttles/independent/independent_schmiedeberg.dmm b/_maps/shuttles/independent/independent_schmiedeberg.dmm index ce7b407a4731..891e3bd2ce9a 100644 --- a/_maps/shuttles/independent/independent_schmiedeberg.dmm +++ b/_maps/shuttles/independent/independent_schmiedeberg.dmm @@ -69,7 +69,7 @@ /obj/structure/table, /obj/item/storage/bag/tray, /obj/item/reagent_containers/food/condiment/enzyme, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -5; pixel_y = 10 @@ -2063,8 +2063,8 @@ /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/structure/sign/poster/retro/lasergun_new{ pixel_x = -32 }, diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm index 4fb22e45c7c2..256e9bc75c88 100644 --- a/_maps/shuttles/independent/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -84,7 +84,7 @@ "aR" = ( /obj/effect/turf_decal/corner/opaque/neutral/half, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/structure/table/reinforced, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) @@ -1010,7 +1010,7 @@ /obj/effect/turf_decal/corner/transparent/beige/full, /obj/effect/turf_decal/corner/transparent/brown/diagonal, /obj/item/toy/redbutton, -/obj/item/kitchen/knife/plastic, +/obj/item/melee/knife/plastic, /obj/item/kitchen/fork/plastic{ pixel_x = 5 }, @@ -1550,7 +1550,7 @@ /obj/item/kitchen/fork/plastic{ pixel_x = 5 }, -/obj/item/kitchen/knife/plastic, +/obj/item/melee/knife/plastic, /turf/open/floor/plasteel, /area/ship/crew/canteen) "nt" = ( @@ -5973,7 +5973,7 @@ /obj/item/kitchen/fork/plastic{ pixel_x = 5 }, -/obj/item/kitchen/knife/plastic, +/obj/item/melee/knife/plastic, /turf/open/floor/plasteel, /area/ship/crew/canteen) "Yp" = ( diff --git a/_maps/shuttles/independent/independent_sunskipper.dmm b/_maps/shuttles/independent/independent_sunskipper.dmm index de92179a11f7..a5fcf740be59 100644 --- a/_maps/shuttles/independent/independent_sunskipper.dmm +++ b/_maps/shuttles/independent/independent_sunskipper.dmm @@ -441,7 +441,7 @@ pixel_y = 5; anchored = 1 }, -/obj/item/kitchen/knife{ +/obj/item/melee/knife/kitchen{ pixel_x = -11; pixel_y = 9 }, @@ -873,8 +873,8 @@ }, /obj/item/pickaxe, /obj/item/pickaxe, -/obj/item/kitchen/knife/hunting, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, +/obj/item/melee/knife/hunting, /obj/item/clothing/suit/hazardvest, /obj/item/clothing/suit/hazardvest, /obj/item/clothing/head/hardhat/mining, diff --git a/_maps/shuttles/independent/independent_tranquility.dmm b/_maps/shuttles/independent/independent_tranquility.dmm index d526a2a79b85..6a26f5e7b264 100644 --- a/_maps/shuttles/independent/independent_tranquility.dmm +++ b/_maps/shuttles/independent/independent_tranquility.dmm @@ -1687,7 +1687,7 @@ /obj/effect/turf_decal/corner/transparent/bar, /obj/structure/table/reinforced, /obj/machinery/light/directional/south, -/obj/item/kitchen/knife/butcher{ +/obj/item/melee/knife/butcher{ pixel_x = -6; pixel_y = 7 }, diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm index e1cad73bdb2e..f19c734f9d83 100644 --- a/_maps/shuttles/inteq/inteq_colossus.dmm +++ b/_maps/shuttles/inteq/inteq_colossus.dmm @@ -4338,10 +4338,10 @@ /obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "WG" = ( diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm index 906f803d7c9a..195852c9fd5c 100644 --- a/_maps/shuttles/inteq/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -5610,9 +5610,9 @@ pixel_x = -1; pixel_y = 3 }, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "JT" = ( diff --git a/_maps/shuttles/inteq/inteq_valor.dmm b/_maps/shuttles/inteq/inteq_valor.dmm index 7cb5896b71ad..737e424096fd 100644 --- a/_maps/shuttles/inteq/inteq_valor.dmm +++ b/_maps/shuttles/inteq/inteq_valor.dmm @@ -500,8 +500,8 @@ /obj/item/megaphone/sec, /obj/item/clothing/suit/armor/vest, /obj/item/clothing/suit/armor/vest, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/machinery/recharger{ pixel_x = -16; pixel_y = 5 diff --git a/_maps/shuttles/inteq/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm index 04e3e5684ba7..336bf5792208 100644 --- a/_maps/shuttles/inteq/inteq_vaquero.dmm +++ b/_maps/shuttles/inteq/inteq_vaquero.dmm @@ -2175,9 +2175,9 @@ pixel_y = 23 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /turf/open/floor/plasteel/tech/grid, /area/ship/security) "HN" = ( diff --git a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm index 96bd414525c0..b469bbaa0984 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm @@ -4853,11 +4853,11 @@ pixel_x = 2; pixel_y = 3 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_x = 2 }, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic{ pixel_x = 5; pixel_y = 2 }, @@ -6113,7 +6113,7 @@ /obj/item/storage/pill_bottle/aranesp, /obj/item/taperecorder, /obj/item/t_scanner, -/obj/item/kitchen/knife/switchblade, +/obj/item/melee/knife/switchblade, /obj/item/trash/candy, /obj/structure/filingcabinet/double, /obj/item/radio/intercom/directional/south, @@ -13018,10 +13018,10 @@ /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/dough, /obj/item/kitchen/rollingpin, -/obj/item/kitchen/knife/butcher{ +/obj/item/melee/knife/butcher{ pixel_x = 13 }, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/industrial/warning{ dir = 1 }, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm index 1bcf7707a157..1f645758f3cb 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm @@ -2393,7 +2393,7 @@ /obj/structure/table, /obj/item/cutting_board, /obj/item/kitchen/rollingpin, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/effect/turf_decal/corner/opaque/white/diagonal, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm index 928fc6bd90ee..708933a2287a 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm @@ -2005,7 +2005,7 @@ /obj/machinery/door/window{ dir = 4 }, -/obj/item/kitchen/knife/shiv, +/obj/item/melee/knife/shiv, /turf/open/floor/plating, /area/ship/crew/canteen) "lc" = ( @@ -4049,11 +4049,11 @@ /area/ship/crew/dorm) "ye" = ( /obj/structure/closet/crate, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic, -/obj/item/kitchen/knife/plastic, +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic, +/obj/item/melee/knife/plastic, /obj/item/kitchen/spoon/plastic, /obj/item/kitchen/spoon/plastic, /obj/item/kitchen/spoon/plastic, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm index 564cf0733f9f..a44e00c41303 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm @@ -7644,7 +7644,7 @@ /area/ship/engineering) "XE" = ( /obj/structure/table/reinforced, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/item/kitchen/rollingpin, /obj/item/reagent_containers/food/condiment/sugar, /obj/item/reagent_containers/food/condiment/rice, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm index d2ccfdcfe910..fcd049fb153f 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -176,7 +176,7 @@ /obj/item/clothing/glasses/sunglasses/gar, /obj/item/melee/classic_baton/telescopic, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/holosign_creator/security, /obj/item/storage/box/handcuffs, /obj/item/restraints/legcuffs/bola/energy, @@ -1544,7 +1544,7 @@ pixel_y = 9; pixel_x = -12 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 6; pixel_x = 5 }, @@ -3117,7 +3117,7 @@ /obj/structure/closet/secure_closet/lp/lieutenant, /obj/item/stock_parts/cell/gun, /obj/item/melee/classic_baton/telescopic, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/gps, /obj/item/screwdriver, /obj/effect/turf_decal/siding/wood{ diff --git a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm index 802756c19d04..e69aa1de47ca 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm @@ -1734,7 +1734,7 @@ pixel_x = 1; pixel_y = 5 }, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/letter_opener{ desc = "A military combat utility survival knife, imported from Earth. An expensive paperweight indeed."; pixel_x = 4; pixel_y = 5 @@ -2607,7 +2607,7 @@ dir = 10 }, /obj/structure/table/reinforced, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/item/cutting_board, /obj/effect/turf_decal/corner/opaque/green/mono, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/pgf/pgf_crying_sun.dmm b/_maps/shuttles/pgf/pgf_crying_sun.dmm index bbfb109c6c36..eb5211a95ac9 100644 --- a/_maps/shuttles/pgf/pgf_crying_sun.dmm +++ b/_maps/shuttles/pgf/pgf_crying_sun.dmm @@ -3358,19 +3358,19 @@ pixel_x = 3; pixel_y = 5 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_y = 5; pixel_x = -1 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_y = 5; pixel_x = -3 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_y = 5; pixel_x = -5 }, -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_y = 5; pixel_x = -7 }, @@ -5479,19 +5479,19 @@ /area/ship/bridge) "Qq" = ( /obj/structure/rack, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_x = -7; pixel_y = 4 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_x = -2; pixel_y = 4 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 4; pixel_x = 3 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 4; pixel_x = 8 }, diff --git a/_maps/shuttles/pirate/pirate_libertatia.dmm b/_maps/shuttles/pirate/pirate_libertatia.dmm index 2fe2cd9ddb20..b1bf098571c0 100644 --- a/_maps/shuttles/pirate/pirate_libertatia.dmm +++ b/_maps/shuttles/pirate/pirate_libertatia.dmm @@ -566,11 +566,11 @@ /area/ship/security) "sI" = ( /obj/machinery/firealarm/directional/south, -/obj/item/kitchen/knife/hunting{ +/obj/item/melee/knife/hunting{ pixel_y = 5 }, -/obj/item/kitchen/knife/hunting, -/obj/item/kitchen/knife/hunting{ +/obj/item/melee/knife/hunting, +/obj/item/melee/knife/hunting{ pixel_y = -5 }, /obj/item/storage/belt/security/webbing, diff --git a/_maps/shuttles/pirate/pirate_tortuga.dmm b/_maps/shuttles/pirate/pirate_tortuga.dmm index 4bc354b31b5c..fc08d44db510 100644 --- a/_maps/shuttles/pirate/pirate_tortuga.dmm +++ b/_maps/shuttles/pirate/pirate_tortuga.dmm @@ -753,7 +753,7 @@ /obj/structure/closet/crate{ icon_state = "o2crate" }, -/obj/item/spear/explosive, +/obj/item/melee/spear/explosive, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/ship/maintenance) @@ -2375,19 +2375,19 @@ /area/ship/cargo) "FB" = ( /obj/structure/rack, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 8; pixel_x = -9 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 7; pixel_x = 5 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 7; pixel_x = -4 }, -/obj/item/kitchen/knife/combat/survival{ +/obj/item/melee/knife/survival{ pixel_y = 7; pixel_x = 1 }, @@ -3403,7 +3403,7 @@ /turf/open/floor/plating, /area/ship/cargo) "RV" = ( -/obj/item/kitchen/knife/plastic{ +/obj/item/melee/knife/plastic{ pixel_x = 8 }, /obj/item/reagent_containers/food/snacks/grown/potato{ diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index 5ef138ad19db..0e501c62ed57 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -1533,7 +1533,7 @@ /obj/item/clothing/shoes/cowboy, /obj/item/clothing/shoes/cowboy/black, /obj/item/clothing/shoes/combat, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /obj/item/gps{ pixel_x = -7 }, @@ -2017,7 +2017,7 @@ pixel_x = -2; pixel_y = 2 }, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /obj/effect/turf_decal/spline/fancy/wood{ dir = 5 }, @@ -2462,15 +2462,15 @@ /area/ship/roumain) "Eh" = ( /obj/structure/table/wood, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_y = -3; pixel_x = 2 }, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_y = 1; pixel_x = 2 }, -/obj/item/spear/bonespear{ +/obj/item/melee/spear/bone{ pixel_y = 5; pixel_x = 2 }, @@ -2643,7 +2643,7 @@ /obj/item/clothing/shoes/cowboy/black, /obj/item/clothing/shoes/cowboy, /obj/item/clothing/shoes/combat, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/gps{ pixel_x = -7 }, @@ -2687,7 +2687,7 @@ pixel_x = -2; pixel_y = 2 }, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /obj/effect/turf_decal/spline/fancy/wood{ dir = 5 }, @@ -3656,7 +3656,7 @@ /obj/item/clothing/shoes/cowboy, /obj/item/clothing/shoes/cowboy/black, /obj/item/clothing/shoes/combat, -/obj/item/kitchen/knife/hunting, +/obj/item/melee/knife/hunting, /obj/item/gps{ pixel_x = -7 }, diff --git a/_maps/shuttles/solgov/solgov_chronicle.dmm b/_maps/shuttles/solgov/solgov_chronicle.dmm index 56cbecce667b..e8af1166a200 100644 --- a/_maps/shuttles/solgov/solgov_chronicle.dmm +++ b/_maps/shuttles/solgov/solgov_chronicle.dmm @@ -569,7 +569,7 @@ /obj/item/clothing/suit/hazardvest/solgov, /obj/item/clothing/accessory/armband/cargo, /obj/item/clothing/shoes/workboots, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/clothing/gloves/combat, /obj/item/storage/backpack, /obj/machinery/light/small/directional/north, @@ -4427,7 +4427,7 @@ "RX" = ( /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/machinery/newscaster/directional/north, /obj/structure/sink{ layer = 2.79; diff --git a/_maps/shuttles/solgov/solgov_inkwell.dmm b/_maps/shuttles/solgov/solgov_inkwell.dmm index cb52200b4aa9..5d2c0fbe0ccc 100644 --- a/_maps/shuttles/solgov/solgov_inkwell.dmm +++ b/_maps/shuttles/solgov/solgov_inkwell.dmm @@ -2571,7 +2571,7 @@ /area/ship/crew/canteen) "qE" = ( /obj/structure/table/wood, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/letter_opener{ icon_state = "letter_opener_b"; name = "boxcutter"; pixel_x = -13; @@ -2711,7 +2711,7 @@ dir = 4 }, /obj/item/clothing/glasses/meson/prescription, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/item/clothing/glasses/meson, /obj/machinery/light/directional/north, /obj/item/storage/bag/ore, @@ -3057,7 +3057,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/item/clothing/glasses/meson, /obj/structure/sign/poster/solgov/random{ pixel_y = 32 @@ -3342,7 +3342,7 @@ "uS" = ( /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/item/reagent_containers/food/condiment/saltshaker{ pixel_x = -17 }, @@ -3634,7 +3634,7 @@ /obj/item/stamp/solgov, /obj/item/clothing/suit/armor/solgov_trenchcoat, /obj/item/storage/backpack/satchel, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/structure/closet/secure_closet/quartermaster{ anchored = 1; name = "\proper logistics deck officer's locker"; @@ -5461,13 +5461,13 @@ }, /obj/structure/rack, /obj/structure/window/reinforced, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/letter_opener{ pixel_x = -2 }, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/letter_opener{ pixel_x = 1 }, -/obj/item/kitchen/knife/letter_opener{ +/obj/item/melee/knife/letter_opener{ pixel_x = 4 }, /obj/effect/turf_decal/corner/opaque/solgovblue{ @@ -6959,7 +6959,7 @@ }, /obj/effect/turf_decal/industrial/outline/red, /obj/item/clothing/glasses/meson/prescription, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/letter_opener, /obj/item/clothing/glasses/meson, /obj/item/storage/bag/ore, /turf/open/floor/plasteel/white, diff --git a/_maps/shuttles/solgov/solgov_paracelsus.dmm b/_maps/shuttles/solgov/solgov_paracelsus.dmm index b235794d6cd4..ef642488ef50 100644 --- a/_maps/shuttles/solgov/solgov_paracelsus.dmm +++ b/_maps/shuttles/solgov/solgov_paracelsus.dmm @@ -803,7 +803,7 @@ /obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/clothing/gloves/combat, /obj/item/clothing/suit/hazardvest/solgov, /obj/item/clothing/head/hardhat/solgov, @@ -1652,7 +1652,7 @@ /obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, /obj/item/clothing/gloves/combat, /obj/item/clothing/suit/hazardvest/solgov, /obj/item/clothing/head/hardhat/solgov, @@ -4715,7 +4715,7 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table/wood, /obj/item/cutting_board, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/item/kitchen/rollingpin, /turf/open/floor/wood/ebony, /area/ship/crew/canteen) diff --git a/_maps/shuttles/subshuttles/independent_sugarcube.dmm b/_maps/shuttles/subshuttles/independent_sugarcube.dmm index 11a8de916cd6..0504142f55b3 100644 --- a/_maps/shuttles/subshuttles/independent_sugarcube.dmm +++ b/_maps/shuttles/subshuttles/independent_sugarcube.dmm @@ -235,7 +235,7 @@ /obj/effect/decal/cleanable/glass, /obj/item/shard, /obj/item/shard, -/obj/item/kitchen/knife/shiv, +/obj/item/melee/knife/shiv, /turf/open/floor/plating, /area/ship/storage) "B" = ( diff --git a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm index 67eaf609e080..253a82277fdf 100644 --- a/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm +++ b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm @@ -549,7 +549,7 @@ dir = 4 }, /obj/item/storage/box/rxglasses/spyglasskit, -/obj/item/kitchen/knife/letter_opener, +/obj/item/melee/knife/letter_opener, /turf/open/floor/plasteel/dark, /area/ship/crew/office) "nF" = ( @@ -1844,7 +1844,7 @@ /obj/item/implanter/stealth, /obj/item/modular_computer/laptop/preset/civilian, /obj/item/clothing/mask/chameleon, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /obj/item/reagent_containers/pill/cyanide, /obj/item/reagent_containers/pill/cyanide, /obj/item/reagent_containers/pill/cyanide, @@ -1948,10 +1948,10 @@ layer = 2.91 }, /obj/effect/turf_decal/box, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, -/obj/item/kitchen/knife/combat/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, /obj/item/pickaxe, /obj/item/pickaxe, /obj/item/pickaxe, diff --git a/_maps/shuttles/syndicate/syndicate_panacea.dmm b/_maps/shuttles/syndicate/syndicate_panacea.dmm index 24334160f64b..71526c69198f 100644 --- a/_maps/shuttles/syndicate/syndicate_panacea.dmm +++ b/_maps/shuttles/syndicate/syndicate_panacea.dmm @@ -7344,7 +7344,7 @@ /obj/item/cutting_board{ pixel_y = 3 }, -/obj/item/kitchen/knife/butcher{ +/obj/item/melee/knife/butcher{ pixel_y = 4; pixel_x = 4 }, diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm index 30ce8ed19013..ca7bd7705efd 100644 --- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -120,7 +120,7 @@ /area/ship/security/armory) "aG" = ( /obj/structure/closet/secure_closet/wall/directional/east, -/obj/item/kitchen/knife, +/obj/item/melee/knife/kitchen, /obj/item/cutting_board, /obj/item/clothing/under/suit/waiter/syndicate, /obj/item/clothing/suit/hazardvest/donk, @@ -1845,7 +1845,7 @@ /obj/item/clothing/gloves/color/black, /obj/machinery/light/directional/west, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "ky" = ( @@ -2117,7 +2117,7 @@ /obj/item/clothing/head/soft/black, /obj/item/clothing/glasses/sunglasses, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "ma" = ( @@ -3326,7 +3326,7 @@ /obj/machinery/light/directional/east, /obj/item/clothing/head/beret/black, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "sW" = ( @@ -7138,7 +7138,7 @@ /obj/item/clothing/gloves/color/black, /obj/machinery/light/directional/east, /obj/item/flashlight/seclite, -/obj/item/kitchen/knife/combat, +/obj/item/melee/knife/combat, /turf/open/floor/mineral/plastitanium, /area/ship/security) "Pn" = ( diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 9c2571e6f5a5..c12d8dd837da 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -39,7 +39,7 @@ /area/survivalpod) "i" = ( /obj/structure/toilet/secret{ - secret_type = /obj/item/kitchen/knife/combat/survival + secret_type = /obj/item/melee/knife/survival }, /turf/open/floor/pod, /area/survivalpod) diff --git a/check_regex.yaml b/check_regex.yaml index 3b5e13a650e5..eadd642f0676 100644 --- a/check_regex.yaml +++ b/check_regex.yaml @@ -29,7 +29,7 @@ standards: - exactly: [1, "/area text paths", '"/area'] - exactly: [17, "/datum text paths", '"/datum'] - exactly: [4, "/mob text paths", '"/mob'] - - exactly: [43, "/obj text paths", '"/obj'] + - exactly: [42, "/obj text paths", '"/obj'] - exactly: [0, "/turf text paths", '"/turf'] - exactly: [117, "text2path uses", "text2path"] diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 6cad7078b6ec..5b99546fed97 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -150,7 +150,7 @@ GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list( /obj/item/gun/energy, /obj/item/gun/grenadelauncher, /obj/item/flamethrower, - /obj/item/kitchen/knife/combat, + /obj/item/melee/knife/combat, /obj/item/melee/baton, /obj/item/melee/classic_baton/telescopic, /obj/item/reagent_containers/spray/pepper, diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 532ed3f888d7..9c9f0b85e48d 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -164,7 +164,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/roller = 1, /obj/item/restraints/legcuffs/bola = 1, /obj/item/restraints/handcuffs/cable = 1, - /obj/item/spear = 1, + /obj/item/melee/spear = 1, /obj/item/shield/riot/buckler = 1, /obj/item/grenade/iedcasing/spawned = 1, /obj/item/melee/baton/cattleprod = 1, @@ -253,7 +253,7 @@ GLOBAL_LIST_INIT(oddity_loot, list(//oddity: strange or crazy items /obj/item/clothing/shoes/jackboots/fast = 1, /obj/item/clothing/suit/armor/reactive/table = 1, /obj/item/storage/box/donkpockets/donkpocketgondola = 1, - /obj/item/melee/greykingsword = 1 //WS - Meth Sword + /obj/item/melee/sword/greyking = 1 //WS - Meth Sword )) //Maintenance loot spawner pools diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 25ae750eb0d3..333dee323e87 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -75,7 +75,7 @@ SUBSYSTEM_DEF(traumas) "greytide" = typecacheof(list( /obj/item/clothing/under/color/grey, /obj/item/melee/baton/cattleprod, - /obj/item/spear, /obj/item/clothing/mask/gas)), + /obj/item/melee/spear, /obj/item/clothing/mask/gas)), "lizards" = typecacheof(list( /obj/item/toy/plush/lizardplushie, /obj/item/organ/tail/lizard, @@ -125,14 +125,13 @@ SUBSYSTEM_DEF(traumas) "the supernatural" = typecacheof(list( /obj/structure/destructible/cult, /obj/item/tome, - /obj/item/melee/cultblade, /obj/item/cult_bastard, /obj/item/restraints/legcuffs/bola/cult, /obj/item/clothing/suit/space/hardsuit/cult, /obj/item/clothing/suit/hooded/cultrobes, /obj/item/clothing/head/hooded/cult_hoodie, /obj/effect/rune, /obj/machinery/door/airlock/cult, /obj/singularity/narsie, /obj/item/soulstone, /obj/item/clothing/suit/wizrobe, /obj/item/clothing/head/wizard, /obj/item/spellbook, /obj/item/staff, /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/wizard, - /obj/item/nullrod, /obj/item/clothing/under/rank/civilian/chaplain)), + /obj/item/clothing/under/rank/civilian/chaplain)), "aliens" = typecacheof(list( /obj/item/clothing/mask/facehugger_item, /obj/item/organ/body_egg/alien_embryo, @@ -151,13 +150,13 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/suit/toggle/owlwings, /obj/item/clothing/under/costume/owl, /obj/item/clothing/mask/gas/owl_mask)), "anime" = typecacheof(list( - /obj/item/clothing/under/costume/schoolgirl, /obj/item/katana, /obj/item/reagent_containers/food/snacks/sashimi, + /obj/item/clothing/under/costume/schoolgirl, /obj/item/reagent_containers/food/snacks/sashimi, /obj/item/reagent_containers/food/snacks/chawanmushi, /obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star, /obj/item/clothing/suit/space/space_ninja, /obj/item/clothing/mask/gas/space_ninja, /obj/item/clothing/shoes/space_ninja, /obj/item/clothing/gloves/space_ninja, - /obj/item/vibro_weapon, /obj/item/nullrod/scythe/vibro, /obj/item/energy_katana, /obj/item/toy/katana, - /obj/item/nullrod/claymore/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)) + /obj/item/melee/sword/vibro, /obj/item/melee/sword/energy_katana, /obj/item/toy/katana, + /obj/item/melee/sword/katana, /obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)) ) phobia_turfs = list( diff --git a/code/datums/action.dm b/code/datums/action.dm index e8d0ea303888..fb2d8b5e967f 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -470,44 +470,6 @@ name = "Use [target.name]" button.name = name -/datum/action/item_action/cult_dagger - name = "Draw Blood Rune" - desc = "Use the ritual dagger to create a powerful blood rune" - icon_icon = 'icons/mob/actions/actions_cult.dmi' - button_icon_state = "draw" - buttontooltipstyle = "cult" - background_icon_state = "bg_demon" - -/datum/action/item_action/cult_dagger/Grant(mob/M) - if(iscultist(M)) - ..() - button.screen_loc = "6:157,4:-2" - button.moved = "6:157,4:-2" - else - Remove(owner) - - -/datum/action/item_action/cult_dagger/Trigger() - for(var/obj/item/H in owner.held_items) //In case we were already holding another dagger - if(istype(H, /obj/item/melee/cultblade/dagger)) - H.attack_self(owner) - return - var/obj/item/I = target - if(owner.can_equip(I, ITEM_SLOT_HANDS)) - owner.temporarilyRemoveItemFromInventory(I) - owner.put_in_hands(I) - I.attack_self(owner) - return - if(!isliving(owner)) - to_chat(owner, "You lack the necessary living force for this action.") - return - var/mob/living/living_owner = owner - if (living_owner.usable_hands <= 0) - to_chat(living_owner, "You dont have any usable hands!") - else - to_chat(living_owner, "Your hands are full!") - - ///MGS BOX! /datum/action/item_action/agent_box name = "Deploy Box" diff --git a/code/datums/actions/ninja.dm b/code/datums/actions/ninja.dm index b655078349dc..974e4cfa74bc 100644 --- a/code/datums/actions/ninja.dm +++ b/code/datums/actions/ninja.dm @@ -24,7 +24,7 @@ name = "Create Throwing Stars (1E)" desc = "Creates some throwing stars" button_icon_state = "throwingstar" - icon_icon = 'icons/obj/items_and_weapons.dmi' + icon_icon = 'icons/obj/items.dmi' /datum/action/item_action/ninjanet name = "Energy Net (20E)" @@ -36,7 +36,7 @@ name = "Recall Energy Katana (Variable Cost)" desc = "Teleports the Energy Katana linked to this suit to its wearer, cost based on distance." button_icon_state = "energy_katana" - icon_icon = 'icons/obj/items_and_weapons.dmi' + icon_icon = 'icons/obj/items.dmi' /datum/action/item_action/ninja_stealth name = "Toggle Stealth" diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm index e76641789157..fd89bd141ea8 100644 --- a/code/datums/components/crafting/recipes/misc.dm +++ b/code/datums/components/crafting/recipes/misc.dm @@ -115,7 +115,7 @@ name = "Improvised Pickaxe" reqs = list( /obj/item/crowbar = 1, - /obj/item/kitchen/knife = 1, + /obj/item/melee/knife/kitchen = 1, /obj/item/stack/tape = 1) result = /obj/item/pickaxe/improvised category = CAT_MISC diff --git a/code/datums/components/crafting/recipes/weapon.dm b/code/datums/components/crafting/recipes/weapon.dm index 65983b06df23..6783c60c6c6b 100644 --- a/code/datums/components/crafting/recipes/weapon.dm +++ b/code/datums/components/crafting/recipes/weapon.dm @@ -161,7 +161,7 @@ /datum/crafting_recipe/spear name = "Spear" - result = /obj/item/spear + result = /obj/item/melee/spear reqs = list(/obj/item/restraints/handcuffs/cable = 1, /obj/item/shard = 1, /obj/item/stack/rods = 1) @@ -261,7 +261,7 @@ /datum/crafting_recipe/bonespear name = "Bone Spear" - result = /obj/item/spear/bonespear + result = /obj/item/melee/spear/bone time = 30 reqs = list(/obj/item/stack/sheet/bone = 4, /obj/item/stack/sheet/sinew = 1) @@ -270,7 +270,7 @@ /datum/crafting_recipe/boneaxe name = "Bone Axe" - result = /obj/item/fireaxe/boneaxe + result = /obj/item/melee/axe/bone time = 50 reqs = list(/obj/item/stack/sheet/bone = 6, /obj/item/stack/sheet/sinew = 3) @@ -279,7 +279,7 @@ /datum/crafting_recipe/bonesword name = "Bone Sword" - result = /obj/item/claymore/bone + result = /obj/item/melee/sword/bone time = 40 reqs = list(/obj/item/stack/sheet/bone = 3, /obj/item/stack/sheet/sinew = 2) diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 7d3bf028d796..f4ff07423c52 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -369,7 +369,7 @@ /obj/item/riding_offhand name = "offhand" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "offhand" w_class = WEIGHT_CLASS_HUGE item_flags = ABSTRACT | DROPDEL | NOBLUDGEON diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index 44470e5ca989..e00c40e116f8 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -35,8 +35,8 @@ /datum/component/storage/concrete/pockets/small/fedora/Initialize() . = ..() var/static/list/exception_cache = typecacheof(list( - /obj/item/katana, /obj/item/toy/katana, /obj/item/nullrod/claymore/katana, - /obj/item/energy_katana, /obj/item/gun/ballistic/automatic/smg/firestorm/pan + /obj/item/toy/katana, /obj/item/melee/sword/katana, + /obj/item/melee/sword/energy_katana, /obj/item/gun/ballistic/automatic/smg/firestorm/pan )) exception_hold = exception_cache diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 72d26cf74367..e4e3ef90ebc7 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -169,96 +169,3 @@ to_chat(usr, "Crashing Wave Kick: Harm Disarm. Launch people brutally across rooms, and away from you.") to_chat(usr, "Keelhaul: Harm Grab. Kick opponents to the floor. Against prone targets, deal additional stamina damage and disarm them.") to_chat(usr, "In addition, your body has become incredibly resilient to most forms of attack. Weapons cannot readily pierce your hardened skin, and you are highly resistant to stuns and knockdowns, and can block all projectiles in Throw Mode. However, you are not invincible, and sustained damage will take it's toll. Avoid heat at all costs!") - -/obj/item/staff/bostaff - name = "bo staff" - desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate." - force = 10 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - throwforce = 20 - throw_speed = 2 - attack_verb = list("smashed", "slammed", "whacked", "thwacked") - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "bostaff0" - base_icon_state = "bostaff" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - block_chance = 50 - var/wielded = FALSE // track wielded status on item - -/obj/item/staff/bostaff/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/staff/bostaff/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=24, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/staff/bostaff/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/staff/bostaff/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/staff/bostaff/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/staff/bostaff/attack(mob/target, mob/living/user) - add_fingerprint(user) - if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) - to_chat(user, "You club yourself over the head with [src].") - user.Paralyze(60) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) - else - user.take_bodypart_damage(2*force) - return - if(iscyborg(target)) - return ..() - if(!isliving(target)) - return ..() - var/mob/living/carbon/C = target - if(C.stat) - to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") - return - if(user.a_intent == INTENT_DISARM) - if(!wielded) - return ..() - if(!ishuman(target)) - return ..() - var/mob/living/carbon/human/H = target - var/list/fluffmessages = list("club", "smack", "broadside", "beat", "slam") - H.visible_message("[user] [pick(fluffmessages)]s [H] with [src]!", \ - "[user] [pick(fluffmessages)]s you with [src]!", "You hear a sickening sound of flesh hitting flesh!", null, user) - to_chat(user, "You [pick(fluffmessages)] [H] with [src]!") - playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, TRUE, -1) - H.adjustStaminaLoss(rand(13,20)) - if(prob(10)) - H.visible_message("[H] collapses!", \ - "Your legs give out!") - H.Paralyze(80) - if(H.staminaloss && !H.IsSleeping()) - var/total_health = (H.health - H.staminaloss) - if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) - H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ - "You're knocked unconscious by [user]!", "You hear a sickening sound of flesh hitting flesh!", null, user) - to_chat(user, "You deliver a heavy hit to [H]'s head, knocking [H.p_them()] out cold!") - H.SetSleeping(600) - H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 150) - else - return ..() - -/obj/item/staff/bostaff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(!wielded) - return ..() - return FALSE diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm index 74e391ef5510..1db631f18aa7 100644 --- a/code/game/gamemodes/clown_ops/clown_ops.dm +++ b/code/game/gamemodes/clown_ops/clown_ops.dm @@ -38,7 +38,7 @@ r_pocket = /obj/item/bikehorn id = /obj/item/card/id/syndicate backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ - /obj/item/kitchen/knife/combat/survival, + /obj/item/melee/knife/survival, /obj/item/dnainjector/clumsymut, //in case you want to be clumsy for the memes /obj/item/reagent_containers/spray/waterflower/lube) implants = list(/obj/item/implant/sad_trombone) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 675d5e7e5407..db73b7b797b9 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -120,7 +120,7 @@ id = /obj/item/card/id/syndicate belt = /obj/item/gun/ballistic/automatic/pistol/ringneck backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ - /obj/item/kitchen/knife/combat/survival) + /obj/item/melee/knife/survival) var/tc = 25 var/command_radio = FALSE @@ -169,7 +169,7 @@ backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ /obj/item/tank/jetpack/oxygen/harness=1,\ /obj/item/gun/ballistic/automatic/pistol/ringneck=1,\ - /obj/item/kitchen/knife/combat/survival) + /obj/item/melee/knife/survival) /datum/game_mode/nuclear/generate_credit_text() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 6b63a3ae83b8..9bad37507a35 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -151,7 +151,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod/retro, 17) /obj/item/reagent_containers/hypospray/CMO, /obj/item/clothing/accessory/medal/gold/captain, /obj/item/clothing/gloves/krav_maga, - /obj/item/nullrod, /obj/item/tank/jetpack, /obj/item/documents, /obj/item/nuke_core_container diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 121c93a07353..e70edb721788 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1236,8 +1236,8 @@ return if(!operating) - if(istype(I, /obj/item/fireaxe)) //being fireaxe'd - var/obj/item/fireaxe/axe = I + if(istype(I, /obj/item/melee/axe/fire)) //being fireaxe'd + var/obj/item/melee/axe/fire/axe = I if(axe && !axe.wielded) to_chat(user, "You need to be wielding \the [axe] to do that!") return diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index eb23f1060be3..737bacbb650f 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -253,7 +253,7 @@ return max_moles - min_moles > 20 /obj/machinery/door/attackby(obj/item/I, mob/user, params) - if(user.a_intent != INTENT_HARM && (I.tool_behaviour == TOOL_CROWBAR || istype(I, /obj/item/fireaxe))) + if(user.a_intent != INTENT_HARM && (I.tool_behaviour == TOOL_CROWBAR || istype(I, /obj/item/melee/axe/fire))) var/forced_open = FALSE if(istype(I, /obj/item/crowbar)) var/obj/item/crowbar/C = I diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 325712274633..2caecd950a9f 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -105,9 +105,9 @@ /obj/item/paper/fluff/jobs/prisoner/letter = 1, /obj/item/grenade/smokebomb = 1, /obj/item/flashlight/seclite = 1, - /obj/item/kitchen/knife/shiv = 4, - /obj/item/kitchen/knife/shiv/carrot = 1, - /obj/item/kitchen/knife = 1, + /obj/item/melee/knife/shiv = 4, + /obj/item/melee/knife/shiv/carrot = 1, + /obj/item/melee/knife/kitchen = 1, /obj/item/storage/wallet/random = 1, /obj/item/pda = 1 ) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 376d1ba16d11..17d6cf96b21a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -13,7 +13,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item name = "item" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' blocks_emissive = EMISSIVE_BLOCK_GENERIC ///icon state name for inhand overlays var/item_state = null @@ -1183,6 +1183,11 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item/proc/get_writing_implement_details() return null +/obj/item/proc/can_trigger_gun(mob/living/user) + if(!user.can_use_guns(src)) + return FALSE + return TRUE + /// Whether or not this item can be put into a storage item through attackby /obj/item/proc/attackby_storage_insert(datum/storage, atom/storage_holder, mob/user) return TRUE diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index d410dfef0d7d..d2ce379274dc 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -5,7 +5,7 @@ /obj/item/areaeditor name = "area modification item" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "blueprints" attack_verb = list("attacked", "bapped", "hit") var/fluffnotice = "Nobody's gonna read this stuff!" @@ -46,7 +46,7 @@ /obj/item/areaeditor/blueprints name = "station blueprints" desc = "Blueprints of what appear to be an experimental station design, with a large spinal weapon mounted to the front. There is a \"Classified\" stamp and several coffee stains on it." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "blueprints" fluffnotice = "Property of Nanotrasen. For heads of staff only. Store in high-secure storage." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF @@ -204,7 +204,7 @@ /obj/item/areaeditor/blueprints/cyborg name = "construction schematics" desc = "A digital copy of the local blueprints and zoning permits stored in your memory." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "blueprints" fluffnotice = "Intellectual Property of Nanotrasen. For use in engineering cyborgs only. Wipe from memory upon departure from company ownership." @@ -235,7 +235,7 @@ /obj/item/areaeditor/shuttle name = "shuttle expansion permit" desc = "A set of paperwork which is used to expand flyable shuttles." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "blueprints" color = COLOR_ASSEMBLY_WHITE fluffnotice = "Not to be used for non-sanctioned shuttle construction and maintenance." diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 9c6809cf3dbc..631eb7d2fc8f 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -14,7 +14,7 @@ name = "soap" desc = "A cheap bar of soap. Doesn't smell." gender = PLURAL - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "soap" lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' @@ -150,7 +150,7 @@ /obj/item/bikehorn name = "bike horn" desc = "A horn off of a bicycle." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "bike_horn" item_state = "bike_horn" lefthand_file = 'icons/mob/inhands/equipment/horns_lefthand.dmi' diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index d451f258bd78..b08adc216135 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -2,7 +2,7 @@ gender = PLURAL name = "red lipstick" desc = "A generic brand of lipstick." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "lipstick" w_class = WEIGHT_CLASS_TINY var/colour = "red" @@ -101,7 +101,7 @@ /obj/item/razor name = "electric razor" desc = "The latest and greatest power razor born from the science of shaving." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "razor" flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_TINY diff --git a/code/game/objects/items/courtroom.dm b/code/game/objects/items/courtroom.dm index 78d599ee4d9c..a1750a26493e 100644 --- a/code/game/objects/items/courtroom.dm +++ b/code/game/objects/items/courtroom.dm @@ -5,7 +5,7 @@ /obj/item/gavelhammer name = "gavel hammer" desc = "Order, order! No bombs in my courthouse." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "gavelhammer" force = 5 throwforce = 6 @@ -16,7 +16,7 @@ /obj/item/gavelblock name = "gavel block" desc = "Smack it with a gavel hammer when the assistants get rowdy." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "gavelblock" force = 2 throwforce = 2 diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index 113a72fb8d8d..3e0823761520 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -1,7 +1,7 @@ /obj/item/dnainjector name = "\improper DNA injector" desc = "This injects the person with DNA." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "dnainjector" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' diff --git a/code/game/objects/items/door_seal.dm b/code/game/objects/items/door_seal.dm index 64f7ca4fd92c..76b406f3c9ab 100644 --- a/code/game/objects/items/door_seal.dm +++ b/code/game/objects/items/door_seal.dm @@ -1,7 +1,7 @@ /obj/item/door_seal name = "pneumatic seal" desc = "A brace used to seal and reinforce an airlock. Useful for making areas inaccessible to those without opposable thumbs." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "pneumatic_seal" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index 8ec4353d1ca2..31ac7d44ecff 100644 --- a/code/game/objects/items/gift.dm +++ b/code/game/objects/items/gift.dm @@ -47,8 +47,7 @@ GLOBAL_LIST_EMPTY(possible_gifts) I.add_fingerprint(M) /obj/item/a_gift/proc/get_gift_type() - var/gift_type_list = list(/obj/item/sord, - /obj/item/storage/wallet, + var/gift_type_list = list(/obj/item/storage/wallet, /obj/item/storage/photo_album, /obj/item/storage/box/snappops, /obj/item/storage/crayons, @@ -67,7 +66,6 @@ GLOBAL_LIST_EMPTY(possible_gifts) /obj/item/bikehorn, /obj/item/toy/beach_ball, /obj/item/toy/beach_ball/holoball, - /obj/item/banhammer, /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus, /obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris, /obj/item/paicard, diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 9fece4feedd4..f36c27bb244d 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -20,7 +20,7 @@ name = "handcuffs" desc = "Use this to keep prisoners in line." gender = PLURAL - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "handcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' @@ -217,7 +217,7 @@ name = "leg cuffs" desc = "Use this to keep prisoners in line." gender = PLURAL - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "handcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' @@ -426,6 +426,6 @@ /obj/item/restraints/legcuffs/bola/watcher //tribal bola for tribal lizards name = "watcher Bola" desc = "A Bola made from the stretchy sinew of fallen watchers." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "bola_watcher" breakouttime = 45 diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm deleted file mode 100644 index 5b91f6b7bd87..000000000000 --- a/code/game/objects/items/holy_weapons.dm +++ /dev/null @@ -1,522 +0,0 @@ -// CHAPLAIN CUSTOM ARMORS // - -/obj/item/storage/box/holy - name = "Witchhunter Kit" - -/obj/item/storage/box/holy/PopulateContents() - new /obj/item/clothing/head/witchunter(src) - new /obj/item/clothing/suit/armor/witchhunter(src) - - -/obj/item/storage/box/holy/follower - name = "Followers of the Chaplain Kit" - -/obj/item/storage/box/holy/follower/PopulateContents() - new /obj/item/clothing/suit/hooded/chaplain_hoodie/leader(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) - -/obj/item/clothing/suit/hooded/chaplain_hoodie - name = "follower hoodie" - desc = "Hoodie made for acolytes of the chaplain." - icon_state = "chaplain_hoodie" - item_state = "chaplain_hoodie" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - hoodtype = /obj/item/clothing/head/hooded/chaplain_hood - -/obj/item/clothing/head/hooded/chaplain_hood - name = "follower hood" - desc = "Hood made for acolytes of the chaplain." - icon_state = "chaplain_hood" - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - -/obj/item/clothing/suit/hooded/chaplain_hoodie/leader - name = "leader hoodie" - desc = "Now you're ready for some 50 dollar bling water." - icon_state = "chaplain_hoodie_leader" - item_state = "chaplain_hoodie_leader" - hoodtype = /obj/item/clothing/head/hooded/chaplain_hood/leader - -/obj/item/clothing/head/hooded/chaplain_hood/leader - name = "leader hood" - desc = "I mean, you don't /have/ to seek bling water. I just think you should." - icon_state = "chaplain_hood_leader" - - -// CHAPLAIN NULLROD AND CUSTOM WEAPONS // - -/obj/item/nullrod - name = "null rod" - desc = "A rod of pure obsidian; its very presence disrupts and dampens the powers of Nar'Sie's followers." - icon_state = "nullrod" - item_state = "nullrod" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 18 - throw_speed = 3 - throw_range = 4 - throwforce = 10 - w_class = WEIGHT_CLASS_TINY - obj_flags = UNIQUE_RENAME - var/reskinned = FALSE - var/chaplain_spawnable = TRUE - -/obj/item/nullrod/godhand - icon_state = "disintegrate" - item_state = "disintegrate" - lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' - name = "god hand" - desc = "This hand of yours glows with an awesome power!" - item_flags = ABSTRACT | DROPDEL - w_class = WEIGHT_CLASS_HUGE - hitsound = 'sound/weapons/sear.ogg' - damtype = BURN - attack_verb = list("punched", "cross countered", "pummeled") - -/obj/item/nullrod/godhand/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - -/obj/item/nullrod/staff - icon_state = "godstaff-red" - item_state = "godstaff-red" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - name = "red holy staff" - desc = "It has a mysterious, protective aura." - w_class = WEIGHT_CLASS_HUGE - force = 5 - slot_flags = ITEM_SLOT_BACK - block_chance = 40 - var/shield_icon = "shield-red" - -/obj/item/nullrod/staff/worn_overlays(isinhands) - . = ..() - if(isinhands) - . += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_LAYER + 0.01) - -/obj/item/nullrod/staff/blue - name = "blue holy staff" - icon_state = "godstaff-blue" - item_state = "godstaff-blue" - shield_icon = "shield-old" - -/obj/item/nullrod/claymore - icon_state = "claymore_gold" - item_state = "claymore_gold" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/handling/knife2_pickup.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - name = "holy claymore" - desc = "A weapon fit for a crusade!" - w_class = WEIGHT_CLASS_HUGE - slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT - block_chance = 30 - sharpness = IS_SHARP - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - -/obj/item/nullrod/claymore/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 0 //Don't bring a sword to a gunfight - return ..() - -/obj/item/nullrod/claymore/darkblade - icon_state = "cultblade" - item_state = "cultblade" - lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' - righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' - inhand_x_dimension = 64 - inhand_y_dimension = 64 - name = "dark blade" - desc = "Spread the glory of the dark gods!" - slot_flags = ITEM_SLOT_BELT - hitsound = 'sound/hallucinations/growl1.ogg' - -/obj/item/nullrod/claymore/chainsaw_sword - icon_state = "chainswordon" - item_state = "chainswordon" - name = "sacred chainsaw sword" - desc = "Suffer not a heretic to live." - slot_flags = ITEM_SLOT_BELT - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = 'sound/weapons/chainsawhit.ogg' - tool_behaviour = TOOL_SAW - toolspeed = 1.5 //slower than a real saw - -/obj/item/nullrod/claymore/glowing - icon_state = "swordon" - item_state = "swordon" - name = "force weapon" - desc = "The blade glows with the power of faith. Or possibly a battery." - slot_flags = ITEM_SLOT_BELT - -/obj/item/nullrod/claymore/katana - name = "\improper Hanzo steel" - desc = "Capable of cutting clean through a holy claymore." - icon_state = "katana" - item_state = "katana" - slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK - supports_variations = VOX_VARIATION - -/obj/item/nullrod/claymore/multiverse - name = "extradimensional blade" - desc = "Once the harbinger of an interdimensional war, its sharpness fluctuates wildly." - icon_state = "multiverse" - item_state = "multiverse" - slot_flags = ITEM_SLOT_BELT - -/obj/item/nullrod/claymore/multiverse/attack(mob/living/carbon/M, mob/living/carbon/user) - force = rand(1, 30) - ..() - -/obj/item/nullrod/claymore/saber - name = "light energy sword" - hitsound = 'sound/weapons/blade1.ogg' - icon = 'icons/obj/transforming_energy.dmi' - icon_state = "swordblue" - item_state = "swordblue" - desc = "If you strike me down, I shall become more robust than you can possibly imagine." - slot_flags = ITEM_SLOT_BELT - -/obj/item/nullrod/claymore/saber/red - name = "dark energy sword" - icon_state = "swordred" - item_state = "swordred" - desc = "Woefully ineffective when used on steep terrain." - -/obj/item/nullrod/claymore/saber/pirate - name = "nautical energy sword" - icon_state = "cutlassred" - item_state = "cutlassred" - desc = "Convincing HR that your religion involved piracy was no mean feat." - -/obj/item/nullrod/sord - name = "\improper UNREAL SORD" - desc = "This thing is so unspeakably HOLY you are having a hard time even holding it." - icon_state = "sord" - item_state = "sord" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - force = 4.13 - throwforce = 1 - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - -/obj/item/nullrod/scythe - icon_state = "scythe1" - item_state = "scythe1" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "reaper scythe" - desc = "Ask not for whom the bell tolls..." - w_class = WEIGHT_CLASS_BULKY - armour_penetration = 35 - slot_flags = ITEM_SLOT_BACK - sharpness = IS_SHARP - attack_verb = list("chopped", "sliced", "cut", "reaped") - -/obj/item/nullrod/scythe/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 70, 110) //the harvest gives a high bonus chance - -/obj/item/nullrod/scythe/vibro - icon_state = "hfrequency0" - item_state = "hfrequency1" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "high frequency blade" - desc = "Bad references are the DNA of the soul." - attack_verb = list("chopped", "sliced", "cut", "zandatsu'd") - hitsound = 'sound/weapons/rapierhit.ogg' - -/obj/item/nullrod/scythe/spellblade - icon_state = "spellblade" - item_state = "spellblade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - icon = 'icons/obj/guns/magic.dmi' - name = "dormant spellblade" - desc = "The blade grants the wielder nearly limitless power...if they can figure out how to turn it on, that is." - hitsound = 'sound/weapons/rapierhit.ogg' - -/obj/item/nullrod/scythe/talking - icon_state = "talking_sword" - item_state = "talking_sword" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "possessed blade" - desc = "When the world falls into chaos, it's nice to have a friend by your side." - attack_verb = list("chopped", "sliced", "cut") - hitsound = 'sound/weapons/rapierhit.ogg' - var/possessed = FALSE - -/obj/item/nullrod/scythe/talking/relaymove(mob/living/user, direction) - return //stops buckled message spam for the ghost. - -/obj/item/nullrod/scythe/talking/attack_self(mob/living/user) - if(possessed) - return - - to_chat(user, "You attempt to wake the spirit of the blade...") - - possessed = TRUE - - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_POSSESSED_BLADE) - - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - var/mob/living/simple_animal/shade/S = new(src) - S.ckey = C.ckey - S.fully_replace_character_name(null, "The spirit of [name]") - S.status_flags |= GODMODE - S.copy_languages(user, LANGUAGE_MASTER) //Make sure the sword can understand and communicate with the user. - S.update_atom_languages() - grant_all_languages(FALSE, FALSE, TRUE) //Grants omnitongue - var/input = sanitize_name(stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN)) - - if(src && input) - name = input - S.fully_replace_character_name(null, "The spirit of [input]") - else - to_chat(user, "The blade is dormant. Maybe you can try again later.") - possessed = FALSE - -/obj/item/nullrod/scythe/talking/Destroy() - for(var/mob/living/simple_animal/shade/S in contents) - to_chat(S, "You were destroyed!") - qdel(S) - return ..() - -/obj/item/nullrod/scythe/talking/chainsword - icon_state = "chainswordon" - item_state = "chainswordon" - name = "possessed chainsaw sword" - desc = "Suffer not a heretic to live." - chaplain_spawnable = FALSE - force = 30 - slot_flags = ITEM_SLOT_BELT - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = 'sound/weapons/chainsawhit.ogg' - tool_behaviour = TOOL_SAW - toolspeed = 0.5 //faster than normal saw - -/obj/item/nullrod/scythe/talking/necro - desc = "An ancient weapon flush with the souls of the fallen. The blood of the necropolis has suffused it over time immemorial, granting a toothy bite." - force = 35 - block_chance = 35 - hitsound = 'sound/weapons/pierce_slow.ogg' - armour_penetration = 20// lower ap than the original possessed sword, go figure. The justification is that this has a serrated blade - chaplain_spawnable = FALSE - attack_verb = list("gnawed", "munched on", "chewed", "rended", "chomped") - name = "possessed greatsword" - var/bleed_stacks_per_hit = 2 //this effect has rapid scaling and is an instant down pretty much, I'll crib it since it can trigger on non-fauna - resistance_flags = FIRE_PROOF | ACID_PROOF - -/obj/item/nullrod/scythe/talking/necro/examine(mob/user) - . = ..() - . += "This weapon applies a growing blood curse on attack. Though it slowly fades, fully manifesting it causes your target's blood to violently explode, creating a lethal burst of damage." - -/obj/item/nullrod/scythe/talking/necro/attack(mob/living/target) - ..() - var/datum/status_effect/stacking/saw_bleed/B = target.has_status_effect(STATUS_EFFECT_SAWBLEED) - if(!B) - target.apply_status_effect(STATUS_EFFECT_SAWBLEED,bleed_stacks_per_hit) - else - B.add_stacks(bleed_stacks_per_hit) - -/obj/item/nullrod/hammmer - icon_state = "hammeron" - item_state = "hammeron" - lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' - name = "relic war hammer" - desc = "This war hammer cost the chaplain forty thousand space dollars." - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_HUGE - attack_verb = list("smashed", "bashed", "hammered", "crunched") - -/obj/item/nullrod/chainsaw - name = "chainsaw hand" - desc = "Good? Bad? You're the guy with the chainsaw hand." - icon_state = "chainsaw_on" - item_state = "mounted_chainsaw" - lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' - w_class = WEIGHT_CLASS_HUGE - item_flags = ABSTRACT - sharpness = IS_SHARP - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = 'sound/weapons/chainsawhit.ogg' - tool_behaviour = TOOL_SAW - toolspeed = 2 //slower than a real saw - -/obj/item/nullrod/chainsaw/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - AddComponent(/datum/component/butchering, 30, 100, 0, hitsound) - -/obj/item/nullrod/clown - icon = 'icons/obj/wizard.dmi' - icon_state = "clownrender" - item_state = "render" - name = "clown dagger" - desc = "Used for absolutely hilarious sacrifices." - hitsound = 'sound/items/bikehorn.ogg' - sharpness = IS_SHARP - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - -/obj/item/nullrod/pride_hammer - icon_state = "pride" - name = "Pride-struck Hammer" - desc = "It resonates an aura of Pride." - force = 16 - throwforce = 15 - w_class = 4 - slot_flags = ITEM_SLOT_BACK - attack_verb = list("attacked", "smashed", "crushed", "splattered", "cracked") - hitsound = 'sound/weapons/blade1.ogg' - -/obj/item/nullrod/pride_hammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) - . = ..() - if(!proximity) - return - if(prob(30) && ishuman(A)) - var/mob/living/carbon/human/H = A - user.reagents.trans_to(H, user.reagents.total_volume, 1, 1, 0, transfered_by = user) - to_chat(user, "Your pride reflects on [H].") - to_chat(H, "You feel insecure, taking on [user]'s burden.") - -/obj/item/nullrod/whip - name = "holy whip" - desc = "What a terrible night to be on Space Station 13."//very classic, it stays - icon_state = "chain" - item_state = "chain" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - attack_verb = list("whipped", "lashed") - hitsound = 'sound/weapons/chainhit.ogg' - -/obj/item/nullrod/fedora - name = "atheist's fedora" - desc = "The brim of the hat is as sharp as your wit. The edge would hurt almost as much as disproving the existence of God." - icon_state = "fedora" - item_state = "fedora" - slot_flags = ITEM_SLOT_HEAD - icon = 'icons/obj/clothing/hats.dmi' - force = 0 - throw_speed = 4 - throw_range = 7 - throwforce = 30 - sharpness = IS_SHARP - attack_verb = list("enlightened", "redpilled") - -/obj/item/nullrod/armblade - name = "dark blessing" - desc = "Particularly twisted deities grant gifts of dubious value." - icon = 'icons/obj/changeling_items.dmi' - icon_state = "arm_blade" - item_state = "arm_blade" - lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi' - righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi' - item_flags = ABSTRACT - w_class = WEIGHT_CLASS_HUGE - sharpness = IS_SHARP - -/obj/item/nullrod/armblade/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - AddComponent(/datum/component/butchering, 80, 70) - -/obj/item/nullrod/armblade/tentacle - name = "unholy blessing" - icon_state = "tentacle" - item_state = "tentacle" - -/obj/item/nullrod/carp - name = "carp-sie plushie" - desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp. Activate it to receive the blessing of Carp-Sie." - icon = 'icons/obj/plushes.dmi' - icon_state = "carpplush" - item_state = "carp_plushie" - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items_righthand.dmi' - force = 15 - attack_verb = list("bitten", "eaten", "fin slapped") - hitsound = 'sound/weapons/bite.ogg' - var/used_blessing = FALSE - -/obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking - name = "monk's staff" - desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, it is now used to harass the clown." - w_class = WEIGHT_CLASS_BULKY - force = 15 - block_chance = 40 - slot_flags = ITEM_SLOT_BACK - sharpness = IS_BLUNT - hitsound = "swing_hit" - attack_verb = list("smashed", "slammed", "whacked", "thwacked") - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "bostaff0" - item_state = "bostaff0" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - -/obj/item/nullrod/pitchfork - icon_state = "pitchfork0" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "unholy pitchfork" - w_class = WEIGHT_CLASS_NORMAL - desc = "Holding this makes you look absolutely devilish." - attack_verb = list("poked", "impaled", "pierced", "jabbed") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - -/obj/item/nullrod/egyptian - name = "egyptian staff" - desc = "A tutorial in mummification is carved into the staff. You could probably craft the wraps if you had some cloth." - icon = 'icons/obj/guns/magic.dmi' - icon_state = "pharoah_sceptre" - item_state = "pharoah_sceptre" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("bashes", "smacks", "whacks") - -/obj/item/nullrod/hypertool - icon = 'icons/obj/device.dmi' - icon_state = "hypertool" - item_state = "hypertool" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - name = "hypertool" - desc = "A tool so powerful even you cannot perfectly use it." - armour_penetration = 35 - damtype = BRAIN - attack_verb = list("pulsed", "mended", "cut") - hitsound = 'sound/effects/sparks4.ogg' - -/obj/item/nullrod/spear - name = "ancient spear" - desc = "An ancient spear made of brass, I mean gold, I mean bronze." - icon_state = "ratvarian_spear" - item_state = "ratvarian_spear" - lefthand_file = 'icons/mob/inhands/antag/clockwork_lefthand.dmi' - righthand_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi' - icon = 'icons/obj/clockwork_objects.dmi' - slot_flags = ITEM_SLOT_BELT - armour_penetration = 10 - sharpness = IS_SHARP_ACCURATE - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("stabbed", "poked", "slashed", "clocked") - hitsound = 'sound/weapons/bladeslice.ogg' diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index 23f7aec9b199..ef8aeefd0517 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -1,7 +1,6 @@ /obj/item/implantcase name = "implant case" desc = "A glass case containing an implant." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "implantcase-0" item_state = "implantcase" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm index 6de461954cb2..8f95ef9942d7 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -1,7 +1,7 @@ /obj/item/implanter name = "implanter" desc = "A sterile automatic implant injector." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "implanter0" item_state = "syringe_0" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' diff --git a/code/game/objects/items/implants/implantpad.dm b/code/game/objects/items/implants/implantpad.dm index 37667786262f..ccbda83067a2 100644 --- a/code/game/objects/items/implants/implantpad.dm +++ b/code/game/objects/items/implants/implantpad.dm @@ -1,7 +1,7 @@ /obj/item/implantpad name = "implant pad" desc = "Used to modify implants." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "implantpad-0" item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 4186e500ab98..f7ff9c187a9c 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -1,10 +1,7 @@ /* Kitchen tools * Contains: * Fork - * Kitchen knives - * Ritual Knife * Butcher's cleaver - * Combat Knife * Rolling Pins * Plastic Utensils */ @@ -64,222 +61,6 @@ user.visible_message("[user]'s fork snaps into tiny pieces in their hand.") qdel(src) -/obj/item/kitchen/knife - name = "kitchen knife" - icon = 'icons/obj/item/knife.dmi' - lefthand_file = 'icons/mob/inhands/weapons/knifes_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/knifes_righthand.dmi' - icon_state = "kitchenknife" - item_state = "kitchenknife" - desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." - pickup_sound = 'sound/items/handling/knife1_pickup.ogg' - drop_sound = 'sound/items/handling/knife3_drop.ogg' - flags_1 = CONDUCT_1 - force = 10 - w_class = WEIGHT_CLASS_SMALL - throwforce = 10 - hitsound = 'sound/weapons/bladeslice.ogg' - throw_speed = 3 - throw_range = 6 - custom_materials = list(/datum/material/iron=12000) - attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - sharpness = IS_SHARP_ACCURATE - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) - item_flags = EYE_STAB - var/bayonet = FALSE //Can this be attached to a gun? - custom_price = 250 - tool_behaviour = TOOL_KNIFE - -/obj/item/kitchen/knife/ComponentInitialize() - . = ..() - set_butchering() - -///Adds the butchering component, used to override stats for special cases -/obj/item/kitchen/knife/proc/set_butchering() - AddComponent(/datum/component/butchering, 80 - force, 100, force - 10) //bonus chance increases depending on force - -/obj/item/kitchen/knife/plastic - name = "plastic knife" - icon_state = "plastic_knife" - desc = "A very safe, barely sharp knife made of plastic. Good for cutting food and not much else." - force = 0 - w_class = WEIGHT_CLASS_TINY - throwforce = 0 - throw_range = 5 - custom_materials = list(/datum/material/plastic = 100) - attack_verb = list("prodded", "whiffed","scratched", "poked") - sharpness = IS_SHARP - custom_price = 50 - var/break_chance = 25 - -/obj/item/kitchen/knife/plastic/afterattack(mob/living/carbon/user) - .=..() - if(prob(break_chance)) - user.visible_message("[user]'s knife snaps into tiny pieces in their hand.") - qdel(src) - -/obj/item/kitchen/knife/pizza_cutter - name = "pizza cutter" - icon_state = "pizza_cutter" - desc = "A knife edge bent around a circle using the power of science. Perfect for safely cutting pizza." - force = 1 - w_class = WEIGHT_CLASS_SMALL - throwforce = 1 - throw_range = 6 - custom_materials = list(/datum/material/iron=4000) - attack_verb = list("prodded", "whiffed","rolled", "poked") - sharpness = IS_SHARP - -/obj/item/kitchen/knife/ritual - name = "ritual knife" - desc = "The unearthly energies that once powered this blade are now dormant." - icon = 'icons/obj/wizard.dmi' - icon_state = "render" - lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - w_class = WEIGHT_CLASS_NORMAL - -/obj/item/kitchen/knife/bloodletter - name = "bloodletter" - desc = "An occult looking dagger that is cold to the touch. Somehow, the flawless orb on the pommel is made entirely of liquid blood." - icon = 'icons/obj/ice_moon/artifacts.dmi' - icon_state = "bloodletter" - w_class = WEIGHT_CLASS_NORMAL - var/bleed_stacks_per_hit = 3 - -/obj/item/kitchen/knife/bloodletter/attack(mob/living/M, mob/living/carbon/user) - . =..() - if(istype(M) && (M.mob_biotypes & MOB_ORGANIC)) - var/datum/status_effect/stacking/saw_bleed/bloodletting/B = M.has_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting) - if(!B) - M.apply_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting, bleed_stacks_per_hit) - else - B.add_stacks(bleed_stacks_per_hit) - -/obj/item/kitchen/knife/butcher - name = "butcher's cleaver" - icon_state = "cleaver" - item_state = "cleaver" - desc = "A huge thing used for chopping and chopping up meat." - flags_1 = CONDUCT_1 - force = 15 - throwforce = 10 - custom_materials = list(/datum/material/iron=18000) - attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - w_class = WEIGHT_CLASS_NORMAL - custom_price = 600 - -/obj/item/kitchen/knife/hunting - name = "hunting knife" - desc = "Despite its name, it's mainly used for cutting meat from dead prey rather than actual hunting." - item_state = "huntingknife" - icon_state = "huntingknife" - -/obj/item/kitchen/knife/hunting/set_butchering() - AddComponent(/datum/component/butchering, 80 - force, 100, force + 10) - -/obj/item/kitchen/knife/switchblade - name = "switchblade" - icon_state = "switchblade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - desc = "A sharp, concealable, spring-loaded knife." - flags_1 = CONDUCT_1 - force = 3 - w_class = WEIGHT_CLASS_SMALL - throwforce = 5 - custom_materials = list(/datum/material/iron=12000) - hitsound = 'sound/weapons/genhit.ogg' - attack_verb = list("stubbed", "poked") - resistance_flags = FIRE_PROOF - var/extended = 0 - -/obj/item/kitchen/knife/switchblade/attack_self(mob/user) - extended = !extended - playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) - if(extended) - force = 20 - w_class = WEIGHT_CLASS_NORMAL - throwforce = 23 - icon_state = "switchblade_ext" - attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - else - force = 3 - w_class = WEIGHT_CLASS_SMALL - throwforce = 5 - icon_state = "switchblade" - attack_verb = list("stubbed", "poked") - hitsound = 'sound/weapons/genhit.ogg' - sharpness = IS_BLUNT - -/obj/item/kitchen/knife/combat - name = "combat knife" - icon = 'icons/obj/world/melee.dmi' - icon_state = "combatknife" - item_state = "combatknife" - desc = "A military combat utility survival knife." - embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) - force = 20 - throwforce = 20 - attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") - bayonet = TRUE - -/obj/item/kitchen/knife/combat/Initialize() - . = ..() - AddElement(/datum/element/world_icon, null, icon, 'icons/obj/item/knife.dmi') - -/obj/item/kitchen/knife/combat/survival - name = "survival knife" - icon_state = "survivalknife" - item_state = "survivalknife" - embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) - desc = "A hunting grade survival knife." - force = 15 - throwforce = 15 - bayonet = TRUE - -/obj/item/kitchen/knife/combat/bone - name = "bone dagger" - item_state = "bone_dagger" - icon_state = "bone_dagger" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - desc = "A sharpened bone. The bare minimum in survival." - embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) - force = 15 - throwforce = 15 - custom_materials = null - -/obj/item/kitchen/knife/combat/cyborg - name = "cyborg knife" - icon = 'icons/obj/items_cyborg.dmi' - icon_state = "knife_cyborg" - desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable." - -/obj/item/kitchen/knife/shiv - name = "glass shiv" - icon = 'icons/obj/shards.dmi' - icon_state = "shiv" - item_state = "shiv" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - desc = "A makeshift glass shiv." - force = 8 - throwforce = 12 - attack_verb = list("shanked", "shivved") - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - custom_materials = list(/datum/material/glass=400) - -/obj/item/kitchen/knife/shiv/carrot - name = "carrot shiv" - icon_state = "carrotshiv" - item_state = "carrotshiv" - icon = 'icons/obj/kitchen.dmi' - desc = "Unlike other carrots, you should probably keep this far away from your eyes." - custom_materials = null - /obj/item/kitchen/rollingpin name = "rolling pin" desc = "Used to knock out the Bartender." @@ -293,8 +74,6 @@ attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") custom_price = 200 -/* Trays moved to /obj/item/storage/bag */ - /obj/item/kitchen/spoon/plastic name = "plastic spoon" desc = "Just be careful your food doesn't melt the spoon first." @@ -305,9 +84,3 @@ custom_materials = list(/datum/material/plastic=120) custom_price = 50 var/break_chance = 25 - -/obj/item/kitchen/knife/plastic/afterattack(mob/living/carbon/user) - .=..() - if(prob(break_chance)) - user.visible_message("[user]'s spoon snaps into tiny pieces in their hand.") - qdel(src) diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/melee/chainsaw.dm similarity index 98% rename from code/game/objects/items/chainsaw.dm rename to code/game/objects/items/melee/chainsaw.dm index f9181ef3ac6a..494ec65cdb5a 100644 --- a/code/game/objects/items/chainsaw.dm +++ b/code/game/objects/items/melee/chainsaw.dm @@ -4,6 +4,7 @@ name = "chainsaw" desc = "A versatile power tool. Useful for limbing trees and delimbing humans." icon_state = "chainsaw_off" + icon = 'icons/obj/weapon/axe.dmi' lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' flags_1 = CONDUCT_1 diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/melee/dualsaber.dm similarity index 99% rename from code/game/objects/items/dualsaber.dm rename to code/game/objects/items/melee/dualsaber.dm index 7ddb02035927..965979db215a 100644 --- a/code/game/objects/items/dualsaber.dm +++ b/code/game/objects/items/melee/dualsaber.dm @@ -2,7 +2,7 @@ * Double-Bladed Energy Swords - Cheridan */ /obj/item/dualsaber - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' icon_state = "dualsaber" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index b500eadca2f2..34219662e53d 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -1,5 +1,5 @@ /obj/item/melee/transforming/energy - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' hitsound_on = 'sound/weapons/blade1.ogg' heat = 3500 max_integrity = 200 @@ -255,7 +255,6 @@ /obj/item/melee/transforming/energy/ctf name = "energy sword" desc = "That cable over there, I'm going to cut it." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "plasmasword0" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' diff --git a/code/game/objects/items/energyhalberd.dm b/code/game/objects/items/melee/energyhalberd.dm similarity index 98% rename from code/game/objects/items/energyhalberd.dm rename to code/game/objects/items/melee/energyhalberd.dm index 416964bbfded..62c6f5de6020 100644 --- a/code/game/objects/items/energyhalberd.dm +++ b/code/game/objects/items/melee/energyhalberd.dm @@ -3,8 +3,9 @@ * Copied mostly from dualsaber.dm to avoid inhertance issues */ /obj/item/energyhalberd - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' icon_state = "halberd" + icon = 'icons/obj/weapon/energy.dmi' lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' name = "energy halberd" diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm similarity index 72% rename from code/game/objects/items/fireaxe.dm rename to code/game/objects/items/melee/fireaxe.dm index b2e5534a92b0..bfbed0fe361b 100644 --- a/code/game/objects/items/fireaxe.dm +++ b/code/game/objects/items/melee/fireaxe.dm @@ -1,13 +1,7 @@ -/* - * Fireaxe - */ -/obj/item/fireaxe // DEM AXES MAN, marker -Agouri - icon_state = "fireaxe0" - base_icon_state = "fireaxe" +/obj/item/melee/axe + icon = 'icons/obj/weapon/axe.dmi' lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi' - name = "fire axe" - desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" force = 5 throwforce = 15 w_class = WEIGHT_CLASS_BULKY @@ -21,52 +15,58 @@ species_exception = list(/datum/species/kepori) var/wielded = FALSE // track wielded status on item -/obj/item/fireaxe/Initialize() +/obj/item/melee/axe/Initialize() . = ..() RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) -/obj/item/fireaxe/ComponentInitialize() +/obj/item/melee/axe/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=24, icon_wielded="[base_icon_state]1") /// triggered on wield of two handed item -/obj/item/fireaxe/proc/on_wield(obj/item/source, mob/user) +/obj/item/melee/axe/proc/on_wield(obj/item/source, mob/user) SIGNAL_HANDLER wielded = TRUE /// triggered on unwield of two handed item -/obj/item/fireaxe/proc/on_unwield(obj/item/source, mob/user) +/obj/item/melee/axe/proc/on_unwield(obj/item/source, mob/user) SIGNAL_HANDLER wielded = FALSE -/obj/item/fireaxe/update_icon_state() +/obj/item/melee/axe/update_icon_state() icon_state = "[base_icon_state]0" return ..() -/obj/item/fireaxe/afterattack(atom/A, mob/user, proximity) +/obj/item/melee/axe/afterattack(atom/A, mob/user, proximity) . = ..() if(!proximity) return if(wielded) //destroys windows and grilles in one hit if(istype(A, /obj/structure/window) || istype(A, /obj/structure/grille)) var/obj/structure/W = A - W.obj_destruction("fireaxe") + W.obj_destruction("axe") -/* - * Bone Axe - */ -/obj/item/fireaxe/boneaxe // Blatant imitation of the fireaxe, but made out of bone. - icon_state = "bone_axe0" - base_icon_state = "bone_axe" +/obj/item/melee/axe/fire // DEM AXES MAN, marker -Agouri + name = "fire axe" + desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?" + icon_state = "fireaxe0" + base_icon_state = "fireaxe" + +/obj/item/melee/axe/bone // Blatant imitation of the fireaxe, but made out of bone. name = "bone axe" desc = "A large, vicious axe crafted out of several sharpened bone plates and crudely tied together. Made of monsters, by killing monsters, for killing monsters." - icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "bone_axe0" + base_icon_state = "bone_axe" -/obj/item/fireaxe/boneaxe/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=23, icon_wielded="[base_icon_state]1") +/obj/item/melee/axe/scrap + name = "scrap axe" + desc = "Oversided and with a pretty dull blade, its decent against armour" + armour_penetration = 10 +/obj/item/melee/axe/scrap/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=22, icon_wielded="[base_icon_state]1") diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm new file mode 100644 index 000000000000..83022e7125ff --- /dev/null +++ b/code/game/objects/items/melee/knife.dm @@ -0,0 +1,208 @@ +/obj/item/melee/knife + icon_state = "kitchenknife" + item_state = "kitchenknife" + icon = 'icons/obj/weapon/knife.dmi' + lefthand_file = 'icons/mob/inhands/weapons/knifes_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/knifes_righthand.dmi' + pickup_sound = 'sound/items/handling/knife1_pickup.ogg' + drop_sound = 'sound/items/handling/knife3_drop.ogg' + flags_1 = CONDUCT_1 + force = 10 + w_class = WEIGHT_CLASS_SMALL + throwforce = 10 + hitsound = 'sound/weapons/bladeslice.ogg' + throw_speed = 3 + throw_range = 6 + custom_materials = list(/datum/material/iron=12000) + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + sharpness = IS_SHARP_ACCURATE + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + item_flags = EYE_STAB + tool_behaviour = TOOL_KNIFE + + +/obj/item/melee/knife/ComponentInitialize() + . = ..() + set_butchering() + +///Adds the butchering component, used to override stats for special cases +/obj/item/melee/knife/proc/set_butchering() + AddComponent(/datum/component/butchering, 80 - force, 100, force - 10) //bonus chance increases depending on force + +/obj/item/melee/knife/kitchen + name = "kitchen knife" + icon_state = "kitchenknife" + item_state = "kitchenknife" + desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." + +/obj/item/melee/knife/plastic + name = "plastic knife" + icon_state = "plastic_knife" + desc = "A very safe, barely sharp knife made of plastic. Good for cutting food and not much else." + force = 0 + w_class = WEIGHT_CLASS_TINY + throwforce = 0 + throw_range = 5 + custom_materials = list(/datum/material/plastic = 100) + attack_verb = list("prodded", "whiffed","scratched", "poked") + sharpness = IS_SHARP + custom_price = 50 + var/break_chance = 25 + +/obj/item/melee/knife/plastic/afterattack(mob/living/carbon/user) + .=..() + if(prob(break_chance)) + user.visible_message("[user]'s spoon snaps into tiny pieces in their hand.") + qdel(src) + + +/obj/item/melee/knife/plastic/afterattack(mob/living/carbon/user) + .=..() + if(prob(break_chance)) + user.visible_message("[user]'s knife snaps into tiny pieces in their hand.") + qdel(src) + +/obj/item/melee/knife/pizza_cutter + name = "pizza cutter" + icon_state = "pizza_cutter" + desc = "A knife edge bent around a circle using the power of science. Perfect for safely cutting pizza." + force = 1 + w_class = WEIGHT_CLASS_SMALL + throwforce = 1 + throw_range = 6 + custom_materials = list(/datum/material/iron=4000) + attack_verb = list("prodded", "whiffed","rolled", "poked") + sharpness = IS_SHARP + +/obj/item/melee/knife/butcher + name = "butcher's cleaver" + icon_state = "cleaver" + item_state = "cleaver" + desc = "A huge thing used for chopping and chopping up meat." + flags_1 = CONDUCT_1 + force = 15 + throwforce = 10 + custom_materials = list(/datum/material/iron=18000) + attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + w_class = WEIGHT_CLASS_NORMAL + custom_price = 600 + +/obj/item/melee/knife/hunting + name = "hunting knife" + desc = "Despite its name, it's mainly used for cutting meat from dead prey rather than actual hunting." + item_state = "huntingknife" + icon_state = "huntingknife" + +/obj/item/melee/knife/hunting/set_butchering() + AddComponent(/datum/component/butchering, 80 - force, 100, force + 10) + +/obj/item/melee/knife/combat + name = "combat knife" + icon_state = "combatknife" + item_state = "combatknife" + desc = "A military combat utility survival knife." + embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) + force = 20 + throwforce = 20 + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") + +/obj/item/melee/knife/survival + name = "survival knife" + icon_state = "survivalknife" + item_state = "survivalknife" + embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) + desc = "A hunting grade survival knife." + force = 15 + throwforce = 15 + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") + +/obj/item/melee/knife/bone + name = "bone dagger" + item_state = "bone_dagger" + icon_state = "bone_dagger" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + desc = "A sharpened bone. The bare minimum in survival." + embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10) + force = 15 + throwforce = 15 + custom_materials = null + +/obj/item/melee/knife/combat/cyborg + name = "cyborg knife" + icon = 'icons/obj/items_cyborg.dmi' + icon_state = "knife_cyborg" + desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable." + +/obj/item/melee/knife/shiv + name = "glass shiv" + icon = 'icons/obj/shards.dmi' + icon_state = "shiv" + item_state = "shiv" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + desc = "A makeshift glass shiv." + force = 8 + throwforce = 12 + attack_verb = list("shanked", "shivved") + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + custom_materials = list(/datum/material/glass=400) + +/obj/item/melee/knife/shiv/carrot + name = "carrot shiv" + icon_state = "carrotshiv" + item_state = "carrotshiv" + icon = 'icons/obj/kitchen.dmi' + desc = "Unlike other carrots, you should probably keep this far away from your eyes." + custom_materials = null + +/obj/item/melee/knife/switchblade + name = "switchblade" + icon_state = "switchblade" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + desc = "A sharp, concealable, spring-loaded knife." + flags_1 = CONDUCT_1 + force = 3 + w_class = WEIGHT_CLASS_SMALL + throwforce = 5 + throw_speed = 3 + throw_range = 6 + custom_materials = list(/datum/material/iron=12000) + hitsound = 'sound/weapons/genhit.ogg' + attack_verb = list("stubbed", "poked") + resistance_flags = FIRE_PROOF + var/extended = 0 + +/obj/item/melee/knife/switchblade/attack_self(mob/user) + extended = !extended + playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) + if(extended) + force = 20 + w_class = WEIGHT_CLASS_NORMAL + throwforce = 23 + icon_state = "switchblade_ext" + attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + hitsound = 'sound/weapons/bladeslice.ogg' + sharpness = IS_SHARP + else + force = 3 + w_class = WEIGHT_CLASS_SMALL + throwforce = 5 + icon_state = "switchblade" + attack_verb = list("stubbed", "poked") + hitsound = 'sound/weapons/genhit.ogg' + sharpness = IS_BLUNT + +/obj/item/melee/knife/letter_opener + name = "letter opener" + icon = 'icons/obj/items.dmi' + icon_state = "letter_opener" + desc = "A military combat utility survival knife." + embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) + force = 15 + throwforce = 15 + unique_reskin = list("Traditional" = "letter_opener", + "Boxcutter" = "letter_opener_b", + "Corporate" = "letter_opener_a" + ) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 9d90a1a43373..afb4bfe2ec33 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -1,5 +1,14 @@ /obj/item/melee item_flags = NEEDS_PERMIT + icon = 'icons/obj/weapon/misc.dmi' + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + var/projectile_block_chance = 0 + +/obj/item/melee/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(attack_type == PROJECTILE_ATTACK) + final_block_chance = projectile_block_chance //Don't bring a sword to a gunfight + return ..() /obj/item/melee/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user) if(target.check_block()) @@ -8,14 +17,11 @@ user.Stun(40) return TRUE - /obj/item/melee/chainofcommand name = "chain of command" desc = "A tool used by great men to placate the frothing masses." icon_state = "chain" item_state = "chain" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT force = 10 @@ -44,487 +50,11 @@ . = ..() AddComponent(/datum/component/butchering, 60, 80) //very imprecise -/obj/item/melee/sabre - name = "officer's sabre" - desc = "An elegant weapon, its monomolecular edge is capable of cutting through flesh and bone with ease." - icon_state = "sabre" - item_state = "sabre" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/unsheath.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - flags_1 = CONDUCT_1 - obj_flags = UNIQUE_RENAME - force = 15 - throwforce = 10 - w_class = WEIGHT_CLASS_BULKY - block_chance = 60 - armour_penetration = 75 - sharpness = IS_SHARP - attack_verb = list("slashed", "cut") - hitsound = 'sound/weapons/rapierhit.ogg' - custom_materials = list(/datum/material/iron = 1000) - -/obj/item/melee/sabre/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results. - -/obj/item/melee/sabre/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 0 //Don't bring a sword to a gunfight - return ..() - -/obj/item/melee/sabre/on_enter_storage(datum/component/storage/concrete/S) - var/obj/item/storage/belt/sabre/B = S.real_location() - if(istype(B)) - playsound(B, 'sound/items/sheath.ogg', 25, TRUE) - -/obj/item/melee/sabre/solgov - name = "solarian sabre" - desc = "A refined ceremonial blade often given to soldiers and high ranking officials of SolGov." - icon_state = "sabresolgov" - item_state = "sabresolgov" - -/obj/item/melee/sabre/suns - name = "SUNS sabre" - desc = "A blade of Solarian origin given to SUNS followers." - icon_state = "suns-sabre" - item_state = "suns-sabre" - -/obj/item/melee/sabre/suns/captain - name = "SUNS captain sabre" - desc = "An elegant blade awarded to SUNS captains. Despite its higher craftmanship, it appears to be just as effective as a normal sabre." - icon_state = "suns-capsabre" - item_state = "suns-capsabre" - -/obj/item/melee/sabre/suns/cmo - name = "SUNS stick sabre" - desc = "A thin blade used by SUNS medical instructors." - icon_state = "suns-swordstick" - item_state = "suns-swordstick" - -/obj/item/melee/sabre/suns/telescopic - name = "telescopic sabre" - desc = "A telescopic and retractable blade given to SUNS peacekeepers for easy concealment and carry. It's design makes it slightly less effective than normal sabres sadly, however it is still excelent at piercing armor." - icon_state = "suns-tsword" - item_state = "suns-tsword" - force = 0 - throwforce = 0 - block_chance = 0 - - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("smacked", "prodded") - - - var/extended = FALSE - var/extend_sound = 'sound/weapons/batonextend.ogg' - - - - var/on_icon_state = "suns-tsword_ext" - var/on_item_state = "suns-tsword_ext" - var/off_icon_state = "suns-tsword" - var/off_item_state = "suns-tsword" - - var/force_on = 10 - var/on_throwforce = 10 - var/on_blockchance = 40 - - var/force_off = 0 - var/off_throwforce = 0 - var/off_blockchance = 0 - - var/weight_class_on = WEIGHT_CLASS_BULKY - -/obj/item/melee/sabre/suns/telescopic/attack_self(mob/user) - extended = !extended - - if(extended) - to_chat(user, "You extend the [src].") - icon_state = on_icon_state - item_state = on_item_state - slot_flags = 0 - w_class = weight_class_on - force = force_on - throwforce = on_throwforce - block_chance = on_blockchance - attack_verb = list("slashed", "cut") - else - to_chat(user, "You collapse the [src].") - icon_state = off_icon_state - item_state = off_item_state - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - force = force_off - throwforce = off_throwforce - block_chance = off_blockchance - attack_verb = list("smacked", "prodded") - - playsound(get_turf(src), extend_sound, 50, TRUE) - add_fingerprint(user) - -/obj/item/melee/beesword - name = "The Stinger" - desc = "Taken from a giant bee and folded over one thousand times in pure honey. Can sting through anything." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "beesword" - item_state = "stinger" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - force = 5 - w_class = WEIGHT_CLASS_BULKY - sharpness = IS_SHARP - throwforce = 10 - block_chance = 20 - armour_penetration = 65 - attack_verb = list("slashed", "stung", "prickled", "poked") - hitsound = 'sound/weapons/rapierhit.ogg' - -/obj/item/melee/beesword/afterattack(atom/target, mob/user, proximity) - . = ..() - if(!proximity) - return - user.changeNext_move(CLICK_CD_RAPID) - if(iscarbon(target)) - var/mob/living/carbon/H = target - H.reagents.add_reagent(/datum/reagent/toxin, 4) - -/obj/item/melee/classic_baton - name = "police baton" - desc = "A wooden truncheon for beating criminal scum." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "classic_baton" - item_state = "classic_baton" - lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - force = 12 //9 hit crit - w_class = WEIGHT_CLASS_NORMAL - - var/cooldown_check = 0 // Used interally, you don't want to modify - - var/cooldown = 40 // Default wait time until can stun again. - var/knockdown_time_carbon = (1.5 SECONDS) // Knockdown length for carbons. - var/stun_time_silicon = (5 SECONDS) // If enabled, how long do we stun silicons. - var/stamina_damage = 55 // Do we deal stamina damage. - var/affect_silicon = FALSE // Does it stun silicons. - var/on_sound // "On" sound, played when switching between able to stun or not. - var/on_stun_sound = 'sound/effects/woodhit.ogg' // Default path to sound for when we stun. - var/stun_animation = TRUE // Do we animate the "hit" when stunning. - var/on = TRUE // Are we on or off. - - var/on_icon_state // What is our sprite when turned on - var/off_icon_state // What is our sprite when turned off - var/on_item_state // What is our in-hand sprite when turned on - var/force_on // Damage when on - not stunning - var/force_off // Damage when off - not stunning - var/weight_class_on // What is the new size class when turned on - -// Description for trying to stun when still on cooldown. -/obj/item/melee/classic_baton/proc/get_wait_description() - return - -// Description for when turning their baton "on" -/obj/item/melee/classic_baton/proc/get_on_description() - . = list() - - .["local_on"] = "You extend the baton." - .["local_off"] = "You collapse the baton." - - return . - -// Default message for stunning mob. -/obj/item/melee/classic_baton/proc/get_stun_description(mob/living/target, mob/living/user) - . = list() - - .["visible"] = "[user] knocks [target] down with [src]!" - .["local"] = "[user] knocks you down with [src]!" - - return . - -// Default message for stunning a silicon. -/obj/item/melee/classic_baton/proc/get_silicon_stun_description(mob/living/target, mob/living/user) - . = list() - - .["visible"] = "[user] pulses [target]'s sensors with the baton!" - .["local"] = "You pulse [target]'s sensors with the baton!" - - return . - -// Are we applying any special effects when we stun to carbon -/obj/item/melee/classic_baton/proc/additional_effects_carbon(mob/living/target, mob/living/user) - return - -// Are we applying any special effects when we stun to silicon -/obj/item/melee/classic_baton/proc/additional_effects_silicon(mob/living/target, mob/living/user) - return - -/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user) - if(!on) - return ..() - - add_fingerprint(user) - if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) - to_chat(user, "You hit yourself over the head!") - - user.Paralyze(knockdown_time_carbon * force) - user.apply_damage(stamina_damage, STAMINA, BODY_ZONE_HEAD) - - additional_effects_carbon(user) // user is the target here - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) - else - user.take_bodypart_damage(2*force) - return - if(iscyborg(target)) - // We don't stun if we're on harm. - if (user.a_intent != INTENT_HARM) - if (affect_silicon) - var/list/desc = get_silicon_stun_description(target, user) - - target.flash_act(affect_silicon = TRUE) - target.Paralyze(stun_time_silicon) - additional_effects_silicon(target, user) - - user.visible_message(desc["visible"], desc["local"]) - playsound(get_turf(src), on_stun_sound, 100, TRUE, -1) - - if (stun_animation) - user.do_attack_animation(target) - else - ..() - else - ..() - return - if(!isliving(target)) - return - if (user.a_intent == INTENT_HARM) - if(!..()) - return - if(!iscyborg(target)) - return - else - if(cooldown_check <= world.time) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) - return - if(check_martial_counter(H, user)) - return - - var/list/desc = get_stun_description(target, user) - - if (stun_animation) - user.do_attack_animation(target) - - playsound(get_turf(src), on_stun_sound, 75, TRUE, -1) - target.Knockdown(knockdown_time_carbon) - target.apply_damage(stamina_damage, STAMINA, BODY_ZONE_CHEST) - additional_effects_carbon(target, user) - - log_combat(user, target, "stunned", src) - add_fingerprint(user) - - target.visible_message(desc["visible"], desc["local"]) - - if(!iscarbon(user)) - target.LAssailant = null - else - target.LAssailant = WEAKREF(user) - cooldown_check = world.time + cooldown - else - var/wait_desc = get_wait_description() - if (wait_desc) - to_chat(user, wait_desc) - -/obj/item/conversion_kit - name = "conversion kit" - desc = "A strange box containing wood working tools and an instruction paper to turn stun batons into something else." - icon = 'icons/obj/storage.dmi' - icon_state = "uk" - custom_price = 450 - -/obj/item/melee/classic_baton/telescopic - name = "telescopic baton" - desc = "A compact yet robust personal defense weapon. Can be concealed when folded." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "telebaton_0" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - item_state = null - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - item_flags = NONE - force = 0 - on = FALSE - on_sound = 'sound/weapons/batonextend.ogg' - - on_icon_state = "telebaton_1" - off_icon_state = "telebaton_0" - on_item_state = "nullrod" - force_on = 10 - force_off = 0 - weight_class_on = WEIGHT_CLASS_BULKY - -/obj/item/melee/classic_baton/telescopic/attack_self(mob/user) - on = !on - var/list/desc = get_on_description() - - if(on) - to_chat(user, desc["local_on"]) - icon_state = on_icon_state - item_state = on_item_state - w_class = weight_class_on - force = force_on - attack_verb = list("smacked", "struck", "cracked", "beaten") - else - to_chat(user, desc["local_off"]) - icon_state = off_icon_state - item_state = null //no sprite for concealment even when in hand - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - force = force_off - attack_verb = list("hit", "poked") - - playsound(src.loc, on_sound, 50, TRUE) - add_fingerprint(user) - -/obj/item/melee/classic_baton/telescopic/contractor_baton - name = "contractor baton" - desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "contractor_baton_0" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - item_state = null - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - item_flags = NONE - force = 5 - - cooldown = 25 - stamina_damage = 85 - affect_silicon = TRUE - on_sound = 'sound/weapons/contractorbatonextend.ogg' - on_stun_sound = 'sound/effects/contractorbatonhit.ogg' - - on_icon_state = "contractor_baton_1" - off_icon_state = "contractor_baton_0" - on_item_state = "contractor_baton" - force_on = 16 - force_off = 5 - weight_class_on = WEIGHT_CLASS_NORMAL - -/obj/item/melee/classic_baton/telescopic/contractor_baton/get_wait_description() - return "The baton is still charging!" - -/obj/item/melee/classic_baton/telescopic/contractor_baton/additional_effects_carbon(mob/living/target, mob/living/user) - target.Jitter(20) - target.stuttering += 20 - -/obj/item/melee/supermatter_sword - name = "supermatter sword" - desc = "In a universe full of bad ideas, this might just be the worst." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "supermatter_sword" - item_state = "supermatter_sword" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - slot_flags = null - w_class = WEIGHT_CLASS_BULKY - force = 0.001 - armour_penetration = 1000 - var/obj/machinery/power/supermatter_crystal/shard - var/balanced = 1 - force_string = "INFINITE" - -/obj/item/melee/supermatter_sword/Initialize() - . = ..() - shard = new /obj/machinery/power/supermatter_crystal(src) - qdel(shard.countdown) - shard.countdown = null - START_PROCESSING(SSobj, src) - visible_message("[src] appears, balanced ever so perfectly on its hilt. This isn't ominous at all.") - -/obj/item/melee/supermatter_sword/process() - if(balanced || throwing || ismob(src.loc) || isnull(src.loc)) - return - if(!isturf(src.loc)) - var/atom/target = src.loc - forceMove(target.loc) - consume_everything(target) - else - var/turf/T = get_turf(src) - if(!isspaceturf(T)) - consume_turf(T) - -/obj/item/melee/supermatter_sword/afterattack(target, mob/user, proximity_flag) - . = ..() - if(user && target == user) - user.dropItemToGround(src) - if(proximity_flag) - consume_everything(target) - -/obj/item/melee/supermatter_sword/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - ..() - if(ismob(hit_atom)) - var/mob/M = hit_atom - if(src.loc == M) - M.dropItemToGround(src) - consume_everything(hit_atom) - -/obj/item/melee/supermatter_sword/pickup(user) - ..() - balanced = 0 - -/obj/item/melee/supermatter_sword/ex_act(severity, target) - visible_message("The blast wave smacks into [src] and rapidly flashes to ash.",\ - "You hear a loud crack as you are washed with a wave of heat.") - consume_everything() - -/obj/item/melee/supermatter_sword/acid_act() - visible_message("The acid smacks into [src] and rapidly flashes to ash.",\ - "You hear a loud crack as you are washed with a wave of heat.") - consume_everything() - -/obj/item/melee/supermatter_sword/bullet_act(obj/projectile/P) - visible_message("[P] smacks into [src] and rapidly flashes to ash.",\ - "You hear a loud crack as you are washed with a wave of heat.") - consume_everything(P) - return BULLET_ACT_HIT - - -/obj/item/melee/supermatter_sword/proc/consume_everything(target) - if(isnull(target)) - shard.Consume() - else if(!isturf(target)) - shard.Bumped(target) - else - consume_turf(target) - -/obj/item/melee/supermatter_sword/proc/consume_turf(turf/T) - var/oldtype = T.type - var/turf/newT = T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) - if(newT.type == oldtype) - return - playsound(T, 'sound/effects/supermatter.ogg', 50, TRUE) - T.visible_message("[T] smacks into [src] and rapidly flashes to ash.",\ - "You hear a loud crack as you are washed with a wave of heat.") - shard.Consume() - -/obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna) - return FALSE - /obj/item/melee/curator_whip name = "curator's whip" desc = "Somewhat eccentric and outdated, it still stings like hell to be hit by." icon_state = "whip" item_state = "chain" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' slot_flags = ITEM_SLOT_BELT force = 15 w_class = WEIGHT_CLASS_NORMAL @@ -538,345 +68,128 @@ H.drop_all_held_items() H.visible_message("[user] disarms [H]!", "[user] disarmed you!") -/obj/item/melee/roastingstick - name = "advanced roasting stick" - desc = "A telescopic roasting stick with a miniature shield generator designed to ensure entry into various high-tech shielded cooking ovens and firepits." - icon_state = "roastingstick_0" - item_state = "null" +/obj/item/melee/cleric_mace + name = "cleric mace" + desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past." + icon_state = "mace_greyscale" + item_state = "mace_greyscale" + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Material type changes the prefix as well as the color. + custom_materials = list(/datum/material/iron = 12000) //Defaults to an Iron Mace. slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - item_flags = NONE - force = 0 - attack_verb = list("hit", "poked") - var/obj/item/reagent_containers/food/snacks/sausage/held_sausage - var/static/list/ovens - var/on = FALSE - var/datum/beam/beam - -/obj/item/melee/roastingstick/Initialize() - . = ..() - if (!ovens) - ovens = typecacheof(list(/obj/singularity, /obj/machinery/power/supermatter_crystal, /obj/structure/bonfire)) - -/obj/item/melee/roastingstick/attack_self(mob/user) - on = !on - if(on) - extend(user) - else - if (held_sausage) - to_chat(user, "You can't retract [src] while [held_sausage] is attached!") - return - retract(user) - - playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) - add_fingerprint(user) - -/obj/item/melee/roastingstick/attackby(atom/target, mob/user) - ..() - if (istype(target, /obj/item/reagent_containers/food/snacks/sausage)) - if (!on) - to_chat(user, "You must extend [src] to attach anything to it!") - return - if (held_sausage) - to_chat(user, "[held_sausage] is already attached to [src]!") - return - if (user.transferItemToLoc(target, src)) - held_sausage = target - else - to_chat(user, "[target] doesn't seem to want to get on [src]!") - update_appearance() - -/obj/item/melee/roastingstick/attack_hand(mob/user) - ..() - if (held_sausage) - user.put_in_hands(held_sausage) - held_sausage = null - update_appearance() - -/obj/item/melee/roastingstick/update_overlays() - . = ..() - if (held_sausage) - . += mutable_appearance(icon, "roastingstick_sausage") - -/obj/item/melee/roastingstick/proc/extend(user) - to_chat(user, "You extend [src].") - icon_state = "roastingstick_1" - item_state = "nullrod" + force = 14 w_class = WEIGHT_CLASS_BULKY - -/obj/item/melee/roastingstick/proc/retract(user) - to_chat(user, "You collapse [src].") - icon_state = "roastingstick_0" - item_state = null - w_class = WEIGHT_CLASS_SMALL - -/obj/item/melee/roastingstick/handle_atom_del(atom/target) - if (target == held_sausage) - held_sausage = null - update_appearance() - -/obj/item/melee/roastingstick/afterattack(atom/target, mob/user, proximity) - . = ..() - if (!on) - return - if (is_type_in_typecache(target, ovens)) - if (held_sausage && held_sausage.roasted) - to_chat(src, "Your [held_sausage] has already been cooked!") - return - if (istype(target, /obj/singularity) && get_dist(user, target) < 10) - to_chat(user, "You send [held_sausage] towards [target].") - playsound(src, 'sound/items/rped.ogg', 50, TRUE) - beam = user.Beam(target,icon_state="rped_upgrade",time=100) - else if (user.Adjacent(target)) - to_chat(user, "You extend [src] towards [target].") - playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) - else - return - if(do_after(user, 100, target = user)) - finish_roasting(user, target) - else - QDEL_NULL(beam) - playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE) - -/obj/item/melee/roastingstick/proc/finish_roasting(user, atom/target) - to_chat(user, "You finish roasting [held_sausage].") - playsound(src,'sound/items/welder2.ogg',50,TRUE) - held_sausage.add_atom_colour(rgb(103,63,24), FIXED_COLOUR_PRIORITY) - held_sausage.name = "[target.name]-roasted [held_sausage.name]" - held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]." - update_appearance() - -/obj/item/melee/greykingsword - name = "blade of the grey-king" - desc = "A legendary sword made with 3 replica katanas nailed together and dipped in heavy narcotics." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "grey_sword" - item_state = "swordoff" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BACK - force = 15 throwforce = 8 - w_class = WEIGHT_CLASS_NORMAL - block_chance = 30 - attack_verb = list("struck", "slashed", "mall-ninjad", "tided", "multi-shanked", "shredded") - custom_materials = list(/datum/material/iron = 1420) - sharpness = IS_SHARP - - var/prick_chance = 50 - var/prick_chems = list( - /datum/reagent/toxin = 10, - /datum/reagent/toxin/mindbreaker = 10, - /datum/reagent/drug/space_drugs = 10, - /datum/reagent/drug/crank = 5, - /datum/reagent/drug/methamphetamine = 5, - /datum/reagent/drug/bath_salts = 5, - /datum/reagent/drug/aranesp = 5, - /datum/reagent/drug/pumpup = 10, - /datum/reagent/medicine/omnizine = 10, - /datum/reagent/medicine/earthsblood = 15, - /datum/reagent/medicine/omnizine/protozine = 15 - ) - -/obj/item/melee/greykingsword/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - if (iscarbon(target) && prob(prick_chance)) - var/mob/living/carbon/C = target - var/datum/reagent/R = pick(prick_chems) - C.reagents.add_reagent(R, prick_chems[R]) - C.visible_message("[user] is pricked!", \ - "You've been pricked by the [src]!") - log_combat(user, C, "pricked", src.name, "with [prick_chems[R]]u of [R]") - return ..() - - -/obj/item/melee/greykingsword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text, final_block_chance, damage, attack_type) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 1 //Still not like your Japaniese animes though. - return ..() - -/obj/item/kitchen/knife/letter_opener - name = "letter opener" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "letter_opener" - desc = "A military combat utility survival knife." - embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE) - force = 15 - throwforce = 15 - unique_reskin = list("Traditional" = "letter_opener", - "Boxcutter" = "letter_opener_b", - "Corporate" = "letter_opener_a" - ) -/obj/item/melee/weebstick - name = "Weeb Stick" - desc = "Glorious nippon steel, folded 1000 times." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "weeb_blade" - item_state = "weeb_blade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/handling/knife2_pickup.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - flags_1 = CONDUCT_1 - obj_flags = UNIQUE_RENAME - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - sharpness = IS_SHARP_ACCURATE - force = 25 - throw_speed = 4 - throw_range = 5 - throwforce = 12 - block_chance = 20 armour_penetration = 50 - hitsound = 'sound/weapons/anime_slash.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "diced", "cut") + attack_verb = list("smacked", "struck", "cracked", "beaten") + var/overlay_state = "mace_handle" + var/mutable_appearance/overlay -/obj/item/melee/weebstick/Initialize() +/obj/item/melee/cleric_mace/Initialize() . = ..() - AddComponent(/datum/component/butchering, 25, 90, 5) //Not made for scalping victims, but will work nonetheless - -/obj/item/melee/weebstick/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = block_chance / 2 //Pretty good... - return ..() - -/obj/item/melee/weebstick/on_exit_storage(datum/component/storage/concrete/S) - var/obj/item/storage/belt/weebstick/B = S.real_location() - if(istype(B)) - playsound(B, 'sound/items/unsheath.ogg', 25, TRUE) - -/obj/item/melee/weebstick/on_enter_storage(datum/component/storage/concrete/S) - var/obj/item/storage/belt/weebstick/B = S.real_location() - if(istype(B)) - playsound(B, 'sound/items/sheath.ogg', 25, TRUE) - -/obj/item/storage/belt/weebstick - name = "nanoforged blade sheath" - desc = "It yearns to bath in the blood of your enemies... but you hold it back!" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "weeb_sheath" - item_state = "sheath" - w_class = WEIGHT_CLASS_BULKY - force = 3 - var/primed = FALSE //Prerequisite to anime bullshit - // ##The anime bullshit## - Mostly stolen from action/innate/dash - var/dash_sound = 'sound/weapons/unsheathed_blade.ogg' - var/beam_effect = "blood_beam" - var/phasein = /obj/effect/temp_visual/dir_setting/cult/phase - var/phaseout = /obj/effect/temp_visual/dir_setting/cult/phase - -/obj/item/storage/belt/weebstick/ComponentInitialize() - . = ..() - AddElement(/datum/element/update_icon_updates_onmob) - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 1 - STR.use_sound = null - STR.max_w_class = WEIGHT_CLASS_BULKY - STR.set_holdable(list( - /obj/item/melee/weebstick - )) + overlay = mutable_appearance(icon, overlay_state) + overlay.appearance_flags = RESET_COLOR + add_overlay(overlay) + +/obj/item/melee/baseball_bat + name = "baseball bat" + desc = "There ain't a skull in the league that can withstand a swatter." + icon = 'icons/obj/weapon/blunt.dmi' + icon_state = "baseball_bat" + item_state = "baseball_bat" + force = 12 + throwforce = 12 + attack_verb = list("beat", "smacked") + custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 3.5) + w_class = WEIGHT_CLASS_HUGE + var/homerun_ready = 0 + var/homerun_able = 0 -/obj/item/storage/belt/weebstick/examine(mob/user) - . = ..() - if(length(contents)) - . += "Use [src] in-hand to prime for an opening strike." - . += "Alt-click it to quickly draw the blade." +/obj/item/melee/baseball_bat/homerun + name = "home run bat" + desc = "This thing looks dangerous... Dangerously good at baseball, that is." + homerun_able = 1 -/obj/item/storage/belt/weebstick/AltClick(mob/user) - if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)) || primed) +/obj/item/melee/baseball_bat/attack_self(mob/user) + if(!homerun_able) + ..() return - if(length(contents)) - var/obj/item/I = contents[1] - playsound(user, dash_sound, 25, TRUE) - user.visible_message("[user] swiftly draws \the [I].", "You draw \the [I].") - user.put_in_hands(I) - update_appearance() - else - to_chat(user, "[src] is empty!") - -/obj/item/storage/belt/weebstick/attack_self(mob/user) - if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + if(homerun_ready) + to_chat(user, "You're already ready to do a home run!") + ..() return - if(length(contents)) - var/datum/component/storage/CP = GetComponent(/datum/component/storage) - if(primed) - CP.locked = FALSE - playsound(user, 'sound/items/sheath.ogg', 25, TRUE) - to_chat(user, "You return your stance.") - primed = FALSE - update_appearance() - else - CP.locked = TRUE //Prevents normal removal of the blade while primed - playsound(user, 'sound/items/unsheath.ogg', 25, TRUE) - user.visible_message("[user] grips the blade within [src] and primes to attack.", "You take an opening stance...", "You hear a weapon being drawn...") - primed = TRUE - update_appearance() - else - to_chat(user, "[src] is empty!") + to_chat(user, "You begin gathering strength...") + playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, TRUE) + if(do_after(user, 90, target = src)) + to_chat(user, "You gather power! Time for a home run!") + homerun_ready = 1 + ..() -/obj/item/storage/belt/weebstick/afterattack(atom/A, mob/living/user, proximity_flag, params) +/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user) . = ..() - if(primed && length(contents)) - if(!(A in view(user.client.view, user))) - return - var/obj/item/I = contents[1] - if(!user.put_in_inactive_hand(I)) - to_chat(user, "You need a free hand!") - return - var/datum/component/storage/CP = GetComponent(/datum/component/storage) - CP.locked = FALSE - primed = FALSE - update_appearance() - primed_attack(A, user) - if(CanReach(A, I)) - I.melee_attack_chain(user, A, params) - user.swap_hand() - -/obj/item/storage/belt/weebstick/proc/primed_attack(atom/target, mob/living/user) - var/turf/end = get_turf(user) - var/turf/start = get_turf(user) - var/obj/spot1 = new phaseout(start, user.dir) - var/halt = FALSE - // Stolen dash code - for(var/T in getline(start, get_turf(target))) - var/turf/tile = T - for(var/mob/living/victim in tile) - if(victim != user) - playsound(victim, 'sound/weapons/anime_slash.ogg', 10, TRUE) - victim.take_bodypart_damage(15) - // Unlike actual ninjas, we stop noclip-dashing here. - if(isclosedturf(T)) - halt = TRUE - for(var/obj/O in tile) - // We ignore mobs as we are cutting through them - if(!O.CanPass(user, tile)) - halt = TRUE - if(halt) - break - else - end = T - user.forceMove(end) // YEET - playsound(start, dash_sound, 35, TRUE) - var/obj/spot2 = new phasein(end, user.dir) - spot1.Beam(spot2, beam_effect, time=20) - user.visible_message("In a flash of red, [user] draws [user.p_their()] blade!", "You dash forward while drawing your weapon!", "You hear a blade slice through the air at impossible speeds!") + var/atom/throw_target = get_edge_target_turf(target, user.dir) + if(homerun_ready) + user.visible_message("It's a home run!") + target.throw_at(throw_target, rand(8,10), 14, user) + SSexplosions.medturf += throw_target + playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, TRUE) + homerun_ready = 0 + return + else if(!target.anchored) + target.throw_at(throw_target, rand(1,2), 2, user, gentle = TRUE) + +/obj/item/melee/baseball_bat/ablative + name = "metal baseball bat" + desc = "This bat is made of highly reflective, highly armored material." + icon_state = "baseball_bat_metal" + item_state = "baseball_bat_metal" + force = 12 + throwforce = 15 -/obj/item/storage/belt/weebstick/update_icon_state() - icon_state = "weeb_sheath" - item_state = "sheath" - if(contents.len) - if(primed) - icon_state += "-primed" - else - icon_state += "-blade" - item_state += "-sabre" - return ..() +/obj/item/melee/baseball_bat/bone + name = "bone club" + desc = "A long and hard shaft of rock solid bone." // I am the master of comedy + icon_state = "baseball_bat_bone" + item_state = "baseball_bat_bone" + +/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers + var/picksound = rand(1,2) + var/turf = get_turf(src) + if(picksound == 1) + playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, TRUE) + if(picksound == 2) + playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, TRUE) + return 1 + +/obj/item/melee/flyswatter + name = "flyswatter" + desc = "Useful for killing insects of all sizes." + icon_state = "flyswatter" + item_state = "flyswatter" + force = 1 + throwforce = 1 + attack_verb = list("swatted", "smacked") + hitsound = 'sound/effects/snap.ogg' + w_class = WEIGHT_CLASS_SMALL + //Things in this list will be instantly splatted. Flyman weakness is handled in the flyman species weakness proc. + var/list/strong_against -/obj/item/storage/belt/weebstick/PopulateContents() - //Time to generate names now that we have the sword - var/n_title = pick(GLOB.ninja_titles) - var/n_name = pick(GLOB.ninja_names) - var/obj/item/melee/weebstick/sword = new /obj/item/melee/weebstick(src) - sword.name = "[n_title] blade of clan [n_name]" - name = "[n_title] scabbard of clan [n_name]" - update_appearance() +/obj/item/melee/flyswatter/Initialize() + . = ..() + strong_against = typecacheof(list( + /mob/living/simple_animal/hostile/poison/bees/, + /mob/living/simple_animal/butterfly, + /mob/living/simple_animal/hostile/cockroach, + /obj/item/queen_bee + )) + +/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag) + . = ..() + if(proximity_flag) + if(is_type_in_typecache(target, strong_against)) + new /obj/effect/decal/cleanable/insectguts(target.drop_location()) + to_chat(user, "You easily splat the [target].") + if(istype(target, /mob/living/)) + var/mob/living/bug = target + bug.death(1) + else + qdel(target) diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/melee/powerfist.dm similarity index 100% rename from code/game/objects/items/powerfist.dm rename to code/game/objects/items/melee/powerfist.dm diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm new file mode 100644 index 000000000000..42717117fd8e --- /dev/null +++ b/code/game/objects/items/melee/spear.dm @@ -0,0 +1,137 @@ +//spears +/obj/item/melee/spear + icon_state = "spearglass0" + icon = 'icons/obj/weapon/spear.dmi' + lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' + name = "spear" + desc = "A haphazardly-constructed yet still deadly weapon of ancient design." + force = 10 + w_class = WEIGHT_CLASS_BULKY + slot_flags = ITEM_SLOT_BACK + throwforce = 20 + throw_speed = 4 + embedding = list("impact_pain_mult" = 3) + armour_penetration = 10 + custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075) + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") + sharpness = IS_SHARP + max_integrity = 200 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) + species_exception = list(/datum/species/kepori) + var/icon_prefix = "spearglass" + +/obj/item/melee/spear/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad. + AddComponent(/datum/component/jousting) + AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") + +/obj/item/melee/spear/update_icon_state() + icon_state = "[icon_prefix]0" + return ..() + +/obj/item/melee/spear/CheckParts(list/parts_list) + var/obj/item/shard/tip = locate() in parts_list + if (istype(tip, /obj/item/shard/plasma)) + throwforce = 21 + icon_prefix = "spearplasma" + AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") + update_appearance() + qdel(tip) + ..() + +/* + * Bone Spear + */ +/obj/item/melee/spear/bone //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. + icon_state = "bone_spear0" + name = "bone spear" + base_icon_state = "bone_spear0" + icon_prefix = "bone_spear" + desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." + //this should be a plasma spear or worse. + force = 11 + throwforce = 21 + +/obj/item/melee/spear/bone/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") + +/obj/item/melee/spear/explosive + name = "explosive lance" + icon_state = "spearbomb0" + base_icon_state = "spearbomb" + icon_prefix = "spearbomb" + var/obj/item/grenade/explosive = null + var/war_cry = "AAAAARGH!!!" + var/wielded = FALSE // track wielded status on item + +/obj/item/melee/spear/explosive/Initialize(mapload) + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) + set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances + +/obj/item/melee/spear/explosive/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") + +/// triggered on wield of two handed item +/obj/item/melee/spear/explosive/proc/on_wield(obj/item/source, mob/user) + SIGNAL_HANDLER + + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/melee/spear/explosive/proc/on_unwield(obj/item/source, mob/user) + SIGNAL_HANDLER + + wielded = FALSE + +/obj/item/melee/spear/explosive/proc/set_explosive(obj/item/grenade/G) + if(explosive) + QDEL_NULL(explosive) + G.forceMove(src) + explosive = G + desc = "A makeshift spear with [G] attached to it" + +/obj/item/melee/spear/explosive/CheckParts(list/parts_list) + var/obj/item/grenade/G = locate() in parts_list + if(G) + var/obj/item/melee/spear/lancePart = locate() in parts_list + var/datum/component/two_handed/comp_twohand = lancePart.GetComponent(/datum/component/two_handed) + if(comp_twohand) + var/lance_wielded = comp_twohand.force_wielded + var/lance_unwielded = comp_twohand.force_unwielded + AddComponent(/datum/component/two_handed, force_unwielded=lance_unwielded, force_wielded=lance_wielded) + throwforce = lancePart.throwforce + icon_prefix = lancePart.icon_prefix + parts_list -= G + parts_list -= lancePart + set_explosive(G) + qdel(lancePart) + ..() + +/obj/item/melee/spear/explosive/examine(mob/user) + . = ..() + . += "Alt-click to set your war cry." + +/obj/item/melee/spear/explosive/AltClick(mob/user) + if(user.canUseTopic(src, BE_CLOSE)) + ..() + if(istype(user) && loc == user) + var/input = stripped_input(user,"What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50) + if(input) + src.war_cry = input + +/obj/item/melee/spear/explosive/afterattack(atom/movable/AM, mob/user, proximity) + . = ..() + if(!proximity) + return + if(wielded) + user.say("[war_cry]", forced="spear warcry") + explosive.forceMove(AM) + explosive.prime() + qdel(src) diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/melee/stunbaton.dm similarity index 59% rename from code/game/objects/items/stunbaton.dm rename to code/game/objects/items/melee/stunbaton.dm index 3265b36a3b41..05225d80cff8 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/melee/stunbaton.dm @@ -1,7 +1,7 @@ /obj/item/melee/baton name = "stun baton" desc = "A stun baton for incapacitating people with." - + icon = 'icons/obj/weapon/baton.dmi' icon_state = "stunbaton" item_state = "baton" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' @@ -333,3 +333,233 @@ /obj/item/melee/baton/boomerang/loaded //Same as above, comes with a cell. preload_cell_type = /obj/item/stock_parts/cell/high + +/obj/item/melee/classic_baton + name = "police baton" + desc = "A wooden truncheon for beating criminal scum." + icon = 'icons/obj/weapon/baton.dmi' + icon_state = "classic_baton" + item_state = "classic_baton" + lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' + slot_flags = ITEM_SLOT_BELT + force = 12 //9 hit crit + w_class = WEIGHT_CLASS_NORMAL + + var/cooldown_check = 0 // Used interally, you don't want to modify + + var/cooldown = 40 // Default wait time until can stun again. + var/knockdown_time_carbon = (1.5 SECONDS) // Knockdown length for carbons. + var/stun_time_silicon = (5 SECONDS) // If enabled, how long do we stun silicons. + var/stamina_damage = 55 // Do we deal stamina damage. + var/affect_silicon = FALSE // Does it stun silicons. + var/on_sound // "On" sound, played when switching between able to stun or not. + var/on_stun_sound = 'sound/effects/woodhit.ogg' // Default path to sound for when we stun. + var/stun_animation = TRUE // Do we animate the "hit" when stunning. + var/on = TRUE // Are we on or off. + + var/on_icon_state // What is our sprite when turned on + var/off_icon_state // What is our sprite when turned off + var/on_item_state // What is our in-hand sprite when turned on + var/force_on // Damage when on - not stunning + var/force_off // Damage when off - not stunning + var/weight_class_on // What is the new size class when turned on + +// Description for trying to stun when still on cooldown. +/obj/item/melee/classic_baton/proc/get_wait_description() + return + +// Description for when turning their baton "on" +/obj/item/melee/classic_baton/proc/get_on_description() + . = list() + + .["local_on"] = "You extend the baton." + .["local_off"] = "You collapse the baton." + + return . + +// Default message for stunning mob. +/obj/item/melee/classic_baton/proc/get_stun_description(mob/living/target, mob/living/user) + . = list() + + .["visible"] = "[user] knocks [target] down with [src]!" + .["local"] = "[user] knocks you down with [src]!" + + return . + +// Default message for stunning a silicon. +/obj/item/melee/classic_baton/proc/get_silicon_stun_description(mob/living/target, mob/living/user) + . = list() + + .["visible"] = "[user] pulses [target]'s sensors with the baton!" + .["local"] = "You pulse [target]'s sensors with the baton!" + + return . + +// Are we applying any special effects when we stun to carbon +/obj/item/melee/classic_baton/proc/additional_effects_carbon(mob/living/target, mob/living/user) + return + +// Are we applying any special effects when we stun to silicon +/obj/item/melee/classic_baton/proc/additional_effects_silicon(mob/living/target, mob/living/user) + return + +/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user) + if(!on) + return ..() + + add_fingerprint(user) + if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) + to_chat(user, "You hit yourself over the head!") + + user.Paralyze(knockdown_time_carbon * force) + user.apply_damage(stamina_damage, STAMINA, BODY_ZONE_HEAD) + + additional_effects_carbon(user) // user is the target here + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) + else + user.take_bodypart_damage(2*force) + return + if(iscyborg(target)) + // We don't stun if we're on harm. + if (user.a_intent != INTENT_HARM) + if (affect_silicon) + var/list/desc = get_silicon_stun_description(target, user) + + target.flash_act(affect_silicon = TRUE) + target.Paralyze(stun_time_silicon) + additional_effects_silicon(target, user) + + user.visible_message(desc["visible"], desc["local"]) + playsound(get_turf(src), on_stun_sound, 100, TRUE, -1) + + if (stun_animation) + user.do_attack_animation(target) + else + ..() + else + ..() + return + if(!isliving(target)) + return + if (user.a_intent == INTENT_HARM) + if(!..()) + return + if(!iscyborg(target)) + return + else + if(cooldown_check <= world.time) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) + return + if(check_martial_counter(H, user)) + return + + var/list/desc = get_stun_description(target, user) + + if (stun_animation) + user.do_attack_animation(target) + + playsound(get_turf(src), on_stun_sound, 75, TRUE, -1) + target.Knockdown(knockdown_time_carbon) + target.apply_damage(stamina_damage, STAMINA, BODY_ZONE_CHEST) + additional_effects_carbon(target, user) + + log_combat(user, target, "stunned", src) + add_fingerprint(user) + + target.visible_message(desc["visible"], desc["local"]) + + if(!iscarbon(user)) + target.LAssailant = null + else + target.LAssailant = WEAKREF(user) + cooldown_check = world.time + cooldown + else + var/wait_desc = get_wait_description() + if (wait_desc) + to_chat(user, wait_desc) + +/obj/item/conversion_kit + name = "conversion kit" + desc = "A strange box containing wood working tools and an instruction paper to turn stun batons into something else." + icon = 'icons/obj/storage.dmi' + icon_state = "uk" + custom_price = 450 + +/obj/item/melee/classic_baton/telescopic + name = "telescopic baton" + desc = "A compact yet robust personal defense weapon. Can be concealed when folded." + icon_state = "telebaton_0" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + item_state = null + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + item_flags = NONE + force = 0 + on = FALSE + on_sound = 'sound/weapons/batonextend.ogg' + + on_icon_state = "telebaton_1" + off_icon_state = "telebaton_0" + on_item_state = "nullrod" + force_on = 10 + force_off = 0 + weight_class_on = WEIGHT_CLASS_BULKY + +/obj/item/melee/classic_baton/telescopic/attack_self(mob/user) + on = !on + var/list/desc = get_on_description() + + if(on) + to_chat(user, desc["local_on"]) + icon_state = on_icon_state + item_state = on_item_state + w_class = weight_class_on + force = force_on + attack_verb = list("smacked", "struck", "cracked", "beaten") + else + to_chat(user, desc["local_off"]) + icon_state = off_icon_state + item_state = null //no sprite for concealment even when in hand + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + force = force_off + attack_verb = list("hit", "poked") + + playsound(src.loc, on_sound, 50, TRUE) + add_fingerprint(user) + +/obj/item/melee/classic_baton/telescopic/contractor_baton + name = "contractor baton" + desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets." + icon_state = "contractor_baton_0" + item_state = null + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + item_flags = NONE + force = 5 + + cooldown = 25 + stamina_damage = 85 + affect_silicon = TRUE + on_sound = 'sound/weapons/contractorbatonextend.ogg' + on_stun_sound = 'sound/effects/contractorbatonhit.ogg' + + on_icon_state = "contractor_baton_1" + off_icon_state = "contractor_baton_0" + on_item_state = "contractor_baton" + force_on = 16 + force_off = 5 + weight_class_on = WEIGHT_CLASS_NORMAL + +/obj/item/melee/classic_baton/telescopic/contractor_baton/get_wait_description() + return "The baton is still charging!" + +/obj/item/melee/classic_baton/telescopic/contractor_baton/additional_effects_carbon(mob/living/target, mob/living/user) + target.Jitter(20) + target.stuttering += 20 diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm new file mode 100644 index 000000000000..21bde05c0dd3 --- /dev/null +++ b/code/game/objects/items/melee/sword.dm @@ -0,0 +1,539 @@ +/obj/item/melee/sword + icon = 'icons/obj/weapon/sword.dmi' + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + pickup_sound = 'sound/items/unsheath.ogg' + drop_sound = 'sound/items/handling/metal_drop.ogg' + hitsound = 'sound/weapons/bladeslice.ogg' + flags_1 = CONDUCT_1 + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK + w_class = WEIGHT_CLASS_BULKY + obj_flags = UNIQUE_RENAME + block_chance = 25 + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + sharpness = IS_SHARP + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) + resistance_flags = FIRE_PROOF + +/obj/item/melee/sword/claymore + name = "claymore" + desc = "What are you standing around staring at this for? Get to killing!" + icon_state = "claymore" + item_state = "claymore" + force = 30 + throwforce = 10 + block_chance = 40 + max_integrity = 200 + +/obj/item/melee/sword/claymore/Initialize() + . = ..() + AddComponent(/datum/component/butchering, 40, 105) + +/obj/item/melee/sword/bone + name = "bone sword" + desc = "Jagged pieces of bone are tied to what looks like a goliaths femur." + icon_state = "bone_sword" + item_state = "bone_sword" + force = 15 + throwforce = 10 + armour_penetration = 15 + +/obj/item/melee/sword/scrap + name = "scrap sword" + desc = "A jagged and painful weapon only effective on targets without an armour" + icon_state = "machete0" + force = 24 + throwforce = 10 + armour_penetration = -35 + max_integrity = 100 + +/obj/item/melee/sword/mass + name = "mass produced machete" + desc = "A middle ground between a machete and a short sword. A simple construction of stamped steel but its so cheap its hard to complain. Its right between being a one hand and two handed weapon" + icon_state = "machete0" + base_icon_state = "machete" + force = 20 + throwforce = 15 + max_integrity = 50 + +/obj/item/melee/sword/mass/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=20, force_wielded=22, icon_wielded="[base_icon_state]1") + +/obj/item/melee/sword/katana + name = "katana" + desc = "Woefully underpowered in D20." + icon_state = "katana" + item_state = "katana" + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK + force = 30 + throwforce = 10 + w_class = WEIGHT_CLASS_HUGE + block_chance = 10 + max_integrity = 200 + +/obj/item/melee/sword/chainsaw + name = "sacred chainsaw sword" + desc = "Suffer not a heretic to live." + icon_state = "chainswordon" + item_state = "chainswordon" + force = 15 + throwforce = 10 + armour_penetration = 25 + slot_flags = ITEM_SLOT_BELT + attack_verb = list("sawed", "torn", "cut", "chopped", "diced") + hitsound = 'sound/weapons/chainsawhit.ogg' + tool_behaviour = TOOL_SAW + toolspeed = 1.5 //slower than a real saw + +/obj/item/melee/sword/sabre + name = "officer's sabre" + desc = "An elegant weapon, its monomolecular edge is capable of cutting through flesh and bone with ease." + icon_state = "sabre" + item_state = "sabre" + force = 15 + throwforce = 10 + block_chance = 60 + armour_penetration = 75 + attack_verb = list("slashed", "cut") + hitsound = 'sound/weapons/rapierhit.ogg' + custom_materials = list(/datum/material/iron = 1000) + +/obj/item/melee/sword/sabre/Initialize() + . = ..() + AddComponent(/datum/component/butchering, 30, 95, 5) //fast and effective, but as a sword, it might damage the results. + +/obj/item/melee/sword/sabre/on_enter_storage(datum/component/storage/concrete/S) + var/obj/item/storage/belt/sabre/B = S.real_location() + if(istype(B)) + playsound(B, 'sound/items/sheath.ogg', 25, TRUE) + +/obj/item/melee/sword/sabre/solgov + name = "solarian sabre" + desc = "A refined ceremonial blade often given to soldiers and high ranking officials of SolGov." + icon_state = "sabresolgov" + item_state = "sabresolgov" + +/obj/item/melee/sword/sabre/suns + name = "SUNS sabre" + desc = "A blade of Solarian origin given to SUNS followers." + icon_state = "suns-sabre" + item_state = "suns-sabre" + +/obj/item/melee/sword/sabre/suns/captain + name = "SUNS captain sabre" + desc = "An elegant blade awarded to SUNS captains. Despite its higher craftmanship, it appears to be just as effective as a normal sabre." + icon_state = "suns-capsabre" + item_state = "suns-capsabre" + +/obj/item/melee/sword/sabre/suns/cmo + name = "SUNS stick sabre" + desc = "A thin blade used by SUNS medical instructors." + icon_state = "suns-swordstick" + item_state = "suns-swordstick" + +/obj/item/melee/sword/sabre/suns/telescopic + name = "telescopic sabre" + desc = "A telescopic and retractable blade given to SUNS peacekeepers for easy concealment and carry. It's design makes it slightly less effective than normal sabres sadly, however it is still excelent at piercing armor." + icon_state = "suns-tsword" + item_state = "suns-tsword" + force = 0 + throwforce = 0 + block_chance = 0 + + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("smacked", "prodded") + + var/extended = FALSE + var/extend_sound = 'sound/weapons/batonextend.ogg' + + var/on_icon_state = "suns-tsword_ext" + var/on_item_state = "suns-tsword_ext" + var/off_icon_state = "suns-tsword" + var/off_item_state = "suns-tsword" + + var/force_on = 10 + var/on_throwforce = 10 + var/on_blockchance = 40 + + var/force_off = 0 + var/off_throwforce = 0 + var/off_blockchance = 0 + + var/weight_class_on = WEIGHT_CLASS_BULKY + +/obj/item/melee/sword/sabre/suns/telescopic/attack_self(mob/user) + extended = !extended + + if(extended) + to_chat(user, "You extend the [src].") + icon_state = on_icon_state + item_state = on_item_state + slot_flags = 0 + w_class = weight_class_on + force = force_on + throwforce = on_throwforce + block_chance = on_blockchance + attack_verb = list("slashed", "cut") + else + to_chat(user, "You collapse the [src].") + icon_state = off_icon_state + item_state = off_item_state + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + force = force_off + throwforce = off_throwforce + block_chance = off_blockchance + attack_verb = list("smacked", "prodded") + + playsound(get_turf(src), extend_sound, 50, TRUE) + add_fingerprint(user) + +/obj/item/melee/sword/supermatter + name = "supermatter sword" + desc = "In a universe full of bad ideas, this might just be the worst." + icon_state = "supermatter_sword" + item_state = "supermatter_sword" + slot_flags = null + force = 0.001 + armour_penetration = 1000 + var/obj/machinery/power/supermatter_crystal/shard + var/balanced = 1 + force_string = "INFINITE" + +/obj/item/melee/sword/supermatter/Initialize() + . = ..() + shard = new /obj/machinery/power/supermatter_crystal(src) + qdel(shard.countdown) + shard.countdown = null + START_PROCESSING(SSobj, src) + visible_message("[src] appears, balanced ever so perfectly on its hilt. This isn't ominous at all.") + +/obj/item/melee/sword/supermatter/process() + if(balanced || throwing || ismob(src.loc) || isnull(src.loc)) + return + if(!isturf(src.loc)) + var/atom/target = src.loc + forceMove(target.loc) + consume_everything(target) + else + var/turf/T = get_turf(src) + if(!isspaceturf(T)) + consume_turf(T) + +/obj/item/melee/sword/supermatter/afterattack(target, mob/user, proximity_flag) + . = ..() + if(user && target == user) + user.dropItemToGround(src) + if(proximity_flag) + consume_everything(target) + +/obj/item/melee/sword/supermatter/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + ..() + if(ismob(hit_atom)) + var/mob/M = hit_atom + if(src.loc == M) + M.dropItemToGround(src) + consume_everything(hit_atom) + +/obj/item/melee/sword/supermatter/pickup(user) + ..() + balanced = 0 + +/obj/item/melee/sword/supermatter/ex_act(severity, target) + visible_message("The blast wave smacks into [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + consume_everything() + +/obj/item/melee/sword/supermatter/acid_act() + visible_message("The acid smacks into [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + consume_everything() + +/obj/item/melee/sword/supermatter/bullet_act(obj/projectile/P) + visible_message("[P] smacks into [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + consume_everything(P) + return BULLET_ACT_HIT + + +/obj/item/melee/sword/supermatter/proc/consume_everything(target) + if(isnull(target)) + shard.Consume() + else if(!isturf(target)) + shard.Bumped(target) + else + consume_turf(target) + +/obj/item/melee/sword/supermatter/proc/consume_turf(turf/T) + var/oldtype = T.type + var/turf/newT = T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + if(newT.type == oldtype) + return + playsound(T, 'sound/effects/supermatter.ogg', 50, TRUE) + T.visible_message("[T] smacks into [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + shard.Consume() + +/obj/item/melee/sword/supermatter/add_blood_DNA(list/blood_dna) + return FALSE + +/obj/item/melee/sword/greyking + name = "blade of the grey-king" + desc = "A legendary sword made with 3 replica katanas nailed together and dipped in heavy narcotics." + icon_state = "grey_sword" + item_state = "swordoff" + slot_flags = ITEM_SLOT_BACK + force = 15 + throwforce = 8 + block_chance = 30 + attack_verb = list("struck", "slashed", "mall-ninjad", "tided", "multi-shanked", "shredded") + + var/prick_chance = 50 + var/prick_chems = list( + /datum/reagent/toxin = 10, + /datum/reagent/toxin/mindbreaker = 10, + /datum/reagent/drug/space_drugs = 10, + /datum/reagent/drug/crank = 5, + /datum/reagent/drug/methamphetamine = 5, + /datum/reagent/drug/bath_salts = 5, + /datum/reagent/drug/aranesp = 5, + /datum/reagent/drug/pumpup = 10, + /datum/reagent/medicine/omnizine = 10, + /datum/reagent/medicine/earthsblood = 15, + /datum/reagent/medicine/omnizine/protozine = 15 + ) + +/obj/item/melee/sword/greyking/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if (iscarbon(target) && prob(prick_chance)) + var/mob/living/carbon/C = target + var/datum/reagent/R = pick(prick_chems) + C.reagents.add_reagent(R, prick_chems[R]) + C.visible_message("[user] is pricked!", \ + "You've been pricked by the [src]!") + log_combat(user, C, "pricked", src.name, "with [prick_chems[R]]u of [R]") + return ..() + +//HF blade +/obj/item/melee/sword/vibro + icon_state = "hfrequency0" + base_icon_state = "hfrequency" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + name = "vibro sword" + desc = "A potent weapon capable of cutting through nearly anything. Wielding it in two hands will allow you to deflect gunfire." + armour_penetration = 100 + block_chance = 30 + force = 20 + throwforce = 20 + throw_speed = 4 + sharpness = IS_SHARP + attack_verb = list("cut", "sliced", "diced") + slot_flags = ITEM_SLOT_BACK + hitsound = 'sound/weapons/bladeslice.ogg' + var/wielded = FALSE // track wielded status on item + +/obj/item/melee/sword/vibro/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) + +/obj/item/melee/sword/vibro/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 20, 105) + AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="[base_icon_state]1") + +/// triggered on wield of two handed item +/obj/item/melee/sword/vibro/proc/on_wield(obj/item/source, mob/user) + SIGNAL_HANDLER + + wielded = TRUE + +/// triggered on unwield of two handed item +/obj/item/melee/sword/vibro/proc/on_unwield(obj/item/source, mob/user) + SIGNAL_HANDLER + + wielded = FALSE + +/obj/item/melee/sword/vibro/update_icon_state() + icon_state = "[base_icon_state]0" + return ..() + +/obj/item/melee/sword/vibro/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(wielded) + final_block_chance *= 2 + if(wielded || attack_type != PROJECTILE_ATTACK) + if(prob(final_block_chance)) + if(attack_type == PROJECTILE_ATTACK) + owner.visible_message("[owner] deflects [attack_text] with [src]!") + playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) + return 1 + else + owner.visible_message("[owner] parries [attack_text] with [src]!") + return 1 + return 0 + +/obj/item/melee/sword/weebstick + name = "Weeb Stick" + desc = "Glorious nippon steel, folded 1000 times." + icon_state = "weeb_blade" + item_state = "weeb_blade" + slot_flags = ITEM_SLOT_BACK + sharpness = IS_SHARP_ACCURATE + force = 25 + throw_speed = 4 + throw_range = 5 + throwforce = 12 + block_chance = 20 + armour_penetration = 50 + hitsound = 'sound/weapons/anime_slash.ogg' + +/obj/item/melee/sword/weebstick/Initialize() + . = ..() + AddComponent(/datum/component/butchering, 25, 90, 5) //Not made for scalping victims, but will work nonetheless + +/obj/item/melee/sword/weebstick/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(attack_type == PROJECTILE_ATTACK) + final_block_chance = block_chance / 2 //Pretty good... + return ..() + +/obj/item/melee/sword/weebstick/on_exit_storage(datum/component/storage/concrete/S) + var/obj/item/storage/belt/weebstick/B = S.real_location() + if(istype(B)) + playsound(B, 'sound/items/unsheath.ogg', 25, TRUE) + +/obj/item/melee/sword/weebstick/on_enter_storage(datum/component/storage/concrete/S) + var/obj/item/storage/belt/weebstick/B = S.real_location() + if(istype(B)) + playsound(B, 'sound/items/sheath.ogg', 25, TRUE) + +/obj/item/storage/belt/weebstick + name = "nanoforged blade sheath" + desc = "It yearns to bath in the blood of your enemies... but you hold it back!" + icon = 'icons/obj/weapon/sword.dmi' + icon_state = "weeb_sheath" + item_state = "sheath" + force = 3 + var/primed = FALSE //Prerequisite to anime bullshit + // ##The anime bullshit## - Mostly stolen from action/innate/dash + var/dash_sound = 'sound/weapons/unsheathed_blade.ogg' + var/beam_effect = "blood_beam" + var/phasein = /obj/effect/temp_visual/dir_setting/cult/phase + var/phaseout = /obj/effect/temp_visual/dir_setting/cult/phase + +/obj/item/storage/belt/weebstick/ComponentInitialize() + . = ..() + AddElement(/datum/element/update_icon_updates_onmob) + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 1 + STR.use_sound = null + STR.max_w_class = WEIGHT_CLASS_BULKY + STR.set_holdable(list( + /obj/item/melee/sword/weebstick + )) + +/obj/item/storage/belt/weebstick/examine(mob/user) + . = ..() + if(length(contents)) + . += "Use [src] in-hand to prime for an opening strike." + . += "Alt-click it to quickly draw the blade." + +/obj/item/storage/belt/weebstick/AltClick(mob/user) + if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)) || primed) + return + if(length(contents)) + var/obj/item/I = contents[1] + playsound(user, dash_sound, 25, TRUE) + user.visible_message("[user] swiftly draws \the [I].", "You draw \the [I].") + user.put_in_hands(I) + update_appearance() + else + to_chat(user, "[src] is empty!") + +/obj/item/storage/belt/weebstick/attack_self(mob/user) + if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + return + if(length(contents)) + var/datum/component/storage/CP = GetComponent(/datum/component/storage) + if(primed) + CP.locked = FALSE + playsound(user, 'sound/items/sheath.ogg', 25, TRUE) + to_chat(user, "You return your stance.") + primed = FALSE + update_appearance() + else + CP.locked = TRUE //Prevents normal removal of the blade while primed + playsound(user, 'sound/items/unsheath.ogg', 25, TRUE) + user.visible_message("[user] grips the blade within [src] and primes to attack.", "You take an opening stance...", "You hear a weapon being drawn...") + primed = TRUE + update_appearance() + else + to_chat(user, "[src] is empty!") + +/obj/item/storage/belt/weebstick/afterattack(atom/A, mob/living/user, proximity_flag, params) + . = ..() + if(primed && length(contents)) + if(!(A in view(user.client.view, user))) + return + var/obj/item/I = contents[1] + if(!user.put_in_inactive_hand(I)) + to_chat(user, "You need a free hand!") + return + var/datum/component/storage/CP = GetComponent(/datum/component/storage) + CP.locked = FALSE + primed = FALSE + update_appearance() + primed_attack(A, user) + if(CanReach(A, I)) + I.melee_attack_chain(user, A, params) + user.swap_hand() + +/obj/item/storage/belt/weebstick/proc/primed_attack(atom/target, mob/living/user) + var/turf/end = get_turf(user) + var/turf/start = get_turf(user) + var/obj/spot1 = new phaseout(start, user.dir) + var/halt = FALSE + // Stolen dash code + for(var/T in getline(start, get_turf(target))) + var/turf/tile = T + for(var/mob/living/victim in tile) + if(victim != user) + playsound(victim, 'sound/weapons/anime_slash.ogg', 10, TRUE) + victim.take_bodypart_damage(15) + // Unlike actual ninjas, we stop noclip-dashing here. + if(isclosedturf(T)) + halt = TRUE + for(var/obj/O in tile) + // We ignore mobs as we are cutting through them + if(!O.CanPass(user, tile)) + halt = TRUE + if(halt) + break + else + end = T + user.forceMove(end) // YEET + playsound(start, dash_sound, 35, TRUE) + var/obj/spot2 = new phasein(end, user.dir) + spot1.Beam(spot2, beam_effect, time=20) + user.visible_message("In a flash of red, [user] draws [user.p_their()] blade!", "You dash forward while drawing your weapon!", "You hear a blade slice through the air at impossible speeds!") + +/obj/item/storage/belt/weebstick/update_icon_state() + icon_state = "weeb_sheath" + item_state = "sheath" + if(contents.len) + if(primed) + icon_state += "-primed" + else + icon_state += "-blade" + item_state += "-sabre" + return ..() + +/obj/item/storage/belt/weebstick/PopulateContents() + //Time to generate names now that we have the sword + var/n_title = pick(GLOB.ninja_titles) + var/n_name = pick(GLOB.ninja_names) + var/obj/item/melee/sword/weebstick/sword = new /obj/item/melee/sword/weebstick(src) + sword.name = "[n_title] blade of clan [n_name]" + name = "[n_title] scabbard of clan [n_name]" + update_appearance() diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/melee/teleprod.dm similarity index 100% rename from code/game/objects/items/teleprod.dm rename to code/game/objects/items/melee/teleprod.dm diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm new file mode 100644 index 000000000000..11c1b118570b --- /dev/null +++ b/code/game/objects/items/melee/weaponry.dm @@ -0,0 +1,119 @@ + + +/obj/item/wirerod + name = "wired rod" + desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." + icon = 'icons/obj/weapon/spear.dmi' + icon_state = "wiredrod" + item_state = "rods" + flags_1 = CONDUCT_1 + force = 9 + throwforce = 10 + w_class = WEIGHT_CLASS_NORMAL + custom_materials = list(/datum/material/iron=1150, /datum/material/glass=75) + attack_verb = list("hit", "bludgeoned", "whacked", "bonked") + +/obj/item/wirerod/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/shard)) + var/obj/item/melee/spear/S = new /obj/item/melee/spear + + remove_item_from_storage(user) + if (!user.transferItemToLoc(I, S)) + return + S.CheckParts(list(I)) + qdel(src) + + user.put_in_hands(S) + to_chat(user, "You fasten the glass shard to the top of the rod with the cable.") + + else if(istype(I, /obj/item/assembly/igniter) && !(HAS_TRAIT(I, TRAIT_NODROP))) + var/obj/item/melee/baton/cattleprod/P = new /obj/item/melee/baton/cattleprod + + remove_item_from_storage(user) + + to_chat(user, "You fasten [I] to the top of the rod with the cable.") + + qdel(I) + qdel(src) + + user.put_in_hands(P) + else + return ..() + +/obj/item/throwing_star + name = "throwing star" + desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts." + icon_state = "throwingstar" + item_state = "eshield0" + lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + force = 2 + throwforce = 20 //20 + 2 (WEIGHT_CLASS_SMALL) * 4 (EMBEDDED_IMPACT_PAIN_MULTIPLIER) = 28 damage on hit due to guaranteed embedding + throw_speed = 4 + embedding = list("pain_mult" = 4, "embed_chance" = 100, "fall_chance" = 0, "embed_chance_turf_mod" = 15) + armour_penetration = 40 + + w_class = WEIGHT_CLASS_SMALL + sharpness = IS_SHARP + custom_materials = list(/datum/material/iron=500, /datum/material/glass=500) + resistance_flags = FIRE_PROOF + +/obj/item/throwing_star/stamina + name = "shock throwing star" + desc = "An aerodynamic disc designed to cause excruciating pain when stuck inside fleeing targets, hopefully without causing fatal harm." + throwforce = 5 + embedding = list("pain_chance" = 5, "embed_chance" = 100, "fall_chance" = 0, "jostle_chance" = 10, "pain_stam_pct" = 0.8, "jostle_pain_mult" = 3) + +/obj/item/throwing_star/toy + name = "toy throwing star" + desc = "An aerodynamic disc strapped with adhesive for sticking to people, good for playing pranks and getting yourself killed by security." + sharpness = IS_BLUNT + force = 0 + throwforce = 0 + embedding = list("pain_mult" = 0, "jostle_pain_mult" = 0, "embed_chance" = 100, "fall_chance" = 0) + +/obj/item/throwing_star/magspear + name = "magnetic spear" + desc = "A reusable spear that is typically loaded into kinetic spearguns." + icon = 'icons/obj/ammo_bullets.dmi' + icon_state = "magspear" + throwforce = 25 //kills regular carps in one hit + force = 10 + throw_range = 0 //throwing these invalidates the speargun + attack_verb = list("stabbed", "ripped", "gored", "impaled") + embedding = list("pain_mult" = 8, "embed_chance" = 100, "fall_chance" = 0, "impact_pain_mult" = 15) //55 damage+embed on hit + +/obj/item/mounted_chainsaw + name = "mounted chainsaw" + desc = "A chainsaw that has replaced your arm." + icon_state = "chainsaw_on" + item_state = "mounted_chainsaw" + lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' + item_flags = ABSTRACT | DROPDEL + w_class = WEIGHT_CLASS_HUGE + force = 24 + throwforce = 0 + throw_range = 0 + throw_speed = 0 + sharpness = IS_SHARP + attack_verb = list("sawed", "torn", "cut", "chopped", "diced") + hitsound = 'sound/weapons/chainsawhit.ogg' + tool_behaviour = TOOL_SAW + toolspeed = 1 + +/obj/item/mounted_chainsaw/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) + +/obj/item/mounted_chainsaw/Destroy() + var/obj/item/bodypart/part + new /obj/item/chainsaw(get_turf(src)) + if(iscarbon(loc)) + var/mob/living/carbon/holder = loc + var/index = holder.get_held_index_of_item(src) + if(index) + part = holder.hand_bodyparts[index] + . = ..() + if(part) + part.drop_limb() diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 619ebf3eb0e9..f32230a732ba 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -94,7 +94,7 @@ /obj/item/storage/box/hero/scottish/PopulateContents() new /obj/item/clothing/under/costume/kilt(src) - new /obj/item/claymore/weak/ceremonial(src) + new /obj/item/melee/sword/claymore(src) new /obj/item/toy/crayon/spraycan(src) new /obj/item/clothing/shoes/sandal(src) @@ -105,7 +105,7 @@ /obj/item/storage/box/hero/carphunter/PopulateContents() new /obj/item/clothing/suit/space/hardsuit/carp/old(src) new /obj/item/clothing/mask/gas/carp(src) - new /obj/item/kitchen/knife/hunting(src) + new /obj/item/melee/knife/hunting(src) new /obj/item/storage/box/papersack/meat(src) new /obj/item/fishing_rod(src) new /obj/item/fishing_line(src) @@ -149,7 +149,6 @@ /obj/item/skub desc = "It's skub." name = "skub" - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "skub" w_class = WEIGHT_CLASS_BULKY attack_verb = list("skubbed") @@ -217,17 +216,6 @@ ouija_spaghetti_list[initial(A.name)] = A return ouija_spaghetti_list -/obj/structure/legionpike - name = "legion on a spear" - desc = "EXTREME interior decorating. You can feel it watching you." - icon = 'icons/obj/structures.dmi' - icon_state = "headpike-legion" - density = FALSE - anchored = TRUE - light_color = "#8B0000" - light_power = 2 - light_range = 2 - //rare and valulable gems- designed to eventually be used for archeology, or to be given as opposed to money as loot. Auctioned off at export, or kept as a trophy. /obj/item/gem/rupee name = "\improper Ruperium Crystal" @@ -282,3 +270,283 @@ light_power = 1 light_color = "#4785a4" w_class = WEIGHT_CLASS_SMALL + +/obj/item/phone + name = "red phone" + desc = "Should anything ever go wrong..." + icon_state = "red_phone" + force = 3 + throwforce = 2 + throw_speed = 3 + throw_range = 4 + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("called", "rang") + hitsound = 'sound/weapons/ring.ogg' + +/obj/item/roastingstick + name = "advanced roasting stick" + desc = "A telescopic roasting stick with a miniature shield generator designed to ensure entry into various high-tech shielded cooking ovens and firepits." + icon_state = "roastingstick_0" + item_state = "null" + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + item_flags = NONE + force = 0 + attack_verb = list("hit", "poked") + var/obj/item/reagent_containers/food/snacks/sausage/held_sausage + var/static/list/ovens + var/on = FALSE + var/datum/beam/beam + +/obj/item/roastingstick/Initialize() + . = ..() + if (!ovens) + ovens = typecacheof(list(/obj/singularity, /obj/machinery/power/supermatter_crystal, /obj/structure/bonfire)) + +/obj/item/roastingstick/attack_self(mob/user) + on = !on + if(on) + extend(user) + else + if (held_sausage) + to_chat(user, "You can't retract [src] while [held_sausage] is attached!") + return + retract(user) + + playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) + add_fingerprint(user) + +/obj/item/roastingstick/attackby(atom/target, mob/user) + ..() + if (istype(target, /obj/item/reagent_containers/food/snacks/sausage)) + if (!on) + to_chat(user, "You must extend [src] to attach anything to it!") + return + if (held_sausage) + to_chat(user, "[held_sausage] is already attached to [src]!") + return + if (user.transferItemToLoc(target, src)) + held_sausage = target + else + to_chat(user, "[target] doesn't seem to want to get on [src]!") + update_appearance() + +/obj/item/roastingstick/attack_hand(mob/user) + ..() + if (held_sausage) + user.put_in_hands(held_sausage) + held_sausage = null + update_appearance() + +/obj/item/roastingstick/update_overlays() + . = ..() + if (held_sausage) + . += mutable_appearance(icon, "roastingstick_sausage") + +/obj/item/roastingstick/proc/extend(user) + to_chat(user, "You extend [src].") + icon_state = "roastingstick_1" + item_state = "nullrod" + w_class = WEIGHT_CLASS_BULKY + +/obj/item/roastingstick/proc/retract(user) + to_chat(user, "You collapse [src].") + icon_state = "roastingstick_0" + item_state = null + w_class = WEIGHT_CLASS_SMALL + +/obj/item/roastingstick/handle_atom_del(atom/target) + if (target == held_sausage) + held_sausage = null + update_appearance() + +/obj/item/roastingstick/afterattack(atom/target, mob/user, proximity) + . = ..() + if (!on) + return + if (is_type_in_typecache(target, ovens)) + if (held_sausage && held_sausage.roasted) + to_chat(src, "Your [held_sausage] has already been cooked!") + return + if (istype(target, /obj/singularity) && get_dist(user, target) < 10) + to_chat(user, "You send [held_sausage] towards [target].") + playsound(src, 'sound/items/rped.ogg', 50, TRUE) + beam = user.Beam(target,icon_state="rped_upgrade",time=100) + else if (user.Adjacent(target)) + to_chat(user, "You extend [src] towards [target].") + playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) + else + return + if(do_after(user, 100, target = user)) + finish_roasting(user, target) + else + QDEL_NULL(beam) + playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE) + +/obj/item/roastingstick/proc/finish_roasting(user, atom/target) + to_chat(user, "You finish roasting [held_sausage].") + playsound(src,'sound/items/welder2.ogg',50,TRUE) + held_sausage.add_atom_colour(rgb(103,63,24), FIXED_COLOUR_PRIORITY) + held_sausage.name = "[target.name]-roasted [held_sausage.name]" + held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]." + update_appearance() + +/obj/item/skateboard + name = "improvised skateboard" + desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon." + icon_state = "skateboard" + item_state = "skateboard" + force = 12 + throwforce = 4 + w_class = WEIGHT_CLASS_NORMAL + attack_verb = list("smacked", "whacked", "slammed", "smashed") + ///The vehicle counterpart for the board + var/board_item_type = /obj/vehicle/ridden/scooter/skateboard + +/obj/item/skateboard/attack_self(mob/user) + var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))//this probably has fucky interactions with telekinesis but for the record it wasnt my fault + S.buckle_mob(user) + qdel(src) + +/obj/item/skateboard/pro + name = "skateboard" + desc = "A RaDSTORMz brand professional skateboard. It looks sturdy and well made." + icon_state = "skateboard2" + item_state = "skateboard2" + board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro + custom_premium_price = 500 + +/obj/item/skateboard/hoverboard + name = "hoverboard" + desc = "A blast from the past, so retro!" + icon_state = "hoverboard_red" + item_state = "hoverboard_red" + board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard + custom_premium_price = 2015 + +/obj/item/skateboard/hoverboard/admin + name = "\improper Board Of Directors" + desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too." + icon_state = "hoverboard_nt" + item_state = "hoverboard_nt" + board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin + +/obj/item/statuebust + name = "bust" + desc = "A priceless ancient marble bust, the kind that belongs in a museum." //or you can hit people with it + icon = 'icons/obj/statue.dmi' + icon_state = "bust" + force = 15 + throwforce = 10 + throw_speed = 5 + throw_range = 2 + attack_verb = list("busted") + var/impressiveness = 45 + +/obj/item/statuebust/Initialize() + . = ..() + AddComponent(/datum/component/art, impressiveness) + AddElement(/datum/element/beauty, 1000) + +/obj/item/statuebust/hippocratic + name = "hippocrates bust" + desc = "A bust of the famous Greek physician Hippocrates of Kos, often referred to as the father of western medicine." + icon_state = "hippocratic" + impressiveness = 50 + +/obj/item/extendohand + name = "extendo-hand" + desc = "Futuristic tech has allowed these classic spring-boxing toys to essentially act as a fully functional hand-operated hand prosthetic." + icon_state = "extendohand" + item_state = "extendohand" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + force = 0 + throwforce = 5 + reach = 2 + var/min_reach = 2 + +/obj/item/extendohand/acme + name = "\improper ACME Extendo-Hand" + desc = "A novelty extendo-hand produced by the ACME corporation. Originally designed to knock out roadrunners." + +/obj/item/extendohand/attack(atom/M, mob/living/carbon/human/user) + var/dist = get_dist(M, user) + if(dist < min_reach) + to_chat(user, "[M] is too close to use [src] on.") + return + M.attack_hand(user) + +/obj/item/gohei + name = "gohei" + desc = "A wooden stick with white streamers at the end. Originally used by shrine maidens to purify things." + force = 5 + throwforce = 5 + hitsound = "swing_hit" + attack_verb = list("whacked", "thwacked", "walloped", "socked") + icon_state = "gohei" + item_state = "gohei" + lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' + +/obj/item/ectoplasm + name = "ectoplasm" + desc = "Spooky." + gender = PLURAL + icon = 'icons/obj/wizard.dmi' + icon_state = "ectoplasm" + +/obj/item/ectoplasm/angelic + icon = 'icons/obj/wizard.dmi' + icon_state = "angelplasm" + +/obj/item/cane + name = "cane" + desc = "A cane used by a true gentleman." + icon = 'icons/obj/items.dmi' + icon_state = "cane" + item_state = "stick" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + force = 5 + throwforce = 5 + w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron=50) + attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") + +/obj/item/staff + name = "wizard staff" + desc = "Apparently a staff used by the wizard." + icon = 'icons/obj/wizard.dmi' + icon_state = "staff" + lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' + force = 3 + throwforce = 5 + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL + armour_penetration = 100 + attack_verb = list("bludgeoned", "whacked", "disciplined") + resistance_flags = FLAMMABLE + +/obj/item/staff/broom + name = "broom" + desc = "Used for sweeping, and flying into the night while cackling. Black cat not included." + icon = 'icons/obj/wizard.dmi' + icon_state = "broom" + resistance_flags = FLAMMABLE + +/obj/item/staff/stick + name = "stick" + desc = "A great tool to drag someone else's drinks across the bar." + icon = 'icons/obj/items.dmi' + icon_state = "cane" + item_state = "stick" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + force = 3 + throwforce = 5 + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm index 5aff78b5561d..9e314d848e3e 100644 --- a/code/game/objects/items/paint.dm +++ b/code/game/objects/items/paint.dm @@ -5,7 +5,6 @@ gender= PLURAL name = "paint" desc = "Used to recolor floors and walls. Can be removed by the janitor." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "paint_neutral" var/paint_color = "FFFFFF" item_state = "paintcan" diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm deleted file mode 100644 index 05183ed479db..000000000000 --- a/code/game/objects/items/pitchfork.dm +++ /dev/null @@ -1,102 +0,0 @@ -/obj/item/pitchfork - icon_state = "pitchfork0" - base_icon_state = "pitchfork" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "pitchfork" - desc = "A simple tool used for moving hay." - force = 7 - throwforce = 15 - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("attacked", "impaled", "pierced") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) - resistance_flags = FIRE_PROOF - var/wielded = FALSE // track wielded status on item - -/obj/item/pitchfork/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/pitchfork/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=7, force_wielded=15, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/pitchfork/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/pitchfork/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/pitchfork/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/pitchfork/demonic - name = "demonic pitchfork" - desc = "A red pitchfork, it looks like the work of the devil." - force = 19 - throwforce = 24 - light_system = MOVABLE_LIGHT - light_range = 3 - light_power = 6 - light_color = COLOR_SOFT_RED - - -/obj/item/pitchfork/demonic/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=19, force_wielded=25) - -/obj/item/pitchfork/demonic/greater - force = 24 - throwforce = 50 - -/obj/item/pitchfork/demonic/greater/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=24, force_wielded=34) - -/obj/item/pitchfork/demonic/ascended - force = 100 - throwforce = 100 - -/obj/item/pitchfork/demonic/ascended/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=100, force_wielded=500000) // Kills you DEAD - -/obj/item/pitchfork/demonic/pickup(mob/living/user) - . = ..() - if(isliving(user) && user.mind && user.owns_soul() && !is_devil(user)) - var/mob/living/U = user - U.visible_message("As [U] picks [src] up, [U]'s arms briefly catch fire.", \ - "\"As you pick up [src] your arms ignite, reminding you of all your past sins.\"") - if(ishuman(U)) - var/mob/living/carbon/human/H = U - H.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - else - U.adjustFireLoss(rand(force/2,force)) - -/obj/item/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user) - if(user.mind && user.owns_soul() && !is_devil(user)) - to_chat(user, "[src] burns in your hands.") - user.apply_damage(rand(force/2, force), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - ..() - -/obj/item/pitchfork/demonic/ascended/afterattack(atom/target, mob/user, proximity) - . = ..() - if(!proximity || !wielded) - return - if(iswallturf(target)) - var/turf/closed/wall/W = target - user.visible_message("[user] blasts \the [target] with \the [src]!") - playsound(target, 'sound/magic/disintegrate.ogg', 100, TRUE) - W.dismantle_wall(devastated = FALSE) - return diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 704a388d97f1..f54aa4f6447b 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -281,15 +281,3 @@ new /obj/item/clothing/head/helmet/plate/crusader/red(src) new /obj/item/clothing/gloves/plate/red(src) new /obj/item/clothing/shoes/plate/red(src) - - -/obj/item/claymore/weak - desc = "This one is rusted." - force = 30 - armour_penetration = 15 - -/obj/item/claymore/weak/ceremonial - desc = "A rusted claymore, once at the heart of a powerful scottish clan struck down and oppressed by tyrants, it has been passed down the ages as a symbol of defiance." - force = 15 - block_chance = 30 - armour_penetration = 5 diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm deleted file mode 100644 index 04d7629623b5..000000000000 --- a/code/game/objects/items/singularityhammer.dm +++ /dev/null @@ -1,145 +0,0 @@ -/obj/item/singularityhammer - name = "singularity hammer" - desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows." - icon_state = "singularity0" - base_icon_state = "singularity_hammer" - lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BACK - force = 5 - throwforce = 15 - throw_range = 1 - w_class = WEIGHT_CLASS_HUGE - armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - resistance_flags = FIRE_PROOF | ACID_PROOF - force_string = "LORD SINGULOTH HIMSELF" - var/charged = 5 - var/wielded = FALSE // track wielded status on item - -/obj/item/singularityhammer/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - START_PROCESSING(SSobj, src) - -/obj/item/singularityhammer/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/singularityhammer/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/singularityhammer/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/singularityhammer/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/singularityhammer/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/singularityhammer/process() - if(charged < 5) - charged++ - -/obj/item/singularityhammer/proc/vortex(turf/pull, mob/wielder) - for(var/atom/X in orange(5,pull)) - if(ismovable(X)) - var/atom/movable/A = X - if(A == wielder) - continue - if(A && !A.anchored && !ishuman(X) && !isobserver(X)) - step_towards(A,pull) - step_towards(A,pull) - step_towards(A,pull) - else if(ishuman(X)) - var/mob/living/carbon/human/H = X - if(istype(H.shoes, /obj/item/clothing/shoes/magboots)) - var/obj/item/clothing/shoes/magboots/M = H.shoes - if(M.magpulse) - continue - H.apply_effect(20, EFFECT_PARALYZE, 0) - step_towards(H,pull) - step_towards(H,pull) - step_towards(H,pull) - -/obj/item/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) - . = ..() - if(!proximity) - return - if(wielded) - if(charged == 5) - charged = 0 - if(istype(A, /mob/living/)) - var/mob/living/Z = A - Z.take_bodypart_damage(20,0) - playsound(user, 'sound/weapons/marauder.ogg', 50, TRUE) - var/turf/target = get_turf(A) - vortex(target,user) - -/obj/item/mjollnir - name = "Mjolnir" - desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy." - icon_state = "mjollnir0" - base_icon_state = "mjollnir" - lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BACK - force = 5 - throwforce = 30 - throw_range = 7 - w_class = WEIGHT_CLASS_HUGE - var/wielded = FALSE // track wielded status on item - -/obj/item/mjollnir/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/mjollnir/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_multiplier=5, icon_wielded="[base_icon_state]1", attacksound="sparks") - -/// triggered on wield of two handed item -/obj/item/mjollnir/proc/on_wield(obj/item/source, mob/user) - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/mjollnir/proc/on_unwield(obj/item/source, mob/user) - wielded = FALSE - -/obj/item/mjollnir/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/mjollnir/proc/shock(mob/living/target) - target.Stun(60) - var/datum/effect_system/lightning_spread/s = new /datum/effect_system/lightning_spread - s.set_up(5, 1, target.loc) - s.start() - target.visible_message("[target.name] is shocked by [src]!", \ - "You feel a powerful shock course through your body sending you flying!", \ - "You hear a heavy electrical crack!") - var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src))) - target.throw_at(throw_target, 200, 4) - return - -/obj/item/mjollnir/attack(mob/living/M, mob/user) - ..() - if(wielded) - shock(M) - -/obj/item/mjollnir/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - . = ..() - if(isliving(hit_atom)) - shock(hit_atom) diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm deleted file mode 100644 index be6b9d3a5a14..000000000000 --- a/code/game/objects/items/spear.dm +++ /dev/null @@ -1,283 +0,0 @@ -//spears -/obj/item/spear - icon_state = "spearglass0" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - name = "spear" - desc = "A haphazardly-constructed yet still deadly weapon of ancient design." - force = 10 - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - throwforce = 20 - throw_speed = 4 - embedding = list("impact_pain_mult" = 3) - armour_penetration = 10 - custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075) - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) - species_exception = list(/datum/species/kepori) - var/war_cry = "AAAAARGH!!!" - var/icon_prefix = "spearglass" - -/obj/item/spear/ComponentInitialize() - . = ..() - AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad. - AddComponent(/datum/component/jousting) - AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") - -/obj/item/spear/update_icon_state() - icon_state = "[icon_prefix]0" - return ..() - -/obj/item/spear/CheckParts(list/parts_list) - var/obj/item/shard/tip = locate() in parts_list - if (istype(tip, /obj/item/shard/plasma)) - throwforce = 21 - icon_prefix = "spearplasma" - AddComponent(/datum/component/two_handed, force_unwielded=11, force_wielded=19, icon_wielded="[icon_prefix]1") - update_appearance() - qdel(tip) - ..() - -/obj/item/spear/explosive - name = "explosive lance" - icon_state = "spearbomb0" - base_icon_state = "spearbomb" - icon_prefix = "spearbomb" - var/obj/item/grenade/explosive = null - var/wielded = FALSE // track wielded status on item - -/obj/item/spear/explosive/Initialize(mapload) - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances - -/obj/item/spear/explosive/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") - -/// triggered on wield of two handed item -/obj/item/spear/explosive/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/spear/explosive/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/spear/explosive/proc/set_explosive(obj/item/grenade/G) - if(explosive) - QDEL_NULL(explosive) - G.forceMove(src) - explosive = G - desc = "A makeshift spear with [G] attached to it" - -/obj/item/spear/explosive/CheckParts(list/parts_list) - var/obj/item/grenade/G = locate() in parts_list - if(G) - var/obj/item/spear/lancePart = locate() in parts_list - var/datum/component/two_handed/comp_twohand = lancePart.GetComponent(/datum/component/two_handed) - if(comp_twohand) - var/lance_wielded = comp_twohand.force_wielded - var/lance_unwielded = comp_twohand.force_unwielded - AddComponent(/datum/component/two_handed, force_unwielded=lance_unwielded, force_wielded=lance_wielded) - throwforce = lancePart.throwforce - icon_prefix = lancePart.icon_prefix - parts_list -= G - parts_list -= lancePart - set_explosive(G) - qdel(lancePart) - ..() - -/obj/item/spear/explosive/examine(mob/user) - . = ..() - . += "Alt-click to set your war cry." - -/obj/item/spear/explosive/AltClick(mob/user) - if(user.canUseTopic(src, BE_CLOSE)) - ..() - if(istype(user) && loc == user) - var/input = stripped_input(user,"What do you want your war cry to be? You will shout it when you hit someone in melee.", ,"", 50) - if(input) - src.war_cry = input - -/obj/item/spear/explosive/afterattack(atom/movable/AM, mob/user, proximity) - . = ..() - if(!proximity) - return - if(wielded) - user.say("[war_cry]", forced="spear warcry") - explosive.forceMove(AM) - explosive.prime() - qdel(src) - -//GREY TIDE -/obj/item/spear/grey_tide - name = "\improper Grey Tide" - desc = "Recovered from the aftermath of a revolt aboard Defense Outpost Theta Aegis, in which a seemingly endless tide of Assistants caused heavy casualities among Nanotrasen military forces." - attack_verb = list("gored") - force=15 - -/obj/item/spear/grey_tide/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=15, force_wielded=25, icon_wielded="[icon_prefix]1") - -/obj/item/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity) - . = ..() - if(!proximity) - return - user.faction |= "greytide([REF(user)])" - if(isliving(AM)) - var/mob/living/L = AM - if(istype (L, /mob/living/simple_animal/hostile/illusion)) - return - if(!L.stat && prob(50)) - var/mob/living/simple_animal/hostile/illusion/M = new(user.loc) - M.faction = user.faction.Copy() - M.Copy_Parent(user, 100, user.health/2.5, 12, 30) - M.GiveTarget(L) - -/* - * Bone Spear - */ -/obj/item/spear/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. - icon_state = "bone_spear0" - name = "bone spear" - base_icon_state = "bone_spear0" - icon_prefix = "bone_spear" - desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." - icon = 'icons/obj/items_and_weapons.dmi' - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' - force = 12 - throwforce = 22 - armour_penetration = 15 //Enhanced armor piercing - -/obj/item/spear/bonespear/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=12, force_wielded=20, icon_wielded="[icon_prefix]1") -/obj/item/spear/dragonspear//version of the bone spear crafted from the trophy dropped by the Ash Drake. High damage, high ap, burns. - name = "dragonslayer's spear" - desc = "A bone spear crafted from the leading spine of a fully-grown drake, razor-sharp and hotter then magma. Wielded by the deranged, pyromaniacs, and champions of lavaland." - icon = 'icons/obj/items_and_weapons.dmi' - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' - force = 20 - throwforce = 25 - block_chance = 15//lol,lmao - armour_penetration = 30 - embedding = list("impact_pain_mult" = 5) - icon_prefix = "dragonspear" - base_icon_state = "dragonspear0" - icon_state = "dragonspear0" - var/list/nemesis_factions = list("mining", "boss") - var/faction_bonus_force = 25 - attack_verb = list("seared", "braided", "impaled", "smote", "gored") - hitsound = 'sound/weapons/sear.ogg' - var/cooldown_time = 0 SECONDS - COOLDOWN_DECLARE(freeze_cooldown) - -/obj/item/spear/dragonspear/attack(mob/living/target, mob/living/carbon/human/user) - var/nemesis_faction = FALSE - if(LAZYLEN(nemesis_factions)) - for(var/F in target.faction) - if(F in nemesis_factions) - nemesis_faction = TRUE - force += faction_bonus_force - throwforce += faction_bonus_force - nemesis_effects(user, target) - break - . = ..() - if(nemesis_faction) - force -= faction_bonus_force - throwforce -= faction_bonus_force - -/obj/item/spear/dragonspear/proc/nemesis_effects(mob/living/user, mob/living/target) - return - -/obj/item/spear/dragonspear/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=20, force_wielded=25, icon_wielded="[icon_prefix]1") - AddComponent(/datum/component/butchering, 60, 150) - -/obj/item/spear/dragonspear/attack(atom/target, blocked = FALSE) - if(iscarbon(target)) - var/mob/living/carbon/M = target - M.adjust_fire_stacks(3) - M.IgniteMob() - M.apply_damage(5, BURN) - M.adjust_bodytemperature(150) - if(isanimal(target)) - var/mob/living/simple_animal/M = target - M.apply_damage(15, BURN) - ..() - -//crystal spear -/obj/item/spear/crystal - icon_state = "crystal_spear0" - name = "crystal spear" - desc = "While more 'sharp stick' than spear, this thing is extremely dangerous neverless. Crafted out of the mysterous crystals, it can hit for very high damage, although it will break with repeated use." - icon = 'icons/obj/items_and_weapons.dmi' - base_icon_state = "crystal_spear" - icon_prefix = "crystal_spear" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' - force = 12 - throwforce = 40 - armour_penetration = 20 - max_integrity = 300 //you can repair this with duct tape - var/damage_to_take_on_hit = 25 //every time we hit something, deal how much damage? - -/obj/item/spear/crystal/ComponentInitialize() - . = ..() - AddComponent(/datum/component/two_handed, force_unwielded=12, force_wielded=30, icon_wielded="[icon_prefix]1") //4 hit crit - -/obj/item/spear/crystal/examine(mob/user) - . = ..() - . += "You can throw it for very high damage and stuns fauna, though this will shatter it instantly." - var/healthpercent = (obj_integrity/max_integrity) * 100 - switch(healthpercent) - if(50 to 99) - . += "It looks slightly damaged." - if(25 to 50) - . += "It appears heavily damaged." - if(0 to 25) - . += "It's falling apart!" - -/obj/item/spear/crystal/attack(mob/living/M, mob/living/user) - . = ..() - take_damage(damage_to_take_on_hit) - -/obj/item/spear/crystal/attack_obj(obj/O, mob/living/user) - . = ..() - take_damage(damage_to_take_on_hit) - -/obj/item/spear/crystal/obj_destruction(damage_flag) - visible_message("[src] shatters into a million pieces!") - playsound(src,"shatter", 70) - new /obj/effect/decal/cleanable/glass/strange(get_turf(src)) - return ..() - -/obj/item/spear/crystal/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) //destroyes when thrown - . = ..() - if(ishostile(hit_atom)) - var/mob/living/simple_animal/hostile/hostile_target = hit_atom - var/hostile_ai_status = hostile_target.AIStatus - hostile_target.AIStatus = AI_OFF - addtimer(VARSET_CALLBACK(hostile_target, AIStatus, hostile_ai_status), 5 SECONDS) - - new /obj/effect/temp_visual/goliath_tentacle/crystal/visual_only(get_turf(src)) - visible_message("[src] shatters into a million pieces!") - playsound(src,"shatter", 70) - new /obj/effect/decal/cleanable/glass/strange(get_turf(src)) - qdel(src) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 264ab12646ea..10eb8c1e2cf8 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -382,7 +382,7 @@ desc = "Used to secure limbs following a fracture." gender = PLURAL singular_name = "splint" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "splint" apply_sounds = list('sound/effects/rip1.ogg', 'sound/effects/rip2.ogg') self_delay = 40 diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index da08c87a5a35..23a8c8d5e5f0 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -339,7 +339,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( var/obj/item/stack/sheet/cotton/cloth/C = I to_chat(user, "You begin to wrap the [C] around the [src]...") if(do_after(user, 35, target = src)) - var/obj/item/kitchen/knife/shiv/S = new /obj/item/kitchen/knife/shiv + var/obj/item/melee/knife/shiv/S = new /obj/item/melee/knife/shiv C.use(1) to_chat(user, "You wrap the [C] around the [src] forming a makeshift weapon.") remove_item_from_storage(src) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 9fc6fa808a46..560031fa03da 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -74,7 +74,6 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ /obj/item/emptysandbag name = "empty sandbag" desc = "A bag to be filled with sand." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "sandbag" w_class = WEIGHT_CLASS_TINY diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 4443218e4385..5dde37c0b90d 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -519,7 +519,8 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ GLOBAL_LIST_INIT(bone_recipes, list( \ new /datum/stack_recipe("mortar", /obj/item/reagent_containers/glass/mortar/bone, 3), \ - new /datum/stack_recipe("bone dagger", /obj/item/kitchen/knife/combat/bone, 2))) + new /datum/stack_recipe("bone dagger", /obj/item/melee/knife/bone, 2))) + /obj/item/stack/sheet/bone name = "bones" icon = 'icons/obj/mining.dmi' diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index fb56a7a15886..c2679adf8ae9 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -291,7 +291,7 @@ /obj/item/ammo_box/a762_stripper, /obj/item/ammo_box/amagpellet_claris, //that's the last of the clips /obj/item/reagent_containers/food/snacks/donut, - /obj/item/kitchen/knife/combat, + /obj/item/melee/knife/combat, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic, /obj/item/radio, @@ -367,7 +367,7 @@ /obj/item/storage/fancy/cigarettes, /obj/item/reagent_containers/food/drinks/bottle, /obj/item/stack/medical, - /obj/item/kitchen/knife, + /obj/item/melee/knife/kitchen, /obj/item/reagent_containers/hypospray, /obj/item/gps, /obj/item/storage/bag/ore, @@ -382,7 +382,7 @@ /obj/item/storage/bag/plants, /obj/item/stack/marker_beacon, /obj/item/restraints/legcuffs/bola/watcher, - /obj/item/claymore/bone, + /obj/item/melee/sword/bone, /obj/item/key/lasso )) @@ -786,7 +786,7 @@ STR.use_sound = null //if youre wondering why this is null, its so you can look in your sheath to prepare to draw, without letting anyone know youre preparing to draw it STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre + /obj/item/melee/sword/sabre )) /obj/item/storage/belt/sabre/examine(mob/user) @@ -814,7 +814,7 @@ return ..() /obj/item/storage/belt/sabre/PopulateContents() - new /obj/item/melee/sabre(src) + new /obj/item/melee/sword/sabre(src) update_appearance() /obj/item/storage/belt/sabre/solgov @@ -833,11 +833,11 @@ STR.use_sound = null STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre/solgov + /obj/item/melee/sword/sabre/solgov )) /obj/item/storage/belt/sabre/solgov/PopulateContents() - new /obj/item/melee/sabre/solgov(src) + new /obj/item/melee/sword/sabre/solgov(src) update_appearance() /obj/item/storage/belt/sabre/suns @@ -862,11 +862,11 @@ STR.use_sound = null STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre/suns + /obj/item/melee/sword/sabre/suns )) /obj/item/storage/belt/sabre/suns/PopulateContents() - new /obj/item/melee/sabre/suns(src) + new /obj/item/melee/sword/sabre/suns(src) update_appearance() @@ -887,11 +887,11 @@ STR.use_sound = null STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre/suns/captain + /obj/item/melee/sword/sabre/suns/captain )) /obj/item/storage/belt/sabre/suns/captain/PopulateContents() - new /obj/item/melee/sabre/suns/captain(src) + new /obj/item/melee/sword/sabre/suns/captain(src) update_appearance() /obj/item/storage/belt/sabre/suns/cmo @@ -917,11 +917,11 @@ STR.use_sound = null STR.max_w_class = WEIGHT_CLASS_BULKY STR.set_holdable(list( - /obj/item/melee/sabre/suns/cmo + /obj/item/melee/sword/sabre/suns/cmo )) /obj/item/storage/belt/sabre/suns/cmo/PopulateContents() - new /obj/item/melee/sabre/suns/cmo(src) + new /obj/item/melee/sword/sabre/suns/cmo(src) update_appearance() /obj/item/storage/belt/security/webbing/inteq diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 4bb91fe95726..39e533f2a4a3 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -22,7 +22,7 @@ new /obj/item/multitool/ai_detect(src) // 1 tc new /obj/item/encryptionkey/syndicate(src) // 2 tc new /obj/item/reagent_containers/syringe/mulligan(src) // 4 tc - new /obj/item/kitchen/knife/switchblade(src) //I'll count this as 2 tc + new /obj/item/melee/knife/switchblade(src) //I'll count this as 2 tc new /obj/item/storage/fancy/cigarettes/cigpack_syndicate (src) // 2 tc this shit heals new /obj/item/flashlight/emp(src) // 2 tc new /obj/item/chameleon(src) // 7 tc @@ -117,7 +117,7 @@ new /obj/item/card/emag(src) // 6 tc /obj/item/storage/box/syndicate/bundle_B/PopulateContents() - switch (pickweight(list( "bond" = 2, "ninja" = 1, "darklord" = 1, "white_whale_holy_grail" = 2, "mad_scientist" = 2, "bee" = 1, "mr_freeze" = 2, "made_man"= 1))) + switch (pickweight(list( "bond" = 2, "ninja" = 1, "darklord" = 1, "white_whale_holy_grail" = 2, "mad_scientist" = 2, "mr_freeze" = 2, "made_man"= 1))) if("bond") new /obj/item/gun/ballistic/automatic/pistol/ringneck(src) new /obj/item/attachment/silencer(src) @@ -129,7 +129,7 @@ new /obj/item/reagent_containers/glass/rag(src) if("ninja") - new /obj/item/katana(src) // Unique , hard to tell how much tc this is worth. 8 tc? + new /obj/item/melee/sword/katana(src) new /obj/item/implanter/adrenalin(src) // 8 tc for(var/i in 1 to 6) new /obj/item/throwing_star(src) // ~5 tc for all 6 @@ -140,7 +140,6 @@ if("darklord") new /obj/item/dualsaber(src) new /obj/item/dnainjector/telemut/darkbundle(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) new /obj/item/card/id/syndicate(src) new /obj/item/clothing/shoes/chameleon/noslip(src) //because slipping while being a dark lord sucks new /obj/item/book/granter/spell/summonitem(src) @@ -167,16 +166,6 @@ new /obj/item/pen/edagger(src) new /obj/item/gun/energy/decloner(src) - if("bee") - new /obj/item/paper/fluff/bee_objectives(src) // 0 tc (motivation) - new /obj/item/clothing/suit/hooded/bee_costume(src) // 0 tc - new /obj/item/clothing/mask/rat/bee(src) // 0 tc - new /obj/item/storage/belt/fannypack/yellow(src) // 0 tc - new /obj/item/grenade/spawnergrenade/buzzkill(src) - new /obj/item/grenade/spawnergrenade/buzzkill(src) - new /obj/item/reagent_containers/glass/bottle/beesease(src) // 10 tc? - new /obj/item/melee/beesword(src) //priceless - if("mr_freeze") new /obj/item/clothing/glasses/cold(src) new /obj/item/clothing/gloves/color/black(src) @@ -195,7 +184,7 @@ if("made_man") new /obj/effect/spawner/lootdrop/mafia_outfit(src) // 0 TC, just an outfit for the new 'don of this family new /obj/item/gun/ballistic/automatic/smg/firestorm/pan(src) // 20 TC, a gun with 50 .45 bullets on a three round burst is kinda outstanding - new /obj/item/kitchen/knife/switchblade(src) // 3 TC? It's nice, but it's really a stealth/oh fuck I'm out of ammo weapon + new /obj/item/melee/knife/switchblade(src) // 3 TC? It's nice, but it's really a stealth/oh fuck I'm out of ammo weapon new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) // 5 TC, free molotov assemblies new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) new /obj/item/reagent_containers/food/drinks/bottle/vodka (src) @@ -209,14 +198,6 @@ new /obj/item/reagent_containers/food/drinks/flask (src) // 1 TC, I can't believe I forgot about the booze flask AAAAAAA new /obj/item/storage/secure/briefcase/syndie (src) // 1TC, for bribing the bartender to let you set up shop... amongst other actions. - -/obj/item/paper/fluff/bee_objectives - name = "Objectives of a Bee Liberation Front Operative" - default_raw_text = "Objective #1. Liberate all bees on the NT transport vessel 2416/B. Success!
Objective #2. Escape alive. Failed." - - - - /obj/item/storage/box/syndicate/contract_kit name = "Contract Kit" desc = "Supplied to Syndicate contractors." diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index b8f4451a9660..deca5b57397e 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -173,7 +173,7 @@ /obj/item/tank/jetpack/suit name = "hardsuit jetpack upgrade" desc = "A modular, compact set of thrusters designed to integrate with a hardsuit. It is fueled by a tank inserted into the suit's storage compartment." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "jetpack_upgrade" item_state = "jetpack-black" w_class = WEIGHT_CLASS_NORMAL diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 5ce082d79dc9..f1ce47a8f8fd 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -265,7 +265,7 @@ /obj/item/toy/sword name = "toy sword" desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up." - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' icon_state = "sword" item_state = "sword" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' @@ -348,7 +348,7 @@ lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi' var/active = FALSE - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' hitsound = 'sound/weapons/smash.ogg' attack_verb = list("robusted") @@ -407,7 +407,7 @@ /obj/item/toy/katana name = "replica katana" desc = "Woefully underpowered in D20." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/weapon/sword.dmi' icon_state = "katana" item_state = "katana" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm deleted file mode 100644 index 89eb9b0019e4..000000000000 --- a/code/game/objects/items/weaponry.dm +++ /dev/null @@ -1,759 +0,0 @@ -/obj/item/banhammer - desc = "A banhammer." - name = "banhammer" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "toyhammer" - slot_flags = ITEM_SLOT_BELT - throwforce = 0 - force = 1 - w_class = WEIGHT_CLASS_TINY - throw_speed = 3 - throw_range = 7 - attack_verb = list("banned") - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) - resistance_flags = FIRE_PROOF - -/* -oranges says: This is a meme relating to the english translation of the ss13 russian wiki page on lurkmore. -mrdoombringer sez: and remember kids, if you try and PR a fix for this item's grammar, you are admitting that you are, indeed, a newfriend. -for further reading, please see: https://github.com/tgstation/tgstation/pull/30173 and https://translate.google.com/translate?sl=auto&tl=en&js=y&prev=_t&hl=en&ie=UTF-8&u=%2F%2Flurkmore.to%2FSS13&edit-text=&act=url -*/ -/obj/item/banhammer/attack(mob/M, mob/user) - if(user.zone_selected == BODY_ZONE_HEAD) - M.visible_message("[user] is stroking the head of [M] with a banhammer.", "[user] is stroking your head with a banhammer.", "You hear a banhammer stroking a head.") - else - M.visible_message("[M] has been banned FOR NO REISIN by [user]!", "You have been banned FOR NO REISIN by [user]!", "You hear a banhammer banning someone.") - playsound(loc, 'sound/effects/adminhelp.ogg', 15) //keep it at 15% volume so people don't jump out of their skin too much - if(user.a_intent != INTENT_HELP) - return ..(M, user) - -/obj/item/sord - name = "\improper SORD" - desc = "This thing is so unspeakably shitty you are having a hard time even holding it." - icon_state = "sord" - item_state = "sord" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - slot_flags = ITEM_SLOT_BELT - force = 2 - throwforce = 1 - w_class = WEIGHT_CLASS_NORMAL - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - -/obj/item/claymore - name = "claymore" - desc = "What are you standing around staring at this for? Get to killing!" - icon_state = "claymore" - item_state = "claymore" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/handling/knife2_pickup.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - hitsound = 'sound/weapons/bladeslice.ogg' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK - force = 40 - throwforce = 10 - w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - block_chance = 40 - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - -/obj/item/claymore/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 40, 105) - -/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS - desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim." - flags_1 = CONDUCT_1 - item_flags = DROPDEL //WOW BRO YOU LOST AN ARM, GUESS WHAT YOU DONT GET YOUR SWORD ANYMORE //I CANT BELIEVE SPOOKYDONUT WOULD BREAK THE REQUIREMENTS - slot_flags = null - block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY - light_range = 3 - attack_verb = list("brutalized", "eviscerated", "disemboweled", "hacked", "carved", "cleaved") //ONLY THE MOST VISCERAL ATTACK VERBS - var/notches = 0 //HOW MANY PEOPLE HAVE BEEN SLAIN WITH THIS BLADE - var/obj/item/disk/nuclear/nuke_disk //OUR STORED NUKE DISK - -/obj/item/claymore/highlander/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HIGHLANDER) - START_PROCESSING(SSobj, src) - -/obj/item/claymore/highlander/Destroy() - if(nuke_disk) - nuke_disk.forceMove(get_turf(src)) - nuke_disk.visible_message("The nuke disk is vulnerable!") - nuke_disk = null - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/claymore/highlander/process() - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - loc.layer = LARGE_MOB_LAYER //NO HIDING BEHIND PLANTS FOR YOU, DICKWEED (HA GET IT, BECAUSE WEEDS ARE PLANTS) - H.bleedsuppress = TRUE //AND WE WON'T BLEED OUT LIKE COWARDS - else - if(!(flags_1 & ADMIN_SPAWNED_1)) - qdel(src) - - -/obj/item/claymore/highlander/pickup(mob/living/user) - . = ..() - to_chat(user, "The power of Scotland protects you! You are shielded from all stuns and knockdowns.") - user.add_stun_absorption("highlander", INFINITY, 1, " is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!") - user.ignore_slowdown(HIGHLANDER) - -/obj/item/claymore/highlander/dropped(mob/living/user) - . = ..() - user.unignore_slowdown(HIGHLANDER) - -/obj/item/claymore/highlander/examine(mob/user) - . = ..() - . += "It has [!notches ? "nothing" : "[notches] notches"] scratched into the blade." - if(nuke_disk) - . += "It's holding the nuke disk!" - -/obj/item/claymore/highlander/attack(mob/living/target, mob/living/user) - . = ..() - if(!QDELETED(target) && iscarbon(target) && target.stat == DEAD && target.mind && target.mind.special_role == "highlander") - user.fully_heal(admin_revive = FALSE) //STEAL THE LIFE OF OUR FALLEN FOES - add_notch(user) - target.visible_message("[target] crumbles to dust beneath [user]'s blows!", "As you fall, your body crumbles to dust!") - target.dust() - -/obj/item/claymore/highlander/attack_self(mob/living/user) - var/closest_victim - var/closest_distance = 255 - for(var/mob/living/carbon/human/H in GLOB.player_list - user) - if(H.mind.special_role == "highlander" && (!closest_victim || get_dist(user, closest_victim) < closest_distance)) - closest_victim = H - if(!closest_victim) - to_chat(user, "[src] thrums for a moment and falls dark. Perhaps there's nobody nearby.") - return - to_chat(user, "[src] thrums and points to the [dir2text(get_dir(user, closest_victim))].") - -/obj/item/claymore/highlander/IsReflect() - return 1 //YOU THINK YOUR PUNY LASERS CAN STOP ME? - -/obj/item/claymore/highlander/proc/add_notch(mob/living/user) //DYNAMIC CLAYMORE PROGRESSION SYSTEM - THIS IS THE FUTURE - notches++ - force++ - var/new_name = name - switch(notches) - if(1) - to_chat(user, "Your first kill - hopefully one of many. You scratch a notch into [src]'s blade.") - to_chat(user, "You feel your fallen foe's soul entering your blade, restoring your wounds!") - new_name = "notched claymore" - if(2) - to_chat(user, "Another falls before you. Another soul fuses with your own. Another notch in the blade.") - new_name = "double-notched claymore" - add_atom_colour(rgb(255, 235, 235), ADMIN_COLOUR_PRIORITY) - if(3) - to_chat(user, "You're beginning to relish the thrill of battle.") - new_name = "triple-notched claymore" - add_atom_colour(rgb(255, 215, 215), ADMIN_COLOUR_PRIORITY) - if(4) - to_chat(user, "You've lost count of how many you've killed.") - new_name = "many-notched claymore" - add_atom_colour(rgb(255, 195, 195), ADMIN_COLOUR_PRIORITY) - if(5) - to_chat(user, "Five voices now echo in your mind, cheering the slaughter.") - new_name = "battle-tested claymore" - add_atom_colour(rgb(255, 175, 175), ADMIN_COLOUR_PRIORITY) - if(6) - to_chat(user, "Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe.") - new_name = "battle-scarred claymore" - add_atom_colour(rgb(255, 155, 155), ADMIN_COLOUR_PRIORITY) - if(7) - to_chat(user, "Kill. Butcher. Conquer.") - new_name = "vicious claymore" - add_atom_colour(rgb(255, 135, 135), ADMIN_COLOUR_PRIORITY) - if(8) - to_chat(user, "IT NEVER GETS OLD. THE SCREAMING. THE BLOOD AS IT SPRAYS ACROSS YOUR FACE.") - new_name = "bloodthirsty claymore" - add_atom_colour(rgb(255, 115, 115), ADMIN_COLOUR_PRIORITY) - if(9) - to_chat(user, "ANOTHER ONE FALLS TO YOUR BLOWS. ANOTHER WEAKLING UNFIT TO LIVE.") - new_name = "gore-stained claymore" - add_atom_colour(rgb(255, 95, 95), ADMIN_COLOUR_PRIORITY) - if(10) - user.visible_message("[user]'s eyes light up with a vengeful fire!", \ - "YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! THERE CAN BE ONLY ONE!!!") - user.update_icons() - new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]" - icon_state = "claymore_gold" - item_state = "cultblade" - remove_atom_colour(ADMIN_COLOUR_PRIORITY) - - name = new_name - playsound(user, 'sound/items/screwdriver2.ogg', 50, TRUE) - -/obj/item/katana - name = "katana" - desc = "Woefully underpowered in D20." - icon_state = "katana" - item_state = "katana" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - pickup_sound = 'sound/items/handling/knife2_pickup.ogg' - drop_sound = 'sound/items/handling/metal_drop.ogg' - flags_1 = CONDUCT_1 - slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK - force = 40 - throwforce = 10 - w_class = WEIGHT_CLASS_HUGE - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - block_chance = 10 - sharpness = IS_SHARP - max_integrity = 200 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) - resistance_flags = FIRE_PROOF - supports_variations = VOX_VARIATION - -/obj/item/katana/cursed - name = "ominous katana" - desc = "A japanese single-edged blade, once used to contain an ancient evil. The being within is grateful for being released, but beware: generosity has a price.
" - icon_state = "ominous_katana" - item_state = "ominous_katana" - icon = 'icons/obj/lavaland/artefacts.dmi' - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - force = 35 - armour_penetration = 30 - max_integrity = 500 - resistance_flags = FIRE_PROOF | ACID_PROOF - var/essence = 0//Used for blade abilities, mainly heals(If I can safely implement this I will nerf the damage slightly, and boost the selfdam) - var/list/nemesis_factions = list("mining", "boss") - var/faction_bonus_force = 25 - - -/obj/item/katana/cursed/examine(mob/user) - . = ..() - . += "To cut into the flesh of your target with this weapon is to feed the gluttonous emptiness within. Burn the blood of your enemies to replenish your own spent essence." - -/obj/item/katana/cursed/attack(mob/living/target, mob/living/user) - . = ..() - if(isliving(target) && target.stat != DEAD) - essence += rand(15, 20) - -/obj/item/katana/cursed/attack(mob/living/target, mob/living/carbon/human/user) - var/nemesis_faction = FALSE - if(LAZYLEN(nemesis_factions)) - for(var/F in target.faction) - if(F in nemesis_factions) - nemesis_faction = TRUE - force += faction_bonus_force - nemesis_effects(user, target) - break - . = ..() - if(nemesis_faction) - force -= faction_bonus_force - -/obj/item/katana/cursed/proc/nemesis_effects(mob/living/user, mob/living/target) - return - -/obj/item/katana/cursed/attack(mob/target, mob/living/carbon/human/user) - if(user.mind && user.owns_soul()) - to_chat(user, "You feel a terrible chill as the emptiness within [src] devours on your life force!") - user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN)) - user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN)) - user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN)) - user.apply_damage(rand(2,3), BURN, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_GROIN)) - ..() - -/obj/item/wirerod - name = "wired rod" - desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." - icon_state = "wiredrod" - item_state = "rods" - flags_1 = CONDUCT_1 - force = 9 - throwforce = 10 - w_class = WEIGHT_CLASS_NORMAL - custom_materials = list(/datum/material/iron=1150, /datum/material/glass=75) - attack_verb = list("hit", "bludgeoned", "whacked", "bonked") - -/obj/item/wirerod/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/shard)) - var/obj/item/spear/S = new /obj/item/spear - - remove_item_from_storage(user) - if (!user.transferItemToLoc(I, S)) - return - S.CheckParts(list(I)) - qdel(src) - - user.put_in_hands(S) - to_chat(user, "You fasten the glass shard to the top of the rod with the cable.") - - else if(istype(I, /obj/item/assembly/igniter) && !(HAS_TRAIT(I, TRAIT_NODROP))) - var/obj/item/melee/baton/cattleprod/P = new /obj/item/melee/baton/cattleprod - - remove_item_from_storage(user) - - to_chat(user, "You fasten [I] to the top of the rod with the cable.") - - qdel(I) - qdel(src) - - user.put_in_hands(P) - else - return ..() - - -/obj/item/throwing_star - name = "throwing star" - desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts." - icon_state = "throwingstar" - item_state = "eshield0" - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - force = 2 - throwforce = 20 //20 + 2 (WEIGHT_CLASS_SMALL) * 4 (EMBEDDED_IMPACT_PAIN_MULTIPLIER) = 28 damage on hit due to guaranteed embedding - throw_speed = 4 - embedding = list("pain_mult" = 4, "embed_chance" = 100, "fall_chance" = 0, "embed_chance_turf_mod" = 15) - armour_penetration = 40 - - w_class = WEIGHT_CLASS_SMALL - sharpness = IS_SHARP - custom_materials = list(/datum/material/iron=500, /datum/material/glass=500) - resistance_flags = FIRE_PROOF - -/obj/item/throwing_star/stamina - name = "shock throwing star" - desc = "An aerodynamic disc designed to cause excruciating pain when stuck inside fleeing targets, hopefully without causing fatal harm." - throwforce = 5 - embedding = list("pain_chance" = 5, "embed_chance" = 100, "fall_chance" = 0, "jostle_chance" = 10, "pain_stam_pct" = 0.8, "jostle_pain_mult" = 3) - -/obj/item/throwing_star/toy - name = "toy throwing star" - desc = "An aerodynamic disc strapped with adhesive for sticking to people, good for playing pranks and getting yourself killed by security." - sharpness = IS_BLUNT - force = 0 - throwforce = 0 - embedding = list("pain_mult" = 0, "jostle_pain_mult" = 0, "embed_chance" = 100, "fall_chance" = 0) - -/obj/item/throwing_star/magspear - name = "magnetic spear" - desc = "A reusable spear that is typically loaded into kinetic spearguns." - icon = 'icons/obj/ammo_bullets.dmi' - icon_state = "magspear" - throwforce = 25 //kills regular carps in one hit - force = 10 - throw_range = 0 //throwing these invalidates the speargun - attack_verb = list("stabbed", "ripped", "gored", "impaled") - embedding = list("pain_mult" = 8, "embed_chance" = 100, "fall_chance" = 0, "impact_pain_mult" = 15) //55 damage+embed on hit - -/obj/item/phone - name = "red phone" - desc = "Should anything ever go wrong..." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "red_phone" - force = 3 - throwforce = 2 - throw_speed = 3 - throw_range = 4 - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("called", "rang") - hitsound = 'sound/weapons/ring.ogg' - - -/obj/item/cane - name = "cane" - desc = "A cane used by a true gentleman." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "cane" - item_state = "stick" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 5 - throwforce = 5 - w_class = WEIGHT_CLASS_SMALL - custom_materials = list(/datum/material/iron=50) - attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed") - -/obj/item/staff - name = "wizard staff" - desc = "Apparently a staff used by the wizard." - icon = 'icons/obj/wizard.dmi' - icon_state = "staff" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - force = 3 - throwforce = 5 - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - armour_penetration = 100 - attack_verb = list("bludgeoned", "whacked", "disciplined") - resistance_flags = FLAMMABLE - -/obj/item/staff/broom - name = "broom" - desc = "Used for sweeping, and flying into the night while cackling. Black cat not included." - icon = 'icons/obj/wizard.dmi' - icon_state = "broom" - resistance_flags = FLAMMABLE - -/obj/item/staff/stick - name = "stick" - desc = "A great tool to drag someone else's drinks across the bar." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "cane" - item_state = "stick" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 3 - throwforce = 5 - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - -/obj/item/ectoplasm - name = "ectoplasm" - desc = "Spooky." - gender = PLURAL - icon = 'icons/obj/wizard.dmi' - icon_state = "ectoplasm" - - -/obj/item/ectoplasm/angelic - icon = 'icons/obj/wizard.dmi' - icon_state = "angelplasm" - -/obj/item/mounted_chainsaw - name = "mounted chainsaw" - desc = "A chainsaw that has replaced your arm." - icon_state = "chainsaw_on" - item_state = "mounted_chainsaw" - lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' - item_flags = ABSTRACT | DROPDEL - w_class = WEIGHT_CLASS_HUGE - force = 24 - throwforce = 0 - throw_range = 0 - throw_speed = 0 - sharpness = IS_SHARP - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = 'sound/weapons/chainsawhit.ogg' - tool_behaviour = TOOL_SAW - toolspeed = 1 - -/obj/item/mounted_chainsaw/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - -/obj/item/mounted_chainsaw/Destroy() - var/obj/item/bodypart/part - new /obj/item/chainsaw(get_turf(src)) - if(iscarbon(loc)) - var/mob/living/carbon/holder = loc - var/index = holder.get_held_index_of_item(src) - if(index) - part = holder.hand_bodyparts[index] - . = ..() - if(part) - part.drop_limb() - -/obj/item/statuebust - name = "bust" - desc = "A priceless ancient marble bust, the kind that belongs in a museum." //or you can hit people with it - icon = 'icons/obj/statue.dmi' - icon_state = "bust" - force = 15 - throwforce = 10 - throw_speed = 5 - throw_range = 2 - attack_verb = list("busted") - var/impressiveness = 45 - -/obj/item/statuebust/Initialize() - . = ..() - AddComponent(/datum/component/art, impressiveness) - AddElement(/datum/element/beauty, 1000) - -/obj/item/statuebust/hippocratic - name = "hippocrates bust" - desc = "A bust of the famous Greek physician Hippocrates of Kos, often referred to as the father of western medicine." - icon_state = "hippocratic" - impressiveness = 50 - -/obj/item/melee/skateboard - name = "improvised skateboard" - desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon." - icon_state = "skateboard" - item_state = "skateboard" - force = 12 - throwforce = 4 - w_class = WEIGHT_CLASS_NORMAL - attack_verb = list("smacked", "whacked", "slammed", "smashed") - ///The vehicle counterpart for the board - var/board_item_type = /obj/vehicle/ridden/scooter/skateboard - -/obj/item/melee/skateboard/attack_self(mob/user) - var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))//this probably has fucky interactions with telekinesis but for the record it wasnt my fault - S.buckle_mob(user) - qdel(src) - -/obj/item/melee/skateboard/pro - name = "skateboard" - desc = "A RaDSTORMz brand professional skateboard. It looks sturdy and well made." - icon_state = "skateboard2" - item_state = "skateboard2" - board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro - custom_premium_price = 500 - -/obj/item/melee/skateboard/hoverboard - name = "hoverboard" - desc = "A blast from the past, so retro!" - icon_state = "hoverboard_red" - item_state = "hoverboard_red" - board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard - custom_premium_price = 2015 - -/obj/item/melee/skateboard/hoverboard/admin - name = "\improper Board Of Directors" - desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too." - icon_state = "hoverboard_nt" - item_state = "hoverboard_nt" - board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin - -/obj/item/melee/baseball_bat - name = "baseball bat" - desc = "There ain't a skull in the league that can withstand a swatter." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "baseball_bat" - item_state = "baseball_bat" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 12 - throwforce = 12 - attack_verb = list("beat", "smacked") - custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 3.5) - w_class = WEIGHT_CLASS_HUGE - var/homerun_ready = 0 - var/homerun_able = 0 - -/obj/item/melee/baseball_bat/homerun - name = "home run bat" - desc = "This thing looks dangerous... Dangerously good at baseball, that is." - homerun_able = 1 - -/obj/item/melee/baseball_bat/attack_self(mob/user) - if(!homerun_able) - ..() - return - if(homerun_ready) - to_chat(user, "You're already ready to do a home run!") - ..() - return - to_chat(user, "You begin gathering strength...") - playsound(get_turf(src), 'sound/magic/lightning_chargeup.ogg', 65, TRUE) - if(do_after(user, 90, target = src)) - to_chat(user, "You gather power! Time for a home run!") - homerun_ready = 1 - ..() - -/obj/item/melee/baseball_bat/attack(mob/living/target, mob/living/user) - . = ..() - var/atom/throw_target = get_edge_target_turf(target, user.dir) - if(homerun_ready) - user.visible_message("It's a home run!") - target.throw_at(throw_target, rand(8,10), 14, user) - SSexplosions.medturf += throw_target - playsound(get_turf(src), 'sound/weapons/homerun.ogg', 100, TRUE) - homerun_ready = 0 - return - else if(!target.anchored) - target.throw_at(throw_target, rand(1,2), 2, user, gentle = TRUE) - -/obj/item/melee/baseball_bat/ablative - name = "metal baseball bat" - desc = "This bat is made of highly reflective, highly armored material." - icon_state = "baseball_bat_metal" - item_state = "baseball_bat_metal" - force = 12 - throwforce = 15 - -/obj/item/melee/baseball_bat/bone - name = "bone club" - desc = "A long and hard shaft of rock solid bone." // I am the master of comedy - icon_state = "baseball_bat_bone" - item_state = "baseball_bat_bone" - -/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers - var/picksound = rand(1,2) - var/turf = get_turf(src) - if(picksound == 1) - playsound(turf, 'sound/weapons/effects/batreflect1.ogg', 50, TRUE) - if(picksound == 2) - playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, TRUE) - return 1 - -/obj/item/melee/flyswatter - name = "flyswatter" - desc = "Useful for killing insects of all sizes." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "flyswatter" - item_state = "flyswatter" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 1 - throwforce = 1 - attack_verb = list("swatted", "smacked") - hitsound = 'sound/effects/snap.ogg' - w_class = WEIGHT_CLASS_SMALL - //Things in this list will be instantly splatted. Flyman weakness is handled in the flyman species weakness proc. - var/list/strong_against - -/obj/item/melee/flyswatter/Initialize() - . = ..() - strong_against = typecacheof(list( - /mob/living/simple_animal/hostile/poison/bees/, - /mob/living/simple_animal/butterfly, - /mob/living/simple_animal/hostile/cockroach, - /obj/item/queen_bee - )) - - -/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag) - . = ..() - if(proximity_flag) - if(is_type_in_typecache(target, strong_against)) - new /obj/effect/decal/cleanable/insectguts(target.drop_location()) - to_chat(user, "You easily splat the [target].") - if(istype(target, /mob/living/)) - var/mob/living/bug = target - bug.death(1) - else - qdel(target) - -/obj/item/proc/can_trigger_gun(mob/living/user) - if(!user.can_use_guns(src)) - return FALSE - return TRUE - -/obj/item/extendohand - name = "extendo-hand" - desc = "Futuristic tech has allowed these classic spring-boxing toys to essentially act as a fully functional hand-operated hand prosthetic." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "extendohand" - item_state = "extendohand" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - force = 0 - throwforce = 5 - reach = 2 - var/min_reach = 2 - -/obj/item/extendohand/acme - name = "\improper ACME Extendo-Hand" - desc = "A novelty extendo-hand produced by the ACME corporation. Originally designed to knock out roadrunners." - -/obj/item/extendohand/attack(atom/M, mob/living/carbon/human/user) - var/dist = get_dist(M, user) - if(dist < min_reach) - to_chat(user, "[M] is too close to use [src] on.") - return - M.attack_hand(user) - -/obj/item/gohei - name = "gohei" - desc = "A wooden stick with white streamers at the end. Originally used by shrine maidens to purify things. Now used by the station's valued weeaboos." - force = 5 - throwforce = 5 - hitsound = "swing_hit" - attack_verb = list("whacked", "thwacked", "walloped", "socked") - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "gohei" - item_state = "gohei" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - -//HF blade -/obj/item/vibro_weapon - icon_state = "hfrequency0" - base_icon_state = "hfrequency" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - name = "vibro sword" - desc = "A potent weapon capable of cutting through nearly anything. Wielding it in two hands will allow you to deflect gunfire." - armour_penetration = 100 - block_chance = 30 - force = 20 - throwforce = 20 - throw_speed = 4 - sharpness = IS_SHARP - attack_verb = list("cut", "sliced", "diced") - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - hitsound = 'sound/weapons/bladeslice.ogg' - var/wielded = FALSE // track wielded status on item - -/obj/item/vibro_weapon/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/vibro_weapon/ComponentInitialize() - . = ..() - AddComponent(/datum/component/butchering, 20, 105) - AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/vibro_weapon/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/vibro_weapon/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/vibro_weapon/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/vibro_weapon/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) - final_block_chance *= 2 - if(wielded || attack_type != PROJECTILE_ATTACK) - if(prob(final_block_chance)) - if(attack_type == PROJECTILE_ATTACK) - owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) - return 1 - else - owner.visible_message("[owner] parries [attack_text] with [src]!") - return 1 - return 0 - -/obj/item/claymore/bone - name = "Bone Sword" - desc = "Jagged pieces of bone are tied to what looks like a goliaths femur." - icon_state = "bone_sword" - item_state = "bone_sword" - icon = 'icons/obj/items_and_weapons.dmi' - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' - force = 15 - throwforce = 10 - armour_penetration = 15 - - -/obj/item/vibro_weapon/weak - armour_penetration = 10 - block_chance = 10 - force = 15 - throwforce = 20 - diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index dac919bb428c..39f65ca53a5b 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -98,7 +98,6 @@ icon_door = "black" /obj/structure/closet/wardrobe/chaplain_black/PopulateContents() - new /obj/item/storage/box/holy(src) new /obj/item/clothing/accessory/pocketprotector/cosmetology(src) new /obj/item/clothing/under/rank/civilian/chaplain(src) new /obj/item/clothing/shoes/sneakers/black(src) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index 24c0f71d322c..a164248a2bdd 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -10,7 +10,7 @@ integrity_failure = 0.33 var/locked = TRUE var/open = FALSE - var/obj/item/fireaxe/fireaxe + var/obj/item/melee/axe/fire/fireaxe /obj/structure/fireaxecabinet/Initialize() . = ..() @@ -49,8 +49,8 @@ obj_integrity = max_integrity update_appearance() else if(open || broken) - if(istype(I, /obj/item/fireaxe) && !fireaxe) - var/obj/item/fireaxe/F = I + if(istype(I, /obj/item/melee/axe/fire) && !fireaxe) + var/obj/item/melee/axe/fire/F = I if(F && F.wielded) to_chat(user, "Unwield the [F.name] first.") return diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 6a3cae5bbd72..362de185e9ba 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -362,12 +362,7 @@ /obj/structure/girder/cult/attackby(obj/item/W, mob/user, params) add_fingerprint(user) - if(istype(W, /obj/item/melee/cultblade/dagger) && iscultist(user)) //Cultists can demolish cult girders instantly with their tomes - user.visible_message("[user] strikes [src] with [W]!", "You demolish [src].") - new /obj/item/stack/sheet/mineral/hidden/hellstone(drop_location(), 1) - qdel(src) - - else if(W.tool_behaviour == TOOL_WELDER) + if(W.tool_behaviour == TOOL_WELDER) if(!W.tool_start_check(user, amount=0)) return diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm index c42983a5e0e5..5dbaa4a1e7c3 100644 --- a/code/game/objects/structures/headpike.dm +++ b/code/game/objects/structures/headpike.dm @@ -6,7 +6,7 @@ density = FALSE anchored = TRUE var/bonespear = FALSE - var/obj/item/spear/spear + var/obj/item/melee/spear/spear var/obj/item/bodypart/head/victim /obj/structure/headpike/bone //for bone spears @@ -24,9 +24,9 @@ victim = new(src) victim.real_name = random_unique_name(prob(50)) - spear = locate(bonespear ? /obj/item/spear/bonespear : /obj/item/spear) in parts_list + spear = locate(bonespear ? /obj/item/melee/spear/bone : /obj/item/melee/spear) in parts_list if(!spear) - spear = bonespear ? new/obj/item/spear/bonespear(src) : new/obj/item/spear(src) + spear = bonespear ? new/obj/item/melee/spear/bone(src) : new/obj/item/melee/spear(src) update_appearance() return ..() diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm index e0f6e22f3e7e..637f2deeb515 100644 --- a/code/game/objects/structures/manned_turret.dm +++ b/code/game/objects/structures/manned_turret.dm @@ -214,7 +214,7 @@ /obj/item/gun_control name = "turret controls" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "offhand" w_class = WEIGHT_CLASS_HUGE item_flags = ABSTRACT | NOBLUDGEON | DROPDEL diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 4ebd416675b8..a7404ef68a6c 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -726,7 +726,6 @@ /obj/item/rack_parts name = "rack parts" desc = "Parts of a rack." - icon = 'icons/obj/items_and_weapons.dmi' icon_state = "rack_parts" flags_1 = CONDUCT_1 custom_materials = list(/datum/material/iron=2000) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index c22858ea591d..0d97598a0504 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -218,7 +218,7 @@ /obj/item/reagent_containers/food/snacks/urinalcake name = "urinal cake" desc = "The noble urinal cake, protecting the people's pipes from the people's pee. Edibility is suggested to be low." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "urinalcake" w_class = WEIGHT_CLASS_TINY list_reagents = list(/datum/reagent/chlorine = 3, /datum/reagent/ammonia = 1) diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm index 04d4bc7895d6..1ca5a1cc527c 100644 --- a/code/game/turfs/closed/wall/mineral_walls.dm +++ b/code/game/turfs/closed/wall/mineral_walls.dm @@ -243,7 +243,7 @@ /turf/closed/wall/mineral/wood/attackby(obj/item/W, mob/user) if(W.get_sharpness() && W.force) var/duration = (48/W.force) * 2 //In seconds, for now. - if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/fireaxe)) + if(istype(W, /obj/item/hatchet) || istype(W, /obj/item/melee/axe/fire)) duration /= 4 //Much better with hatchets and axes. if(do_after(user, duration*10, target=src)) //Into deciseconds. dismantle_wall(devastated = FALSE) diff --git a/code/modules/antagonists/blood_contract/blood_contract.dm b/code/modules/antagonists/blood_contract/blood_contract.dm index edd8aba60422..c56ef47db93a 100644 --- a/code/modules/antagonists/blood_contract/blood_contract.dm +++ b/code/modules/antagonists/blood_contract/blood_contract.dm @@ -36,6 +36,6 @@ continue to_chat(P, "You have an overwhelming desire to kill [H]. [H.p_theyve(TRUE)] been marked red! Whoever [H.p_they()] [H.p_were()], friend or foe, go kill [H.p_them()]!") - var/obj/item/I = new /obj/item/kitchen/knife/butcher(get_turf(P)) + var/obj/item/I = new /obj/item/melee/knife/butcher(get_turf(P)) P.put_in_hands(I, del_on_fail=TRUE) QDEL_IN(I, duration) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index c9232857a547..b4bfb265386d 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -182,34 +182,6 @@ magic_path = "/obj/item/melee/blood_magic/construction" health_cost = 12 -/datum/action/innate/cult/blood_spell/equipment - name = "Summon Equipment" - desc = "Allows you to summon a ritual dagger, or empowers your hand to summon combat gear onto a cultist you touch, including cult armor, a cult bola, and a cult sword." - button_icon_state = "equip" - magic_path = "/obj/item/melee/blood_magic/armor" - -/datum/action/innate/cult/blood_spell/equipment/Activate() - var/choice = alert(owner,"Choose your equipment type",,"Combat Equipment","Ritual Dagger","Cancel") - if(choice == "Ritual Dagger") - var/turf/T = get_turf(owner) - owner.visible_message("[owner]'s hand glows red for a moment.", \ - "Red light begins to shimmer and take form within your hand!") - var/obj/O = new /obj/item/melee/cultblade/dagger(T) - if(owner.put_in_hands(O)) - to_chat(owner, "A ritual dagger appears in your hand!") - else - owner.visible_message( - "A ritual dagger appears at [owner]'s feet!", \ - "A ritual dagger materializes at your feet.") - SEND_SOUND(owner, sound('sound/effects/magic.ogg',0,1,25)) - charges-- - desc = base_desc - desc += "
Has [charges] use\s remaining." - if(charges<=0) - qdel(src) - else if(choice == "Combat Equipment") - ..() - /datum/action/innate/cult/blood_spell/horror name = "Hallucinations" desc = "Gives hallucinations to a target at range. A silent and invisible spell." @@ -339,7 +311,7 @@ /obj/item/melee/blood_magic name = "\improper magical aura" desc = "A sinister looking aura that distorts the flow of reality around it." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' icon_state = "disintegrate" @@ -695,7 +667,6 @@ C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), ITEM_SLOT_BACK) if(C == user) qdel(src) //Clears the hands - C.put_in_hands(new /obj/item/melee/cultblade(user)) C.put_in_hands(new /obj/item/restraints/legcuffs/bola/cult(user)) ..() @@ -812,29 +783,12 @@ /obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user) if(iscultist(user)) - var/list/options = list("Blood Spear (150)", "Blood Beam (500)") + var/list/options = list("Blood Beam (500)") var/choice = input(user, "Choose a greater blood rite...", "Greater Blood Rites") as null|anything in options if(!choice) to_chat(user, "You decide against conducting a greater blood rite.") return switch(choice) - if("Blood Spear (150)") - if(uses < BLOOD_SPEAR_COST) - to_chat(user, "You need [BLOOD_SPEAR_COST] charges to perform this rite.") - else - uses -= BLOOD_SPEAR_COST - var/turf/T = get_turf(user) - qdel(src) - var/datum/action/innate/cult/spear/S = new(user) - var/obj/item/cult_spear/rite = new(T) - S.Grant(user, rite) - rite.spear_act = S - if(user.put_in_hands(rite)) - to_chat(user, "A [rite.name] appears in your hand!") - else - user.visible_message( - "A [rite.name] appears at [user]'s feet!", \ - "A [rite.name] materializes at your feet.") if("Blood Beam (500)") if(uses < BLOOD_BEAM_COST) to_chat(user, "You need [BLOOD_BEAM_COST] charges to perform this rite.") diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 406c51956035..d6330b386f29 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -73,7 +73,6 @@ var/mob/living/carbon/H = owner.current if(!istype(H)) return - . += cult_give_item(/obj/item/melee/cultblade/dagger, H) to_chat(owner, "These will help you jumpstart a cult of your own in this sector. Use them well, and remember - you are not the only one.
") @@ -168,10 +167,7 @@ to_chat(admin, "Spawning dagger failed!") /datum/antagonist/cult/proc/admin_take_all(mob/admin) - var/mob/living/current = owner.current - for(var/o in current.GetAllContents()) - if(istype(o, /obj/item/melee/cultblade/dagger)) - qdel(o) + return /datum/antagonist/cult/master ignore_implant = TRUE diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 69c9248d6fb9..d13e3885a0df 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -6,209 +6,6 @@ throw_range = 5 w_class = WEIGHT_CLASS_SMALL -/obj/item/melee/cultblade/dagger - name = "ritual dagger" - desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods." - icon = 'icons/obj/wizard.dmi' - icon_state = "render" - item_state = "cultdagger" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - inhand_x_dimension = 32 - inhand_y_dimension = 32 - w_class = WEIGHT_CLASS_SMALL - force = 15 - throwforce = 25 - armour_penetration = 35 - actions_types = list(/datum/action/item_action/cult_dagger) - var/drawing_rune = FALSE - -/obj/item/melee/cultblade/dagger/Initialize() - . = ..() - var/image/I = image(icon = 'icons/effects/blood.dmi' , icon_state = null, loc = src) - I.override = TRUE - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_dagger", I) - -/obj/item/melee/cultblade - name = "eldritch longsword" - desc = "A sword humming with unholy energy. It glows with a dim red light." - icon_state = "cultblade" - item_state = "cultblade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 - sharpness = IS_SHARP - w_class = WEIGHT_CLASS_BULKY - force = 30 - throwforce = 10 - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended") - -/obj/item/melee/cultblade/Initialize() - . = ..() - AddComponent(/datum/component/butchering, 40, 100) - -/obj/item/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user) - if(!iscultist(user)) - user.Paralyze(100) - user.dropItemToGround(src, TRUE) - user.visible_message( - "A powerful force shoves [user] away from [target]!", \ - "\"You shouldn't play with sharp things. You'll poke someone's eye out.\"") - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.apply_damage(rand(force/2, force), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - else - user.adjustBruteLoss(rand(force/2,force)) - return - ..() - -/obj/item/melee/cultblade/ghost - name = "eldritch sword" - force = 19 //can't break normal airlocks - item_flags = NEEDS_PERMIT | DROPDEL - flags_1 = NONE - -/obj/item/melee/cultblade/ghost/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) - -/obj/item/melee/cultblade/pickup(mob/living/user) - ..() - if(!iscultist(user)) - to_chat(user, "\"I wouldn't advise that.\"") - -/obj/item/cult_bastard - name = "geometric bastard sword" - desc = "An enormous sword, once used by Nar'Sien cultists to rapidly harvest the souls of non-believers. It still yet hungers to taste inpure blood." - w_class = WEIGHT_CLASS_HUGE - block_chance = 50 - throwforce = 20 - force = 30 - armour_penetration = 45 - throw_speed = 1 - throw_range = 3 - sharpness = IS_SHARP - light_system = MOVABLE_LIGHT - light_range = 4 - light_color = COLOR_RED - attack_verb = list("cleaved", "bisected", "tore", "brutalized", "smashed", "ripped", "diced", "carved") - icon_state = "cultbastard" - item_state = "cultbastard" - hitsound = 'sound/weapons/bladeslice.ogg' - lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' - righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' - inhand_x_dimension = 64 - inhand_y_dimension = 64 - actions_types = list() - item_flags = SLOWS_WHILE_IN_HAND - var/datum/action/innate/dash/cult/jaunt - var/datum/action/innate/cult/spin2win/linked_action - var/spinning = FALSE - var/spin_cooldown = 250 - var/dash_toggled = TRUE - var/list/nemesis_factions = list("mining", "boss") - var/faction_bonus_force = 25 - -/obj/item/cult_bastard/Initialize() - . = ..() - jaunt = new(src) - linked_action = new(src) - AddComponent(/datum/component/butchering, 50, 120) - AddComponent(/datum/component/two_handed, require_twohands=TRUE) - -/obj/item/cult_bastard/attack(mob/living/target, mob/living/carbon/human/user) - var/nemesis_faction = FALSE - if(LAZYLEN(nemesis_factions)) - for(var/F in target.faction) - if(F in nemesis_factions) - nemesis_faction = TRUE - force += faction_bonus_force - throwforce += faction_bonus_force - nemesis_effects(user, target) - break - . = ..() - if(nemesis_faction) - force -= faction_bonus_force - throwforce -= faction_bonus_force - -/obj/item/cult_bastard/proc/nemesis_effects(mob/living/user, mob/living/target) - return - -/obj/item/cult_bastard/Destroy() - QDEL_NULL(jaunt) - QDEL_NULL(linked_action) - return ..() - -/obj/item/cult_bastard/examine(mob/user) - . = ..() - . += "This weapon will absorb the souls of unconscious human foes." - if(contents.len) - . += "There are [contents.len] souls trapped within the sword's core." - else - . += "The sword appears to be quite lifeless." - -/obj/item/cult_bastard/can_be_pulled(user) - return FALSE - -/obj/item/cult_bastard/attack_self(mob/user) - dash_toggled = !dash_toggled - if(dash_toggled) - to_chat(loc, "You raise [src] and prepare to jaunt with it.") - else - to_chat(loc, "You lower [src] and prepare to swing it normally.") - -/obj/item/cult_bastard/pickup(mob/living/user) - . = ..() - force = initial(force) - jaunt.Grant(user, src) - linked_action.Grant(user, src) - user.update_icons() - -/obj/item/cult_bastard/dropped(mob/user) - . = ..() - linked_action.Remove(user) - jaunt.Remove(user) - user.update_icons() - -/obj/item/cult_bastard/IsReflect() - if(spinning) - playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) - return TRUE - else - ..() - -/obj/item/cult_bastard/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(prob(final_block_chance)) - if(attack_type == PROJECTILE_ATTACK) - owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) - return TRUE - else - playsound(src, 'sound/weapons/parry.ogg', 75, TRUE) - owner.visible_message("[owner] parries [attack_text] with [src]!") - return TRUE - return FALSE - -/obj/item/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters) - . = ..() - if(dash_toggled && !proximity) - jaunt.Teleport(user, target) - return - if(proximity) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(H.stat != CONSCIOUS) - var/obj/item/soulstone/anybody/SS = new /obj/item/soulstone/anybody(src) - SS.attack(H, user) - if(!LAZYLEN(SS.contents)) - qdel(SS) - if(istype(target, /obj/structure/constructshell) && contents.len) - var/obj/item/soulstone/anybody/SS = contents[1] - if(istype(SS)) - SS.transfer_soul("CONSTRUCT",target,user) - qdel(SS) - /datum/action/innate/dash/cult name = "Rend the Veil" desc = "Use the sword to shear open the flimsy fabric of this reality and teleport to your target." @@ -226,45 +23,6 @@ else return FALSE - - -/datum/action/innate/cult/spin2win - name = "Geometer's Fury" - desc = "You draw on the power of the sword's ancient runes, spinning it wildly around you as you become immune to most attacks." - background_icon_state = "bg_demon" - button_icon_state = "sintouch" - var/cooldown = 0 - var/mob/living/carbon/human/holder - var/obj/item/cult_bastard/sword - -/datum/action/innate/cult/spin2win/Grant(mob/user, obj/bastard) - . = ..() - sword = bastard - holder = user - -/datum/action/innate/cult/spin2win/IsAvailable() - if(cooldown <= world.time) - return TRUE - else - return FALSE - -/datum/action/innate/cult/spin2win/Activate() - cooldown = world.time + sword.spin_cooldown - holder.changeNext_move(50) - holder.apply_status_effect(/datum/status_effect/sword_spin) - sword.spinning = TRUE - sword.block_chance = 100 - sword.slowdown += 1.5 - addtimer(CALLBACK(src, PROC_REF(stop_spinning)), 50) - holder.update_action_buttons_icon() - -/datum/action/innate/cult/spin2win/proc/stop_spinning() - sword.spinning = FALSE - sword.block_chance = 50 - sword.slowdown -= 1.5 - sleep(sword.spin_cooldown) - holder.update_action_buttons_icon() - /obj/item/restraints/legcuffs/bola/cult name = "\improper Nar'Sien bola" desc = "A strong bola, bound with dark magic that allows it to pass harmlessly through Nar'Sien cultists. Throw it to trip and slow your victim." @@ -303,7 +61,7 @@ icon_state = "cultrobes" item_state = "cultrobes" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank) + allowed = list(/obj/item/tome, /obj/item/tank) armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 40, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) flags_inv = HIDEJUMPSUIT cold_protection = CHEST|GROIN|LEGS|ARMS @@ -349,7 +107,7 @@ icon_state = "magusred" item_state = "magusred" body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/tome, /obj/item/melee/cultblade) + allowed = list(/obj/item/tome) armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 50, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT @@ -369,7 +127,7 @@ item_state = "cult_armor" desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. It can withstand hard vacuum." w_class = WEIGHT_CLASS_BULKY - allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank/internals/) + allowed = list(/obj/item/tome, /obj/item/tank/internals/) armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult @@ -430,7 +188,7 @@ /obj/item/clothing/suit/hooded/cultrobes/berserker name = "flagellant's robes" desc = "Blood-soaked robes infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage." - allowed = list(/obj/item/tome, /obj/item/melee/cultblade) + allowed = list(/obj/item/tome) armor = list("melee" = -45, "bullet" = -45, "laser" = -45,"energy" = -55, "bomb" = -45, "bio" = -45, "rad" = -45, "fire" = 0, "acid" = 0) slowdown = -0.6 hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/berserkerhood @@ -581,132 +339,9 @@ ..() to_chat(user, "\The [src] can only transport items!") - -/obj/item/cult_spear - name = "blood halberd" - desc = "A sickening spear composed entirely of crystallized blood." - icon_state = "bloodspear0" - base_icon_state = "occultpoleaxe" - lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' - slot_flags = 0 - force = 17 - throwforce = 40 - throw_speed = 2 - armour_penetration = 30 - block_chance = 30 - attack_verb = list("attacked", "impaled", "stabbed", "torn", "gored") - sharpness = IS_SHARP - hitsound = 'sound/weapons/bladeslice.ogg' - var/datum/action/innate/cult/spear/spear_act - var/wielded = FALSE // track wielded status on item - -/obj/item/cult_spear/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) - -/obj/item/cult_spear/ComponentInitialize() - . = ..() - AddComponent(/datum/component/butchering, 100, 90) - AddComponent(/datum/component/two_handed, force_unwielded=17, force_wielded=24, icon_wielded="[base_icon_state]1") - -/// triggered on wield of two handed item -/obj/item/cult_spear/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/cult_spear/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/cult_spear/update_icon_state() - icon_state = "[base_icon_state]0" - return ..() - -/obj/item/cult_spear/Destroy() - if(spear_act) - qdel(spear_act) - return ..() - -/obj/item/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - var/turf/T = get_turf(hit_atom) - if(isliving(hit_atom)) - var/mob/living/L = hit_atom - if(iscultist(L)) - playsound(src, 'sound/weapons/throwtap.ogg', 50) - if(L.put_in_active_hand(src)) - L.visible_message("[L] catches [src] out of the air!") - else - L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") - else if(!..()) - if(!L.anti_magic_check()) - L.Paralyze(50) - break_spear(T) - else - ..() - -/obj/item/cult_spear/proc/break_spear(turf/T) - if(src) - if(!T) - T = get_turf(src) - if(T) - T.visible_message("[src] shatters and melts back into blood!") - new /obj/effect/temp_visual/cult/sparks(T) - new /obj/effect/decal/cleanable/blood/splatter(T) - playsound(T, 'sound/effects/glassbr3.ogg', 100) - qdel(src) - -/obj/item/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) - final_block_chance *= 2 - if(prob(final_block_chance)) - if(attack_type == PROJECTILE_ATTACK) - owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) - return TRUE - else - playsound(src, 'sound/weapons/parry.ogg', 100, TRUE) - owner.visible_message("[owner] parries [attack_text] with [src]!") - return TRUE - return FALSE - -/datum/action/innate/cult/spear - name = "Bloody Bond" - desc = "Call the blood spear back to your hand!" - background_icon_state = "bg_demon" - button_icon_state = "bloodspear" - var/obj/item/cult_spear/spear - var/cooldown = 0 - -/datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear) - . = ..() - spear = blood_spear - button.screen_loc = "6:157,4:-2" - button.moved = "6:157,4:-2" - -/datum/action/innate/cult/spear/Activate() - if(owner == spear.loc || cooldown > world.time) - return - var/ST = get_turf(spear) - var/OT = get_turf(owner) - if(get_dist(OT, ST) > 10) - to_chat(owner,"The spear is too far away!") - else - cooldown = world.time + 20 - if(isliving(spear.loc)) - var/mob/living/L = spear.loc - L.dropItemToGround(spear) - L.visible_message("An unseen force pulls the blood spear from [L]'s hands!") - spear.throw_at(owner, 10, 2, owner) - /obj/item/blood_beam name = "\improper magical aura" desc = "Sinister looking aura that distorts the flow of reality around it." - icon = 'icons/obj/items_and_weapons.dmi' lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' icon_state = "disintegrate" diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index 60816a90d45d..27ba86d24bfa 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -64,13 +64,6 @@ icon_state = "[initial(icon_state)][anchored ? null : "_off"]" return ..() -/obj/structure/destructible/cult/attackby(obj/I, mob/user, params) - if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user)) - set_anchored(!anchored) - to_chat(user, "You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor.") - else - return ..() - /obj/structure/destructible/cult/proc/check_menu(mob/user) if(!istype(user)) return FALSE diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm deleted file mode 100644 index 1ea84bd83a1f..000000000000 --- a/code/modules/antagonists/cult/ritual.dm +++ /dev/null @@ -1,155 +0,0 @@ -/* - -This file contains the cult dagger and rune list code - -*/ - - -/obj/item/melee/cultblade/dagger/Initialize() - . = ..() - if(!LAZYLEN(GLOB.rune_types)) - GLOB.rune_types = list() - var/static/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) - for(var/i_can_do_loops_now_thanks_remie in non_revealed_runes) - var/obj/effect/rune/R = i_can_do_loops_now_thanks_remie - GLOB.rune_types[initial(R.cultist_name)] = R //Uses the cultist name for displaying purposes - -/obj/item/melee/cultblade/dagger/examine(mob/user) - . = ..() - if(iscultist(user) || isobserver(user)) - . += {"The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar'Sie.\n - Striking a cult structure will unanchor or reanchor it.\n - Striking another cultist with it will purge holy water from them.\n - Striking a noncultist, however, will tear their flesh."} - -/obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user) - if(iscultist(M)) - if(M.reagents && M.reagents.has_reagent(/datum/reagent/water/holywater)) //allows cultists to be rescued from the clutches of ordained religion - to_chat(user, "You remove the taint from [M]." ) - var/holy2unholy = M.reagents.get_reagent_amount(/datum/reagent/water/holywater) - M.reagents.del_reagent(/datum/reagent/water/holywater) - M.reagents.add_reagent(/datum/reagent/fuel/unholywater,holy2unholy) - log_combat(user, M, "smacked", src, " removing the holy water from them") - return FALSE - . = ..() - -/obj/item/melee/cultblade/dagger/attack_self(mob/user) - if(!iscultist(user)) - to_chat(user, "[src] is covered in unintelligible shapes and markings.") - return - scribe_rune(user) - -/obj/item/melee/cultblade/dagger/proc/scribe_rune(mob/living/user) - if(drawing_rune) - return - drawing_rune = TRUE - scribe_rune_attempt(user) - drawing_rune = FALSE - -/obj/item/melee/cultblade/dagger/proc/scribe_rune_attempt(mob/living/user) - var/turf/Turf = get_turf(user) - var/chosen_keyword - var/obj/effect/rune/rune_to_scribe - var/entered_rune_name - var/list/shields = list() - var/area/A = get_area(src) - var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!user_antag) - return - if(!check_rune_turf(Turf, user)) - return - entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in GLOB.rune_types - if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user)) - return - rune_to_scribe = GLOB.rune_types[entered_rune_name] - if(!rune_to_scribe) - return - if(initial(rune_to_scribe.req_keyword)) - chosen_keyword = stripped_input(user, "Enter a keyword for the new rune.", "Words of Power") - if(!chosen_keyword) - drawing_rune = FALSE - scribe_rune(user) //Go back a menu! - return - Turf = get_turf(user) //we may have moved. adjust as needed... - A = get_area(src) - if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user)) - return - if(ispath(rune_to_scribe, /obj/effect/rune/summon) && initial(A.name) == "Space") - to_chat(user, "The veil is not weak enough here to summon a cultist!") - return - if(ispath(rune_to_scribe, /obj/effect/rune/apocalypse)) - if((world.time - SSticker.round_start_time) <= 6000) - var/wait = 6000 - (world.time - SSticker.round_start_time) - to_chat(user, "The veil is not yet weak enough for this rune - it will be available in [DisplayTimeText(wait)].") - return - var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives - if(!(A in summon_objective.summon_spots)) - to_chat(user, "The Apocalypse rune will remove a ritual site (where Nar'Sie can be summoned), it can only be scribed in [english_list(summon_objective.summon_spots)]!") - return - if(summon_objective.summon_spots.len < 2) - to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning!") - return - if(ispath(rune_to_scribe, /obj/effect/rune/narsie)) - var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives - var/datum/objective/sacrifice/sac_objective = locate() in user_antag.cult_team.objectives - if(!summon_objective) - to_chat(user, "Nar'Sie does not wish to be summoned!") - return - if(sac_objective && !sac_objective.check_completion()) - to_chat(user, "The sacrifice is not complete. The portal would lack the power to open if you tried!") - return - if(summon_objective.check_completion()) - to_chat(user, "\"I am already here. There is no need to try to summon me now.\"") - return - if(!(A in summon_objective.summon_spots)) - to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") - return - var/confirm_final = alert(user, "This is the FINAL step to summon Nar'Sie; it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for Nar'Sie!", "No") - if(confirm_final == "No") - to_chat(user, "You decide to prepare further before scribing the rune.") - return - Turf = get_turf(user) - A = get_area(src) - if(!(A in summon_objective.summon_spots)) // Check again to make sure they didn't move - to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") - return - priority_announce("Figments from an eldritch god are being summoned by [user] into [initial(A.name)] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/ai/spanomalies.ogg') - for(var/B in spiral_range_turfs(1, user, 1)) - var/obj/structure/emergency_shield/sanguine/N = new(B) - shields += N - user.visible_message( - "[user] [user.blood_volume ? "cuts open [user.p_their()] arm and begins writing in [user.p_their()] own blood":"begins sketching out a strange design"]!", \ - "You [user.blood_volume ? "slice open your arm and ":""]begin drawing a sigil of the Geometer.") - if(user.blood_volume) - user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - var/scribe_mod = initial(rune_to_scribe.scribe_delay) - if(istype(get_turf(user), /turf/open/floor/engine/cult) && !(ispath(rune_to_scribe, /obj/effect/rune/narsie))) - scribe_mod *= 0.5 - if(!do_after(user, scribe_mod, target = get_turf(user))) - for(var/V in shields) - var/obj/structure/emergency_shield/sanguine/S = V - if(S && !QDELETED(S)) - qdel(S) - return - if(!check_rune_turf(Turf, user)) - return - user.visible_message( - "[user] creates a strange circle[user.blood_volume ? " in [user.p_their()] own blood":""].", \ - "You finish drawing the arcane markings of the Geometer.") - for(var/V in shields) - var/obj/structure/emergency_shield/S = V - if(S && !QDELETED(S)) - qdel(S) - var/obj/effect/rune/R = new rune_to_scribe(Turf, chosen_keyword) - R.add_mob_blood(user) - to_chat(user, "The [lowertext(R.cultist_name)] rune [R.cultist_desc]") - SSblackbox.record_feedback("tally", "cult_runes_scribed", 1, R.cultist_name) - -/obj/item/melee/cultblade/dagger/proc/check_rune_turf(turf/T, mob/user) - if(isspaceturf(T)) - to_chat(user, "You cannot scribe runes in space!") - return FALSE - if(locate(/obj/effect/rune) in T) - to_chat(user, "There is already a rune here.") - return FALSE - return TRUE diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 5058dc73f081..b0fb446405c2 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -55,13 +55,6 @@ Runes can either be invoked by one's self or with many different cultists. Each if(req_keyword && keyword) . += "Keyword: [keyword]" -/obj/effect/rune/attackby(obj/I, mob/user, params) - if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user)) - SEND_SOUND(user,'sound/items/sheath.ogg') - if(do_after(user, 15, target = src)) - to_chat(user, "You carefully erase the [lowertext(cultist_name)] rune.") - qdel(src) - /obj/effect/rune/attack_hand(mob/living/user) . = ..() if(.) @@ -241,7 +234,6 @@ structure_check() searches for nearby cultist structures required for the invoca "[convertee] writhes in pain [brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!", // Hello there buddy! Come here often? I hope you were wondering wtf this string was "AAAAAAAAAAAAAA-") SSticker.mode.add_cultist(convertee.mind, 1) - new /obj/item/melee/cultblade/dagger(get_turf(src)) convertee.mind.special_role = ROLE_CULTIST to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ and something evil takes root.") @@ -492,15 +484,6 @@ structure_check() searches for nearby cultist structures required for the invoca color = RUNE_COLOR_RED new /obj/singularity/narsie/large/cult(T) //Causes Nar'Sie to spawn even if the rune has been removed -/obj/effect/rune/narsie/attackby(obj/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal. - if((istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user))) - user.visible_message("[user.name] begins erasing [src]...", "You begin erasing [src]...") - if(do_after(user, 50, target = src)) //Prevents accidental erasures. - log_game("Summon Narsie rune erased by [key_name(user)] with [I.name]") - message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]") - else - ..() - //Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out. /obj/effect/rune/raise_dead cultist_name = "Revive" diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index ff744ef05840..db087e100e2f 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -87,9 +87,6 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", var/form = BASIC_DEVIL var/static/list/devil_spells = typecacheof(list( /obj/effect/proc_holder/spell/aimed/fireball/hellish, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended, /obj/effect/proc_holder/spell/targeted/infernal_jaunt, /obj/effect/proc_holder/spell/targeted/sintouch, /obj/effect/proc_holder/spell/targeted/sintouch/ascended, @@ -322,21 +319,17 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/give_base_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) /datum/antagonist/devil/proc/give_blood_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) /datum/antagonist/devil/proc/give_true_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) /datum/antagonist/devil/proc/give_arch_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null)) /datum/antagonist/devil/proc/beginResurrectionCheck(mob/living/body) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 920fbbdd557b..26d7321eb813 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -658,20 +658,6 @@ This is here to make the tiles around the station mininuke change when it's arme if(isobserver(user) || HAS_TRAIT(user.mind, TRAIT_DISK_VERIFIER)) . += "The serial numbers on [src] are incorrect." -/obj/item/disk/nuclear/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/claymore/highlander) && !fake) - var/obj/item/claymore/highlander/H = I - if(H.nuke_disk) - to_chat(user, "Wait... what?") - qdel(H.nuke_disk) - H.nuke_disk = null - return - user.visible_message("[user] captures [src]!", "You've got the disk! Defend it with your life!") - forceMove(H) - H.nuke_disk = src - return TRUE - return ..() - /obj/item/disk/nuclear/Destroy(force=FALSE) // respawning is handled in /obj/Destroy() if(force) diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index a20b905b590d..ae651cf055e6 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -259,8 +259,8 @@ H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) - H.put_in_hands(new /obj/item/claymore(H), TRUE) - H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK) + H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) + H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK) /obj/item/voodoo diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 69ff4bcfc2f5..9f4349a2bbc8 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -351,16 +351,6 @@ limit = 3 category = "Assistance" -/datum/spellbook_entry/item/mjolnir - name = "Mjolnir" - desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." - item_path = /obj/item/mjollnir - -/datum/spellbook_entry/item/singularity_hammer - name = "Singularity Hammer" - desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." - item_path = /obj/item/singularityhammer - /datum/spellbook_entry/item/battlemage name = "Battlemage Armour" desc = "An ensorceled suit of armour, protected by a powerful shield. The shield can completely negate sixteen attacks before being permanently depleted." diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 3c4537caabab..0f76623f617c 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -507,9 +507,7 @@ /obj/effect/spawner/lootdrop/snowdin/dungeonheavy name = "dungeon heavy" - loot = list(/obj/item/singularityhammer = 25, - /obj/item/mjollnir = 10, - /obj/item/fireaxe = 25, + loot = list(/obj/item/melee/axe/fire = 25, /obj/item/organ/brain/alien = 17, /obj/item/dualsaber = 15, /obj/item/organ/heart/demon = 7, @@ -530,7 +528,7 @@ loot = list(/obj/item/stack/sheet/mineral/snow{amount = 25} = 10, /obj/item/toy/snowball = 15, /obj/item/shovel = 10, - /obj/item/spear = 8, + /obj/item/melee/spear = 8, ) //special items//-- diff --git a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm index eb16758b103b..cd0fcf9fd7a9 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm @@ -15,7 +15,7 @@ /datum/blackmarket_item/weapon/bone_spear name = "Bone Spear" desc = "Authentic tribal spear, made from real bones! A steal at any price, especially if you're a caveman." - item = /obj/item/spear/bonespear + item = /obj/item/melee/spear/bone price_min = 200 price_max = 300 @@ -25,7 +25,7 @@ /datum/blackmarket_item/weapon/switchblade name = "Switchblade" desc = "Extra shrap switchblades for intimidation AND style. Bandages not included if you cut yourself." - item = /obj/item/kitchen/knife/switchblade + item = /obj/item/melee/knife/switchblade price_min = 500 price_max = 700 diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 3ddc15dfa33b..37507132a865 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -15,7 +15,7 @@ name = "Skateboard" description = "Nanotrasen has determined walking to be wasteful. Ship a skateboard to CentCom to speed operations up." reward = 900 // the tony hawk - wanted_types = list(/obj/vehicle/ridden/scooter/skateboard, /obj/item/melee/skateboard) + wanted_types = list(/obj/vehicle/ridden/scooter/skateboard, /obj/item/skateboard) /datum/bounty/item/assistant/stunprod name = "Stunprod" @@ -35,7 +35,7 @@ description = "CentCom's security forces are going through budget cuts. You will be paid if you ship a set of spears." reward = 2000 required_count = 5 - wanted_types = list(/obj/item/spear) + wanted_types = list(/obj/item/melee/spear) /datum/bounty/item/assistant/toolbox name = "Toolboxes" diff --git a/code/modules/cargo/bounties/mining.dm b/code/modules/cargo/bounties/mining.dm index 4eb48b09c7cb..6527228f31ec 100644 --- a/code/modules/cargo/bounties/mining.dm +++ b/code/modules/cargo/bounties/mining.dm @@ -22,7 +22,7 @@ name = "Bone Axe" description = "Station 12 has had their fire axes stolen by marauding clowns. Ship them a bone axe as a replacement." reward = 7500 - wanted_types = list(/obj/item/fireaxe/boneaxe) + wanted_types = list(/obj/item/melee/axe/bone) /datum/bounty/item/mining/bone_armor name = "Bone Armor" @@ -48,7 +48,7 @@ description = "Central Command's canteen is undergoing budget cuts. Ship over some bone daggers so our Chef can keep working." reward = 5000 required_count = 3 - wanted_types = list(/obj/item/kitchen/knife/combat/bone) + wanted_types = list(/obj/item/melee/knife/bone) /datum/bounty/item/mining/polypore_mushroom name = "Mushroom Bowl" diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index 4779886622a4..3ca8ec9ece05 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -9,9 +9,7 @@ /obj/item/book_of_babel, /obj/item/wisp_lantern, /obj/item/reagent_containers/glass/bottle/potion/flight, - /obj/item/katana/cursed, /obj/item/clothing/glasses/godeye, - /obj/item/melee/ghost_sword, /obj/item/clothing/suit/space/hardsuit/cult, /obj/item/voodoo, /obj/item/grenade/clusterbuster/inferno, @@ -22,9 +20,7 @@ /obj/item/lava_staff, /obj/item/ship_in_a_bottle, /obj/item/clothing/shoes/clown_shoes/banana_shoes, - /obj/item/kitchen/knife/envy, /obj/item/veilrender/vealrender, - /obj/item/nullrod/scythe/talking/necro, /obj/item/clothing/suit/armor/ascetic) /datum/export/lavaland/major //valuable chest/ruin loot and staff of storms diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm index bbe73991f7ef..c6ee67ed091e 100644 --- a/code/modules/cargo/exports/weapons.dm +++ b/code/modules/cargo/exports/weapons.dm @@ -13,7 +13,7 @@ /datum/export/weapon/knife cost = 100 unit_name = "combat knife" - export_types = list(/obj/item/kitchen/knife/combat) + export_types = list(/obj/item/melee/knife/combat) /datum/export/weapon/taser diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index 01bfcc1dc756..fd3ba6c74863 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -115,7 +115,7 @@ if(prob(30)) //Not all mafioso have mustaches, some people also find this item annoying. new /obj/item/clothing/mask/fakemoustache/italian(C) if(prob(10)) //A little extra sugar every now and then to shake things up. - new /obj/item/kitchen/knife/switchblade(C) + new /obj/item/melee/knife/switchblade(C) /datum/supply_pack/costumes_toys/mech_suits name = "Exosuit Pilot's Suit Crate" diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm index 28f15b583206..f0f062160c79 100644 --- a/code/modules/cargo/packs/sec_supply.dm +++ b/code/modules/cargo/packs/sec_supply.dm @@ -72,11 +72,24 @@ name = "Survival Knives Crate" desc = "Contains three sharpened survival knives. Each knife guaranteed to fit snugly inside any galactic-standard boot." cost = 500 - contains = list(/obj/item/kitchen/knife/combat/survival, - /obj/item/kitchen/knife/combat/survival, - /obj/item/kitchen/knife/combat/survival) + contains = list(/obj/item/melee/knife/survival, + /obj/item/melee/knife/survival, + /obj/item/melee/knife/survival) crate_name = "combat knife crate" +/* +/datum/supply_pack/sec_supply/machete + name = "Stampted Steel Machete Crate" + desc = "Contains five mass produced machetes. A perfect choice for crews on a budget." + cost = 500 + contains = list(/obj/item/melee/sword/mass, + /obj/item/melee/sword/mass, + /obj/item/melee/sword/mass, + /obj/item/melee/sword/mass, + /obj/item/melee/sword/mass) + crate_name = "combat knife crate" +*/ + /datum/supply_pack/sec_supply/fire name = "Incendiary Weapons Crate" desc = "Burn, baby burn. Contains three incendiary grenades and three prebuilt flamethrowers." diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm index d68c49e61778..8401455bf7d8 100644 --- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm +++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm @@ -44,7 +44,7 @@ suit = pickweight(list( /obj/item/clothing/suit/armor/vest = 5, /obj/item/clothing/suit/armor/vest/bulletproof/frontier = 5, - /obj/item/clothing/suit/armor/vest/scrap_armor = 1)) + /obj/item/clothing/suit/armor/vest/scrap = 1)) if(prob(30)) mask = pickweight(list( @@ -123,9 +123,9 @@ /obj/item/gun/energy/e_gun/mini)) if("Melee") r_hand = pickweight(list( - /obj/item/kitchen/knife/combat/survival = 15, + /obj/item/melee/knife/survival = 15, /obj/item/melee/baseball_bat = 10, - /obj/item/melee/roastingstick = 2, + /obj/item/roastingstick = 2, /obj/item/kitchen/fork = 1, /obj/item/melee/flyswatter = 1, )) @@ -173,14 +173,14 @@ suit = /obj/item/clothing/suit/armor/frontier suit_store = /obj/item/gun/ballistic/automatic/pistol/deagle - backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/ammo_box/magazine/m50=2, /obj/item/binoculars=1, /obj/item/kitchen/knife/combat/survival) + backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/ammo_box/magazine/m50=2, /obj/item/binoculars=1, /obj/item/melee/knife/survival) /datum/outfit/job/frontiersmen/ert/leader/unnarmed name = "ERT - Frontiersman Officer (Unnarmed)" suit_store = null - backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/binoculars=1, /obj/item/kitchen/knife/combat/survival) + backpack_contents = list(/obj/item/clothing/mask/gas/frontiersmen, /obj/item/binoculars=1, /obj/item/melee/knife/survival) /datum/outfit/job/frontiersmen/ert/medic name = "ERT - Frontiersman Medic" diff --git a/code/modules/clothing/outfits/ert/indie_ert.dm b/code/modules/clothing/outfits/ert/indie_ert.dm index e45f0895d0f4..236f9ee75c57 100644 --- a/code/modules/clothing/outfits/ert/indie_ert.dm +++ b/code/modules/clothing/outfits/ert/indie_ert.dm @@ -75,7 +75,7 @@ jobtype = /datum/job/chief_engineer job_icon = "chiefengineer" - back = /obj/item/fireaxe + back = /obj/item/melee/axe/fire suit = /obj/item/clothing/suit/space/hardsuit/engine suit_store = /obj/item/tank/internals/oxygen/red head = null diff --git a/code/modules/clothing/outfits/ert/inteq_ert.dm b/code/modules/clothing/outfits/ert/inteq_ert.dm index b3fc0c61970c..9fd796d04516 100644 --- a/code/modules/clothing/outfits/ert/inteq_ert.dm +++ b/code/modules/clothing/outfits/ert/inteq_ert.dm @@ -15,7 +15,7 @@ belt = /obj/item/storage/belt/security/webbing/inteq/skm back = /obj/item/storage/backpack/fireproof - l_pocket = /obj/item/kitchen/knife/combat + l_pocket = /obj/item/melee/knife/combat r_pocket = /obj/item/flashlight/seclite backpack_contents = list(/obj/item/radio=1) diff --git a/code/modules/clothing/outfits/ert/minutemen_ert.dm b/code/modules/clothing/outfits/ert/minutemen_ert.dm index 482777814c64..d5a3ec72e94c 100644 --- a/code/modules/clothing/outfits/ert/minutemen_ert.dm +++ b/code/modules/clothing/outfits/ert/minutemen_ert.dm @@ -9,7 +9,7 @@ head = /obj/item/clothing/head/helmet/riot/clip belt = /obj/item/storage/belt/military/clip/cm15 glasses = /obj/item/clothing/glasses/hud/health/night - r_pocket = /obj/item/kitchen/knife/combat + r_pocket = /obj/item/melee/knife/combat l_pocket = /obj/item/extinguisher/mini backpack_contents = list( diff --git a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm index a66ee78c7239..1ca40cd640e3 100644 --- a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm +++ b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm @@ -29,7 +29,7 @@ belt = /obj/item/storage/belt/security/full backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\ /obj/item/melee/baton/loaded=1) - l_pocket = /obj/item/kitchen/knife/switchblade + l_pocket = /obj/item/melee/knife/switchblade /datum/outfit/centcom/ert/commander/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) ..() @@ -287,7 +287,7 @@ ) belt = /obj/item/storage/belt/military/assault glasses = /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch - l_pocket = /obj/item/kitchen/knife/combat + l_pocket = /obj/item/melee/knife/combat r_pocket = /obj/item/tank/internals/emergency_oxygen/double uniform = /obj/item/clothing/under/rank/security/officer/military accessory = /obj/item/clothing/accessory/holster/marine @@ -399,7 +399,7 @@ box = /obj/item/storage/box/survival/security l_pocket = /obj/item/restraints/handcuffs - r_pocket = /obj/item/kitchen/knife/combat + r_pocket = /obj/item/melee/knife/combat backpack_contents = list(/obj/item/radio=1, /obj/item/stock_parts/cell/gun/upgraded=2, /obj/item/screwdriver=1) diff --git a/code/modules/clothing/outfits/ert/syndicate_ert.dm b/code/modules/clothing/outfits/ert/syndicate_ert.dm index f2dadc4e0d95..c37dab500091 100644 --- a/code/modules/clothing/outfits/ert/syndicate_ert.dm +++ b/code/modules/clothing/outfits/ert/syndicate_ert.dm @@ -14,7 +14,7 @@ back = /obj/item/storage/backpack/security belt = /obj/item/storage/belt/military/c20r - r_pocket = /obj/item/kitchen/knife/combat + r_pocket = /obj/item/melee/knife/combat l_pocket = /obj/item/grenade/frag implants = list(/obj/item/implant/weapons_auth) @@ -75,7 +75,7 @@ belt = /obj/item/storage/belt/security suit_store = /obj/item/gun/ballistic/automatic/marksman/taipan - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival l_pocket = /obj/item/binoculars backpack_contents = list(/obj/item/ammo_box/magazine/sniper_rounds=2, /obj/item/radio=1) @@ -133,7 +133,7 @@ head = /obj/item/clothing/head/soft/cybersun/medical belt = /obj/item/storage/belt/medical/webbing/paramedic back = /obj/item/storage/backpack/ert/medical - l_pocket = /obj/item/kitchen/knife/combat/survival + l_pocket = /obj/item/melee/knife/survival r_pocket = /obj/item/pinpointer/crew accessory = /obj/item/clothing/accessory/holster/marine diff --git a/code/modules/clothing/outfits/factions/frontiersmen.dm b/code/modules/clothing/outfits/factions/frontiersmen.dm index 44d0c4920784..997eec2209d4 100644 --- a/code/modules/clothing/outfits/factions/frontiersmen.dm +++ b/code/modules/clothing/outfits/factions/frontiersmen.dm @@ -133,7 +133,7 @@ shoes = /obj/item/clothing/shoes/jackboots head = /obj/item/clothing/head/beret/sec/frontier/officer gloves = /obj/item/clothing/gloves/combat - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival // Head of Security /datum/outfit/job/frontiersmen/hos @@ -184,7 +184,7 @@ accessory = /obj/item/clothing/accessory/armband/med uniform = /obj/item/clothing/under/frontiersmen glasses = /obj/item/clothing/glasses/hud/health - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival suit = /obj/item/clothing/suit/frontiersmen head = /obj/item/clothing/head/frontier belt = /obj/item/storage/belt/medical/webbing/frontiersmen diff --git a/code/modules/clothing/outfits/factions/independent.dm b/code/modules/clothing/outfits/factions/independent.dm index e9b783de9780..2b93739fb0f9 100644 --- a/code/modules/clothing/outfits/factions/independent.dm +++ b/code/modules/clothing/outfits/factions/independent.dm @@ -53,7 +53,7 @@ uniform = /obj/item/clothing/under/utility head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/kitchen/knife/combat/survival + l_pocket = /obj/item/melee/knife/survival gloves = /obj/item/clothing/gloves/combat implants = list(/obj/item/implant/radio) @@ -145,7 +145,7 @@ suit = /obj/item/clothing/suit/armor/vest/marine/medium head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/kitchen/knife/combat + l_pocket = /obj/item/melee/knife/combat implants = list(/obj/item/implant/radio) accessory = null @@ -298,7 +298,7 @@ uniform = /obj/item/clothing/under/utility head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/kitchen/knife/combat + l_pocket = /obj/item/melee/knife/combat backpack_contents = list(/obj/item/melee/baton/loaded=1) @@ -349,7 +349,7 @@ uniform = /obj/item/clothing/under/utility head = /obj/item/clothing/head/soft/black shoes = /obj/item/clothing/shoes/combat - l_pocket = /obj/item/kitchen/knife/combat/survival + l_pocket = /obj/item/melee/knife/survival gloves = /obj/item/clothing/gloves/color/red/insulated implants = list(/obj/item/implant/radio) @@ -572,7 +572,7 @@ l_pocket = /obj/item/storage/bag/ore backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/melee/knife/survival=1,\ /obj/item/stack/marker_beacon/ten=1,\ /obj/item/radio/weather_monitor=1) diff --git a/code/modules/clothing/outfits/factions/nanotrasen.dm b/code/modules/clothing/outfits/factions/nanotrasen.dm index b22c69b38f6b..e292a6e61d03 100644 --- a/code/modules/clothing/outfits/factions/nanotrasen.dm +++ b/code/modules/clothing/outfits/factions/nanotrasen.dm @@ -316,7 +316,7 @@ backpack_contents = list( /obj/item/flashlight/seclite=1, - /obj/item/kitchen/knife/combat/survival=1, + /obj/item/melee/knife/survival=1, /obj/item/stack/marker_beacon/ten=1, /obj/item/radio/weather_monitor=1, ) @@ -569,7 +569,7 @@ backpack = /obj/item/storage/backpack/ert/security belt = /obj/item/storage/belt/military id = /obj/item/card/id/ert/security - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) /datum/outfit/job/nanotrasen/security/ert/engi @@ -580,7 +580,7 @@ backpack = /obj/item/storage/backpack/ert/engineer belt = /obj/item/storage/belt/utility/full/ert id = /obj/item/card/id/ert/security - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) accessory = /obj/item/clothing/accessory/armband/engine glasses = /obj/item/clothing/glasses/hud/diagnostic/sunglasses @@ -593,7 +593,7 @@ backpack = /obj/item/storage/backpack/ert/medical belt = /obj/item/storage/belt/medical/webbing/paramedic id = /obj/item/card/id/ert/security - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) accessory = /obj/item/clothing/accessory/armband/med glasses = /obj/item/clothing/glasses/hud/health/night diff --git a/code/modules/clothing/outfits/factions/solgov.dm b/code/modules/clothing/outfits/factions/solgov.dm index 3b14fc89dafa..c4aed59c7e21 100644 --- a/code/modules/clothing/outfits/factions/solgov.dm +++ b/code/modules/clothing/outfits/factions/solgov.dm @@ -101,7 +101,7 @@ implants = list(/obj/item/implant/mindshield) backpack_contents = list( - /obj/item/kitchen/knife/letter_opener = 1 + /obj/item/melee/knife/letter_opener = 1 ) /datum/outfit/job/solgov/overseer @@ -159,7 +159,7 @@ r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/melee/knife/survival=1,\ /obj/item/stack/marker_beacon/ten=1) backpack = /obj/item/storage/backpack/explorer diff --git a/code/modules/clothing/outfits/factions/syndicate.dm b/code/modules/clothing/outfits/factions/syndicate.dm index 269b476ccd91..1d91a94b766d 100644 --- a/code/modules/clothing/outfits/factions/syndicate.dm +++ b/code/modules/clothing/outfits/factions/syndicate.dm @@ -516,7 +516,7 @@ head = /obj/item/clothing/head/HoS/beret/syndicate gloves = /obj/item/clothing/gloves/color/white id = /obj/item/card/id/syndicate_command/crew_id - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival glasses = /obj/item/clothing/glasses/hud/health backpack_contents = list(/obj/item/storage/box/ids=1,\ /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) @@ -532,7 +532,7 @@ head = /obj/item/clothing/head/HoS/cybersun gloves = /obj/item/clothing/gloves/combat id = /obj/item/card/id/syndicate_command/crew_id - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival glasses = /obj/item/clothing/glasses/sunglasses /datum/outfit/job/syndicate/head_of_personnel/suns @@ -634,7 +634,7 @@ uniform = /obj/item/clothing/under/syndicate/suns/pkuniform suit = /obj/item/clothing/suit/armor/vest/suns/hos - belt = /obj/item/melee/sabre/suns/telescopic + belt = /obj/item/melee/sword/sabre/suns/telescopic gloves = /obj/item/clothing/gloves/tackler/dolphin/suns shoes = /obj/item/clothing/shoes/combat/suns head = /obj/item/clothing/head/welding/suns/hos @@ -711,7 +711,7 @@ head = /obj/item/clothing/head/hardliners suit = /obj/item/clothing/suit/hardliners glasses = /obj/item/clothing/glasses/hud/health - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival back = /obj/item/storage/backpack/duffelbag/syndie/med id = /obj/item/card/id/syndicate_command/crew_id backpack_contents = list(/obj/item/storage/box/survival/syndie=1, /obj/item/storage/firstaid/medical,) @@ -723,7 +723,7 @@ head = /obj/item/clothing/head/ngr/surgical suit = /obj/item/clothing/suit/ngr/smock glasses = /obj/item/clothing/glasses/hud/health - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival back = /obj/item/storage/backpack/duffelbag/syndie/med id = /obj/item/card/id/syndicate_command/crew_id backpack_contents = list(/obj/item/storage/box/survival/syndie=1, /obj/item/storage/firstaid/medical,) @@ -897,7 +897,7 @@ job_icon = "securityofficer" uniform = /obj/item/clothing/under/syndicate - r_pocket = /obj/item/kitchen/knife/combat/survival + r_pocket = /obj/item/melee/knife/survival belt = /obj/item/storage/belt/military back = /obj/item/storage/backpack suit = /obj/item/clothing/suit/armor/vest @@ -994,7 +994,7 @@ uniform = /obj/item/clothing/under/syndicate/suns/pkuniform suit = /obj/item/clothing/suit/armor/vest/suns alt_suit = /obj/item/clothing/suit/toggle/suns/pkcoat - belt = /obj/item/melee/sabre/suns/telescopic + belt = /obj/item/melee/sword/sabre/suns/telescopic gloves = /obj/item/clothing/gloves/tackler/dolphin/suns shoes = /obj/item/clothing/shoes/jackboots/suns/long head = /obj/item/clothing/head/welding/suns @@ -1020,7 +1020,7 @@ r_pocket = /obj/item/storage/bag/ore backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/melee/knife/survival=1,\ /obj/item/mining_voucher=1,\ /obj/item/stack/marker_beacon/ten=1) diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 100cc7ff0f52..1754e84c7e8e 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -102,7 +102,6 @@ uniform = /obj/item/clothing/under/color/black/ghost suit = /obj/item/clothing/suit/hooded/cultrobes/alt/ghost shoes = /obj/item/clothing/shoes/cult/alt/ghost - r_hand = /obj/item/melee/cultblade/ghost /datum/outfit/wizard name = "Blue Wizard" diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 67dc7ce529b3..6e825e48ea4b 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -36,7 +36,7 @@ Contains: desc = "A prototype designed to replace the ageing MK.II SWAT suit. Based on the streamlined MK.II model, the traditional ceramic and graphene plate construction was replaced with plasteel, allowing superior armor against most threats. There's room for some kind of energy projection device on the back." icon_state = "deathsquad" item_state = "swat_suit" - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat) armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 60, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -50,7 +50,7 @@ Contains: desc = "A tactical space suit first developed in a joint effort by the defunct IS-ERI and Nanotrasen in 20XX for military space operations. A tried and true workhorse, it is very difficult to move in but offers robust protection against all threats!" icon_state = "heavy" item_state = "swat_suit" - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat) armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 40, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100) strip_delay = 120 resistance_flags = FIRE_PROOF | ACID_PROOF @@ -363,7 +363,7 @@ Contains: armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 10, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kinetic_crusher, /obj/item/resonator, /obj/item/melee/transforming/cleaving_saw) /obj/item/clothing/suit/space/hardsuit/berserker/RemoveHelmet() var/obj/item/clothing/head/helmet/space/hardsuit/berserker/helm = helmet @@ -489,7 +489,7 @@ Contains: desc = "A custom version of the MK.II SWAT suit, modified to look rugged and tough. Works as a space suit, if you can find a helmet." icon_state = "hunter" item_state = "swat_suit" - allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat) + allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat) armor = list("melee" = 60, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 130 resistance_flags = FIRE_PROOF | ACID_PROOF diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index a16680353b6f..b9eb2b6d7c53 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -277,7 +277,7 @@ desc = "A classic suit of plate armour, highly effective at stopping melee attacks." icon_state = "riot_knight_green" item_state = "riot_knight_green" - allowed = list(/obj/item/nullrod, /obj/item/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/melee/sword/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/plasmaman) /obj/item/clothing/suit/armor/riot/knight/yellow icon_state = "riot_knight_yellow" @@ -400,13 +400,6 @@ icon_state = "armor_syndie" item_state = "syndiearmor" -/obj/item/clothing/suit/armor/vest/scrap_armor - name = "scrap armor" - desc = "An 'armor' vest consisting of sheet metal held together with cable. Who thought this was a good idea?" - icon_state = "scraparmor" - item_state = "scraparmor" - armor = list("melee" = 5) - /obj/item/clothing/suit/armor/curator name = "treasure hunter's coat" desc = "Both fashionable and lightly armoured, this jacket is favoured by treasure hunters the galaxy over." diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 3ef1628c19b4..c62d0e92b8c0 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -98,4 +98,4 @@ /obj/item/clothing/suit/bio_suit/plaguedoctorsuit/Initialize() . = ..() - allowed += list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/cane) + allowed += list(/obj/item/storage/book/bible, /obj/item/cane) diff --git a/code/modules/clothing/suits/chaplainsuits.dm b/code/modules/clothing/suits/chaplainsuits.dm index 58802e01b8a1..073966a5fc15 100644 --- a/code/modules/clothing/suits/chaplainsuits.dm +++ b/code/modules/clothing/suits/chaplainsuits.dm @@ -1,10 +1,10 @@ //Chaplain Suit Subtypes //If any new staple chaplain items get added, put them in these lists /obj/item/clothing/suit/chaplainsuit - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/storage/book/bible, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) /obj/item/clothing/suit/hooded/chaplainsuit - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list(/obj/item/storage/book/bible, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) //Suits /obj/item/clothing/suit/chaplainsuit/holidaypriest diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 4e3f6d5e3a9c..763be0e2f468 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -76,7 +76,7 @@ name = "goliath cloak" icon_state = "goliath_cloak" desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat/bone, /obj/item/kitchen/knife/combat/survival) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/melee/spear, /obj/item/organ/regenerative_core/legion, /obj/item/melee/knife/bone, /obj/item/melee/knife/survival) armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 35, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath body_parts_covered = CHEST|GROIN|ARMS @@ -94,7 +94,7 @@ name = "drake armour" icon_state = "dragon" desc = "A suit of armour fashioned from the remains of an ash drake." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/melee/spear) armor = list("melee" = 50, "bullet" = 10, "laser" = 40, "energy" = 50, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100) hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 312f14dec507..3b1735208dda 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -278,7 +278,7 @@ hoodtype = /obj/item/clothing/head/hooded/enginseer body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDEGLOVES - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun, /obj/item/melee, /obj/item/nullrod, /obj/item/radio, /obj/item/storage/book) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun, /obj/item/melee, /obj/item/radio, /obj/item/storage/book) /obj/item/clothing/head/hooded/enginseer name = "enginseer's hood" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index f8e8c3f69909..6e8b87b06285 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -132,7 +132,7 @@ item_state = "imperium_monk" body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDESHOES|HIDEJUMPSUIT - allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) + allowed = list(/obj/item/storage/book/bible, /obj/item/melee/sword, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) /obj/item/clothing/suit/chickensuit diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index f7710d52a12d..d1ee50d1a629 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -393,7 +393,6 @@ desc = "A legion skull fitted to a codpiece, intended to protect the important things in life." icon_state = "skull" above_suit = TRUE - armor = list("melee" = 10, "bullet" = 10, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 40, "acid" = 40) attachment_slot = GROIN /obj/item/clothing/accessory/skilt @@ -402,7 +401,6 @@ icon_state = "skilt" above_suit = TRUE minimize_when_attached = FALSE - armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25) attachment_slot = GROIN /obj/item/clothing/accessory/holster diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm deleted file mode 100644 index e99b0d754910..000000000000 --- a/code/modules/events/wizard/curseditems.dm +++ /dev/null @@ -1,60 +0,0 @@ -/datum/round_event_control/wizard/cursed_items //fashion disasters - name = "Cursed Items" - weight = 3 - typepath = /datum/round_event/wizard/cursed_items - max_occurrences = 3 - earliest_start = 0 MINUTES - -//Note about adding items to this: Because of how NODROP_1 works if an item spawned to the hands can also be equiped to a slot -//it will be able to be put into that slot from the hand, but then get stuck there. To avoid this make a new subtype of any -//item you want to equip to the hand, and set its slots_flags = null. Only items equiped to hands need do this. - -/datum/round_event/wizard/cursed_items/start() - var/item_set = pick("wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators", "catgirls2015") - var/list/loadout[SLOTS_AMT] - var/ruins_spaceworthiness - var/ruins_wizard_loadout - - switch(item_set) - if("wizardmimic") - loadout[ITEM_SLOT_OCLOTHING] = /obj/item/clothing/suit/wizrobe - loadout[ITEM_SLOT_FEET] = /obj/item/clothing/shoes/sandal/magic - loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/wizard - ruins_spaceworthiness = 1 - if("swords") - loadout[ITEM_SLOT_HANDS] = /obj/item/katana/cursed - if("bigfatdoobie") - loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/cigarette/rollie/trippy - ruins_spaceworthiness = 1 - if("boxing") - loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/luchador - loadout[ITEM_SLOT_GLOVES] = /obj/item/clothing/gloves/boxing - ruins_spaceworthiness = 1 - if("voicemodulators") - loadout[ITEM_SLOT_MASK] = /obj/item/clothing/mask/chameleon - if("catgirls2015") - loadout[ITEM_SLOT_HEAD] = /obj/item/clothing/head/kitty - ruins_spaceworthiness = 1 - ruins_wizard_loadout = 1 - - for(var/mob/living/carbon/human/H as anything in GLOB.human_list) - if(ruins_spaceworthiness && isspaceturf(H.loc) || isplasmaman(H)) - continue //#savetheminers - if(ruins_wizard_loadout && iswizard(H)) - continue - if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry - H.gender = FEMALE - for(var/i in 1 to loadout.len) - if(loadout[i]) - var/obj/item/J = loadout[i] - var/obj/item/I = new J //dumb but required because of byond throwing a fit anytime new gets too close to a list - H.dropItemToGround(H.get_item_by_slot(i), TRUE) - H.equip_to_slot_or_del(I, i) - ADD_TRAIT(I, TRAIT_NODROP, CURSED_ITEM_TRAIT) - I.item_flags |= DROPDEL - I.name = "cursed " + I.name - - for(var/mob/living/carbon/human/H as anything in GLOB.human_list) - var/datum/effect_system/smoke_spread/smoke = new - smoke.set_up(0, H.loc) - smoke.start() diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 4774ea852424..69c15b1e3494 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -1023,11 +1023,11 @@ GLOBAL_LIST_INIT(hallucination_list, list( if(prob(25)) target.halitem.icon_state = "plasticx40" if(3) //sword - target.halitem.icon = 'icons/obj/transforming_energy.dmi' + target.halitem.icon = 'icons/obj/weapon/energy.dmi' target.halitem.icon_state = "sword0" target.halitem.name = "Energy Sword" if(4) //stun baton - target.halitem.icon = 'icons/obj/items_and_weapons.dmi' + target.halitem.icon = 'icons/obj/items.dmi' target.halitem.icon_state = "stunbaton" target.halitem.name = "Stun Baton" if(5) //emag diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 785607cdef67..49de009448f2 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -602,7 +602,7 @@ desc = "Legend says something amazing happens when you collect enough of these." custom_price = 100 custom_premium_price = 110 - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "sandstar" w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/gold = 200) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index b1191fda7ada..1eb1d255c340 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -265,7 +265,7 @@ /datum/reagent/consumable/milk = 1, /datum/reagent/consumable/cherryjelly = 5, /obj/item/stock_parts/cell/super =1, - /obj/item/melee/sabre = 1 + /obj/item/melee/sword/sabre = 1 ) result = /obj/item/reagent_containers/food/snacks/powercrepe subcategory = CAT_MISCFOOD diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index d56fd4f9c32c..c0d985e89d79 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -13,7 +13,7 @@ /obj/item/holo/esword name = "holographic energy sword" desc = "May the force be with you. Sorta." - icon = 'icons/obj/transforming_energy.dmi' + icon = 'icons/obj/weapon/energy.dmi' icon_state = "sword" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' @@ -69,7 +69,7 @@ /obj/item/toy/beach_ball/holoball name = "basketball" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "basketball" item_state = "basketball" desc = "Here's your chance, do your dance at the Space Jam." diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index f9633ade7661..3fa14561b8d1 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -45,7 +45,7 @@ seed = /obj/item/seeds/nettle name = "nettle" desc = "It's probably not wise to touch it with bare hands..." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "nettle" lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi' diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index 97773e39f277..d3f847d7e292 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -28,7 +28,7 @@ /obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) if(I.get_sharpness()) to_chat(user, "You sharpen the carrot into a shiv with [I].") - var/obj/item/kitchen/knife/shiv/carrot/Shiv = new /obj/item/kitchen/knife/shiv/carrot + var/obj/item/melee/knife/shiv/carrot/Shiv = new /obj/item/melee/knife/shiv/carrot remove_item_from_storage(user) qdel(src) user.put_in_hands(Shiv) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 74d004849a2a..56ad2264ce01 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -59,7 +59,7 @@ /obj/item/cultivator name = "cultivator" desc = "It's used for removing weeds or scratching your back." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "cultivator" item_state = "cultivator" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' @@ -106,7 +106,7 @@ /obj/item/hatchet name = "hatchet" desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/weapon/axe.dmi' icon_state = "hatchet" item_state = "hatchet" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index ab4ceb6968c0..5efe0a0a00d2 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -15,20 +15,6 @@ var/obj/item/storage/book/bible/booze/B = new - if(GLOB.religion) - B.deity_name = GLOB.deity - B.name = GLOB.bible_name - B.icon_state = GLOB.bible_icon_state - B.item_state = GLOB.bible_item_state - to_chat(H, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") - H.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK) - var/nrt = GLOB.holy_weapon_type || /obj/item/nullrod - var/obj/item/nullrod/N = new nrt(H) - H.put_in_hands(N) - if(GLOB.religious_sect) - GLOB.religious_sect.on_conversion(H) - return - var/new_religion = DEFAULT_RELIGION if(M.client && M.client.prefs.custom_names["religion"]) new_religion = M.client.prefs.custom_names["religion"] diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 1469e592b4de..341116d30c8c 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -26,7 +26,7 @@ r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack backpack_contents = list( /obj/item/flashlight/seclite=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/melee/knife/survival=1,\ /obj/item/stack/marker_beacon/ten=1,\ /obj/item/radio/weather_monitor=1) diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 55d33ee80d20..9c6e90469fcc 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -319,7 +319,7 @@ scanner.computer.inventory.Add(src) to_chat(user, "[I]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'") - else if(istype(I, /obj/item/kitchen/knife) || I.tool_behaviour == TOOL_WIRECUTTER) + else if(istype(I, /obj/item/melee/knife) || I.tool_behaviour == TOOL_WIRECUTTER) to_chat(user, "You begin to carve out [title]...") if(do_after(user, 30, target = src)) to_chat(user, "You carve out the pages from [title]! You didn't want to read it anyway.") diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 71de02b3ca1c..38b3728651ce 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -358,7 +358,6 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums return null /obj/machinery/computer/bookmanagement/proc/print_forbidden_lore(mob/user) - new /obj/item/melee/cultblade/dagger(get_turf(src)) to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a sinister dagger sitting on the desk. You don't even remember where it came from...") user.visible_message("[user] stares at the blank screen for a few moments, [user.p_their()] expression frozen in fear. When [user.p_they()] finally awaken[user.p_s()] from it, [user.p_they()] look[user.p_s()] a lot older.", 2) diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 2040764eefb9..251cf46e7c5f 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -280,7 +280,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) //cake + knife to cut it! if(length(table)) var/turf/food_turf = get_turf(pick(table)) - new /obj/item/kitchen/knife(food_turf) + new /obj/item/melee/knife/kitchen(food_turf) var/obj/item/food/cake/birthday/iancake = new(food_turf) iancake.desc = "Happy birthday, Ian!" diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 21bfb509e6fb..ea43fe78f176 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -136,7 +136,7 @@ for(var/i in 1 to 3) new /obj/item/clothing/mask/cigarette/rollie(src) if(6 to 10) - new /obj/item/melee/skateboard/pro(src) + new /obj/item/skateboard/pro(src) if(11 to 15) new /mob/living/simple_animal/bot/honkbot(src) if(16 to 20) @@ -211,7 +211,7 @@ for(var/i in 1 to 30) new /mob/living/simple_animal/hostile/cockroach(src) if(92) - new /obj/item/katana(src) + new /obj/item/melee/sword/katana(src) if(93) new /obj/item/dnainjector/xraymut(src) if(94) @@ -220,7 +220,6 @@ if(95) new /obj/item/toy/plush/nukeplushie(src) if(96) - new /obj/item/banhammer(src) for(var/i in 1 to 3) new /obj/item/mine/pressure/sound(src) if(97) @@ -237,5 +236,5 @@ if(99) new /obj/item/implanter/sad_trombone(src) if(100) - new /obj/item/melee/skateboard/hoverboard(src) + new /obj/item/skateboard/hoverboard(src) spawned_loot = TRUE diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 3b390da34251..b5e112713a82 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -190,3 +190,37 @@ /obj/item/clothing/head/hooded/survivor_hood/Initialize() . = ..() AddComponent(/datum/component/armor_plate) + +/obj/item/clothing/suit/hooded/scrap + name = "scrap suit" + desc = "A ragged makeshift suit." + lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' + righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' + icon_state = "survivor" + item_state = "survivor_suit" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + min_cold_protection_temperature = (FIRE_SUIT_MIN_TEMP_PROTECT * 2) + cold_protection = CHEST|GROIN|LEGS|ARMS + max_heat_protection_temperature = (FIRE_SUIT_MAX_TEMP_PROTECT / 2) + heat_protection = CHEST|GROIN|LEGS|ARMS + hoodtype = /obj/item/clothing/head/hooded/scrap + armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals) + resistance_flags = FIRE_PROOF + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION + +/obj/item/clothing/head/hooded/scrap + name = "scrap hood" + desc = "A loose-fitting hood. It gets the job done." + icon_state = "explorerold" + suit = /obj/item/clothing/suit/hooded/scrap + body_parts_covered = HEAD + flags_inv = HIDEHAIR|HIDEEARS + armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30) + +/obj/item/clothing/suit/armor/vest/scrap + name = "scrap armor" + desc = "An 'armor' vest consisting of sheet metal held together with cable. Who thought this was a good idea?" + icon_state = "scraparmor" + item_state = "scraparmor" + armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 20, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 30) diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 2a38ae896e76..15f7cb2e3a69 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -308,17 +308,16 @@ var/possible = list(/obj/item/ship_in_a_bottle, /obj/item/gun/energy/pulse, /obj/item/book/granter/martial/carp, - /obj/item/melee/supermatter_sword, + /obj/item/melee/sword/supermatter, /obj/item/shield/changeling, /obj/item/lava_staff, - /obj/item/energy_katana, + /obj/item/melee/sword/energy_katana, /obj/item/hierophant_club, /obj/item/gun/energy/minigun, /obj/item/gun/ballistic/automatic/assault/hydra/lmg/extended, /obj/item/stack/telecrystal/twenty, /obj/item/nuke_core, - /obj/item/phylactery, - /obj/item/banhammer) + /obj/item/phylactery) /obj/item/fakeartefact/Initialize() . = ..() diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index f9563cc078eb..bf6fb15c9332 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -419,7 +419,7 @@ /obj/item/seeds/lavaland/puce/attackby(obj/item/item, mob/user, params) . = ..() //anyone intending to add more garnishes using this method should componentize this - if(!istype(item, /obj/item/kitchen/knife)) + if(!istype(item, /obj/item/melee/knife)) return playsound(src, 'sound/effects/glassbr1.ogg', 50, TRUE, -1) to_chat(user, "You start breaking [src] up into shards...") diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 2af5515e47a7..afae0dd0a6c0 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -21,8 +21,6 @@ new /obj/item/clothing/suit/space/hardsuit/cult(src) if(3) new /obj/item/necromantic_stone/lava(src) - if(4) - new /obj/item/katana/cursed(src) if(5) new /obj/item/clothing/glasses/godeye(src) if(6) @@ -47,7 +45,7 @@ new /obj/item/borg/upgrade/modkit/lifesteal(src) new /obj/item/bedsheet/cult(src) if(14) - new /obj/item/nullrod/scythe/talking/necro(src) + new /obj/item/scythe(src) if(15) new /obj/item/book_of_babel(src) if(16) @@ -80,8 +78,6 @@ new /obj/item/gun/energy/spur(src) if(28) new /obj/item/clothing/suit/armor/ascetic(src) - if(29) - new /obj/item/kitchen/knife/envy(src) /obj/structure/closet/crate/necropolis/tendril/greater desc = "It's watching you wearily. It seems terribly bloated." @@ -96,8 +92,6 @@ new /obj/item/clothing/suit/space/hardsuit/cult(src) if(3) new /obj/item/necromantic_stone/lava(src) - if(4) - new /obj/item/katana/cursed(src) if(5) new /obj/item/clothing/glasses/godeye(src) if(6) @@ -122,7 +116,7 @@ new /obj/item/borg/upgrade/modkit/lifesteal(src) new /obj/item/bedsheet/cult(src) if(14) - new /obj/item/nullrod/scythe/talking/necro(src) + new /obj/item/scythe(src) if(15) new /obj/item/book_of_babel(src) if(16) @@ -155,8 +149,6 @@ new /obj/item/gun/energy/spur(src) if(28) new /obj/item/clothing/suit/armor/ascetic(src) - if(29) - new /obj/item/kitchen/knife/envy(src) //KA modkit design discs /obj/item/disk/design_disk/modkit_disc @@ -738,8 +730,8 @@ H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) - H.put_in_hands(new /obj/item/claymore(H), TRUE) - H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK) + H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) + H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK) //ice cube /obj/item/freeze_cube @@ -1204,7 +1196,7 @@ var/loot = rand(1,4) switch(loot) if(1) - new /obj/item/melee/ghost_sword(src) + new /obj/item/melee/sword/claymore(src) if(2) new /obj/item/lava_staff(src) if(3) @@ -1212,91 +1204,6 @@ if(4) new /obj/item/dragons_blood(src) -/obj/item/melee/ghost_sword - name = "\improper spectral blade" - desc = "A rusted and dulled blade. It doesn't look like it'd do much damage. It glows weakly." - icon_state = "spectral" - item_state = "spectral" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 - sharpness = IS_SHARP - w_class = WEIGHT_CLASS_BULKY - force = 1 - throwforce = 1 - hitsound = 'sound/effects/ghost2.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended") - var/summon_cooldown = 0 - var/list/mob/dead/observer/spirits - -/obj/item/melee/ghost_sword/Initialize() - . = ..() - spirits = list() - START_PROCESSING(SSobj, src) - GLOB.poi_list |= src - AddComponent(/datum/component/butchering, 150, 90) - -/obj/item/melee/ghost_sword/Destroy() - for(var/mob/dead/observer/G in spirits) - G.invisibility = GLOB.observer_default_invisibility - spirits.Cut() - STOP_PROCESSING(SSobj, src) - GLOB.poi_list -= src - . = ..() - -/obj/item/melee/ghost_sword/attack_self(mob/user) - if(summon_cooldown > world.time) - to_chat(user, "You just recently called out for aid. You don't want to annoy the spirits!") - return - to_chat(user, "You call out for aid, attempting to summon spirits to your side.") - - notify_ghosts("[user] is raising [user.p_their()] [src], calling for your help!", - enter_link="(Click to help)", - source = user, action=NOTIFY_ORBIT, ignore_key = POLL_IGNORE_SPECTRAL_BLADE, header = "Spectral blade") - - summon_cooldown = world.time + 300 - -/obj/item/melee/ghost_sword/process() - ghost_check() - -/obj/item/melee/ghost_sword/proc/ghost_check() - var/ghost_counter = 0 - var/turf/T = get_turf(src) - var/list/contents = T.GetAllContents() - var/mob/dead/observer/current_spirits = list() - for(var/thing in contents) - var/atom/A = thing - A.transfer_observers_to(src) - - for(var/i in orbiters?.orbiters) - if(!isobserver(i)) - continue - var/mob/dead/observer/G = i - ghost_counter++ - G.invisibility = 0 - current_spirits |= G - - for(var/mob/dead/observer/G in spirits - current_spirits) - G.invisibility = GLOB.observer_default_invisibility - - spirits = current_spirits - - return ghost_counter - -/obj/item/melee/ghost_sword/attack(mob/living/target, mob/living/carbon/human/user) - force = 0 - var/ghost_counter = ghost_check() - - force = clamp((ghost_counter * 4), 0, 75) - user.visible_message("[user] strikes with the force of [ghost_counter] vengeful spirits!") - ..() - -/obj/item/melee/ghost_sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - var/ghost_counter = ghost_check() - final_block_chance += clamp((ghost_counter * 5), 0, 75) - owner.visible_message("[owner] is protected by a ring of [ghost_counter] ghosts!") - return ..() - //Blood /obj/item/dragons_blood diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 15cde601689e..4b2774c3894a 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -121,6 +121,6 @@ new /obj/item/clothing/suit/hooded/explorer(src) new /obj/item/clothing/mask/gas/explorer(src) new /obj/item/gun/energy/kinetic_accelerator(src) - new /obj/item/kitchen/knife/combat/survival(src) + new /obj/item/melee/knife/survival(src) new /obj/item/flashlight/seclite(src) new /obj/item/clothing/gloves/explorer(src) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 01610cd13644..665e75da9cef 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -170,7 +170,7 @@ to_chat(user, "Please close the access panel before locking it.") else to_chat(user, "\The [src] doesn't seem to respect your authority.") - else if(istype(W, /obj/item/kitchen/knife) && user.a_intent != INTENT_HARM) + else if(istype(W, /obj/item/melee/knife) && user.a_intent != INTENT_HARM) to_chat(user, "You start attaching \the [W] to \the [src]...") if(do_after(user, 25, target = src)) deputize(W, user) diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index d43d744e2800..b6f5c58b424e 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -115,7 +115,7 @@ name = "pile of bear armor" desc = "A scattered pile of various shaped armor pieces fitted for a bear, some duct tape, and a nail filer. Crude instructions \ are written on the back of one of the plates. This seems like an awful idea." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "bear_armor_upgrade" /obj/item/bear_armor/afterattack(atom/target, mob/user, proximity_flag) diff --git a/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm b/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm index ba5f75ffb249..d8b4af5344ea 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/frontiersman.dm @@ -9,7 +9,7 @@ melee_damage_lower = 15 melee_damage_upper = 15 loot = list(/obj/effect/mob_spawn/human/corpse/frontier, - /obj/item/kitchen/knife/combat/survival) + /obj/item/melee/knife/survival) atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) faction = list(FACTION_ANTAG_FRONTIERSMEN) footstep_type = FOOTSTEP_MOB_SHOE diff --git a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm index b251dda91e48..147c2081f622 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm @@ -49,7 +49,7 @@ loot = list(/obj/effect/decal/remains/human, /obj/item/clothing/suit/armor/witchhunter, /obj/item/clothing/head/witchunter, - /obj/item/claymore/weak{name = "holy sword"}) + /obj/item/melee/sword/claymore{name = "holy sword"}) /mob/living/simple_animal/hostile/human/skeleton/ice name = "ice skeleton" diff --git a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm index 52863c1a5c64..ed356764271f 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm @@ -116,7 +116,7 @@ /obj/item/stack/marker_beacon/ten = 15, /obj/item/mining_scanner = 5, /obj/item/extinguisher/mini = 10, - /obj/item/kitchen/knife/combat = 5, + /obj/item/melee/knife/combat = 5, /obj/item/flashlight/seclite = 10, /obj/item/stack/sheet/sinew = 10, /obj/item/stack/sheet/bone = 5, @@ -132,7 +132,7 @@ /obj/item/stack/marker_beacon/ten = 10, /obj/item/mining_scanner = 20, /obj/item/extinguisher/mini = 10, - /obj/item/kitchen/knife/combat/survival = 10, + /obj/item/melee/knife/survival = 10, /obj/item/flashlight/seclite = 10, /obj/item/stack/sheet/sinew = 10, /obj/item/stack/sheet/bone = 10 @@ -144,11 +144,11 @@ /obj/item/stack/marker_beacon/ten = 5, /obj/item/mining_scanner = 5, /obj/item/extinguisher/mini = 10, - /obj/item/kitchen/knife/combat/survival = 12, + /obj/item/melee/knife/survival = 12, /obj/item/flashlight/seclite = 10, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 5, - /obj/item/kitchen/knife/combat = 3, + /obj/item/melee/knife/combat = 3, /obj/item/reagent_containers/food/snacks/rationpack = 30 ) ) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm index a762a9298279..d3a50564ca75 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm @@ -58,7 +58,7 @@ speed = 5 move_to_delay = 5 speak_emote = list("verbalizes") - mob_trophy = /obj/item/nullrod/armblade/tentacle + mob_trophy = /obj/item/melee/synthetic_arm_blade loot = list(/obj/effect/spawner/clawloot) health = 2250 maxHealth = 2250 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm index 08ef1a7b21cb..c06c78068ce9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm @@ -23,8 +23,8 @@ ranged_cooldown_time = 20 vision_range = 10 damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 0.5, CLONE = 0.5, STAMINA = 0, OXY = 0.5) - loot = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted) - mob_trophy = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll) + loot = list(/obj/item/melee/sword/claymore, /obj/item/clothing/suit/space/hardsuit/cult/enchanted) + mob_trophy = list(/obj/item/melee/sword/claymore, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll) wander = FALSE del_on_death = TRUE blood_volume = BLOOD_VOLUME_NORMAL @@ -40,7 +40,7 @@ /datum/action/innate/megafauna_attack/rapid_fire) move_force = MOVE_FORCE_NORMAL var/turf/starting - var/obj/item/claymore/cursed/mob/weapon + var/obj/item/melee/sword/claymore/weapon var/charging = FALSE var/dash_cooldown = 6 SECONDS var/runic_blast_cooldown = 14 SECONDS @@ -50,23 +50,6 @@ var/dash_num = 3 var/newcolor = rgb(149, 10, 10) -/obj/item/claymore/cursed - name = "cursed longsword" - desc = "For those who overcame a great challenge. It glows with a dim red light." - icon_state = "cultblade" - item_state = "cultblade" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - w_class = WEIGHT_CLASS_BULKY - throwforce = 25 - block_chance = 65 - armour_penetration = 50 - sharpness = IS_SHARP - -/obj/item/claymore/cursed/mob - block_chance = 0 - force = 16 - /mob/living/simple_animal/hostile/megafauna/cult_templar/Initialize() . = ..() starting = get_turf(src) @@ -421,7 +404,7 @@ /obj/item/clothing/suit/space/hardsuit/cult/enchanted name = "\improper Cursed Nar'Sien hardened armor" desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. This one is cursed, screaming voices into the mind of the wearer." - allowed = list(/obj/item/gun, /obj/item/nullrod, /obj/item/tank/internals) + allowed = list(/obj/item/gun, /obj/item/tank/internals) armor = list("melee" = 75, "bullet" = 50, "laser" = 30, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 80, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm index f0c70edc3037..1a347db1646b 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm @@ -230,7 +230,7 @@ /obj/item/stack/marker_beacon/ten = 2, /obj/item/mining_scanner = 2, /obj/item/extinguisher/mini = 2, - /obj/item/kitchen/knife/combat/survival = 3, + /obj/item/melee/knife/survival = 3, /obj/item/flashlight/seclite = 3, /obj/item/stack/sheet/sinew = 3, /obj/item/stack/sheet/bone = 3 @@ -275,7 +275,7 @@ if(prob(75)) back = pick(/obj/item/storage/backpack/industrial, /obj/item/storage/backpack/satchel/eng, /obj/item/storage/backpack/duffelbag/engineering, /obj/item/storage/backpack/messenger/engi) if(prob(10)) - back = /obj/item/fireaxe + back = /obj/item/melee/axe/fire for(var/i = 1 to 3) if(prob(75)) backpack_contents += pickweight(list( @@ -424,7 +424,7 @@ if(prob(75)) accessory = /obj/item/clothing/accessory/armband/cargo if(prob(25)) - suit = /obj/item/clothing/suit/armor/vest/scrap_armor + suit = /obj/item/clothing/suit/armor/vest/scrap suit_store = /obj/item/gun/ballistic/rifle/illestren /datum/outfit/generic/cargo diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm index 69da2287eb72..767a229d98f5 100644 --- a/code/modules/mod/modules/modules_ninja.dm +++ b/code/modules/mod/modules/modules_ninja.dm @@ -170,7 +170,7 @@ /// The item linked to the module that will get recalled. var/obj/item/linked_weapon /// The accepted typepath we can link to. - var/accepted_type = /obj/item/energy_katana + var/accepted_type = /obj/item/melee/sword/energy_katana /obj/item/mod/module/weapon_recall/on_suit_activation() ADD_TRAIT(mod.wearer, TRAIT_NOGUNS, MOD_TRAIT) diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index c00d32d25809..14392e1c0874 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -1,37 +1,30 @@ -/obj/item/energy_katana +/obj/item/melee/sword/energy_katana name = "energy katana" desc = "A katana infused with strong energy." icon_state = "energy_katana" item_state = "energy_katana" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' force = 40 throwforce = 20 block_chance = 50 armour_penetration = 50 - w_class = WEIGHT_CLASS_NORMAL - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT - sharpness = IS_SHARP max_integrity = 200 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/datum/effect_system/spark_spread/spark_system var/datum/action/innate/dash/ninja/jaunt var/dash_toggled = TRUE -/obj/item/energy_katana/Initialize() +/obj/item/melee/sword/energy_katana/Initialize() . = ..() jaunt = new(src) spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) -/obj/item/energy_katana/attack_self(mob/user) +/obj/item/melee/sword/energy_katana/attack_self(mob/user) dash_toggled = !dash_toggled to_chat(user, "You [dash_toggled ? "enable" : "disable"] the dash function on [src].") -/obj/item/energy_katana/afterattack(atom/target, mob/user, proximity_flag, click_parameters) +/obj/item/melee/sword/energy_katana/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() if(dash_toggled) jaunt.Teleport(user, target) @@ -41,13 +34,13 @@ playsound(user, 'sound/weapons/blade1.ogg', 50, TRUE) target.emag_act(user) -/obj/item/energy_katana/pickup(mob/living/user) +/obj/item/melee/sword/energy_katana/pickup(mob/living/user) . = ..() jaunt.Grant(user, src) user.update_icons() playsound(src, 'sound/items/unsheath.ogg', 25, TRUE) -/obj/item/energy_katana/dropped(mob/user) +/obj/item/melee/sword/energy_katana/dropped(mob/user) . = ..() jaunt?.Remove(user) user.update_icons() @@ -55,7 +48,7 @@ //If we hit the Ninja who owns this Katana, they catch it. //Works for if the Ninja throws it or it throws itself or someone tries //To throw it at the ninja -/obj/item/energy_katana/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) +/obj/item/melee/sword/energy_katana/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) if(ishuman(hit_atom)) var/mob/living/carbon/human/H = hit_atom if(istype(H.wear_suit, /obj/item/clothing/suit/space/space_ninja)) @@ -66,7 +59,7 @@ ..() -/obj/item/energy_katana/proc/returnToOwner(mob/living/carbon/human/user, doSpark = 1, caught = 0) +/obj/item/melee/sword/energy_katana/proc/returnToOwner(mob/living/carbon/human/user, doSpark = 1, caught = 0) if(!istype(user)) return forceMove(get_turf(user)) @@ -94,7 +87,7 @@ to_chat(user, "[msg]") -/obj/item/energy_katana/Destroy() +/obj/item/melee/sword/energy_katana/Destroy() QDEL_NULL(spark_system) QDEL_NULL(jaunt) return ..() diff --git a/code/modules/ninja/outfit.dm b/code/modules/ninja/outfit.dm index 2b5976db4d59..1c3c24927bfd 100644 --- a/code/modules/ninja/outfit.dm +++ b/code/modules/ninja/outfit.dm @@ -12,7 +12,7 @@ l_pocket = /obj/item/grenade/c4/x4 r_pocket = /obj/item/tank/internals/emergency_oxygen internals_slot = ITEM_SLOT_RPOCKET - belt = /obj/item/energy_katana + belt = /obj/item/melee/sword/energy_katana implants = list(/obj/item/implant/explosive) diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index cb355014d4e7..4f368b630496 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -26,7 +26,7 @@ Contents: var/datum/effect_system/spark_spread/spark_system var/datum/techweb/stored_research var/obj/item/disk/tech_disk/t_disk//To copy design onto disk. - var/obj/item/energy_katana/energyKatana //For teleporting the katana back to the ninja (It's an ability) + var/obj/item/melee/sword/energy_katana/energyKatana //For teleporting the katana back to the ninja (It's an ability) //Other articles of ninja gear worn together, used to easily reference them after initializing. var/obj/item/clothing/head/helmet/space/space_ninja/n_hood diff --git a/code/modules/photography/_pictures.dm b/code/modules/photography/_pictures.dm index 511d75ac6c3f..6570cd00bb04 100644 --- a/code/modules/photography/_pictures.dm +++ b/code/modules/photography/_pictures.dm @@ -45,7 +45,7 @@ if(!picture_image) return var/icon/small_img = icon(picture_image) - var/icon/ic = icon('icons/obj/items_and_weapons.dmi', iconstate ? iconstate :"photo") + var/icon/ic = icon('icons/obj/items.dmi', iconstate ? iconstate :"photo") small_img.Scale(8, 8) ic.Blend(small_img,ICON_OVERLAY, 13, 13) picture_icon = ic diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index e91a03e421f3..c2096983fb03 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -4,7 +4,6 @@ /obj/item/camera name = "camera" - icon = 'icons/obj/items_and_weapons.dmi' desc = "A polaroid camera." icon_state = "camera" item_state = "camera" diff --git a/code/modules/photography/camera/film.dm b/code/modules/photography/camera/film.dm index b44b93361083..a6001011eb29 100644 --- a/code/modules/photography/camera/film.dm +++ b/code/modules/photography/camera/film.dm @@ -3,7 +3,6 @@ */ /obj/item/camera_film name = "film cartridge" - icon = 'icons/obj/items_and_weapons.dmi' desc = "A camera film cartridge. Insert it into a camera to reload it." icon_state = "film" item_state = "electropack" diff --git a/code/modules/photography/photos/album.dm b/code/modules/photography/photos/album.dm index 2ba5f5499307..19c2c1297f6b 100644 --- a/code/modules/photography/photos/album.dm +++ b/code/modules/photography/photos/album.dm @@ -4,7 +4,7 @@ /obj/item/storage/photo_album name = "photo album" desc = "A big book used to store photos and mementos." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "album" item_state = "album" lefthand_file = 'icons/mob/inhands/misc/books_lefthand.dmi' diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index 7274d477babb..ea3b4ff6a99d 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -3,7 +3,7 @@ */ /obj/item/photo name = "photo" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "photo" item_state = "paper" w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index b6fc6367e85c..6ed294fa8936 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -804,7 +804,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) /obj/machinery/power/supermatter_crystal/attackby(obj/item/W, mob/living/user, params) if(!istype(W) || (W.item_flags & ABSTRACT) || !istype(user)) return - if(istype(W, /obj/item/melee/roastingstick)) + if(istype(W, /obj/item/roastingstick)) return ..() if(istype(W, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/cig = W diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index b4f46e6e4c19..1fe7a307353d 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -180,7 +180,7 @@ /obj/item/reagent_containers/spray/pepper name = "pepperspray" desc = "Manufactured by UhangInc, used to blind and down an opponent quickly." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' icon_state = "pepperspray" item_state = "pepperspray" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index a2b295f2e6fa..d1fe33024919 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -356,7 +356,7 @@ id = "kitchen_knife" build_type = AUTOLATHE materials = list(/datum/material/iron = 12000) - build_path = /obj/item/kitchen/knife + build_path = /obj/item/melee/knife/kitchen category = list("initial","Dinnerware") /datum/design/plastic_knife @@ -364,7 +364,7 @@ id = "plastic_knife" build_type = AUTOLATHE | PROTOLATHE materials = list(/datum/material/plastic = 100) - build_path = /obj/item/kitchen/knife/plastic + build_path = /obj/item/melee/knife/plastic category = list("initial", "Tool Designs","Dinnerware") /datum/design/fork @@ -865,7 +865,7 @@ id = "cleaver" build_type = AUTOLATHE materials = list(/datum/material/iron = 18000) - build_path = /obj/item/kitchen/knife/butcher + build_path = /obj/item/melee/knife/butcher category = list("initial", "Dinnerware") /datum/design/spraycan diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 816cd4f9fdbf..98a088756d81 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -229,7 +229,7 @@ id = "roastingstick" build_type = PROTOLATHE materials = list(/datum/material/iron=1000, /datum/material/glass = 500, /datum/material/bluespace = 250) - build_path = /obj/item/melee/roastingstick + build_path = /obj/item/roastingstick category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index ac663059d0c0..3f80f17e8a32 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -16,35 +16,6 @@ Slimecrossing Weapons if(prob(20)) user.emote("scream") -//Rainbow knife - Burning Rainbow -/obj/item/kitchen/knife/rainbowknife - name = "rainbow knife" - desc = "A strange, transparent knife which constantly shifts color. It hums slightly when moved." - icon = 'icons/obj/slimecrossing.dmi' - icon_state = "rainbowknife" - item_state = "rainbowknife" - force = 18 - throwforce = 15 - damtype = BRUTE - -/obj/item/kitchen/knife/rainbowknife/afterattack(atom/O, mob/user, proximity) - if(proximity && istype(O, /mob/living)) - damtype = pick(BRUTE, BURN, TOX, OXY) - switch(damtype) - if(BRUTE) - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("slashed","sliced","cut") - if(BURN) - hitsound = 'sound/weapons/sear.ogg' - attack_verb = list("burned","singed","heated") - if(TOX) - hitsound = 'sound/weapons/pierce.ogg' - attack_verb = list("poisoned","dosed","toxified") - if(OXY) - hitsound = 'sound/effects/space_wind.ogg' - attack_verb = list("suffocated","winded","vacuumed") - return ..() - //Adamantine shield - Chilling Adamantine /obj/item/shield/adamantineshield name = "adamantine shield" diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index e9fd98232e2c..26c151e42316 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -305,11 +305,3 @@ Burning extracts: new /obj/item/shield/adamantineshield(get_turf(user)) ..() -/obj/item/slimecross/burning/rainbow - colour = "rainbow" - effect_desc = "Creates the Rainbow Knife, a kitchen knife that deals random types of damage." - -/obj/item/slimecross/burning/rainbow/do_effect(mob/user) - user.visible_message("[src] flattens into a glowing rainbow blade.") - new /obj/item/kitchen/knife/rainbowknife(get_turf(user)) - ..() diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index 7b5bd27a8ada..0747fb746ddd 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -102,34 +102,3 @@ var/turf/open/chasm/C = T C.set_target(dest) C.drop(user) - -//can't be bothered to do sloth right now, will make later - -/obj/item/kitchen/knife/envy //Envy's knife: Found in the Envy ruin. Attackers take on the appearance of whoever they strike. - name = "envy's knife" - desc = "Their success will be yours." - icon = 'icons/obj/wizard.dmi' - icon_state = "render" - item_state = "knife" - lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - force = 18 - throwforce = 10 - w_class = WEIGHT_CLASS_NORMAL - hitsound = 'sound/weapons/bladeslice.ogg' - -/obj/item/kitchen/knife/envy/afterattack(atom/movable/AM, mob/living/carbon/human/user, proximity) - . = ..() - if(!proximity) - return - if(!istype(user)) - return - if(ishuman(AM)) - var/mob/living/carbon/human/H = AM - if(user.real_name != H.dna.real_name) - user.real_name = H.dna.real_name - H.dna.transfer_identity(user, transfer_SE=1) - user.updateappearance(mutcolor_update=1) - user.domutcheck() - user.visible_message("[user]'s appearance shifts into [H]'s!", \ - "[H.p_they(TRUE)] think[H.p_s()] [H.p_theyre()] sooo much better than you. Not anymore, [H.p_they()] won't.") diff --git a/code/modules/ruins/rockplanet_ruin_code.dm b/code/modules/ruins/rockplanet_ruin_code.dm index d09bbe9d5dd7..5eea45c24c6c 100644 --- a/code/modules/ruins/rockplanet_ruin_code.dm +++ b/code/modules/ruins/rockplanet_ruin_code.dm @@ -100,7 +100,7 @@ /obj/item/strange_crystal/attackby(obj/item/item, mob/user, params) . = ..() - if(!istype(item, /obj/item/kitchen/knife)) + if(!istype(item, /obj/item/melee/knife)) return playsound(src, 'sound/effects/glassbr1.ogg', 50, TRUE, -1) to_chat(user, "You start breaking [src] up into shards...") diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 0c535f58ae23..756d889f5bc5 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -91,7 +91,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/item/storage/overmap_ship, 28) new /obj/item/tank/internals/oxygen/red(src) new /obj/item/tank/internals/oxygen/red(src) new /obj/item/pickaxe/emergency(src) - new /obj/item/kitchen/knife/hunting(src) + new /obj/item/melee/knife/hunting(src) new /obj/item/survivalcapsule(src) /obj/item/storage/overmap_ship/fueled/PopulateContents() diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm index c34d5cf7c985..d2e3cc957ad9 100644 --- a/code/modules/spells/spell_types/conjure.dm +++ b/code/modules/spells/spell_types/conjure.dm @@ -63,7 +63,7 @@ range = -1 clothes_req = FALSE var/obj/item/item - var/item_type = /obj/item/banhammer + var/item_type = /obj/item school = "conjuration" charge_max = 150 cooldown_min = 10 diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index 421b7f40f11c..f1654551df3a 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -1,25 +1,3 @@ -/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork - name = "Summon Pitchfork" - desc = "A devil's weapon of choice. Use this to summon/unsummon your pitchfork." - invocation_type = "none" - include_user = TRUE - range = -1 - clothes_req = FALSE - item_type = /obj/item/pitchfork/demonic - - school = "conjuration" - charge_max = 150 - cooldown_min = 10 - action_icon = 'icons/mob/actions/actions_minor_antag.dmi' - action_icon_state = "pitchfork" - action_background_icon_state = "bg_demon" - -/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater - item_type = /obj/item/pitchfork/demonic/greater - -/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended - item_type = /obj/item/pitchfork/demonic/ascended - /obj/effect/proc_holder/spell/targeted/conjure_item/violin item_type = /obj/item/instrument/violin/golden desc = "A devil's instrument of choice. Use this to summon/unsummon your golden violin." diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm index 5cf7e7e1e509..94f0c8a4fcad 100644 --- a/code/modules/spells/spell_types/godhand.dm +++ b/code/modules/spells/spell_types/godhand.dm @@ -4,7 +4,7 @@ var/catchphrase = "High Five!" var/on_use_sound = null var/obj/effect/proc_holder/spell/targeted/touch/attached_spell - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' icon_state = "latexballon" diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm index d1c882f96620..0807e1e5c8cc 100644 --- a/code/modules/surgery/advanced/lobotomy.dm +++ b/code/modules/surgery/advanced/lobotomy.dm @@ -26,7 +26,7 @@ implements = list( TOOL_SCALPEL = 85, // there is no way this should be reasonable to do basically at all without a real surgery. ghetto lobotomy, for real? /obj/item/melee/transforming/energy/sword = 25, - /obj/item/kitchen/knife = 15, + /obj/item/melee/knife = 15, /obj/item/shard = 10, /obj/item = 5) time = 10 SECONDS diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index 91cd1dce07e4..e737acbb78d7 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -14,9 +14,9 @@ TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/arm_blade = 80, - /obj/item/fireaxe = 50, + /obj/item/melee/axe/fire = 50, /obj/item/hatchet = 40, - /obj/item/kitchen/knife/butcher = 25) + /obj/item/melee/knife/butcher = 25) time = 6.4 SECONDS preop_sound = 'sound/surgery/scalpel1.ogg' success_sound = 'sound/surgery/organ2.ogg' diff --git a/code/modules/surgery/coronary_bypass.dm b/code/modules/surgery/coronary_bypass.dm index a4628d19efff..ceb376f3587c 100644 --- a/code/modules/surgery/coronary_bypass.dm +++ b/code/modules/surgery/coronary_bypass.dm @@ -22,7 +22,7 @@ name = "incise heart" implements = list( TOOL_SCALPEL = 90, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 33) time = 1.6 SECONDS preop_sound = 'sound/surgery/scalpel1.ogg' diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index 70dbac246e4e..eccf729d263f 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -34,7 +34,7 @@ /obj/item/scalpel/augment = 75, /obj/item/scalpel/advanced = 60, TOOL_SCALPEL = 45, - /obj/item/kitchen/knife = 30, + /obj/item/melee/knife = 30, /obj/item/shard = 10)// special tools not only cut down time but also improve probability time = 125 silicons_obey_prob = TRUE diff --git a/code/modules/surgery/gastrectomy.dm b/code/modules/surgery/gastrectomy.dm index f4bd48c4729d..6d00f5ae7588 100644 --- a/code/modules/surgery/gastrectomy.dm +++ b/code/modules/surgery/gastrectomy.dm @@ -25,7 +25,7 @@ implements = list( TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 33, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 10) time = 52 experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //for consistency across organ surgeries diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm index e612b6fa18c5..0571cf9b2397 100644 --- a/code/modules/surgery/hepatectomy.dm +++ b/code/modules/surgery/hepatectomy.dm @@ -24,7 +24,7 @@ implements = list( TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 33, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 25) time = 52 experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //repeatable so not as much xp diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm index 09ef68f03e18..79d3d79bcee5 100644 --- a/code/modules/surgery/lobectomy.dm +++ b/code/modules/surgery/lobectomy.dm @@ -23,7 +23,7 @@ implements = list( TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 33, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 25) time = 4.2 SECONDS preop_sound = 'sound/surgery/scalpel1.ogg' diff --git a/code/modules/surgery/mechanic_steps.dm b/code/modules/surgery/mechanic_steps.dm index 3730f7cf1302..694081f7af78 100644 --- a/code/modules/surgery/mechanic_steps.dm +++ b/code/modules/surgery/mechanic_steps.dm @@ -4,7 +4,7 @@ implements = list( TOOL_SCREWDRIVER = 100, TOOL_SCALPEL = 75, // med borgs could try to unscrew shell with scalpel - /obj/item/kitchen/knife = 50, + /obj/item/melee/knife/kitchen = 50, /obj/item = 10) time = 2.4 SECONDS preop_sound = 'sound/items/screwdriver.ogg' @@ -28,7 +28,7 @@ implements = list( TOOL_SCREWDRIVER = 100, TOOL_SCALPEL = 75, - /obj/item/kitchen/knife = 50, + /obj/item/melee/knife/kitchen = 50, /obj/item = 10) time = 2.4 SECONDS preop_sound = 'sound/items/screwdriver.ogg' diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 42018e6c1d87..8959a7f99715 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -5,7 +5,7 @@ implements = list( TOOL_SCALPEL = 100, /obj/item/melee/transforming/energy/sword = 40, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife = 40, /obj/item/shard = 25, /obj/item = 15) //any sharp item time = 1.6 SECONDS @@ -151,18 +151,18 @@ name = "saw bone" implements = list( TOOL_SAW = 100, - /obj/item/fireaxe = 50, + /obj/item/melee/axe/fire = 50, /obj/item/melee/arm_blade = 40, /obj/item/hatchet = 40, - /obj/item/kitchen/knife/butcher = 33, + /obj/item/melee/knife/butcher = 33, /obj/item = 10) //10% success (sort of) with any sharp item with a force>=10 time = 5.4 SECONDS preop_sound = list( /obj/item/circular_saw = 'sound/surgery/saw.ogg', /obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg', - /obj/item/fireaxe = 'sound/surgery/scalpel1.ogg', + /obj/item/melee/axe/fire = 'sound/surgery/scalpel1.ogg', /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', - /obj/item/kitchen/knife/butcher = 'sound/surgery/scalpel1.ogg', + /obj/item/melee/knife/butcher = 'sound/surgery/scalpel1.ogg', /obj/item = 'sound/surgery/scalpel1.ogg', ) success_sound = 'sound/surgery/bone3.ogg' diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 5d6fac852d51..665086d1981d 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -232,11 +232,11 @@ /obj/item/organ/cyberimp/arm/toolset/emag_act(mob/user) for(var/datum/weakref/created_item in items_list) var/obj/potential_knife = created_item.resolve() - if(istype(/obj/item/kitchen/knife/combat/cyborg, potential_knife)) + if(istype(/obj/item/melee/knife/combat/cyborg, potential_knife)) return FALSE to_chat(user, "You unlock [src]'s integrated knife!") - items_list += WEAKREF(new /obj/item/kitchen/knife/combat/cyborg(src)) + items_list += WEAKREF(new /obj/item/melee/knife/combat/cyborg(src)) return TRUE /obj/item/organ/cyberimp/arm/esword diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm index 9c87a5b5a93f..ed54575bb1bf 100644 --- a/code/modules/surgery/plastic_surgery.dm +++ b/code/modules/surgery/plastic_surgery.dm @@ -8,7 +8,7 @@ name = "reshape face" implements = list( TOOL_SCALPEL = 100, - /obj/item/kitchen/knife = 40, + /obj/item/melee/knife = 40, TOOL_WIRECUTTER = 33) time = 64 experience_given = MEDICAL_SKILL_MEDIUM diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 317297c4fe8d..5da5f497bda4 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -171,7 +171,7 @@ //spases 4 legibilititie icon_state = "swa" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/items.dmi' lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index d26226e3ea83..ef4630109543 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1892,7 +1892,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/role_restricted/greykingsword name = "Blade of The Grey Tide" desc = "A weapon of legend, forged by the greatest crackheads of our generation." - item = /obj/item/melee/greykingsword + item = /obj/item/melee/sword/greyking cost = 2 restricted_roles = list("Assistant", "Chemist") diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm index 8d6acea28452..ebef11cd2630 100644 --- a/code/modules/vehicles/scooter.dm +++ b/code/modules/vehicles/scooter.dm @@ -57,7 +57,7 @@ ///Stores the default icon state var/board_icon = "skateboard" ///The handheld item counterpart for the board - var/board_item_type = /obj/item/melee/skateboard + var/board_item_type = /obj/item/skateboard ///Stamina drain multiplier var/instability = 10 @@ -165,13 +165,13 @@ desc = "A RaDSTORMz brand professional skateboard. Looks a lot more stable than the average board." icon_state = "skateboard2" board_icon = "skateboard2" - board_item_type = /obj/item/melee/skateboard/pro + board_item_type = /obj/item/skateboard/pro instability = 6 /obj/vehicle/ridden/scooter/skateboard/hoverboard/ name = "hoverboard" desc = "A blast from the past, so retro!" - board_item_type = /obj/item/melee/skateboard/hoverboard + board_item_type = /obj/item/skateboard/hoverboard instability = 3 icon_state = "hoverboard_red" board_icon = "hoverboard_red" @@ -188,7 +188,7 @@ /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin name = "\improper Board Of Directors" desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too." - board_item_type = /obj/item/melee/skateboard/hoverboard/admin + board_item_type = /obj/item/skateboard/hoverboard/admin instability = 0 icon_state = "hoverboard_nt" board_icon = "hoverboard_nt" diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 3e51271093ad..18b8fd522aab 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -15,10 +15,10 @@ /obj/item/reagent_containers/food/condiment/peppermill = 5, /obj/item/clothing/suit/apron/chef = 2, /obj/item/kitchen/rollingpin = 2, - /obj/item/kitchen/knife = 2, - /obj/item/kitchen/knife/pizza_cutter = 2, + /obj/item/melee/knife/kitchen = 2, + /obj/item/melee/knife/pizza_cutter = 2, /obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2, - /obj/item/kitchen/knife/butcher = 1) + /obj/item/melee/knife/butcher = 1) refill_canister = /obj/item/vending_refill/dinnerware default_price = 50 extra_price = 250 diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index c803fa347e9f..e54479cd55ca 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -15,8 +15,8 @@ /obj/item/camera = 3, /obj/item/dyespray = 3) premium = list( - /obj/item/melee/skateboard/pro = 3, - /obj/item/melee/skateboard/hoverboard = 1) + /obj/item/skateboard/pro = 3, + /obj/item/skateboard/hoverboard = 1) refill_canister = /obj/item/vending_refill/games default_price = 50 extra_price = 250 diff --git a/code/modules/vending/sustenance.dm b/code/modules/vending/sustenance.dm index 0677a77edb58..02a95555468f 100644 --- a/code/modules/vending/sustenance.dm +++ b/code/modules/vending/sustenance.dm @@ -11,7 +11,7 @@ /obj/item/reagent_containers/food/drinks/ice/prison = 12, /obj/item/reagent_containers/food/snacks/candy_corn/prison = 6) contraband = list( - /obj/item/kitchen/knife = 6, + /obj/item/melee/knife/kitchen = 6, /obj/item/reagent_containers/food/drinks/coffee = 12, /obj/item/tank/internals/emergency_oxygen = 6, /obj/item/clothing/mask/breath = 6) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index da3fdb134010..4686c12da1ad 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -375,8 +375,7 @@ icon_state = "chapdrobe" product_ads = "Are you being bothered by cultists or pesky revenants? Then come and dress like the holy man!;Clothes for men of the cloth!" vend_reply = "Thank you for using the ChapDrobe!" - products = list(/obj/item/storage/box/holy = 1, - /obj/item/storage/backpack/cultpack = 1, + products = list(/obj/item/storage/backpack/cultpack = 1, /obj/item/clothing/head/beret/service = 1, //WS edit - berets /obj/item/clothing/accessory/pocketprotector/cosmetology = 1, /obj/item/clothing/under/rank/civilian/chaplain = 1, diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index 41093fde051e..49732e254e41 100644 Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index a8559339cd26..9797eb3ee366 100644 Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ diff --git a/icons/obj/improvised.dmi b/icons/obj/improvised.dmi index 43fc38a4be59..20890be4cbc1 100644 Binary files a/icons/obj/improvised.dmi and b/icons/obj/improvised.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi new file mode 100644 index 000000000000..e38eb539cf4d Binary files /dev/null and b/icons/obj/items.dmi differ diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi deleted file mode 100644 index a0ceaebd8383..000000000000 Binary files a/icons/obj/items_and_weapons.dmi and /dev/null differ diff --git a/icons/obj/mysterybox.dmi b/icons/obj/mysterybox.dmi deleted file mode 100644 index 0023dc066376..000000000000 Binary files a/icons/obj/mysterybox.dmi and /dev/null differ diff --git a/icons/obj/transforming_energy.dmi b/icons/obj/transforming_energy.dmi deleted file mode 100644 index ff2f99832d1c..000000000000 Binary files a/icons/obj/transforming_energy.dmi and /dev/null differ diff --git a/icons/obj/weapon/axe.dmi b/icons/obj/weapon/axe.dmi new file mode 100644 index 000000000000..0ff8a4364833 Binary files /dev/null and b/icons/obj/weapon/axe.dmi differ diff --git a/icons/obj/weapon/baton.dmi b/icons/obj/weapon/baton.dmi new file mode 100644 index 000000000000..c39a8b4e073b Binary files /dev/null and b/icons/obj/weapon/baton.dmi differ diff --git a/icons/obj/weapon/blunt.dmi b/icons/obj/weapon/blunt.dmi new file mode 100644 index 000000000000..480515bbd794 Binary files /dev/null and b/icons/obj/weapon/blunt.dmi differ diff --git a/icons/obj/weapon/energy.dmi b/icons/obj/weapon/energy.dmi new file mode 100644 index 000000000000..5100d715923a Binary files /dev/null and b/icons/obj/weapon/energy.dmi differ diff --git a/icons/obj/item/knife.dmi b/icons/obj/weapon/knife.dmi similarity index 100% rename from icons/obj/item/knife.dmi rename to icons/obj/weapon/knife.dmi diff --git a/icons/obj/weapon/misc.dmi b/icons/obj/weapon/misc.dmi new file mode 100644 index 000000000000..9eabb2c3eaf7 Binary files /dev/null and b/icons/obj/weapon/misc.dmi differ diff --git a/icons/obj/weapon/spear.dmi b/icons/obj/weapon/spear.dmi new file mode 100644 index 000000000000..98b3761430ed Binary files /dev/null and b/icons/obj/weapon/spear.dmi differ diff --git a/icons/obj/weapon/sword.dmi b/icons/obj/weapon/sword.dmi new file mode 100644 index 000000000000..dc8fd8fd5d7d Binary files /dev/null and b/icons/obj/weapon/sword.dmi differ diff --git a/shiptest.dme b/shiptest.dme index c5770b4a4b81..88900c60e222 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -1159,7 +1159,6 @@ #include "code\game\objects\items\cardboard_cutouts.dm" #include "code\game\objects\items\cards_ids.dm" #include "code\game\objects\items\cash.dm" -#include "code\game\objects\items\chainsaw.dm" #include "code\game\objects\items\charter.dm" #include "code\game\objects\items\chromosome.dm" #include "code\game\objects\items\chrono_eraser.dm" @@ -1179,19 +1178,15 @@ #include "code\game\objects\items\dna_injector.dm" #include "code\game\objects\items\documents.dm" #include "code\game\objects\items\door_seal.dm" -#include "code\game\objects\items\dualsaber.dm" #include "code\game\objects\items\dyekit.dm" #include "code\game\objects\items\eightball.dm" -#include "code\game\objects\items\energyhalberd.dm" #include "code\game\objects\items\etherealdiscoball.dm" #include "code\game\objects\items\extinguisher.dm" -#include "code\game\objects\items\fireaxe.dm" #include "code\game\objects\items\flamethrower.dm" #include "code\game\objects\items\gift.dm" #include "code\game\objects\items\granters.dm" #include "code\game\objects\items\handcuffs.dm" #include "code\game\objects\items\holosign_creator.dm" -#include "code\game\objects\items\holy_weapons.dm" #include "code\game\objects\items\hot_potato.dm" #include "code\game\objects\items\hourglass.dm" #include "code\game\objects\items\inducer.dm" @@ -1204,10 +1199,8 @@ #include "code\game\objects\items\paiwire.dm" #include "code\game\objects\items\pet_carrier.dm" #include "code\game\objects\items\pinpointer.dm" -#include "code\game\objects\items\pitchfork.dm" #include "code\game\objects\items\plushes.dm" #include "code\game\objects\items\pneumaticCannon.dm" -#include "code\game\objects\items\powerfist.dm" #include "code\game\objects\items\puzzle_pieces.dm" #include "code\game\objects\items\RCD.dm" #include "code\game\objects\items\RCL.dm" @@ -1221,20 +1214,15 @@ #include "code\game\objects\items\shrapnel.dm" #include "code\game\objects\items\shuttle_creator.dm" #include "code\game\objects\items\signs.dm" -#include "code\game\objects\items\singularityhammer.dm" -#include "code\game\objects\items\spear.dm" -#include "code\game\objects\items\stunbaton.dm" #include "code\game\objects\items\survery_handheld.dm" #include "code\game\objects\items\taster.dm" #include "code\game\objects\items\teleportation.dm" -#include "code\game\objects\items\teleprod.dm" #include "code\game\objects\items\theft_tools.dm" #include "code\game\objects\items\toy_mechs.dm" #include "code\game\objects\items\toys.dm" #include "code\game\objects\items\trash.dm" #include "code\game\objects\items\vending_items.dm" #include "code\game\objects\items\wayfinding.dm" -#include "code\game\objects\items\weaponry.dm" #include "code\game\objects\items\attachments\_attachment.dm" #include "code\game\objects\items\attachments\bayonet.dm" #include "code\game\objects\items\attachments\laser_sight.dm" @@ -1323,9 +1311,20 @@ #include "code\game\objects\items\implants\implanter.dm" #include "code\game\objects\items\implants\implantpad.dm" #include "code\game\objects\items\implants\implantuplink.dm" +#include "code\game\objects\items\melee\chainsaw.dm" +#include "code\game\objects\items\melee\dualsaber.dm" #include "code\game\objects\items\melee\energy.dm" +#include "code\game\objects\items\melee\energyhalberd.dm" +#include "code\game\objects\items\melee\fireaxe.dm" +#include "code\game\objects\items\melee\knife.dm" #include "code\game\objects\items\melee\misc.dm" +#include "code\game\objects\items\melee\powerfist.dm" +#include "code\game\objects\items\melee\spear.dm" +#include "code\game\objects\items\melee\stunbaton.dm" +#include "code\game\objects\items\melee\sword.dm" +#include "code\game\objects\items\melee\teleprod.dm" #include "code\game\objects\items\melee\transforming.dm" +#include "code\game\objects\items\melee\weaponry.dm" #include "code\game\objects\items\robot\ai_upgrades.dm" #include "code\game\objects\items\robot\robot_items.dm" #include "code\game\objects\items\robot\robot_parts.dm" @@ -1700,7 +1699,6 @@ #include "code\modules\antagonists\cult\cult_items.dm" #include "code\modules\antagonists\cult\cult_structures.dm" #include "code\modules\antagonists\cult\cult_turf_overlay.dm" -#include "code\modules\antagonists\cult\ritual.dm" #include "code\modules\antagonists\cult\rune_spawn_action.dm" #include "code\modules\antagonists\cult\runes.dm" #include "code\modules\antagonists\devil\devil.dm" @@ -2145,7 +2143,6 @@ #include "code\modules\events\holiday\vday.dm" #include "code\modules\events\holiday\xmas.dm" #include "code\modules\events\wizard\aid.dm" -#include "code\modules\events\wizard\curseditems.dm" #include "code\modules\events\wizard\departmentrevolt.dm" #include "code\modules\events\wizard\embeddies.dm" #include "code\modules\events\wizard\fakeexplosion.dm" diff --git a/tools/UpdatePaths/Scripts/2776_cultbegone.txt b/tools/UpdatePaths/Scripts/2776_cultbegone.txt index f2297a7003e7..a4da9dcb3d80 100644 --- a/tools/UpdatePaths/Scripts/2776_cultbegone.txt +++ b/tools/UpdatePaths/Scripts/2776_cultbegone.txt @@ -32,12 +32,12 @@ /obj/item/toy/plush/narplush : /obj/item/toy/plush/lizardplushie /obj/item/bedsheet/cult : /obj/item/bedsheet/dorms -/obj/item/melee/cultblade : /obj/item/claymore/weak -/obj/item/melee/cultblade/dagger : /obj/item/kitchen/knife/combat -/obj/item/melee/cultblade/ghost : /obj/item/kitchen/knife/combat -/obj/item/toy/toy_dagger : /obj/item/kitchen/knife -/obj/item/kitchen/knife/bloodletter : /obj/item/kitchen/knife/combat -/obj/item/kitchen/ritual : /obj/item/kitchen/knife/combat +/obj/item/melee/cultblade : /obj/item/melee/sword/claymore/weak +/obj/item/melee/cultblade/dagger : /obj/item/melee/knife/combat +/obj/item/melee/cultblade/ghost : /obj/item/melee/knife/combat +/obj/item/toy/toy_dagger : /obj/item/melee/knife/kitcken +/obj/item/melee/knife/kitcken/bloodletter : /obj/item/melee/knife/combat +/obj/item/kitchen/ritual : /obj/item/melee/knife/combat /obj/item/restraints/legcuffs/bola/cult : /obj/item/restraints/legcuffs/bola /obj/effect/rune : @DELETE diff --git a/tools/UpdatePaths/Scripts/2932_melee.txt b/tools/UpdatePaths/Scripts/2932_melee.txt new file mode 100644 index 000000000000..60b81ff02b18 --- /dev/null +++ b/tools/UpdatePaths/Scripts/2932_melee.txt @@ -0,0 +1,17 @@ +/obj/item/kitchen/knife : /obj/item/melee/knife/kitchen {@OLD} +/obj/item/kitchen/knife/plastic : /obj/item/melee/knife/plastic {@OLD} +/obj/item/kitchen/knife/letter_opener : /obj/item/melee/knife/letter_opener {@OLD} +/obj/item/kitchen/knife/combat : /obj/item/melee/knife/combat {@OLD} +/obj/item/kitchen/knife/combat/bone : /obj/item/melee/knife/bone {@OLD} +/obj/item/kitchen/knife/combat/survival : /obj/item/melee/knife/survival {@OLD} +/obj/item/kitchen/knife/switchblade : /obj/item/melee/knife/switchblade {@OLD} +/obj/item/kitchen/knife/hunting : obj/item/melee/knife/hunting {@OLD} +/obj/item/kitchen/knife/shiv : obj/item/melee/knife/shiv {@OLD} + +/obj/item/spear : /obj/item/melee/spear {@OLD} +/obj/item/spear/explosive : /obj/item/melee/spear/explosive {@OLD} +/obj/item/spear/bonespear : /obj/item/melee/spear/bone {@OLD} +/obj/item/melee/spear/bonespear : /obj/item/melee/spear/bone {@OLD} + +/obj/item/claymore : /obj/item/melee/sword/claymore {@OLD} +/obj/item/claymore/bone : /obj/item/melee/sword/bone {@OLD}