diff --git a/code/__DEFINES/projectiles.dm b/code/__DEFINES/projectiles.dm index ae61c5e50b7..ed4c66b799c 100644 --- a/code/__DEFINES/projectiles.dm +++ b/code/__DEFINES/projectiles.dm @@ -53,13 +53,11 @@ /// The caliber used by the harpoon gun. #define CALIBER_HARPOON "harpoon" /// The caliber used by the rebar crossbow. -#define CALIBER_REBAR "sharpened iron rod" +#define CALIBER_REBAR "sharpened rod" /// The caliber used by the rebar crossbow when forced to hold 2 rods. -#define CALIBER_REBAR_FORCED "sharpened iron rod" +#define CALIBER_REBAR_FORCED "sharpened rod" /// The caliber used by the syndicate rebar crossbow. -#define CALIBER_REBAR_SYNDIE "jagged iron rod" -/// The caliber used by the syndicate rebar crossbow. -#define CALIBER_REBAR_SYNDIE_NORMAL "sharpened iron rod" +#define CALIBER_REBAR_SYNDIE "sharpened rod" /// The caliber used by the meat hook. #define CALIBER_HOOK "hook" /// The caliber used by the changeling tentacle mutation. diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm index e7971488d63..7e7b7aca26f 100644 --- a/code/datums/components/crafting/equipment.dm +++ b/code/datums/components/crafting/equipment.dm @@ -249,3 +249,14 @@ tool_paths = list(/obj/item/bikehorn) time = 40 SECONDS category = CAT_EQUIPMENT + +/datum/crafting_recipe/rebar_quiver + name = "Rebar Storage Quiver" + result = /obj/item/storage/bag/rebar_quiver + time = 10 + reqs = list( + /obj/item/tank/internals/oxygen = 1, + /obj/item/stack/cable_coil = 15, + ) + category = CAT_EQUIPMENT + tool_behaviors = list(TOOL_WELDER, TOOL_WIRECUTTER) diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm index 88b721d3cb6..b646c4472ed 100644 --- a/code/datums/components/crafting/ranged_weapon.dm +++ b/code/datums/components/crafting/ranged_weapon.dm @@ -225,7 +225,7 @@ /datum/crafting_recipe/rebarxbowforced name = "Forced Rebar Crossbow" - desc = "Get an extra shot in your crossbow... for a chance of shooting yourself when you fire it." + desc = "A much quicker reload... for a chance of shooting yourself when you fire it." result = /obj/item/gun/ballistic/rifle/rebarxbow/forced reqs = list( /obj/item/gun/ballistic/rifle/rebarxbow = 1, diff --git a/code/datums/components/crafting/weapon_ammo.dm b/code/datums/components/crafting/weapon_ammo.dm index 32f34f2ae75..f68ff58072c 100644 --- a/code/datums/components/crafting/weapon_ammo.dm +++ b/code/datums/components/crafting/weapon_ammo.dm @@ -12,6 +12,15 @@ time = 0.5 SECONDS category = CAT_WEAPON_AMMO +/datum/crafting_recipe/paperball + name = "Paper Ball" + result = /obj/item/ammo_casing/rebar/paperball + reqs = list( + /obj/item/paper = 1, + ) + time = 0.1 SECONDS + category = CAT_WEAPON_AMMO + /datum/crafting_recipe/rebarsyndie name = "jagged iron rod" result = /obj/item/ammo_casing/rebar/syndie @@ -19,10 +28,20 @@ /obj/item/stack/rods = 1, ) tool_behaviors = list(TOOL_WIRECUTTER) - time = 0.5 SECONDS + time = 0.1 SECONDS category = CAT_WEAPON_AMMO crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED +/datum/crafting_recipe/healium_bolt + name = "healium crystal crossbow bolt" + result = /obj/item/ammo_casing/rebar/healium + reqs = list( + /obj/item/grenade/gas_crystal/healium_crystal = 1 + ) + time = 0.1 SECONDS + category = CAT_WEAPON_AMMO + crafting_flags = CRAFT_CHECK_DENSITY + /datum/crafting_recipe/pulseslug name = "Pulse Slug Shell" result = /obj/item/ammo_casing/shotgun/pulseslug diff --git a/code/game/objects/items/granters/crafting/rebarxbowsyndie.dm b/code/game/objects/items/granters/crafting/rebarxbowsyndie.dm index fd38d4f4ccb..04cee4e18a7 100644 --- a/code/game/objects/items/granters/crafting/rebarxbowsyndie.dm +++ b/code/game/objects/items/granters/crafting/rebarxbowsyndie.dm @@ -1,5 +1,5 @@ /obj/item/book/granter/crafting_recipe/dusting/rebarxbowsyndie_ammo - name = "SYNDICATE REBAR CROSSBOW OWNERS MANUAL" + name = "SYNDICATE REBAR CROSSBOW AMMO CRAFTING MANUAL" desc = "This book will self destruct upon being read a second time." crafting_recipe_types = list( /datum/crafting_recipe/rebarsyndie diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index f6e7d797fd9..2d89fbc5c9c 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -473,6 +473,7 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list( new /datum/stack_recipe("ancient armor", /obj/item/clothing/suit/armor/elder_atmosian, req_amount = 5, res_amount = 1, crafting_flags = NONE, category = CAT_CLOTHING), new /datum/stack_recipe("ancient helmet", /obj/item/clothing/head/helmet/elder_atmosian, req_amount = 3, res_amount = 1, crafting_flags = NONE, category = CAT_CLOTHING), new /datum/stack_recipe("metallic hydrogen axe", /obj/item/fireaxe/metal_h2_axe, req_amount = 15, res_amount = 1, crafting_flags = NONE, category = CAT_WEAPON_MELEE), + new /datum/stack_recipe("metallic hydrogen bolts", /obj/item/ammo_casing/rebar/hydrogen, req_amount = 1, res_amount = 1, crafting_flags = NONE, category = CAT_WEAPON_AMMO), )) /obj/item/stack/sheet/mineral/metal_hydrogen @@ -491,6 +492,12 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list( . = ..() . += GLOB.metalhydrogen_recipes + + +GLOBAL_LIST_INIT(zaukerite_recipes, list( + new /datum/stack_recipe("zaukerite shard", /obj/item/ammo_casing/rebar/zaukerite, req_amount=1, res_amount=1, category = CAT_WEAPON_AMMO), + )) + /obj/item/stack/sheet/mineral/zaukerite name = "zaukerite" icon_state = "zaukerite" @@ -501,3 +508,7 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list( mats_per_unit = list(/datum/material/zaukerite = SHEET_MATERIAL_AMOUNT) merge_type = /obj/item/stack/sheet/mineral/zaukerite material_type = /datum/material/zaukerite + +/obj/item/stack/sheet/mineral/zaukerite/get_main_recipes() + . = ..() + . += GLOB.zaukerite_recipes diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 9af23545c6f..28caa290a9c 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -573,4 +573,28 @@ for(var/i in 1 to 40) new /obj/item/ammo_casing/harpoon(src) +/obj/item/storage/bag/rebar_quiver + name = "Rebar Storage Quiver" + icon = 'icons/obj/weapons/bows/quivers.dmi' + icon_state = "rebar_quiver" + worn_icon_state = "rebar_quiver" + inhand_icon_state = "rebar_quiver" + desc = "A oxygen tank cut in half, used for holding sharpened rods for the rebar crossbow." + slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_SUITSTORE + resistance_flags = FLAMMABLE + +/obj/item/storage/bag/rebar_quiver/Initialize(mapload) + . = ..() + atom_storage.max_specific_storage = WEIGHT_CLASS_TINY + atom_storage.max_slots = 10 + atom_storage.max_total_storage = 15 + atom_storage.set_holdable(list( + /obj/item/ammo_casing/rebar, + /obj/item/ammo_casing/rebar/syndie, + /obj/item/ammo_casing/rebar/healium, + /obj/item/ammo_casing/rebar/hydrogen, + /obj/item/ammo_casing/rebar/zaukerite, + /obj/item/ammo_casing/rebar/paperball, + )) + #undef ORE_BAG_BALOON_COOLDOWN diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 7bd00901614..3a4ce82d85e 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -341,7 +341,7 @@ /obj/item/storage/box/syndie_kit/rebarxbowsyndie name = "Boxed Rebar Crossbow" - desc = "Now features instruction manual for making ammo." + desc = "A scoped weapon with low armor penetration, but devestating against flesh. Features instruction manual for making specialty ammo." /obj/item/storage/box/syndie_kit/rebarxbowsyndie/PopulateContents() new /obj/item/book/granter/crafting_recipe/dusting/rebarxbowsyndie_ammo(src) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index fe6fce092a4..bc091aaeb66 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -180,6 +180,8 @@ /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/gun/ballistic/rifle/boltaction/pipegun, + /obj/item/storage/bag/rebar_quiver, + /obj/item/gun/ballistic/rifle/rebarxbow, ) resistance_flags = NONE species_exception = list(/datum/species/golem) @@ -426,6 +428,9 @@ /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/extinguisher, + /obj/item/construction/rtd, + /obj/item/gun/ballistic/rifle/rebarxbow, + /obj/item/storage/bag/rebar_quiver, ) /datum/armor/atmos_overalls diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index 05b9c612a7b..02c3399db7b 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -521,7 +521,8 @@ /obj/item/t_scanner, /obj/item/construction/rld, /obj/item/construction/rtd, - /obj/item/gun/ballistic/rifle/rebarxbow + /obj/item/gun/ballistic/rifle/rebarxbow, + /obj/item/storage/bag/rebar_quiver, ) armor_type = /datum/armor/wintercoat_engineering hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index 8e06a0e10b5..3a7c3fcb59d 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -51,13 +51,61 @@ projectile_type = /obj/projectile/bullet/shotgun_beanbag/a40mm /obj/item/ammo_casing/rebar - name = "sharpened iron rod" + name = "Sharpened Iron Rod" desc = "A Sharpened Iron rod. It's Pointy!" caliber = CALIBER_REBAR icon_state = "rod_sharp" base_icon_state = "rod_sharp" projectile_type = /obj/projectile/bullet/rebar +/obj/item/ammo_casing/rebar/syndie + name = "Jagged Iron Rod" + desc = "An Iron rod, with notches cut into it. You really dont want this stuck in you." + caliber = CALIBER_REBAR + icon_state = "rod_jagged" + base_icon_state = "rod_jagged" + projectile_type = /obj/projectile/bullet/rebar/syndie + +/obj/item/ammo_casing/rebar/zaukerite + name = "Zaukerite Sliver" + desc = "A sliver of a zaukerite crystal. Due to its irregular, jagged edges, removal of an embedded zaukerite sliver should only be done by trained surgeons." + caliber = CALIBER_REBAR + icon_state = "rod_zaukerite" + base_icon_state = "rod_zaukerite" + projectile_type = /obj/projectile/bullet/rebar/zaukerite + +/obj/item/ammo_casing/rebar/hydrogen + name = "Metallic Hydrogen Bolt" + desc = "An ultra-sharp rod made from pure metallic hydrogen. Armor may as well not exist." + caliber = CALIBER_REBAR + icon_state = "rod_hydrogen" + base_icon_state = "rod_hydrogen" + projectile_type = /obj/projectile/bullet/rebar/hydrogen + +/obj/item/ammo_casing/rebar/healium + name = "Healium Crystal Bolt" + desc = "Who needs a syringe gun, anyway?" + caliber = CALIBER_REBAR + icon_state = "rod_healium" + base_icon_state = "rod_healium" + projectile_type = /obj/projectile/bullet/rebar/healium + +/obj/item/ammo_casing/rebar/supermatter + name = "Supermatter Bolt" + desc = "Wait, how is the bow capable of firing this without dusting?" + caliber = CALIBER_REBAR + icon_state = "rod_supermatter" + base_icon_state = "rod_supermatter" + projectile_type = /obj/projectile/bullet/rebar/supermatter + +/obj/item/ammo_casing/rebar/paperball + name = "Paper Ball" + desc = "Doink!" + caliber = CALIBER_REBAR + icon_state = "paperball" + base_icon_state = "paperball" + projectile_type = /obj/projectile/bullet/paperball + /obj/item/ammo_casing/rebar/Initialize(mapload) . = ..() AddElement(/datum/element/caseless, TRUE) @@ -66,10 +114,3 @@ . = ..() icon_state = "[base_icon_state]" -/obj/item/ammo_casing/rebar/syndie - name = "Jagged iron rod" - desc = "An Iron rod, with notches cut into it. You really dont want this stuck in you." - caliber = CALIBER_REBAR_SYNDIE - icon_state = "rod_jagged" - base_icon_state = "rod_jagged" - projectile_type = /obj/projectile/bullet/rebarsyndie diff --git a/code/modules/projectiles/boxes_magazines/internal/rifle.dm b/code/modules/projectiles/boxes_magazines/internal/rifle.dm index 52d395725a1..8c6abaa0e77 100644 --- a/code/modules/projectiles/boxes_magazines/internal/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/internal/rifle.dm @@ -54,8 +54,5 @@ /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie max_ammo = 3 caliber = CALIBER_REBAR_SYNDIE - ammo_type = /obj/item/ammo_casing/rebar/syndie - -/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie/normal - caliber = CALIBER_REBAR_SYNDIE_NORMAL ammo_type = /obj/item/ammo_casing/rebar + diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index e50d5ce464c..a8161ddb396 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -173,7 +173,8 @@ /obj/item/gun/ballistic/rifle/rebarxbow name = "Heated Rebar Crossbow" desc = "Made from an inducer, iron rods, and some wire, this crossbow fires sharpened iron rods, made from the plentiful iron rods found stationwide. \ - Only holds one rod in the magazine - you can craft the crossbow with a crowbar to try and force a second rod in, but risks a misfire, or worse..." + Additionally, can fire specialty ammo made from the materials in the atmos crystalizer - zaukerite, metallic hydrogen, and healium crytals all work. \ + Very slow to reload - you can craft the crossbow with a crowbar to try loosen the crossbar, but risks a misfire, or worse..." icon = 'icons/obj/weapons/guns/ballistic.dmi' icon_state = "rebarxbow" inhand_icon_state = "rebarxbow" @@ -194,7 +195,7 @@ weapon_weight = WEAPON_HEAVY initial_caliber = CALIBER_REBAR accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/normal - fire_sound = 'sound/items/syringeproj.ogg' + fire_sound = 'sound/items/xbow_lock.ogg' can_be_sawn_off = FALSE tac_reloads = FALSE var/draw_time = 3 SECONDS @@ -234,24 +235,22 @@ /obj/item/gun/ballistic/rifle/rebarxbow/forced name = "Stressed Rebar Crossbow" - desc = "Some idiot decided that they would risk shooting themselves in the face if it meant they could have a bit more ammo in this crossbow. Hopefully, it was worth it." + desc = "Some idiot decided that they would risk shooting themselves in the face if it meant they could have a draw this crossbow a bit faster. Hopefully, it was worth it." // Feel free to add a recipe to allow you to change it back if you would like, I just wasn't sure if you could have two recipes for the same thing. can_misfire = TRUE + draw_time = 1.5 misfire_probability = 25 accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/force /obj/item/gun/ballistic/rifle/rebarxbow/syndie name = "Syndicate Rebar Crossbow" desc = "The syndicate liked the bootleg rebar crossbow NT engineers made, so they showed what it could be if properly developed. \ - Holds three shots without a chance of exploding, and features a built in scope. Normally uses special syndicate jagged iron bars, but can be wrenched to shoot inferior normal ones." + Holds three shots without a chance of exploding, and features a built in scope. Compatable with all known crossbow ammunition." icon_state = "rebarxbowsyndie" inhand_icon_state = "rebarxbowsyndie" worn_icon_state = "rebarxbowsyndie" w_class = WEIGHT_CLASS_NORMAL - can_modify_ammo = TRUE - initial_caliber = CALIBER_REBAR_SYNDIE - alternative_caliber = CALIBER_REBAR_SYNDIE_NORMAL - alternative_ammo_misfires = FALSE + initial_caliber = CALIBER_REBAR draw_time = 1 accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index d76b2de9d6a..e38d7f67496 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -58,20 +58,120 @@ armour_penetration = 10 wound_bonus = -20 bare_wound_bonus = 20 - embedding = list(embed_chance=60, fall_chance=2, jostle_chance=2, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=3, jostle_pain_mult=2, rip_time=10) + embedding = list("embed_chance" = 60, "fall_chance" = 2, "jostle_chance" = 2, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.4, "pain_mult" = 4, "jostle_pain_mult" = 2, "rip_time" = 10) embed_falloff_tile = -5 wound_falloff_tile = -2 - shrapnel_type = /obj/item/stack/rods + shrapnel_type = /obj/item/ammo_casing/rebar -/obj/projectile/bullet/rebarsyndie +/obj/projectile/bullet/rebar/proc/handle_drop(datum/source, obj/item/ammo_casing/rebar/newcasing) + +/obj/projectile/bullet/rebar/syndie name = "rebar" icon_state = "rebar" - damage = 35 + damage = 55 speed = 0.4 dismemberment = 2 //It's a budget sniper rifle. armour_penetration = 20 //A bit better versus armor. Gets past anti laser armor or a vest, but doesnt wound proc on sec armor. wound_bonus = 10 - bare_wound_bonus = 10 - embedding = list(embed_chance=80, fall_chance=1, jostle_chance=3, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=3, jostle_pain_mult=2, rip_time=14) + bare_wound_bonus = 20 + embedding = list("embed_chance" = 80, "fall_chance" = 1, "jostle_chance" = 3, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.4, "pain_mult" = 3, "jostle_pain_mult" = 2, "rip_time" = 14) embed_falloff_tile = -3 - shrapnel_type = /obj/item/stack/rods + shrapnel_type = /obj/item/ammo_casing/rebar/syndie + +/obj/projectile/bullet/rebar/zaukerite + name = "zaukerite shard" + icon_state = "rebar_zaukerite" + damage = 60 + speed = 0.6 + dismemberment = 10 + damage_type = TOX + eyeblur = 5 + armour_penetration = 20 // not nearly as good, as its not as sharp. + wound_bonus = 10 + bare_wound_bonus = 40 + embedding = list("embed_chance" =100, "fall_chance" = 0, "jostle_chance" = 5, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.8, "pain_mult" = 6, "jostle_pain_mult" = 2, "rip_time" = 30) + embed_falloff_tile = 0 // very spiky. + shrapnel_type = /obj/item/ammo_casing/rebar/zaukerite + +/obj/projectile/bullet/rebar/hydrogen + name = "metallic hydrogen bolt" + icon_state = "rebar_hydrogen" + damage = 40 + speed = 0.6 + dismemberment = 0 //goes through clean. + damage_type = BRUTE + armour_penetration = 30 //very pointy. + projectile_piercing = PASSMOB //felt this might have been a nice compromise for the lower damage for the difficulty of getting it + wound_bonus = -15 + bare_wound_bonus = 10 + embedding = list("embed_chance" = 50, "fall_chance" = 2, "jostle_chance" = 3, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.6, "pain_mult" = 4, "jostle_pain_mult" = 2, "rip_time" =18) + embed_falloff_tile = -3 + shrapnel_type = /obj/item/ammo_casing/rebar/hydrogen + +/obj/projectile/bullet/rebar/healium + name = "healium bolt" + icon_state = "rebar_healium" + damage = 0 + speed = 0.4 + dismemberment = 0 + damage_type = BRUTE + armour_penetration = 100 + wound_bonus = -100 + bare_wound_bonus = -100 + embedding = list(embed_chance = 0) + embed_falloff_tile = -3 + shrapnel_type = /obj/item/ammo_casing/rebar/healium + +/obj/projectile/bullet/rebar/healium/on_hit(atom/target, blocked = 0, pierce_hit) + . = ..() + if(!isliving(target)) + return BULLET_ACT_HIT + var/mob/living/breather = target + breather.SetSleeping(3 SECONDS) + breather.adjustFireLoss(-30, updating_health = TRUE, required_bodytype = BODYTYPE_ORGANIC) + breather.adjustToxLoss(-30, updating_health = TRUE, required_biotype = BODYTYPE_ORGANIC) + breather.adjustBruteLoss(-30, updating_health = TRUE, required_bodytype = BODYTYPE_ORGANIC) + breather.adjustOxyLoss(-30, updating_health = TRUE, required_biotype = BODYTYPE_ORGANIC, required_respiration_type = ALL) + + return BULLET_ACT_HIT + + +/obj/projectile/bullet/rebar/supermatter + name = "supermatter bolt" + icon_state = "rebar_supermatter" + damage = 0 + speed = 0.4 + dismemberment = 0 + damage_type = TOX + armour_penetration = 100 + shrapnel_type = /obj/item/ammo_casing/rebar/supermatter + +/obj/projectile/bullet/rebar/supermatter/on_hit(atom/target, blocked = 0, pierce_hit) + . = ..() + if(isliving(target)) + var/mob/living/victim = target + victim.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS) + dust_feedback(target) + victim.dust() + + else if(!isturf(target)&& !isliving(target)) + dust_feedback(target) + qdel(target) + + return BULLET_ACT_HIT + + +/obj/projectile/bullet/rebar/supermatter/proc/dust_feedback(atom/target) + playsound(get_turf(src), 'sound/effects/supermatter.ogg', 10, TRUE) + visible_message(span_danger("[target] is hit by [src], turning [target.p_them()] to dust in a brilliant flash of light!")) + +/obj/projectile/bullet/paperball + desc = "Doink!" + damage = 1 // It's a damn toy. + range = 10 + shrapnel_type = null + embedding = null + name = "paper ball" + desc = "doink!" + damage_type = BRUTE + icon_state = "paperball" diff --git a/code/modules/uplink/uplink_items/job.dm b/code/modules/uplink/uplink_items/job.dm index df4f235f50c..40e0092d434 100644 --- a/code/modules/uplink/uplink_items/job.dm +++ b/code/modules/uplink/uplink_items/job.dm @@ -151,7 +151,7 @@ desc = "A much more proffessional version of the engineer's bootleg rebar crossbow. 3 shot mag, quicker loading, and better ammo. Owners manual included." item = /obj/item/storage/box/syndie_kit/rebarxbowsyndie cost = 10 - restricted_roles = list(JOB_STATION_ENGINEER, JOB_CHIEF_ENGINEER) + restricted_roles = list(JOB_STATION_ENGINEER, JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN) /datum/uplink_item/role_restricted/magillitis_serum name = "Magillitis Serum Autoinjector" diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index 4fc02eaa2c0..52be2d07923 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index a2347dc667a..967968b339b 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index bb2a425194b..beb3c84860d 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/weapons/bows/quivers.dmi b/icons/obj/weapons/bows/quivers.dmi index 74a7b4bc8bb..615f96ee6af 100644 Binary files a/icons/obj/weapons/bows/quivers.dmi and b/icons/obj/weapons/bows/quivers.dmi differ diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi index 62fb2e45114..7554749a7e4 100644 Binary files a/icons/obj/weapons/guns/ammo.dmi and b/icons/obj/weapons/guns/ammo.dmi differ diff --git a/icons/obj/weapons/guns/projectiles.dmi b/icons/obj/weapons/guns/projectiles.dmi index 120a4c12cd3..98a2e59dbc9 100644 Binary files a/icons/obj/weapons/guns/projectiles.dmi and b/icons/obj/weapons/guns/projectiles.dmi differ diff --git a/sound/items/xbow_lock.ogg b/sound/items/xbow_lock.ogg new file mode 100644 index 00000000000..d465a95ca05 Binary files /dev/null and b/sound/items/xbow_lock.ogg differ