mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
#Fixed swat armor from previous commit, oops.
#Added effects and sounds to ninja powers. #Energy blade will no longer cut through r-walls. Regular walls take seven seconds to cut through. #Added a bare-bones startup and power-down system to the ninja suit (and accessories). It will need to initialize before granting powers. It should be very possible to give anyone the suit and turn them into a space ninja. Just make sure to edit their special_role to "Space Ninja" #This also means that ninja items are now removable before they are initialized (or after de-initializing). Suit and mask are still not examinable due to a mysterious bug with obj verbs. #fixed a few misc bugs. #Updated turrets a tad. You can now destroy them by bashing them with stuff when they pop out. If someone feels up to it, death commandos need a cool helmet to go with their new suits. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1437 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -60,7 +60,6 @@
|
|||||||
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"
|
||||||
|
|||||||
@@ -188,7 +188,6 @@
|
|||||||
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
|
see_face = 1
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/swat
|
/obj/item/clothing/head/helmet/swat
|
||||||
|
|||||||
@@ -33,11 +33,10 @@
|
|||||||
name = "ninja shoes"
|
name = "ninja shoes"
|
||||||
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 = 0
|
||||||
protective_temperature = 700
|
protective_temperature = 700
|
||||||
permeability_coefficient = 0.01
|
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"
|
||||||
|
|||||||
@@ -248,10 +248,10 @@
|
|||||||
/obj/item/clothing/suit/armor/swat
|
/obj/item/clothing/suit/armor/swat
|
||||||
name = "swat suit"
|
name = "swat suit"
|
||||||
desc = "A heavily armored suit that protects against moderate damage. Used in special operations."
|
desc = "A heavily armored suit that protects against moderate damage. Used in special operations."
|
||||||
icon_state = "deathcommando"
|
icon_state = "deathsquad"
|
||||||
item_state = "swat_suit"
|
item_state = "swat_suit"
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||||
slowdown = 0.5
|
slowdown = 1
|
||||||
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)
|
||||||
|
|
||||||
// FIRE SUITS
|
// FIRE SUITS
|
||||||
@@ -360,12 +360,14 @@
|
|||||||
icon_state = "s-ninja"
|
icon_state = "s-ninja"
|
||||||
item_state = "s-ninja_suit"
|
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)
|
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 = 1
|
||||||
radiation_protection = 0.75
|
radiation_protection = 0.75
|
||||||
canremove = 0
|
var/affecting = null
|
||||||
var/active = 0
|
var/active = 0
|
||||||
var/charge = 10000.0
|
var/charge = 10000.0
|
||||||
var/maxcharge = 10000.0//Super high capacity charge but abilities eat a chunk of it./N
|
var/maxcharge = 10000.0//Super high capacity charge but abilities eat a chunk of it./N
|
||||||
|
var/initialize = 0
|
||||||
|
var/sbombs = 10.0
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/pirate
|
/obj/item/clothing/suit/space/pirate
|
||||||
name = "pirate coat"
|
name = "pirate coat"
|
||||||
|
|||||||
@@ -1259,9 +1259,10 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
|
|||||||
throwforce = 1//Throwing or dropping the item deletes it.
|
throwforce = 1//Throwing or dropping the item deletes it.
|
||||||
throw_speed = 1
|
throw_speed = 1
|
||||||
throw_range = 1
|
throw_range = 1
|
||||||
w_class = 4.0//So you can't hide in your pocket or some such.
|
w_class = 4.0//So you can't hide it in your pocket or some such.
|
||||||
flags = FPRINT | TABLEPASS | NOSHIELD
|
flags = FPRINT | TABLEPASS | NOSHIELD
|
||||||
var/affecting = null
|
var/affecting = null
|
||||||
|
var/datum/effects/system/spark_spread/spark_system
|
||||||
|
|
||||||
/obj/item/weapon/table_parts
|
/obj/item/weapon/table_parts
|
||||||
name = "table parts"
|
name = "table parts"
|
||||||
|
|||||||
@@ -128,6 +128,13 @@
|
|||||||
src.operating = -1
|
src.operating = -1
|
||||||
if(istype(I, /obj/item/weapon/blade))
|
if(istype(I, /obj/item/weapon/blade))
|
||||||
if(istype(src, /obj/machinery/door/airlock))
|
if(istype(src, /obj/machinery/door/airlock))
|
||||||
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
||||||
|
spark_system.set_up(5, 0, src.loc)
|
||||||
|
spark_system.start()
|
||||||
|
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
|
for(var/mob/O in viewers(user, 3))
|
||||||
|
O.show_message(text("\blue The door has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
|
||||||
if((!src:arePowerSystemsOn()) || (stat & NOPOWER) || src:isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
|
if((!src:arePowerSystemsOn()) || (stat & NOPOWER) || src:isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
|
||||||
var/obj/door_assembly/temp
|
var/obj/door_assembly/temp
|
||||||
var/failsafe=0
|
var/failsafe=0
|
||||||
@@ -145,16 +152,12 @@
|
|||||||
temp.anchored=0
|
temp.anchored=0
|
||||||
step_away(temp,usr,15)
|
step_away(temp,usr,15)
|
||||||
else del(temp)
|
else del(temp)
|
||||||
for(var/mob/O in viewers(user, 3))
|
|
||||||
O.show_message(text("\blue The door has been sliced open by [] with an energy blade and kicked out of the way!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
|
|
||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
src:welded = 0
|
src:welded = 0
|
||||||
src:locked = 0
|
src:locked = 0
|
||||||
update_icon()
|
update_icon()
|
||||||
for(var/mob/O in viewers(user, 3))
|
|
||||||
O.show_message(text("\blue The door has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
|
|
||||||
flick("door_spark", src)
|
flick("door_spark", src)
|
||||||
sleep(6)
|
sleep(6)
|
||||||
open()
|
open()
|
||||||
|
|||||||
@@ -57,16 +57,23 @@
|
|||||||
invisibility = 2
|
invisibility = 2
|
||||||
density = 1
|
density = 1
|
||||||
var/lasers = 0
|
var/lasers = 0
|
||||||
var/health = 18
|
var/health = 40
|
||||||
var/obj/machinery/turretcover/cover = null
|
var/obj/machinery/turretcover/cover = null
|
||||||
var/popping = 0
|
var/popping = 0
|
||||||
var/wasvalid = 0
|
var/wasvalid = 0
|
||||||
var/lastfired = 0
|
var/lastfired = 0
|
||||||
var/shot_delay = 30 //3 seconds between shots
|
var/shot_delay = 30 //3 seconds between shots
|
||||||
|
var/datum/effects/system/spark_spread/spark_system
|
||||||
use_power = 1
|
use_power = 1
|
||||||
idle_power_usage = 50
|
idle_power_usage = 50
|
||||||
active_power_usage = 300
|
active_power_usage = 300
|
||||||
|
|
||||||
|
/obj/machinery/turret/New()
|
||||||
|
src.spark_system = new /datum/effects/system/spark_spread
|
||||||
|
spark_system.set_up(5, 0, src)
|
||||||
|
spark_system.attach(src)
|
||||||
|
..()
|
||||||
|
|
||||||
/obj/machinery/turretcover
|
/obj/machinery/turretcover
|
||||||
name = "pop-up turret cover"
|
name = "pop-up turret cover"
|
||||||
icon = 'turrets.dmi'
|
icon = 'turrets.dmi'
|
||||||
@@ -275,14 +282,23 @@
|
|||||||
|
|
||||||
/obj/machinery/turret/bullet_act(flag)
|
/obj/machinery/turret/bullet_act(flag)
|
||||||
if (flag == PROJECTILE_BULLET)
|
if (flag == PROJECTILE_BULLET)
|
||||||
src.health -= 4
|
src.health -= 17
|
||||||
else if (flag == PROJECTILE_TASER) //taser
|
else if (flag == PROJECTILE_TASER) //taser
|
||||||
src.health -= 1
|
src.health -= 1
|
||||||
else if(flag == PROJECTILE_PULSE)
|
else if(flag == PROJECTILE_PULSE)
|
||||||
src.health -= 10
|
src.health -= 30
|
||||||
else
|
else
|
||||||
src.health -= 2
|
src.health -= 2
|
||||||
|
src.spark_system.start()
|
||||||
|
if (src.health <= 0)
|
||||||
|
src.die()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/turret/attackby(obj/item/weapon/W, mob/user)//I can't believe no one added this before/N
|
||||||
|
..()
|
||||||
|
playsound(src.loc, 'smash.ogg', 60, 1)
|
||||||
|
src.spark_system.start()
|
||||||
|
src.health -= W.force * 0.5
|
||||||
if (src.health <= 0)
|
if (src.health <= 0)
|
||||||
src.die()
|
src.die()
|
||||||
return
|
return
|
||||||
@@ -377,7 +393,7 @@
|
|||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[] has slashed at []!</B>", M, src), 1)
|
O.show_message(text("\red <B>[] has slashed at []!</B>", M, src), 1)
|
||||||
src.health -= 4
|
src.health -= 15
|
||||||
if (src.health <= 0)
|
if (src.health <= 0)
|
||||||
src.die()
|
src.die()
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -294,21 +294,148 @@ NINJA MASK
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
//SPESS NINJA STUFF
|
//SPESS NINJA STUFF
|
||||||
/obj/item/clothing/suit/space/space_ninja/verb/toggle()
|
|
||||||
|
/obj/item/clothing/suit/space/space_ninja/New()
|
||||||
|
//Fix for the examine issue mentioned below. Followup: this doesn't fix anything. I'll need to take a look at how examine works.
|
||||||
|
src.verbs += /obj/item/clothing/suit/space/space_ninja/proc/init
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/space/space_ninja/proc/init()
|
||||||
|
set name = "Initialize Suit"
|
||||||
|
set desc = "Initializes the suit for field operation."
|
||||||
|
set category = "Object"
|
||||||
|
|
||||||
|
if(usr.mind&&usr.mind.special_role=="Space Ninja"&&usr:wear_suit==src&&!src.initialize)
|
||||||
|
var/mob/living/carbon/human/U = usr
|
||||||
|
U << "\blue Now initializing..."
|
||||||
|
sleep(40)
|
||||||
|
if(!istype(U.head, /obj/item/clothing/head/helmet/space/space_ninja))
|
||||||
|
U << "\red <B>ERROR</B>: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING..."
|
||||||
|
return
|
||||||
|
if(!istype(U.shoes, /obj/item/clothing/shoes/space_ninja))
|
||||||
|
U << "\red <B>ERROR</B>: 122011 UNABLE TO LOCATE FOOT GEAR\nABORTING..."
|
||||||
|
return
|
||||||
|
if(!istype(U.gloves, /obj/item/clothing/gloves/space_ninja))
|
||||||
|
U << "\red <B>ERROR</B>: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING..."
|
||||||
|
return
|
||||||
|
U << "\blue Securing external locking mechanism...\nNeural-net established."
|
||||||
|
U.head:canremove=0
|
||||||
|
U.shoes:canremove=0
|
||||||
|
U.gloves:canremove=0
|
||||||
|
src.canremove=0
|
||||||
|
sleep(40)
|
||||||
|
U << "\blue Extending neural-net interface...\nNow monitoring brain wave pattern..."
|
||||||
|
sleep(40)
|
||||||
|
if(U.stat==2)
|
||||||
|
U << "\red <B>FATAL ERROR</B>: 344--93#&&21 BRAIN WAV3 PATT$RN <B>RED</B>\nA-A-AB0RTING..."
|
||||||
|
return
|
||||||
|
U << "\blue Linking neural-net interface...\nPattern \green <B>GREEN</B>\blue, continuing operation."
|
||||||
|
sleep(40)
|
||||||
|
U << "\blue VOID-shift device status: <B>ONLINE</B>.\nCLOAK-tech device status: <B>ONLINE</B>."
|
||||||
|
sleep(40)
|
||||||
|
U << "\blue Primary system status: <B>ONLINE</B>.\nBackup system status: <B>ONLINE</B>.\nCurrent energy capacity: <B>[src.charge]<B>."
|
||||||
|
sleep(40)
|
||||||
|
U << "\blue All systems operational. Welcome to SpiderOS, [U.real_name]."
|
||||||
|
U.verbs += /mob/proc/ninjashift
|
||||||
|
U.verbs += /mob/proc/ninjajaunt
|
||||||
|
U.verbs += /mob/proc/ninjasmoke
|
||||||
|
U.verbs += /mob/proc/ninjapulse
|
||||||
|
U.verbs += /mob/proc/ninjablade
|
||||||
|
U.mind.special_verbs += /mob/proc/ninjashift
|
||||||
|
U.mind.special_verbs += /mob/proc/ninjajaunt
|
||||||
|
U.mind.special_verbs += /mob/proc/ninjasmoke
|
||||||
|
U.mind.special_verbs += /mob/proc/ninjapulse
|
||||||
|
U.mind.special_verbs += /mob/proc/ninjablade
|
||||||
|
src.verbs -= /obj/item/clothing/suit/space/space_ninja/proc/init
|
||||||
|
src.verbs += /obj/item/clothing/suit/space/space_ninja/proc/deinit
|
||||||
|
src.verbs += /obj/item/clothing/suit/space/space_ninja/proc/toggle
|
||||||
|
src.initialize=1
|
||||||
|
src.affecting=U
|
||||||
|
src.slowdown=0
|
||||||
|
U.shoes:slowdown--
|
||||||
|
else
|
||||||
|
if(usr.mind&&usr.mind.special_role=="Space Ninja")
|
||||||
|
usr << "\red You do not understand how this suit functions."
|
||||||
|
else if(usr:wear_suit!=src)
|
||||||
|
usr << "\red You must be wearing the suit to use this function."
|
||||||
|
else if(src.initialize)
|
||||||
|
usr << "\red The suit is already functioning."
|
||||||
|
else
|
||||||
|
usr << "\red You cannot use this function at this time."
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/space/space_ninja/proc/deinit()
|
||||||
|
set name = "De-Initialize Suit"
|
||||||
|
set desc = "Begins procedure to remove the suit."
|
||||||
|
set category = "Object"
|
||||||
|
|
||||||
|
if(!src.initialize)
|
||||||
|
usr << "\red The suit is not initialized."
|
||||||
|
return
|
||||||
|
if(alert("Are you certain you wish to remove the suit? This will take time and remove all abilities.",,"Yes","No")=="No")
|
||||||
|
return
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/U = usr
|
||||||
|
|
||||||
|
U << "\blue Now de-initializing..."
|
||||||
|
sleep(40)
|
||||||
|
U.verbs -= /mob/proc/ninjashift
|
||||||
|
U.verbs -= /mob/proc/ninjajaunt
|
||||||
|
U.verbs -= /mob/proc/ninjasmoke
|
||||||
|
U.verbs -= /mob/proc/ninjapulse
|
||||||
|
U.verbs -= /mob/proc/ninjablade
|
||||||
|
U.mind.special_verbs -= /mob/proc/ninjashift
|
||||||
|
U.mind.special_verbs -= /mob/proc/ninjajaunt
|
||||||
|
U.mind.special_verbs -= /mob/proc/ninjasmoke
|
||||||
|
U.mind.special_verbs -= /mob/proc/ninjapulse
|
||||||
|
U.mind.special_verbs -= /mob/proc/ninjablade
|
||||||
|
U << "\blue Logging off, [U:real_name]. Shutting down SpiderOS."
|
||||||
|
sleep(40)
|
||||||
|
U << "\blue Primary system status: <B>OFFLINE</B>.\nBackup system status: <B>OFFLINE</B>."
|
||||||
|
sleep(40)
|
||||||
|
U << "\blue VOID-shift device status: <B>OFFLINE</B>.\nCLOAK-tech device status: <B>OFFLINE</B>."
|
||||||
|
sleep(40)
|
||||||
|
if(U.stat==2||U.health<=0)
|
||||||
|
U << "\red <B>FATAL ERROR</B>: 412--GG##&77 BRAIN WAV3 PATT$RN <B>RED</B>\nI-I-INITIATING S-SELf DeStrCuCCCT%$#@@!!$^#!..."
|
||||||
|
spawn(10)
|
||||||
|
U << "\red #3#"
|
||||||
|
spawn(20)
|
||||||
|
U << "\red #2#"
|
||||||
|
spawn(30)
|
||||||
|
U << "\red #1#: <B>G00DBYE</B>"
|
||||||
|
U.gib()
|
||||||
|
return
|
||||||
|
U << "\blue Disconnecting neural-net interface...\green<B>Success</B>\blue."
|
||||||
|
sleep(40)
|
||||||
|
U << "\blue Disengaging neural-net interface...\green<B>Success</B>\blue."
|
||||||
|
sleep(40)
|
||||||
|
if(istype(U.head, /obj/item/clothing/head/helmet/space/space_ninja))
|
||||||
|
U.head.canremove=1
|
||||||
|
if(istype(U.shoes, /obj/item/clothing/shoes/space_ninja))
|
||||||
|
U.shoes:canremove=1
|
||||||
|
U.shoes:slowdown++
|
||||||
|
if(istype(U.gloves, /obj/item/clothing/gloves/space_ninja))
|
||||||
|
U.gloves:canremove=1
|
||||||
|
src.canremove=1
|
||||||
|
U << "\blue Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: <B>FINISHED</B>."
|
||||||
|
src.verbs += /obj/item/clothing/suit/space/space_ninja/proc/init
|
||||||
|
src.verbs -= /obj/item/clothing/suit/space/space_ninja/proc/deinit
|
||||||
|
src.verbs -= /obj/item/clothing/suit/space/space_ninja/proc/toggle
|
||||||
|
src.initialize=0
|
||||||
|
src.affecting=null
|
||||||
|
src.slowdown=1
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/space/space_ninja/proc/toggle()
|
||||||
set name = "Toggle Stealth"
|
set name = "Toggle Stealth"
|
||||||
set desc = "Toggles the internal CLOAK-tech on or off."
|
set desc = "Toggles the internal CLOAK-tech on or off."
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
|
|
||||||
|
if(usr:wear_suit!=src||!src.initialize)
|
||||||
|
usr << "\red You suit must be worn and active to use this function."
|
||||||
|
return
|
||||||
if(src.active)
|
if(src.active)
|
||||||
spawn(0)
|
spawn(0)
|
||||||
var/atom/movable/overlay/animation = new(usr.loc)
|
anim(usr.loc,'mob.dmi',usr,"uncloak")
|
||||||
animation.icon = 'mob.dmi'
|
|
||||||
animation.icon_state = "blank"
|
|
||||||
animation.layer = usr.layer + 1
|
|
||||||
animation.master = usr
|
|
||||||
flick("uncloak", animation)
|
|
||||||
sleep(15)
|
|
||||||
del(animation)
|
|
||||||
src.active=0
|
src.active=0
|
||||||
usr << "\blue You are now visible."
|
usr << "\blue You are now visible."
|
||||||
for(var/mob/O in oviewers(usr, null))
|
for(var/mob/O in oviewers(usr, null))
|
||||||
@@ -316,14 +443,7 @@ NINJA MASK
|
|||||||
|
|
||||||
else
|
else
|
||||||
spawn(0)
|
spawn(0)
|
||||||
var/atom/movable/overlay/animation = new(usr.loc)
|
anim(usr.loc,'mob.dmi',usr,"cloak")
|
||||||
animation.icon = 'mob.dmi'
|
|
||||||
animation.icon_state = "blank"
|
|
||||||
animation.layer = usr.layer + 1
|
|
||||||
animation.master = usr
|
|
||||||
flick("cloak", animation)
|
|
||||||
sleep(15)
|
|
||||||
del(animation)
|
|
||||||
src.active=1
|
src.active=1
|
||||||
usr << "\blue You are now invisible to normal detection."
|
usr << "\blue You are now invisible to normal detection."
|
||||||
for(var/mob/O in oviewers(usr, null))
|
for(var/mob/O in oviewers(usr, null))
|
||||||
@@ -335,13 +455,18 @@ NINJA MASK
|
|||||||
//Doesn't really make any sense
|
//Doesn't really make any sense
|
||||||
/obj/item/clothing/suit/space/space_ninja/examine()
|
/obj/item/clothing/suit/space/space_ninja/examine()
|
||||||
..()
|
..()
|
||||||
if(src.active)
|
if(src.initialize)
|
||||||
usr << "The CLOAK-tech device is active."
|
usr << "All systems operational. Current energy capacity: <B>[src.charge]<B>."
|
||||||
else
|
if(src.active)
|
||||||
usr << "The CLOAK-tech device is offline."
|
usr << "The CLOAK-tech device is active."
|
||||||
|
else
|
||||||
|
usr << "The CLOAK-tech device is offline."
|
||||||
|
|
||||||
|
/obj/item/clothing/mask/gas/space_ninja/New()
|
||||||
|
src.verbs += /obj/item/clothing/mask/gas/space_ninja/proc/togglev
|
||||||
|
src.verbs += /obj/item/clothing/mask/gas/space_ninja/proc/switchm
|
||||||
|
|
||||||
/obj/item/clothing/mask/gas/space_ninja/verb/togglev()
|
/obj/item/clothing/mask/gas/space_ninja/proc/togglev()
|
||||||
set name = "Toggle Voice"
|
set name = "Toggle Voice"
|
||||||
set desc = "Toggles the voice synthesizer on or off."
|
set desc = "Toggles the voice synthesizer on or off."
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
@@ -385,7 +510,7 @@ NINJA MASK
|
|||||||
usr << "The voice synthesizer is already deactivated."
|
usr << "The voice synthesizer is already deactivated."
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/clothing/mask/gas/space_ninja/verb/switchm()
|
/obj/item/clothing/mask/gas/space_ninja/proc/switchm()
|
||||||
set name = "Switch Mode"
|
set name = "Switch Mode"
|
||||||
set desc = "Switches between Night Vision, Meson, or Thermal vision modes."
|
set desc = "Switches between Night Vision, Meson, or Thermal vision modes."
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
|
|||||||
@@ -53,9 +53,14 @@ STUN BATON
|
|||||||
|
|
||||||
|
|
||||||
// BLADE
|
// BLADE
|
||||||
//Two procs to delete the item if dropped or thrown.
|
|
||||||
//Most of the other special functions are handled in their own files.
|
//Most of the other special functions are handled in their own files.
|
||||||
|
|
||||||
|
/obj/item/weapon/blade/New()
|
||||||
|
src.spark_system = new /datum/effects/system/spark_spread
|
||||||
|
spark_system.set_up(5, 0, src)
|
||||||
|
spark_system.attach(src)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/item/weapon/blade/dropped()
|
/obj/item/weapon/blade/dropped()
|
||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -102,6 +102,11 @@
|
|||||||
overlays += image('storage.dmi', icon_locking)
|
overlays += image('storage.dmi', icon_locking)
|
||||||
locked = 0
|
locked = 0
|
||||||
if(istype(W, /obj/item/weapon/blade))
|
if(istype(W, /obj/item/weapon/blade))
|
||||||
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
||||||
|
spark_system.set_up(5, 0, src.loc)
|
||||||
|
spark_system.start()
|
||||||
|
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
user << "You slice through the lock on [src]."
|
user << "You slice through the lock on [src]."
|
||||||
else
|
else
|
||||||
user << "You short out the lock on [src]."
|
user << "You short out the lock on [src]."
|
||||||
|
|||||||
@@ -172,6 +172,11 @@
|
|||||||
src.locked = 0
|
src.locked = 0
|
||||||
src.icon_state = src.icon_broken
|
src.icon_state = src.icon_broken
|
||||||
if(istype(W, /obj/item/weapon/blade))
|
if(istype(W, /obj/item/weapon/blade))
|
||||||
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
||||||
|
spark_system.set_up(5, 0, src.loc)
|
||||||
|
spark_system.start()
|
||||||
|
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
for(var/mob/O in viewers(user, 3))
|
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)
|
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
|
else
|
||||||
|
|||||||
@@ -252,7 +252,7 @@
|
|||||||
overlays += emag
|
overlays += emag
|
||||||
overlays += sparks
|
overlays += sparks
|
||||||
spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface*
|
spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface*
|
||||||
playsound(src.loc, 'sparks4.ogg', 75, 1)
|
playsound(src.loc, "sparks", 60, 1)
|
||||||
src.locked = 0
|
src.locked = 0
|
||||||
src.broken = 1
|
src.broken = 1
|
||||||
user << "\blue You unlock the [src]."
|
user << "\blue You unlock the [src]."
|
||||||
|
|||||||
@@ -126,6 +126,11 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if(istype(W, /obj/item/weapon/blade))
|
if(istype(W, /obj/item/weapon/blade))
|
||||||
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
||||||
|
spark_system.set_up(5, 0, src.loc)
|
||||||
|
spark_system.start()
|
||||||
|
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
for(var/mob/O in viewers(user, 4))
|
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)
|
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 )
|
new /obj/item/weapon/table_parts( src.loc )
|
||||||
@@ -189,6 +194,11 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if(istype(W, /obj/item/weapon/blade))
|
if(istype(W, /obj/item/weapon/blade))
|
||||||
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
||||||
|
spark_system.set_up(5, 0, src.loc)
|
||||||
|
spark_system.start()
|
||||||
|
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
for(var/mob/O in viewers(user, 4))
|
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)
|
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 )
|
new /obj/item/weapon/table_parts/reinforced( src.loc )
|
||||||
|
|||||||
@@ -361,9 +361,18 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
else if(istype(W, /obj/item/weapon/blade))
|
else if(istype(W, /obj/item/weapon/blade))
|
||||||
dismantle_wall(1)
|
var/turf/T = user.loc
|
||||||
for(var/mob/O in viewers(user, 5))
|
user << "\blue Now slicing through wall."
|
||||||
O.show_message(text("\blue The wall was sliced through by []!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
|
W:spark_system.start()
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
|
sleep(70)
|
||||||
|
if ((user.loc == T && user.equipped() == W))
|
||||||
|
W:spark_system.start()
|
||||||
|
playsound(src.loc, 'blade1.ogg', 50, 1)
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
|
dismantle_wall(1)
|
||||||
|
for(var/mob/O in viewers(user, 5))
|
||||||
|
O.show_message(text("\blue The wall was sliced apart by []!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
|
||||||
return
|
return
|
||||||
|
|
||||||
else if(istype(W,/obj/item/apc_frame))
|
else if(istype(W,/obj/item/apc_frame))
|
||||||
@@ -424,14 +433,8 @@
|
|||||||
user << "\blue You removed the support rods."
|
user << "\blue You removed the support rods."
|
||||||
W:welding = 1
|
W:welding = 1
|
||||||
|
|
||||||
if(istype(W, /obj/item/weapon/blade))
|
else if(istype(W, /obj/item/weapon/blade))
|
||||||
var/turf/T = user.loc
|
user << "\blue This wall is too thick to slice through. You will need to find a different path."
|
||||||
user << "\blue Slicing through reinforced wall."
|
|
||||||
sleep(100)
|
|
||||||
if ((user.loc == T && user.equipped() == W))
|
|
||||||
dismantle_wall(1)
|
|
||||||
for(var/mob/O in viewers(user, 5))
|
|
||||||
O.show_message(text("\blue The reinforced wall was sliced through by []!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
else if (istype(W, /obj/item/weapon/wrench))
|
else if (istype(W, /obj/item/weapon/wrench))
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ Useful for copy pasta since I'm lazy.*/
|
|||||||
|
|
||||||
set category = "Fun"
|
set category = "Fun"
|
||||||
set name = "Spawn Space Ninja"
|
set name = "Spawn Space Ninja"
|
||||||
set desc = "Spawns a space ninja for when you just need a teenager with attitude."
|
set desc = "Spawns a space ninja for when you need a teenager with attitude."
|
||||||
if(!src.authenticated || !src.holder)
|
if(!src.authenticated || !src.holder)
|
||||||
src << "Only administrators may use this command."
|
src << "Only administrators may use this command."
|
||||||
return
|
return
|
||||||
@@ -249,24 +249,12 @@ Useful for copy pasta since I'm lazy.*/
|
|||||||
new_ninja.internal = OXYTANK //So the poor ninja has something to breath when they spawn in spess.
|
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.internals.icon_state = "internal1"
|
||||||
|
|
||||||
new_ninja << "\blue \nYou are an elite mercenary assassin of the Spider Clan. The dreaded \red <B>SPACE NINJA</B>!\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 <B>[input]</B>"
|
new_ninja << "\blue \nYou are an elite mercenary assassin of the Spider Clan, [new_ninja.real_name]. The dreaded \red <B>SPACE NINJA</B>!\blue You have a variety of abilities at your disposal, thanks to your nano-enhanced cyber armor. Remember your training (initialize your suit by right clicking on it)! \nYour current mission is: \red <B>[input]</B>"
|
||||||
|
|
||||||
new_ninja.verbs += /mob/proc/ninjashift
|
|
||||||
new_ninja.verbs += /mob/proc/ninjajaunt
|
|
||||||
new_ninja.verbs += /mob/proc/ninjasmoke
|
|
||||||
new_ninja.verbs += /mob/proc/ninjapulse
|
|
||||||
new_ninja.verbs += /mob/proc/ninjablade
|
|
||||||
new_ninja.mind.special_verbs += /mob/proc/ninjashift
|
|
||||||
new_ninja.mind.special_verbs += /mob/proc/ninjajaunt
|
|
||||||
new_ninja.mind.special_verbs += /mob/proc/ninjasmoke
|
|
||||||
new_ninja.mind.special_verbs += /mob/proc/ninjapulse
|
|
||||||
new_ninja.mind.special_verbs += /mob/proc/ninjablade
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -306,6 +294,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()
|
||||||
|
playsound(src.loc, 'bamf.ogg', 50, 2)
|
||||||
//subtract cost(5)
|
//subtract cost(5)
|
||||||
|
|
||||||
|
|
||||||
@@ -369,11 +358,17 @@ Useful for copy pasta since I'm lazy.*/
|
|||||||
return
|
return
|
||||||
picked = pick(turfs)
|
picked = pick(turfs)
|
||||||
spawn(0)
|
spawn(0)
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
anim(mobloc,'mob.dmi',src,"phaseout")
|
anim(mobloc,'mob.dmi',src,"phaseout")
|
||||||
|
|
||||||
src.loc = picked
|
src.loc = picked
|
||||||
|
|
||||||
spawn(0)
|
spawn(0)
|
||||||
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
||||||
|
spark_system.set_up(5, 0, src.loc)
|
||||||
|
spark_system.start()
|
||||||
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
anim(src.loc,'mob.dmi',src,"phasein")
|
anim(src.loc,'mob.dmi',src,"phasein")
|
||||||
|
|
||||||
spawn(0) //Any living mobs in teleport area are gibbed.
|
spawn(0) //Any living mobs in teleport area are gibbed.
|
||||||
@@ -387,7 +382,7 @@ Useful for copy pasta since I'm lazy.*/
|
|||||||
/mob/proc/ninjashift(var/turf/T in oview())
|
/mob/proc/ninjashift(var/turf/T in oview())
|
||||||
set name = "Phase Shift"
|
set name = "Phase Shift"
|
||||||
set desc = "Utilizes the internal VOID-shift device to rapidly transit to a destination in view."
|
set desc = "Utilizes the internal VOID-shift device to rapidly transit to a destination in view."
|
||||||
set category = null//So it does not show up on the panel can still be right-clicked.
|
set category = null//So it does not show up on the panel but can still be right-clicked.
|
||||||
|
|
||||||
if(src.stat)
|
if(src.stat)
|
||||||
src << "\red You must be conscious to do this."
|
src << "\red You must be conscious to do this."
|
||||||
@@ -401,11 +396,17 @@ Useful for copy pasta since I'm lazy.*/
|
|||||||
var/turf/mobloc = get_turf(src.loc)
|
var/turf/mobloc = get_turf(src.loc)
|
||||||
|
|
||||||
spawn(0)
|
spawn(0)
|
||||||
|
playsound(src.loc, 'sparks4.ogg', 50, 1)
|
||||||
anim(mobloc,'mob.dmi',src,"phaseout")
|
anim(mobloc,'mob.dmi',src,"phaseout")
|
||||||
|
|
||||||
src.loc = T
|
src.loc = T
|
||||||
|
|
||||||
spawn(0)
|
spawn(0)
|
||||||
|
var/datum/effects/system/spark_spread/spark_system = new /datum/effects/system/spark_spread()
|
||||||
|
spark_system.set_up(5, 0, src.loc)
|
||||||
|
spark_system.start()
|
||||||
|
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||||
|
playsound(src.loc, 'sparks2.ogg', 50, 1)
|
||||||
anim(src.loc,'mob.dmi',src,"phasein")
|
anim(src.loc,'mob.dmi',src,"phasein")
|
||||||
|
|
||||||
spawn(0) //Any living mobs in teleport area are gibbed.
|
spawn(0) //Any living mobs in teleport area are gibbed.
|
||||||
@@ -447,6 +448,8 @@ Useful for copy pasta since I'm lazy.*/
|
|||||||
|
|
||||||
if(!src.get_active_hand()&&!istype(src.get_inactive_hand(), /obj/item/weapon/blade))
|
if(!src.get_active_hand()&&!istype(src.get_inactive_hand(), /obj/item/weapon/blade))
|
||||||
var/obj/item/weapon/blade/W = new()
|
var/obj/item/weapon/blade/W = new()
|
||||||
|
W.spark_system.start()
|
||||||
|
playsound(src.loc, "sparks", 50, 1)
|
||||||
src.put_in_hand(W)
|
src.put_in_hand(W)
|
||||||
/*
|
/*
|
||||||
/mob/proc/ninjastar(var/mob/living/M in oview())
|
/mob/proc/ninjastar(var/mob/living/M in oview())
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
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
|
//For ninjas exploding when they die./N
|
||||||
if (src.mind&&src.mind.special_role == "Space Ninja")
|
if (istype(src.wear_suit, /obj/item/clothing/suit/space/space_ninja)&&src.wear_suit:initialize)
|
||||||
var/location = src.loc
|
var/location = src.loc
|
||||||
explosion(location, 1, 2, 3, 4)
|
explosion(location, 1, 2, 3, 4)
|
||||||
|
|
||||||
|
|||||||
BIN
sound/weapons/blade1.ogg
Normal file
BIN
sound/weapons/blade1.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user