diff --git a/code/game/gamemodes/events/ninja_abilities.dm b/code/game/gamemodes/events/ninja_abilities.dm
index 691f2d84114..82aa8601505 100644
--- a/code/game/gamemodes/events/ninja_abilities.dm
+++ b/code/game/gamemodes/events/ninja_abilities.dm
@@ -68,12 +68,12 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo
//=======//9-8 TILE TELEPORT//=======//
//Click to to teleport 9-10 tiles in direction facing.
/obj/item/clothing/suit/space/space_ninja/proc/ninjajaunt()
- set name = "Phase Jaunt (500E)"
+ set name = "Phase Jaunt (750E)"
set desc = "Utilizes the internal VOID-shift device to rapidly transit in direction facing."
set category = "Ninja Ability"
set popup_menu = 0
- var/C = 500
+ var/C = 750
if(!ninjacost(C,1))
var/mob/living/carbon/human/U = affecting
var/turf/destination = get_teleport_loc(U.loc,U,9,1,3,1,0,1)
@@ -108,12 +108,12 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo
//=======//RIGHT CLICK TELEPORT//=======//
//Right click to teleport somewhere, almost exactly like admin jump to turf.
/obj/item/clothing/suit/space/space_ninja/proc/ninjashift(turf/T in oview())
- set name = "Phase Shift (750E)"
+ set name = "Phase Shift (1500E)"
set desc = "Utilizes the internal VOID-shift device to rapidly transit to a destination in view."
set category = null//So it does not show up on the panel but can still be right-clicked.
set src = usr.contents//Fixes verbs not attaching properly for objects. Praise the DM reference guide!
- var/C = 750
+ var/C = 1500
if(!ninjacost(C,1))
var/mob/living/carbon/human/U = affecting
var/turf/mobloc = get_turf(U.loc)//To make sure that certain things work properly below.
@@ -145,29 +145,33 @@ Not sure why this would be useful (it's not) but whatever. Ninjas need their smo
//=======//EM PULSE//=======//
//Disables nearby tech equipment.
/obj/item/clothing/suit/space/space_ninja/proc/ninjapulse()
- set name = "EM Burst (1,000E)"
+ set name = "EM Burst (1,500E)"
set desc = "Disable any nearby technology with a electro-magnetic pulse."
set category = "Ninja Ability"
set popup_menu = 0
- var/C = 1000
+ var/C = 1500
if(!ninjacost(C, 1))
var/mob/living/carbon/human/U = affecting
playsound(U.loc, 'sound/effects/EMPulse.ogg', 60, 2)
+ emp_proof = 1 // This is a pretty crappy workaround, but the alternative was creating a special EMPulse proc just for Ninjas that doesn't trigger the act on their suits. - Dave
empulse(U, 4, 6) //Procs sure are nice. Slightly weaker than wizard's disable tch.
s_coold = 2
cell.charge-=(C)
+
+ spawn(3)
+ emp_proof = 0
return
//=======//ENERGY BLADE//=======//
//Summons a blade of energy in active hand.
/obj/item/clothing/suit/space/space_ninja/proc/ninjablade()
- set name = "Energy Blade (200E)"
+ set name = "Energy Blade (500E)"
set desc = "Create a focused beam of energy in your active hand."
set category = "Ninja Ability"
set popup_menu = 0
- var/C = 200
+ var/C = 500
if(!ninjacost(C, 1))
var/mob/living/carbon/human/U = affecting
if(!kamikaze)
diff --git a/code/game/gamemodes/events/ninja_equipment.dm b/code/game/gamemodes/events/ninja_equipment.dm
index 5de2a202071..d3dc3ff0936 100644
--- a/code/game/gamemodes/events/ninja_equipment.dm
+++ b/code/game/gamemodes/events/ninja_equipment.dm
@@ -931,10 +931,10 @@ ________________________________________________________________________________
U:gloves.icon_state = "s-ninjas"
U:gloves.item_state = "s-ninjas"
U.regenerate_icons() //update their icons
- U << "\blue You are now invisible to normal detection."
+ U << "\blue You are now partially invisible to normal detection."
for(var/mob/O in oviewers(U))
O.show_message("[U.name] vanishes into thin air!",1)
- U.invisibility = INVISIBILITY_OBSERVER
+ U.alpha = 7
else
U << "\red ERROR: \black You cannot cloak with an active energy blade."
return
@@ -945,7 +945,7 @@ ________________________________________________________________________________
anim(U.loc,U,'icons/mob/mob.dmi',,"uncloak",,U.dir)
s_active=!s_active
U << "\blue You are now visible."
- U.invisibility = 0
+ U.alpha = 255
for(var/mob/O in oviewers(U))
O.show_message("[U.name] appears from thin air!",1)
icon_state = U.gender==FEMALE ? "s-ninjanf" : "s-ninjan"
@@ -991,6 +991,54 @@ ________________________________________________________________________________
else
U << "�rr�R �a��a�� No-�-� f��N� 3RR�r"
+/obj/item/clothing/suit/space/space_ninja/emp_act(severity, var/recursion_level = 0)
+ if(s_initialized && emp_proof == 0) // If the suit is initialized and vulnerable to EMP, we're in business.
+ if(s_active) // EMP will always reveal a stealthed Ninja
+ cancel_stealth()
+
+ if(istype(src.loc, /mob/living/carbon/human))
+ var/mob/living/carbon/human/U = src.loc
+
+ var/emp_result = rand(1,100)
+ switch(emp_result)
+ if(1 to 30) // Blindness, Ninja is blidned for approximately ten seconds.
+ U << "\red Your mask's visor overloads and blinds you!"
+ U.eye_blind = 3
+ U.eye_blurry = 5
+ U.disabilities |= NEARSIGHTED
+ spawn(100)
+ U.disabilities &= ~NEARSIGHTED
+ return
+
+ if(31 to 60) // Slowdown, Ninja moves at standard speeds for approximately thirty seconds.
+ U << "\red Error: Malfunction detected in movement enhancement systems."
+ n_shoes.slowdown = -1
+
+ spawn(300)
+ if(s_initialized) // Don't want to reset the shoes to hyperspeed if the suit is off, eh?
+ n_shoes.slowdown = -2
+ return
+
+ if(61 to 80) // Energy Loss, Ninja loses 1/5 of his energy reserves, or goes to zero if he would have negative energy.
+ U << "\red Error: Signifigant energy failure detected."
+
+ if (cell.charge - (cell.charge / 5) < 0) // Ensures the Ninja does not go into energy-debt.
+ cell.charge = 0
+ else
+ cell.charge -= (cell.charge / 5)
+ return
+
+ if(81 to 90) // System Shutdown, Ninja suit immediately begins shut down. Bad news.
+ U << "DANGER: Core system reboot forced!"
+ deinitialize()
+ return
+
+ if(91 to 100) // Double Up, Two EMP acts are proc'd instead of one.
+ if(recursion_level == 0) // The purpose of the recursion level is to stop a situation in which RNG hates the Ninja a lot, and starts calling absurd amounts of emp_act.
+ emp_act(2, 1)
+ emp_act(2, 1)
+ return
+
/*
===================================================================================
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -1130,7 +1178,7 @@ ________________________________________________________________________________
spawn(0)
var/turf/location = get_turf(U)
for(var/mob/living/silicon/ai/AI in player_list)
- AI << "\red Network Alert: Hacking attempt detected[location?" in [location]":". Unable to pinpoint location"]."
+ AI << "\red Network Alert: Hacking attempt detected[location?" in [location.loc.name]":". Unable to pinpoint location"]."
if(A:files&&A:files.known_tech.len)
for(var/datum/tech/current_data in S.stored_research)
U << "\blue Checking \the [current_data.name] database."
@@ -1362,33 +1410,6 @@ ________________________________________________________________________________
usr << "[mode] is active."//Leaving usr here since it may be on the floor or on a person.
usr << "Voice mimicking algorithm is set [!vchange?"inactive":"active"]."
-/*
-=======================================================================================
-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-=======================================================================================
-*/
-
-/*
-Currently WIP, once finished they will, in theory, allow the Ninja to plant bugs on Computers/APCs/SMES units.
-Possibly more later, but for now I want to get basic function working.
-*/
-
-/obj/item/weapon/hackbug
- name = "hack-bug"
- desc = "A strange device. Where did this even come from?"
- gender = PLURAL
- icon = 'icons/obj/ninjaobjects.dmi'
- icon_state = "hackbug"
- flags = FPRINT | TABLEPASS | USEDELAY
- w_class = 1.0
-
-/obj/item/weapon/hackbug/attack(atom/target as obj|turf, mob/user as mob, flag)
- if (!flag)
- return
- if (istype(target, /turf/unsimulated) || istype(target, /turf/simulated/shuttle) || istype(target, /obj/item/weapon/storage/) || istype(target, /obj/machinery/door/airlock/hatch/gamma))
- return
- user << "Planting bug..."
- target.overlays += image('icons/obj/ninjaobjects.dmi', "compoverlay")
/*
===================================================================================
diff --git a/code/modules/clothing/spacesuits/ninja.dm b/code/modules/clothing/spacesuits/ninja.dm
index 1949d9d5d8f..3f162fbf09e 100644
--- a/code/modules/clothing/spacesuits/ninja.dm
+++ b/code/modules/clothing/spacesuits/ninja.dm
@@ -56,6 +56,7 @@
//Ability function variables.
var/s_bombs = 10.0//Number of starting ninja smoke bombs.
var/a_boost = 3.0//Number of adrenaline boosters.
+ var/emp_proof = 0 // Will the suit react to EMPs? A kind of bad workaround to make Ninjas invulnerable to their own EMPs. - Dave
//Onboard AI related variables.
var/mob/living/silicon/ai/AI//If there is an AI inside the suit.
diff --git a/nano/debug.html b/nano/debug.html
index 15637f035fc..969956bacb2 100644
--- a/nano/debug.html
+++ b/nano/debug.html
@@ -16,7 +16,7 @@
-
+