Files
Paradise/code/modules/martial_arts/brawling.dm
kyunkyunkyun b0463d3c83 Convert most spans to defines (#31080)
* spanish?

* aaaagain

* keep maptext

* Update robot_items.dm

* Update span_defines.dm

* compiles

* Update silicon_mob.dm

* compile
2025-12-13 23:55:48 +00:00

101 lines
3.6 KiB
Plaintext

/datum/martial_art/boxing
name = "Boxing"
weight = 1
/datum/martial_art/boxing/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
to_chat(A, SPAN_WARNING("Can't disarm while boxing!"))
return 1
/datum/martial_art/boxing/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
to_chat(A, SPAN_WARNING("Can't grab while boxing!"))
return 1
/datum/martial_art/boxing/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
var/atk_verb = pick("left hook","right hook","straight punch")
var/damage = rand(5, 8) + A.dna.species.punchdamagelow
if(!damage)
playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
D.visible_message(SPAN_WARNING("[A] has attempted to hit [D] with a [atk_verb]!"))
add_attack_logs(A, D, "Melee attacked with [src] (miss/block)", ATKLOG_ALL)
return 0
var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_selected))
var/armor_block = D.run_armor_check(affecting, MELEE)
playsound(D.loc, "boxing", 50, TRUE, -1)
D.visible_message(SPAN_DANGER("[A] has hit [D] with a [atk_verb]!"), \
SPAN_USERDANGER("[A] has hit [D] with a [atk_verb]!"))
D.apply_damage(damage, STAMINA, affecting, armor_block)
add_attack_logs(A, D, "Melee attacked with [src]", ATKLOG_ALL)
if(D.getStaminaLoss() > 50)
var/knockout_prob = D.getStaminaLoss() + rand(-15,15)
if((D.stat != DEAD) && prob(knockout_prob))
D.visible_message(SPAN_DANGER("[A] has knocked [D] out with a haymaker!"), \
SPAN_USERDANGER("[A] has knocked [D] out with a haymaker!"))
D.Weaken(10 SECONDS)
return 1
/datum/martial_art/drunk_brawling
name = "Drunken Brawling"
weight = 2
can_horizontally_grab = FALSE
/datum/martial_art/drunk_brawling/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(prob(70))
A.visible_message(SPAN_WARNING("[A] tries to grab ahold of [D], but fails!"), \
SPAN_WARNING("You fail to grab ahold of [D]!"))
return 1
var/obj/item/grab/G = D.grabbedby(A,1)
if(G)
D.visible_message(SPAN_DANGER("[A] grabs ahold of [D] drunkenly!"), \
SPAN_USERDANGER("[A] grabs ahold of [D] drunkenly!"))
return 1
/datum/martial_art/drunk_brawling/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
add_attack_logs(A, D, "Melee attacked with [src]")
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
var/atk_verb = pick("jab","uppercut","overhand punch","drunken right hook","drunken left hook")
var/damage = rand(0,6)
if(atk_verb == "uppercut")
if(prob(90))
damage = 0
else //10% chance to do a massive amount of damage
damage = 14
if(prob(50)) //they are drunk, they aren't going to land half of their hits
damage = 0
if(!damage)
playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
D.visible_message(SPAN_WARNING("[A] has attempted to hit [D] with a [atk_verb]!"))
return 1 //returns 1 so that they actually miss and don't switch to attackhand damage
var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_selected))
var/armor_block = D.run_armor_check(affecting, MELEE)
playsound(D.loc, 'sound/weapons/punch1.ogg', 25, TRUE, -1)
D.visible_message(SPAN_DANGER("[A] has hit [D] with a [atk_verb]!"), \
SPAN_USERDANGER("[A] has hit [D] with a [atk_verb]!"))
D.apply_damage(damage, BRUTE, null, armor_block)
D.apply_effect(damage, STAMINA, armor_block)
if(D.getStaminaLoss() > 50)
var/knockout_prob = D.getStaminaLoss() + rand(-15,15)
if((D.stat != DEAD) && prob(knockout_prob))
D.visible_message(SPAN_DANGER("[A] has knocked [D] out with a haymaker!"), \
SPAN_USERDANGER("[A] has knocked [D] out with a haymaker!"))
D.Paralyse(10 SECONDS)
return 1