From 3d04f96567a9d2bc42bf3b618f90846ffb620542 Mon Sep 17 00:00:00 2001 From: "noisomehollow@lycos.com" Date: Sat, 16 Apr 2011 07:59:38 +0000 Subject: [PATCH] #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 --- code/defines/obj/clothing/suit.dm | 11 +- code/game/mecha/mecha.dm | 13 +- code/game/objects/closets/secure/personal.dm | 25 +- code/game/objects/items/clothing.dm | 217 ++++++++++++++++-- code/game/objects/secure_closets.dm | 7 +- code/modules/admin/verbs/striketeam.dm | 69 +++++- code/modules/mob/living/carbon/human/human.dm | 18 +- .../modules/mob/living/silicon/robot/robot.dm | 6 +- code/modules/mob/new_player/new_player.dm | 13 ++ code/modules/power/apc.dm | 10 +- code/modules/power/cell.dm | 7 +- code/modules/power/smes.dm | 6 +- config/names/ninjaname.txt | 3 +- config/names/ninjatitle.txt | 6 +- icons/spideros_icons/sos_1.png | Bin 0 -> 271 bytes icons/spideros_icons/sos_10.png | Bin 0 -> 243 bytes icons/spideros_icons/sos_11.png | Bin 0 -> 226 bytes icons/spideros_icons/sos_12.png | Bin 0 -> 234 bytes icons/spideros_icons/sos_2.png | Bin 0 -> 249 bytes icons/spideros_icons/sos_3.png | Bin 0 -> 226 bytes icons/spideros_icons/sos_4.png | Bin 0 -> 260 bytes icons/spideros_icons/sos_5.png | Bin 0 -> 246 bytes icons/spideros_icons/sos_6.png | Bin 0 -> 241 bytes icons/spideros_icons/sos_7.png | Bin 0 -> 242 bytes icons/spideros_icons/sos_8.png | Bin 0 -> 242 bytes icons/spideros_icons/sos_9.png | Bin 0 -> 247 bytes tgstation.dme | 3 +- 27 files changed, 350 insertions(+), 64 deletions(-) create mode 100644 icons/spideros_icons/sos_1.png create mode 100644 icons/spideros_icons/sos_10.png create mode 100644 icons/spideros_icons/sos_11.png create mode 100644 icons/spideros_icons/sos_12.png create mode 100644 icons/spideros_icons/sos_2.png create mode 100644 icons/spideros_icons/sos_3.png create mode 100644 icons/spideros_icons/sos_4.png create mode 100644 icons/spideros_icons/sos_5.png create mode 100644 icons/spideros_icons/sos_6.png create mode 100644 icons/spideros_icons/sos_7.png create mode 100644 icons/spideros_icons/sos_8.png create mode 100644 icons/spideros_icons/sos_9.png diff --git a/code/defines/obj/clothing/suit.dm b/code/defines/obj/clothing/suit.dm index 9a08084388..f1168b7de1 100644 --- a/code/defines/obj/clothing/suit.dm +++ b/code/defines/obj/clothing/suit.dm @@ -364,9 +364,16 @@ radiation_protection = 0.75 var/affecting = null var/active = 0 - var/charge = 10000.0//The ninja suit does not have a top capacity. It's like a portable power sink. + var/charge = 9000.0//Starts at 90% of normal capacity. + var/maxcharge = 30000.0//I want the suit upgradable if the ninja is able to find the parts but for now this'll do. var/initialize = 0 - var/sbombs = 10.0 + var/spideros = 1//Mode of SpiderOS. 1=main menu||2=medical screen||3=atmos check||4=notes/misc + var/sbombs = 10.0//Number of starting ninja smoke bombs. + var/aboost = 3.0//Number of adrenaline boosts. + var/chem1 = 3.0//Dylovene/Anti Tox + var/chem2 = 3.0//Dexalin Plus + var/chem3 = 3.0//Tricordazine + var/chem4 = 3.0//Spacelin /obj/item/clothing/suit/space/pirate name = "pirate coat" diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index d21ad8ded2..b6f5886cb7 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -299,7 +299,7 @@ /obj/mecha/attack_hand(mob/user as mob) src.log_message("Attack by hand/paw. Attacker - [user].",1) -/* if(ishuman(user)) + if(ishuman(user)) var/mob/living/carbon/human/U = user if(istype(U.gloves, /obj/item/clothing/gloves/space_ninja)&&U.gloves:candrain&&!U.gloves:draining) var/obj/item/clothing/suit/space/space_ninja/S = U.wear_suit @@ -309,13 +309,16 @@ G.draining = 1 if(get_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.chargeS.maxcharge) + drain = S.maxcharge-S.charge + maxcapacity = 1 + if (call(/proc/do_after)(U,10))//The mecha do_after proc was being called here instead of the mob one. spark_system.start() playsound(src.loc, "sparks", 50, 1) cell.charge-=drain @@ -327,7 +330,7 @@ return else U << "\red The exosuit's battery has run dry of power. You must find another source." - return*/ + return if (user.mutations & 8 && !prob(src.deflect_chance)) src.take_damage(15) src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) diff --git a/code/game/objects/closets/secure/personal.dm b/code/game/objects/closets/secure/personal.dm index 8662387220..6dcbc5259b 100644 --- a/code/game/objects/closets/secure/personal.dm +++ b/code/game/objects/closets/secure/personal.dm @@ -39,15 +39,22 @@ src.desc = "Owned by [I.registered]." else user << "\red Access Denied" - else if(istype(W, /obj/item/weapon/card/emag) && !src.broken) - src.broken = 1 - src.locked = 0 - src.desc = "It appears to be broken." - src.icon = 'closet.dmi' - src.icon_state = "securebroken" - for(var/mob/O in viewers(user, 3)) - if ((O.client && !( O.blinded ))) - O << text("\blue The locker has been broken by [user] with an electromagnetic card!") + else if( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/blade)) && !src.broken) + broken = 1 + locked = 0 + desc = "It appears to be broken." + icon_state = src.icon_broken + if(istype(W, /obj/item/weapon/blade)) + var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread() + spark_system.set_up(5, 0, src.loc) + spark_system.start() + playsound(src.loc, 'blade1.ogg', 50, 1) + playsound(src.loc, "sparks", 50, 1) + for(var/mob/O in viewers(user, 3)) + O.show_message(text("\blue The locker has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2) + else + for(var/mob/O in viewers(user, 3)) + O.show_message(text("\blue The locker has been broken by [] with an electromagnetic card!", user), 1, text("You hear a faint electrical spark."), 2) else user << "\red Access Denied" return diff --git a/code/game/objects/items/clothing.dm b/code/game/objects/items/clothing.dm index f511b6b3a8..8a8b4bdf6b 100644 --- a/code/game/objects/items/clothing.dm +++ b/code/game/objects/items/clothing.dm @@ -371,16 +371,20 @@ NINJA MASK U.verbs += /mob/proc/ninjashift U.verbs += /mob/proc/ninjajaunt U.verbs += /mob/proc/ninjasmoke + U.verbs += /mob/proc/ninjaboost U.verbs += /mob/proc/ninjapulse U.verbs += /mob/proc/ninjablade + U.verbs += /mob/proc/ninjastar U.mind.special_verbs += /mob/proc/ninjashift U.mind.special_verbs += /mob/proc/ninjajaunt U.mind.special_verbs += /mob/proc/ninjasmoke + U.mind.special_verbs += /mob/proc/ninjaboost U.mind.special_verbs += /mob/proc/ninjapulse U.mind.special_verbs += /mob/proc/ninjablade + U.mind.special_verbs += /mob/proc/ninjastar 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/toggle + verbs += /obj/item/clothing/suit/space/space_ninja/proc/spideros U.gloves.verbs += /obj/item/clothing/gloves/space_ninja/proc/toggled initialize=1 affecting=U @@ -416,21 +420,25 @@ NINJA MASK U.verbs -= /mob/proc/ninjashift U.verbs -= /mob/proc/ninjajaunt U.verbs -= /mob/proc/ninjasmoke + U.verbs -= /mob/proc/ninjaboost U.verbs -= /mob/proc/ninjapulse U.verbs -= /mob/proc/ninjablade + U.verbs -= /mob/proc/ninjastar U.mind.special_verbs -= /mob/proc/ninjashift U.mind.special_verbs -= /mob/proc/ninjajaunt U.mind.special_verbs -= /mob/proc/ninjasmoke + U.mind.special_verbs -= /mob/proc/ninjaboost U.mind.special_verbs -= /mob/proc/ninjapulse U.mind.special_verbs -= /mob/proc/ninjablade + U.mind.special_verbs -= /mob/proc/ninjastar U << "\blue Logging off, [U:real_name]. Shutting down SpiderOS." + verbs -= /obj/item/clothing/suit/space/space_ninja/proc/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 - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/toggle sleep(40) if(U.stat||U.health<=0) U << "\red FATAL ERROR: 412--GG##&77 BRAIN WAV3 PATT$RN RED\nI-I-INITIATING S-SELf DeStrCuCCCT%$#@@!!$^#!..." @@ -464,29 +472,193 @@ NINJA MASK slowdown=1 return -/obj/item/clothing/suit/space/space_ninja/proc/toggle() - set name = "Toggle Stealth" - set desc = "Toggles the internal CLOAK-tech on or off." +/obj/item/clothing/suit/space/space_ninja/proc/spideros() + set name = "Display SpiderOS" + set desc = "Utilize built-in computer system." set category = "Object" - if(usr:wear_suit!=src||!src.initialize) - usr << "\red Your suit must be worn and active to use this function." - return - if(active) - spawn(0) - anim(usr.loc,'mob.dmi',usr,"uncloak") - active=0 - usr << "\blue You are now visible." - for(var/mob/O in oviewers(usr, null)) - O << "[usr.name] appears from thin air!" - + var/mob/living/carbon/human/U = usr + var/dat = "SpiderOS" + if(spideros==1) + dat += " Refresh" + dat += " | Close" else - spawn(0) - anim(usr.loc,'mob.dmi',usr,"cloak") - active=1 - usr << "\blue You are now invisible to normal detection." - for(var/mob/O in oviewers(usr, null)) - O << "[usr.name] vanishes into thin air!" + dat += " Refresh" + dat += " | Main Menu" + dat += " | Close" + dat += "
" + dat += "

SpiderOS v.1.34

" + dat += "Welcome, [U.real_name].
" + dat += "
" + dat += " Current Time: [round(world.time / 36000)+12]:[(world.time / 600 % 60) < 10 ? add_zero(world.time / 600 % 60, 1) : world.time / 600 % 60]
" + dat += " Battery Life: [round(charge/100)]%
" + dat += " Smoke Bombs: [sbombs]
" + dat += "
" + + switch(spideros)//Should be easy to add new functions or windows. + if(1) + dat += "

Available Functions:

" + dat += "" + if(2) + dat += "

Medical Report:

" + if(U.dna) + dat += "Fingerprints: [md5(U.dna.uni_identity)]
" + dat += "Unique identity: [U.dna.unique_enzymes]
" + dat += "

Overall Status: [U.stat > 1 ? "dead" : "[U.health]% healthy"]

" + dat += "Oxygen loss: [U.oxyloss]" + dat += " | Toxin levels: [U.toxloss]
" + dat += "Burn severity: [U.fireloss]" + dat += " | Brute trauma: [U.bruteloss]
" + dat += "Body Temperature: [U.bodytemperature-T0C]°C ([U.bodytemperature*1.8-459.67]°F)
" + if(U.virus) + dat += "Warning Virus Detected. Name: [U.virus.name].Type: [U.virus.spread]. Stage: [U.virus.stage]/[U.virus.max_stages]. Possible Cure: [U.virus.cure].
" + dat += "" + if(3) + dat += "

Atmospheric Scan:

" + var/turf/T = get_turf_or_move(U.loc) + if (isnull(T)) + dat += "Unable to obtain a reading.
" + else + var/datum/gas_mixture/environment = T.return_air() + + var/pressure = environment.return_pressure() + var/total_moles = environment.total_moles() + + dat += "Air Pressure: [round(pressure,0.1)] kPa" + + if (total_moles) + var/o2_level = environment.oxygen/total_moles + var/n2_level = environment.nitrogen/total_moles + var/co2_level = environment.carbon_dioxide/total_moles + var/plasma_level = environment.toxins/total_moles + var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level) + dat += "" + if(unknown_level > 0.01) + dat += "OTHER: [round(unknown_level)]%
" + + dat += "Temperature: [round(environment.temperature-T0C)]°C" + if(4) + dat += "

Anonymous Messenger:

"//Anonymous because the receiver will not know the sender's identity. + dat += "

Detected PDAs:

" + dat += "" + if (count == 0) + dat += "None detected.
" + if(5) + dat += "

Other Functions:

" + + dat += "" + + U << browse(dat,"window=spideros;size=400x444;border=1;can_resize=0;can_close=0;can_minimize=0") + +/obj/item/clothing/suit/space/space_ninja/Topic(href, href_list) + ..() + var/mob/living/carbon/human/U = usr + if(U.stat||U.wear_suit!=src||!initialize)//Check to make sure the guy is wearing the suit after clicking and it's on. + U << "\red Your suit must be worn and active to use this function." + U << browse(null, "window=spideros")//Closes the window. + return + + switch(href_list["choice"]) + if("0") + U << browse(null, "window=spideros") + return + if("1")//Refresh, goes to the end of the proc. + if("2")//Back to main menu + spideros=1 + if("3") + if(active) + spawn(0) + anim(usr.loc,'mob.dmi',usr,"uncloak") + active=0 + U << "\blue You are now visible." + for(var/mob/O in oviewers(usr, null)) + O << "[usr.name] appears from thin air!" + else + spawn(0) + anim(usr.loc,'mob.dmi',usr,"cloak") + active=1 + U << "\blue You are now invisible to normal detection." + for(var/mob/O in oviewers(usr, null)) + O << "[usr.name] vanishes into thin air!" + if("4") + spideros=2 + if("5") + spideros=3 + if("6") + spideros=4 + if("7") + spideros=5 + if("Dylovene")//These names really don't matter for specific functions but it's easier to use descriptive names. + if(chem1<=0) + U << "\red Error: the suit cannot perform this function." + else + U.reagents.add_reagent("anti_toxin", 15) + chem1-- + U << "You feel a tiny prick and a sudden rush of liquid in to your veins." + if("Dexalin Plus") + if(chem2<=0) + U << "\red Error: the suit cannot perform this function." + else + U.reagents.add_reagent("dexalinp", 15) + chem2-- + U << "You feel a tiny prick and a sudden rush of liquid in to your veins." + if("Tricordazine") + if(chem3<=0) + U << "\red Error: the suit cannot perform this function." + else + U.reagents.add_reagent("tricordrazine", 15) + chem3-- + U << "You feel a tiny prick and a sudden rush of liquid in to your veins." + if("Spacelin") + if(chem4<=0) + U << "\red Error: the suit cannot perform this function." + else + U.reagents.add_reagent("spaceacillin", 15) + chem4-- + U << "You feel a tiny prick and a sudden rush of liquid in to your veins." + else//Leaving this for the messenger because it's an awesome solution. + var/obj/item/device/pda/P = locate(href_list["choice"]) + var/t = input(U, "Please enter untraceable message.") as text + t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN) + if(!t||U.stat||U.wear_suit!=src||!initialize)//Wow, another one of these. Man... + return + if(isnull(P)||P.toff)//So it doesn't freak out if the object no-longer exists. + U << "\red Error: unable to deliver message." + spideros() + return + P.tnote += "← From unknown source:
[t]
" + if (!P.silent) + playsound(P.loc, 'twobeep.ogg', 50, 1) + for (var/mob/O in hearers(3, P.loc)) + O.show_message(text("\icon[P] *[P.ttone]*")) + P.overlays = null + P.overlays += image('pda.dmi', "pda-r") + spideros()//Refreshes the screen. + return /obj/item/clothing/suit/space/space_ninja/examine() set src in view() @@ -498,6 +670,7 @@ NINJA MASK else usr << "The CLOAK-tech device is inactive." usr << "There are [src.sbombs] smoke bombs remaining." + usr << "There are [src.aboost] adrenaline injectors remaining." /obj/item/clothing/gloves/space_ninja/proc/toggled() set name = "Toggle Drain" diff --git a/code/game/objects/secure_closets.dm b/code/game/objects/secure_closets.dm index 169baa0bb7..56f2cc53fb 100644 --- a/code/game/objects/secure_closets.dm +++ b/code/game/objects/secure_closets.dm @@ -168,9 +168,10 @@ user << "\red It appears to be broken." return else if( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/blade)) && !src.broken) - src.broken = 1 - src.locked = 0 - src.icon_state = src.icon_broken + broken = 1 + locked = 0 + desc = "It appears to be broken." + icon_state = src.icon_broken if(istype(W, /obj/item/weapon/blade)) var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread() spark_system.set_up(5, 0, src.loc) diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index 3bff627022..6b81b68391 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -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()) -*/ \ No newline at end of file + +//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 alive 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-- \ 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 797bba7484..ddb2341097 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -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() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index c4cd677e0e..c6040c8de1 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -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.chargeS.maxcharge) + drain = S.maxcharge-S.charge + maxcapacity = 1 if (do_after(U,10)) spark_system.start() playsound(src.loc, "sparks", 50, 1) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index fe2b94d843..5da3cd34ea 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -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 =====================================================> diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index f9b1c8e0a9..7052cee531 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -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.chargeS.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) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 3fa377d04e..206ab7e8c5 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -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 [charge] 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() diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index d009d0b36e..47fb932d8f 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -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(chargeS.maxcharge) + drain = S.maxcharge-S.charge + maxcapacity = 1 if (do_after(U,10)) spark_system.start() playsound(src.loc, "sparks", 50, 1) diff --git a/config/names/ninjaname.txt b/config/names/ninjaname.txt index 5d6d671796..5961161029 100644 --- a/config/names/ninjaname.txt +++ b/config/names/ninjaname.txt @@ -39,4 +39,5 @@ Aria Bro Fox Null -Raiden \ No newline at end of file +Raiden +Samurai \ No newline at end of file diff --git a/config/names/ninjatitle.txt b/config/names/ninjatitle.txt index 151f824daf..397dcc0d38 100644 --- a/config/names/ninjatitle.txt +++ b/config/names/ninjatitle.txt @@ -38,4 +38,8 @@ Black Gray Solid Liquid -Solidus \ No newline at end of file +Solidus +Steel +Nickel +Silver +Singing \ No newline at end of file diff --git a/icons/spideros_icons/sos_1.png b/icons/spideros_icons/sos_1.png new file mode 100644 index 0000000000000000000000000000000000000000..079f548fde124ab71f5d390350827ac2ef115479 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|>?NMQuI#s2_(kNo^z&rC0fod% zTq8opx~-5_~k z38#_7hFM){>YH*kr1A_mG6`-{>fjLL<=~4Dlw$6l{D31;(1m{%_eE#U)x0gvoR?L9 zIB{m{B=W0@1lj~m$!hRUP!rHu*do(0qv=VO0w)8*OX1qtYcBFy0c~aQboFyt=akR{ E0Jow|B>(^b literal 0 HcmV?d00001 diff --git a/icons/spideros_icons/sos_10.png b/icons/spideros_icons/sos_10.png new file mode 100644 index 0000000000000000000000000000000000000000..5f962d60f457e2169a28d432572209ee92c29084 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|>?NMQuI#s2_{A0V)nDdL1qz9m zxJHx&=ckpFCl;kLxcj&OjZr8|EmAPnGbwCc@(`$mqolyk9VlZAWHWd*XvzaAmUKs7 zM+SzC{oH>NS%G}EByV>YhW{YAVDIwDKoLJr7srr_ImrnM%xkV+ZC@PivnGQhQY@A^ zK&4n#DG0G8<=S czX}7xZo~SSYbX3t1Ded>>FVdQ&MBb@0L@59hyVZp literal 0 HcmV?d00001 diff --git a/icons/spideros_icons/sos_11.png b/icons/spideros_icons/sos_11.png new file mode 100644 index 0000000000000000000000000000000000000000..fd68c8a4ac229eea099ae84c6117a420ec79ea75 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|>?NMQuI#s2_{Eh>+7^D_1r!o5 zag8Vm&QB{TPb^AhaQATm8lzB_TBKmCXHwX@!lvI6;RN#5=*4F5rJ!QSPQfg-k^E{-7;bCMGjnAcptsxEZV?Xa#|m_m~Q zM|Q($r!NT?8?IJc%J7ov?&T`5QC?y KpUXO@geCyrT0`Oh literal 0 HcmV?d00001 diff --git a/icons/spideros_icons/sos_12.png b/icons/spideros_icons/sos_12.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3a064c03607888e9400533d29d001bf5f9a2aa GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|>?NMQuI#s21ekbu510g;0Sbwi zxJHx&=ckpFCl;kLxcj&OjZr8|EmAPnGbwCc@(`$mqolyk9VlZAWHWd*XvzaAmUKs7 zM+SzC{oH>NS%G}EByV>YhW{YAVDIwDKoM6@7srr_ImrnM%xkV+RToOU*br~;$Gc;T z;Dv^jz5k>**c7@nCKPseitd*aQS8W4=mPK#? literal 0 HcmV?d00001 diff --git a/icons/spideros_icons/sos_2.png b/icons/spideros_icons/sos_2.png new file mode 100644 index 0000000000000000000000000000000000000000..40009fe5622f15a7ce5e2fa6c20b34a2cf188a77 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|>?NMQuI#s2_(e1%d@h{r0t$(j zxJHx&=ckpFCl;kLxcj&OjZr8|EmAPnGbwCc@(`$mqolyk9VlZAWHWd*XvzaAmUKs7 zM+SzC{oH>NS%G}EByV>YhW{YAVDIwDK#>qn7srr_ImrnM%xkV+RToOU&LFb$=n*cL zh@~5DH^k3j4CcsV4vS<?NMQuI#s2_(fFZ)1}l>fI{LW zt`Q}{`DrEPiAAXl?mjL+V-(6#ixiCYObT0i(P{h{L#WAE}PI7_*^P1~d-QBj&h?NMQuI#s2_(jw$+Z7K=1BJv( zTq8FVdQ&MBb@04BvtJOBUy literal 0 HcmV?d00001 diff --git a/icons/spideros_icons/sos_5.png b/icons/spideros_icons/sos_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7e43c9d8a4607e4e6d9827cc2d080174eabc4744 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|>?NMQuI#s2_(ilVTs!&?0ENU$ zTq81&oVw8kBF{a9G2ZVt!!iq1X;r=2?NMQuI#s2_(crFG>a>)0ENU$ zTq8qt6z?rUa zI%o~!p;isoG=U2Z$Ioiiq$p2hbP?$8j0jDhF4bZ-LDK8Qw1lU89c){^G|!wko Z?}&Ex&Qt4E4gk$%@O1TaS?83{1OP*XNUi_? literal 0 HcmV?d00001 diff --git a/icons/spideros_icons/sos_7.png b/icons/spideros_icons/sos_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d93d2b13fec4b7629a5fdc8678d6bba1ffeee92d GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|>?NMQuI#s2_{Dhi*%)JefkNUX zt`Q}{`DrEPiAAXl?mjL+V-(6#ixiCYObT0i(P{h~M#WAE}PI7_*^P1~d)rA6`59_LhnY8#b z2S{B$c%mx6bP0l+XkKhF?fB literal 0 HcmV?d00001 diff --git a/icons/spideros_icons/sos_8.png b/icons/spideros_icons/sos_8.png new file mode 100644 index 0000000000000000000000000000000000000000..fd540cb3a82b111c42bd66ca7aebef0b28906c39 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|>?NMQuI#s2_{De)CJ80}1PY0l zxJHx&=ckpFCl;kLxcj&OjZr8|EmAPnGbwCc@(`$mqolyk9VlZAWHWd*XvzaAmUKs7 zM+SzC{oH>NS%G}EByV>YhW{YAVDIwDKoMV07srr_ImrnM%xkV+RTm0e#&}}K(IZ_e zIW#)fuq|X%YFx(dD{$8{?NMQuI#s2_{BN6G*+uw0)@m& zTq8aOf?AD--4;7;Px$Ml fpeyKCqr%8g`k^)~x3BXB&~ye*S3j3^P6