From 280bb7db4c2e6173a2e8d206036035c4d50c2781 Mon Sep 17 00:00:00 2001 From: "noisomehollow@lycos.com" Date: Wed, 13 Apr 2011 01:57:35 +0000 Subject: [PATCH] #Fixed a few items not being examinable when on the hud. #Most ninja suit abilities will not be available unless the suit is initialized (such as stealth and the alike). #Ninja suit now comes with a basic energy system. It begins with 10000 and depletes 5 energy/tick. Having an energy blade depeletes +20 energy. Having stealth active depelets +25 energy. #Ninjas start with 10 smoke bombs. When used they are gone forever. #Other abilities now require and use energy. #Recovering energy is possible by clicking on APCs with an empty hand, ~1000e/5 seconds. There is no battery energy limit. Plan to add more ways to get energy later. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1438 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/obj/clothing/gloves.dm | 1 + code/defines/obj/clothing/suit.dm | 3 +- code/game/machinery/camera.dm | 22 +++-- code/game/objects/items/clothing.dm | 64 ++++++++++---- code/modules/admin/verbs/striketeam.dm | 79 ++++++++---------- code/modules/mob/living/carbon/human/human.dm | 3 +- code/modules/power/apc.dm | 31 ++++++- sound/effects/EMPulse.ogg | Bin 0 -> 19612 bytes 8 files changed, 133 insertions(+), 70 deletions(-) create mode 100644 sound/effects/EMPulse.ogg diff --git a/code/defines/obj/clothing/gloves.dm b/code/defines/obj/clothing/gloves.dm index b0a349e2415..656803a6d0d 100644 --- a/code/defines/obj/clothing/gloves.dm +++ b/code/defines/obj/clothing/gloves.dm @@ -60,6 +60,7 @@ siemens_coefficient = 0 protective_temperature = 1100 heat_transfer_coefficient = 0.05 + var/draining = 0 /obj/item/clothing/gloves/stungloves/ name = "Stungloves" diff --git a/code/defines/obj/clothing/suit.dm b/code/defines/obj/clothing/suit.dm index 59271a796bb..d0713ffb1b0 100644 --- a/code/defines/obj/clothing/suit.dm +++ b/code/defines/obj/clothing/suit.dm @@ -364,8 +364,7 @@ radiation_protection = 0.75 var/affecting = null var/active = 0 - var/charge = 10000.0 - var/maxcharge = 10000.0//Super high capacity charge but abilities eat a chunk of it./N + var/charge = 10000.0//The ninja suit does not have a top capacity. It's like a portable power sink. var/initialize = 0 var/sbombs = 10.0 diff --git a/code/game/machinery/camera.dm b/code/game/machinery/camera.dm index e05ce8cdd7f..282ddd1dfa7 100644 --- a/code/game/machinery/camera.dm +++ b/code/game/machinery/camera.dm @@ -52,11 +52,14 @@ if (istype(M, /mob/new_player)) continue //cameras can't follow people who haven't started yet DUH OR DIDN'T YOU KNOW THAT //Cameras can't track people wearing an agent card or a ninja hood. - if (istype(M, /mob/living/carbon/human) && (istype(M:wear_id, /obj/item/weapon/card/id/syndicate)||istype(M:head, /obj/item/clothing/head/helmet/space/space_ninja))) - continue + if (istype(M, /mob/living/carbon/human)) + if(istype(M:wear_id, /obj/item/weapon/card/id/syndicate)) + continue + if(istype(M:head, /obj/item/clothing/head/helmet/space/space_ninja)&&!M:head:canremove) + continue if(!istype(M.loc, /turf)) //in a closet or something, AI can't see him anyways continue - var/area/wizard_station/A = locate()//So that wizards are not tracked by the AI until they leave their sanctuary./N + var/area/wizard_station/A = locate()//So that wizards are not tracked by the AI until they leave their sanctuary. Unless they talk on radio/N if(M in A.contents) continue if(M.invisibility)//cloaked @@ -97,10 +100,15 @@ while (usr:cameraFollow == target) if (usr:cameraFollow == null) return - else if (istype(target, /mob/living/carbon/human) && istype(target:wear_id, /obj/item/weapon/card/id/syndicate)) - usr << "Follow camera mode ended." - usr:cameraFollow = null - return + else if (istype(target, /mob/living/carbon/human)) + if(istype(target:wear_id, /obj/item/weapon/card/id/syndicate)) + usr << "Follow camera mode terminated." + usr:cameraFollow = null + return + if(istype(target:head, /obj/item/clothing/head/helmet/space/space_ninja)&&!target:head:canremove) + usr << "Follow camera mode terminated." + usr:cameraFollow = null + return else if(istype(target.loc,/obj/dummy)) usr << "Follow camera mode ended." usr:cameraFollow = null diff --git a/code/game/objects/items/clothing.dm b/code/game/objects/items/clothing.dm index 19a7bc42981..13460f2b620 100644 --- a/code/game/objects/items/clothing.dm +++ b/code/game/objects/items/clothing.dm @@ -219,6 +219,7 @@ NINJA MASK ..() /obj/item/clothing/under/examine() + set src in view() ..() switch(src.sensor_mode) if(0) @@ -264,6 +265,7 @@ NINJA MASK usr << "You enable the mag-pulse traction system." /obj/item/clothing/shoes/magboots/examine() + set src in view() ..() var/state = "disabled" if(src.flags&NOSLIP) @@ -296,9 +298,33 @@ NINJA MASK //SPESS NINJA STUFF /obj/item/clothing/suit/space/space_ninja/New() -//Fix for the examine issue mentioned below. Followup: this doesn't fix anything. I'll need to take a look at how examine works. src.verbs += /obj/item/clothing/suit/space/space_ninja/proc/init +/obj/item/clothing/suit/space/space_ninja/proc/ntick(var/mob/living/carbon/human/U as mob) + set hidden = 1 + set background = 1 + + spawn while(initialize&&charge>=0)//Suit on and has power. + if(!initialize) return//When turned off the proc stops. + var/A = 5//Energy cost each tick. + if(istype(U.get_active_hand(), /obj/item/weapon/blade))//Sword check. + if(charge<=0)//If no charge left. + U.drop_item()//Sword is dropped from active hand (and deleted). + else A += 20//Otherwise, more energy consumption. + else if(istype(U.get_inactive_hand(), /obj/item/weapon/blade)) + if(charge<=0) + U.swap_hand()//swap hand + U.drop_item()//drop sword + else A += 20 + else if(active) + A += 25 + charge-=A + if(charge<0) + charge=0 + active=0 +// stat("Ninja","#Current Charge: [abs(charge/100)]%",) + sleep(10) + /obj/item/clothing/suit/space/space_ninja/proc/init() set name = "Initialize Suit" set desc = "Initializes the suit for field operation." @@ -308,6 +334,10 @@ NINJA MASK var/mob/living/carbon/human/U = usr U << "\blue Now initializing..." sleep(40) + if(U.mind.assigned_role=="Mime") + U << "\red FATAL ERROR: 382200-*#00CODE RED\nUNAUTHORIZED USE DETECTED\nCOMMENCING SUB-R0UTIN3 13...\nTERMINATING U-U-USER..." + U.gib() + return if(!istype(U.head, /obj/item/clothing/head/helmet/space/space_ninja)) U << "\red ERROR: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING..." return @@ -325,16 +355,20 @@ NINJA MASK sleep(40) U << "\blue Extending neural-net interface...\nNow monitoring brain wave pattern..." sleep(40) - if(U.stat==2) + if(U.stat==2||U.health<=0) U << "\red FATAL ERROR: 344--93#&&21 BRAIN WAV3 PATT$RN RED\nA-A-AB0RTING..." + U.head:canremove=1 + U.shoes:canremove=1 + U.gloves:canremove=1 + src.canremove=1 return U << "\blue Linking neural-net interface...\nPattern \green GREEN\blue, continuing operation." sleep(40) U << "\blue VOID-shift device status: ONLINE.\nCLOAK-tech device status: ONLINE." sleep(40) - U << "\blue Primary system status: ONLINE.\nBackup system status: ONLINE.\nCurrent energy capacity: [src.charge]." + U << "\blue Primary system status: ONLINE.\nBackup system status: ONLINE.\nCurrent energy capacity: [src.charge]." sleep(40) - U << "\blue All systems operational. Welcome to SpiderOS, [U.real_name]." + U << "\blue All systems operational. Welcome to SpiderOS, [U.real_name]." U.verbs += /mob/proc/ninjashift U.verbs += /mob/proc/ninjajaunt U.verbs += /mob/proc/ninjasmoke @@ -352,6 +386,7 @@ NINJA MASK src.affecting=U src.slowdown=0 U.shoes:slowdown-- + src.ntick(usr) else if(usr.mind&&usr.mind.special_role=="Space Ninja") usr << "\red You do not understand how this suit functions." @@ -388,13 +423,16 @@ NINJA MASK U.mind.special_verbs -= /mob/proc/ninjasmoke U.mind.special_verbs -= /mob/proc/ninjapulse U.mind.special_verbs -= /mob/proc/ninjablade - U << "\blue Logging off, [U:real_name]. Shutting down SpiderOS." + U << "\blue Logging off, [U:real_name]. Shutting down SpiderOS." sleep(40) U << "\blue Primary system status: OFFLINE.\nBackup system status: OFFLINE." sleep(40) U << "\blue VOID-shift device status: OFFLINE.\nCLOAK-tech device status: OFFLINE." + if(active)//Shutdowns stealth. + active=0 + src.verbs -= /obj/item/clothing/suit/space/space_ninja/proc/toggle sleep(40) - if(U.stat==2||U.health<=0) + if(U.stat||U.health<=0) U << "\red FATAL ERROR: 412--GG##&77 BRAIN WAV3 PATT$RN RED\nI-I-INITIATING S-SELf DeStrCuCCCT%$#@@!!$^#!..." spawn(10) U << "\red #3#" @@ -419,7 +457,6 @@ NINJA MASK U << "\blue Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: FINISHED." src.verbs += /obj/item/clothing/suit/space/space_ninja/proc/init src.verbs -= /obj/item/clothing/suit/space/space_ninja/proc/deinit - src.verbs -= /obj/item/clothing/suit/space/space_ninja/proc/toggle src.initialize=0 src.affecting=null src.slowdown=1 @@ -449,18 +486,16 @@ NINJA MASK for(var/mob/O in oviewers(usr, null)) O << "[usr.name] vanishes into thin air!" -//So apparently, examine won't show up as a verb when -//viewing an object equipped on the hud -//and that object having other verbs? -//Doesn't really make any sense /obj/item/clothing/suit/space/space_ninja/examine() + set src in view() ..() if(src.initialize) - usr << "All systems operational. Current energy capacity: [src.charge]." + usr << "All systems operational. Current energy capacity: [src.charge]." if(src.active) - usr << "The CLOAK-tech device is active." + usr << "The CLOAK-tech device is active." else - usr << "The CLOAK-tech device is offline." + usr << "The CLOAK-tech device is inactive." + usr << "There are [src.sbombs] smoke bombs remaining." /obj/item/clothing/mask/gas/space_ninja/New() src.verbs += /obj/item/clothing/mask/gas/space_ninja/proc/togglev @@ -531,6 +566,7 @@ NINJA MASK usr << "Switching mode to Night Vision." /obj/item/clothing/mask/gas/space_ninja/examine() + set src in view() ..() var/mode = "Night Vision" var/voice = "inactive" diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index 1dc8b881608..6608a000a90 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -257,26 +257,21 @@ Useful for copy pasta since I'm lazy.*/ //SPACE NINJA ABILITIES -/* -// src << "\red Something has gone awry and you are missing one or more pieces of equipment." - -/mob/proc/ninjagear() - if(!istype(src:wear_suit, /obj/item/clothing/suit/space/space_ninja)) return 0 - else if(!istype(src:head, /obj/item/clothing/head/helmet/space/space_ninja)) return 0 - else if(!istype(src:gloves, /obj/item/clothing/gloves/space_ninja)) return 0 - else if(!istype(src:shoes, /obj/item/clothing/shoes/space_ninja)) return 0 - else return 1 - -/mob/proc/ninjacost(var/cost) - if(cost>src.wear_suit:energy) +//X is optional, tells the proc to check for stealth. +/mob/proc/ninjacost(C,X) + var/mob/living/carbon/human/U = src + if(U.stat) + U << "\red You must be conscious to do this." return 0 - else - src.wear_suit:energy=src.wear_suit:energy-cost + else if(X&&U.wear_suit:active) + U << "\red You must deactivate the CLOAK-tech device prior to using this ability." + return 0 + else if(U.wear_suit:charge>=C*10) return 1 + else + U << "\red Not enough energy." + return 0 -//else if (istype(src.wear_mask, /obj/item/clothing/mask/gas/space_ninja)) - // switch(src.wear_mask:mode) -*/ //Smoke //Summons smoke in radius of user. //Not sure why this would be useful (it's not) but whatever. Ninjas need their smoke bombs. @@ -288,15 +283,16 @@ Useful for copy pasta since I'm lazy.*/ if(src.stat) src << "\red You must be conscious to do this." return - //add energy cost check - //add warning message for low energy + if(!src:wear_suit:sbombs) + src << "\red There are no more smoke bombs remaining." + return + src:wear_suit:sbombs-- + src << "\blue There are [src:wear_suit:sbombs] smoke bombs remaining." var/datum/effects/system/bad_smoke_spread/smoke = new /datum/effects/system/bad_smoke_spread() smoke.set_up(10, 0, src.loc) smoke.start() playsound(src.loc, 'bamf.ogg', 50, 2) - //subtract cost(5) - //9-10 Tile Teleport //Click to to teleport 9-10 tiles in direction facing. @@ -305,11 +301,9 @@ Useful for copy pasta since I'm lazy.*/ set desc = "Utilizes the internal VOID-shift device to rapidly transit in direction facing." set category = "Ninja" - if(src.stat) - src << "\red You must be conscious to do this." + var/C = 100 + if(!ninjacost(C,1)) return - //add energy cost check - //add warning message for low energy var/list/turfs = new/list() var/turf/picked @@ -371,11 +365,11 @@ Useful for copy pasta since I'm lazy.*/ playsound(src.loc, "sparks", 50, 1) anim(src.loc,'mob.dmi',src,"phasein") - spawn(0) //Any living mobs in teleport area are gibbed. + spawn(0)//Any living mobs in teleport area are gibbed. for(var/mob/living/M in picked) if(M==src) continue M.gib() - //subtract cost(10) + src:wear_suit:charge-=(C*10) //Right Click Teleport //Right click to teleport somewhere, almost exactly like admin jump to turf. @@ -384,11 +378,10 @@ Useful for copy pasta since I'm lazy.*/ 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. - if(src.stat) - src << "\red You must be conscious to do this." + var/C = 200 + if(!ninjacost(C,1)) return - //add energy cost check - //add warning message for low energy + if(T.density) src << "\red You cannot teleport into solid walls." return @@ -409,11 +402,11 @@ Useful for copy pasta since I'm lazy.*/ playsound(src.loc, 'sparks2.ogg', 50, 1) anim(src.loc,'mob.dmi',src,"phasein") - spawn(0) //Any living mobs in teleport area are gibbed. + spawn(0)//Any living mobs in teleport area are gibbed. for(var/mob/living/M in T) if(M==src) continue M.gib() - //subtract cost(20) + src:wear_suit:charge-=(C*10) //EMP Pulse //Disables nearby tech equipment. @@ -422,35 +415,33 @@ Useful for copy pasta since I'm lazy.*/ set desc = "Disable any nearby technology with a electro-magnetic pulse." set category = "Ninja" - if(src.stat) - src << "\red You must be conscious to do this." + var/C = 250 + if(!ninjacost(C,1)) return - //add energy cost check - //add warning message for low energy + playsound(src.loc, 'EMPulse.ogg', 60, 2) empulse(src, 4, 6) //Procs sure are nice. Slightly weaker than wizard's disable tch. - //subtract cost(25) + src:wear_suit:charge-=(C*10) -/mob/proc/ninjablade() //Summon Energy Blade //Summons a blade of energy in active hand. +/mob/proc/ninjablade() set name = "Energy Blade" set desc = "Create a focused beam of energy in your active hand." set category = "Ninja" - if(src.stat) - src << "\red You must be conscious to do this." + var/C = 10 + if(!ninjacost(C)) return - //add energy cost check - //add warning message for low energy - if(!src.get_active_hand()&&!istype(src.get_inactive_hand(), /obj/item/weapon/blade)) var/obj/item/weapon/blade/W = new() W.spark_system.start() playsound(src.loc, "sparks", 50, 1) src.put_in_hand(W) + + src:wear_suit:charge-=(C*10) /* /mob/proc/ninjastar(var/mob/living/M in oview()) */ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 80f51f66354..9f4362c6c99 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -172,7 +172,8 @@ if (src.mind) 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)) /mob/living/carbon/human/bullet_act(flag, A as obj, var/datum/organ/external/def_zone) var/shielded = 0 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index c412bf50ec2..20ab278a911 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -437,6 +437,35 @@ /obj/machinery/power/apc/attack_hand(mob/user) add_fingerprint(user) + if(ishuman(user)) + var/mob/living/carbon/human/U = user + if(istype(U.gloves, /obj/item/clothing/gloves/space_ninja)&&!U.gloves:canremove&&!U.gloves:draining) + var/obj/item/clothing/suit/space/space_ninja/S = U.wear_suit + var/obj/item/clothing/gloves/space_ninja/G = U.gloves +// emagged = 1 +// locked = 0 + user << "\blue Now charging battery..." + G.draining = 1 + if(cell&&cell.charge) + while(cell.charge>0) + var/drain = rand(500,1500) + if(cell.charge[drain] energy from the APC ([cell.charge] charge remaining)." + else break + G.draining = 0 + return + else + U << "\red This machine has run dry of power. You must find another." + return + if(opened && (!istype(user, /mob/living/silicon))) if(cell) usr.put_in_hand(cell) @@ -455,8 +484,6 @@ user.machine = src src.interact(user) - - /obj/machinery/power/apc/proc/interact(mob/user) if ( (get_dist(src, user) > 1 )) diff --git a/sound/effects/EMPulse.ogg b/sound/effects/EMPulse.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f9b7066454d35b1faeb2349e80d75d1bdaf23106 GIT binary patch literal 19612 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 Rm;zV^fK32kZ5jXoU