From 8e10d085734820a66ac101a4c5eed2d489a68c23 Mon Sep 17 00:00:00 2001 From: SamCroswell Date: Sun, 27 Dec 2015 05:57:16 -0500 Subject: [PATCH 1/3] Adds "Creeping Widow" martial art --- code/modules/ninja/martial_art.dm | 181 ++++++++++++++++++++++++++++++ icons/obj/ninjaobjects.dmi | Bin 20827 -> 23317 bytes 2 files changed, 181 insertions(+) create mode 100644 code/modules/ninja/martial_art.dm diff --git a/code/modules/ninja/martial_art.dm b/code/modules/ninja/martial_art.dm new file mode 100644 index 00000000000..8c3d0fc4707 --- /dev/null +++ b/code/modules/ninja/martial_art.dm @@ -0,0 +1,181 @@ +/* + *Contains: + * Creeping Widow martial art datum + * Creeping Widow MMB override datum + * grant_ninja_martial_art proc + * Creeping Widow injector + */ + + +// Creeping Widow injector - Single use nanomachine thing that teaches people the creeping widow style. + + +/obj/item/weapon/creeping_widow_injector/ + name = "strange injector" + desc = "A strange autoinjector made of a black metal.
You can see a green liquid through the glass." + icon = 'icons/obj/ninjaobjects.dmi' + icon_state = "injector" + attack_verb = list("poked", "prodded") + var/used = 0 + +/obj/item/weapon/creeping_widow_injector/attack_self(mob/living/carbon/human/user as mob) + if(!used) + user.visible_message("You stick the [src]'s needle into your arm and press the button.", \ + "[user] sticks the [src]'s needle \his arm and presses the button.") + grant_ninja_martial_art(user) + user << "The nanomachines in the [src] flow through your bloodstream. You have been taugh the ways of the Creeping Widow.
\ + Your stikes on harm intent will deal more damage.
Using middle mouse button on a nearby person while on harm intent will send them flying backwards.
\ + Your grabs will instantly be aggressive while you are using this style.
Using middle mouse button while on harm intent and behind a person will put them in a silencing choke hold.
\ + Using middle mouse button on a nearby person while on disarm intent will wrench their wrist, causing them to drop what they are holding.
" + used = 1 + icon_state = "injector-used" + desc = "A strange autoinjector made of a black metal.
It appears to be used up and empty." + return 0 + else + user << "The [src] has been used already!" + return 1 + +// grant_ninja_martial_art proc - It is imperitive to ALWAYS use this when giving someone the Ninja martial art so that they have the middle mouse override as well. + +/proc/grant_ninja_martial_art(var/mob/living/carbon/human/target) + target.martial_art = new /datum/martial_art/ninja_martial_art() + target.middleClickOverride = new /datum/middleClickOverride/ninja_martial_art() + +// Ninja martial art datum + +/datum/martial_art/ninja_martial_art + name = "Creeping Widow Style" + var/list/attack_names = list("dragon", "eagle", "mantis", "tiger", "spider", "monkey", "snake", "crane", "xeno") // Fluff attack texts, used later in attack message generation. + var/has_choke_hold = 0 // Are we current choking a bitch? + var/has_focus = 1 //Can we user our special moves? + +/datum/martial_art/ninja_martial_art/proc/wrist_wrench(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.weakened) + if(has_focus) + has_focus = 0 + A.face_atom(D) + D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ + "[A] grabs your wrist and violently wrenches it to the side!") + playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + D.emote("scream") + D.drop_item() + D.apply_damage(5, BRUTE, pick("l_arm", "r_arm")) + D.Stun(1) + spawn(50) has_focus = 1 + return 1 + A << "You are not focused enough to use that move yet!" + return 0 + return A.pointed(D) + +/datum/martial_art/ninja_martial_art/proc/choke_hold(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.weakened) + A.face_atom(D) + if(A.dir != D.dir) // If the user's direction is not the same as the target's after A.face_atom(D) you are not behind them, and cannot use this ability. + A << "You cannot grab [D] from that angle!" + return 0 + + if(has_choke_hold) // Are we already choking someone? + A<< "You are have a target in your grip!" + return 0 + + has_choke_hold = 1 + + var/hold_name = "[pick(attack_names)] [pick("grip", "hold", "vise", "press")]" + + D.visible_message("[A] comes from behind and puts [D] in a [hold_name]!", \ + "[A]\ puts you in a [hold_name]! You are unable to speak!") + step_to(D,get_step(D,D.dir),1) + + D.grabbedby(A, 1) + var/obj/item/weapon/grab/G = A.get_active_hand() + if(G) + G.state = GRAB_NECK + + var/I = 0 + while(I < 20) // Loop to process the silence for the person being strangled so we don't have to add 20 silence all at once. + if(G == A.get_active_hand() && G.state >= GRAB_NECK) // Grab must be in the user's active hand for the duration of the strangle. + D.silent += 1 + D.adjustOxyLoss(1) + else + D.visible_message("[A] loses his grip on [D]'s neck!", \ + "[A] loses his grip on your neck!") + has_choke_hold = 0 + return 0 + I++ + sleep(5) + + A << "You feel [D] go limp in your grip." + D << "You feel your consciousness slip away as [A] strangles you!" + D.sleeping += 20 + + has_choke_hold = 0 + + return 1 + return A.pointed(D) + +/datum/martial_art/ninja_martial_art/proc/palm_strike(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.weakened) + if(has_focus) + has_focus = 0 + A.face_atom(D) + + var/strike_adjective = pick(attack_names) + D.visible_message("[A] sends [D] flying backwards with a [strike_adjective] palm strike!", \ + "[A] delivers a [strike_adjective] palm strike to you and sends you flying!") + + var/atom/throw_target = get_ranged_target_turf(D, get_dir(D, get_step_away(D, A)), 3) // Get a turf 3 tiles away from the target relative to our direction from him. + D.throw_at(throw_target, 200, 4) // Throw the poor bastard at the target we just gabbed. + + D.Weaken(2) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + spawn(50) has_focus = 1 + return 1 + A << "You are not focused enough to use that move yet!" + return 0 + return A.pointed(D) + +/datum/martial_art/ninja_martial_art/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) //Instant aggressive grab + D.grabbedby(A) + var/obj/item/weapon/grab/G = A.get_active_hand() + if(G) + G.state = GRAB_AGGRESSIVE + + return 1 + +/datum/martial_art/ninja_martial_art/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) // 10 damage punches + var/strike_name = "[pick(attack_names)] [pick("punches", "kicks", "chops", "slams", "strikes")]" + D.visible_message("[A] [strike_name] on [D]!", \ + "[A] [strike_name] you!") + D.apply_damage(10, BRUTE) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return 1 + +// Ninja middle click override, required for the special moves to function and handled in grant_ninja_martial_art + +/datum/middleClickOverride/ninja_martial_art + +/datum/middleClickOverride/ninja_martial_art/onClick(var/atom/A, var/mob/living/carbon/human/user) + if(!user.martial_art || user.martial_art.name != "Creeping Widow Style") // Checking based on name because I'm fairly certain that checking against a user's specific ninja martial arts datum versus a generic one won't work. + user.pointed(A) // If they don't have the required martial art just point at the target. + + if(!istype(A, /mob/living/carbon/human)) // Special moves only work on humans. + user.pointed(A) + return 0 + if(user.a_intent == "help") // No special move for help intent. + user.pointed(A) + return 0 + if (!(A in range(1,user))) // Is the target within one tile of us? + user.pointed(A) + return 0 + + var/datum/martial_art/ninja_martial_art/user_martial_art = user.martial_art + var/mob/living/carbon/human/target = A + + switch(user.a_intent) + if("disarm") + user_martial_art.wrist_wrench(user, target) + if("grab") + user_martial_art.choke_hold(user, target) + if("harm") + user_martial_art.palm_strike(user, target) + return 1 \ No newline at end of file diff --git a/icons/obj/ninjaobjects.dmi b/icons/obj/ninjaobjects.dmi index 6817cf66a92947ec45be85b4bc67c7de8bfffa42..07268f88f7a278df55b20f04e16c954627d6a298 100644 GIT binary patch literal 23317 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 T=`08&O{6i~ib1&jQ*bk4| From 2a62ed1dce4e5f6fa4d27b541612b22a6a7ec3fd Mon Sep 17 00:00:00 2001 From: SamCroswell Date: Sun, 27 Dec 2015 15:59:42 -0500 Subject: [PATCH 2/3] Tigercat's Optimizations --- code/modules/ninja/martial_art.dm | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/code/modules/ninja/martial_art.dm b/code/modules/ninja/martial_art.dm index 8c3d0fc4707..796b343864a 100644 --- a/code/modules/ninja/martial_art.dm +++ b/code/modules/ninja/martial_art.dm @@ -2,7 +2,6 @@ *Contains: * Creeping Widow martial art datum * Creeping Widow MMB override datum - * grant_ninja_martial_art proc * Creeping Widow injector */ @@ -22,11 +21,11 @@ if(!used) user.visible_message("You stick the [src]'s needle into your arm and press the button.", \ "[user] sticks the [src]'s needle \his arm and presses the button.") - grant_ninja_martial_art(user) - user << "The nanomachines in the [src] flow through your bloodstream. You have been taugh the ways of the Creeping Widow.
\ - Your stikes on harm intent will deal more damage.
Using middle mouse button on a nearby person while on harm intent will send them flying backwards.
\ - Your grabs will instantly be aggressive while you are using this style.
Using middle mouse button while on harm intent and behind a person will put them in a silencing choke hold.
\ - Using middle mouse button on a nearby person while on disarm intent will wrench their wrist, causing them to drop what they are holding.
" + user << "The nanomachines in the [src] flow through your bloodstream." + + var/datum/martial_art/ninja_martial_art/N = new/datum/martial_art/ninja_martial_art(null) + N.teach(user) + used = 1 icon_state = "injector-used" desc = "A strange autoinjector made of a black metal.
It appears to be used up and empty." @@ -35,12 +34,6 @@ user << "The [src] has been used already!" return 1 -// grant_ninja_martial_art proc - It is imperitive to ALWAYS use this when giving someone the Ninja martial art so that they have the middle mouse override as well. - -/proc/grant_ninja_martial_art(var/mob/living/carbon/human/target) - target.martial_art = new /datum/martial_art/ninja_martial_art() - target.middleClickOverride = new /datum/middleClickOverride/ninja_martial_art() - // Ninja martial art datum /datum/martial_art/ninja_martial_art @@ -49,6 +42,14 @@ var/has_choke_hold = 0 // Are we current choking a bitch? var/has_focus = 1 //Can we user our special moves? +/datum/martial_art/ninja_martial_art/teach(var/mob/living/carbon/human/H,var/make_temporary=0) + ..() + H.middleClickOverride = new /datum/middleClickOverride/ninja_martial_art() + H << "You have been taugh the ways of the Creeping Widow.
\ + Your stikes on harm intent will deal more damage.
Using middle mouse button on a nearby person while on harm intent will send them flying backwards.
\ + Your grabs will instantly be aggressive while you are using this style.
Using middle mouse button while on harm intent and behind a person will put them in a silencing choke hold.
\ + Using middle mouse button on a nearby person while on disarm intent will wrench their wrist, causing them to drop what they are holding.
" + /datum/martial_art/ninja_martial_art/proc/wrist_wrench(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(!D.stat && !D.weakened) if(has_focus) @@ -155,7 +156,7 @@ /datum/middleClickOverride/ninja_martial_art /datum/middleClickOverride/ninja_martial_art/onClick(var/atom/A, var/mob/living/carbon/human/user) - if(!user.martial_art || user.martial_art.name != "Creeping Widow Style") // Checking based on name because I'm fairly certain that checking against a user's specific ninja martial arts datum versus a generic one won't work. + if(!istype(user.martial_art, /datum/martial_art/ninja_martial_art)) user.pointed(A) // If they don't have the required martial art just point at the target. if(!istype(A, /mob/living/carbon/human)) // Special moves only work on humans. From b690dd8a9d6120ff02b0698b4787fc3d47327841 Mon Sep 17 00:00:00 2001 From: SamCroswell Date: Mon, 28 Dec 2015 00:21:38 -0500 Subject: [PATCH 3/3] Replaces Sleep with Paralysis --- code/modules/ninja/martial_art.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/ninja/martial_art.dm b/code/modules/ninja/martial_art.dm index 796b343864a..7b230c1e011 100644 --- a/code/modules/ninja/martial_art.dm +++ b/code/modules/ninja/martial_art.dm @@ -107,7 +107,7 @@ A << "You feel [D] go limp in your grip." D << "You feel your consciousness slip away as [A] strangles you!" - D.sleeping += 20 + D.AdjustParalysis(20) has_choke_hold = 0