|
|
|
@@ -1475,9 +1475,9 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
|
|
|
|
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(
|
|
|
|
|
"<span class='danger'>[user] slaps [target] in the face!</span>",
|
|
|
|
|
"<span class='notice'>You slap [user == target ? "yourself" : target] in the face! </span>",\
|
|
|
|
|
user.visible_message(\
|
|
|
|
|
"<span class='danger'>\The [user] slaps \the [target] in the face!</span>",\
|
|
|
|
|
"<span class='notice'>You slap [user == target ? "yourself" : "\the [target]"] in the face! </span>",\
|
|
|
|
|
"You hear a slap."
|
|
|
|
|
)
|
|
|
|
|
if (!target.has_trait(TRAIT_NYMPHO))
|
|
|
|
@@ -1486,20 +1486,37 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
|
|
|
|
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))
|
|
|
|
|
user.do_attack_animation(target, ATTACK_EFFECT_ASS_SLAP)
|
|
|
|
|
user.adjustStaminaLossBuffered(3)
|
|
|
|
|
if(target.has_trait(TRAIT_ASSBLASTUSA))
|
|
|
|
|
var/hit_zone = (user.held_index_to_dir(user.active_hand_index) == "l" ? "l_":"r_") + "arm"
|
|
|
|
|
user.adjustStaminaLoss(50, affected_zone = hit_zone)
|
|
|
|
|
var/obj/item/bodypart/affecting = user.get_bodypart(hit_zone)
|
|
|
|
|
if(affecting)
|
|
|
|
|
if(affecting.receive_damage(5, 0))
|
|
|
|
|
user.update_damage_overlays()
|
|
|
|
|
user.visible_message(\
|
|
|
|
|
"<span class='danger'>\The [user] slaps \the [target]'s ass, but their hand bounces off like they hit metal!</span>",\
|
|
|
|
|
"<span class='danger'>You slap [user == target ? "your" : "\the [target]'s"] ass, but feel an intense amount of pain as you realise their buns are harder than steel!</span>",\
|
|
|
|
|
"You hear a slap."
|
|
|
|
|
)
|
|
|
|
|
playsound(target.loc, 'sound/weapons/tap.ogg', 50, 1, -1)
|
|
|
|
|
user.emote("scream")
|
|
|
|
|
return FALSE
|
|
|
|
|
|
|
|
|
|
playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1)
|
|
|
|
|
user.visible_message(
|
|
|
|
|
"<span class='danger'>[user] slaps [target]'s ass!</span>",
|
|
|
|
|
"<span class='notice'>You slap [user == target ? "your" : target + "'s"] ass! </span>",\
|
|
|
|
|
user.visible_message(\
|
|
|
|
|
"<span class='danger'>\The [user] slaps \the [target]'s ass!</span>",\
|
|
|
|
|
"<span class='notice'>You slap [user == target ? "your" : "\the [target]'s"] ass!</span>",\
|
|
|
|
|
"You hear a slap."
|
|
|
|
|
)
|
|
|
|
|
if (target.canbearoused)
|
|
|
|
|
target.adjustArousalLoss(5)
|
|
|
|
|
if (target.getArousalLoss() >= 100 && ishuman(target) && target.has_trait(TRAIT_NYMPHO) && target.has_dna())
|
|
|
|
|
if (target.getArousalLoss() >= 100 && ishuman(target) && target.has_trait(TRAIT_MASO) && 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(attacker_style && attacker_style.disarm_act(user,target))
|
|
|
|
|
return 1
|
|
|
|
@@ -1666,8 +1683,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
|
|
|
|
|
|
|
|
|
if(H.stat == CONSCIOUS && H != user && prob(I.force + ((100 - H.health) * 0.5))) // rev deconversion through blunt trauma.
|
|
|
|
|
var/datum/antagonist/rev/rev = H.mind.has_antag_datum(/datum/antagonist/rev)
|
|
|
|
|
var/datum/antagonist/gang/gang = H.mind.has_antag_datum(/datum/antagonist/gang/)
|
|
|
|
|
if(rev)
|
|
|
|
|
rev.remove_revolutionary(FALSE, user)
|
|
|
|
|
if(gang)
|
|
|
|
|
H.mind.remove_antag_datum(/datum/antagonist/gang)
|
|
|
|
|
|
|
|
|
|
if(bloody) //Apply blood
|
|
|
|
|
if(H.wear_mask)
|
|
|
|
@@ -1727,6 +1747,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
|
|
|
|
if(BP)
|
|
|
|
|
if(damage > 0 ? BP.receive_damage(damage * hit_percent * brutemod * H.physiology.brute_mod, 0) : BP.heal_damage(abs(damage * hit_percent * brutemod * H.physiology.brute_mod), 0))
|
|
|
|
|
H.update_damage_overlays()
|
|
|
|
|
if(H.has_trait(TRAIT_MASO))
|
|
|
|
|
H.adjustArousalLoss(damage * brutemod * H.physiology.brute_mod)
|
|
|
|
|
if (H.getArousalLoss() >= 100 && ishuman(H) && H.has_dna())
|
|
|
|
|
H.mob_climax(forced_climax=TRUE)
|
|
|
|
|
|
|
|
|
|
else//no bodypart, we deal damage with a more general method.
|
|
|
|
|
H.adjustBruteLoss(damage * hit_percent * brutemod * H.physiology.brute_mod)
|
|
|
|
|
if(BURN)
|
|
|
|
|