mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-26 01:22:03 +00:00
## About The Pull Request A repeat of the first half of https://github.com/tgstation/tgstation/pull/86853 The NT BR-38 Battle Rifle is a semi-automatic railgun...marksman...carbine...rifle...thingy that uses .38 ammunition and is magazine fed from a 15 round magazine. It comes with a scope, and is bulky.  Sprites by OrcaCora. ### Some of its features The gun shoots at a higher than normal velocity for .38. This means it hits harder (30 damage compared to the standard 25), and flies faster through the air. The gun, however, suffers from degradation as it is used. It has a 10 shot buffer before suffering degradation. After the 10 shot buffer, it has a 10% chance each shot to increase in degradation stage. From stage 1 to stage 5 (the maximum stage), it begins to lose fire rate and projectile flight speed. To recalibrate the gun, you can do one of two things; A) Use a multitool on the gun. This completely resets the gun, but its pretty slow. B) Insert it into a weapon recharger to recharge its buffer and reduce its degradation stages. ### Some of its downsides The weapon is EMP vulnerable. If it gets EMP'd, it immediately degrades and loses any buffer it has. While EMP'd, there is a 75% chance it doesn't fire when you pull the trigger. This is also true if the gun has hit maximum degradation. Keep your guns in good shape. It can be emagged. While emagged, the gun has increased damage (40 for standard ammunition), but once it hits maximum degradation, it immediately begins to catastrophically fail. It also degrades significantly faster while emagged. There is no way to reverse this effect, and the explosion is extremely lethal. ### Where can I find it? What about ammo? You can purchase the gun from cargo at a significant premium, as well as some additional magazines of some basic ammo types. There is exactly one of these in the armory, and you can print more magazines from the security protolathe. As research progresses, you can print different, specialized ammunition for the rifle. (and also the detective .38 revolver, obviously) ### New .38 ammunition types True Strike bounces accurately between targets, but deals significantly less damage than other ammo types (15 base, 18 in this rifle). It is printed once the station gets Exotic Ammo. ## Why It's Good For The Game This is a followup on my previous PR, where I tested this weapon and gathered a whole bunch of feedback on it. Most people quite liked it. but had some concerns that I feel this addresses. Much of the justifications given there apply here. Obviously ignoring anything to do with the combat shotgun removal. Some stuff obviously has not come back from the original test. Notably, the TRAC changes were probably a little too powerful. As much as I liked a default entirely nonlethal ammunition type, TRAC itself is better left as a late research goal. In addition, I moved the explosion part to an emag effect. It's funny, and lends itself to the original intention of the weapon; a callback to the WT-550 incident. But it isn't a standard part of the guns mechanics.
253 lines
8.3 KiB
Plaintext
253 lines
8.3 KiB
Plaintext
/datum/techweb_node/augmentation
|
|
id = TECHWEB_NODE_AUGMENTATION
|
|
starting_node = TRUE
|
|
display_name = "Augmentation"
|
|
description = "For those who prefer shiny metal over squishy flesh."
|
|
prereq_ids = list(TECHWEB_NODE_ROBOTICS)
|
|
design_ids = list(
|
|
"borg_chest",
|
|
"borg_head",
|
|
"borg_l_arm",
|
|
"borg_l_leg",
|
|
"borg_r_arm",
|
|
"borg_r_leg",
|
|
"borg_suit",
|
|
"cybernetic_eyes",
|
|
"cybernetic_eyes_moth",
|
|
"cybernetic_ears",
|
|
"cybernetic_lungs",
|
|
"cybernetic_stomach",
|
|
"cybernetic_liver",
|
|
"cybernetic_heart",
|
|
)
|
|
experiments_to_unlock = list(
|
|
/datum/experiment/scanning/people/android,
|
|
)
|
|
|
|
/datum/techweb_node/cybernetics
|
|
id = TECHWEB_NODE_CYBERNETICS
|
|
display_name = "Cybernetics"
|
|
description = "Sapient robots with preloaded tool modules and programmable laws."
|
|
prereq_ids = list(TECHWEB_NODE_AUGMENTATION)
|
|
design_ids = list(
|
|
"robocontrol",
|
|
"borgupload",
|
|
"cyborgrecharger",
|
|
"mmi_posi",
|
|
"mmi",
|
|
"mmi_m",
|
|
"advanced_l_arm",
|
|
"advanced_r_arm",
|
|
"advanced_l_leg",
|
|
"advanced_r_leg",
|
|
"borg_upgrade_rename",
|
|
"borg_upgrade_restart",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE)
|
|
|
|
/datum/techweb_node/borg_service
|
|
id = TECHWEB_NODE_BORG_SERVICES
|
|
display_name = "Service Cyborg Upgrades"
|
|
description = "Let them do the cookin' by the book."
|
|
prereq_ids = list(TECHWEB_NODE_CYBERNETICS)
|
|
design_ids = list(
|
|
"borg_upgrade_rolling_table",
|
|
"borg_upgrade_condiment_synthesizer",
|
|
"borg_upgrade_silicon_knife",
|
|
"borg_upgrade_service_apparatus",
|
|
"borg_upgrade_drink_apparatus",
|
|
"borg_upgrade_service_cookbook",
|
|
"borg_upgrade_botany",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE)
|
|
|
|
/datum/techweb_node/borg_mining
|
|
id = TECHWEB_NODE_BORG_MINING
|
|
display_name = "Mining Cyborg Upgrades"
|
|
description = "To mine places too dangerous for humans."
|
|
prereq_ids = list(TECHWEB_NODE_CYBERNETICS)
|
|
design_ids = list(
|
|
"borg_upgrade_lavaproof",
|
|
"borg_upgrade_holding",
|
|
"borg_upgrade_diamonddrill",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE)
|
|
|
|
/datum/techweb_node/borg_medical
|
|
id = TECHWEB_NODE_BORG_MEDICAL
|
|
display_name = "Medical Cyborg Upgrades"
|
|
description = "Let them follow Asimov's First Law."
|
|
prereq_ids = list(TECHWEB_NODE_BORG_SERVICES, TECHWEB_NODE_SURGERY_ADV)
|
|
design_ids = list(
|
|
"borg_upgrade_pinpointer",
|
|
"borg_upgrade_beakerapp",
|
|
"borg_upgrade_defibrillator",
|
|
"borg_upgrade_expandedsynthesiser",
|
|
"borg_upgrade_piercinghypospray",
|
|
"borg_upgrade_surgicalprocessor",
|
|
"borg_upgrade_surgicalomnitool",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE)
|
|
|
|
/datum/techweb_node/borg_utility
|
|
id = TECHWEB_NODE_BORG_UTILITY
|
|
display_name = "Utility Cyborg Upgrades"
|
|
description = "Let them wipe our floors for us."
|
|
prereq_ids = list(TECHWEB_NODE_BORG_SERVICES, TECHWEB_NODE_SANITATION)
|
|
design_ids = list(
|
|
"borg_upgrade_advancedmop",
|
|
"borg_upgrade_broomer",
|
|
"borg_upgrade_expand",
|
|
"borg_upgrade_prt",
|
|
"borg_upgrade_plunger",
|
|
"borg_upgrade_high_capacity_replacer",
|
|
"borg_upgrade_selfrepair",
|
|
"borg_upgrade_thrusters",
|
|
"borg_upgrade_trashofholding",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE)
|
|
|
|
/datum/techweb_node/borg_utility/New()
|
|
. = ..()
|
|
if(!CONFIG_GET(flag/disable_secborg))
|
|
design_ids += "borg_upgrade_disablercooler"
|
|
|
|
/datum/techweb_node/borg_engi
|
|
id = TECHWEB_NODE_BORG_ENGI
|
|
display_name = "Engineering Cyborg Upgrades"
|
|
description = "To slack even more."
|
|
prereq_ids = list(TECHWEB_NODE_BORG_MINING, TECHWEB_NODE_PARTS_UPG)
|
|
design_ids = list(
|
|
"borg_upgrade_rped",
|
|
"borg_upgrade_engineeringomnitool",
|
|
"borg_upgrade_circuitapp",
|
|
"borg_upgrade_inducer",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE)
|
|
|
|
// Implants root node
|
|
/datum/techweb_node/passive_implants
|
|
id = TECHWEB_NODE_PASSIVE_IMPLANTS
|
|
display_name = "Passive Implants"
|
|
description = "Implants designed to operate seamlessly without active user input, enhancing various physiological functions or providing continuous benefits."
|
|
prereq_ids = list(TECHWEB_NODE_AUGMENTATION)
|
|
design_ids = list(
|
|
"skill_station",
|
|
"implant_trombone",
|
|
"implant_chem",
|
|
"implant_tracking",
|
|
"implant_exile",
|
|
"implant_beacon",
|
|
"implant_bluespace",
|
|
"implantcase",
|
|
"implanter",
|
|
"locator",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SECURITY, RADIO_CHANNEL_MEDICAL)
|
|
|
|
/datum/techweb_node/cyber/cyber_implants
|
|
id = TECHWEB_NODE_CYBER_IMPLANTS
|
|
display_name = "Cybernetic Implants"
|
|
description = "Advanced technological enhancements integrated into the body, offering improved physical capabilities."
|
|
prereq_ids = list(TECHWEB_NODE_PASSIVE_IMPLANTS, TECHWEB_NODE_CYBERNETICS)
|
|
design_ids = list(
|
|
"ci-breather",
|
|
"ci-nutriment",
|
|
"ci-thrusters",
|
|
"ci-herculean",
|
|
"ci-connector",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL)
|
|
|
|
/datum/techweb_node/cyber/New()
|
|
..()
|
|
if(HAS_TRAIT(SSstation, STATION_TRAIT_CYBERNETIC_REVOLUTION))
|
|
research_costs[TECHWEB_POINT_TYPE_GENERIC] /= 2
|
|
|
|
/datum/techweb_node/cyber/combat_implants
|
|
id = TECHWEB_NODE_COMBAT_IMPLANTS
|
|
display_name = "Combat Implants"
|
|
description = "To make sure that you can wake the f*** up, samurai."
|
|
prereq_ids = list(TECHWEB_NODE_CYBER_IMPLANTS)
|
|
design_ids = list(
|
|
"ci-reviver",
|
|
"ci-antidrop",
|
|
"ci-antistun",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL)
|
|
|
|
/datum/techweb_node/cyber/integrated_toolsets
|
|
id = TECHWEB_NODE_INTERGRATED_TOOLSETS
|
|
display_name = "Integrated Toolsets"
|
|
description = "Decades of contraband smuggling by assistants have led to the development of a full toolbox that fits seamlessly into your arm."
|
|
prereq_ids = list(TECHWEB_NODE_COMBAT_IMPLANTS, TECHWEB_NODE_EXP_TOOLS)
|
|
design_ids = list(
|
|
"ci-nutrimentplus",
|
|
"ci-toolset",
|
|
"ci-surgery",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL)
|
|
|
|
/datum/techweb_node/cyber/cyber_organs
|
|
id = TECHWEB_NODE_CYBER_ORGANS
|
|
display_name = "Cybernetic Organs"
|
|
description = "We have the technology to rebuild him."
|
|
prereq_ids = list(TECHWEB_NODE_CYBERNETICS)
|
|
design_ids = list(
|
|
"cybernetic_eyes_improved",
|
|
"cybernetic_eyes_improved_moth",
|
|
"cybernetic_ears_u",
|
|
"cybernetic_lungs_tier2",
|
|
"cybernetic_stomach_tier2",
|
|
"cybernetic_liver_tier2",
|
|
"cybernetic_heart_tier2",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL)
|
|
|
|
/datum/techweb_node/cyber/cyber_organs_upgraded
|
|
id = TECHWEB_NODE_CYBER_ORGANS_UPGRADED
|
|
display_name = "Upgraded Cybernetic Organs"
|
|
description = "We have the technology to upgrade him."
|
|
prereq_ids = list(TECHWEB_NODE_CYBER_ORGANS)
|
|
design_ids = list(
|
|
"ci-gloweyes",
|
|
"ci-welding",
|
|
"ci-gloweyes-moth",
|
|
"ci-welding-moth",
|
|
"cybernetic_ears_whisper",
|
|
"cybernetic_lungs_tier3",
|
|
"cybernetic_stomach_tier3",
|
|
"cybernetic_liver_tier3",
|
|
"cybernetic_heart_tier3",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
|
|
required_experiments = list(/datum/experiment/scanning/people/augmented_organs)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL)
|
|
|
|
/datum/techweb_node/cyber/cyber_organs_adv
|
|
id = TECHWEB_NODE_CYBER_ORGANS_ADV
|
|
display_name = "Advanced Cybernetic Organs"
|
|
description = "Cutting-edge cybernetic organs offering enhanced sensory capabilities, making it easier than ever to detect ERP."
|
|
prereq_ids = list(TECHWEB_NODE_CYBER_ORGANS_UPGRADED, TECHWEB_NODE_NIGHT_VISION)
|
|
design_ids = list(
|
|
"cybernetic_ears_xray",
|
|
"ci-thermals",
|
|
"ci-xray",
|
|
"ci-thermals-moth",
|
|
"ci-xray-moth",
|
|
)
|
|
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS)
|
|
discount_experiments = list(/datum/experiment/scanning/people/android = TECHWEB_TIER_5_POINTS)
|
|
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_MEDICAL)
|