From 1836d0106a9bbef895cbf96236a641aa512cf368 Mon Sep 17 00:00:00 2001 From: The0bserver Date: Wed, 13 Jan 2021 21:42:08 -0500 Subject: [PATCH 1/8] Initial Commit:Goodbye rifle! You won't be missed! --- .../datums/components/crafting/guncrafting.dm | 41 +------ .../recipes/recipes_weapon_and_ammo.dm | 58 +-------- code/game/gamemodes/gangs/gang_items.dm | 2 +- .../projectiles/guns/ballistic/revolver.dm | 113 ----------------- .../projectiles/guns/ballistic/shotgun.dm | 116 ++++++++++++++---- 5 files changed, 100 insertions(+), 230 deletions(-) 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" From 2b8b9086ec647df685267183c625352e03836aaa Mon Sep 17 00:00:00 2001 From: The0bserver Date: Wed, 13 Jan 2021 21:42:08 -0500 Subject: [PATCH 2/8] Revert "Initial Commit:Goodbye rifle! You won't be missed!" This reverts commit 1836d0106a9bbef895cbf96236a641aa512cf368. --- .../datums/components/crafting/guncrafting.dm | 41 ++++++- .../recipes/recipes_weapon_and_ammo.dm | 58 ++++++++- code/game/gamemodes/gangs/gang_items.dm | 2 +- .../projectiles/guns/ballistic/revolver.dm | 113 +++++++++++++++++ .../projectiles/guns/ballistic/shotgun.dm | 116 ++++-------------- 5 files changed, 230 insertions(+), 100 deletions(-) diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index 94f48f4ea0..deab5e9b69 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -8,16 +8,45 @@ 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 2dd42debf7..6786f0c0f7 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -296,16 +296,31 @@ /datum/crafting_recipe/ishotgun name = "Improvised Shotgun" - result = /obj/item/gun/ballistic/shotgun/doublebarrel/improvised - reqs = list(/obj/item/weaponcrafting/receiver = 1, - /obj/item/pipe = 1, + 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, /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// @@ -430,6 +445,41 @@ 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 1d70a33cd2..7d6ecd00f6 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/shotgun/doublebarrel/improvised/sawn + item_path = /obj/item/gun/ballistic/revolver/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 b01141aa5c..37b23402f1 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -273,6 +273,119 @@ 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 1a2c11fbd5..7b3ac36ef6 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -122,6 +122,16 @@ 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) @@ -142,6 +152,22 @@ . = ..() . += "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." @@ -292,95 +318,7 @@ pump() return TRUE -///////////////////////////// -// 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' +// DOUBLE BARRELED SHOTGUN and IMPROVISED SHOTGUN are in revolver.dm /obj/item/gun/ballistic/shotgun/doublebarrel/hook name = "hook modified sawn-off shotgun" From 55cd69746d3d7564d9702c211eb86b3745729dd1 Mon Sep 17 00:00:00 2001 From: The0bserver Date: Wed, 13 Jan 2021 23:08:05 -0500 Subject: [PATCH 3/8] A change in tact, perhaps? --- .../datums/components/crafting/guncrafting.dm | 43 +------- .../recipes/recipes_weapon_and_ammo.dm | 18 +--- code/game/gamemodes/gangs/gang_items.dm | 2 +- .../projectiles/guns/ballistic/revolver.dm | 100 ------------------ .../projectiles/guns/ballistic/shotgun.dm | 100 +++++++++++++++++- 5 files changed, 106 insertions(+), 157 deletions(-) diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index deab5e9b69..7185974d1c 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -1,6 +1,11 @@ // PARTS // /obj/item/weaponcrafting icon = 'icons/obj/improvised.dmi' +/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/stock name = "rifle stock" @@ -12,41 +17,3 @@ 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..e0e07490f7 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -298,29 +298,13 @@ 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, /obj/item/weaponcrafting/stock = 1, /obj/item/stack/packageWrap = 5) tools = list(TOOL_SCREWDRIVER) time = 100 category = CAT_WEAPONRY subcategory = CAT_WEAPON +//the Improvised Rifle will not be missed. Rest in Pieces 2019-2021 ////////////////// ///AMMO 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..2cbd4f21f6 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -273,106 +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 diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 7b3ac36ef6..f3f5155217 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -318,7 +318,105 @@ 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" + 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/shotgun/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/shotgun/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/shotgun/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/shotgun/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/shotgun/doublebarrel/improvised/update_overlays() + . = ..() + if(slung) + . += "[icon_state]sling" + +/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 = 0 + update_icon() + +/obj/item/gun/ballistic/shotgun/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/shotgun/doublebarrel/hook name = "hook modified sawn-off shotgun" From ffe401544c359d55ecd9397e27120139989160cb Mon Sep 17 00:00:00 2001 From: The0bserver Date: Wed, 13 Jan 2021 23:35:37 -0500 Subject: [PATCH 4/8] First wave of fixing --- code/_globalvars/lists/maintenance_loot.dm | 2 +- code/datums/components/crafting/guncrafting.dm | 1 + code/game/objects/items/stacks/sheets/sheet_types.dm | 1 - code/modules/holiday/halloween/bartholomew.dm | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 694e913d53..b41b7356a8 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -89,7 +89,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/effect/spawner/lootdrop/welder_tools = 3, /obj/effect/spawner/lootdrop/low_tools = 5, /obj/item/relic = 3, - /obj/item/weaponcrafting/improvised_parts/shotgun_receiver = 2, + /obj/item/weaponcrafting/receiver = 2, /obj/item/clothing/head/cone = 2, /obj/item/grenade/smokebomb = 2, /obj/item/geiger_counter = 3, diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm index 7185974d1c..33db660c54 100644 --- a/code/datums/components/crafting/guncrafting.dm +++ b/code/datums/components/crafting/guncrafting.dm @@ -1,6 +1,7 @@ // PARTS // /obj/item/weaponcrafting icon = 'icons/obj/improvised.dmi' + /obj/item/weaponcrafting/receiver name = "modular receiver" desc = "A prototype modular receiver and trigger assembly for a firearm." diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 9f126f492b..4c1cc0c1cf 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -246,7 +246,6 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new /datum/stack_recipe("pew (right)", /obj/structure/chair/pew/right, 3, one_per_turf = TRUE, on_floor = TRUE),\ )), null, \ - new/datum/stack_recipe("wooden firearm body", /obj/item/weaponcrafting/improvised_parts/wooden_body, 10, time = 20), \ new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 20), \ new/datum/stack_recipe("rolling pin", /obj/item/kitchen/rollingpin, 2, time = 30), \ new/datum/stack_recipe("wooden bucket", /obj/item/reagent_containers/glass/bucket/wood, 2, time = 30), \ diff --git a/code/modules/holiday/halloween/bartholomew.dm b/code/modules/holiday/halloween/bartholomew.dm index 117e03c357..31cfb1f26a 100644 --- a/code/modules/holiday/halloween/bartholomew.dm +++ b/code/modules/holiday/halloween/bartholomew.dm @@ -117,7 +117,7 @@ /obj/item/weldingtool = 3, /obj/item/wirecutters = 2, /obj/item/wrench = 4, - /obj/item/weaponcrafting/improvised_parts/shotgun_receiver = 1, + /obj/item/weaponcrafting/receiver = 1, /obj/item/geiger_counter = 3, /obj/item/reagent_containers/food/snacks/grown/citrus/orange = 5, /obj/item/assembly/infra = 1, From d957c1d105e6ac712b390aa151188af378c9c520 Mon Sep 17 00:00:00 2001 From: The0bserver Date: Thu, 14 Jan 2021 00:02:32 -0500 Subject: [PATCH 5/8] another tweak --- .../components/crafting/recipes/recipes_weapon_and_ammo.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 e0e07490f7..1bf66a501c 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -296,8 +296,8 @@ /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 + result = /obj/item/gun/ballistic/shotgun/doublebarrel/improvised + reqs = list(/obj/item/pipe = 1, /obj/item/weaponcrafting/stock = 1, /obj/item/stack/packageWrap = 5) tools = list(TOOL_SCREWDRIVER) From 1b469bdfda7c8a8e597a68cfb8677a1794db0d4f Mon Sep 17 00:00:00 2001 From: The0bserver Date: Thu, 14 Jan 2021 01:03:48 -0500 Subject: [PATCH 6/8] The power of overwriting... --- .../recipes/recipes_weapon_and_ammo.dm | 2 +- .../game/objects/effects/spawners/lootdrop.dm | 9 +- .../projectiles/guns/ballistic/revolver.dm | 99 +++++++++++++++++ .../projectiles/guns/ballistic/shotgun.dm | 100 +----------------- .../autolathe_designs_sec_and_hacked.dm | 8 +- .../autolathe_designs_tcomms_and_misc.dm | 7 -- 6 files changed, 109 insertions(+), 116 deletions(-) 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 1bf66a501c..9b258633e0 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -296,7 +296,7 @@ /datum/crafting_recipe/ishotgun name = "Improvised Shotgun" - result = /obj/item/gun/ballistic/shotgun/doublebarrel/improvised + result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised reqs = list(/obj/item/pipe = 1, /obj/item/weaponcrafting/stock = 1, /obj/item/stack/packageWrap = 5) diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index bacbf3c388..5a0e1790a9 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -664,9 +664,8 @@ lootcount = 1 spawn_on_turf = FALSE loot = list("" = 50, - /obj/item/weaponcrafting/improvised_parts/rifle_receiver = 13, - /obj/item/weaponcrafting/improvised_parts/shotgun_receiver = 13, - /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 12, + /obj/item/weaponcrafting/receiver = 25, + /obj/item/weaponcrafting/stock = 25, ) /obj/effect/spawner/lootdrop/weapon_parts @@ -674,8 +673,8 @@ lootcount = 1 spawn_on_turf = FALSE loot = list("" = 80, - /obj/item/weaponcrafting/improvised_parts/rifle_receiver = 5, - /obj/item/weaponcrafting/improvised_parts/trigger_assembly = 5, + /obj/item/weaponcrafting/receiver = 5, + /obj/item/weaponcrafting/stock = 5, ) /obj/effect/spawner/lootdrop/ammo diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 2cbd4f21f6..3e564a9ace 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -273,6 +273,105 @@ 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 diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index f3f5155217..796e544603 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -318,105 +318,7 @@ pump() return TRUE -///////////////////////////// -// DOUBLE BARRELED SHOTGUN // -///////////////////////////// - -/obj/item/gun/ballistic/shotgun/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/shotgun/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/shotgun/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/shotgun/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/shotgun/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/shotgun/doublebarrel/improvised/update_overlays() - . = ..() - if(slung) - . += "[icon_state]sling" - -/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 = 0 - update_icon() - -/obj/item/gun/ballistic/shotgun/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 +//due to code weirdness, and the fact that a refactor is coming soon anyway, the barman's shotgun and maint shotgun are in revolver.dm /obj/item/gun/ballistic/shotgun/doublebarrel/hook name = "hook modified sawn-off shotgun" diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm index 61d0594d3b..bf9d5886a0 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_sec_and_hacked.dm @@ -74,12 +74,12 @@ build_path = /obj/item/restraints/handcuffs category = list("hacked", "Security") -/datum/design/rifle_receiver - name = "Rifle Receiver" - id = "rifle_receiver" +/datum/design/reciever + name = "Modular Receiver" + id = "modular_receiver" build_type = AUTOLATHE materials = list(/datum/material/iron = 24000) - build_path = /obj/item/weaponcrafting/improvised_parts/rifle_receiver + build_path = /obj/item/weaponcrafting/receiver category = list("hacked", "Security") /datum/design/shotgun_slug diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm index 539232bbcd..1b1c710e8c 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm @@ -282,10 +282,3 @@ build_path = /obj/item/vending_refill/custom category = list("initial", "Misc") -/datum/design/trigger_assembly - name = "Trigger Assembly" - id = "trigger_assembly" - build_type = AUTOLATHE - materials = list(/datum/material/iron = 6500, /datum/material/glass = 50) - build_path = /obj/item/weaponcrafting/improvised_parts/trigger_assembly - category = list("initial", "Misc") From e01c57c832219fe6c2cc3a44a74e0c98ef7b719d Mon Sep 17 00:00:00 2001 From: The0bserver Date: Thu, 14 Jan 2021 01:12:53 -0500 Subject: [PATCH 7/8] Show me the opposite of funny! --- .../recipes/recipes_weapon_and_ammo.dm | 32 ------------------- code/game/gamemodes/gangs/gang_items.dm | 2 +- 2 files changed, 1 insertion(+), 33 deletions(-) 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 9b258633e0..3b37151363 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -433,38 +433,6 @@ // 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 /datum/crafting_recipe/bokken_blade diff --git a/code/game/gamemodes/gangs/gang_items.dm b/code/game/gamemodes/gangs/gang_items.dm index 1d70a33cd2..7d6ecd00f6 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/shotgun/doublebarrel/improvised/sawn + item_path = /obj/item/gun/ballistic/revolver/doublebarrel/improvised/sawn /datum/gang_item/weapon/ammo/improvised_ammo name = "Box of Buckshot" From b91df1403e5bf93009335390147eea7fa1a8d300 Mon Sep 17 00:00:00 2001 From: The0bserver Date: Thu, 14 Jan 2021 01:31:58 -0500 Subject: [PATCH 8/8] The lack of recevier. It is the opposite of funny! --- .../components/crafting/recipes/recipes_weapon_and_ammo.dm | 1 + 1 file changed, 1 insertion(+) 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 3b37151363..0135cab77f 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -298,6 +298,7 @@ name = "Improvised Shotgun" result = /obj/item/gun/ballistic/revolver/doublebarrel/improvised reqs = list(/obj/item/pipe = 1, + /obj/item/weaponcrafting/receiver = 1, /obj/item/weaponcrafting/stock = 1, /obj/item/stack/packageWrap = 5) tools = list(TOOL_SCREWDRIVER)