[IT'S READY NOW!] [MODULAR] Razor Claws Augment (#23050)

* initial

* god i hate byond

* there we go

* oh right

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* wew

* Manual map merge

* wew

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

---------

Co-authored-by: Snakebittenn <12636964+Snakebittenn@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
This commit is contained in:
Nerevar
2023-09-01 17:48:09 -07:00
committed by GitHub
co-authored by GoldenAlpharex Snakebittenn Giz
parent 0ebf6deeda
commit 5f9e018543
13 changed files with 183 additions and 2 deletions
@@ -1,3 +1,19 @@
#define KNIFE_HITSOUND 'sound/weapons/bladeslice.ogg'
#define KNIFE_USESOUND 'sound/weapons/bladeslice.ogg'
#define KNIFE_ATTACK_VERB_CONTINUOUS list("slashes", "tears", "slices", "tears", "lacerates", "rips", "dices", "cuts", "rends")
#define KNIFE_ATTACK_VERB_SIMPLE list("slash", "tear", "slice", "tear", "lacerate", "rip", "dice", "cut", "rend")
#define KNIFE_SHARPNESS SHARP_EDGED
#define KNIFE_BARE_WOUND_BONUS 15
#define CUTTER_HITSOUND 'sound/items/wirecutter.ogg'
#define CUTTER_USESOUND 'sound/items/wirecutter.ogg'
#define CUTTER_ATTACK_VERB_CONTINUOUS list("bashes", "batters", "bludgeons", "thrashes", "whacks")
#define CUTTER_ATTACK_VERB_SIMPLE list("bash", "batter", "bludgeon", "thrash", "whack")
#define CUTTER_FORCE 6
#define CUTTER_WOUND_BONUS 0
#define ENHANCED_KNIFE_FORCE 15
#define ENHANCED_KNIFE_WOUND_BONUS 15
#define ENHANCED_KNIFE_ARMOR_PENETRATION 10
/obj/item/melee/implantarmblade
name = "implanted arm blade"
desc = "A long, sharp, mantis-like blade implanted into someones arm. Cleaves through flesh like its particularly strong butter."
@@ -36,6 +52,98 @@
items_list += WEAKREF(new /obj/item/melee/implantarmblade/energy(src))
return TRUE
/obj/item/knife/razor_claws
name = "implanted razor claws"
desc = "A set of sharp, retractable claws built into the fingertips, five double-edged blades sure to turn people into mincemeat. Capable of shifting into 'Precision' mode to act similar to wirecutters."
icon = 'modular_skyrat/modules/implants/icons/razorclaws.dmi'
righthand_file = 'modular_skyrat/modules/implants/icons/razorclaws_righthand.dmi'
lefthand_file = 'modular_skyrat/modules/implants/icons/razorclaws_lefthand.dmi'
icon_state = "wolverine"
inhand_icon_state = "wolverine"
var/knife_force = 10
w_class = WEIGHT_CLASS_BULKY
var/knife_wound_bonus = 5
var/cutter_force = CUTTER_FORCE
var/cutter_wound_bonus = CUTTER_WOUND_BONUS
var/cutter_bare_wound_bonus = CUTTER_WOUND_BONUS
tool_behaviour = TOOL_KNIFE
toolspeed = 1
item_flags = NEEDS_PERMIT //Beepers gets angry if you get caught with this.
/obj/item/knife/razor_claws/attack_self(mob/user)
playsound(get_turf(user), 'sound/items/change_drill.ogg', 50, TRUE)
if(tool_behaviour != TOOL_WIRECUTTER)
tool_behaviour = TOOL_WIRECUTTER
to_chat(user, span_notice("You shift [src] into Precision mode, for wirecutting."))
icon_state = "precision_wolverine"
inhand_icon_state = "precision_wolverine"
force = cutter_force
wound_bonus = cutter_wound_bonus
bare_wound_bonus = cutter_bare_wound_bonus
sharpness = NONE
hitsound = CUTTER_HITSOUND
usesound = CUTTER_USESOUND
attack_verb_continuous = CUTTER_ATTACK_VERB_CONTINUOUS
attack_verb_simple = CUTTER_ATTACK_VERB_SIMPLE
else
tool_behaviour = TOOL_KNIFE
to_chat(user, span_notice("You shift [src] into Killing mode, for slicing."))
icon_state = "wolverine"
inhand_icon_state = "wolverine"
force = knife_force
sharpness = KNIFE_SHARPNESS
wound_bonus = knife_wound_bonus
bare_wound_bonus = KNIFE_BARE_WOUND_BONUS
hitsound = KNIFE_HITSOUND
usesound = KNIFE_USESOUND
attack_verb_continuous = KNIFE_ATTACK_VERB_CONTINUOUS
attack_verb_simple = KNIFE_ATTACK_VERB_SIMPLE
/obj/item/knife/razor_claws/attackby(obj/item/stone, mob/user, param)
if(!istype(stone, /obj/item/scratching_stone))
return ..()
knife_force = ENHANCED_KNIFE_FORCE
knife_wound_bonus = ENHANCED_KNIFE_WOUND_BONUS
armour_penetration = ENHANCED_KNIFE_ARMOR_PENETRATION //Let's give them some AP for the trouble.
if(tool_behaviour == TOOL_KNIFE)
force = knife_force
wound_bonus = knife_wound_bonus
name = "enhanced razor claws"
desc += span_warning("\n\nThese have undergone a special honing process; they'll kill people even faster than they used to.")
user.visible_message(span_warning("[user] sharpens [src], [stone] disintegrating!"), span_warning("You sharpen [src], making it much more deadly than before, but [stone] disintegrates under the stress."))
playsound(src, 'sound/items/unsheath.ogg', 25, TRUE)
qdel(stone)
return ..()
/obj/item/organ/internal/cyberimp/arm/razor_claws
name = "razor claws implant"
desc = "A set of hidden, retractable blades built into the fingertips; cyborg mercenary approved."
items_to_create = list(/obj/item/knife/razor_claws)
actions_types = list(/datum/action/item_action/organ_action/toggle/razor_claws)
icon = 'modular_skyrat/modules/implants/icons/razorclaws.dmi'
icon_state = "wolverine"
extend_sound = 'sound/items/unsheath.ogg'
retract_sound = 'sound/items/sheath.ogg'
/// bespoke subtypes for augs menu since it's a bit wonky
/obj/item/organ/internal/cyberimp/arm/razor_claws/right_arm
zone = BODY_ZONE_R_ARM
slot = ORGAN_SLOT_RIGHT_ARM_AUG
/obj/item/organ/internal/cyberimp/arm/razor_claws/left_arm
zone = BODY_ZONE_L_ARM
slot = ORGAN_SLOT_LEFT_ARM_AUG
/datum/action/item_action/organ_action/toggle/razor_claws
name = "Extend Claws"
desc = "You can also activate the claws in your hand to change their mode."
button_icon = 'modular_skyrat/master_files/icons/hud/actions.dmi'
button_icon_state = "wolverine"
/obj/item/organ/internal/cyberimp/arm/hacker
name = "hacking arm implant"
desc = "An small arm implant containing an advanced screwdriver, wirecutters, and multitool designed for engineers and on-the-field machine modification. Actually legal, despite what the name may make you think."
@@ -110,3 +218,19 @@
items_list += WEAKREF(new /obj/item/lighter(src)) //Now you can choose between bad and worse!
obj_flags |= EMAGGED
return TRUE
#undef KNIFE_HITSOUND
#undef KNIFE_USESOUND
#undef KNIFE_ATTACK_VERB_CONTINUOUS
#undef KNIFE_ATTACK_VERB_SIMPLE
#undef KNIFE_SHARPNESS
#undef KNIFE_BARE_WOUND_BONUS
#undef CUTTER_HITSOUND
#undef CUTTER_USESOUND
#undef CUTTER_ATTACK_VERB_CONTINUOUS
#undef CUTTER_ATTACK_VERB_SIMPLE
#undef CUTTER_FORCE
#undef CUTTER_WOUND_BONUS
#undef ENHANCED_KNIFE_FORCE
#undef ENHANCED_KNIFE_WOUND_BONUS
#undef ENHANCED_KNIFE_ARMOR_PENETRATION
@@ -11,6 +11,23 @@
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/cyberimp_claws
name = "Razor Claws Implant"
desc = "Long, sharp, double-edged razors installed within the fingers, functional for cutting. All kinds of cutting."
id = "ci-razor"
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
materials = list (
/datum/material/iron = SHEET_MATERIAL_AMOUNT,
/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT
)
construction_time = 20 SECONDS
build_path = /obj/item/organ/internal/cyberimp/arm/razor_claws
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SECURITY
/datum/design/cyberimp_hacker
name = "Hacking Hand Implant"
desc = "An advanced hacking and machine modification toolkit fitted into an arm implant, designed to be installed on a subject's arm."
@@ -1,5 +1,18 @@
/datum/techweb_node/cyber_implants
design_ids = list("ci-nutriment", "ci-scanner", "ci-breather", "ci-gloweyes", "ci-welding", "ci-medhud", "ci-sechud", "ci-diaghud", "ci-botany", "ci-janitor", "ci-lighter")
design_ids = list(
"ci-nutriment",
"ci-scanner",
"ci-breather",
"ci-gloweyes",
"ci-welding",
"ci-medhud",
"ci-sechud",
"ci-diaghud",
"ci-botany",
"ci-janitor",
"ci-lighter",
"ci-razor",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
/datum/techweb_node/adv_cyber_implants