Merge pull request #149 from SamCroswell/master

Ninja Nerfs
This commit is contained in:
Fox-McCloud
2015-01-10 13:59:33 -05:00
4 changed files with 66 additions and 40 deletions
+12 -8
View File
@@ -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)
+52 -31
View File
@@ -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 <b>ERROR</b>: \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 << "rrR aa No-- fN 3RRr"
/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 <B>Error</B>: 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 <B>Error</B>: 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 << "<B>DANGER</B>: 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
/*
===================================================================================
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<SPACE NINJA GLOVES>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -1130,7 +1178,7 @@ ________________________________________________________________________________
spawn(0)
var/turf/location = get_turf(U)
for(var/mob/living/silicon/ai/AI in player_list)
AI << "\red <b>Network Alert: Hacking attempt detected[location?" in [location]":". Unable to pinpoint location"]</b>."
AI << "\red <b>Network Alert: Hacking attempt detected[location?" in [location.loc.name]":". Unable to pinpoint location"]</b>."
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 << "<B>[mode]</B> is active."//Leaving usr here since it may be on the floor or on a person.
usr << "Voice mimicking algorithm is set <B>[!vchange?"inactive":"active"]</B>."
/*
=======================================================================================
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<SPACE NINJA HACKBUG>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
=======================================================================================
*/
/*
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")
/*
===================================================================================
@@ -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.