Bleeding edgy refresh (#303)

* not code stuff

* other things

* global vars, defines, helpers

* onclick hud stuff, orphans, world.dm

* controllers and datums

* game folder

* everything not client/mobs in modules

* client folder

* stage 1 mob stuff

* simple animal things

* silicons

* carbon things

* ayylmaos and monkeys

* hyoomahn

* icons n shit

* sprite fixes

* compile fixes

* some fixes I cherrypicked.

* qdel fixes

* forgot brain refractors
This commit is contained in:
Poojawa
2017-03-21 11:44:10 -05:00
committed by GitHub
parent 099a6c8764
commit f67e9f6d87
1476 changed files with 344416 additions and 40694 deletions
+1 -1
View File
@@ -41,7 +41,7 @@ Contents:
set popup_menu = 0
if(!holder)
src << "Only administrators may use this command."
to_chat(src, "Only administrators may use this command.")
return
if(!ticker.mode)
alert("The game hasn't started yet!")
+1 -1
View File
@@ -60,7 +60,7 @@
msg = "Your Energy Katana lands at your feet!"
if(msg)
user << "<span class='notice'>[msg]</span>"
to_chat(user, "<span class='notice'>[msg]</span>")
/obj/item/weapon/katana/energy/New()
..()
+4 -4
View File
@@ -63,9 +63,9 @@
if(isnum(drained)) //Numerical values of drained handle their feedback here, Alpha values handle it themselves (Research hacking)
if(drained)
H << "<span class='notice'>Gained <B>[drained]</B> energy from \the [A].</span>"
to_chat(H, "<span class='notice'>Gained <B>[drained]</B> energy from \the [A].</span>")
else
H << "<span class='danger'>\The [A] has run dry of power, you must find another source!</span>"
to_chat(H, "<span class='danger'>\The [A] has run dry of power, you must find another source!</span>")
else
drained = 0 //as to not cancel attack_hand()
@@ -78,11 +78,11 @@
set category = "Ninja Equip"
var/mob/living/carbon/human/U = loc
U << "You <b>[candrain?"disable":"enable"]</b> special interaction."
to_chat(U, "You <b>[candrain?"disable":"enable"]</b> special interaction.")
candrain=!candrain
/obj/item/clothing/gloves/space_ninja/examine(mob/user)
..()
if(flags & NODROP)
user << "The energy drain mechanism is: <B>[candrain?"active":"inactive"]</B>."
to_chat(user, "The energy drain mechanism is: <B>[candrain?"active":"inactive"]</B>.")
@@ -35,7 +35,7 @@ It is possible to destroy the net by the occupant or someone else.
for(var/mob/O in viewers(src, 3))
O.show_message("[M.name] was recovered from the energy net!", 1, "<span class='italics'>You hear a grunt.</span>", 2)
if(master)//As long as they still exist.
master << "<span class='userdanger'>ERROR</span>: unable to initiate transport protocol. Procedure terminated."
to_chat(master, "<span class='userdanger'>ERROR</span>: unable to initiate transport protocol. Procedure terminated.")
return ..()
/obj/structure/energy_net/process(mob/living/carbon/M)
@@ -51,7 +51,7 @@ It is possible to destroy the net by the occupant or someone else.
if(isnull(M)||M.loc!=loc)//If mob is gone or not at the location.
if(!isnull(master))//As long as they still exist.
master << "<span class='userdanger'>ERROR</span>: unable to locate \the [mob_name]. Procedure terminated."
to_chat(master, "<span class='userdanger'>ERROR</span>: unable to locate \the [mob_name]. Procedure terminated.")
qdel(src)//Get rid of the net.
M.notransform = 0
return
@@ -76,10 +76,10 @@ It is possible to destroy the net by the occupant or someone else.
visible_message("[M] suddenly vanishes!")
M.forceMove(pick(holdingfacility)) //Throw mob in to the holding facility.
M << "<span class='danger'>You appear in a strange place!</span>"
to_chat(M, "<span class='danger'>You appear in a strange place!</span>")
if(!isnull(master))//As long as they still exist.
master << "<span class='notice'><b>SUCCESS</b>: transport procedure of \the [affecting] complete.</span>"
to_chat(master, "<span class='notice'><b>SUCCESS</b>: transport procedure of \the [affecting] complete.</span>")
M.notransform = 0
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, M.loc)
@@ -90,7 +90,7 @@ It is possible to destroy the net by the occupant or someone else.
qdel(src)
else//And they are free.
M << "<span class='notice'>You are free of the net!</span>"
to_chat(M, "<span class='notice'>You are free of the net!</span>")
M.notransform = 0
return
@@ -21,8 +21,8 @@
var/fraction = min(a_transfer/reagents.total_volume, 1)
reagents.reaction(H, INJECT, fraction)
reagents.trans_id_to(H, "radium", a_transfer)
H << "<span class='danger'>You are beginning to feel the after-effect of the injection.</span>"
to_chat(H, "<span class='danger'>You are beginning to feel the after-effect of the injection.</span>")
a_boost--
H << "<span class='notice'>There are <B>[a_boost]</B> adrenaline boosts remaining.</span>"
to_chat(H, "<span class='notice'>There are <B>[a_boost]</B> adrenaline boosts remaining.</span>")
s_coold = 3
return
@@ -4,12 +4,12 @@
/obj/item/clothing/suit/space/space_ninja/proc/ninjacost(cost = 0, specificCheck = 0)
var/mob/living/carbon/human/H = affecting
if((H.stat || H.incorporeal_move) && (specificCheck != N_ADRENALINE))//Will not return if user is using an adrenaline booster since you can use them when stat==1.
H << "<span class='danger'>You must be conscious and solid to do this.</span>"//It's not a problem of stat==2 since the ninja will explode anyway if they die.
to_chat(H, "<span class='danger'>You must be conscious and solid to do this.</span>")
return 1
var/actualCost = cost*10
if(cost && cell.charge < actualCost)
H << "<span class='danger'>Not enough energy.</span>"
to_chat(H, "<span class='danger'>Not enough energy.</span>")
return 1
else
//This shit used to be handled individually on every proc.. why even bother with a universal check proc then?
@@ -20,10 +20,10 @@
cancel_stealth()//Get rid of it.
if(N_SMOKE_BOMB)
if(!s_bombs)
H << "<span class='danger'>There are no more smoke bombs remaining.</span>"
to_chat(H, "<span class='danger'>There are no more smoke bombs remaining.</span>")
return 1
if(N_ADRENALINE)
if(!a_boost)
H << "<span class='danger'>You do not have any more adrenaline boosters.</span>"
to_chat(H, "<span class='danger'>You do not have any more adrenaline boosters.</span>")
return 1
return (s_coold)//Returns the value of the variable which counts down to zero.
@@ -12,7 +12,7 @@
if(!locate(/obj/structure/energy_net) in C.loc)//Check if they are already being affected by an energy net.
for(var/turf/T in getline(H.loc, C.loc))
if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy.
H << "<span class='warning'>You may not use an energy net through solid obstacles!</span>"
to_chat(H, "<span class='warning'>You may not use an energy net through solid obstacles!</span>")
return
spawn(0)
H.Beam(C,"n_beam",time=15)
@@ -24,7 +24,7 @@
spawn(0)//Parallel processing.
E.process(C)
else
H << "<span class='warning'>[C.p_they(TRUE)] are already trapped inside an energy net!</span>"
to_chat(H, "<span class='warning'>[C.p_they(TRUE)] are already trapped inside an energy net!</span>")
else
H << "<span class='warning'>[C.p_they(TRUE)] will bring no honor to your Clan!</span>"
to_chat(H, "<span class='warning'>[C.p_they(TRUE)] will bring no honor to your Clan!</span>")
return
@@ -14,6 +14,6 @@
smoke.start()
playsound(H.loc, 'sound/effects/bamf.ogg', 50, 2)
s_bombs--
H << "<span class='notice'>There are <B>[s_bombs]</B> smoke bombs remaining.</span>"
to_chat(H, "<span class='notice'>There are <B>[s_bombs]</B> smoke bombs remaining.</span>")
s_coold = 1
return
@@ -11,7 +11,7 @@
var/mob/living/carbon/human/H = affecting
var/obj/item/weapon/throwing_star/ninja/N = new(H)
if(H.put_in_hands(N))
H << "<span class='notice'>A throwing star has been created in your hand!</span>"
to_chat(H, "<span class='notice'>A throwing star has been created in your hand!</span>")
else
qdel(N)
H.throw_mode_on() //So they can quickly throw it.
@@ -15,7 +15,7 @@ Contents:
cancel_stealth()
else
if(cell.charge <= 0)
U << "<span class='warning'>You don't have enough power to enable Stealth!</span>"
to_chat(U, "<span class='warning'>You don't have enough power to enable Stealth!</span>")
return
s_active=!s_active
animate(U, alpha = 50,time = 15)
@@ -45,5 +45,5 @@ Contents:
if(!s_busy)
toggle_stealth()
else
affecting << "<span class='danger'>Stealth does not appear to work!</span>"
to_chat(affecting, "<span class='danger'>Stealth does not appear to work!</span>")
@@ -11,7 +11,7 @@
var/inview = 1
if(!energyKatana)
H << "<span class='warning'>Could not locate Energy Katana!</span>"
to_chat(H, "<span class='warning'>Could not locate Energy Katana!</span>")
return
if(energyKatana in H)
@@ -46,7 +46,7 @@ Contents:
destination.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
s_coold = 1
else
H << "<span class='danger'>The VOID-shift device is malfunctioning, <B>teleportation failed</B>.</span>"
to_chat(H, "<span class='danger'>The VOID-shift device is malfunctioning, <B>teleportation failed</B>.</span>")
return
@@ -75,7 +75,7 @@ Contents:
T.phase_damage_creatures(20,H)//Paralyse and damage mobs and mechas on the turf
s_coold = 1
else
H << "<span class='danger'>You cannot teleport into solid walls or from solid matter</span>"
to_chat(H, "<span class='danger'>You cannot teleport into solid walls or from solid matter</span>")
return
+11 -11
View File
@@ -121,27 +121,27 @@ They *could* go in their appropriate files, but this is supposed to be modular
. = DRAIN_RD_HACK_FAILED
H << "<span class='notice'>Hacking \the [src]...</span>"
to_chat(H, "<span class='notice'>Hacking \the [src]...</span>")
spawn(0)
var/turf/location = get_turf(H)
for(var/mob/living/silicon/ai/AI in player_list)
AI << "<span class='userdanger'>Network Alert: Hacking attempt detected[location?" in [location]":". Unable to pinpoint location"]</span>."
to_chat(AI, "<span class='userdanger'>Network Alert: Hacking attempt detected[location?" in [location]":". Unable to pinpoint location"]</span>.")
if(files && files.known_tech.len)
for(var/datum/tech/current_data in S.stored_research)
H << "<span class='notice'>Checking \the [current_data.name] database.</span>"
to_chat(H, "<span class='notice'>Checking \the [current_data.name] database.</span>")
if(do_after(H, S.s_delay, target = src) && G.candrain && src)
for(var/datum/tech/analyzing_data in files.known_tech)
if(current_data.id == analyzing_data.id)
if(analyzing_data.level > current_data.level)
H << "<span class='notice'>Database:</span> <b>UPDATED</b>."
to_chat(H, "<span class='notice'>Database:</span> <b>UPDATED</b>.")
current_data.level = analyzing_data.level
. = DRAIN_RD_HACKED
break//Move on to next.
else
break//Otherwise, quit processing.
H << "<span class='notice'>Data analyzed. Process finished.</span>"
to_chat(H, "<span class='notice'>Data analyzed. Process finished.</span>")
//RD SERVER//
@@ -152,27 +152,27 @@ They *could* go in their appropriate files, but this is supposed to be modular
. = DRAIN_RD_HACK_FAILED
H << "<span class='notice'>Hacking \the [src]...</span>"
to_chat(H, "<span class='notice'>Hacking \the [src]...</span>")
spawn(0)
var/turf/location = get_turf(H)
for(var/mob/living/silicon/ai/AI in player_list)
AI << "<span class='userdanger'>Network Alert: Hacking attempt detected[location?" in [location]":". Unable to pinpoint location"]</span>."
to_chat(AI, "<span class='userdanger'>Network Alert: Hacking attempt detected[location?" in [location]":". Unable to pinpoint location"]</span>.")
if(files && files.known_tech.len)
for(var/datum/tech/current_data in S.stored_research)
H << "<span class='notice'>Checking \the [current_data.name] database.</span>"
to_chat(H, "<span class='notice'>Checking \the [current_data.name] database.</span>")
if(do_after(H, S.s_delay, target = src) && G.candrain && src)
for(var/datum/tech/analyzing_data in files.known_tech)
if(current_data.id == analyzing_data.id)
if(analyzing_data.level > current_data.level)
H << "<span class='notice'>Database:</span> <b>UPDATED</b>."
to_chat(H, "<span class='notice'>Database:</span> <b>UPDATED</b>.")
current_data.level = analyzing_data.level
. = DRAIN_RD_HACKED
break//Move on to next.
else
break//Otherwise, quit processing.
H << "<span class='notice'>Data analyzed. Process finished.</span>"
to_chat(H, "<span class='notice'>Data analyzed. Process finished.</span>")
//WIRE//
@@ -247,7 +247,7 @@ They *could* go in their appropriate files, but this is supposed to be modular
var/drain = 0 //Drain amount
. = 0
src << "<span class='danger'>Warning: Unauthorized access through sub-route 12, block C, detected.</span>"
to_chat(src, "<span class='danger'>Warning: Unauthorized access through sub-route 12, block C, detected.</span>")
if(cell && cell.charge)
while(G.candrain && cell.charge > 0 && !maxcapacity)
+8 -8
View File
@@ -118,17 +118,17 @@ Contents:
H.gloves.item_state = "s-ninjan"
else
if(H.mind.special_role!="Space Ninja")
H << "\red <B>fÄTaL ÈÈRRoR</B>: 382200-*#00CÖDE <B>RED</B>\nUNAU†HORIZED USÈ DETÈC†††eD\nCoMMÈNCING SUB-R0U†IN3 13...\nTÈRMInATING U-U-USÈR..."
to_chat(H, "\red <B>fÄTaL ÈÈRRoR</B>: 382200-*#00CÖDE <B>RED</B>\nUNAU†HORIZED USÈ DETÈC†††eD\nCoMMÈNCING SUB-R0U†IN3 13...\nTÈRMInATING U-U-USÈR...")
H.gib()
return 0
if(!istype(H.head, /obj/item/clothing/head/helmet/space/space_ninja))
H << "<span class='userdanger'>ERROR</span>: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING..."
to_chat(H, "<span class='userdanger'>ERROR</span>: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING...")
return 0
if(!istype(H.shoes, /obj/item/clothing/shoes/space_ninja))
H << "<span class='userdanger'>ERROR</span>: 122011 UNABLE TO LOCATE FOOT GEAR\nABORTING..."
to_chat(H, "<span class='userdanger'>ERROR</span>: 122011 UNABLE TO LOCATE FOOT GEAR\nABORTING...")
return 0
if(!istype(H.gloves, /obj/item/clothing/gloves/space_ninja))
H << "<span class='userdanger'>ERROR</span>: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING..."
to_chat(H, "<span class='userdanger'>ERROR</span>: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING...")
return 0
affecting = H
@@ -168,7 +168,7 @@ Contents:
..()
if(s_initialized)
if(user == affecting)
user << "All systems operational. Current energy capacity: <B>[cell.charge]</B>."
user << "The CLOAK-tech device is <B>[s_active?"active":"inactive"]</B>."
user << "There are <B>[s_bombs]</B> smoke bomb\s remaining."
user << "There are <B>[a_boost]</B> adrenaline booster\s remaining."
to_chat(user, "All systems operational. Current energy capacity: <B>[cell.charge]</B>.")
to_chat(user, "The CLOAK-tech device is <B>[s_active?"active":"inactive"]</B>.")
to_chat(user, "There are <B>[s_bombs]</B> smoke bomb\s remaining.")
to_chat(user, "There are <B>[a_boost]</B> adrenaline booster\s remaining.")
+9 -9
View File
@@ -13,16 +13,16 @@
R.volume -= amount_to_transfer//Remove from reagent volume. Don't want to delete the reagent now since we need to perserve the name.
reagents.add_reagent(reagent_id, amount_to_transfer)//Add to suit. Reactions are not important.
total_reagent_transfer += amount_to_transfer//Add to total reagent trans.
U << "Added [amount_to_transfer] units of [R.name]."//Reports on the specific reagent added.
to_chat(U, "Added [amount_to_transfer] units of [R.name].")
I.reagents.update_total()//Now we manually update the total to make sure everything is properly shoved under the rug.
U << "Replenished a total of [total_reagent_transfer ? total_reagent_transfer : "zero"] chemical units."//Let the player know how much total volume was added.
to_chat(U, "Replenished a total of [total_reagent_transfer ? total_reagent_transfer : "zero"] chemical units.")
return
else if(istype(I, /obj/item/weapon/stock_parts/cell))
var/obj/item/weapon/stock_parts/cell/CELL = I
if(CELL.maxcharge > cell.maxcharge && n_gloves && n_gloves.candrain)
U << "<span class='notice'>Higher maximum capacity detected.\nUpgrading...</span>"
to_chat(U, "<span class='notice'>Higher maximum capacity detected.\nUpgrading...</span>")
if (n_gloves && n_gloves.candrain && do_after(U,s_delay, target = src))
U.drop_item()
CELL.loc = src
@@ -34,9 +34,9 @@
old_cell.corrupt()
old_cell.updateicon()
cell = CELL
U << "<span class='notice'>Upgrade complete. Maximum capacity: <b>[round(cell.maxcharge/100)]</b>%</span>"
to_chat(U, "<span class='notice'>Upgrade complete. Maximum capacity: <b>[round(cell.maxcharge/100)]</b>%</span>")
else
U << "<span class='danger'>Procedure interrupted. Protocol terminated.</span>"
to_chat(U, "<span class='danger'>Procedure interrupted. Protocol terminated.</span>")
return
else if(istype(I, /obj/item/weapon/disk/tech_disk))//If it's a data disk, we want to copy the research on to the suit.
@@ -47,7 +47,7 @@
has_research = 1
break
if(has_research)//If it has something on it.
U << "Research information detected, processing..."
to_chat(U, "Research information detected, processing...")
if(do_after(U,s_delay, target = src))
for(var/V1 in 1 to TD.max_tech_stored)
var/datum/tech/new_data = TD.tech_stored[V1]
@@ -59,12 +59,12 @@
if(current_data.id == new_data.id)
current_data.level = max(current_data.level, new_data.level)
break
U << "<span class='notice'>Data analyzed and updated. Disk erased.</span>"
to_chat(U, "<span class='notice'>Data analyzed and updated. Disk erased.</span>")
else
U << "<span class='userdanger'>ERROR</span>: Procedure interrupted. Process terminated."
to_chat(U, "<span class='userdanger'>ERROR</span>: Procedure interrupted. Process terminated.")
else
I.loc = src
t_disk = I
U << "<span class='notice'>You slot \the [I] into \the [src].</span>"
to_chat(U, "<span class='notice'>You slot \the [I] into \the [src].</span>")
return
..()
+21 -21
View File
@@ -17,7 +17,7 @@
if(!s_busy)
deinitialize()
else
affecting << "<span class='danger'>The function did not trigger!</span>"
to_chat(affecting, "<span class='danger'>The function did not trigger!</span>")
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize(delay = s_delay, mob/living/carbon/human/U = loc)
@@ -26,27 +26,27 @@
for(var/i,i<7,i++)
switch(i)
if(0)
U << "<span class='notice'>Now initializing...</span>"
to_chat(U, "<span class='notice'>Now initializing...</span>")
if(1)
if(!lock_suit(U))//To lock the suit onto wearer.
break
U << "<span class='notice'>Securing external locking mechanism...\nNeural-net established.</span>"
to_chat(U, "<span class='notice'>Securing external locking mechanism...\nNeural-net established.</span>")
if(2)
U << "<span class='notice'>Extending neural-net interface...\nNow monitoring brain wave pattern...</span>"
to_chat(U, "<span class='notice'>Extending neural-net interface...\nNow monitoring brain wave pattern...</span>")
if(3)
if(U.stat==2||U.health<=0)
U << "<span class='danger'><B>FĆAL �Rr�R</B>: 344--93#�&&21 BR��N |/|/aV� PATT$RN <B>RED</B>\nA-A-aB�rT�NG...</span>"
to_chat(U, "<span class='danger'><B>FĆAL �Rr�R</B>: 344--93#�&&21 BR��N |/|/aV� PATT$RN <B>RED</B>\nA-A-aB�rT�NG...</span>")
unlock_suit()
break
lock_suit(U,1)//Check for icons.
U.regenerate_icons()
U << "<span class='notice'>Linking neural-net interface...\nPattern</span>\green <B>GREEN</B><span class='notice'>, continuing operation.</span>"
to_chat(U, "<span class='notice'>Linking neural-net interface...\nPattern</span>\green <B>GREEN</B><span class='notice'>, continuing operation.</span>")
if(4)
U << "<span class='notice'>VOID-shift device status: <B>ONLINE</B>.\nCLOAK-tech device status: <B>ONLINE</B>.</span>"
to_chat(U, "<span class='notice'>VOID-shift device status: <B>ONLINE</B>.\nCLOAK-tech device status: <B>ONLINE</B>.</span>")
if(5)
U << "<span class='notice'>Primary system status: <B>ONLINE</B>.\nBackup system status: <B>ONLINE</B>.\nCurrent energy capacity: <B>[cell.charge]</B>.</span>"
to_chat(U, "<span class='notice'>Primary system status: <B>ONLINE</B>.\nBackup system status: <B>ONLINE</B>.\nCurrent energy capacity: <B>[cell.charge]</B>.</span>")
if(6)
U << "<span class='notice'>All systems operational. Welcome to <B>SpiderOS</B>, [U.real_name].</span>"
to_chat(U, "<span class='notice'>All systems operational. Welcome to <B>SpiderOS</B>, [U.real_name].</span>")
grant_ninja_verbs()
grant_equip_verbs()
ntick()
@@ -54,11 +54,11 @@
s_busy = 0
else
if(!U.mind||U.mind.assigned_role!=U.mind.special_role)//Your run of the mill persons shouldn't know what it is. Or how to turn it on.
U << "You do not understand how this suit functions. Where the heck did it even come from?"
to_chat(U, "You do not understand how this suit functions. Where the heck did it even come from?")
else if(s_initialized)
U << "<span class='danger'>The suit is already functioning.</span> Please report this bug."
to_chat(U, "<span class='danger'>The suit is already functioning.</span> Please report this bug.")
else
U << "<span class='userdanger'>ERROR</span>: You cannot use this function at this time."
to_chat(U, "<span class='userdanger'>ERROR</span>: You cannot use this function at this time.")
return
@@ -67,33 +67,33 @@
if(affecting==loc&&!s_busy)
var/mob/living/carbon/human/U = affecting
if(!s_initialized)
U << "<span class='danger'>The suit is not initialized.</span> Please report this bug."
to_chat(U, "<span class='danger'>The suit is not initialized.</span> Please report this bug.")
return
if(alert("Are you certain you wish to remove the suit? This will take time and remove all abilities.",,"Yes","No")=="No")
return
if(s_busy)
U << "<span class='userdanger'>ERROR</span>: You cannot use this function at this time."
to_chat(U, "<span class='userdanger'>ERROR</span>: You cannot use this function at this time.")
return
s_busy = 1
for(var/i = 0,i<7,i++)
switch(i)
if(0)
U << "<span class='notice'>Now de-initializing...</span>"
to_chat(U, "<span class='notice'>Now de-initializing...</span>")
spideros = 0//Spideros resets.
if(1)
U << "<span class='notice'>Logging off, [U:real_name]. Shutting down <B>SpiderOS</B>.</span>"
to_chat(U, "<span class='notice'>Logging off, [U:real_name]. Shutting down <B>SpiderOS</B>.</span>")
remove_ninja_verbs()
if(2)
U << "<span class='notice'>Primary system status: <B>OFFLINE</B>.\nBackup system status: <B>OFFLINE</B>.</span>"
to_chat(U, "<span class='notice'>Primary system status: <B>OFFLINE</B>.\nBackup system status: <B>OFFLINE</B>.</span>")
if(3)
U << "<span class='notice'>VOID-shift device status: <B>OFFLINE</B>.\nCLOAK-tech device status: <B>OFFLINE</B>.</span>"
to_chat(U, "<span class='notice'>VOID-shift device status: <B>OFFLINE</B>.\nCLOAK-tech device status: <B>OFFLINE</B>.</span>")
cancel_stealth()//Shutdowns stealth.
if(4)
U << "<span class='notice'>Disconnecting neural-net interface...</span>\green<B>Success</B><span class='notice'>.</span>"
to_chat(U, "<span class='notice'>Disconnecting neural-net interface...</span>\green<B>Success</B><span class='notice'>.</span>")
if(5)
U << "<span class='notice'>Disengaging neural-net interface...</span>\green<B>Success</B><span class='notice'>.</span>"
to_chat(U, "<span class='notice'>Disengaging neural-net interface...</span>\green<B>Success</B><span class='notice'>.</span>")
if(6)
U << "<span class='notice'>Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: <B>FINISHED</B>.</span>"
to_chat(U, "<span class='notice'>Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: <B>FINISHED</B>.</span>")
remove_equip_verbs()
unlock_suit()
U.regenerate_icons()