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")