From 99b826afc02ebaf3b4fe7c3505a2f9b597b20af4 Mon Sep 17 00:00:00 2001 From: Ktlwjec Date: Sat, 14 Dec 2019 12:21:12 +0000 Subject: [PATCH] ninja jail not permanent --- .../items/implants/implant_explosive.dm | 2 +- code/modules/antagonists/ninja/ninja.dm | 26 +++++++++++++++++++ .../suit/n_suit_verbs/energy_net_nets.dm | 7 ++--- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm index d2748567979e..97912e4d1e72 100644 --- a/code/game/objects/items/implants/implant_explosive.dm +++ b/code/game/objects/items/implants/implant_explosive.dm @@ -27,7 +27,6 @@ return dat /obj/item/implant/explosive/activate(cause) - . = ..() if(!cause || !imp_in || active) return 0 if(cause == "action_button" && !popup) @@ -41,6 +40,7 @@ weak = round(weak) to_chat(imp_in, "You activate your [name].") 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 diff --git a/code/modules/antagonists/ninja/ninja.dm b/code/modules/antagonists/ninja/ninja.dm index 9352e918779b..ed538a560974 100644 --- a/code/modules/antagonists/ninja/ninja.dm +++ b/code/modules/antagonists/ninja/ninja.dm @@ -1,3 +1,5 @@ +GLOBAL_LIST_EMPTY(ninja_capture) + /datum/antagonist/ninja name = "Ninja" antagpanel_category = "Ninja" @@ -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) @@ -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, "You lose your footing as the dojo suddenly disappears. You're free!") + 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")) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index 270e1f106f61..146d110ce0e9 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -36,7 +36,7 @@ It is possible to destroy the net by the occupant or someone else. if(!QDELETED(affecting)) affecting.visible_message("[affecting.name] was recovered from the energy net!", "You were recovered from the energy net!", "You hear a grunt.") if(!QDELETED(master))//As long as they still exist. - to_chat(master, "ERROR: unable to initiate transport protocol. Procedure terminated.") + to_chat(master, "ERROR: unable to initiate capture protocol. Procedure terminated.") return ..() /obj/structure/energy_net/process() @@ -64,10 +64,11 @@ It is possible to destroy the net by the occupant or someone else. visible_message("[affecting] suddenly vanishes!") affecting.forceMove(pick(GLOB.holdingfacility)) //Throw mob in to the holding facility. - to_chat(affecting, "You appear in a strange place!") + GLOB.ninja_capture += affecting + to_chat(affecting, "You appear in a strange place. You feel very trapped.") if(!QDELETED(master))//As long as they still exist. - to_chat(master, "SUCCESS: transport procedure of [affecting] complete.") + to_chat(master, "SUCCESS: capture procedure of [affecting] complete.") do_sparks(5, FALSE, affecting) playsound(affecting, 'sound/effects/phasein.ogg', 25, 1) playsound(affecting, 'sound/effects/sparks2.ogg', 50, 1)