diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm
index deab5e9b69..94f48f4ea0 100644
--- a/code/datums/components/crafting/guncrafting.dm
+++ b/code/datums/components/crafting/guncrafting.dm
@@ -8,45 +8,16 @@
custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 6)
icon_state = "riflestock"
+/obj/item/weaponcrafting/receiver
+ name = "modular receiver"
+ desc = "A prototype modular receiver and trigger assembly for a firearm."
+ icon = 'icons/obj/improvised.dmi'
+ icon_state = "receiver"
+
/obj/item/weaponcrafting/string
name = "wound thread"
desc = "A long piece of thread with some resemblance to cable coil."
icon_state = "durastring"
-////////////////////////////////
-// IMPROVISED WEAPON PARTS//
-////////////////////////////////
-
-/obj/item/weaponcrafting/improvised_parts
- name = "Debug Improvised Gun Part"
- desc = "A badly coded gun part. You should report coders if you see this."
- icon = 'icons/obj/guns/gun_parts.dmi'
- icon_state = "palette"
-
-// RECEIVERS
-
-/obj/item/weaponcrafting/improvised_parts/rifle_receiver
- name = "rifle receiver"
- desc = "A crudely constructed receiver to create an improvised bolt-action breechloaded rifle." // removed some text implying that the item had more uses than it does
- icon_state = "receiver_rifle"
- w_class = WEIGHT_CLASS_SMALL
-/obj/item/weaponcrafting/improvised_parts/shotgun_receiver
- name = "shotgun reciever"
- desc = "An improvised receiver to create a break-action breechloaded shotgun." // removed some text implying that the item had more uses than it does
- icon_state = "receiver_shotgun"
- w_class = WEIGHT_CLASS_SMALL
-
-// MISC
-
-/obj/item/weaponcrafting/improvised_parts/trigger_assembly
- name = "firearm trigger assembly"
- desc = "A modular trigger assembly with a firing pin, this can be used to make a whole bunch of improvised firearss."
- icon_state = "trigger_assembly"
- w_class = WEIGHT_CLASS_SMALL
-
-/obj/item/weaponcrafting/improvised_parts/wooden_body
- name = "wooden firearm body"
- desc = "A crudely fashioned wooden body to help keep higher calibre improvised weapons from blowing themselves apart."
- icon_state = "wooden_body"
diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm
index 6786f0c0f7..2dd42debf7 100644
--- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm
+++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm
@@ -296,31 +296,16 @@
/datum/crafting_recipe/ishotgun
name = "Improvised Shotgun"
- result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised
- reqs = list(/obj/item/pipe = 2, // putting a large amount of meaningless timegates by forcing people to turn base resources into upgraded resources kinda sucks
- /obj/item/weaponcrafting/improvised_parts/shotgun_receiver = 1,
- /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 1,
- /obj/item/weaponcrafting/improvised_parts/wooden_body = 1,
- /obj/item/weaponcrafting/stock = 1,
- /obj/item/stack/packageWrap = 5)
- tools = list(TOOL_SCREWDRIVER)
- time = 100
- category = CAT_WEAPONRY
- subcategory = CAT_WEAPON
-
-/datum/crafting_recipe/irifle // larger and less versatile gun, but a bit easier to make
- name = "Improvised Rifle (7.62mm)"
- result = /obj/item/gun/ballistic/shotgun/boltaction/improvised
- reqs = list(/obj/item/pipe = 2, // above
- /obj/item/weaponcrafting/improvised_parts/rifle_receiver = 1,
- /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 1,
- /obj/item/weaponcrafting/improvised_parts/wooden_body = 1,
+ result = /obj/item/gun/ballistic/shotgun/doublebarrel/improvised
+ reqs = list(/obj/item/weaponcrafting/receiver = 1,
+ /obj/item/pipe = 1,
/obj/item/weaponcrafting/stock = 1,
/obj/item/stack/packageWrap = 5)
tools = list(TOOL_SCREWDRIVER)
time = 100
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
+//Here lies all of the god awful improv weapons. Gone way too late. 2019 - 2021
//////////////////
///AMMO CRAFTING//
@@ -445,41 +430,6 @@
category = CAT_WEAPONRY
subcategory = CAT_AMMO
-////////////////////
-// PARTS CRAFTING //
-////////////////////
-
-// RECEIVERS
-
-/datum/crafting_recipe/rifle_receiver
- name = "Improvised Rifle Receiver"
- result = /obj/item/weaponcrafting/improvised_parts/rifle_receiver
- reqs = list(/obj/item/stack/sheet/metal = 15)
- tools = list(TOOL_SCREWDRIVER, TOOL_WELDER)
- time = 25
- category = CAT_WEAPONRY
- subcategory = CAT_PARTS
-
-/datum/crafting_recipe/shotgun_receiver
- name = "Improvised Shotgun Receiver"
- result = /obj/item/weaponcrafting/improvised_parts/shotgun_receiver
- reqs = list(/obj/item/stack/sheet/metal = 10) // shotgun does less damage than the rifle and can't 1shot but is more portable
- tools = list(TOOL_SCREWDRIVER, TOOL_WELDER)
- time = 20
- category = CAT_WEAPONRY
- subcategory = CAT_PARTS
-
-// MISC
-
-/datum/crafting_recipe/trigger_assembly
- name = "Trigger Assembly"
- result = /obj/item/weaponcrafting/improvised_parts/trigger_assembly
- reqs = list(/obj/item/stack/sheet/metal = 3,
- /obj/item/assembly/igniter = 1)
- tools = list(TOOL_SCREWDRIVER, TOOL_WELDER)
- time = 20
- category = CAT_WEAPONRY
- subcategory = CAT_PARTS
// BOKKEN CRAFTING
diff --git a/code/game/gamemodes/gangs/gang_items.dm b/code/game/gamemodes/gangs/gang_items.dm
index 7d6ecd00f6..1d70a33cd2 100644
--- a/code/game/gamemodes/gangs/gang_items.dm
+++ b/code/game/gamemodes/gangs/gang_items.dm
@@ -188,7 +188,7 @@ datum/gang_item/clothing/shades //Addition: Why not have cool shades on a gang m
name = "Sawn-Off Improvised Shotgun"
id = "sawn"
cost = 5
- item_path = /obj/item/gun/ballistic/revolver/doublebarrel/improvised/sawn
+ item_path = /obj/item/gun/ballistic/shotgun/doublebarrel/improvised/sawn
/datum/gang_item/weapon/ammo/improvised_ammo
name = "Box of Buckshot"
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index 37b23402f1..b01141aa5c 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -273,119 +273,6 @@
return
user.visible_message("[user.name]'s soul is captured by \the [src]!", "You've lost the gamble! Your soul is forfeit!")
-/////////////////////////////
-// DOUBLE BARRELED SHOTGUN //
-/////////////////////////////
-
-/obj/item/gun/ballistic/revolver/doublebarrel
- name = "double-barreled shotgun"
- desc = "A true classic."
- icon_state = "dshotgun"
- item_state = "shotgun"
- w_class = WEIGHT_CLASS_BULKY
- weapon_weight = WEAPON_MEDIUM
- force = 10
- flags_1 = CONDUCT_1
- slot_flags = ITEM_SLOT_BACK
- mag_type = /obj/item/ammo_box/magazine/internal/shot/dual
- sawn_desc = "Omar's coming!"
- obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "dshotgun",
- "Dark Red Finish" = "dshotgun-d",
- "Ash" = "dshotgun-f",
- "Faded Grey" = "dshotgun-g",
- "Maple" = "dshotgun-l",
- "Rosewood" = "dshotgun-p"
- )
-
-/obj/item/gun/ballistic/revolver/doublebarrel/attackby(obj/item/A, mob/user, params)
- ..()
- if(istype(A, /obj/item/ammo_box) || istype(A, /obj/item/ammo_casing))
- chamber_round()
- if(A.tool_behaviour == TOOL_SAW || istype(A, /obj/item/gun/energy/plasmacutter))
- sawoff(user)
- if(istype(A, /obj/item/melee/transforming/energy))
- var/obj/item/melee/transforming/energy/W = A
- if(W.active)
- sawoff(user)
-
-/obj/item/gun/ballistic/revolver/doublebarrel/attack_self(mob/living/user)
- var/num_unloaded = 0
- while (get_ammo() > 0)
- var/obj/item/ammo_casing/CB
- CB = magazine.get_round(0)
- chambered = null
- CB.forceMove(drop_location())
- CB.update_icon()
- num_unloaded++
- if (num_unloaded)
- to_chat(user, "You break open \the [src] and unload [num_unloaded] shell\s.")
- else
- to_chat(user, "[src] is empty!")
-
-/////////////////////////////
-// IMPROVISED SHOTGUN //
-/////////////////////////////
-
-/obj/item/gun/ballistic/revolver/doublebarrel/improvised
- name = "improvised shotgun"
- desc = "A shoddy break-action breechloaded shotgun. Less ammo-efficient than an actual shotgun, but still packs a punch."
- icon_state = "ishotgun"
- item_state = "shotgun"
- w_class = WEIGHT_CLASS_BULKY
- weapon_weight = WEAPON_MEDIUM // prevents shooting 2 at once, but doesn't require 2 hands
- force = 10
- slot_flags = null
- mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised
- sawn_desc = "I'm just here for the gasoline."
- unique_reskin = null
- var/slung = FALSE
-
-/obj/item/gun/ballistic/revolver/doublebarrel/improvised/attackby(obj/item/A, mob/user, params)
- ..()
- if(istype(A, /obj/item/stack/cable_coil) && !sawn_off)
- if(A.use_tool(src, user, 0, 10, skill_gain_mult = EASY_USE_TOOL_MULT))
- slot_flags = ITEM_SLOT_BACK
- to_chat(user, "You tie the lengths of cable to the shotgun, making a sling.")
- slung = TRUE
- update_icon()
- else
- to_chat(user, "You need at least ten lengths of cable if you want to make a sling!")
-
-/obj/item/gun/ballistic/revolver/doublebarrel/improvised/update_overlays()
- . = ..()
- if(slung)
- . += "[icon_state]sling"
-
-/obj/item/gun/ballistic/revolver/doublebarrel/improvised/sawoff(mob/user)
- . = ..()
- if(. && slung) //sawing off the gun removes the sling
- new /obj/item/stack/cable_coil(get_turf(src), 10)
- slung = 0
- update_icon()
-
-/obj/item/gun/ballistic/revolver/doublebarrel/improvised/sawn
- name = "sawn-off improvised shotgun"
- desc = "The barrel and stock have been sawn and filed down; it can fit in backpacks. You wont want to shoot two of these at once if you value your wrists."
- icon_state = "ishotgun"
- item_state = "gun"
- w_class = WEIGHT_CLASS_NORMAL
- sawn_off = TRUE
- slot_flags = ITEM_SLOT_BELT
-
-
-/obj/item/gun/ballistic/revolver/reverse //Fires directly at its user... unless the user is a clown, of course.
- clumsy_check = 0
-
-/obj/item/gun/ballistic/revolver/reverse/can_trigger_gun(mob/living/user)
- if((HAS_TRAIT(user, TRAIT_CLUMSY)) || (user.mind && HAS_TRAIT(user.mind, TRAIT_CLOWN_MENTALITY)))
- return ..()
- if(process_fire(user, user, FALSE, null, BODY_ZONE_HEAD))
- user.visible_message("[user] somehow manages to shoot [user.p_them()]self in the face!", "You somehow shoot yourself in the face! How the hell?!")
- user.emote("scream")
- user.drop_all_held_items()
- user.DefaultCombatKnockdown(80)
-
// -------------- HoS Modular Weapon System -------------
// ---------- Code originally from VoreStation ----------
/obj/item/gun/ballistic/revolver/mws
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 7b3ac36ef6..1a2c11fbd5 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -122,16 +122,6 @@
knife_x_offset = 27
knife_y_offset = 13
-/obj/item/gun/ballistic/shotgun/boltaction/improvised
- name = "Makeshift 7.62mm Rifle"
- icon_state = "ishotgun"
- icon_state = "irifle"
- item_state = "shotgun"
- desc = "A bolt-action breechloaded rifle that takes 7.62mm bullets."
- mag_type = /obj/item/ammo_box/magazine/internal/boltaction/improvised
- can_bayonet = FALSE
- var/slung = FALSE
-
/obj/item/gun/ballistic/shotgun/boltaction/pump(mob/M)
playsound(M, 'sound/weapons/shotgunpump.ogg', 60, 1)
if(bolt_open)
@@ -152,22 +142,6 @@
. = ..()
. += "The bolt is [bolt_open ? "open" : "closed"]."
-/obj/item/gun/ballistic/shotgun/boltaction/improvised/attackby(obj/item/A, mob/user, params)
- ..()
- if(istype(A, /obj/item/stack/cable_coil) && !sawn_off)
- if(A.use_tool(src, user, 0, 10, skill_gain_mult = EASY_USE_TOOL_MULT))
- slot_flags = ITEM_SLOT_BACK
- to_chat(user, "You tie the lengths of cable to the rifle, making a sling.")
- slung = TRUE
- update_icon()
- else
- to_chat(user, "You need at least ten lengths of cable if you want to make a sling!")
-
-/obj/item/gun/ballistic/shotgun/boltaction/improvised/update_overlays()
- . = ..()
- if(slung)
- . += "[icon_state]sling"
-
/obj/item/gun/ballistic/shotgun/boltaction/enchanted
name = "enchanted bolt action rifle"
desc = "Careful not to lose your head."
@@ -318,7 +292,95 @@
pump()
return TRUE
-// DOUBLE BARRELED SHOTGUN and IMPROVISED SHOTGUN are in revolver.dm
+/////////////////////////////
+// DOUBLE BARRELED SHOTGUN //
+/////////////////////////////
+
+/obj/item/gun/ballistic/shotgun/doublebarrel
+ name = "double-barreled shotgun"
+ desc = "A true classic."
+ icon_state = "dshotgun"
+ inhand_icon_state = "shotgun_db"
+ w_class = WEIGHT_CLASS_BULKY
+ weapon_weight = WEAPON_MEDIUM
+ force = 10
+ flags_1 = CONDUCT_1
+ slot_flags = ITEM_SLOT_BACK
+ mag_type = /obj/item/ammo_box/magazine/internal/shot/dual
+ sawn_desc = "Omar's coming!"
+ obj_flags = UNIQUE_RENAME
+ rack_sound_volume = 0
+ unique_reskin = list("Default" = "dshotgun",
+ "Dark Red Finish" = "dshotgun_d",
+ "Ash" = "dshotgun_f",
+ "Faded Grey" = "dshotgun_g",
+ "Maple" = "dshotgun_l",
+ "Rosewood" = "dshotgun_p"
+ )
+ semi_auto = TRUE
+ bolt_type = BOLT_TYPE_NO_BOLT
+ can_be_sawn_off = TRUE
+ pb_knockback = 3 // it's a super shotgun!
+
+/obj/item/gun/ballistic/shotgun/doublebarrel/AltClick(mob/user)
+ . = ..()
+ if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
+ reskin_obj(user)
+
+/obj/item/gun/ballistic/shotgun/doublebarrel/sawoff(mob/user)
+ . = ..()
+ if(.)
+ weapon_weight = WEAPON_MEDIUM
+
+// IMPROVISED SHOTGUN //
+
+/obj/item/gun/ballistic/shotgun/doublebarrel/improvised
+ name = "improvised shotgun"
+ desc = "Essentially a tube that aims shotgun shells."
+ icon_state = "ishotgun"
+ inhand_icon_state = "ishotgun"
+ w_class = WEIGHT_CLASS_BULKY
+ force = 10
+ slot_flags = null
+ mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised
+ sawn_desc = "I'm just here for the gasoline."
+ unique_reskin = null
+ var/slung = FALSE
+
+/obj/item/gun/ballistic/shotgun/doublebarrel/improvised/attackby(obj/item/A, mob/user, params)
+ ..()
+ if(istype(A, /obj/item/stack/cable_coil) && !sawn_off)
+ var/obj/item/stack/cable_coil/C = A
+ if(C.use(10))
+ slot_flags = ITEM_SLOT_BACK
+ to_chat(user, "You tie the lengths of cable to the shotgun, making a sling.")
+ slung = TRUE
+ update_icon()
+ else
+ to_chat(user, "You need at least ten lengths of cable if you want to make a sling!")
+
+/obj/item/gun/ballistic/shotgun/doublebarrel/improvised/update_icon_state()
+ . = ..()
+ if(slung)
+ inhand_icon_state = "ishotgunsling"
+ if(sawn_off)
+ inhand_icon_state = "ishotgun_sawn"
+
+/obj/item/gun/ballistic/shotgun/doublebarrel/improvised/update_overlays()
+ . = ..()
+ if(slung)
+ . += "ishotgunsling"
+ if(sawn_off)
+ . += "ishotgun_sawn"
+
+/obj/item/gun/ballistic/shotgun/doublebarrel/improvised/sawoff(mob/user)
+ . = ..()
+ if(. && slung) //sawing off the gun removes the sling
+ new /obj/item/stack/cable_coil(get_turf(src), 10)
+ slung = FALSE
+ update_icon()
+ lefthand_file = 'icons/mob/inhands/weapons/64x_guns_left.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/64x_guns_right.dmi'
/obj/item/gun/ballistic/shotgun/doublebarrel/hook
name = "hook modified sawn-off shotgun"