[MIRROR] Adds engi improvised weapon - rebar crossbow + Engi Exclusive Tot Shop Variant [MDB IGNORE] (#24860)
* Adds engi improvised weapon - rebar crossbow + Engi Exclusive Tot Shop Variant (#78777) <!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request  Engi now has access to a Half Life 2 Inspired rebar crossbow! Made of rods, wire, and an inducer, it shoots sharpened iron rods at a high velocity. High damage and good embed chance, but requires you to reload every shot which requires you to stand still for three seconds to pull the string back. You can also Use a wrench on it to force it to store more rods (read: more than one), but risks it exploding and shooting you instead. The syndicate variant, avaliable to traitor engis, can fire three rounds before needing a reload, and features a scope and better armor piercing ammpo, but costs 10TC. I see it as a sidegrade to the revolver - quieter and has much more widespread ammuniton, but holds less ammo and doesnt have the same burst stopping power. And, to those concerned about the balance of a non-traitor with this item - the AP ammo can only be made by the traitor who bought it, and anyone else has to use normal ammo. GUN STAT JUNK Normal one has 60% embed chance and does 40 damage (against unarmored targetd), but requires you to wait at least 3 seconds not moving to pull the string back. Good alpha strike but not sustainable in a long fight. Its akin to a pipegun. Lacks any AP qualities besides piercing a jumpsuit, because any wound chance it has is due to a bare skin bonus. Generally not a great weapon to fight sec with. Syndie version is generally the above but better. Takes less to pull the string back, slightly higher damage, better fire rate, etc. Doesnt fare well against any armor thats equivalent to sec gear or better due to most having low (relatively) AP and wound chance, but good bare wound bonus. STATS TLDR: Its good against unarmored chumps and greyshirts but anyone in armor that protects against bullets will kick your teeth in. Also, Ammo is crafted from an iron rod. I wanted to have it just fire rods as is, but theyre stacked items which you cant define projectiles or ammo from. ## Why It's Good For The Game I've always felt engi, for as big of a department as it is, is lacking in the "fun weapons" area. Sci has mechs and xenobio, med has chem nades and syringe guns, and cargo has anything the QM will buy - but other than the flamer and shocked doors, engi doesnt have much. Thats why I made this pr. it was originally just a traitor item, as they lacked many traitor items in their shop, but I felt like a worse, bootleg version would suit them. ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 add: Enginenering rebar crossbows + tot kit add: Added a bunch of ammos and crafting junk to make the ammo exist image: added icond for all the above /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> --------- Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: Jacquerel <hnevard@ gmail.com> * Adds engi improvised weapon - rebar crossbow + Engi Exclusive Tot Shop Variant --------- Co-authored-by: KingkumaArt <69398298+KingkumaArt@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: Jacquerel <hnevard@ gmail.com>
@@ -52,6 +52,14 @@
|
||||
#define CALIBER_ARROW "arrow"
|
||||
/// The caliber used by the harpoon gun.
|
||||
#define CALIBER_HARPOON "harpoon"
|
||||
/// The caliber used by the rebar crossbow.
|
||||
#define CALIBER_REBAR "sharpened iron rod"
|
||||
/// The caliber used by the rebar crossbow when forced to hold 2 rods.
|
||||
#define CALIBER_REBAR_FORCED "sharpened iron 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"
|
||||
/// The caliber used by the meat hook.
|
||||
#define CALIBER_HOOK "hook"
|
||||
/// The caliber used by the changeling tentacle mutation.
|
||||
|
||||
@@ -206,6 +206,33 @@
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/rebarxbow
|
||||
name = "Heated Rebar Crossbow"
|
||||
result = /obj/item/gun/ballistic/rifle/rebarxbow
|
||||
reqs = list(
|
||||
/obj/item/stack/rods = 6,
|
||||
/obj/item/stack/cable_coil = 12,
|
||||
/obj/item/inducer = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_WELDER)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/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."
|
||||
result = /obj/item/gun/ballistic/rifle/rebarxbow/forced
|
||||
reqs = list(
|
||||
/obj/item/gun/ballistic/rifle/rebarxbow = 1,
|
||||
)
|
||||
blacklist = list(
|
||||
/obj/item/gun/ballistic/rifle/rebarxbow/forced,
|
||||
/obj/item/gun/ballistic/rifle/rebarxbow/syndie,
|
||||
)
|
||||
tool_behaviors = list(TOOL_CROWBAR)
|
||||
time = 1 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/pipegun_prime
|
||||
name = "Regal Pipegun"
|
||||
always_available = FALSE
|
||||
|
||||
@@ -12,6 +12,17 @@
|
||||
time = 0.5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
/datum/crafting_recipe/rebarsyndie
|
||||
name = "jagged iron rod"
|
||||
result = /obj/item/ammo_casing/rebar/syndie
|
||||
reqs = list(
|
||||
/obj/item/stack/rods = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_WIRECUTTER)
|
||||
time = 0.5 SECONDS
|
||||
always_available = FALSE
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
/datum/crafting_recipe/pulseslug
|
||||
name = "Pulse Slug Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/pulseslug
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
/obj/item/book/granter/crafting_recipe/dusting/rebarxbowsyndie_ammo
|
||||
name = "SYNDICATE REBAR CROSSBOW OWNERS MANUAL"
|
||||
desc = "This book will self destruct upon being read a second time."
|
||||
crafting_recipe_types = list(
|
||||
/datum/crafting_recipe/rebarsyndie
|
||||
)
|
||||
uses = 1
|
||||
remarks = list(
|
||||
"AIM FOR THE LEGS TO CRIPPLE YOUR FOES",
|
||||
"USE A ROD AND WIRECUTTERS TO MAKE BETTER AMMO",
|
||||
"BE AWARE OF THE SCOPE'S BLIND SPOTS",
|
||||
"READ THIS BOOK AGAIN TO DUST IT.",
|
||||
)
|
||||
@@ -12,8 +12,8 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
|
||||
new/datum/stack_recipe("catwalk floor tile", /obj/item/stack/tile/catwalk_tile, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("stairs frame", /obj/structure/stairs_frame, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("white cane", /obj/item/cane/white, 3, time = 1 SECONDS, one_per_turf = FALSE, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("sharpened iron rod", /obj/item/ammo_casing/rebar, 1, time = 0.2 SECONDS, one_per_turf = FALSE, category = CAT_WEAPON_AMMO), \
|
||||
))
|
||||
|
||||
/obj/item/stack/rods
|
||||
name = "iron rod"
|
||||
desc = "Some rods. Can be used for building or something."
|
||||
|
||||
@@ -340,6 +340,14 @@
|
||||
icon_state = "syndiebox"
|
||||
illustration = "writing_syndie"
|
||||
|
||||
/obj/item/storage/box/syndie_kit/rebarxbowsyndie
|
||||
name = "Boxed Rebar Crossbow"
|
||||
desc = "Now features instruction manual for making ammo."
|
||||
|
||||
/obj/item/storage/box/syndie_kit/rebarxbowsyndie/PopulateContents()
|
||||
new /obj/item/book/granter/crafting_recipe/dusting/rebarxbowsyndie_ammo(src)
|
||||
new /obj/item/gun/ballistic/rifle/rebarxbow/syndie(src)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/origami_bundle
|
||||
name = "origami kit"
|
||||
desc = "A box full of a number of rather masterfully engineered paper planes and a manual on \"The Art of Origami\"."
|
||||
|
||||
@@ -49,3 +49,27 @@
|
||||
name = "40mm rubber shell"
|
||||
desc = "A cased rubber slug. The big brother of the beanbag slug, this thing will knock someone out in one. Doesn't do so great against anyone in armor."
|
||||
projectile_type = /obj/projectile/bullet/shotgun_beanbag/a40mm
|
||||
|
||||
/obj/item/ammo_casing/rebar
|
||||
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/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/caseless, TRUE)
|
||||
|
||||
/obj/item/ammo_casing/rebar/update_icon_state()
|
||||
. = ..()
|
||||
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
|
||||
|
||||
@@ -28,3 +28,24 @@
|
||||
max_ammo = 1
|
||||
caliber = CALIBER_HARPOON
|
||||
ammo_type = /obj/item/ammo_casing/harpoon
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/normal
|
||||
name = "single round magazine"
|
||||
max_ammo = 1
|
||||
caliber = CALIBER_REBAR
|
||||
ammo_type = /obj/item/ammo_casing/rebar
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/force
|
||||
name = "two round magazine"
|
||||
max_ammo = 2
|
||||
caliber = CALIBER_REBAR_FORCED
|
||||
ammo_type = /obj/item/ammo_casing/rebar
|
||||
|
||||
/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
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
return
|
||||
drop_bolt(user)
|
||||
|
||||
|
||||
/obj/item/gun/ballistic/rifle/can_shoot()
|
||||
if (bolt_locked)
|
||||
return FALSE
|
||||
@@ -169,6 +170,90 @@
|
||||
if(.)
|
||||
name = "\improper Obrez Moderna" // wear it loud and proud
|
||||
|
||||
/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..."
|
||||
icon = 'icons/obj/weapons/guns/ballistic.dmi'
|
||||
icon_state = "rebarxbow"
|
||||
inhand_icon_state = "rebarxbow"
|
||||
worn_icon_state = "rebarxbow"
|
||||
rack_sound = 'sound/weapons/gun/sniper/rack.ogg'
|
||||
must_hold_to_load = FALSE
|
||||
mag_display = FALSE
|
||||
empty_indicator = TRUE
|
||||
bolt_type = BOLT_TYPE_LOCKING
|
||||
semi_auto = FALSE
|
||||
internal_magazine = TRUE
|
||||
can_modify_ammo = FALSE
|
||||
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_SUITSTORE
|
||||
bolt_wording = "bowstring"
|
||||
magazine_wording = "rod"
|
||||
cartridge_wording = "rod"
|
||||
misfire_probability = 25
|
||||
initial_caliber = CALIBER_REBAR
|
||||
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/normal
|
||||
fire_sound = 'sound/items/syringeproj.ogg'
|
||||
can_be_sawn_off = FALSE
|
||||
tac_reloads = FALSE
|
||||
var/draw_time = 3 SECONDS
|
||||
SET_BASE_PIXEL(0, 0)
|
||||
|
||||
/obj/item/gun/ballistic/rifle/rebarxbow/rack(mob/user = null)
|
||||
if (bolt_locked)
|
||||
drop_bolt(user)
|
||||
return
|
||||
balloon_alert(user, "bowstring loosened")
|
||||
playsound(src, rack_sound, rack_sound_volume, rack_sound_vary)
|
||||
handle_chamber(empty_chamber = FALSE, from_firing = FALSE, chamber_next_round = FALSE)
|
||||
bolt_locked = TRUE
|
||||
update_appearance()
|
||||
|
||||
/obj/item/gun/ballistic/rifle/rebarxbow/drop_bolt(mob/user = null)
|
||||
if(!do_after(user, draw_time, target = src))
|
||||
return
|
||||
playsound(src, bolt_drop_sound, bolt_drop_sound_volume, FALSE)
|
||||
balloon_alert(user, "bowstring drawn")
|
||||
chamber_round()
|
||||
bolt_locked = FALSE
|
||||
update_appearance()
|
||||
|
||||
/obj/item/gun/ballistic/rifle/rebarxbow/can_shoot()
|
||||
if (bolt_locked)
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/ballistic/rifle/rebarxbow/examine(mob/user)
|
||||
. = ..()
|
||||
. += "The crossbow is [bolt_locked ? "not ready" : "ready"] to fire."
|
||||
|
||||
/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."
|
||||
// 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
|
||||
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."
|
||||
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
|
||||
draw_time = 1
|
||||
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/rebarxbow/syndie
|
||||
|
||||
/obj/item/gun/ballistic/rifle/rebarxbow/syndie/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/scope, range_modifier = 2) //enough range to at least be useful for stealth
|
||||
|
||||
/obj/item/gun/ballistic/rifle/boltaction/pipegun
|
||||
name = "pipegun"
|
||||
desc = "An excellent weapon for flushing out tunnel rats and enemy assistants, but its rifling leaves much to be desired."
|
||||
|
||||
@@ -47,3 +47,32 @@
|
||||
embedding = list(embed_chance=100, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10)
|
||||
wound_falloff_tile = -5
|
||||
shrapnel_type = /obj/item/ammo_casing/harpoon
|
||||
|
||||
// Rebar (Rebar Crossbow)
|
||||
/obj/projectile/bullet/rebar
|
||||
name = "rebar"
|
||||
icon_state = "rebar"
|
||||
damage = 30
|
||||
speed = 0.4
|
||||
dismemberment = 1 //because a 1 in 100 chance to just blow someones arm off is enough to be cool but also not enough to be reliable
|
||||
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)
|
||||
embed_falloff_tile = -5
|
||||
wound_falloff_tile = -2
|
||||
shrapnel_type = /obj/item/stack/rods
|
||||
|
||||
/obj/projectile/bullet/rebarsyndie
|
||||
name = "rebar"
|
||||
icon_state = "rebar"
|
||||
damage = 35
|
||||
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)
|
||||
embed_falloff_tile = -3
|
||||
shrapnel_type = /obj/item/stack/rods
|
||||
|
||||
|
||||
@@ -146,6 +146,13 @@
|
||||
cost = 11
|
||||
restricted_roles = list(JOB_STATION_ENGINEER, JOB_CHIEF_ENGINEER)
|
||||
|
||||
/datum/uplink_item/role_restricted/rebarxbowsyndie
|
||||
name = "Syndicate Rebar Crossbow"
|
||||
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)
|
||||
|
||||
/datum/uplink_item/role_restricted/magillitis_serum
|
||||
name = "Magillitis Serum Autoinjector"
|
||||
desc = "A single-use autoinjector which contains an experimental serum that causes rapid muscular growth in Hominidae. \
|
||||
|
||||
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
@@ -2413,6 +2413,7 @@
|
||||
#include "code\game\objects\items\granters\crafting\death_sandwich.dm"
|
||||
#include "code\game\objects\items\granters\crafting\desserts.dm"
|
||||
#include "code\game\objects\items\granters\crafting\pipegun.dm"
|
||||
#include "code\game\objects\items\granters\crafting\rebarxbowsyndie.dm"
|
||||
#include "code\game\objects\items\granters\crafting\regal_condor.dm"
|
||||
#include "code\game\objects\items\granters\magic\_spell_granter.dm"
|
||||
#include "code\game\objects\items\granters\magic\barnyard.dm"
|
||||
|
||||