#Added mechs as chargables for ninjas.

#Private lockers can now be sliced open with the ninja sword.
#Added a SpiderOS verb to the ninja suit when initialized. It acts as a lite PDA with some unique features. If I had more time, I would revise the existing PDA system to follow the format of SpiderOS which would make the former run a lot faster.
#Added an adrenaline boost ability for the ninja suit. It will near instantly remove paralysis/stun/etc but has only three uses.
#Added ninja stars ability. Ranged projectiles, the user randomly picks a target from nearby living enemies. Projectile itself is wip.
#Maximum charge for the suit is 30000, or 300%.
#More names for ninja name gen.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1451 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
noisomehollow@lycos.com
2011-04-16 07:59:38 +00:00
parent c58b5ba3ed
commit 3d04f96567
27 changed files with 350 additions and 64 deletions
+65 -4
View File
@@ -183,6 +183,8 @@ Useful for copy pasta since I'm lazy.*/
if(!ticker.mode)//Apparently, this doesn't actually prevent anything. Huh
alert("The game hasn't started yet!")
return
if(alert("Are you sure you want to send in a space ninja?",,"Yes","No")=="No")
return
TRYAGAIN
var/input = input(usr, "Please specify which mission the space ninja shall undertake.", "Specify Mission", "")
@@ -431,7 +433,7 @@ Useful for copy pasta since I'm lazy.*/
set desc = "Create a focused beam of energy in your active hand."
set category = "Ninja"
var/C = 10
var/C = 50
if(!ninjacost(C))
return
@@ -442,6 +444,65 @@ Useful for copy pasta since I'm lazy.*/
src.put_in_hand(W)
src:wear_suit:charge-=(C*10)
/*
/mob/proc/ninjastar(var/mob/living/M in oview())
*/
//Shoot Ninja Stars
//Shoots ninja stars at random people.
//This could be a lot better but I'm too tired atm.
/mob/proc/ninjastar()
set name = "Energy Star"
set desc = "Launches an energy star at a random living target."
set category = "Ninja"
var/C = 30
if(!ninjacost(C))
return
var/mob/living/target//The point here is to pick a random, living mob in oview to shoot stuff at.
var/targets[]//So yo can shoot while yo throw dawg
targets = new()
for(var/mob/living/M in oview(7))
if(M.stat==2) continue//Doesn't target corpses.
targets.Add(M)
if(targets.len)
target=pick(targets)
else
return
var/turf/curloc = src.loc
var/atom/targloc = get_turf(target)
if (!targloc || !istype(targloc, /turf) || !curloc)
return
if (targloc == curloc)
return
var/obj/bullet/neurodart/A = new /obj/bullet/neurodart(usr.loc)
A.current = curloc
A.yo = targloc.y - curloc.y
A.xo = targloc.x - curloc.x
src:wear_suit:charge-=(C*10)
A.process()
return
//Adrenaline Boost
//Wakes the user so they are able to do their thing. Also injects a decent dose of radium.
//Movement impairing would indicate drugs and the like
/mob/proc/ninjaboost()
set name = "Adrenaline Boost"
set desc = "Inject a secret chemical that will counteract all movement-impairing effects."
set category = "Ninja"
if(src.stat==2)
src << "\red You must be <b>alive</b> to do this."
return
if(src:wear_suit:aboost<=0)
src << "\red You do not have any more adrenaline boosters."
return
src.paralysis = 0
src.stunned = 0
src.weakened = 0
spawn(10)
src.say("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!")
spawn(70)
src.reagents.add_reagent("radium", 15)
src << "red You are beginning to feal the after-effects of the injection."
src:wear_suit:aboost--
@@ -170,7 +170,7 @@
if (src.mind.special_role == "Changeling")
stat("Chemical Storage", src.chem_charges)
if (istype(src.wear_suit, /obj/item/clothing/suit/space/space_ninja)&&src.wear_suit:initialize)
stat("Energy Charge", abs(src.wear_suit:charge/100))
stat("Energy Charge", round(src.wear_suit:charge/100))
/mob/living/carbon/human/bullet_act(flag, A as obj, var/datum/organ/external/def_zone)
var/shielded = 0
@@ -2793,15 +2793,15 @@ It can still be worn/put on as normal.
while(parts.len && (brute>0 || burn>0) )
var/datum/organ/external/picked = pick(parts)
var/brute_was = picked.brute_dam
var/burn_was = picked.burn_dam
picked.heal_damage(brute,burn)
brute -= (brute_was-picked.brute_dam)
burn -= (burn_was-picked.burn_dam)
parts -= picked
src.updatehealth()
src.UpdateDamageIcon()
@@ -2812,15 +2812,15 @@ It can still be worn/put on as normal.
while(parts.len && (brute>0 || burn>0) )
var/datum/organ/external/picked = pick(parts)
var/brute_was = picked.brute_dam
var/burn_was = picked.burn_dam
picked.take_damage(brute,burn)
brute -= (picked.brute_dam-brute_was)
burn -= (picked.burn_dam-burn_was)
parts -= picked
src.updatehealth()
src.UpdateDamageIcon()
@@ -603,11 +603,15 @@
G.draining = 1
if(cell&&cell.charge)
var/drain = 0
var/maxcapacity = 0
var/totaldrain = 0
while(cell.charge>0)
while(cell.charge>0&&!maxcapacity)
drain = rand(100,300)
if(cell.charge<drain)
drain = cell.charge
if(S.charge+drain>S.maxcharge)
drain = S.maxcharge-S.charge
maxcapacity = 1
if (do_after(U,10))
spark_system.start()
playsound(src.loc, "sparks", 50, 1)
+13
View File
@@ -73,6 +73,19 @@ mob/new_player
src << browse_rsc('pda_scanner.png')
src << browse_rsc('pda_signaler.png')
src << browse_rsc('pda_status.png')
//Loads icons for SpiderOS into client
src << browse_rsc('sos_1.png')
src << browse_rsc('sos_2.png')
src << browse_rsc('sos_3.png')
src << browse_rsc('sos_4.png')
src << browse_rsc('sos_5.png')
src << browse_rsc('sos_6.png')
src << browse_rsc('sos_7.png')
src << browse_rsc('sos_8.png')
src << browse_rsc('sos_9.png')
src << browse_rsc('sos_10.png')
src << browse_rsc('sos_11.png')
src << browse_rsc('sos_12.png')
//End PDA Resource Initialisation =====================================================>
+7 -3
View File
@@ -459,14 +459,18 @@
user << "\blue Now charging battery..."
G.draining = 1
if(cell&&cell.charge)
var/drain = 0
var/totaldrain = 0
var/drain = 0//To drain from battery.
var/maxcapacity = 0//Safety check for full battery.
var/totaldrain = 0//Total energy drained.
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
while(cell.charge>0)
while(cell.charge>0&&!maxcapacity)
drain = rand(100,300)
if(cell.charge<drain)
drain = cell.charge
if(S.charge+drain>S.maxcharge)
drain = S.maxcharge-S.charge
maxcapacity = 1//Reached maximum battery capacity.
if (do_after(U,10))
spark_system.start()
playsound(src.loc, "sparks", 50, 1)
+5 -2
View File
@@ -72,10 +72,13 @@
if(charge)
user << "\blue Now charging battery..."
G.draining = 1
if (do_after(user,50))
if (do_after(user,30))
U << "\blue Gained <B>[charge]</B> energy from the cell."
if(S.charge+charge>S.maxcharge)
S.charge=S.maxcharge
else
S.charge+=charge
charge = 0
S.charge+=charge
G.draining = 0
corrupt()
updateicon()
+5 -1
View File
@@ -192,13 +192,17 @@
G.draining = 1
if(charge)
var/drain = 0
var/maxcapacity = 0
var/totaldrain = 0
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
while(charge>0)
while(charge>0&&!maxcapacity)
drain = rand(100,300)
if(charge<drain)
drain = charge
if(S.charge+drain>S.maxcharge)
drain = S.maxcharge-S.charge
maxcapacity = 1
if (do_after(U,10))
spark_system.start()
playsound(src.loc, "sparks", 50, 1)