diff --git a/code/game/objects/items/weapons/melee/melee_misc.dm b/code/game/objects/items/weapons/melee/melee_misc.dm index 9e6d3d54376..c374a870e6b 100644 --- a/code/game/objects/items/weapons/melee/melee_misc.dm +++ b/code/game/objects/items/weapons/melee/melee_misc.dm @@ -39,6 +39,9 @@ hitsound = 'sound/weapons/rapierhit.ogg' materials = list(MAT_METAL = 1000) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF // Theft targets should be hard to destroy + // values for slapping + var/slap_sound = 'sound/effects/woodhit.ogg' + COOLDOWN_DECLARE(slap_cooldown) /obj/item/melee/saber/examine(mob/user) . = ..() @@ -58,6 +61,29 @@ AddComponent(/datum/component/parry, _stamina_constant = 2, _stamina_coefficient = 0.5, _parryable_attack_types = NON_PROJECTILE_ATTACKS) RegisterSignal(src, COMSIG_PARENT_QDELETING, PROC_REF(alert_admins_on_destroy)) +/obj/item/melee/saber/attack(mob/living/target, mob/living/user) + if(user.a_intent != INTENT_HELP || !ishuman(target)) + return ..() + if(!COOLDOWN_FINISHED(src, slap_cooldown)) + return + var/mob/living/carbon/human/H = target + if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) + user.visible_message("[user] accidentally slaps [user.p_themselves()] with [src]!", \ + "You accidentally slap yourself with [src]!") + slap(user, user) + else + user.visible_message("[user] slaps [H] with the flat of the blade!", \ + "You slap [H] with the flat of the blade!") + slap(target, user) + +/obj/item/melee/saber/proc/slap(mob/living/carbon/human/target, mob/living/user) + user.do_attack_animation(target, ATTACK_EFFECT_DISARM) + playsound(loc, slap_sound, 50, TRUE, -1) + target.AdjustConfused(4 SECONDS, 0, 4 SECONDS) + target.apply_damage(10, STAMINA) + add_attack_logs(user, target, "Slapped by [src]", ATKLOG_ALL) + COOLDOWN_START(src, slap_cooldown, 4 SECONDS) + /obj/item/melee/saber/suicide_act(mob/user) user.visible_message(pick("[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku!", \ "[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!"))