/datum/action/cooldown/ninja background_icon_state = "bg_ninja" button_icon_state = "genetic_view" /datum/action/cooldown/ninja/ninja_cloak name = "Ninja's Stealth" desc = "Toggles whether you are currently sneaking, reducing your visibility and movement speed. Enhanced effects in darkness." button_icon_state = "vampire_cloak" cooldown_time = 2 SECONDS var/sneaking = FALSE /datum/action/cooldown/ninja/ninja_cloak/proc/update_action_name() name = "[initial(name)] ([sneaking ? "Deactivate" : "Activate"])" SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_NAME) build_all_button_icons() /datum/action/cooldown/ninja/ninja_cloak/proc/stop_sneaking() if(!ishuman(owner)) return var/mob/living/carbon/human/H = owner sneaking = FALSE STOP_PROCESSING(SSobj, src) UnregisterSignal(H, COMSIG_ATTACK) UnregisterSignal(H, COMSIG_ATTACK_BY) H.set_alpha_tracking(ALPHA_VISIBLE, src) REMOVE_TRAIT(owner, TRAIT_GOTTAGOSLOW, src) /datum/action/cooldown/ninja/ninja_cloak/process() . = ..() if(!ishuman(owner)) return var/mob/living/carbon/human/H = owner if(H.stat) stop_sneaking() return if(!sneaking) stop_sneaking() return var/turf/simulated/T = get_turf(H) var/light_available = T.get_lumcount() * 10 if(light_available <= 2) H.set_alpha_tracking(ALPHA_VISIBLE * 0.1, src) return H.set_alpha_tracking(ALPHA_VISIBLE * 0.5, src) /datum/action/cooldown/ninja/ninja_cloak/Activate(atom/target) if(!ishuman(owner)) return var/mob/living/carbon/human/H = owner sneaking = !sneaking update_action_name() if(sneaking) to_chat(H, "You are now sneaking around. Stick to the darkness to conceal yourself better.") START_PROCESSING(SSobj, src) RegisterSignal(owner, COMSIG_ATTACK, PROC_REF(stop_sneaking)) RegisterSignal(owner, COMSIG_ATTACK_BY, PROC_REF(stop_sneaking)) ADD_TRAIT(owner, TRAIT_GOTTAGOSLOW, src) else to_chat(H, "You are no longer sneaking around.") stop_sneaking() StartCooldown() /datum/action/cooldown/ninja/freedom_shoes name = "Ninja's Mobility" desc = "Breaks free of leg restraints. 2 Minute cooldown." button_icon = 'icons/obj/bio_chips.dmi' button_icon_state = "freedom" cooldown_time = 2 MINUTES /datum/action/cooldown/ninja/freedom_shoes/Activate(atom/target) if(!ishuman(owner)) return var/mob/living/carbon/human/H = owner H.clear_legcuffs(TRUE) H.SetKnockDown(0) H.stand_up(TRUE) StartCooldown() /datum/action/cooldown/ninja/stim_suit name = "Ninja's Tenacity" desc = "Activates an injector within your suit, pumping you with a small hit of stimulants. 2 Minute cooldown." button_icon = 'icons/obj/bio_chips.dmi' button_icon_state = "adrenal" cooldown_time = 2 MINUTES /datum/action/cooldown/ninja/stim_suit/Activate(atom/target) if(!ishuman(owner)) return var/mob/living/carbon/human/H = owner H.SetStunned(0) H.SetWeakened(0) H.SetKnockDown(0) H.SetParalysis(0) H.adjustStaminaLoss(-75) H.stand_up(TRUE) SEND_SIGNAL(H, COMSIG_LIVING_CLEAR_STUNS) H.reagents.add_reagent("stimulative_agent", 1) // 10 Seconds. StartCooldown()