#Fixed ninja teleporting. It will not blackscreen when Phase Jaunting near the map edge.

#Phase Shift will no-longer show up in the Ninja verb panel. You can right-click on turfs only to use it.
#Ninjas can now spawn a sword in their active hand. Besides killing dudes, it's also useful for slicing through doors, lockers, walls, and so on. It'll disappear if dropped or thrown, and it cannot be placed in containers.
#Ninja mask now works differently when mimicking voice. You start out as "Unknown" and when toggling the voice changer it will randomly change your name with some variations.
#If you switch the name back to "Unknown" you will re-active voice masking which is much less silly this time. The only way for someone to determine your true name is to remove the mask. Postmodern Space Bushido demands that you only reveal your identity in honorable combat!
#Slightly updated sprites for ninja suit and accessories. Or as I'd like to call them, the Tron suit. Probably wip until I get enough motivation to redo it from scratch.

#People that respawn as death commandos are now manually chosen by an admin.
#Death commandos use the new suit sprites.
#Added a global proc for animations. Currently only used by ninjas.
#Moved around suit icons so they are grouped better.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1433 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
noisomehollow@lycos.com
2011-04-10 22:41:23 +00:00
parent ae1d99ee73
commit 7b280b791a
28 changed files with 295 additions and 127 deletions
+39 -6
View File
@@ -345,12 +345,45 @@ NINJA MASK
set name = "Toggle Voice"
set desc = "Toggles the voice synthesizer on or off."
set category = "Object"
if(src.vchange==0)
src.vchange=1
usr << "You enable the voice voice synthesizer."
var/vchange = (alert("Would you like to synthesize a new name or turn off the voice synthesizer?",,"New Name","Turn Off"))
if(vchange=="New Name")
var/chance = rand(1,100)
switch(chance)
if(1 to 50)//High chance of a regular name.
var/g = pick(0,1)
var/first = null
var/last = pick(last_names)
if(g==0)
first = pick(first_names_female)
else
first = pick(first_names_male)
voice = "[first] [last]"
if(51 to 80)//Smaller chance of a clown name.
var/first = pick(clown_names)
voice = "[first]"
if(81 to 90)//Small chance of a wizard name.
var/first = pick(wizard_first)
var/last = pick(wizard_second)
voice = "[first] [last]"
if(91 to 100)//Small chance of an existing crew name.
var/list/names = new()
for(var/mob/living/carbon/human/M in world)
if(M==usr||!M.client||!M.real_name) continue
names.Add(M)
if(!names.len)
voice = "Cuban Pete"//Smallest chance to be the man.
else
var/mob/picked = pick(names)
voice = picked.real_name
usr << "You are now mimicking <B>[voice]</B>."
return
else
src.vchange=0
usr << "You disable the voice synthesizer."
if(voice!="Unknown")
usr << "You deactivate the voice synthesizer."
voice = "Unknown"
else
usr << "The voice synthesizer is already deactivated."
return
/obj/item/clothing/mask/gas/space_ninja/verb/switchm()
set name = "Switch Mode"
@@ -388,4 +421,4 @@ NINJA MASK
else
voice = "active"
usr << "<B>[mode]</B> is active."
usr << "Voice mimicking algorithm is <B>[voice]</B>."
usr << "Voice mimicking algorithm is set to <B>[voice]</B>."
@@ -1,9 +1,9 @@
/*
CONTAINS:
SWORD
BLADE
AXE
STUN BATON
*/
@@ -51,6 +51,19 @@ STUN BATON
New()
color = "red"
// BLADE
//Two procs to delete the item if dropped or thrown.
//Most of the other special functions are handled in their own files.
/obj/item/weapon/blade/dropped()
del(src)
return
/obj/item/weapon/blade/proc/throw()
del(src)
return
// AXE
/obj/item/weapon/axe/attack(target as mob, mob/user as mob)
@@ -71,9 +84,6 @@ STUN BATON
src.add_fingerprint(user)
return
// STUN BATON
/obj/item/weapon/baton/update_icon()
+7 -4
View File
@@ -94,16 +94,19 @@
/obj/item/weapon/secstorage/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((W.w_class > 3 || istype(W, /obj/item/weapon/secstorage)))
return
if ((istype(W, /obj/item/weapon/card/emag)) && (src.locked == 1) && (!src.emagged))
if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/blade)) && (src.locked == 1) && (!src.emagged))
emagged = 1
src.overlays += image('storage.dmi', icon_sparking)
sleep(6)
src.overlays = null
overlays += image('storage.dmi', icon_locking)
locked = 0
user << "You short out the lock on [src]."
if(istype(W, /obj/item/weapon/blade))
user << "You slice through the lock on [src]."
else
user << "You short out the lock on [src]."
return
if ((W.w_class > 3 || istype(W, /obj/item/weapon/secstorage)))
return
if ((istype(W, /obj/item/weapon/screwdriver)) && (src.locked == 1))
sleep(6)
+7 -4
View File
@@ -167,13 +167,16 @@
else if(src.broken)
user << "\red It appears to be broken."
return
else if(istype(W, /obj/item/weapon/card/emag) && !src.broken)
else if( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/blade)) && !src.broken)
src.broken = 1
src.locked = 0
src.icon_state = src.icon_broken
for(var/mob/O in viewers(user, 3))
if ((O.client && !( O.blinded )))
O << text("\blue The locker has been broken by [user] with an electromagnetic card!")
if(istype(W, /obj/item/weapon/blade))
for(var/mob/O in viewers(user, 3))
O.show_message(text("\blue The locker has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
else
for(var/mob/O in viewers(user, 3))
O.show_message(text("\blue The locker has been broken by [] with an electromagnetic card!", user), 1, text("You hear a faint electrical spark."), 2)
else if(src.allowed(user))
src.locked = !src.locked
for(var/mob/O in viewers(user, 3))
+1 -1
View File
@@ -247,7 +247,7 @@
overlays = null
overlays += redlight
return
else if (istype(W, /obj/item/weapon/card/emag) && locked &&!broken)
else if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/blade)) && locked &&!broken)
overlays = null
overlays += emag
overlays += sparks
+15
View File
@@ -125,6 +125,13 @@
if(isrobot(user))
return
if(istype(W, /obj/item/weapon/blade))
for(var/mob/O in viewers(user, 4))
O.show_message(text("\blue The table was sliced apart by []!", user), 1, text("\red You hear metal coming apart."), 2)
new /obj/item/weapon/table_parts( src.loc )
del(src)
return
user.drop_item()
if(W && W.loc) W.loc = src.loc
return
@@ -180,6 +187,14 @@
return
if(isrobot(user))
return
if(istype(W, /obj/item/weapon/blade))
for(var/mob/O in viewers(user, 4))
O.show_message(text("\blue The reinforced table was sliced apart by []!", user), 1, text("\red You hear metal coming apart."), 2)
new /obj/item/weapon/table_parts/reinforced( src.loc )
del(src)
return
user.drop_item()
if(W && W.loc) W.loc = src.loc
return