diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 0621390977..f7dd6658c0 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -812,12 +812,29 @@
set_module = /obj/item/robot_module/saboteur
/mob/living/silicon/robot/modules/syndicate/spider// used for space ninja and their cyborg hacking special objective
+ bubble_icon = "spider"
+ playstyle_string = "You are a Spider Clan assault cyborg!
\
+ You are armed with powerful offensive tools to aid you in your mission: obey your ninja masters by any means necessary. \
+ Your cyborg LMG will slowly produce ammunition from your power supply, and your pinpointer will find and locate fellow members of the Spider Clan."
set_module = /obj/item/robot_module/syndicate/spider
/mob/living/silicon/robot/modules/syndicate_medical/spider// ditto
+ bubble_icon = "spider"
+ var/playstyle_string = "You are a Spider Clan medical cyborg!
\
+ You are armed with powerful medical tools to aid you in your mission: obey your ninja masters by any means necessary. \
+ Your hypospray will produce Restorative Nanites, a wonder-drug that will heal most types of bodily damages, including clone and brain damage. It also produces morphine for offense. \
+ Your defibrillator paddles can revive allies through their hardsuits, or can be used on harm intent to shock enemies! \
+ Your energy saw functions as a circular saw, but can be activated to deal more damage, and your pinpointer will find and locate fellow members of the Spider Clan."
set_module = /obj/item/robot_module/syndicate_medical/spider
/mob/living/silicon/robot/modules/saboteur/spider// ditto
+ bubble_icon = "spider"
+ var/playstyle_string = "You are a Spider Clan saboteur cyborg!
\
+ You are armed with robust engineering tools to aid you in your mission: obey your ninja masters by any means necessary. \
+ Your destination tagger will allow you to stealthily traverse the disposal network across the station. \
+ Your welder will can be used to repair yourself or any allied silicon units, while serving as an impromptu melee weapon. \
+ Your cyborg chameleon projector allows you to assume the appearance and registered name of a Nanotrasen engineering borg, and undertake covert actions on the station, \
+ be aware that almost any physical contact or incidental damage will break your camouflage."
set_module = /obj/item/robot_module/saboteur/spider
/mob/living/silicon/robot/proc/notify_ai(notifytype, oldname, newname)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 89426af429..975222fdf0 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -1146,17 +1146,18 @@
name = "Wrapping Paper Storage"
/obj/item/robot_module/syndicate/spider// used for space ninja and their cyborg hacking special objective
+ name = "Spider Assault"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
/obj/item/crowbar/cyborg,
/obj/item/melee/transforming/energy/sword/cyborg,
- /obj/item/gun/energy/printer,
- /obj/item/crowbar/cyborg)
+ /obj/item/gun/energy/printer)
cyborg_base_icon = "spider_sec"
/obj/item/robot_module/syndicate_medical/spider// ditto
+ name = "Spider Medical"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
/obj/item/extinguisher/mini,
@@ -1181,6 +1182,7 @@
cyborg_base_icon = "spider_medical"
/obj/item/robot_module/saboteur/spider// ditto
+ name = "Spider Saboteur"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
/obj/item/borg/sight/thermal,
diff --git a/code/modules/ninja/suit/gloves.dm b/code/modules/ninja/suit/gloves.dm
index b5f39098ad..15abf0936e 100644
--- a/code/modules/ninja/suit/gloves.dm
+++ b/code/modules/ninja/suit/gloves.dm
@@ -21,6 +21,7 @@
strip_delay = 120
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
actions_types = list(/datum/action/item_action/toggle_glove)
+ var/datum/action/innate/doorjack/ninja/hack
///Whether or not we're currently draining something
var/draining = FALSE
///Whether or not we can currently drain something
diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm
index 7fb0f65d08..4f287fc81b 100644
--- a/code/modules/ninja/suit/ninjaDrainAct.dm
+++ b/code/modules/ninja/suit/ninjaDrainAct.dm
@@ -147,7 +147,7 @@
return
to_chat(ninja, "Hacking \the [src]...")
AI_notify_hack()
- if(do_after(ninja, 200))
+ if(do_after(ninja, ninja_suit.s_longdelay, target = src) && ninja_gloves.candrain && src)
for(var/datum/data/record/rec in sortRecord(GLOB.data_core.general, sortBy, order))
for(var/datum/data/record/security_record in GLOB.data_core.security)
security_record.fields["criminal"] = "*Arrest*"
@@ -168,7 +168,7 @@
return
to_chat(ninja, "Hacking \the [src]...")
AI_notify_hack()
- if(do_after(ninja, 300))
+ if(do_after(ninja, ninja_suit.s_longdelay, target = src) && ninja_gloves.candrain && src)
var/announcement_pick = rand(0, 1)
switch(announcement_pick)
if(0)
@@ -202,7 +202,6 @@
var/datum/objective/door_jack/objective = locate() in ninja_antag.objectives
if(objective && objective.doors_required <= ninja_gloves.door_hack_counter)
objective.completed = TRUE
- to_chat(ninja, "Malware uploaded to airlock access subroutines. Forcing open.")
//WIRE//
/obj/structure/cable/ninjadrain_act(obj/item/clothing/suit/space/space_ninja/ninja_suit, mob/living/carbon/human/ninja, obj/item/clothing/gloves/space_ninja/ninja_gloves)
diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm
index b0c18b8e34..66d9a85290 100644
--- a/code/modules/ninja/suit/suit.dm
+++ b/code/modules/ninja/suit/suit.dm
@@ -46,6 +46,8 @@
var/s_acost = 20
///How fast the suit is at certain actions, like draining power from things
var/s_delay = 40
+ ///How fast the suit is at certain riskier actions, like hacking communications consoles.
+ var/s_longdelay = 200
///Units of radium required to refill the adrenaline boost
var/a_transfer = 20//How much radium is required to refill the adrenaline boost.
///Whether or not the suit is currently in stealth mode.
diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi
index 0a56321037..beb38f01cc 100644
Binary files a/icons/mob/talk.dmi and b/icons/mob/talk.dmi differ