Adds the Strong-Arm empowered musculature implant (#22159)

* Aaaaaaaaaaaa

* IT WORKS

* Okay now make it a martial art

* Final shit

* Forgor this

* Protolathe moment

* The sprite

* Typo fixes

* Burza review

* Contra review

* Contra review

* Contra + Henri review

* Update code/modules/surgery/organs/augments_arms.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* Me when I push untested code

* Contra review pt 1

* Contra review

* I forgor

* I forgot v2

* Henri review

---------

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
DGamerL
2023-09-07 11:00:45 +01:00
committed by GitHub
co-authored by Henri215
parent 1eabd98bfa
commit 31822a1831
5 changed files with 94 additions and 0 deletions
@@ -0,0 +1,57 @@
/datum/martial_art/muscle_implant
name = "Empowered Muscle Implant Fighting"
weight = 1
/// Are we EMP'ed?
var/is_emped = FALSE
/// How much damage should our punches deal
var/punch_damage = 13
/datum/martial_art/muscle_implant/harm_act(mob/living/carbon/human/user, mob/living/carbon/human/target)
MARTIAL_ARTS_ACT_CHECK
if(HAS_TRAIT(user, TRAIT_PACIFISM))
to_chat(user, "<span class='warning'>You don't want to hurt [target]!</span>")
return FALSE
var/picked_hit_type = pick("punch", "smash", "kick")
if(ishuman(target) && target.check_shields(user, punch_damage, "[user]'s' [picked_hit_type]"))
user.do_attack_animation(target)
playsound(target.loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
return FALSE
if(is_emped)
do_the_punch(user, user)
else
do_the_punch(user, target)
playsound(target.loc, 'sound/weapons/resonator_blast.ogg', 50, TRUE)
playsound(target.loc, 'sound/weapons/genhit2.ogg', 50, TRUE)
return TRUE
/datum/martial_art/muscle_implant/proc/do_the_punch(mob/living/carbon/human/puncher, mob/living/carbon/human/punchee)
puncher.do_attack_animation(punchee, ATTACK_EFFECT_SMASH)
add_attack_logs(puncher, punchee, "Melee attacked with martial-art [src] : Punched", ATKLOG_ALL)
punchee.apply_damage(punch_damage, BRUTE, puncher.zone_selected)
if(!IS_HORIZONTAL(puncher)) //Throw them if we are standing
var/atom/throw_target = get_edge_target_turf(punchee, puncher.dir)
punchee.throw_at(throw_target, rand(1, 2), 0.5, puncher)
var/picked_hit_type = pick("punch", "smash", "kick")
punchee.visible_message(
"<span class='danger'>[puncher] [picked_hit_type]ed [punchee]!</span>",
"<span class='danger'>You're [picked_hit_type]ed by [puncher]!</span>",
"<span class='danger'>You hear a sickening sound of flesh hitting flesh!</span>"
)
if(puncher == punchee)
to_chat(puncher, "<span class='danger'>You [picked_hit_type] yourself!</span>")
else
to_chat(puncher, "<span class='danger'>You [picked_hit_type] [punchee]!</span>")
/datum/martial_art/muscle_implant/proc/emp_act(severity, mob/owner)
is_emped = TRUE
to_chat(owner, "<span class='danger'>Your arms spasm wildly!</span>")
addtimer(CALLBACK(src, PROC_REF(reboot), owner), (18 / severity) SECONDS)
/datum/martial_art/muscle_implant/proc/reboot(mob/owner)
is_emped = FALSE
to_chat(owner, "<span class='danger'>Your arms stop spasming.</span>")
@@ -333,3 +333,13 @@
reagents_list = list("blood" = 50)
build_path = /obj/item/v1_arm_shell
category = list("Weapons")
/datum/design/muscle_implant
name = "Strong-arm Empowered Musculature Implant"
desc = "An implant that enhances your muscles to punch harder and throw people back."
id = "muscle_implant"
req_tech = list("combat" = 7, "syndicate" = 4, "biotech" = 7)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 5000, MAT_METAL = 10000, MAT_TITANIUM = 3000, MAT_BLUESPACE = 2000)
build_path = /obj/item/organ/internal/cyberimp/arm/muscle
category = list("Weapons")
@@ -559,3 +559,29 @@
qdel(src)
qdel(I)
return ..()
/obj/item/organ/internal/cyberimp/arm/muscle
name = "strong-arm empowered musculature implant"
desc = "When implanted, this cybernetic implant will enhance the muscles of the arm to deliver more power-per-action. Only has to be installed in one arm."
icon_state = "muscle_imp"
parent_organ = "l_arm" //Left arm by default
slot = "l_arm_device"
actions_types = list()
var/datum/martial_art/muscle_implant/muscle_implant
/obj/item/organ/internal/cyberimp/arm/muscle/insert(mob/living/carbon/M, special, dont_remove_slot)
. = ..()
muscle_implant = new()
muscle_implant.teach(M)
/obj/item/organ/internal/cyberimp/arm/muscle/remove(mob/living/carbon/M, special)
. = ..()
muscle_implant.remove(M)
/obj/item/organ/internal/cyberimp/arm/muscle/emp_act(severity)
. = ..()
if(emp_proof)
return
muscle_implant.emp_act(severity, owner)