mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-22 19:47:47 +01:00
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
This commit is contained in:
@@ -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 = "<b><font size = 5>Known Attacks</font></b><br/><br/>"
|
||||
|
||||
if(default_attack)
|
||||
dat += "Current default attack: [default_attack.attack_name] - <a href='byond://?src=\ref[src];default_attk=reset_attk'>reset</a><br/><br/>"
|
||||
|
||||
for(var/datum/unarmed_attack/u_attack in species.unarmed_attacks)
|
||||
if(u_attack == default_attack)
|
||||
dat += "<b>Primarily [u_attack.attack_name]</b> - default - <a href='byond://?src=\ref[src];default_attk=reset_attk'>reset</a><br/><br/><br/>"
|
||||
else
|
||||
dat += "<b>Primarily [u_attack.attack_name]</b> - <a href='byond://?src=\ref[src];default_attk=\ref[u_attack]'>set default</a><br/><br/><br/>"
|
||||
|
||||
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
|
||||
|
||||
@@ -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("<span class='danger'>[user] tears [T.his] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!</span>")
|
||||
|
||||
/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()
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
|
||||
@@ -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("<span class='danger'>[user] [pick("punched", "threw a punch against", "struck", "slammed [TU.his] [pick(attack_noun)] into")] [target]'s [organ]!</span>") //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("<span class='danger'>[user] landed a strong [pick(attack_noun)] against [target]'s [organ]!</span>")
|
||||
|
||||
/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("<span class='danger'>[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]!</span>") //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
|
||||
|
||||
Reference in New Issue
Block a user