From 3853782914f8bd63dde1b5450a3e1e23e84ad331 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 11 Sep 2014 14:58:27 +0200 Subject: [PATCH] Ninjas can now phase jaunt. Adds phase jaunt for a cost of 250 energy, compared to phase shift which costs 400E. Randomly jumps the ninja 5-9 tiles straight ahead. Cell use is now redacted directly in the ninjacost() proc. Some cleanup of ninja verb-add/removal. --- code/game/gamemodes/events/ninja_abilities.dm | 90 +++++++++++-------- code/game/gamemodes/events/space_ninja.dm | 68 +++++++------- 2 files changed, 90 insertions(+), 68 deletions(-) diff --git a/code/game/gamemodes/events/ninja_abilities.dm b/code/game/gamemodes/events/ninja_abilities.dm index 11109af279d..f80a056428f 100644 --- a/code/game/gamemodes/events/ninja_abilities.dm +++ b/code/game/gamemodes/events/ninja_abilities.dm @@ -14,12 +14,12 @@ They should, as I have made every effort for that to be the case. In the case that they are not, I imagine the game will run-time error like crazy. s_cooldown ticks off each second based on the suit recharge proc, in seconds. Default of 1 seconds. Some abilities have no cool down. */ -/obj/item/clothing/suit/space/space_ninja/proc/ninjacost(C = 0,X = 0) +/obj/item/clothing/suit/space/space_ninja/proc/ninjacost(C = 0, X = 0) var/mob/living/carbon/human/U = affecting if( (U.stat||U.incorporeal_move)&&X!=3 )//Will not return if user is using an adrenaline booster since you can use them when stat==1. U << "\red You must be conscious and solid to do this."//It's not a problem of stat==2 since the ninja will explode anyway if they die. return 1 - else if(C&&cell.chargeteleportation failed." - return + U.say("Ai Satsugai!") //=======//TELEPORT BEHIND MOB//=======// /*Appear behind a randomly chosen mob while a few decoy teleports appear. @@ -388,3 +368,37 @@ This is so anime it hurts. But that's the point.*/ else U << "\red There are no targets in view." return + + +/obj/item/clothing/suit/space/space_ninja/proc/straight_phase(var/slay = 0, var/min_range=5, var/max_range = 9, var/cost = 25) + if(!ninjacost(cost,1)) + var/mob/living/carbon/human/U = affecting + var/turf/destination = get_teleport_loc(U.loc,U, rand(min_range, max_range)) + var/turf/mobloc = get_turf(U.loc)//To make sure that certain things work properly below. + if(destination && istype(mobloc, /turf)) + spawn(0) + playsound(U.loc, "sparks", 50, 1) + anim(mobloc,U,'icons/mob/mob.dmi',,"phaseout",,U.dir) + + if(slay) + spawn(0) + for(var/turf/T in getline(mobloc, destination)) + spawn(0) + T.kill_creatures(U) + if(T==mobloc||T==destination) continue + spawn(0) + anim(T,U,'icons/mob/mob.dmi',,"phasein",,U.dir) + + handle_teleport_grab(destination, U) + U.loc = destination + s_coold = slay + + spawn(0) + spark_system.start() + playsound(U.loc, 'sound/effects/phasein.ogg', 25, 1) + playsound(U.loc, "sparks", 50, 1) + anim(U.loc,U,'icons/mob/mob.dmi',,"phasein",,U.dir) + return 1 + else + U << "\red The VOID-shift device is malfunctioning, teleportation failed." + return 0 diff --git a/code/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm index 57ec2bc7aec..2421a354660 100644 --- a/code/game/gamemodes/events/space_ninja.dm +++ b/code/game/gamemodes/events/space_ninja.dm @@ -639,54 +639,66 @@ As such, it's hard-coded for now. No reason for it not to be, really. playsound(loc, 'sound/effects/stealthoff.ogg', 75, 1) //=======//GENERIC VERB MODIFIERS//=======// +var/list/ninja_verbs_default = list( + /obj/item/clothing/suit/space/space_ninja/proc/ninjashift, + /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke, + /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost, + /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse, + /obj/item/clothing/suit/space/space_ninja/proc/ninjablade, + /obj/item/clothing/suit/space/space_ninja/proc/ninjastar, + /obj/item/clothing/suit/space/space_ninja/proc/ninjanet, + /obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt +) + +var/list/ninja_verbs_kamikaze = list( + /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke, + /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost, + /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse, + /obj/item/clothing/suit/space/space_ninja/proc/ninjablade, + /obj/item/clothing/suit/space/space_ninja/proc/ninjastar, + /obj/item/clothing/suit/space/space_ninja/proc/ninjaslayer, + /obj/item/clothing/suit/space/space_ninja/proc/ninjawalk, + /obj/item/clothing/suit/space/space_ninja/proc/ninjamirage +) + +var/list/ninja_verbs_equip = list( + /obj/item/clothing/suit/space/space_ninja/proc/deinit, + /obj/item/clothing/suit/space/space_ninja/proc/spideros, + /obj/item/clothing/suit/space/space_ninja/proc/stealth +) + /obj/item/clothing/suit/space/space_ninja/proc/grant_equip_verbs() verbs -= /obj/item/clothing/suit/space/space_ninja/proc/init - verbs += /obj/item/clothing/suit/space/space_ninja/proc/deinit - verbs += /obj/item/clothing/suit/space/space_ninja/proc/spideros - verbs += /obj/item/clothing/suit/space/space_ninja/proc/stealth + verbs |= ninja_verbs_equip + n_gloves.verbs += /obj/item/clothing/gloves/space_ninja/proc/toggled s_initialized = 1 /obj/item/clothing/suit/space/space_ninja/proc/remove_equip_verbs() verbs += /obj/item/clothing/suit/space/space_ninja/proc/init - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/deinit - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/spideros - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/stealth + verbs -= ninja_verbs_equip + if(n_gloves) n_gloves.verbs -= /obj/item/clothing/gloves/space_ninja/proc/toggled s_initialized = 0 /obj/item/clothing/suit/space/space_ninja/proc/grant_ninja_verbs() - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjasmoke - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjablade - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjastar - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjanet + verbs |= ninja_verbs_default s_initialized=1 slowdown=0 /obj/item/clothing/suit/space/space_ninja/proc/remove_ninja_verbs() - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjablade - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjastar - //verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjanet + verbs -= ninja_verbs_default //=======//KAMIKAZE VERBS//=======// /obj/item/clothing/suit/space/space_ninja/proc/grant_kamikaze(mob/living/carbon/U) - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjanet - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjaslayer - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjawalk - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjamirage + verbs -= ninja_verbs_default + verbs |= ninja_verbs_kamikaze verbs -= /obj/item/clothing/suit/space/space_ninja/proc/stealth @@ -707,12 +719,8 @@ As such, it's hard-coded for now. No reason for it not to be, really. /obj/item/clothing/suit/space/space_ninja/proc/remove_kamikaze(mob/living/carbon/U) if(kamikaze) - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjapulse - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjastar - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjaslayer - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjawalk - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjamirage + verbs -= ninja_verbs_kamikaze + verbs += ninja_verbs_default verbs += /obj/item/clothing/suit/space/space_ninja/proc/stealth if(n_gloves)