diff --git a/code/game/sound.dm b/code/game/sound.dm index 10ef2f0e1bc..f1ac96a3d0b 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -401,6 +401,14 @@ 'sound/weapons/punch4.ogg' ) +/decl/sound_category/punch_bassy_sound + sounds = list( + 'sound/weapons/punch1_bass.ogg', + 'sound/weapons/punch2_bass.ogg', + 'sound/weapons/punch3_bass.ogg', + 'sound/weapons/punch4_bass.ogg' + ) + /decl/sound_category/punchmiss_sound sounds = list( 'sound/weapons/punchmiss1.ogg', diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index d8d0097e440..af7d9a9d2cd 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -623,18 +623,30 @@ return /mob/living/carbon/human/check_attacks() - var/dat = "Known Attacks

" + var/dat = "" if(default_attack) - dat += "Current default attack: [default_attack.attack_name] - reset

" + dat += "Current default attack: [default_attack.attack_name] - Reset

" for(var/datum/unarmed_attack/u_attack in species.unarmed_attacks) + var/sparring_variant = "" + var/sparring_variant_desc = "" + if(u_attack.sparring_variant_type) + var/datum/unarmed_attack/spar_attack = u_attack.sparring_variant_type + sparring_variant = " | Sparring Variant: [capitalize_first_letters(initial(spar_attack.attack_name))]" + sparring_variant_desc = "[initial(spar_attack.desc)]
" if(u_attack == default_attack) - dat += "Primarily [u_attack.attack_name] - default - reset


" + dat += "Primarily [capitalize_first_letters(u_attack.attack_name)][sparring_variant] - default - Reset
" + dat += "Description: [u_attack.desc]
[sparring_variant_desc]" + dat += "
" else - dat += "Primarily [u_attack.attack_name] - set default


" + dat += "Primarily [capitalize_first_letters(u_attack.attack_name)][sparring_variant] - Set Default
" + dat += "Description: [u_attack.desc]
[sparring_variant_desc]" + dat += "
" - src << browse(dat, "window=checkattack") + var/datum/browser/attack_win = new(src, "checkattack", "Known Attacks", 450, 500) + attack_win.set_content(dat) + attack_win.open() /mob/living/carbon/human/Topic(href, href_list) if(href_list["default_attk"]) diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index 5d489d85009..2b319ab1981 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -1,6 +1,7 @@ /datum/unarmed_attack/bite/sharp //eye teeth attack_verb = list("bit", "chomped on") attack_sound = 'sound/weapons/bite.ogg' + desc = "Biting down on the opponent with your sharp teeth. Only possible if you aren't wearing a muzzle. Don't try biting their head, it won't work!" shredding = 0 sharp = TRUE edge = TRUE @@ -10,6 +11,7 @@ /datum/unarmed_attack/diona attack_verb = list("lashed", "bludgeoned") attack_noun = list("tendril") + desc = "Whip your enemy with a tendril! I hope we can show this on television." eye_attack_text = "a tendril" eye_attack_text_victim = "a tendril" attack_name = "tendrils" @@ -17,6 +19,7 @@ /datum/unarmed_attack/claws attack_verb = list("scratched", "clawed", "slashed") attack_noun = list("claws") + desc = "Use your in-built knives to turn your foes into mincemeat. Some call it unfair, some call it species superiority. Can't complain if they're dead*, though.
*Citation Needed" eye_attack_text = "claws" eye_attack_text_victim = "sharp claws" attack_sound = 'sound/weapons/slice.ogg' @@ -57,7 +60,11 @@ if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!") if(5) user.visible_message("[user] tears [user.get_pronoun("his")] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!") +/datum/unarmed_attack/claws/unathi + sparring_variant_type = /datum/unarmed_attack/pain_strike/heavy // unathi have heavier pain hits in this mode + /datum/unarmed_attack/claws/shredding + desc = "Use your in-built knives to turn your foes into mincemeat. These claws are durable enough for you to shred some objects open, such as airlocks. Some call it unfair, some call it species superiority. Can't complain if they're dead*, though.
*Citation Needed" shredding = TRUE attack_name = "durable claws" @@ -107,10 +114,12 @@ /datum/unarmed_attack/industrial attack_verb = list("pulverized", "crushed", "pounded") attack_noun = list("heavy fist") + desc = "Beat your opponent to death like you're a trash compactor and they're a piece of discarded Go-Go Gwok packaging! Murder has never been so efficient!" damage = 7 attack_sound = 'sound/weapons/smash.ogg' attack_name = "heavy fist" shredding = TRUE + sparring_variant_type = /datum/unarmed_attack/pain_strike/heavy /datum/unarmed_attack/industrial/heavy damage = 9 @@ -122,6 +131,7 @@ /datum/unarmed_attack/terminator attack_verb = list("pulverized", "crushed", "pounded") attack_noun = list("power fist") + desc = "Hunt down your foes and shove your arm straight through their torso with your highly advanced power fist! You are built to kill, show the world!" damage = 12 attack_sound = 'sound/weapons/beartrap_shut.ogg' attack_name = "power fist" diff --git a/code/modules/mob/living/carbon/human/species/station/human/human.dm b/code/modules/mob/living/carbon/human/species/station/human/human.dm index 5889162490c..77777140304 100644 --- a/code/modules/mob/living/carbon/human/species/station/human/human.dm +++ b/code/modules/mob/living/carbon/human/species/station/human/human.dm @@ -14,6 +14,7 @@ /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch, + /datum/unarmed_attack/palm, /datum/unarmed_attack/bite ) blurb = "Humanity originated in the Sol system, and over the last four centuries has spread colonies across a wide swathe of space. \ diff --git a/code/modules/mob/living/carbon/human/species/station/ipc/ipc_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/ipc/ipc_subspecies.dm index 00741c17844..b03726ec48c 100644 --- a/code/modules/mob/living/carbon/human/species/station/ipc/ipc_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/ipc/ipc_subspecies.dm @@ -130,7 +130,7 @@ bodytype = BODYTYPE_IPC_INDUSTRIAL mob_size = 12 - unarmed_types = list(/datum/unarmed_attack/industrial) + unarmed_types = list(/datum/unarmed_attack/industrial, /datum/unarmed_attack/palm/industrial) brute_mod = 0.8 burn_mod = 1.1 @@ -312,7 +312,7 @@ eyes = "heph_eyes" - unarmed_types = list(/datum/unarmed_attack/industrial/heavy) + unarmed_types = list(/datum/unarmed_attack/industrial/heavy, /datum/unarmed_attack/palm/industrial) slowdown = 6 brute_mod = 0.7 @@ -366,7 +366,9 @@ preview_icon = 'icons/mob/human_races/ipc/ind_xion_preview.dmi' unarmed_types = list( - /datum/unarmed_attack/industrial/xion) + /datum/unarmed_attack/industrial/xion, + /datum/unarmed_attack/palm/industrial + ) brute_mod = 0.9 grab_mod = 0.9 diff --git a/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm b/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm index 46d30093e80..12389f5b49e 100644 --- a/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm +++ b/code/modules/mob/living/carbon/human/species/station/skrell/skrell.dm @@ -14,7 +14,7 @@ bandages_icon = 'icons/mob/bandage.dmi' eyes = "skrell_eyes_s" primitive_form = SPECIES_MONKEY_SKRELL - unarmed_types = list(/datum/unarmed_attack/punch, /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick) + unarmed_types = list(/datum/unarmed_attack/punch, /datum/unarmed_attack/palm, /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick) blurb = "An amphibious species, Skrell come from the star system known as Nralakk, coined 'Jargon' by \ humanity.

Skrell are a highly advanced, ancient race who place knowledge as the highest ideal. \ diff --git a/code/modules/mob/living/carbon/human/species/station/tajara/tajara.dm b/code/modules/mob/living/carbon/human/species/station/tajara/tajara.dm index 1f0e78120be..1ad310ad1b4 100644 --- a/code/modules/mob/living/carbon/human/species/station/tajara/tajara.dm +++ b/code/modules/mob/living/carbon/human/species/station/tajara/tajara.dm @@ -14,6 +14,7 @@ /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, + /datum/unarmed_attack/palm, /datum/unarmed_attack/bite/sharp ) darksight = 8 diff --git a/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm b/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm index 16d4247a6c4..fb1463db703 100644 --- a/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm +++ b/code/modules/mob/living/carbon/human/species/station/unathi/unathi.dm @@ -13,7 +13,8 @@ unarmed_types = list( /datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, - /datum/unarmed_attack/claws, + /datum/unarmed_attack/claws/unathi, + /datum/unarmed_attack/palm/unathi, /datum/unarmed_attack/bite/sharp ) primitive_form = SPECIES_MONKEY_UNATHI diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 4b6072a52ab..1835ac356a0 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -4,6 +4,7 @@ var/global/list/sparring_attack_cache = list() /datum/unarmed_attack var/attack_verb = list("attack") // Empty hand hurt intent verb. var/attack_noun = list("fist") + var/desc = "A simple unarmed attack." var/damage = 0 // Extra empty hand attack damage. var/attack_sound = /decl/sound_category/punch_sound var/miss_sound = /decl/sound_category/punchmiss_sound @@ -12,7 +13,7 @@ var/global/list/sparring_attack_cache = list() var/edge = FALSE var/damage_type = BRUTE - var/sparring_variant_type = /datum/unarmed_attack/light_strike + var/sparring_variant_type = /datum/unarmed_attack/pain_strike var/eye_attack_text var/eye_attack_text_victim @@ -130,6 +131,7 @@ var/global/list/sparring_attack_cache = list() /datum/unarmed_attack/bite attack_verb = list("bit") attack_sound = 'sound/weapons/bite.ogg' + desc = "Biting down on the opponent with your teeth. Only possible if you aren't wearing a muzzle. Don't try biting their head, it won't work!" shredding = 0 damage = 0 sharp = 0 @@ -148,6 +150,7 @@ var/global/list/sparring_attack_cache = list() /datum/unarmed_attack/punch attack_verb = list("punched") attack_noun = list("fist") + desc = "A classic, beating the nonsense out of your enemies with your arm clubs. The damage is variable, but it's versatile and you will never* lose them.
*Almost Never" eye_attack_text = "fingers" eye_attack_text_victim = "digits" damage = 0 @@ -199,10 +202,27 @@ var/global/list/sparring_attack_cache = list() else user.visible_message("[user] [pick("punched", "threw a punch against", "struck", "slammed their [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets? +/datum/unarmed_attack/palm // attacking with a fist generally gives higher DPS, this is for style points + attack_verb = list("smacked") // Empty hand hurt intent verb. + attack_noun = list("palm") + desc = "Striking your opponent with your palm. Certainly a method to do damage to flesh beneath the skin without risking your knuckles. This method of attack showcases some more restraint, the damage output is more stable, too." + damage = 2 + attack_name = "palm" + +/datum/unarmed_attack/palm/unathi // only one more damage, pretty much just for show + attack_sound = /decl/sound_category/punch_bassy_sound + desc = "Striking your opponent with your palm. A method of dishing out damage without risking your claws or shredding your opponent to ribbons. This method of attack showcases some more restraint, the damage output is more stable, too." + damage = 3 + +/datum/unarmed_attack/palm/industrial + desc = "Striking your opponent with your palm. Certainly a method to do damage to flesh beneath the skin without risking your knuckles. This method of attack showcases some more restraint, but you're still going to lay on the hurt." + damage = 5 + /datum/unarmed_attack/kick attack_verb = list("kicked", "kicked", "kicked", "kneed") attack_noun = list("kick", "kick", "kick", "knee strike") attack_sound = /decl/sound_category/swing_hit_sound + desc = "A high risk, pretty low reward move. It could be useful if your shoes has a knife sticking out the front, or if you're a trained martial arts master. Make sure to target the lower parts of the body, or else you won't be able to reach!" damage = 0 attack_name = "kick" @@ -248,6 +268,7 @@ var/global/list/sparring_attack_cache = list() attack_verb = null attack_noun = list("stomp") attack_sound = /decl/sound_category/swing_hit_sound + desc = "An incredible tactic for turning a downed opponent into tenderized meat! Stomping is a safe and sound method of dispatching downed enemies, but it only works if they're already lying down." damage = 0 attack_name = "stomp" @@ -290,13 +311,22 @@ var/global/list/sparring_attack_cache = list() if(1 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed [user.get_pronoun("his")] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!") if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [user.get_pronoun("his")] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/ -/datum/unarmed_attack/light_strike +/datum/unarmed_attack/pain_strike damage_type = PAIN attack_noun = list("tap","light strike") attack_verb = list("tapped", "lightly struck") + desc = "Sparring: A light strike to your opponent. So light, it won't even leave a mark! They WILL feel this, but will suffer no dangerous side effect, unless you punch them into cardiac arrest!" damage = 2 shredding = 0 damage = 0 sharp = 0 edge = FALSE attack_name = "light hit" + +/datum/unarmed_attack/pain_strike/heavy + attack_noun = list("smack", "heavy strike") + attack_verb = list("smacked", "strongly struck") + desc = "Sparring: A heavy strike to your opponent. With poise and precision, no evidence will be left behind! They WILL ABSOLUTELY feel this, but will suffer no dangerous side effect, unless you punch them into cardiac arrest! Show off your might!" + damage = 4 + attack_name = "heavy hit" + attack_sound = /decl/sound_category/punch_bassy_sound \ No newline at end of file diff --git a/html/changelogs/geeves-martial_arts_remaster.yml b/html/changelogs/geeves-martial_arts_remaster.yml new file mode 100644 index 00000000000..e6149a6b8ea --- /dev/null +++ b/html/changelogs/geeves-martial_arts_remaster.yml @@ -0,0 +1,9 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Revamped the Check Attacks menu. All attacks now have descriptions that roughly give you an idea how they work." + - rscadd: "Added a palm strike option to everyone, for when you're a martial arts character or when you have claws and don't want to instantly murder someone." + - rscadd: "Added sparring info to the check attacks menu, this will show you which type of attack you will do when you put on Pulled Punches." + - rscadd: "Unathi and Industrial IPCs have the option to use Heavy sparring attacks to show their martial dominance in the field. These are their defaults, but they can use the palm strike attack sparring method to dial it back." \ No newline at end of file diff --git a/sound/weapons/punch1_bass.ogg b/sound/weapons/punch1_bass.ogg new file mode 100644 index 00000000000..8b45a8149c2 Binary files /dev/null and b/sound/weapons/punch1_bass.ogg differ diff --git a/sound/weapons/punch2_bass.ogg b/sound/weapons/punch2_bass.ogg new file mode 100644 index 00000000000..d0de60ffd96 Binary files /dev/null and b/sound/weapons/punch2_bass.ogg differ diff --git a/sound/weapons/punch3_bass.ogg b/sound/weapons/punch3_bass.ogg new file mode 100644 index 00000000000..a8b7797b1be Binary files /dev/null and b/sound/weapons/punch3_bass.ogg differ diff --git a/sound/weapons/punch4_bass.ogg b/sound/weapons/punch4_bass.ogg new file mode 100644 index 00000000000..1e6c7d883ed Binary files /dev/null and b/sound/weapons/punch4_bass.ogg differ