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
This commit is contained in:
noisomehollow@lycos.com
2011-04-05 02:15:19 +00:00
parent fa416ce777
commit bb46286e6b
15 changed files with 176 additions and 51 deletions

View File

@@ -16,7 +16,7 @@
var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit) 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/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/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

View File

@@ -60,6 +60,7 @@
siemens_coefficient = 0 siemens_coefficient = 0
protective_temperature = 1100 protective_temperature = 1100
heat_transfer_coefficient = 0.05 heat_transfer_coefficient = 0.05
canremove = 0
/obj/item/clothing/gloves/stungloves/ /obj/item/clothing/gloves/stungloves/
name = "Stungloves" name = "Stungloves"

View File

@@ -172,6 +172,8 @@
icon_state = "s-ninja" icon_state = "s-ninja"
item_state = "s-ninja_mask" item_state = "s-ninja_mask"
radiation_protection = 0.25 radiation_protection = 0.25
canremove = 0
see_face = 1
/obj/item/clothing/head/helmet/swat /obj/item/clothing/head/helmet/swat
name = "swat helmet" name = "swat helmet"

View File

@@ -15,9 +15,6 @@
name = "Black Shoes" name = "Black Shoes"
icon_state = "black" icon_state = "black"
protective_temperature = 1500
heat_transfer_coefficient = 0.01
/obj/item/clothing/shoes/brown /obj/item/clothing/shoes/brown
name = "Brown Shoes" name = "Brown Shoes"
icon_state = "brown" icon_state = "brown"
@@ -37,8 +34,10 @@
desc = "A pair of running shoes, excellent for running and even better for smashing skulls." desc = "A pair of running shoes, excellent for running and even better for smashing skulls."
icon_state = "s-ninja" icon_state = "s-ninja"
slowdown = -1 slowdown = -1
permeability_coefficient = 0.05 protective_temperature = 700
permeability_coefficient = 0.01
flags = NOSLIP flags = NOSLIP
canremove = 0
/obj/item/clothing/shoes/white /obj/item/clothing/shoes/white
name = "White Shoes" name = "White Shoes"

View File

@@ -195,6 +195,7 @@
var/status = 0 var/status = 0
flags = FPRINT | TABLEPASS | CONDUCT | ONESIZEFITSALL flags = FPRINT | TABLEPASS | CONDUCT | ONESIZEFITSALL
body_parts_covered = UPPER_TORSO body_parts_covered = UPPER_TORSO
canremove = 0
/obj/item/clothing/suit/armor/captain /obj/item/clothing/suit/armor/captain
name = "Captain's armor" 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) 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 slowdown = 0
radiation_protection = 0.75 radiation_protection = 0.75
canremove = 0
var/active = 0 var/active = 0
var/energy = 100 var/energy = 100

View File

@@ -51,7 +51,8 @@
for (var/mob/M in world) for (var/mob/M in world)
if (istype(M, /mob/new_player)) if (istype(M, /mob/new_player))
continue //cameras can't follow people who haven't started yet DUH OR DIDN'T YOU KNOW THAT 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 continue
if(!istype(M.loc, /turf)) //in a closet or something, AI can't see him anyways if(!istype(M.loc, /turf)) //in a closet or something, AI can't see him anyways
continue continue

View File

@@ -102,6 +102,10 @@
M.client.screen -= src M.client.screen -= src
src.throwing = 0 src.throwing = 0
if (src.loc == user) if (src.loc == user)
//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) user.u_equip(src)
else else
src.pickup(user) src.pickup(user)
@@ -124,10 +128,6 @@
user << "Your claws aren't capable of such fine manipulation." user << "Your claws aren't capable of such fine manipulation."
return 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)) if (istype(src.loc, /obj/item/weapon/storage))
for(var/mob/M in range(1, src.loc)) for(var/mob/M in range(1, src.loc))
if (M.s_active == src.loc) if (M.s_active == src.loc)
@@ -135,6 +135,10 @@
M.client.screen -= src M.client.screen -= src
src.throwing = 0 src.throwing = 0
if (src.loc == user) if (src.loc == user)
//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) user.u_equip(src)
if (user.hand) if (user.hand)
user.l_hand = src user.l_hand = src

View File

@@ -36,7 +36,6 @@ var/global/sent_strike_team = 0
var/commando_number = 6 //for selecting a leader var/commando_number = 6 //for selecting a leader
var/leader_selected = 0 //when the leader is chosen. The last person spawned. var/leader_selected = 0 //when the leader is chosen. The last person spawned.
var/commando_leader_rank = pick("Lieutenant", "Captain", "Major") 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. //Code for spawning a nuke auth code.
var/nuke_code = "[rand(10000, 99999.0)]" var/nuke_code = "[rand(10000, 99999.0)]"
@@ -47,7 +46,7 @@ var/global/sent_strike_team = 0
if (STARTLOC.name == "Commando") if (STARTLOC.name == "Commando")
var/mob/living/carbon/human/new_commando = new(STARTLOC.loc) 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_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) new_commando.gender = pick(MALE, FEMALE)
if (commando_number == 1) if (commando_number == 1)
leader_selected = 1 leader_selected = 1
@@ -180,9 +179,6 @@ Useful for copy pasta since I'm lazy.*/
if(!input) if(!input)
goto TRYAGAIN 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() var/list/LOCLIST = list()
for(var/obj/landmark/X in world) for(var/obj/landmark/X in world)
if (X.name == "carpspawn") 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) 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. /* 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) var/obj/item/weapon/card/id/W = new(new_ninja)
W.name = "[new_ninja.real_name]'s ID Card" W.name = "[new_ninja.real_name]'s ID Card"
W.access = access_maint_tunnels 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) 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/mob/dead/observer/G
var/list/candidates = list() 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) 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.") 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 //Smoke
//Summons smoke in radius of user. //Summons smoke in radius of user.
//Not sure why this would be useful (it's not) but whatever. Ninjas need their smoke bombs. //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() var/datum/effects/system/bad_smoke_spread/smoke = new /datum/effects/system/bad_smoke_spread()
smoke.set_up(10, 0, src.loc) smoke.set_up(10, 0, src.loc)
smoke.start() smoke.start()
//subtract cost(LOW) //subtract cost(5)
//9-10 Tile Teleport //9-10 Tile Teleport
@@ -373,7 +391,7 @@ Useful for copy pasta since I'm lazy.*/
for(var/mob/living/M in picked) for(var/mob/living/M in picked)
if(M==src) continue if(M==src) continue
M.gib() M.gib()
//subtract cost(MED) //subtract cost(10)
//Right Click Teleport //Right Click Teleport
//Right click to teleport somewhere, almost exactly like admin jump to turf. //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) for(var/mob/living/M in T)
if(M==src) continue if(M==src) continue
M.gib() M.gib()
//subtract cost(HIGH) //subtract cost(20)
//EMP Pulse //EMP Pulse
//Disables nearby tech equipment. //Disables nearby tech equipment.
@@ -434,9 +452,9 @@ Useful for copy pasta since I'm lazy.*/
//add energy cost check //add energy cost check
//add warning message for low energy //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 //Summon Energy Blade
@@ -445,8 +463,5 @@ name = ""
tab = "ninja" tab = "ninja"
desc = "" desc = ""
cost = 0 cost = 0
//Make untrackable by AI.
*/ */

View File

@@ -10,6 +10,11 @@
if (!gibbed) if (!gibbed)
emote("deathgasp") //let the world KNOW WE ARE DEAD 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 src.canmove = 0
if(src.client) if(src.client)
src.blind.layer = 0 src.blind.layer = 0

View File

@@ -6,18 +6,7 @@
if (!dna) if (!dna)
dna = new /datum/dna( null ) 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) spawn (1)
var/datum/organ/external/chest/chest = new /datum/organ/external/chest( src ) var/datum/organ/external/chest/chest = new /datum/organ/external/chest( src )
chest.owner = src chest.owner = src
@@ -1351,6 +1340,11 @@
shielded = 2 shielded = 2
break 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) if (shielded == 2)
src.invisibility = 2 src.invisibility = 2
else else
@@ -2013,6 +2007,9 @@
var/message = null var/message = null
switch(src.place) switch(src.place)
if("mask") if("mask")
if(istype(src.target.wear_mask, /obj/item/clothing)&&!src.target.wear_mask:canremove)
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", src.source, src.target.wear_mask, src.target)
else
message = text("\red <B>[] is trying to take off \a [] from []'s head!</B>", src.source, src.target.wear_mask, src.target) message = text("\red <B>[] is trying to take off \a [] from []'s head!</B>", src.source, src.target.wear_mask, src.target)
/* if("headset") /* if("headset")
message = text("\red <B>[] is trying to take off \a [] from []'s face!</B>", src.source, src.target.w_radio, src.target) */ message = text("\red <B>[] is trying to take off \a [] from []'s face!</B>", src.source, src.target.w_radio, src.target) */
@@ -2021,24 +2018,47 @@
if("r_hand") if("r_hand")
message = text("\red <B>[] is trying to take off \a [] from []'s right hand!</B>", src.source, src.target.r_hand, src.target) message = text("\red <B>[] is trying to take off \a [] from []'s right hand!</B>", src.source, src.target.r_hand, src.target)
if("gloves") if("gloves")
if(istype(src.target.gloves, /obj/item/clothing)&&!src.target.gloves:canremove)
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", src.source, src.target.gloves, src.target)
else
message = text("\red <B>[] is trying to take off the [] from []'s hands!</B>", src.source, src.target.gloves, src.target) message = text("\red <B>[] is trying to take off the [] from []'s hands!</B>", src.source, src.target.gloves, src.target)
if("eyes") if("eyes")
if(istype(src.target.glasses, /obj/item/clothing)&&!src.target.glasses:canremove)
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", src.source, src.target.glasses, src.target)
else
message = text("\red <B>[] is trying to take off the [] from []'s eyes!</B>", src.source, src.target.glasses, src.target) message = text("\red <B>[] is trying to take off the [] from []'s eyes!</B>", src.source, src.target.glasses, src.target)
if("ears") if("ears")
if(istype(src.target.ears, /obj/item/clothing)&&!src.target.ears:canremove)
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", src.source, src.target.ears, src.target)
else
message = text("\red <B>[] is trying to take off the [] from []'s ears!</B>", src.source, src.target.ears, src.target) message = text("\red <B>[] is trying to take off the [] from []'s ears!</B>", src.source, src.target.ears, src.target)
if("head") if("head")
if(istype(src.target.head, /obj/item/clothing)&&!src.target.head:canremove)
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", src.source, src.target.head, src.target)
else
message = text("\red <B>[] is trying to take off the [] from []'s head!</B>", src.source, src.target.head, src.target) message = text("\red <B>[] is trying to take off the [] from []'s head!</B>", src.source, src.target.head, src.target)
if("shoes") if("shoes")
if(istype(src.target.shoes, /obj/item/clothing)&&!src.target.shoes:canremove)
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", src.source, src.target.shoes, src.target)
else
message = text("\red <B>[] is trying to take off the [] from []'s feet!</B>", src.source, src.target.shoes, src.target) message = text("\red <B>[] is trying to take off the [] from []'s feet!</B>", src.source, src.target.shoes, src.target)
if("belt") if("belt")
message = text("\red <B>[] is trying to take off the [] from []'s belt!</B>", src.source, src.target.belt, src.target) message = text("\red <B>[] is trying to take off the [] from []'s belt!</B>", src.source, src.target.belt, src.target)
if("suit") if("suit")
if(istype(src.target.wear_suit, /obj/item/clothing/suit/armor/a_i_a_ptank))//Exception for suicide vests.
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", 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 <B>[] fails to take off \a [] from []'s body!</B>", src.source, src.target.wear_suit, src.target)
else
message = text("\red <B>[] is trying to take off \a [] from []'s body!</B>", src.source, src.target.wear_suit, src.target) message = text("\red <B>[] is trying to take off \a [] from []'s body!</B>", src.source, src.target.wear_suit, src.target)
if("back") if("back")
message = text("\red <B>[] is trying to take off \a [] from []'s back!</B>", src.source, src.target.back, src.target) message = text("\red <B>[] is trying to take off \a [] from []'s back!</B>", src.source, src.target.back, src.target)
if("handcuff") if("handcuff")
message = text("\red <B>[] is trying to unhandcuff []!</B>", src.source, src.target) message = text("\red <B>[] is trying to unhandcuff []!</B>", src.source, src.target)
if("uniform") if("uniform")
if(istype(src.target.w_uniform, /obj/item/clothing)&&!src.target.w_uniform:canremove)
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", src.source, src.target.w_uniform, src.target)
else
message = text("\red <B>[] is trying to take off \a [] from []'s body!</B>", src.source, src.target.w_uniform, src.target) message = text("\red <B>[] is trying to take off \a [] from []'s body!</B>", src.source, src.target.w_uniform, src.target)
if("s_store") if("s_store")
message = text("\red <B>[] is trying to take off \a [] from []'s suit!</B>", src.source, src.target.s_store, src.target) message = text("\red <B>[] is trying to take off \a [] from []'s suit!</B>", src.source, src.target.s_store, src.target)
@@ -2081,6 +2101,15 @@
return return
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() /obj/equip_e/human/done()
if(!src.source || !src.target) return if(!src.source || !src.target) return
if(src.source.loc != src.s_loc) return if(src.source.loc != src.s_loc) return
@@ -2091,7 +2120,9 @@
switch(src.place) switch(src.place)
if("mask") if("mask")
if (src.target.wear_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) src.target.u_equip(W)
if (src.target.client) if (src.target.client)
src.target.client.screen -= W src.target.client.screen -= W
@@ -2126,7 +2157,9 @@
src.item.loc = src.target*/ src.item.loc = src.target*/
if("gloves") if("gloves")
if (src.target.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) src.target.u_equip(W)
if (src.target.client) if (src.target.client)
src.target.client.screen -= W src.target.client.screen -= W
@@ -2144,6 +2177,8 @@
src.item.loc = src.target src.item.loc = src.target
if("eyes") if("eyes")
if (src.target.glasses) if (src.target.glasses)
if(istype(src.target.glasses, /obj/item/clothing)&& !src.target.glasses:canremove)
return
var/obj/item/W = src.target.glasses var/obj/item/W = src.target.glasses
src.target.u_equip(W) src.target.u_equip(W)
if (src.target.client) if (src.target.client)
@@ -2206,6 +2241,8 @@
src.item.loc = src.target src.item.loc = src.target
if("head") if("head")
if (src.target.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 var/obj/item/W = src.target.head
src.target.u_equip(W) src.target.u_equip(W)
if (src.target.client) if (src.target.client)
@@ -2224,6 +2261,8 @@
src.item.loc = src.target src.item.loc = src.target
if("ears") if("ears")
if (src.target.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 var/obj/item/W = src.target.ears
src.target.u_equip(W) src.target.u_equip(W)
if (src.target.client) if (src.target.client)
@@ -2248,6 +2287,8 @@
src.item.loc = src.target src.item.loc = src.target
if("shoes") if("shoes")
if (src.target.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 var/obj/item/W = src.target.shoes
src.target.u_equip(W) src.target.u_equip(W)
if (src.target.client) if (src.target.client)
@@ -2313,6 +2354,8 @@
src.item.add_fingerprint(src.target) src.item.add_fingerprint(src.target)
if("uniform") if("uniform")
if (src.target.w_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 var/obj/item/W = src.target.w_uniform
src.target.u_equip(W) src.target.u_equip(W)
if (src.target.client) if (src.target.client)
@@ -2358,6 +2401,14 @@
src.item.loc = src.target src.item.loc = src.target
if("suit") if("suit")
if (src.target.wear_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 var/obj/item/W = src.target.wear_suit
src.target.u_equip(W) src.target.u_equip(W)
if (src.target.client) if (src.target.client)

View File

@@ -24,6 +24,35 @@
temp_message[H] = "HONK" temp_message[H] = "HONK"
pick_list -= H pick_list -= H
message = dd_list2text(temp_message, " ") 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) ..(message)
/mob/living/carbon/human/say_understands(var/other) /mob/living/carbon/human/say_understands(var/other)

View File

@@ -559,6 +559,11 @@
else else
var/message = null var/message = null
switch(src.place) switch(src.place)
if("mask")
if(istype(src.target.wear_mask, /obj/item/clothing)&&!src.target.wear_mask:canremove)
message = text("\red <B>[] fails to take off \a [] from []'s body!</B>", src.source, src.target.wear_mask, src.target)
else
message = text("\red <B>[] is trying to take off \a [] from []'s head!</B>", src.source, src.target.wear_mask, src.target)
if("l_hand") if("l_hand")
message = text("\red <B>[] is trying to take off a [] from []'s left hand!</B>", src.source, src.target.l_hand, src.target) message = text("\red <B>[] is trying to take off a [] from []'s left hand!</B>", src.source, src.target.l_hand, src.target)
if("r_hand") if("r_hand")
@@ -590,6 +595,8 @@
switch(src.place) switch(src.place)
if("mask") if("mask")
if (src.target.wear_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 var/obj/item/W = src.target.wear_mask
src.target.u_equip(W) src.target.u_equip(W)
if (src.target.client) if (src.target.client)

View File

@@ -1,6 +1,8 @@
var/list/ai_names = dd_file2list("config/names/ai.txt") var/list/ai_names = dd_file2list("config/names/ai.txt")
var/list/wizard_first = dd_file2list("config/names/wizardfirst.txt") var/list/wizard_first = dd_file2list("config/names/wizardfirst.txt")
var/list/wizard_second = dd_file2list("config/names/wizardsecond.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/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_male = dd_file2list("config/names/first_male.txt")
var/list/first_names_female = dd_file2list("config/names/first_female.txt") var/list/first_names_female = dd_file2list("config/names/first_female.txt")

View File

@@ -37,3 +37,6 @@ Throat
Death Death
Aria Aria
Bro Bro
Fox
Null
Raiden

View File

@@ -35,3 +35,7 @@ Dragon
Cruel Cruel
Nightshade Nightshade
Black Black
Gray
Solid
Liquid
Solidus