Migrate knuckleduster and kitchen tools to the new attack chain. (#32283)

* Migrate knuckleduster and kitchen tools to the new attack chain.

* Add fingerprints.

* Remove duplicate vars.

* Apply suggestions from CRUNCH review

Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com>
Signed-off-by: Alan <alfalfascout@users.noreply.github.com>

* Fix number of macro arguments.

* Give organs a source.

* Call parent in knuckledusters' after_attack()

* Apply suggestion from CRUNCH review.

Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com>
Signed-off-by: Alan <alfalfascout@users.noreply.github.com>

* Apply suggestion from CRUNCH review.

Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com>
Signed-off-by: Alan <alfalfascout@users.noreply.github.com>

---------

Signed-off-by: Alan <alfalfascout@users.noreply.github.com>
Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com>
This commit is contained in:
Alan
2026-07-24 19:30:00 +00:00
committed by GitHub
co-authored by CRUNCH
parent a177bdbe87
commit f9c601b7be
4 changed files with 25 additions and 14 deletions
+1 -1
View File
@@ -18,6 +18,7 @@
icon = 'icons/obj/kitchen.dmi'
origin_tech = "materials=1"
materials = list(MAT_METAL = 100)
new_attack_chain = TRUE
/*
* Utensils
@@ -36,7 +37,6 @@
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 50, ACID = 30)
materials = list(MAT_METAL = 100)
var/max_contents = 1
new_attack_chain = TRUE
/obj/item/kitchen/utensil/Initialize(mapload)
//Initialize(mapload)
@@ -18,18 +18,26 @@
var/elite = FALSE
/// How much organ damage can the weapon do?
var/trauma = 5
new_attack_chain = TRUE
/obj/item/melee/knuckleduster/activate_self(mob/user)
if(..())
return ITEM_INTERACT_COMPLETE
add_fingerprint(user)
/obj/item/melee/knuckleduster/attack_self__legacy__attackchain(mob/user)
if(!gripped)
gripped = TRUE
to_chat(user, "You tighten your grip on [src], ensuring you won't drop it.")
to_chat(user, SPAN_NOTICE("You tighten your grip on [src], ensuring you won't drop it."))
set_nodrop(TRUE, user)
ADD_TRAIT(src, TRAIT_SKIP_EXAMINE, "knuckledusters")
else
gripped = FALSE
to_chat(user, "You relax your grip on [src].")
set_nodrop(FALSE, user)
REMOVE_TRAIT(src, TRAIT_SKIP_EXAMINE, "knuckledusters")
return ITEM_INTERACT_COMPLETE
gripped = FALSE
to_chat(user, SPAN_NOTICE("You relax your grip on [src]."))
set_nodrop(FALSE, user)
REMOVE_TRAIT(src, TRAIT_SKIP_EXAMINE, "knuckledusters")
return ITEM_INTERACT_COMPLETE
/obj/item/melee/knuckleduster/dropped(mob/user, silent)
. = ..()
@@ -37,21 +45,26 @@
set_nodrop(FALSE, user)
REMOVE_TRAIT(src, TRAIT_SKIP_EXAMINE, "knuckledusters")
/obj/item/melee/knuckleduster/attack__legacy__attackchain(mob/living/target, mob/living/user)
. = ..()
/obj/item/melee/knuckleduster/pre_attack(atom/target, mob/living/user, params)
hitsound = pick('sound/weapons/punch1.ogg', 'sound/weapons/punch2.ogg', 'sound/weapons/punch3.ogg', 'sound/weapons/punch4.ogg')
return ..()
/obj/item/melee/knuckleduster/after_attack(mob/living/carbon/human/target, mob/user, proximity_flag, click_parameters)
if(..())
return FINISH_ATTACK
if(!ishuman(target) || QDELETED(target))
return
return FINISH_ATTACK
var/obj/item/organ/external/punched = target.get_organ(user.zone_selected)
if(!length(punched.internal_organs))
return
return FINISH_ATTACK
var/obj/item/organ/internal/squishy = pick(punched.internal_organs)
if(gripped && elite)
squishy.receive_damage(trauma)
if(punched.is_broken())
squishy.receive_damage(trauma) // Probably not so good for your organs to have your already broken ribs punched hard by a metal object
return FINISH_ATTACK
/obj/item/melee/knuckleduster/syndie
name = "syndicate knuckleduster"