add nunchaku to spy uplink (mini CQC) (#89817)

## About The Pull Request

Added a much faster and deadlier “version” of the telescopic baton, with
the ability to counterattack (stun) melee/throwable attacks, but
switching back after each one. The speed of stun and harm strikes are
identical to each other, allowing for combo attacks. The knockdown time
is significantly shorter to make battle more cinematic. Medium-high spy
bounty.


## Why It's Good For The Game

A In-hand and stylish replacement for the nukie CQC, allowing for
non-lethal combat, and crushing skull if need be.
stun/harm speed = 0.8 SECONDS (default value for any melee)
force = 16 (7 hit crit)
bare wound = 5
stamina damage = 30 (4 hit stamcrit)
knockdown time = 250 MILLISECONDS (+500 for up, but you may crawling and
pickup guns)
active throw mode = counterattack (stun) enemy
This commit is contained in:
hack-wrench
2025-03-17 21:49:08 -05:00
committed by GitHub
parent a1053ed79d
commit 198ae4d126
6 changed files with 60 additions and 0 deletions
+53
View File
@@ -984,3 +984,56 @@
else
stuff_in_hand.forceMove(user.drop_location())
stuff_in_hand.loc.visible_message(span_warning("[stuff_in_hand] suddenly appears!"))
/obj/item/melee/baton/nunchaku
name = "Syndie Fitness Nunchuks"
desc = "The most common fitness equipment in the entire syndicate, titanium rods weigh strictly 13 pounds"
desc_controls = "Left click to stun, right click to harm. Throw mode counterattack any melee/throwable attacks."
icon_state = "nunchaku"
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
inhand_icon_state = "nunchaku"
worn_icon_state = "nunchaku"
attack_verb_continuous = list("beats", "whips", "smashes", "punishes")
attack_verb_simple = list("beat", "whip", "smash", "punish")
hitsound = 'sound/items/weapons/chainhit.ogg'
block_sound = 'sound/items/weapons/block_shield.ogg'
slot_flags = ITEM_SLOT_BELT
cooldown = CLICK_CD_MELEE
knockdown_time = 0.25 SECONDS
demolition_mod = 1.5
stamina_damage = 30 // 4 hit stamcrit
stun_armour_penetration = 30 // bronze-silver telescopic
force = 16 // 7 hit crit
bare_wound_bonus = 5
/obj/item/melee/baton/nunchaku/proc/randomize_state()
icon_state = pick(list("nunchaku", "nunchaku_x", "nunchaku_y"))
update_appearance()
/obj/item/melee/baton/nunchaku/after_throw(datum/callback/callback)
. = ..()
randomize_state()
/obj/item/melee/baton/nunchaku/afterattack(atom/target, mob/user, click_parameters)
. = ..()
randomize_state()
/obj/item/melee/baton/nunchaku/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text, final_block_chance, damage, attack_type, damage_type)
if(attack_type == PROJECTILE_ATTACK || !owner.throw_mode)
return ..()
randomize_state()
// blocks any melee/throwable attacks
owner.adjustStaminaLoss(5)
final_block_chance = 100
// counterattack at melee
if(attack_type in list(MELEE_ATTACK, UNARMED_ATTACK, LEAP_ATTACK))
var/mob/living/attacker = GET_ASSAILANT(hitby)
playsound(src, pick(list('sound/items/weapons/cqchit2.ogg', 'sound/items/weapons/cqchit1.ogg')), 70, FALSE)
melee_attack_chain(owner, attacker, LEFT_CLICK)
return ..()
@@ -148,3 +148,10 @@
name = /datum/uplink_item/implants/nuclear/thermals::name
desc = /datum/uplink_item/implants/nuclear/thermals::desc
item = /obj/item/autosurgeon/syndicate/thermal_eyes/single_use
/datum/uplink_item/spy_unique/nunchaku
name = "Syndie Fitness Nunchuks"
desc = "Heavyweight titanium nunchucks, quickly knocking opponents to the ground, then just as easily smashing the opponent afterward."
item = /obj/item/melee/baton/nunchaku
cost = SPY_UPPER_COST_THRESHOLD
uplink_item_flags = SYNDIE_ILLEGAL_TECH | SYNDIE_TRIPS_CONTRABAND
Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB