diff --git a/code/defines/obj/clothing/head.dm b/code/defines/obj/clothing/head.dm
index be14323b3b0b5..4979f33171d31 100644
--- a/code/defines/obj/clothing/head.dm
+++ b/code/defines/obj/clothing/head.dm
@@ -147,7 +147,7 @@
permeability_coefficient = 0.01
/obj/item/clothing/head/helmet/space/rig
- desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding"
+ desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
name = "rig helmet"
icon_state = "rig"
item_state = "rig_helm"
@@ -158,6 +158,13 @@
icon_state = "syndicate"
item_state = "syndicate"
+/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_mask"
+ radiation_protection = 0.25
+
/obj/item/clothing/head/helmet/swat
name = "swat helmet"
icon_state = "swat"
diff --git a/code/defines/obj/clothing/mask.dm b/code/defines/obj/clothing/mask.dm
index f05c5c3ec5adf..4cdfab72dfce1 100644
--- a/code/defines/obj/clothing/mask.dm
+++ b/code/defines/obj/clothing/mask.dm
@@ -37,11 +37,10 @@
/obj/item/clothing/mask/gas/space_ninja
name = "ninja mask"
- desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement."
+ desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement. Can disguise your voice."
icon_state = "s-ninja"
item_state = "s-ninja_mask"
vchange = 1
- radiation_protection = 0.35
/obj/item/clothing/mask/gas/voice
name = "gas mask"
diff --git a/code/defines/obj/clothing/shoes.dm b/code/defines/obj/clothing/shoes.dm
index dcd8872a0f14b..c1acfceb5ead0 100644
--- a/code/defines/obj/clothing/shoes.dm
+++ b/code/defines/obj/clothing/shoes.dm
@@ -32,6 +32,14 @@
icon_state = "swat"
slowdown = 0
+/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"
+ slowdown = -1
+ permeability_coefficient = 0.05
+ flags = NOSLIP
+
/obj/item/clothing/shoes/white
name = "White Shoes"
icon_state = "white"
diff --git a/code/defines/obj/clothing/suit.dm b/code/defines/obj/clothing/suit.dm
index c3f3ff16b5a86..e15d59709b28b 100644
--- a/code/defines/obj/clothing/suit.dm
+++ b/code/defines/obj/clothing/suit.dm
@@ -329,6 +329,7 @@
allowed = list(/obj/item/weapon/gun,/obj/item/weapon/ammo,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
slowdown = 1
+/*
/obj/item/clothing/suit/space/nasa
name = "Tacticool NASA Voidsuit"
icon_state = "s-ninja"
@@ -336,6 +337,7 @@
desc = "A tacticool, NASA Centcom branch designed, black Space suit. Used for AI satilite maintenance."
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/tank/emergency_oxygen)
slowdown = 1.3
+GET OUT OF HERE STAAAAAAAAALKER or until there is a new icon for the suit.*/
/obj/item/clothing/suit/space/space_ninja
name = "ninja suit"
@@ -343,7 +345,7 @@
icon_state = "s-ninja"
item_state = "s-ninja_suit"
allowed = list(/obj/item/weapon/gun,/obj/item/weapon/ammo,/obj/item/weapon/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
- slowdown = -1
+ slowdown = 0
radiation_protection = 0.75
/obj/item/clothing/suit/space/pirate
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 5c77e91de346e..63f86865ac84b 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -153,6 +153,7 @@
src.verbs += /client/proc/only_one // muskets
src.verbs += /client/proc/space_asshole // --Agouri :3
src.verbs += /client/proc/strike_team //N
+ src.verbs += /client/proc/space_ninja //N
src.verbs += /client/proc/spawn_xeno //N
src.verbs += /proc/possess
src.verbs += /proc/release
@@ -1132,6 +1133,7 @@
src.verbs -= /client/proc/cuban_pete // -- Urist
src.verbs -= /client/proc/space_asshole // --Agouri :3
src.verbs -= /client/proc/strike_team //N
+ src.verbs -= /client/proc/space_ninja //N
src.verbs -= /client/proc/spawn_xeno //N
src.verbs -= /proc/possess
src.verbs -= /proc/release
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index a747199b8c59d..0134340942768 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -272,7 +272,7 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
candidates.Add(G)
if(candidates.len)
var/mob/dead/observer/G = pick(candidates)
- message_admins("\blue [key_name_admin(usr)] has spawned [G.key] as a Punnished Admin.", 1)
+ message_admins("\blue [key_name_admin(usr)] has spawned [G.key] as a filthy xeno.", 1)
new_xeno.mind = new//Mind initialize stuff.
new_xeno.mind.current = new_xeno
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index 5d2793baaa005..704352a92184d 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -1,3 +1,5 @@
+//STRIKE TEAMS
+
var/const/commandos_possible = 6 //if more Commandos are needed in the future
var/global/sent_strike_team = 0
/client/proc/strike_team()
@@ -158,4 +160,99 @@ Useful for copy pasta since I'm lazy.*/
del(BOMB)
message_admins("\blue [key_name_admin(usr)] has spawned a CentCom strike squad.", 1)
- log_admin("[key_name(usr)] used Spawn Death Squad.")
\ No newline at end of file
+ log_admin("[key_name(usr)] used Spawn Death Squad.")
+
+//SPACE NINJAS
+/client/proc/space_ninja()
+
+ set category = "Fun"
+ set name = "Spawn Space Ninja"
+ set desc = "Spawns a space ninja for when you just need a teenager with attitude."
+ if(!src.authenticated || !src.holder)
+ src << "Only administrators may use this command."
+ return
+ if(!ticker)
+ alert("The game hasn't started yet!")
+ return
+
+ TRYAGAIN
+ var/input = input(usr, "Please specify which mission the space ninja shall undertake.", "Specify Mission", "")
+ if(!input)
+ goto TRYAGAIN
+
+ var/list/ninja_titles = dd_file2list("config/names/ninjatitle.txt")
+ var/list/ninja_names = dd_file2list("config/names/ninjaname.txt")
+
+ var/list/LOCLIST = list()
+ for(var/obj/landmark/X in world)
+ if (X.name == "carpspawn")
+ LOCLIST.Add(X)
+ if(!LOCLIST.len)
+ alert("No spawn location could be found. Aborting.")
+ return
+
+ var/obj/landmark/STARTLOC = pick(LOCLIST)
+
+ var/mob/living/carbon/human/new_ninja = new(STARTLOC.loc)
+ var/ninja_title = pick(ninja_titles)
+ var/ninja_name = pick(ninja_names)
+ new_ninja.gender = pick(MALE, FEMALE)
+ new_ninja.real_name = "[ninja_title] [ninja_name]"
+ new_ninja.age = rand(17,45)
+ new_ninja.b_type = pick("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")
+ new_ninja.dna.ready_dna(new_ninja)
+ new_ninja.mind = new
+ new_ninja.mind.current = new_ninja
+ new_ninja.mind.assigned_role = "Space Ninja"
+ new_ninja.mind.store_memory("Mission: \red [input].")
+ new_ninja.resistances += "alien_embryo"
+
+ var/obj/item/device/radio/R = new /obj/item/device/radio/headset(new_ninja)
+ new_ninja.equip_if_possible(R, new_ninja.slot_ears)
+ new_ninja.equip_if_possible(new /obj/item/clothing/under/color/black(new_ninja), new_ninja.slot_w_uniform)
+ new_ninja.equip_if_possible(new /obj/item/clothing/shoes/space_ninja(new_ninja), new_ninja.slot_shoes)
+ new_ninja.equip_if_possible(new /obj/item/clothing/suit/space/space_ninja(new_ninja), new_ninja.slot_wear_suit)
+ new_ninja.equip_if_possible(new /obj/item/clothing/gloves/space_ninja(new_ninja), new_ninja.slot_gloves)
+ new_ninja.equip_if_possible(new /obj/item/clothing/head/helmet/space/space_ninja(new_ninja), new_ninja.slot_head)
+ new_ninja.equip_if_possible(new /obj/item/clothing/mask/gas/space_ninja(new_ninja), new_ninja.slot_wear_mask)
+ new_ninja.equip_if_possible(new /obj/item/clothing/glasses/thermal(new_ninja), new_ninja.slot_glasses)
+ new_ninja.equip_if_possible(new /obj/item/device/flashlight(new_ninja), new_ninja.slot_belt)
+ new_ninja.equip_if_possible(new /obj/item/weapon/plastique(new_ninja), new_ninja.slot_r_store)
+ new_ninja.equip_if_possible(new /obj/item/weapon/plastique(new_ninja), new_ninja.slot_l_store)
+ var/obj/item/weapon/tank/emergency_oxygen/OXYTANK = new /obj/item/weapon/tank/emergency_oxygen(new_ninja)
+ new_ninja.equip_if_possible(OXYTANK, new_ninja.slot_s_store)
+
+ var/obj/item/weapon/card/id/W = new(new_ninja)
+ W.name = "[new_ninja.real_name]'s ID Card"
+ W.access = access_maint_tunnels
+ W.assignment = "Space Ninja"
+ W.registered = new_ninja.real_name
+ new_ninja.equip_if_possible(W, new_ninja.slot_wear_id)
+
+ var/admin_name = src//In case admins want to spawn themselves as ninjas.
+
+ var/mob/dead/observer/G
+ var/list/candidates = list()
+ for(G in world)
+ if(G.client)
+ if(((G.client.inactivity/10)/60) <= 5)
+ candidates.Add(G)
+ if(candidates.len)
+ G = input("Pick character to spawn as the Space Ninja", "Active Players", G) in candidates
+ new_ninja.mind.key = G.key
+ new_ninja.client = G.client
+ del(G)
+ else
+ alert("Could not locate a suitable ghost. Aborting.")
+ del(new_ninja)
+ return
+
+ new_ninja.internal = OXYTANK //So the poor ninja has something to breath when they spawn in spess.
+ new_ninja.internals.icon_state = "internal1"
+
+ new_ninja << "\blue \nYou are an elite mercenary assassin of the Spider Clan. The dreaded \red SPACE NINJA!\blue You have a variety of abilities at your disposal, thanks to your nano-enhanced cyber armor. Remember your training! \nYour current mission is: \red [input]"
+
+ message_admins("\blue [admin_name] has spawned [new_ninja.key] as a Space Ninja. Hide yo children!", 1)
+ log_admin("[admin_name] used Spawn Space Ninja.")
+
+//SPACE NINJA ABILITIES
\ No newline at end of file
diff --git a/config/names/ninjaname.txt b/config/names/ninjaname.txt
new file mode 100644
index 0000000000000..b5578222e037b
--- /dev/null
+++ b/config/names/ninjaname.txt
@@ -0,0 +1,30 @@
+Shadow
+Sarutobi
+Crimson
+Smoke
+Rain
+Scorpion
+Zero
+Ermac
+Saibot
+Cyrax
+Deep
+Raphael
+Michaelangelo
+Donatello
+Leonardo
+Splinter
+Shredder
+Hazuki
+Hien
+Hiryu
+Ryu
+Hayabusa
+Midnight
+Seven
+McNinja
+Hanzo
+Blood
+Grappler
+Ulimate
+Remorseless
\ No newline at end of file
diff --git a/config/names/ninjatitle.txt b/config/names/ninjatitle.txt
new file mode 100644
index 0000000000000..62d77b3c26837
--- /dev/null
+++ b/config/names/ninjatitle.txt
@@ -0,0 +1,34 @@
+Master
+Sensei
+Swift
+Merciless
+Assassin
+Rogue
+Hunter
+Widower
+Orphaner
+Stalker
+Killer
+Silent
+Silencing
+Quick
+Agile
+Merciful
+Ninja
+Shinobi
+Initiate
+Grandmaster
+Strider
+Slayer
+Awesome
+Ender
+Dr.
+Baki
+Ogre
+Daemon
+Goemon
+McAwesome
+Iga
+Koga
+Hero
+Hiro
\ No newline at end of file
diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi
index 00de6abfd4238..b202064c1f6c3 100644
Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 9ae7981675acd..b9029b9be06c0 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi
index b7f7e7bf8b803..60e5db551ad99 100644
Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 628c2e38ed829..9c461d5a444be 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi
index d78fadbd315bf..114a343de0b2d 100644
Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index a323fb683129e..2f3138777a26f 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi
index f468da9057e10..834dcd046aab6 100644
Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ
diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi
index 2d3936f8676b7..e1ea21c564fbc 100644
Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 582ac249143aa..a0f90fedbd0f7 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index 824191e47eada..1e5af49edc4c9 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ