Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
1 change: 0 additions & 1 deletion code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@
#define TRAIT_OIL_FRIED "oil_fried"
#define TRAIT_SHELTERED "sheltered"


//non-mob traits
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it

Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/implants/implant_explosive.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
return dat

/obj/item/implant/explosive/activate(cause)
. = ..()
if(!cause || !imp_in || active)
return 0
if(cause == "action_button" && !popup)
Expand All @@ -41,6 +40,7 @@
weak = round(weak)
to_chat(imp_in, "<span class='notice'>You activate your [name].</span>")
active = TRUE
. = ..()
var/turf/boomturf = get_turf(imp_in)
message_admins("[ADMIN_LOOKUPFLW(imp_in)] has activated their [name] at [ADMIN_VERBOSEJMP(boomturf)], with cause of [cause].")
//If the delay is short, just blow up already jeez
Expand Down
27 changes: 27 additions & 0 deletions code/modules/antagonists/ninja/ninja.dm
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
GLOBAL_LIST_EMPTY(ninja_capture)

/datum/antagonist/ninja
name = "Ninja"
antagpanel_category = "Ninja"
Expand All @@ -15,10 +17,16 @@

/datum/antagonist/ninja/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
for(var/obj/item/implant/explosive/E in M.implants)
if(E)
RegisterSignal(E, COMSIG_IMPLANT_ACTIVATED, .proc/on_death)
update_ninja_icons_added(M)

/datum/antagonist/ninja/remove_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
for(var/obj/item/implant/explosive/E in M.implants)
if(E)
UnregisterSignal(M, COMSIG_IMPLANT_ACTIVATED, .proc/on_death)
update_ninja_icons_removed(M)

/datum/antagonist/ninja/proc/equip_space_ninja(mob/living/carbon/human/H = owner.current)
Expand Down Expand Up @@ -125,6 +133,24 @@
equip_space_ninja(owner.current)
. = ..()

/datum/antagonist/ninja/proc/on_death()
for(var/mob/L in GLOB.ninja_capture)
if(get_area(L) == GLOB.areas_by_type[/area/centcom/holding])
if(!L)
continue
var/atom/movable/target = L
if(isobj(L.loc))
target = L.loc
target.forceMove(get_turf(pick(GLOB.generic_event_spawns)))
if(isliving(L))
var/mob/living/LI = L
LI.Knockdown(120)
LI.blind_eyes(10)
to_chat(L, "<span class='danger'>You lose your footing as the dojo suddenly disappears. You're free!</span>")
playsound(L, 'sound/effects/phasein.ogg', 25, 1)
playsound(L, 'sound/effects/sparks2.ogg', 50, 1)
GLOB.ninja_capture -= L

/datum/antagonist/ninja/admin_add(datum/mind/new_owner,mob/admin)
var/adj
switch(input("What kind of ninja?", "Ninja") as null|anything in list("Random","Syndicate","Nanotrasen","No objectives"))
Expand Down Expand Up @@ -159,3 +185,4 @@
var/datum/atom_hud/antag/ninjahud = GLOB.huds[ANTAG_HUD_NINJA]
ninjahud.leave_hud(ninja)
set_antag_hud(ninja, null)

Loading