From 5f2232ba9b03e537e6dc7f4b60bfff20dbb0f69a Mon Sep 17 00:00:00 2001 From: Greenjoe12345 <33647525+Greenjoe12345@users.noreply.github.com> Date: Wed, 21 Oct 2020 02:19:58 +0100 Subject: [PATCH] Adds the ability to choose your default unarmed attack (#7731) * Adds the ability to choose your default unarmed attack * define things, names on the attack defines itself now * changes the teshari default attack to claws, rather then bite. * Fixed a duplicated thing? * now hopefully fixed --- .../living/carbon/human/human_attackhand.dm | 43 +++++++++++++++++++ .../carbon/human/species/species_attack.dm | 7 +++ .../carbon/human/species/station/seromi.dm | 2 +- .../mob/living/carbon/human/unarmed_attack.dm | 6 +++ 4 files changed, 57 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 1e2e0491a9f..f0a34c0eaf1 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -1,3 +1,6 @@ +/mob/living/carbon/human + var/datum/unarmed_attack/default_attack + /mob/living/carbon/human/proc/get_unarmed_attack(var/mob/living/carbon/human/target, var/hit_zone) // VOREStation Edit - Begin if(nif && nif.flag_check(NIF_C_HARDCLAWS,NIF_FLAGS_COMBAT)){return unarmed_hardclaws} @@ -16,6 +19,12 @@ if(soft_type) return soft_type return G.special_attack + if(src.default_attack && src.default_attack.is_usable(src, target, hit_zone)) + if(pulling_punches) + var/datum/unarmed_attack/soft_type = src.default_attack.get_sparring_variant() + if(soft_type) + return soft_type + return src.default_attack for(var/datum/unarmed_attack/u_attack in species.unarmed_attacks) if(u_attack.is_usable(src, target, hit_zone)) if(pulling_punches) @@ -434,3 +443,37 @@ user.visible_message("\The [user] stops applying pressure to [src]'s [organ.name]!", "You stop applying pressure to [src]'s [organ.name]!") return TRUE + +/mob/living/carbon/human/verb/check_attacks() + set name = "Check Attacks" + set category = "IC" + set src = usr + + var/dat = "Known Attacks

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

" + + for(var/datum/unarmed_attack/u_attack in species.unarmed_attacks) + if(u_attack == default_attack) + dat += "Primarily [u_attack.attack_name] - default - reset


" + else + dat += "Primarily [u_attack.attack_name] - set default


" + + src << browse(dat, "window=checkattack") + +/mob/living/carbon/human/Topic(href, href_list) + if(href_list["default_attk"]) + if(href_list["default_attk"] == "reset_attk") + set_default_attack(null) + else + var/datum/unarmed_attack/u_attack = locate(href_list["default_attk"]) + if(u_attack && (u_attack in species.unarmed_attacks)) + set_default_attack(u_attack) + check_attacks() + return 1 + else + return ..() + +/mob/living/carbon/human/proc/set_default_attack(var/datum/unarmed_attack/u_attack) + default_attack = u_attack 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 3a5c3587206..27552552522 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -1,4 +1,5 @@ /datum/unarmed_attack/bite/sharp //eye teeth + attack_name = "sharp bite" attack_verb = list("bit", "chomped on") attack_sound = 'sound/weapons/bite.ogg' shredding = 0 @@ -6,12 +7,14 @@ edge = 1 /datum/unarmed_attack/diona + attack_name = "tendrils" attack_verb = list("lashed", "bludgeoned") attack_noun = list("tendril") eye_attack_text = "a tendril" eye_attack_text_victim = "a tendril" /datum/unarmed_attack/claws + attack_name = "claws" attack_verb = list("scratched", "clawed", "slashed") attack_noun = list("claws") eye_attack_text = "claws" @@ -54,6 +57,7 @@ if(5) user.visible_message("[user] tears [T.his] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!") /datum/unarmed_attack/claws/strong + attack_name = "strong claws" attack_verb = list("slashed") damage = 5 shredding = 1 @@ -67,6 +71,7 @@ damage = 15 /datum/unarmed_attack/bite/strong + attack_name = "strong bite" attack_verb = list("mauled") damage = 8 shredding = 1 @@ -75,6 +80,7 @@ damage = 10 /datum/unarmed_attack/slime_glomp + attack_name = "glomp" attack_verb = list("glomped") attack_noun = list("body") damage = 2 @@ -84,6 +90,7 @@ user.apply_stored_shock_to(target) /datum/unarmed_attack/stomp/weak + attack_name = "weak stomp" attack_verb = list("jumped on") /datum/unarmed_attack/stomp/weak/get_unarmed_damage() diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index 4e72aee57d4..c39357a3d6a 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -126,8 +126,8 @@ ) unarmed_types = list( - /datum/unarmed_attack/bite/sharp, /datum/unarmed_attack/claws, + /datum/unarmed_attack/bite/sharp, /datum/unarmed_attack/stomp/weak ) diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 2f15a4ba492..4e3facb09c7 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -2,6 +2,7 @@ var/global/list/sparring_attack_cache = list() //Species unarmed attacks /datum/unarmed_attack + var/attack_name = "fist" var/attack_verb = list("attack") // Empty hand hurt intent verb. var/attack_noun = list("fist") var/damage = 0 // Extra empty hand attack damage. @@ -109,6 +110,7 @@ var/global/list/sparring_attack_cache = list() return FALSE //return true if the unarmed override prevents further attacks /datum/unarmed_attack/bite + attack_name = "bite" attack_verb = list("bit") attack_sound = 'sound/weapons/bite.ogg' shredding = 0 @@ -127,6 +129,7 @@ var/global/list/sparring_attack_cache = list() return TRUE /datum/unarmed_attack/punch + attack_name = "punch" attack_verb = list("punched") attack_noun = list("fist") eye_attack_text = "fingers" @@ -181,6 +184,7 @@ var/global/list/sparring_attack_cache = list() user.visible_message("[user] [pick("punched", "threw a punch against", "struck", "slammed [TU.his] [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets? /datum/unarmed_attack/kick + attack_name = "kick" attack_verb = list("kicked", "kicked", "kicked", "kneed") attack_noun = list("kick", "kick", "kick", "knee strike") attack_sound = "swing_hit" @@ -224,6 +228,7 @@ var/global/list/sparring_attack_cache = list() if(5) user.visible_message("[user] landed a strong [pick(attack_noun)] against [target]'s [organ]!") /datum/unarmed_attack/stomp + attack_name = "stomp" attack_verb = null attack_noun = list("stomp") attack_sound = "swing_hit" @@ -269,6 +274,7 @@ var/global/list/sparring_attack_cache = list() if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [TU.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 + attack_name = "light hit" attack_noun = list("tap","light strike") attack_verb = list("tapped", "lightly struck") damage = 3