diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 7db417b8fa..e09d79a39d 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -769,6 +769,15 @@
Help the operatives secure the disk at all costs!"
set_module = /obj/item/robot_module/saboteur
+/mob/living/silicon/robot/modules/syndicate/spider// used for space ninja and their cyborg hacking special objective
+ set_module = /obj/item/robot_module/syndicate/spider
+
+/mob/living/silicon/robot/modules/syndicate_medica/spider// ditto
+ set_module = /obj/item/robot_module/syndicate_medical/spider
+
+/mob/living/silicon/robot/modules/saboteur/spider// ditto
+ set_module = /obj/item/robot_module/saboteur/spider
+
/mob/living/silicon/robot/proc/notify_ai(notifytype, oldname, newname)
if(!connected_ai)
return
diff --git a/code/modules/ninja/ninja_explosive.dm b/code/modules/ninja/ninja_explosive.dm
index 1e9fe344a4..e87ff2b6d6 100644
--- a/code/modules/ninja/ninja_explosive.dm
+++ b/code/modules/ninja/ninja_explosive.dm
@@ -17,7 +17,7 @@
/obj/item/grenade/plastic/c4/ninja/afterattack(atom/movable/AM, mob/user, flag)
var/datum/antagonist/ninja/ninja_antag = user.mind.has_antag_datum(/datum/antagonist/ninja)
if(!ninja_antag)
- to_chat(user, "While it appears normal, you can't seem to detonate the charge.")
+ to_chat(user, "You fiddle with the charge, but nothing happens.")
return
var/datum/objective/plant_explosive/objective = locate() in ninja_antag.objectives
if(!objective)
@@ -37,4 +37,9 @@
return
var/datum/antagonist/ninja/ninja_antag = detonator.mind.has_antag_datum(/datum/antagonist/ninja)
var/datum/objective/plant_explosive/objective = locate() in ninja_antag.objectives
- objective.completed = TRUE
\ No newline at end of file
+ objective.completed = TRUE
+
+/obj/item/grenade/plastic/c4/ninja/attackby(obj/item/I, mob/user, params)
+ if(istype(I, /obj/item/screwdriver))
+ to_chat(user, "The wire panel is locked in place, clearly you aren't supposed to be opening it!")
+ return
diff --git a/code/modules/ninja/suit/ninja_equipment_actions/ninja_empulse.dm b/code/modules/ninja/suit/ninja_equipment_actions/ninja_empulse.dm
index f09661d23d..ea2341a132 100644
--- a/code/modules/ninja/suit/ninja_equipment_actions/ninja_empulse.dm
+++ b/code/modules/ninja/suit/ninja_equipment_actions/ninja_empulse.dm
@@ -18,4 +18,4 @@
var/mob/living/carbon/human/H = affecting
playsound(H.loc, 'sound/effects/empulse.ogg', 60, 2)
empulse(H, 4, 6) //Procs sure are nice. Slightly weaker than wizard's disable tch.
- //s_coold = 4 commented out until someone figures out why the fuck cooldowns don't work after porting from tg
+ s_coold = 4
diff --git a/code/modules/ninja/suit/ninja_equipment_actions/ninja_sword_recall.dm b/code/modules/ninja/suit/ninja_equipment_actions/ninja_sword_recall.dm
index 22fdf86ccd..dd6ca61f88 100644
--- a/code/modules/ninja/suit/ninja_equipment_actions/ninja_sword_recall.dm
+++ b/code/modules/ninja/suit/ninja_equipment_actions/ninja_sword_recall.dm
@@ -45,3 +45,4 @@
else //Else just TP it to us.
energyKatana.returnToOwner(ninja, 1)
+ s_coold = 4
diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm
index 30f3be6f35..9288c076b4 100644
--- a/code/modules/ninja/suit/suit.dm
+++ b/code/modules/ninja/suit/suit.dm
@@ -81,6 +81,34 @@
cell.name = "black power cell"
cell.icon_state = "bscell"
+/obj/item/clothing/suit/space/space_ninja/Initialize(mapload)
+ START_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/clothing/suit/space/space_ninja/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+// Power usage
+/obj/item/clothing/suit/space/space_ninja/process(delta_time)
+ var/mob/living/carbon/human/user = src.loc
+ if(!user || !ishuman(user) || !(user.wear_suit == src))
+ return
+
+ // Check for energy usage
+ if(s_initialized)
+ if(!affecting)
+ terminate() // Kills the suit and attached objects.
+ else if(cell.charge > 0)
+ if(s_coold > 0)
+ s_coold = max(s_coold - delta_time, 0) // Checks for ability s_cooldown first.
+ cell.charge -= s_cost * delta_time // s_cost is the default energy cost each ntick, usually 5.
+ if(stealth) // If stealth is active.
+ cell.charge -= s_acost * delta_time
+ else
+ cell.charge = 0
+ cancel_stealth()
+
/obj/item/clothing/suit/space/space_ninja/ui_action_click(mob/user, action)
if(IS_NINJA_SUIT_INITIALIZATION(action))
toggle_on_off()
@@ -118,7 +146,7 @@
. = ..()
if(stealth)
cancel_stealth()
- //s_coold = 5 commented out until someone figures out why the fuck cooldowns don't work after porting from tg
+ s_coold = 5
/**
* Proc called to lock the important gear pieces onto space ninja's body.
diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi
index f1c64a2151..a4202a3841 100644
Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ