diff --git a/code/defines/obj/clothing.dm b/code/defines/obj/clothing.dm
index 34791f52af1..07cd4063dc1 100644
--- a/code/defines/obj/clothing.dm
+++ b/code/defines/obj/clothing.dm
@@ -16,7 +16,7 @@
var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit)
var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up
var/radiation_protection = 0.0 //percentage of radiation it will absorb
-
+ var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N
diff --git a/code/defines/obj/clothing/gloves.dm b/code/defines/obj/clothing/gloves.dm
index efea265f5ee..db00f35bacd 100644
--- a/code/defines/obj/clothing/gloves.dm
+++ b/code/defines/obj/clothing/gloves.dm
@@ -60,6 +60,7 @@
siemens_coefficient = 0
protective_temperature = 1100
heat_transfer_coefficient = 0.05
+ canremove = 0
/obj/item/clothing/gloves/stungloves/
name = "Stungloves"
diff --git a/code/defines/obj/clothing/head.dm b/code/defines/obj/clothing/head.dm
index 740d635fd53..cc8a2265240 100644
--- a/code/defines/obj/clothing/head.dm
+++ b/code/defines/obj/clothing/head.dm
@@ -172,6 +172,8 @@
icon_state = "s-ninja"
item_state = "s-ninja_mask"
radiation_protection = 0.25
+ canremove = 0
+ see_face = 1
/obj/item/clothing/head/helmet/swat
name = "swat helmet"
diff --git a/code/defines/obj/clothing/shoes.dm b/code/defines/obj/clothing/shoes.dm
index c1acfceb5ea..e41652e9c8a 100644
--- a/code/defines/obj/clothing/shoes.dm
+++ b/code/defines/obj/clothing/shoes.dm
@@ -15,9 +15,6 @@
name = "Black Shoes"
icon_state = "black"
- protective_temperature = 1500
- heat_transfer_coefficient = 0.01
-
/obj/item/clothing/shoes/brown
name = "Brown Shoes"
icon_state = "brown"
@@ -37,8 +34,10 @@
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
+ protective_temperature = 700
+ permeability_coefficient = 0.01
flags = NOSLIP
+ canremove = 0
/obj/item/clothing/shoes/white
name = "White Shoes"
diff --git a/code/defines/obj/clothing/suit.dm b/code/defines/obj/clothing/suit.dm
index 76d76c03581..095778580e7 100644
--- a/code/defines/obj/clothing/suit.dm
+++ b/code/defines/obj/clothing/suit.dm
@@ -195,6 +195,7 @@
var/status = 0
flags = FPRINT | TABLEPASS | CONDUCT | ONESIZEFITSALL
body_parts_covered = UPPER_TORSO
+ canremove = 0
/obj/item/clothing/suit/armor/captain
name = "Captain's armor"
@@ -347,6 +348,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 = 0
radiation_protection = 0.75
+ canremove = 0
var/active = 0
var/energy = 100
diff --git a/code/game/machinery/camera.dm b/code/game/machinery/camera.dm
index 3d2b2a7256f..1398ee05873 100644
--- a/code/game/machinery/camera.dm
+++ b/code/game/machinery/camera.dm
@@ -51,7 +51,8 @@
for (var/mob/M in world)
if (istype(M, /mob/new_player))
continue //cameras can't follow people who haven't started yet DUH OR DIDN'T YOU KNOW THAT
- if (istype(M, /mob/living/carbon/human) && istype(M:wear_id, /obj/item/weapon/card/id/syndicate))
+ //Cameras can't track people wearing an agent card or a ninja hood.
+ if (istype(M, /mob/living/carbon/human) && (istype(M:wear_id, /obj/item/weapon/card/id/syndicate)||istype(M:head, /obj/item/clothing/head/helmet/space/space_ninja)))
continue
if(!istype(M.loc, /turf)) //in a closet or something, AI can't see him anyways
continue
diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm
index ec406866627..b8c60f9ba99 100644
--- a/code/game/objects/items/item.dm
+++ b/code/game/objects/items/item.dm
@@ -102,7 +102,11 @@
M.client.screen -= src
src.throwing = 0
if (src.loc == user)
- user.u_equip(src)
+ //canremove==0 means that object may not be removed. You can still wear it. This only applies to clothing. /N
+ if(istype(src, /obj/item/clothing) && !src:canremove)
+ return
+ else
+ user.u_equip(src)
else
src.pickup(user)
@@ -124,10 +128,6 @@
user << "Your claws aren't capable of such fine manipulation."
return
-// if(istype(src, /obj/item/weapon/gun)) //Temporary fix until I figure out what's going with monkey/add_blood code./N
-// user << "Sorry Mr. Monkey, guns aren't for you."
-// return
-
if (istype(src.loc, /obj/item/weapon/storage))
for(var/mob/M in range(1, src.loc))
if (M.s_active == src.loc)
@@ -135,7 +135,11 @@
M.client.screen -= src
src.throwing = 0
if (src.loc == user)
- user.u_equip(src)
+ //canremove==0 means that object may not be removed. You can still wear it. This only applies to clothing. /N
+ if(istype(src, /obj/item/clothing) && !src:canremove)
+ return
+ else
+ user.u_equip(src)
if (user.hand)
user.l_hand = src
else
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index 6f3770952f9..9729f65c90f 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -36,7 +36,6 @@ var/global/sent_strike_team = 0
var/commando_number = 6 //for selecting a leader
var/leader_selected = 0 //when the leader is chosen. The last person spawned.
var/commando_leader_rank = pick("Lieutenant", "Captain", "Major")
- var/list/commando_names = dd_file2list("config/names/last.txt")
//Code for spawning a nuke auth code.
var/nuke_code = "[rand(10000, 99999.0)]"
@@ -47,7 +46,7 @@ var/global/sent_strike_team = 0
if (STARTLOC.name == "Commando")
var/mob/living/carbon/human/new_commando = new(STARTLOC.loc)
var/commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
- var/commando_name = pick(commando_names)
+ var/commando_name = pick(last_names)
new_commando.gender = pick(MALE, FEMALE)
if (commando_number == 1)
leader_selected = 1
@@ -180,9 +179,6 @@ Useful for copy pasta since I'm lazy.*/
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")
@@ -224,6 +220,7 @@ Useful for copy pasta since I'm lazy.*/
new_ninja.equip_if_possible(OXYTANK, new_ninja.slot_s_store)
/* You know, I'm not really sure why space ninjas would need an ID card.
+Running around as an unknown is badass and makes you manly
var/obj/item/weapon/card/id/W = new(new_ninja)
W.name = "[new_ninja.real_name]'s ID Card"
W.access = access_maint_tunnels
@@ -232,7 +229,7 @@ Useful for copy pasta since I'm lazy.*/
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/admin_name = src//In case admins want to spawn themselves as ninjas. Badmins
var/mob/dead/observer/G
var/list/candidates = list()
@@ -267,8 +264,29 @@ Useful for copy pasta since I'm lazy.*/
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
+
+//SPACE NINJA ABILITIES
+/*
+// src << "\red Something has gone awry and you are missing one or more pieces of equipment."
+
+/mob/proc/ninjagear()
+ if(!istype(src:wear_suit, /obj/item/clothing/suit/space/space_ninja)) return 0
+ else if(!istype(src:head, /obj/item/clothing/head/helmet/space/space_ninja)) return 0
+ else if(!istype(src:gloves, /obj/item/clothing/gloves/space_ninja)) return 0
+ else if(!istype(src:shoes, /obj/item/clothing/shoes/space_ninja)) return 0
+ else return 1
+
+/mob/proc/ninjacost(var/cost)
+ if(cost>src.wear_suit:energy)
+ return 0
+ else
+ src.wear_suit:energy=src.wear_suit:energy-cost
+ return 1
+
+//else if (istype(src.wear_mask, /obj/item/clothing/mask/gas/space_ninja))
+ // switch(src.wear_mask:mode)
+*/
//Smoke
//Summons smoke in radius of user.
//Not sure why this would be useful (it's not) but whatever. Ninjas need their smoke bombs.
@@ -286,7 +304,7 @@ Useful for copy pasta since I'm lazy.*/
var/datum/effects/system/bad_smoke_spread/smoke = new /datum/effects/system/bad_smoke_spread()
smoke.set_up(10, 0, src.loc)
smoke.start()
- //subtract cost(LOW)
+ //subtract cost(5)
//9-10 Tile Teleport
@@ -373,7 +391,7 @@ Useful for copy pasta since I'm lazy.*/
for(var/mob/living/M in picked)
if(M==src) continue
M.gib()
- //subtract cost(MED)
+ //subtract cost(10)
//Right Click Teleport
//Right click to teleport somewhere, almost exactly like admin jump to turf.
@@ -419,7 +437,7 @@ Useful for copy pasta since I'm lazy.*/
for(var/mob/living/M in T)
if(M==src) continue
M.gib()
- //subtract cost(HIGH)
+ //subtract cost(20)
//EMP Pulse
//Disables nearby tech equipment.
@@ -434,9 +452,9 @@ Useful for copy pasta since I'm lazy.*/
//add energy cost check
//add warning message for low energy
- empulse(src, 4, 6) //Procs sure are nice. Slihgtly weaker than wizard's disable tch.
+ empulse(src, 4, 6) //Procs sure are nice. Slightly weaker than wizard's disable tch.
- //subtract cost(HIGH)
+ //subtract cost(25)
/*
//Summon Energy Blade
@@ -445,8 +463,5 @@ name = ""
tab = "ninja"
desc = ""
cost = 0
-
-//Make untrackable by AI.
-
*/
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index c0184d28319..c700c3d0045 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -10,6 +10,11 @@
if (!gibbed)
emote("deathgasp") //let the world KNOW WE ARE DEAD
+ //For ninjas exploding when they die./N
+ if (src.mind&&src.mind.special_role == "Space Ninja")
+ var/location = src.loc
+ explosion(location, 1, 2, 3, 4)
+
src.canmove = 0
if(src.client)
src.blind.layer = 0
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 06840de055e..5df598d8e80 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -6,18 +6,7 @@
if (!dna)
dna = new /datum/dna( null )
-/*
- if(istype(src, /mob/living/carbon/human/vampire))
- spawn (1)
- src.verbs += /mob/proc/mist
- src.verbs += /mob/proc/port
- src.verbs += /mob/proc/hellfire
- src.verbs += /mob/proc/veil
- src.verbs += /mob/proc/charm
- src.verbs += /mob/proc/lights
- src.verbs += /mob/proc/blood
- src.mutantrace = "vampire"
-*/
+
spawn (1)
var/datum/organ/external/chest/chest = new /datum/organ/external/chest( src )
chest.owner = src
@@ -1351,6 +1340,11 @@
shielded = 2
break
+ for (var/obj/item/clothing/suit/space/space_ninja/S in src)//Same as a regular cloaking device but more ninja./N
+ if (S.active)
+ shielded = 2
+ break
+
if (shielded == 2)
src.invisibility = 2
else
@@ -2013,7 +2007,10 @@
var/message = null
switch(src.place)
if("mask")
- message = text("\red [] is trying to take off \a [] from []'s head!", src.source, src.target.wear_mask, src.target)
+ if(istype(src.target.wear_mask, /obj/item/clothing)&&!src.target.wear_mask:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.wear_mask, src.target)
+ else
+ message = text("\red [] is trying to take off \a [] from []'s head!", src.source, src.target.wear_mask, src.target)
/* if("headset")
message = text("\red [] is trying to take off \a [] from []'s face!", src.source, src.target.w_radio, src.target) */
if("l_hand")
@@ -2021,25 +2018,48 @@
if("r_hand")
message = text("\red [] is trying to take off \a [] from []'s right hand!", src.source, src.target.r_hand, src.target)
if("gloves")
- message = text("\red [] is trying to take off the [] from []'s hands!", src.source, src.target.gloves, src.target)
+ if(istype(src.target.gloves, /obj/item/clothing)&&!src.target.gloves:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.gloves, src.target)
+ else
+ message = text("\red [] is trying to take off the [] from []'s hands!", src.source, src.target.gloves, src.target)
if("eyes")
- message = text("\red [] is trying to take off the [] from []'s eyes!", src.source, src.target.glasses, src.target)
+ if(istype(src.target.glasses, /obj/item/clothing)&&!src.target.glasses:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.glasses, src.target)
+ else
+ message = text("\red [] is trying to take off the [] from []'s eyes!", src.source, src.target.glasses, src.target)
if("ears")
- message = text("\red [] is trying to take off the [] from []'s ears!", src.source, src.target.ears, src.target)
+ if(istype(src.target.ears, /obj/item/clothing)&&!src.target.ears:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.ears, src.target)
+ else
+ message = text("\red [] is trying to take off the [] from []'s ears!", src.source, src.target.ears, src.target)
if("head")
- message = text("\red [] is trying to take off the [] from []'s head!", src.source, src.target.head, src.target)
+ if(istype(src.target.head, /obj/item/clothing)&&!src.target.head:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.head, src.target)
+ else
+ message = text("\red [] is trying to take off the [] from []'s head!", src.source, src.target.head, src.target)
if("shoes")
- message = text("\red [] is trying to take off the [] from []'s feet!", src.source, src.target.shoes, src.target)
+ if(istype(src.target.shoes, /obj/item/clothing)&&!src.target.shoes:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.shoes, src.target)
+ else
+ message = text("\red [] is trying to take off the [] from []'s feet!", src.source, src.target.shoes, src.target)
if("belt")
message = text("\red [] is trying to take off the [] from []'s belt!", src.source, src.target.belt, src.target)
if("suit")
- message = text("\red [] is trying to take off \a [] from []'s body!", src.source, src.target.wear_suit, src.target)
+ if(istype(src.target.wear_suit, /obj/item/clothing/suit/armor/a_i_a_ptank))//Exception for suicide vests.
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.wear_suit, src.target)
+ else if(istype(src.target.wear_suit, /obj/item/clothing)&&!src.target.wear_suit:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.wear_suit, src.target)
+ else
+ message = text("\red [] is trying to take off \a [] from []'s body!", src.source, src.target.wear_suit, src.target)
if("back")
message = text("\red [] is trying to take off \a [] from []'s back!", src.source, src.target.back, src.target)
if("handcuff")
message = text("\red [] is trying to unhandcuff []!", src.source, src.target)
if("uniform")
- message = text("\red [] is trying to take off \a [] from []'s body!", src.source, src.target.w_uniform, src.target)
+ if(istype(src.target.w_uniform, /obj/item/clothing)&&!src.target.w_uniform:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.w_uniform, src.target)
+ else
+ message = text("\red [] is trying to take off \a [] from []'s body!", src.source, src.target.w_uniform, src.target)
if("s_store")
message = text("\red [] is trying to take off \a [] from []'s suit!", src.source, src.target.s_store, src.target)
if("h_store")
@@ -2081,6 +2101,15 @@
return
return
+/*
+This proc equips stuff (or does something else) when removing stuff manually from the character window when you click and drag.
+It works in conjuction with the process() above.
+This proc works for humans only. Aliens stripping humans and the like will all use this proc. Stripping monkeys or somesuch will use their version of this proc.
+The first if statement for "mask" and such refers to items that are already equipped and un-equipping them.
+The else statement is for equipping stuff to empty slots.
+!canremove refers to variable of /obj/item/clothing which either allows or disallows that item to be removed.
+It can still be worn/put on as normal.
+*/
/obj/equip_e/human/done()
if(!src.source || !src.target) return
if(src.source.loc != src.s_loc) return
@@ -2091,7 +2120,9 @@
switch(src.place)
if("mask")
if (src.target.wear_mask)
- var/obj/item/W = src.target.wear_mask
+ if(istype(src.target.wear_mask, /obj/item/clothing)&& !src.target.wear_mask:canremove)
+ return
+ var/obj/item/clothing/W = src.target.wear_mask
src.target.u_equip(W)
if (src.target.client)
src.target.client.screen -= W
@@ -2126,7 +2157,9 @@
src.item.loc = src.target*/
if("gloves")
if (src.target.gloves)
- var/obj/item/W = src.target.gloves
+ if(istype(src.target.gloves, /obj/item/clothing)&& !src.target.gloves:canremove)
+ return
+ var/obj/item/clothing/W = src.target.gloves
src.target.u_equip(W)
if (src.target.client)
src.target.client.screen -= W
@@ -2144,6 +2177,8 @@
src.item.loc = src.target
if("eyes")
if (src.target.glasses)
+ if(istype(src.target.glasses, /obj/item/clothing)&& !src.target.glasses:canremove)
+ return
var/obj/item/W = src.target.glasses
src.target.u_equip(W)
if (src.target.client)
@@ -2206,6 +2241,8 @@
src.item.loc = src.target
if("head")
if (src.target.head)
+ if(istype(src.target.head, /obj/item/clothing)&& !src.target.head:canremove)
+ return
var/obj/item/W = src.target.head
src.target.u_equip(W)
if (src.target.client)
@@ -2224,6 +2261,8 @@
src.item.loc = src.target
if("ears")
if (src.target.ears)
+ if(istype(src.target.ears, /obj/item/clothing)&& !src.target.ears:canremove)
+ return
var/obj/item/W = src.target.ears
src.target.u_equip(W)
if (src.target.client)
@@ -2248,6 +2287,8 @@
src.item.loc = src.target
if("shoes")
if (src.target.shoes)
+ if(istype(src.target.shoes, /obj/item/clothing)&& !src.target.shoes:canremove)
+ return
var/obj/item/W = src.target.shoes
src.target.u_equip(W)
if (src.target.client)
@@ -2313,6 +2354,8 @@
src.item.add_fingerprint(src.target)
if("uniform")
if (src.target.w_uniform)
+ if(istype(src.target.w_uniform, /obj/item/clothing)&& !src.target.w_uniform:canremove)
+ return
var/obj/item/W = src.target.w_uniform
src.target.u_equip(W)
if (src.target.client)
@@ -2358,6 +2401,14 @@
src.item.loc = src.target
if("suit")
if (src.target.wear_suit)
+ if(istype(src.target.wear_suit, /obj/item/clothing/suit/armor/a_i_a_ptank))//triggers suicide vest if someone else tries to take it off/N
+ var/obj/item/clothing/suit/armor/a_i_a_ptank/A = src.target.wear_suit//mostly a copy from death.dm code.
+ bombers += "[src.target.key] has detonated a suicide bomb. Temp = [A.part4.air_contents.temperature-T0C]."
+ if(A.status && prob(90))
+ A.part4.ignite()
+ return
+ if(istype(src.target.wear_suit, /obj/item/clothing)&& !src.target.wear_suit:canremove)
+ if(!istype(src.target.wear_suit, /obj/item/clothing/suit/armor/a_i_a_ptank)) return//Can remove the suicide vest if it didn't trigger.
var/obj/item/W = src.target.wear_suit
src.target.u_equip(W)
if (src.target.client)
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index 3faacd1b5cd..89e735dae60 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -24,6 +24,35 @@
temp_message[H] = "HONK"
pick_list -= H
message = dd_list2text(temp_message, " ")
+ //Ninja mask obscures text but not voice. You should still come up as your own name.
+ if(istype(src.wear_mask, /obj/item/clothing/mask/gas/space_ninja)&&!src.wear_mask:vchange)
+ if(copytext(message, 1, 2) != "*")
+ //This text is hilarious.
+ message = dd_replaceText(message, "l", "r")
+ message = dd_replaceText(message, "rr", "ru")
+ message = dd_replaceText(message, "v", "b")
+ message = dd_replaceText(message, "f", "hu")
+ message = dd_replaceText(message, "'t", "")
+ message = dd_replaceText(message, "t ", "to ")
+ message = dd_replaceText(message, " I ", " ai ")
+ message = dd_replaceText(message, "th", "z")
+ message = dd_replaceText(message, "ish", "isu")
+ message = dd_replaceText(message, "is", "izu")
+ message = dd_replaceText(message, "ziz", "zis")
+ message = dd_replaceText(message, "se", "su")
+ message = dd_replaceText(message, "br", "bur")
+ message = dd_replaceText(message, "ry", "ri")
+ message = dd_replaceText(message, "you", "yuu")
+ message = dd_replaceText(message, "ck", "cku")
+ message = dd_replaceText(message, "eu", "uu")
+ message = dd_replaceText(message, "ow", "au")
+ message = dd_replaceText(message, "are", "aa")
+ message = dd_replaceText(message, "ay", "ayu")
+ message = dd_replaceText(message, "ea", "ii")
+ message = dd_replaceText(message, "ch", "chi")
+ message = dd_replaceText(message, "than", "sen")
+ message = dd_replaceText(message, ".", "")
+ message = lowertext(message)
..(message)
/mob/living/carbon/human/say_understands(var/other)
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index b9cb15eba13..cf6476f677f 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -559,6 +559,11 @@
else
var/message = null
switch(src.place)
+ if("mask")
+ if(istype(src.target.wear_mask, /obj/item/clothing)&&!src.target.wear_mask:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", src.source, src.target.wear_mask, src.target)
+ else
+ message = text("\red [] is trying to take off \a [] from []'s head!", src.source, src.target.wear_mask, src.target)
if("l_hand")
message = text("\red [] is trying to take off a [] from []'s left hand!", src.source, src.target.l_hand, src.target)
if("r_hand")
@@ -590,6 +595,8 @@
switch(src.place)
if("mask")
if (src.target.wear_mask)
+ if(istype(src.target.wear_mask, /obj/item/clothing)&& !src.target.wear_mask:canremove)
+ return
var/obj/item/W = src.target.wear_mask
src.target.u_equip(W)
if (src.target.client)
diff --git a/code/names.dm b/code/names.dm
index ad84da51b2c..e81841a17a6 100644
--- a/code/names.dm
+++ b/code/names.dm
@@ -1,6 +1,8 @@
var/list/ai_names = dd_file2list("config/names/ai.txt")
var/list/wizard_first = dd_file2list("config/names/wizardfirst.txt")
var/list/wizard_second = dd_file2list("config/names/wizardsecond.txt")
+var/list/ninja_titles = dd_file2list("config/names/ninjatitle.txt")
+var/list/ninja_names = dd_file2list("config/names/ninjaname.txt")
var/list/commando_names = dd_file2list("config/names/death_commando.txt")
var/list/first_names_male = dd_file2list("config/names/first_male.txt")
var/list/first_names_female = dd_file2list("config/names/first_female.txt")
diff --git a/config/names/ninjaname.txt b/config/names/ninjaname.txt
index ef28873b263..5d6d6717961 100644
--- a/config/names/ninjaname.txt
+++ b/config/names/ninjaname.txt
@@ -36,4 +36,7 @@ McAwesome
Throat
Death
Aria
-Bro
\ No newline at end of file
+Bro
+Fox
+Null
+Raiden
\ No newline at end of file
diff --git a/config/names/ninjatitle.txt b/config/names/ninjatitle.txt
index f6b093eeed4..151f824dafd 100644
--- a/config/names/ninjatitle.txt
+++ b/config/names/ninjatitle.txt
@@ -34,4 +34,8 @@ Deep
Dragon
Cruel
Nightshade
-Black
\ No newline at end of file
+Black
+Gray
+Solid
+Liquid
+Solidus
\ No newline at end of file