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