Files
SmArtKarandGitHub b80f8f1127 Cain & Abel no longer forces dual-wielding and instead requires an empty offhand (#94661)
## About The Pull Request

Instead of forcing the player to dual wield it, Cain & Abel can now be
held with one hand, although doing so prohibits you from using it to
attack, throw/spin daggers or send out wisps.

## Why It's Good For The Game

Forcing dual wielding on a small pocketable item is a bit weird and
feels bad in gameplay, as it essentially prohibits you from being able
to use any healing items unless you keep an empty pocket, in which case
quick storage on all other items will default to it which is rather
impractical. Requiring an empty offhand essentially keeps the wielding
requirement without UX issues coming from inhand usage swapping modes or
inventory jank.

## Changelog
🆑
balance: Cain & Abel no longer forces dual-wielding and instead requires
an empty offhand
/🆑
2026-01-03 14:11:12 +00:00

38 lines
1.4 KiB
Plaintext

/datum/action/cooldown/dagger_swing
name = "Dagger swing"
desc = "Swing your daggers around."
button_icon = 'icons/obj/mining_zones/artefacts.dmi'
button_icon_state = "cain_and_abel"
background_icon_state = "bg_default"
overlay_icon_state = "bg_default_border"
cooldown_time = 20 SECONDS
check_flags = AB_CHECK_INCAPACITATED | AB_CHECK_HANDS_BLOCKED | AB_CHECK_CONSCIOUS
/datum/action/cooldown/dagger_swing/Activate(atom/target_atom)
var/mob/living/living_owner = owner
var/obj/item/cain_and_abel/cain_and_abel = target
if(!living_owner.is_holding(cain_and_abel))
owner.balloon_alert(owner, "must be held")
return FALSE
if(!cain_and_abel.check_wield(owner))
owner.balloon_alert(owner, "offhand busy!")
return TRUE
living_owner.apply_status_effect(/datum/status_effect/dagger_swinging)
var/static/list/possible_sounds = list(
'sound/items/weapons/cain_and_abel/dagger_slash_1.ogg',
'sound/items/weapons/cain_and_abel/dagger_slash_2.ogg',
'sound/items/weapons/cain_and_abel/dagger_slash_3.ogg',
'sound/items/weapons/cain_and_abel/dagger_slash_4.ogg',
'sound/items/weapons/cain_and_abel/dagger_slash_5.ogg',
'sound/items/weapons/cain_and_abel/dagger_slash_6.ogg',
)
var/list/sounds_to_pick_from = possible_sounds.Copy()
for(var/index in 0 to 5)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), owner, pick_n_take(sounds_to_pick_from), 65, TRUE), 0.15 SECONDS * index)
StartCooldown()