diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 15e8048926..7cab82149d 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -79,6 +79,8 @@ #define ATTACK_EFFECT_SMASH "smash" #define ATTACK_EFFECT_CLAW "claw" #define ATTACK_EFFECT_DISARM "disarm" +#define ATTACK_EFFECT_ASS_SLAP "ass_slap" +#define ATTACK_EFFECT_FACE_SLAP "face_slap" #define ATTACK_EFFECT_BITE "bite" #define ATTACK_EFFECT_MECHFIRE "mech_fire" #define ATTACK_EFFECT_MECHTOXIN "mech_toxin" diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 1bb68fea05..d68c936909 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1457,39 +1457,51 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) // CITADEL EDIT slap mouthy gits and booty - var/aim_for_mouth = user.zone_selected == "mouth" - var/target_on_help_and_unarmed = target.a_intent == INTENT_HELP && !target.get_active_held_item() + var/aim_for_mouth = user.zone_selected == "mouth" + var/target_on_help = target.a_intent == INTENT_HELP var/target_aiming_for_mouth = target.zone_selected == "mouth" var/target_restrained = target.restrained() - if(aim_for_mouth && ( target_on_help_and_unarmed || target_restrained || target_aiming_for_mouth)) - playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1) - user.visible_message("[user] slaps [target] in the face!", - "You slap [target] in the face! ",\ - "You hear a slap.") - if (!target.has_trait(TRAIT_NYMPHO)) - stop_wagging_tail(target) - return FALSE + var/same_dir = (target.dir & user.dir) var/aim_for_groin = user.zone_selected == "groin" var/target_aiming_for_groin = target.zone_selected == "groin" - if(aim_for_groin && (target_on_help_and_unarmed || target_restrained || target_aiming_for_groin)) + + if(target.check_block()) //END EDIT + target.visible_message("[target] blocks [user]'s disarm attempt!") + return 0 + else if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) + to_chat(user, "You're too exhausted!") + return FALSE + + else if(aim_for_mouth && ( target_on_help || target_restrained || target_aiming_for_mouth)) playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1) - user.visible_message("[user] slaps [target]'s ass!", - "You slap [target]'s ass! ",\ - "You hear a slap.") + + user.visible_message( + "[user] slaps [target] in the face!", + "You slap [user == target ? "yourself" : target] in the face! ",\ + "You hear a slap." + ) + if (!target.has_trait(TRAIT_NYMPHO)) + stop_wagging_tail(target) + user.do_attack_animation(target, ATTACK_EFFECT_FACE_SLAP) + user.adjustStaminaLossBuffered(3) + return FALSE + else if(aim_for_groin && (target == user || target.lying || same_dir) && (target_on_help || target_restrained || target_aiming_for_groin)) + playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1) + user.visible_message( + "[user] slaps [target]'s ass!", + "You slap [user == target ? "your" : target + "'s"] ass! ",\ + "You hear a slap." + ) if (target.canbearoused) target.adjustArousalLoss(5) if (target.getArousalLoss() >= 100 && ishuman(target) && target.has_trait(TRAIT_NYMPHO) && target.has_dna()) target.mob_climax(forced_climax=TRUE) if (!target.has_trait(TRAIT_NYMPHO)) stop_wagging_tail(target) + user.do_attack_animation(target, ATTACK_EFFECT_ASS_SLAP) + user.adjustStaminaLossBuffered(3) return FALSE - else if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) - to_chat(user, "You're too exhausted.") - return FALSE - else if(target.check_block()) //END EDIT - target.visible_message("[target] blocks [user]'s disarm attempt!") - return 0 - if(attacker_style && attacker_style.disarm_act(user,target)) + else if(attacker_style && attacker_style.disarm_act(user,target)) return 1 else user.do_attack_animation(target, ATTACK_EFFECT_DISARM) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 70a5a71652..29086033c8 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ