Files
Bubberstation/code/game/objects/items/knives.dm
T
carlarctg 4c99fb2ebb Coroner additions and tweaks (#76534)
## About The Pull Request

Serrated bone shovels can be created with any kind of shovel now, not
just a spade (???)

Serrated bone shovels can be used in place of circular saw in most
surgeries.

Added a duller (still deadly) variant of the serrated bone shovel as
coroner mail.

Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.

Increased the force, throwforce, and wound bonus of inert ritual knives
and scythes.

Coroner gloves can quickly apply medicine like nitrile gloves.
## Why It's Good For The Game

> Serrated bone shovels can be created with any kind of shovel now, not
just a spade (???)

Weird ass bug.

> Serrated bone shovels can be used in place of circular saw in most
surgeries.

It's serrated, it's cool, it's rare, it has a fast toolspeed.

> Added a duller (still deadly) variant of the serrated bone shovel as
coroner mail.

Very thematic for the coroner, should probably also be a heirloom item
but whatevs. Weaker so there's still a reason to seek out the OG.

> Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.

Scanning corpses is pretty important during surgery - it tells you how
much blood they have, organ damage, diseases... these things don't
appear in the surgical computer readout, which means the coroner has to
go out of his cave to pick up a boring light blue meatbag wound scanner.
This also incentivizes coroners to do their job by giving them something
cool that only works on dead bodies.

> Increased the force, throwforce, and wound bonus of inert ritual
knives and scythes.

These two options in the MortiDrobe are pretty frickin' badass,
especially with how SICK the Coroner looks with them, double especially
in combat.


![image](https://github.com/tgstation/tgstation/assets/53100513/98c6f8a5-3e5a-41a9-8a9c-cb6b82ecc0b8)

However, there's the large issue that as actual weapons they're really,
really weak. Not enough damage, when I use them in combat I both feel
badass but also get a nagging feeling in the back of my mind that I'm
intentionally gimping myself, and with only 10 damage I can *really*
feel it. I find it unfair that these are objectively worse than a
welding tool or even a Butcher's Cleaver when they're a lot more
involved to find, and scarce besides. These arguments apply equally to
the Wizard's ritual knife, and the scythe.

Additionally on the scythe, the crew really needs more good ghetto
weaponry that isn't the boring same ol' of baseball bats, spears,
cleavers... and making scythes useful is a great way to help bridge that
gap. They deal a satisfying amount of damage now, with the clear
downside, of course, being that they're bulky and hard to lug around.

> Coroner gloves can quickly apply medicine like nitrile gloves.

'Fast medicine' doesn't just cover sutures, it also covers medical gel.
Specifically, sterilizer gel. I find it annoying that the Coroner is
encouraged to give up his drip for the boring life-saver nitrile gloves,
because the difference in applying time really does make a difference -
it makes gel applying go from annoying to smooth, which is important
considering the whole purpose of sterilizer gel is to make surgeries go
faster. The Coroner has surgery and thus medical locker access to begin
with, so this isn't a balance problem, (and nitrile gloves are found by
the dozen anyways) especially with how rare the coroner gloves are.
## Changelog
🆑
fix: Serrated bone shovels can be created with any kind of shovel now,
not just a spade (???)
add: Serrated bone shovels can be used in place of circular saw in most
surgeries.
add: Added a duller (still deadly) variant of the serrated bone shovel
as coroner mail.
add: Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.
add: Increased the force, throwforce, and wound bonus of inert ritual
knives and scythes.
add: Coroner gloves can quickly apply medicine like nitrile gloves.
/🆑
2023-07-08 00:14:30 +01:00

257 lines
8.5 KiB
Plaintext

// Knife Template, should not appear in game normaly //
/obj/item/knife
name = "knife"
icon = 'icons/obj/kitchen.dmi'
icon_state = "knife"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
inhand_icon_state = "knife"
worn_icon_state = "knife"
desc = "The original knife, it is said that all other knives are only copies of this one."
flags_1 = CONDUCT_1
force = 10
demolition_mod = 0.75
w_class = WEIGHT_CLASS_SMALL
throwforce = 10
hitsound = 'sound/weapons/bladeslice.ogg'
throw_speed = 3
throw_range = 6
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6)
attack_verb_continuous = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
sharpness = SHARP_EDGED
armor_type = /datum/armor/item_knife
var/bayonet = FALSE //Can this be attached to a gun?
wound_bonus = 5
bare_wound_bonus = 15
tool_behaviour = TOOL_KNIFE
/datum/armor/item_knife
fire = 50
acid = 50
/obj/item/knife/Initialize(mapload)
. = ..()
AddElement(/datum/element/eyestab)
set_butchering()
///Adds the butchering component, used to override stats for special cases
/obj/item/knife/proc/set_butchering()
AddComponent(/datum/component/butchering, \
speed = 8 SECONDS - force, \
effectiveness = 100, \
bonus_modifier = force - 10, \
)
//bonus chance increases depending on force
/obj/item/knife/suicide_act(mob/living/user)
user.visible_message(pick(span_suicide("[user] is slitting [user.p_their()] wrists with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide."), \
span_suicide("[user] is slitting [user.p_their()] throat with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide."), \
span_suicide("[user] is slitting [user.p_their()] stomach open with the [src.name]! It looks like [user.p_theyre()] trying to commit seppuku.")))
return BRUTELOSS
/obj/item/knife/ritual
name = "ritual knife"
desc = "The unearthly energies that once powered this blade are now dormant."
icon = 'icons/obj/eldritch.dmi'
icon_state = "bone_blade"
inhand_icon_state = "bone_blade"
worn_icon_state = "bone_blade"
lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
inhand_x_dimension = 64
inhand_y_dimension = 64
item_flags = CRUEL_IMPLEMENT //maybe they want to use it in surgery
force = 15
throwforce = 15
wound_bonus = 20
w_class = WEIGHT_CLASS_NORMAL
/obj/item/knife/bloodletter
name = "bloodletter"
desc = "An occult looking dagger that is cold to the touch. Somehow, the flawless orb on the pommel is made entirely of liquid blood."
icon = 'icons/obj/ice_moon/artifacts.dmi'
icon_state = "bloodletter"
worn_icon_state = "render"
w_class = WEIGHT_CLASS_NORMAL
/// Bleed stacks applied when an organic mob target is hit
var/bleed_stacks_per_hit = 3
/obj/item/knife/bloodletter/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(!isliving(target) || !proximity_flag)
return
var/mob/living/M = target
if(!(M.mob_biotypes & MOB_ORGANIC))
return
var/datum/status_effect/stacking/saw_bleed/bloodletting/B = M.has_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting)
if(!B)
M.apply_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting, bleed_stacks_per_hit)
else
B.add_stacks(bleed_stacks_per_hit)
/obj/item/knife/butcher
name = "butcher's cleaver"
icon_state = "butch"
inhand_icon_state = "butch"
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown by-products."
flags_1 = CONDUCT_1
force = 15
throwforce = 10
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6)
attack_verb_continuous = list("slices", "dices", "chops", "cubes", "minces", "juliennes", "chiffonades", "batonnets")
attack_verb_simple = list("slice", "dice", "chop", "cube", "mince", "julienne", "chiffonade", "batonnet")
w_class = WEIGHT_CLASS_NORMAL
custom_price = PAYCHECK_CREW * 5
wound_bonus = 15
/obj/item/knife/hunting
name = "hunting knife"
desc = "Despite its name, it's mainly used for cutting meat from dead prey rather than actual hunting."
inhand_icon_state = "huntingknife"
icon_state = "huntingknife"
wound_bonus = 10
/obj/item/knife/hunting/set_butchering()
AddComponent(/datum/component/butchering, \
speed = 8 SECONDS - force, \
effectiveness = 100, \
bonus_modifier = force + 10, \
)
/obj/item/knife/combat
name = "combat knife"
icon_state = "buckknife"
desc = "A military combat utility survival knife."
embedding = list("pain_mult" = 4, "embed_chance" = 65, "fall_chance" = 10, "ignore_throwspeed_threshold" = TRUE)
force = 20
throwforce = 20
attack_verb_continuous = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "cuts")
attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "cut")
bayonet = TRUE
/obj/item/knife/combat/survival
name = "survival knife"
icon_state = "survivalknife"
embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10)
desc = "A hunting grade survival knife."
force = 15
throwforce = 15
bayonet = TRUE
/obj/item/knife/combat/bone
name = "bone dagger"
inhand_icon_state = "bone_dagger"
icon_state = "bone_dagger"
worn_icon_state = "bone_dagger"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
desc = "A sharpened bone. The bare minimum in survival."
embedding = list("pain_mult" = 4, "embed_chance" = 35, "fall_chance" = 10)
force = 15
throwforce = 15
custom_materials = null
/obj/item/knife/combat/bone/Initialize(mapload)
flags_1 &= ~CONDUCT_1
return ..()
/obj/item/knife/combat/cyborg
name = "cyborg knife"
icon = 'icons/obj/items_cyborg.dmi'
icon_state = "knife_cyborg"
desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable."
/obj/item/knife/shiv
name = "glass shiv"
icon = 'icons/obj/shards.dmi'
icon_state = "shiv"
inhand_icon_state = "shiv"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
desc = "A makeshift glass shiv."
force = 8
throwforce = 12
attack_verb_continuous = list("shanks", "shivs")
attack_verb_simple = list("shank", "shiv")
armor_type = /datum/armor/none
custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
/obj/item/knife/shiv/Initialize(mapload)
flags_1 &= ~CONDUCT_1
return ..()
/obj/item/knife/shiv/plasma
name = "plasma shiv"
icon_state = "plasmashiv"
inhand_icon_state = "plasmashiv"
desc = "A makeshift plasma glass shiv."
force = 9
throwforce = 13
armor_type = /datum/armor/shiv_plasma
custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT *4, /datum/material/plasma=SMALL_MATERIAL_AMOUNT * 2)
/datum/armor/shiv_plasma
melee = 25
bullet = 25
laser = 25
energy = 25
bomb = 25
fire = 50
acid = 50
/obj/item/knife/shiv/titanium
name = "titanium shiv"
icon_state = "titaniumshiv"
inhand_icon_state = "titaniumshiv"
desc = "A makeshift titanium-infused glass shiv."
throwforce = 14
throw_range = 7
wound_bonus = 10
armor_type = /datum/armor/shiv_titanium
custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 4, /datum/material/titanium=SMALL_MATERIAL_AMOUNT * 2)
/datum/armor/shiv_titanium
melee = 25
bullet = 25
laser = 25
energy = 25
bomb = 25
fire = 50
acid = 50
/obj/item/knife/shiv/plastitanium
name = "plastitanium shiv"
icon_state = "plastitaniumshiv"
inhand_icon_state = "plastitaniumshiv"
desc = "A makeshift titanium-infused plasma glass shiv."
force = 10
throwforce = 15
throw_speed = 4
throw_range = 8
wound_bonus = 10
bare_wound_bonus = 20
armor_type = /datum/armor/shiv_plastitanium
custom_materials = list(/datum/material/glass= SMALL_MATERIAL_AMOUNT * 4, /datum/material/alloy/plastitanium= SMALL_MATERIAL_AMOUNT * 2)
/datum/armor/shiv_plastitanium
melee = 50
bullet = 50
laser = 50
energy = 50
bomb = 50
fire = 75
acid = 75
/obj/item/knife/shiv/carrot
name = "carrot shiv"
icon_state = "carrotshiv"
inhand_icon_state = "carrotshiv"
icon = 'icons/obj/kitchen.dmi'
desc = "Unlike other carrots, you should probably keep this far away from your eyes."
custom_materials = null
/obj/item/knife/shiv/carrot/suicide_act(mob/living/carbon/user)
user.visible_message(span_suicide("[user] forcefully drives \the [src] into [user.p_their()] eye! It looks like [user.p_theyre()] trying to commit suicide!"))
return BRUTELOSS