From addfbe449e5fde4a09bcedebc4ed569a888e6f96 Mon Sep 17 00:00:00 2001 From: SamCroswell Date: Mon, 9 Mar 2015 21:28:28 -0400 Subject: [PATCH 1/2] Adds Shuriken --- .../projectiles/guns/energy/special.dm | 26 ++++++++++++++++++- code/modules/projectiles/projectile/energy.dm | 8 ++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index f82359d028f..07eba5f3740 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -371,4 +371,28 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. if(R && R.cell) if(R.cell.use(charge_cost/10)) //Take power from the borg... power_supply.give(charge_cost) //...to recharge the shot - return 1 \ No newline at end of file + return 1 + +/obj/item/weapon/gun/energy/shuriken + name = "energy shuriken" + desc = "A stunning shuriken made of energy." + icon_state = "shuriken" + item_state = null + icon = 'icons/obj/ninjaobjects.dmi' + fire_sound = 'sound/weapons/Genhit.ogg' + cell_type = "/obj/item/weapon/stock_parts/cell/infinite" + projectile_type = "/obj/item/projectile/energy/shuriken" + charge_cost = 0 + silenced = 1 + +/obj/item/weapon/gun/energy/shuriken/update_icon() + qdel(src) + return + +/obj/item/weapon/gun/energy/shuriken/dropped() + qdel(src) + return + +/obj/item/weapon/gun/energy/shuriken/proc/throw() + qdel(src) + return \ No newline at end of file diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 60043e07933..082d5062dd3 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -69,6 +69,14 @@ weaken = 5 range = 7 +/obj/item/projectile/energy/shuriken + name = "shuriken" + icon_state = "toxin" + damage = 10 + damage_type = TOX + nodamage = 0 + weaken = 5 + stutter = 5 /obj/item/projectile/energy/bolt name = "bolt" From 62ae69c816cff3339f345eb88cdfc7ca5ed006ee Mon Sep 17 00:00:00 2001 From: SamCroswell Date: Fri, 13 Mar 2015 20:42:54 -0400 Subject: [PATCH 2/2] Ninja File Structure Rework Restructures the ninja files into a more spaced-out version, compliments of /TG/. The energy katana is also their handiwork. Add an emag act to crates and lockers instead of handling everything in attackby. --- code/game/machinery/camera/tracking.dm | 9 + .../crates_lockers/closets/secure/personal.dm | 19 +- .../closets/secure/secure_closets.dm | 25 +- .../structures/crates_lockers/crates.dm | 18 +- code/modules/clothing/clothing.dm | 1 + .../clothing/spacesuits/space_ninja.dm | 350 ------------------ .../mob/living/carbon/human/update_icons.dm | 1 + code/modules/ninja/Ninja_Readme.dm | 1 + code/modules/ninja/__ninjaDefines.dm | 13 + code/modules/ninja/admin_ninja_verbs.dm | 1 + code/modules/ninja/energy_katana.dm | 29 ++ code/modules/ninja/ninja_event.dm | 1 + code/modules/ninja/suit/SpiderOS.dm | 276 ++++++++++++++ code/modules/ninja/suit/eye.dm | 107 ++++++ code/modules/ninja/suit/gloves.dm | 14 + code/modules/ninja/suit/head.dm | 11 + code/modules/ninja/suit/mask.dm | 15 + .../suit/n_suit_verbs/energy_net_nets.dm | 1 + .../suit/n_suit_verbs/ninja_adrenaline.dm | 1 + .../suit/n_suit_verbs/ninja_cost_check.dm | 1 + .../ninja/suit/n_suit_verbs/ninja_empulse.dm | 1 + .../ninja/suit/n_suit_verbs/ninja_net.dm | 1 + .../ninja/suit/n_suit_verbs/ninja_smoke.dm | 1 + .../ninja/suit/n_suit_verbs/ninja_stars.dm | 23 ++ .../ninja/suit/n_suit_verbs/ninja_stealth.dm | 1 + .../suit/n_suit_verbs/ninja_teleporting.dm | 1 + code/modules/ninja/suit/shoes.dm | 13 + code/modules/ninja/suit/suit.dm | 98 +++++ code/modules/ninja/suit/suit_attackby.dm | 24 ++ .../modules/ninja/suit/suit_initialisation.dm | 84 +++++ code/modules/ninja/suit/suit_process.dm | 1 + .../modules/ninja/suit/suit_verbs_handlers.dm | 1 + .../projectiles/guns/energy/special.dm | 26 +- icons/mob/in-hand/swords.dmi | Bin 26323 -> 27612 bytes icons/obj/weapons.dmi | Bin 42985 -> 43386 bytes paradise.dme | 9 +- 36 files changed, 764 insertions(+), 414 deletions(-) delete mode 100644 code/modules/clothing/spacesuits/space_ninja.dm create mode 100644 code/modules/ninja/Ninja_Readme.dm create mode 100644 code/modules/ninja/__ninjaDefines.dm create mode 100644 code/modules/ninja/admin_ninja_verbs.dm create mode 100644 code/modules/ninja/energy_katana.dm create mode 100644 code/modules/ninja/ninja_event.dm create mode 100644 code/modules/ninja/suit/SpiderOS.dm create mode 100644 code/modules/ninja/suit/eye.dm create mode 100644 code/modules/ninja/suit/gloves.dm create mode 100644 code/modules/ninja/suit/head.dm create mode 100644 code/modules/ninja/suit/mask.dm create mode 100644 code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm create mode 100644 code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm create mode 100644 code/modules/ninja/suit/n_suit_verbs/ninja_cost_check.dm create mode 100644 code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm create mode 100644 code/modules/ninja/suit/n_suit_verbs/ninja_net.dm create mode 100644 code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm create mode 100644 code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm create mode 100644 code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm create mode 100644 code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm create mode 100644 code/modules/ninja/suit/shoes.dm create mode 100644 code/modules/ninja/suit/suit.dm create mode 100644 code/modules/ninja/suit/suit_attackby.dm create mode 100644 code/modules/ninja/suit/suit_initialisation.dm create mode 100644 code/modules/ninja/suit/suit_process.dm create mode 100644 code/modules/ninja/suit/suit_verbs_handlers.dm diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 4a2e0cbe848..cb56c226698 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -132,6 +132,10 @@ //Cameras can't track people wearing an agent card or a ninja hood. if(H.wear_id && istype(H.wear_id.GetID(), /obj/item/weapon/card/id/syndicate)) continue + if(istype(H.head, /obj/item/clothing/head)) + var/obj/item/clothing/head/hat = H.head + if(hat.blockTracking) + continue // Now, are they viewable by a camera? (This is last because it's the most intensive check) if(!near_camera(M)) continue @@ -193,6 +197,11 @@ if(H.digitalcamo) U.ai_cancel_tracking(1) return + if(istype(H.head, /obj/item/clothing/head)) + var/obj/item/clothing/head/hat = H.head + if (hat.blockTracking) + U.ai_cancel_tracking(1) + return if(istype(target.loc,/obj/effect/dummy)) U.ai_cancel_tracking() return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 9d14c48765c..d0c2f8f006e 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -75,9 +75,9 @@ else if(src.allowed(user) || !src.registered_name || (istype(I) && (src.registered_name == I.registered_name))) //they can open all lockers, or nobody owns this, or they own this locker src.locked = !( src.locked ) - if(src.locked) + if(src.locked) src.icon_state = src.icon_locked - else + else src.icon_state = src.icon_closed registered_name = null desc = initial(desc) @@ -87,19 +87,8 @@ src.desc = "Owned by [I.registered_name]." else user << "\red Access Denied" - else if( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken) - broken = 1 - locked = 0 - desc = "It appears to be broken." - icon_state = src.icon_broken - if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - for(var/mob/O in viewers(user, 3)) - O.show_message("\blue The locker has been sliced open by [user] with an energy blade!", 1, "\red You hear metal being sliced and sparks flying.", 2) + else if((istype(W, /obj/item/weapon/card/emag)) && !src.broken) + emag_act() else user << "\red Access Denied" return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 7d3fde7744c..16bc29de13e 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -78,27 +78,20 @@ if(W) W.loc = src.loc else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken) - broken = 1 - locked = 0 - desc = "It appears to be broken." - icon_state = icon_off - flick(icon_broken, src) - if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - for(var/mob/O in viewers(user, 3)) - O.show_message("The locker has been sliced open by [user] with an energy blade!", 1, "You hear metal being sliced and sparks flying.", 2) - else - for(var/mob/O in viewers(user, 3)) - O.show_message("The locker has been broken by [user] with an electromagnetic card!", 1, "You hear a faint electrical spark.", 2) + emag_act() else if(istype(W,/obj/item/stack/packageWrap) || istype(W,/obj/item/weapon/weldingtool)) return ..(W,user) else togglelock(user) +/obj/structure/closet/secure_closet/emag_act() + broken = 1 + locked = 0 + desc = "It appears to be broken." + icon_state = icon_off + flick(icon_broken, src) + usr<< "You unlock \the [src]." + /obj/structure/closet/secure_closet/attack_hand(mob/user as mob) src.add_fingerprint(user) if(src.locked) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 59edffe4b0d..cf6e23615e2 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -295,19 +295,23 @@ if(is_type_in_list(W, list(/obj/item/stack/packageWrap, /obj/item/stack/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/wirecutters))) return ..() if(locked && (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade))) - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* - playsound(src.loc, "sparks", 60, 1) - src.locked = 0 - src.broken = 1 - update_icon() - user << "You unlock \the [src]." + emag_act() return if(!opened) src.togglelock(user) return return ..() +/obj/structure/closet/crate/secure/emag_act() + overlays += sparks + spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* + playsound(src.loc, "sparks", 60, 1) + src.locked = 0 + src.broken = 1 + update_icon() + usr << "You unlock \the [src]." + return + /obj/structure/closet/crate/secure/emp_act(severity) for(var/obj/O in src) O.emp_act(severity) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 33a75e7639c..011c1f27f0a 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -235,6 +235,7 @@ BLIND // can't see anything body_parts_covered = HEAD slot_flags = SLOT_HEAD var/loose = 10 // probability (0..100) of coming off your head when you fall over or lay down + var/blockTracking // Do we block AI tracking? //Mask diff --git a/code/modules/clothing/spacesuits/space_ninja.dm b/code/modules/clothing/spacesuits/space_ninja.dm deleted file mode 100644 index acc53c3dc40..00000000000 --- a/code/modules/clothing/spacesuits/space_ninja.dm +++ /dev/null @@ -1,350 +0,0 @@ -// ** BEGIN NINJA CLOTHING DEFINES ** - -/obj/item/clothing/head/helmet/space/space_ninja - desc = "What may appear to be a simple black garment is in fact a highly sophisticated nano-weave helmet. Standard issue ninja gear." - name = "ninja hood" - icon_state = "s-ninja" - item_state = "s-ninja_hood" - armor = list(melee = 60, bullet = 60, laser = 45, energy = 15, bomb = 30, bio = 30, rad = 25) - unacidable = 1 - siemens_coefficient = 0.2 - - -/obj/item/clothing/mask/gas/voice/space_ninja - name = "ninja mask" - desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement." - icon_state = "s-ninja(norm)" - item_state = "s-ninja_mask" - unacidable = 1 - siemens_coefficient = 0.2 - -/obj/item/clothing/glasses/hud/space_ninja - name = "vision enhancement implant" - desc = "A high-tech ocular implant designed for Spider Clan operatives." - icon_state = "cybereye-off" - item_state = "eyepatch" - flags = NODROP - - var/enabled = 0 - var/energyConsumption = 0 - var/antagHUDEnabled = 0 - var/mesonEnabled = 0 - var/materialEnabled = 0 - var/thermalEnabled = 0 - -/obj/item/clothing/suit/space/space_ninja - name = "ninja suit" - desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins." - icon_state = "s-ninja" - item_state = "s-ninja_suit" - allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/weapon/melee/baton, /obj/item/weapon/tank, /obj/item/weapon/stock_parts/cell) - slowdown = 0 - unacidable = 1 - armor = list(melee = 60, bullet = 60, laser = 45,energy = 15, bomb = 30, bio = 30, rad = 30) - siemens_coefficient = 0.2 - - var/suitActive = 0 - var/suitBusy = 0 - - var/obj/item/weapon/stock_parts/cell/suitCell - var/obj/item/clothing/head/helmet/space/space_ninja/suitHood - var/obj/item/clothing/gloves/space_ninja/suitGloves - var/obj/item/clothing/shoes/space_ninja/suitShoes - var/obj/item/clothing/mask/gas/voice/space_ninja/suitMask - var/obj/item/clothing/glasses/hud/space_ninja/suitGlasses - var/mob/living/carbon/human/suitOccupant - -/obj/item/clothing/gloves/space_ninja - desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance." - name = "ninja gloves" - icon_state = "s-ninja" - item_state = "s-ninja" - siemens_coefficient = 0 - cold_protection = HANDS - min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE - heat_protection = HANDS - max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE - transfer_prints = FALSE - - -/obj/item/clothing/shoes/space_ninja - name = "ninja shoes" - desc = "A pair of running shoes. Excellent for running and even better for smashing skulls." - icon_state = "s-ninja" - permeability_coefficient = 0.01 - flags = NOSLIP - armor = list(melee = 60, bullet = 60, laser = 45,energy = 15, bomb = 30, bio = 30, rad = 30) - siemens_coefficient = 0.2 - cold_protection = FEET - min_cold_protection_temperature = SHOE_MIN_COLD_PROTECTION_TEMPERATURE - heat_protection = FEET - max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE - -// ** END NINJA CLOTHING DEFINES ** - -// ** BEGIN NINJA SUIT PROCS ** - -/obj/item/clothing/suit/space/space_ninja/New() - suitCell = new/obj/item/weapon/stock_parts/cell/ninja // The Ninja starts out with a 10,000 energy cell. - if(suitCell.charge != suitCell.maxcharge) - suitCell.charge = suitCell.maxcharge - -/obj/item/clothing/suit/space/space_ninja/verb/toggle_suit() - set category = "Space Ninja - Equiptment" - set name = "Toggle Suit" - - if(usr.mind.special_role == "Ninja") - if(suitBusy) - usr << "ERROR: Suit systems busy, cannot initiate [suitActive ? "de-activation" : "activation"] protocals at this time." - return - - suitBusy = 1 - - if(suitActive && (alert("Confirm suit systems shutdown? This cannot be halted once it has started.", "Confirm Shutdown", "Yes", "No") == "Yes")) - usr << "Now de-initializing..." - - sleep(15) - usr << "Logging off, [usr.real_name]. Shutting down SpiderOS." - - sleep(10) - usr<< "Primary system status: OFFLINE.\nBackup system status: OFFLINE." - - sleep(5) - usr<< "VOID-shift device status: OFFLINE.\nCLOAK-tech device status: OFFLINE." - //TODO: Shut down any active abilities - - sleep(10) - usr<< "Disconnecting neural-net interface... Success." - usr.hud_used.instantiate() - usr.regenerate_icons() - - sleep(5) - usr<< "Disengaging neural-net interface... Success." - - sleep(10) - usr<< "Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: FINISHED." - //TODO: Grant verbs - toggle_suit_lock(usr) - usr.regenerate_icons() - suitBusy = 0 - suitActive = 0 - - else if(!suitActive) // Activate the suit. - usr << "Now initializing..." - - sleep(15) - usr<< "Now establishing neural-net interface..." - if(usr.mind.special_role != "Ninja") - usr << "FĆAL �Rr�R: µ§er n¤t rec¤gnized, c-c¤ntr-r¤£§-£§ £¤cked." - return - - sleep(10) - usr<< "Neural-net established. Now monitoring brainwave pattern. \nBrainwave pattern GREEN, proceeding." - - sleep(10) - usr<< "Securing external locking mechanism..." - if(!toggle_suit_lock(usr)) - return - - sleep(5) - usr<< "Suit secured, extending neural-net interface..." - usr.hud_used.human_hud('icons/mob/screen1_NinjaHUD.dmi',"#ffffff",255) - usr.regenerate_icons() - - sleep(10) - usr<< "VOID-shift device status: ONLINE.\nCLOAK-tech device status:ONLINE" - - sleep(5) - usr<< "Primary system status: ONLINE.\nBackup system status: ONLINE.\nCurrent energy capacity: [suitCell.charge]/[suitCell.maxcharge]." - - sleep(10) - usr<< "All systems operational. Welcome to SpiderOS, [usr.real_name]." - //TODO: Grant ninja verbs here. - suitBusy = 0 - suitActive = 1 - - else - suitBusy = 0 - usr << "NOTICE: Suit de-activation protocals aborted." - else - usr << "FĆAL �Rr�R: µ§er n¤t rec¤gnized, c-c¤ntr-r¤£§-£§ £¤cked." - return - -/obj/item/clothing/suit/space/space_ninja/proc/toggle_suit_lock(mob/living/carbon/human/user) - if(!suitActive) - if(!istype(user.wear_suit, /obj/item/clothing/suit/space/space_ninja)) - user<< "ERROR: Unable to locate user.\nABORTING..." - return 0 - if(!istype(user.head, /obj/item/clothing/head/helmet/space/space_ninja)) - user<< "ERROR: Unable to locate hood.\nABORTING..." - return 0 - if(!istype(user.gloves, /obj/item/clothing/gloves/space_ninja)) - user<< "ERROR: Unable to locate gloves.\nABORTING..." - return 0 - if(!istype(user.shoes, /obj/item/clothing/shoes/space_ninja)) - user<< "ERROR: Unable to locate foot gear.\nABORTING..." - return 0 - if(!istype(user.wear_mask, /obj/item/clothing/mask/gas/voice/space_ninja)) - user<< "ERROR: Unable to locate mask.\nABORTING..." - return 0 - if(!istype(user.glasses, /obj/item/clothing/glasses/hud/space_ninja)) - user<< "WARNING: Unable to locate eye gear, vision enhancement unavailable.\nProceeding..." - else - suitGlasses = user.glasses - suitGlasses.enabled = 1 - suitGlasses.icon_state = "cybereye-green" - - suitHood = user.head - suitMask = user.wear_mask - suitGloves = user.gloves - suitShoes = user.shoes - suitOccupant = user - - flags |= NODROP - suitHood.flags |= NODROP - suitMask.flags |= NODROP - suitGloves.flags |= NODROP - suitGloves.pickpocket = 1 - suitShoes.flags |= NODROP - suitShoes.slowdown = -2 - - icon_state = (user.gender == MALE ? "s-ninjan" : "s-ninjanf") - suitGloves.icon_state = "s-ninjan" - suitGloves.item_state = "s-ninjan" - - return 1 - - else - flags &= ~NODROP - suitHood.flags &= ~NODROP - suitMask.flags &= ~NODROP - if(suitGlasses) - suitGlasses.enabled = 0 - suitGlasses.icon_state = "cybereye-off" - suitGloves.flags &= ~NODROP - suitGloves.pickpocket = 0 - suitShoes.flags &= ~NODROP - suitShoes.slowdown = -1 - icon_state = "s-ninja" - suitGloves.icon_state = "s-ninja" - suitGloves.item_state = "s-ninja" - - suitHood = null - suitMask = null - suitGlasses = null - suitGloves = null - suitShoes = null - suitOccupant = null - - return 1 - -// ** END NINJA SUIT PROCS ** - -// **BEGIN NINJA GLASSES PROCS** - -/obj/item/clothing/glasses/hud/space_ninja/process_hud(var/mob/M) // Antag HUD processing. - - if(antagHUDEnabled) // We only process if the antag-vision mode is enabled. - if(!M) return - if(!M.client) return - var/client/C = M.client - for(var/mob/living/carbon/human/target in view(get_turf(M))) - if(M.see_invisible < target.invisibility) - continue - if(!C) continue - C.images += target.hud_list[SPECIALROLE_HUD] - -/obj/item/clothing/glasses/hud/space_ninja/verb/modifyHUD(mob/user as mob) - set category = "Space Ninja - Equiptment" - set name = "Modify Vision" - - if(usr.mind.special_role != "Ninja") - usr << "FĆAL �Rr�R: µ§er n¤t rec¤gnized, c-c¤ntr-r¤£§-£§ £¤cked." - return - - if(!enabled) // If the Ninja's suit is on and connected. - usr << "ERROR: No power supply detected, cannot activate optical implant." - return - - if(!user) // The user var is, so far as I can tell, required to refresh the window after each click. - user = usr - - /* - * Each vision type the Ninja enables will drain more from his suit's battery per tick. - * For instance, if the Ninja were to rn around with thermals and AntagHUD on he would be losing an additional 10 energy per tick. - * Current vision modes are: - * - Night - * - Meson (Turfs) - * - Material (Objects) - * - Thermal (Mobs) - * - Antag HUD - * - * -Dave - */ - var/dat = {" -
Night Vision (2E) - [darkness_view ? "ENABLED" : "DISABLED"]
- Meson Scanner (2E) - [mesonEnabled ? "ENABLED" : "DISABLED"]
- Material Scanner (4E) - [materialEnabled ? "ENABLED" : "DISABLED"]
- Thermal Scanner (4E) - [thermalEnabled ? "ENABLED" : "DISABLED"]
- Threat Identification HUD (6E) - [antagHUDEnabled ? "ENABLED" : "DISABLED"]
- "} - - var/datum/browser/popup = new(user, "SpiderOS", "SpiderOS Optical Interface", 310, 150) - popup.set_content(dat) - popup.open() - - -/obj/item/clothing/glasses/hud/space_ninja/Topic(href, href_list) - if(usr.stat != 0 || !enabled) - return 1 - - if(href_list["night"]) - darkness_view = (darkness_view ? 0 : 8) - see_darkness = (darkness_view ? 0 : 1) - energyConsumption += (darkness_view ? 2 : -2) - usr << "Light amplification [(darkness_view ? "ENABLED" : "DISABLED")]." - - else if(href_list["meson"]) - mesonEnabled = (mesonEnabled ? 0 : 1) - - if(mesonEnabled) - vision_flags |= SEE_TURFS - else - vision_flags &= ~SEE_TURFS - - energyConsumption += (mesonEnabled ? 2 : -2) - usr << "Meson scanning [(mesonEnabled ? "ENABLED" : "DISABLED")]." - - else if(href_list["material"]) - materialEnabled = (materialEnabled ? 0 : 1) - - if(materialEnabled) - vision_flags |= SEE_OBJS - else - vision_flags &= ~SEE_OBJS - - energyConsumption += (materialEnabled ? 4 : -4) - usr << "Material scanning [(materialEnabled ? "ENABLED" : "DISABLED")]." - - else if(href_list["thermal"]) - thermalEnabled = (thermalEnabled ? 0 : 1) - - if(thermalEnabled) - vision_flags |= SEE_MOBS - invisa_view = 2 - else - vision_flags &= ~SEE_MOBS - invisa_view = 0 - - energyConsumption += (thermalEnabled ? 4 : -4) - usr << "Thermal scanning [(thermalEnabled ? "ENABLED" : "DISABLED")]." - - else if(href_list["antagHUD"]) - antagHUDEnabled = (antagHUDEnabled ? 0 : 1) - energyConsumption += (antagHUDEnabled ? 6 : -6) - usr << "Threat identification HUD [(antagHUDEnabled ? "ENABLED" : "DISABLED")]." - - modifyHUD(usr) // Re-call the verb to get a fresh version of the window. - return - -// **END NINJA GLASSES PROCS** \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index bde2a71847e..0d5bbb95252 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -797,6 +797,7 @@ proc/get_damage_icon_part(damage_state, body_part) if(!t_state) t_state = belt.icon_state if(belt.icon_override) + t_state = "[t_state]_be" overlays_standing[BELT_LAYER] = image("icon" = belt.icon_override, "icon_state" = "[t_state]") else if(belt.sprite_sheets && belt.sprite_sheets[species.name]) overlays_standing[BELT_LAYER] = image("icon" = belt.sprite_sheets[species.name], "icon_state" = "[t_state]") diff --git a/code/modules/ninja/Ninja_Readme.dm b/code/modules/ninja/Ninja_Readme.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/Ninja_Readme.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/__ninjaDefines.dm b/code/modules/ninja/__ninjaDefines.dm new file mode 100644 index 00000000000..a8dc65f9f13 --- /dev/null +++ b/code/modules/ninja/__ninjaDefines.dm @@ -0,0 +1,13 @@ + +/* + +Contents: +- Definitions, because the original Ninja code has so much magic. + +*/ + + +//ninjacost() specificCheck defines +#define N_STEALTH_CANCEL 1 +#define N_SMOKE_BOMB 2 +#define N_ADRENALINE 3 \ No newline at end of file diff --git a/code/modules/ninja/admin_ninja_verbs.dm b/code/modules/ninja/admin_ninja_verbs.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/admin_ninja_verbs.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm new file mode 100644 index 00000000000..6aa5a5c7f38 --- /dev/null +++ b/code/modules/ninja/energy_katana.dm @@ -0,0 +1,29 @@ + + +/obj/item/weapon/katana/energy + name = "energy katana" + desc = "A katana infused with a strong energy" + icon_state = "energy_katana" + item_state = "energy_katana" + icon_override = 'icons/mob/in-hand/swords.dmi' + force = 40 + throwforce = 20 + var/cooldown = 0 // Because spam aint cool, yo. + +/obj/item/weapon/katana/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) + playsound(user, 'sound/weapons/blade1.ogg', 50, 1, -1) + return ..() + +/obj/item/weapon/katana/energy/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(!user || !target) + return + + if(proximity_flag && user.mind.special_role == "Ninja" && !cooldown) + cooldown = 1 + playsound(user, "sparks", 50, 1) + playsound(user, 'sound/weapons/blade1.ogg', 50, 1) + user.visible_message("[user] masterfully slices [target]!", "You masterfully slice [target]!") + target.emag_act() + sleep(15) + cooldown = 0 + diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/ninja_event.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/SpiderOS.dm b/code/modules/ninja/suit/SpiderOS.dm new file mode 100644 index 00000000000..8b030b11ffb --- /dev/null +++ b/code/modules/ninja/suit/SpiderOS.dm @@ -0,0 +1,276 @@ + +//HERE BE A VERY LARGE DRAGON + +/obj/item/clothing/suit/space/space_ninja/proc/spideros() + set name = "Display SpiderOS" + set desc = "Utilize built-in computer system." + set category = "Ninja Equip" + + if(!s_busy) + display_spideros() + else + affecting << "The interface is locked!" + + +/obj/item/clothing/suit/space/space_ninja/proc/display_spideros() + if(!affecting) return//If no mob is wearing the suit. I almost forgot about this variable. + var/mob/living/carbon/human/U = affecting + var/display_to = U//Who do we want to display certain messages to? + + var/dat = "SpiderOS" + dat += " Refresh" + if(spideros) + dat += " | Return" + dat += " | Close" + dat += "
" + dat += "

SpiderOS v.1.337

" + dat += "Welcome, [U.real_name].
" + dat += "
" + dat += " Current Time: [worldtime2text()]
" + dat += " Battery Life: [round(cell.charge/100)]%
" + dat += " Smoke Bombs: \Roman [s_bombs]
" + dat += "

" + + switch(spideros) + if(0) + dat += "

Available Functions:

" + dat += "" + if(3) + 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 += "

Nutrition Status: [U.nutrition]

" + dat += "Oxygen loss: [U.getOxyLoss()]" + dat += " | Toxin levels: [U.getToxLoss()]
" + dat += "Burn severity: [U.getFireLoss()]" + dat += " | Brute trauma: [U.getBruteLoss()]
" + dat += "Radiation Level: [U.radiation] rad
" + dat += "Body Temperature: [U.bodytemperature-T0C]°C ([U.bodytemperature*1.8-459.67]°F)
" + + for(var/datum/disease/D in U.viruses) + dat += "Warning: Virus Detected. Name: [D.name].Type: [D.spread_text]. Stage: [D.stage]/[D.max_stages]. Possible Cure: [D.cure_text].
" + dat += "" + if(1) + dat += "

Atmospheric Scan:

"//Headers don't need breaks. They are automatically placed. + var/turf/T = get_turf(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 += "
    " + dat += "
  • Nitrogen: [round(n2_level*100)]%
  • " + dat += "
  • Oxygen: [round(o2_level*100)]%
  • " + dat += "
  • Carbon Dioxide: [round(co2_level*100)]%
  • " + dat += "
  • Plasma: [round(plasma_level*100)]%
  • " + dat += "
" + if(unknown_level > 0.01) + dat += "OTHER: [round(unknown_level)]%
" + + dat += "Temperature: [round(environment.temperature-T0C)]°C" + if(2) + dat += "

Anonymous Messenger:

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

Detected PDAs:

" + dat += "
    " + var/count = 0 + for (var/obj/item/device/pda/P in get_viewable_pdas()) + dat += "
  • [P]" + dat += "
  • " + count++ + dat += "
" + if (count == 0) + dat += "None detected.
" + if(4) + dat += {" +

Ninja Manual:

+
Who they are:
+ Space ninjas are a special type of ninja, specifically one of the space-faring type. The vast majority of space ninjas belong to the Spider Clan, a cult-like sect, which has existed for several hundred years. The Spider Clan practice a sort of augmentation of human flesh in order to achieve a more perfect state of being and follow Postmodern Space Bushido. They also kill people for money. Their leaders are chosen from the oldest of the grand-masters, people that have lived a lot longer than any mortal man should.
Being a sect of technology-loving fanatics, the Spider Clan have the very best to choose from in terms of hardware--cybernetic implants, exoskeleton rigs, hyper-capacity batteries, and you get the idea. Some believe that much of the Spider Clan equipment is based on reverse-engineered alien technology while others doubt such claims.
Whatever the case, their technology is absolutely superb. +
How they relate to other SS13 organizations:
+
    +
  • *Nanotrasen and the Syndicate are two sides of the same coin and that coin is valuable.
  • +
  • *The Space Wizard Federation is a problem, mainly because they are an extremely dangerous group of unpredictable individuals--not to mention the wizards hate technology and are in direct opposition of the Spider Clan. Best avoided or left well-enough alone. How to battle: wizards possess several powerful abilities to steer clear off. Blind in particular is a nasty spell--jaunt away if you are blinded and never approach a wizard in melee. Stealth may also work if the wizard is not wearing thermal scanners--don't count on this. Run away if you feel threatened and await a better opportunity.
  • +
  • *Changeling Hivemind: extremely dangerous and to be killed on sight. How to battle: they will likely try to absorb you. Adrenaline boost, then phase shift into them. If you get stung, use SpiderOS to inject counter-agents. Stealth may also work but detecting a changeling is the real battle.
  • +
  • *Xeno Hivemind: their skulls make interesting kitchen decorations and are challenging to best, especially in larger nests. How to battle: they can see through your stealth guise and energy stars will not work on them. Best killed with a Phase Shift or at range. If you happen on a projectile stun weapon, use it and then close in to melee.
  • +
+
The reason they (you) are here:
+ Space ninjas are renowned throughout the known controlled space as fearless spies, infiltrators, and assassins. They are sent on missions of varying nature by Nanotrasen, the Syndicate, and other shady organizations and people. To hire a space ninja means serious business. +
Their playstyle:
+ A mix of traitor, changeling, and wizard. Ninjas rely on energy, or electricity to be precise, to keep their suits running (when out of energy, a suit hibernates). Suits gain energy from objects or creatures that contain electrical charge. APCs, cell batteries, rechargers, SMES batteries, cyborgs, mechs, and exposed wires are currently supported. Through energy ninjas gain access to special powers--while all powers are tied to the ninja suit, the most useful of them are verb activated--to help them in their mission.
It is a constant struggle for a ninja to remain hidden long enough to recharge the suit and accomplish their objective; despite their arsenal of abilities, ninjas can die like any other. Unlike wizards, ninjas do not possess good crowd control and are typically forced to play more subdued in order to achieve their goals. Some of their abilities are specifically designed to confuse and disorient others.
With that said, it should be perfectly possible to completely flip the fuck out and rampage as a ninja. +
Their powers:
+ There are two primary types: Equipment and Abilties. Passive effect are always on. Active effect must be turned on and remain active only when there is energy to do so. Ability costs are listed next to them. + Equipment: cannot be tracked by AI (passive), faster speed (passive), stealth (active), vision switch (passive if toggled), voice masking (passive), SpiderOS (passive if toggled), energy drain (passive if toggled). +
    +
  • Voice masking generates a random name the ninja can use over the radio and in-person. Although, the former use is recommended.
  • +
  • Toggling vision cycles to one of the following: thermal, meson, or darkness vision. The starting mode allows one to scout the identity of those in view, revealing their role. Traitors, revolutionaries, wizards, and other such people will be made known to you.
  • +
  • Stealth, when activated, drains more battery charge and works similarly to a syndicate cloak. The cloak will deactivate when most Abilities are utilized.
  • +
  • On-board AI: The suit is able to download an AI much like an intellicard. Check with SpiderOS for details once downloaded.
  • +
  • SpiderOS is a specialized, PDA-like screen that allows for a small variety of functions, such as injecting healing chemicals directly from the suit. You are using it now, if that was not already obvious. You may also download AI modules directly to the OS.
  • +
+ Abilities: +
    +
  • *Phase Shift (2000E) and Phase Jaunt (1000E) are unique powers in that they can both be used for defense and offense. Jaunt launches the ninja forward facing up to 9 squares, somewhat randomly selecting the final destination. Shift can only be used on turf in view but is precise (cannot be used on walls). Any living mob in the area teleported to is instantly gibbed (mechs are damaged, huggers and other similar critters are killed). It is possible to teleport with a target, provided you grab them before teleporting.
  • +
  • *Energy Blade (500E) is a highly effective weapon. It is summoned directly to the ninja's hand and can also function as an EMAG for certain objects (doors/lockers/etc). You may also use it to cut through walls and disabled doors. Experiment! The blade will crit humans in two hits. This item cannot be placed in containers and when dropped or thrown disappears. Having an energy blade drains more power from the battery each tick.
  • +
  • *EM Pulse (2500E) is a highly useful ability that will create an electromagnetic shockwave around the ninja, disabling technology whenever possible. If used properly it can render a security force effectively useless. Of course, getting beat up with a toolbox is not accounted for.
  • +
  • *Energy Star (500E) is a ninja star made of green energy AND coated in poison. It works by picking a random living target within range and can be spammed to great effect in incapacitating foes. Just remember that the poison used is also used by the Xeno Hivemind (and will have no effect on them).
  • +
  • *Energy Net (2000E) is a non-lethal solution to incapacitating humanoids. The net is made of non-harmful phase energy and will halt movement as long as it remains in effect--it can be destroyed. If the net is not destroyed, after a certain time it will teleport the target to a holding facility for the Spider Clan and then vanish. You will be notified if the net fails or succeeds in capturing a target in this manner. Combine with energy stars or stripping to ensure success. Abduction never looked this leet.
  • +
  • *Adrenaline Boost (1 E. Boost/3) recovers the user from stun, weakness, and paralysis. Also injects 20 units of radium into the bloodstream.
  • +
  • *Smoke Bomb (1 Sm.Bomb/10) is a weak but potentially useful ability. It creates harmful smoke and can be used in tandem with other powers to confuse enemies.
  • +
  • *???: unleash the True Ultimate Power!
  • +

    IMPORTANT:

    +
      +
    • *Make sure to toggle Special Interaction from the Ninja Equipment menu to interact differently with certain objects.
    • +
    • *Your starting power cell can be replaced if you find one with higher maximum energy capacity by clicking on your suit with the higher capacity cell.
    • +
    • *Conserve your energy. Without it, you are very vulnerable.
    • +
    + That is all you will need to know. The rest will come with practice and talent. Good luck! +

    Master /N

    + "} + if(6) + dat += {" +

    Activate Abilities:

    + + "} + if(7) + dat += "

    Research Stored:

    " + if(t_disk) + dat += "Eject Disk
    " + dat += "
      " + if(istype(stored_research,/list))//If there is stored research. Should be but just in case. + for(var/datum/tech/current_data in stored_research) + dat += "
    • " + dat += "[current_data.name]: [current_data.level]" + if(t_disk)//If there is a disk inserted. We can either write or overwrite. + dat += " *Copy to Disk
      " + dat += "
    • " + dat += "
    " + dat += "" + + //Setting the can>resize etc to 0 remove them from the drag bar but still allows the window to be draggable. + display_to << browse(dat,"window=spideros;size=400x444;border=1;can_resize=1;can_close=0;can_minimize=0") + +//=======//SPIDEROS TOPIC PROC//=======// + +/obj/item/clothing/suit/space/space_ninja/Topic(href, href_list) + ..() + var/mob/living/carbon/human/U = affecting + var/display_to = U + + + if(!affecting||U.stat||!s_initialized)//Check to make sure the guy is wearing the suit after clicking and it's on. + U << "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("Close") + display_to << browse(null, "window=spideros") + return + if("Refresh")//Refresh, goes to the end of the proc. + if("Return")//Return + if(spideros<=9) + spideros=0 + else + spideros = round(spideros/10)//Best way to do this, flooring to nearest integer. + + if("Message") + var/obj/item/device/pda/P = locate(href_list["target"]) + 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||!s_initialized)//Wow, another one of these. Man... + display_to << browse(null, "window=spideros") + return + if(isnull(P)||P.toff)//So it doesn't freak out if the object no-longer exists. + display_to << "Error: unable to deliver message." + display_spideros() + return + P.tnote += "← From an unknown source:
    [t]
    " + if (!P.silent) + playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1) + P.audible_message("\icon[P] *[P.ttone]*", null, 3) + P.overlays.Cut() + P.overlays += image('icons/obj/pda.dmi', "pda-r") + + if("Inject") + if( (href_list["tag"]=="radium"? (reagents.get_reagent_amount("radium"))<=(a_boost*a_transfer) : !reagents.get_reagent_amount(href_list["tag"])) )//Special case for radium. If there are only a_boost*a_transfer radium units left. + display_to << "Error: the suit cannot perform this function. Out of [href_list["name"]]." + else + reagents.reaction(U, 2) + reagents.trans_id_to(U, href_list["tag"], href_list["tag"]=="nutriment"?5:a_transfer)//Nutriment is a special case since it's very potent. Shouldn't influence actual refill amounts or anything. + display_to << "Injecting..." + U << "You feel a tiny prick and a sudden rush of substance in to your veins." + + if("Trigger Ability") + var/ability_name = href_list["name"]+href_list["cost"]//Adds the name and cost to create the full proc name. + var/proc_arguments//What arguments to later pass to the proc, if any. + var/list/targets = list()//To later check for. + var/safety = 0//To later make sure we're triggering the proc when needed. + switch(href_list["name"])//Special case. + if("Phase Shift") + safety = 1 + for(var/turf/T in oview(5,loc)) + targets.Add(T) + if("Energy Net") + safety = 1 + for(var/mob/living/carbon/M in oview(5,loc)) + targets.Add(M) + if(targets.len)//Let's create an argument for the proc if needed. + proc_arguments = pick(targets) + safety = 0 + if(!safety) + U << "[href_list["name"]] suddenly triggered!" + call(src,ability_name)(proc_arguments) + + if("Eject Disk") + var/turf/T = get_turf(loc) + if(!U.get_active_hand()) + U.put_in_hands(t_disk) + t_disk.add_fingerprint(U) + t_disk = null + else + if(T) + t_disk.loc = T + t_disk = null + else + U << "ERROR: Could not eject disk." + + if("Copy to Disk") + var/datum/tech/current_data = locate(href_list["target"]) + U << "[current_data.name] successfully [(!t_disk.stored) ? "copied" : "overwritten"] to disk." + t_disk.stored = current_data + + + display_spideros()//Refreshes the screen by calling it again (which replaces current screen with new screen). + return diff --git a/code/modules/ninja/suit/eye.dm b/code/modules/ninja/suit/eye.dm new file mode 100644 index 00000000000..427a50a7497 --- /dev/null +++ b/code/modules/ninja/suit/eye.dm @@ -0,0 +1,107 @@ +/obj/item/clothing/glasses/hud/space_ninja + name = "vision enhancement implant" + desc = "A high-tech ocular implant designed for Spider Clan operatives." + icon_state = "cybereye-off" + item_state = "eyepatch" + flags = NODROP + + var/enabled = 0 + var/energyConsumption = 0 + var/antagHUDEnabled = 0 + var/mesonEnabled = 0 + var/materialEnabled = 0 + var/thermalEnabled = 0 + +/obj/item/clothing/glasses/hud/space_ninja/verb/modifyHUD(mob/user as mob) + set category = "Space Ninja - Equiptment" + set name = "Modify Vision" + + if(usr.mind.special_role != "Ninja") + usr << "FĆAL �Rr�R: µ§er n¤t rec¤gnized, c-c¤ntr-r¤£§-£§ £¤cked." + return + + if(!enabled) // If the Ninja's suit is on and connected. + usr << "ERROR: No power supply detected, cannot activate optical implant." + return + + if(!user) // The user var is, so far as I can tell, required to refresh the window after each click. + user = usr + + /* + * Each vision type the Ninja enables will drain more from his suit's battery per tick. + * For instance, if the Ninja were to rn around with thermals and AntagHUD on he would be losing an additional 10 energy per tick. + * Current vision modes are: + * - Night + * - Meson (Turfs) + * - Material (Objects) + * - Thermal (Mobs) + * - Antag HUD + * + * -Dave + */ + var/dat = {" +
    Night Vision (2E) - [darkness_view ? "ENABLED" : "DISABLED"]
    + Meson Scanner (2E) - [mesonEnabled ? "ENABLED" : "DISABLED"]
    + Material Scanner (4E) - [materialEnabled ? "ENABLED" : "DISABLED"]
    + Thermal Scanner (4E) - [thermalEnabled ? "ENABLED" : "DISABLED"]
    + Threat Identification HUD (6E) - [antagHUDEnabled ? "ENABLED" : "DISABLED"]
    + "} + + var/datum/browser/popup = new(user, "SpiderOS", "SpiderOS Optical Interface", 310, 150) + popup.set_content(dat) + popup.open() + + +/obj/item/clothing/glasses/hud/space_ninja/Topic(href, href_list) + if(usr.stat != 0 || !enabled) + return 1 + + if(href_list["night"]) + darkness_view = (darkness_view ? 0 : 8) + see_darkness = (darkness_view ? 0 : 1) + energyConsumption += (darkness_view ? 2 : -2) + usr << "Light amplification [(darkness_view ? "ENABLED" : "DISABLED")]." + + else if(href_list["meson"]) + mesonEnabled = (mesonEnabled ? 0 : 1) + + if(mesonEnabled) + vision_flags |= SEE_TURFS + else + vision_flags &= ~SEE_TURFS + + energyConsumption += (mesonEnabled ? 2 : -2) + usr << "Meson scanning [(mesonEnabled ? "ENABLED" : "DISABLED")]." + + else if(href_list["material"]) + materialEnabled = (materialEnabled ? 0 : 1) + + if(materialEnabled) + vision_flags |= SEE_OBJS + else + vision_flags &= ~SEE_OBJS + + energyConsumption += (materialEnabled ? 4 : -4) + usr << "Material scanning [(materialEnabled ? "ENABLED" : "DISABLED")]." + + else if(href_list["thermal"]) + thermalEnabled = (thermalEnabled ? 0 : 1) + + if(thermalEnabled) + vision_flags |= SEE_MOBS + invisa_view = 2 + else + vision_flags &= ~SEE_MOBS + invisa_view = 0 + + energyConsumption += (thermalEnabled ? 4 : -4) + usr << "Thermal scanning [(thermalEnabled ? "ENABLED" : "DISABLED")]." + + else if(href_list["antagHUD"]) + antagHUDEnabled = (antagHUDEnabled ? 0 : 1) + energyConsumption += (antagHUDEnabled ? 6 : -6) + usr << "Threat identification HUD [(antagHUDEnabled ? "ENABLED" : "DISABLED")]." + + modifyHUD(usr) // Re-call the verb to get a fresh version of the window. + return + diff --git a/code/modules/ninja/suit/gloves.dm b/code/modules/ninja/suit/gloves.dm new file mode 100644 index 00000000000..30d4ce5fa41 --- /dev/null +++ b/code/modules/ninja/suit/gloves.dm @@ -0,0 +1,14 @@ + + +/obj/item/clothing/gloves/space_ninja + desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance." + name = "ninja gloves" + icon_state = "s-ninja" + item_state = "s-ninja" + siemens_coefficient = 0 + pickpocket = 1 + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE + transfer_prints = FALSE \ No newline at end of file diff --git a/code/modules/ninja/suit/head.dm b/code/modules/ninja/suit/head.dm new file mode 100644 index 00000000000..c3e921a97d9 --- /dev/null +++ b/code/modules/ninja/suit/head.dm @@ -0,0 +1,11 @@ + + +/obj/item/clothing/head/helmet/space/space_ninja + desc = "What may appear to be a simple black garment is in fact a highly sophisticated nano-weave helmet. Standard issue ninja gear." + name = "ninja hood" + icon_state = "s-ninja" + item_state = "s-ninja_hood" + armor = list(melee = 60, bullet = 60, laser = 45, energy = 15, bomb = 30, bio = 30, rad = 25) + unacidable = 1 + siemens_coefficient = 0.2 + blockTracking = 1 \ No newline at end of file diff --git a/code/modules/ninja/suit/mask.dm b/code/modules/ninja/suit/mask.dm new file mode 100644 index 00000000000..af6727b2666 --- /dev/null +++ b/code/modules/ninja/suit/mask.dm @@ -0,0 +1,15 @@ + +/* + +Contents: +- The Ninja Space Mask + +*/ + +/obj/item/clothing/mask/gas/voice/space_ninja + name = "ninja mask" + desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement." + icon_state = "s-ninja(norm)" + item_state = "s-ninja_mask" + unacidable = 1 + siemens_coefficient = 0.2 \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_cost_check.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_cost_check.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_cost_check.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_empulse.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm new file mode 100644 index 00000000000..b41946e11f6 --- /dev/null +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm @@ -0,0 +1,23 @@ +/obj/item/weapon/gun/energy/shuriken + name = "energy shuriken" + desc = "A stunning shuriken made of energy." + icon_state = "shuriken" + item_state = null + icon = 'icons/obj/ninjaobjects.dmi' + fire_sound = 'sound/weapons/Genhit.ogg' + cell_type = "/obj/item/weapon/stock_parts/cell/infinite" + projectile_type = "/obj/item/projectile/energy/shuriken" + charge_cost = 0 + silenced = 1 + +/obj/item/weapon/gun/energy/shuriken/update_icon() + qdel(src) + return + +/obj/item/weapon/gun/energy/shuriken/dropped() + qdel(src) + return + +/obj/item/weapon/gun/energy/shuriken/proc/throw() + qdel(src) + return \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_teleporting.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/shoes.dm b/code/modules/ninja/suit/shoes.dm new file mode 100644 index 00000000000..c9750b262d1 --- /dev/null +++ b/code/modules/ninja/suit/shoes.dm @@ -0,0 +1,13 @@ + +/obj/item/clothing/shoes/space_ninja + name = "ninja shoes" + desc = "A pair of running shoes. Excellent for running and even better for smashing skulls." + icon_state = "s-ninja" + permeability_coefficient = 0.01 + flags = NOSLIP + armor = list(melee = 60, bullet = 60, laser = 45,energy = 15, bomb = 30, bio = 30, rad = 30) + siemens_coefficient = 0.2 + cold_protection = FEET + min_cold_protection_temperature = SHOE_MIN_COLD_PROTECTION_TEMPERATURE + heat_protection = FEET + max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE \ No newline at end of file diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm new file mode 100644 index 00000000000..2550ce13eb0 --- /dev/null +++ b/code/modules/ninja/suit/suit.dm @@ -0,0 +1,98 @@ + +/* + +Contents: +- The Ninja Space Suit +- Ninja Space Suit Procs + +*/ + +/obj/item/clothing/suit/space/space_ninja + name = "ninja suit" + desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins." + icon_state = "s-ninja" + item_state = "s-ninja_suit" + allowed = list(/obj/item/weapon/gun, /obj/item/ammo_box, /obj/item/weapon/melee/baton, /obj/item/weapon/tank, /obj/item/weapon/stock_parts/cell) + slowdown = 0 + unacidable = 1 + armor = list(melee = 60, bullet = 60, laser = 45,energy = 15, bomb = 30, bio = 30, rad = 30) + siemens_coefficient = 0.2 + + var/suitActive = 0 + var/suitBusy = 0 + + var/obj/item/weapon/stock_parts/cell/suitCell + var/obj/item/clothing/head/helmet/space/space_ninja/suitHood + var/obj/item/clothing/gloves/space_ninja/suitGloves + var/obj/item/clothing/shoes/space_ninja/suitShoes + var/obj/item/clothing/mask/gas/voice/space_ninja/suitMask + var/obj/item/clothing/glasses/hud/space_ninja/suitGlasses + var/mob/living/carbon/human/suitOccupant + +/obj/item/clothing/suit/space/space_ninja/proc/toggle_suit_lock(mob/living/carbon/human/user) + if(!suitActive) + if(!istype(user.wear_suit, /obj/item/clothing/suit/space/space_ninja)) + user<< "ERROR: Unable to locate user.\nABORTING..." + return 0 + if(!istype(user.head, /obj/item/clothing/head/helmet/space/space_ninja)) + user<< "ERROR: Unable to locate hood.\nABORTING..." + return 0 + if(!istype(user.gloves, /obj/item/clothing/gloves/space_ninja)) + user<< "ERROR: Unable to locate gloves.\nABORTING..." + return 0 + if(!istype(user.shoes, /obj/item/clothing/shoes/space_ninja)) + user<< "ERROR: Unable to locate foot gear.\nABORTING..." + return 0 + if(!istype(user.wear_mask, /obj/item/clothing/mask/gas/voice/space_ninja)) + user<< "ERROR: Unable to locate mask.\nABORTING..." + return 0 + if(!istype(user.glasses, /obj/item/clothing/glasses/hud/space_ninja)) + user<< "WARNING: Unable to locate eye gear, vision enhancement unavailable.\nProceeding..." + else + suitGlasses = user.glasses + suitGlasses.enabled = 1 + suitGlasses.icon_state = "cybereye-green" + + suitHood = user.head + suitMask = user.wear_mask + suitGloves = user.gloves + suitShoes = user.shoes + suitOccupant = user + + flags |= NODROP + suitHood.flags |= NODROP + suitMask.flags |= NODROP + suitGloves.flags |= NODROP + suitGloves.pickpocket = 1 + suitShoes.flags |= NODROP + suitShoes.slowdown = -2 + + icon_state = (user.gender == MALE ? "s-ninjan" : "s-ninjanf") + suitGloves.icon_state = "s-ninjan" + suitGloves.item_state = "s-ninjan" + + return 1 + + else + flags &= ~NODROP + suitHood.flags &= ~NODROP + suitMask.flags &= ~NODROP + if(suitGlasses) + suitGlasses.enabled = 0 + suitGlasses.icon_state = "cybereye-off" + suitGloves.flags &= ~NODROP + suitGloves.pickpocket = 0 + suitShoes.flags &= ~NODROP + suitShoes.slowdown = -1 + icon_state = "s-ninja" + suitGloves.icon_state = "s-ninja" + suitGloves.item_state = "s-ninja" + + suitHood = null + suitMask = null + suitGlasses = null + suitGloves = null + suitShoes = null + suitOccupant = null + + return 1 \ No newline at end of file diff --git a/code/modules/ninja/suit/suit_attackby.dm b/code/modules/ninja/suit/suit_attackby.dm new file mode 100644 index 00000000000..7d785b44229 --- /dev/null +++ b/code/modules/ninja/suit/suit_attackby.dm @@ -0,0 +1,24 @@ + + +/obj/item/clothing/suit/space/space_ninja/attackby(obj/item/I, mob/U, params) + if(U==suitOccupant)//Safety, in case you try doing this without wearing the suit/being the person with the suit. + if(istype(I, /obj/item/weapon/stock_parts/cell)) + var/obj/item/weapon/stock_parts/cell/CELL + if(CELL.maxcharge > cell.maxcharge && suitGloves) + U << "Higher maximum capacity detected.\nUpgrading..." + if (n_gloves && n_gloves.candrain && do_after(U,s_delay)) + U.drop_item() + CELL.loc = src + CELL.charge = min(CELL.charge+cell.charge, CELL.maxcharge) + var/obj/item/weapon/stock_parts/cell/old_cell = cell + old_cell.charge = 0 + U.put_in_hands(old_cell) + old_cell.add_fingerprint(U) + old_cell.corrupt() + old_cell.updateicon() + cell = CELL + U << "Upgrade complete. Maximum capacity: [round(cell.maxcharge/100)]%" + else + U << "Procedure interrupted. Protocol terminated." + return + ..() \ No newline at end of file diff --git a/code/modules/ninja/suit/suit_initialisation.dm b/code/modules/ninja/suit/suit_initialisation.dm new file mode 100644 index 00000000000..683747d14ed --- /dev/null +++ b/code/modules/ninja/suit/suit_initialisation.dm @@ -0,0 +1,84 @@ + +//Verbs link to procs because verb-like procs have a bug which prevents their use if the arguments are not readily referenced. +//^ Old coder words may be false these days, Not taking the risk for now. + +/obj/item/clothing/suit/space/space_ninja/verb/toggle_suit() + set category = "Space Ninja - Equiptment" + set name = "Toggle Suit" + + if(usr.mind.special_role == "Ninja") + if(suitBusy) + usr << "ERROR: Suit systems busy, cannot initiate [suitActive ? "de-activation" : "activation"] protocals at this time." + return + + suitBusy = 1 + + if(suitActive && (alert("Confirm suit systems shutdown? This cannot be halted once it has started.", "Confirm Shutdown", "Yes", "No") == "Yes")) + usr << "Now de-initializing..." + + sleep(15) + usr << "Logging off, [usr.real_name]. Shutting down SpiderOS." + + sleep(10) + usr<< "Primary system status: OFFLINE.\nBackup system status: OFFLINE." + + sleep(5) + usr<< "VOID-shift device status: OFFLINE.\nCLOAK-tech device status: OFFLINE." + //TODO: Shut down any active abilities + + sleep(10) + usr<< "Disconnecting neural-net interface... Success." + usr.hud_used.instantiate() + usr.regenerate_icons() + + sleep(5) + usr<< "Disengaging neural-net interface... Success." + + sleep(10) + usr<< "Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: FINISHED." + //TODO: Grant verbs + toggle_suit_lock(usr) + usr.regenerate_icons() + suitBusy = 0 + suitActive = 0 + + else if(!suitActive) // Activate the suit. + usr << "Now initializing..." + + sleep(15) + usr<< "Now establishing neural-net interface..." + if(usr.mind.special_role != "Ninja") + usr << "FĆAL �Rr�R: µ§er n¤t rec¤gnized, c-c¤ntr-r¤£§-£§ £¤cked." + return + + sleep(10) + usr<< "Neural-net established. Now monitoring brainwave pattern. \nBrainwave pattern GREEN, proceeding." + + sleep(10) + usr<< "Securing external locking mechanism..." + if(!toggle_suit_lock(usr)) + return + + sleep(5) + usr<< "Suit secured, extending neural-net interface..." + usr.hud_used.human_hud('icons/mob/screen1_NinjaHUD.dmi',"#ffffff",255) + usr.regenerate_icons() + + sleep(10) + usr<< "VOID-shift device status: ONLINE.\nCLOAK-tech device status:ONLINE" + + sleep(5) + usr<< "Primary system status: ONLINE.\nBackup system status: ONLINE.\nCurrent energy capacity: [suitCell.charge]/[suitCell.maxcharge]." + + sleep(10) + usr<< "All systems operational. Welcome to SpiderOS, [usr.real_name]." + //TODO: Grant ninja verbs here. + suitBusy = 0 + suitActive = 1 + + else + suitBusy = 0 + usr << "NOTICE: Suit de-activation protocals aborted." + else + usr << "FĆAL �Rr�R: µ§er n¤t rec¤gnized, c-c¤ntr-r¤£§-£§ £¤cked." + return \ No newline at end of file diff --git a/code/modules/ninja/suit/suit_process.dm b/code/modules/ninja/suit/suit_process.dm new file mode 100644 index 00000000000..0ffdd02fcbc --- /dev/null +++ b/code/modules/ninja/suit/suit_process.dm @@ -0,0 +1 @@ +// TODO \ No newline at end of file diff --git a/code/modules/ninja/suit/suit_verbs_handlers.dm b/code/modules/ninja/suit/suit_verbs_handlers.dm new file mode 100644 index 00000000000..70b786d12ed --- /dev/null +++ b/code/modules/ninja/suit/suit_verbs_handlers.dm @@ -0,0 +1 @@ +// TODO diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 07eba5f3740..f82359d028f 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -371,28 +371,4 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. if(R && R.cell) if(R.cell.use(charge_cost/10)) //Take power from the borg... power_supply.give(charge_cost) //...to recharge the shot - return 1 - -/obj/item/weapon/gun/energy/shuriken - name = "energy shuriken" - desc = "A stunning shuriken made of energy." - icon_state = "shuriken" - item_state = null - icon = 'icons/obj/ninjaobjects.dmi' - fire_sound = 'sound/weapons/Genhit.ogg' - cell_type = "/obj/item/weapon/stock_parts/cell/infinite" - projectile_type = "/obj/item/projectile/energy/shuriken" - charge_cost = 0 - silenced = 1 - -/obj/item/weapon/gun/energy/shuriken/update_icon() - qdel(src) - return - -/obj/item/weapon/gun/energy/shuriken/dropped() - qdel(src) - return - -/obj/item/weapon/gun/energy/shuriken/proc/throw() - qdel(src) - return \ No newline at end of file + return 1 \ No newline at end of file diff --git a/icons/mob/in-hand/swords.dmi b/icons/mob/in-hand/swords.dmi index a4e8243c2e7f59ac5280df1989ef7719ab1aa98b..f7bdd0ae1b0ad032592badedb95f89e881a338ae 100644 GIT binary patch delta 4516 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 RdWV7u0Is2{UZH9c@*iihs<8k7 delta 3217 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 diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 5a2601f52838380c41c013f385ddd4c158c8c173..9a0e4ade843eefa12d0b7d956f9159fd925394d2 100644 GIT binary patch literal 43386 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