diff --git a/code/game/objects/items/weapons/implants/implant_krav_maga.dm b/code/game/objects/items/weapons/implants/implant_krav_maga.dm index 3ba8d039b45..0a742a9f0a9 100644 --- a/code/game/objects/items/weapons/implants/implant_krav_maga.dm +++ b/code/game/objects/items/weapons/implants/implant_krav_maga.dm @@ -19,8 +19,10 @@ var/mob/living/carbon/human/H = imp_in if(!ishuman(H)) return - style.teach(H) - qdel(src) + if(istype(H.martial_art, /datum/martial_art/krav_maga)) + style.remove(H) + else + style.teach(H,1) /obj/item/weapon/implanter/krav_maga name = "implanter (krav maga)" diff --git a/code/modules/Martial Arts/adminfu.dm b/code/modules/Martial Arts/adminfu.dm index 20c2dd8d5cd..6f8df44f53f 100644 --- a/code/modules/Martial Arts/adminfu.dm +++ b/code/modules/Martial Arts/adminfu.dm @@ -103,7 +103,7 @@ icon_state ="scroll2" var/used = 0 -/obj/item/weapon/plasma_fist_scroll/attack_self(mob/user as mob) +/obj/item/weapon/adminfu_scroll/attack_self(mob/user as mob) if(!ishuman(user)) return if(!used) diff --git a/code/modules/Martial Arts/krav_maga.dm b/code/modules/Martial Arts/krav_maga.dm index e28a79c316b..7267eec0306 100644 --- a/code/modules/Martial Arts/krav_maga.dm +++ b/code/modules/Martial Arts/krav_maga.dm @@ -72,7 +72,7 @@ "[A] leg sweeps you!") playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) D.apply_damage(5, BRUTE) - D.Weaken(4)//originally was 6, lowered since you could kill somebody in one stun + D.Weaken(2) return 1 /datum/martial_art/krav_maga/proc/quick_choke(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)//is actually lung punch @@ -140,23 +140,25 @@ datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/livi //Krav Maga Gloves -/obj/item/clothing/gloves/krav_maga - desc = "These gloves can teach you to perform Krav Maga using nanochips." - name = "black gloves" - icon_state = "black" - item_state = "bgloves" +/obj/item/clothing/gloves/color/black/krav_maga var/datum/martial_art/krav_maga/style = new -/obj/item/clothing/gloves/krav_maga/equipped(mob/user, slot) +/obj/item/clothing/gloves/color/black/krav_maga/equipped(mob/user, slot) if(!ishuman(user)) return if(slot == slot_gloves) var/mob/living/carbon/human/H = user style.teach(H,1) -/obj/item/clothing/gloves/krav_maga/dropped(mob/user) +/obj/item/clothing/gloves/color/black/krav_maga/dropped(mob/user) if(!ishuman(user)) return var/mob/living/carbon/human/H = user if(H.get_item_by_slot(slot_gloves) == src) - style.remove(H) \ No newline at end of file + style.remove(H) + +/obj/item/clothing/gloves/color/black/krav_maga/sec//more obviously named, given to sec + name = "krav maga gloves" + desc = "These gloves can teach you to perform Krav Maga using nanochips." + icon_state = "fightgloves" + item_state = "fightgloves" \ No newline at end of file diff --git a/code/modules/Martial Arts/mimejutsu.dm b/code/modules/Martial Arts/mimejutsu.dm index e69de29bb2d..79133de67f0 100644 --- a/code/modules/Martial Arts/mimejutsu.dm +++ b/code/modules/Martial Arts/mimejutsu.dm @@ -0,0 +1,119 @@ +#define MIMECHUCKS_COMBO "DH" +#define MIMESMOKE_COMBO "DD" +#define MIMEPALM_COMBO "GD" + +/datum/martial_art/mimejutsu + name = "Mimejutsu" + help_verb = /mob/living/carbon/human/proc/mimejutsu_help + +/datum/martial_art/mimejutsu/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(findtext(streak,MIMECHUCKS_COMBO)) + streak = "" + mimeChuck(A,D) + return 1 + if(findtext(streak,MIMESMOKE_COMBO)) + streak = "" + mimeSmoke(A,D) + return 1 + if(findtext(streak,MIMEPALM_COMBO)) + streak = "" + mimePalm(A,D) + return 1 + return 0 + +/datum/martial_art/mimejutsu/proc/mimeChuck(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.stunned && !D.weakened) + var/damage = rand(5, 8) + A.species.punchdamagelow + if(!damage) + playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + D.visible_message("[A] swings invisible nunchcuks at [D]..and misses?") + return 0 + + + var/obj/item/organ/external/affecting = D.get_organ(ran_zone(A.zone_sel.selecting)) + var/armor_block = D.run_armor_check(affecting, "melee") + + D.visible_message("[A] has hit [D] with invisible nuncucks!", \ + "[A] has hit [D] with a with invisible nuncuck!") + playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + + D.apply_damage(damage, STAMINA, affecting, armor_block) + add_logs(D, A, "mimechucked") + + return 1 + return basic_hit(A,D) + +/datum/martial_art/mimejutsu/proc/mimeSmoke(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + + D.visible_message("[A] throws an invisible smoke bomb!!") + + var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread() + smoke.set_up(5, 0, D.loc) + smoke.start() + + return basic_hit(A,D) + +/datum/martial_art/mimejutsu/proc/mimePalm(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.stunned && !D.weakened) + D.visible_message("[A] has barely touched [D] with thier palm!", \ + "[A] hovers thier palm over your face!") + + var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A))) + D.throw_at(throw_target, 200, 4,A) + return basic_hit(A,D) + + +/datum/martial_art/mimejutsu/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("D",D) + if(check_streak(A,D)) + return 1 + + return ..() + +/datum/martial_art/mimejutsu/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("G",D) + if(check_streak(A,D)) + return 1 + + return 1 + +/datum/martial_art/mimejutsu/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("H",D) + if(check_streak(A,D)) + return 1 + + A.do_attack_animation(D) + + return 1 + +/obj/item/weapon/mimejutsu_scroll + name = "Mimejutsu 'scroll'" + desc = "Its a beret with a note stapled to it..." + icon = 'icons/obj/clothing/hats.dmi' + icon_state = "beret" + var/used = 0 + +/obj/item/weapon/mimejutsu_scroll/attack_self(mob/user as mob) + if(!ishuman(user)) + return + if(!used) + var/mob/living/carbon/human/H = user + var/datum/martial_art/mimejutsu/F = new/datum/martial_art/mimejutsu(null) + F.teach(H) + to_chat(H, "You have learned the ancient martial art of mimes.") + used = 1 + desc = "It used to have something stapled to it..the staple is still there." + name = "beret with staple" + icon_state = "beret" + +/mob/living/carbon/human/proc/mimejutsu_help() + set name = "Recall Ancient Mimeing" + set desc = "Remember the martial techniques of Mimejutsu." + set category = "Mimejutsu" + + to_chat(usr, "You make a invisible box around yourself and recall the teachings of Mimejutsu...") + + to_chat(usr, "Mimechucks: Disarm Harm. Hits the opponent with invisible nunchucks.") + to_chat(usr, "Smokebomb: Disarm Disarm. Drops a mime smokebomb.") + to_chat(usr, "Silent Palm: Grab Disarm. Using mime energy throw someone back.") + diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 25be2232432..33cb567ba4a 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -55,6 +55,8 @@ switch(M.a_intent) if(I_HELP) + if(attacker_style && attacker_style.help_act(H, src))//adminfu only... + return 1 if(can_operate(src)) if(health >= config.health_threshold_crit) if(src.surgeries.len) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index a2847325875..652a1dc8193 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index a4934926809..d4f0b3ac57a 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index cf82594e6c6..4a41556989a 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/paradise.dme b/paradise.dme index 88ab3cfe35f..3ea018738b8 100644 --- a/paradise.dme +++ b/paradise.dme @@ -188,7 +188,6 @@ #include "code\datums\datumvars.dm" #include "code\datums\gas_mixture.dm" #include "code\datums\hud.dm" -#include "code\datums\martial.dm" #include "code\datums\material_container.dm" #include "code\datums\mind.dm" #include "code\datums\mixed.dm" @@ -1336,12 +1335,14 @@ #include "code\modules\logic\dual_input.dm" #include "code\modules\logic\logic_base.dm" #include "code\modules\logic\mono_input.dm" -#include "code\modules\Martial Arts\adminfu.dm" -#include "code\modules\Martial Arts\brawling.dm" -#include "code\modules\Martial Arts\krav_maga.dm" -#include "code\modules\Martial Arts\plasma_fist.dm" -#include "code\modules\Martial Arts\sleeping_carp.dm" -#include "code\modules\Martial Arts\wrestleing.dm" +#include "code\modules\martial arts\adminfu.dm" +#include "code\modules\martial arts\brawling.dm" +#include "code\modules\martial arts\krav_maga.dm" +#include "code\modules\martial arts\martial.dm" +#include "code\modules\martial arts\mimejutsu.dm" +#include "code\modules\martial arts\plasma_fist.dm" +#include "code\modules\martial arts\sleeping_carp.dm" +#include "code\modules\martial arts\wrestleing.dm" #include "code\modules\media\jukebox.dm" #include "code\modules\media\machinery.dm" #include "code\modules\media\mediamanager.dm"