From bb46286e6b897aa2bfebb8ca5b1ee40043b1d30b Mon Sep 17 00:00:00 2001 From: "noisomehollow@lycos.com" Date: Tue, 5 Apr 2011 02:15:19 +0000 Subject: [PATCH] Reverted ninja stealth so it works again. Ninjas now explode when they die. Ninja mask obscures speech (garbles text) if the voice modulator is not set to mimic voice. Ninja hood makes one not trackable by AI if worn, much like the agent card. Certain obj/item/clothing items (canremove=0) will not be removable by normal means. Currently only set for ninja stuff and the suicide vest. The suicide vest might explode if active and someone tries to strip it off a person. Removed heat protection from black shoes. Not sure why it was there. Removing a mask from a monkey via text window will now properly give a message. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1370 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/obj/clothing.dm | 2 +- code/defines/obj/clothing/gloves.dm | 1 + code/defines/obj/clothing/head.dm | 2 + code/defines/obj/clothing/shoes.dm | 7 +- code/defines/obj/clothing/suit.dm | 2 + code/game/machinery/camera.dm | 3 +- code/game/objects/items/item.dm | 16 ++-- code/modules/admin/verbs/striketeam.dm | 45 ++++++--- code/modules/mob/living/carbon/human/death.dm | 5 + code/modules/mob/living/carbon/human/human.dm | 95 ++++++++++++++----- code/modules/mob/living/carbon/human/say.dm | 29 ++++++ .../mob/living/carbon/monkey/monkey.dm | 7 ++ code/names.dm | 2 + config/names/ninjaname.txt | 5 +- config/names/ninjatitle.txt | 6 +- 15 files changed, 176 insertions(+), 51 deletions(-) diff --git a/code/defines/obj/clothing.dm b/code/defines/obj/clothing.dm index 34791f52af..07cd4063dc 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 efea265f5e..db00f35bac 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 740d635fd5..cc8a226524 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 c1acfceb5e..e41652e9c8 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 76d76c0358..095778580e 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 3d2b2a7256..1398ee0587 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 ec40686662..b8c60f9ba9 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 6f3770952f..9729f65c90 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 c0184d2831..c700c3d004 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 06840de055..5df598d8e8 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 3faacd1b5c..89e735dae6 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 b9cb15eba1..cf6476f677 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 ad84da51b2..e81841a17a 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 ef28873b26..5d6d671796 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 f6b093eeed..151f824daf 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