Files
PollardTheDragon 394c3b0108 Stealth and Steel: The Space Ninja (#31497)
* Space Ninja Antag Datum

* Small fixes

* Ninja outfit, ekatana, actions

* Ninja scanner and spans

* Ninja uplink implant

* Ninja bombs

* Ninja bomb flare grants

* Ninja modsuit, objective payouts

* Fixes objectives

* Ninja stealth fix, modsuit sprites and final implementations

* Lints

* Ninja scanner sprites

* Ninja Suit and Energy Shuriken Sprites

* Fixes config, Adjusts stim ability, adds shuriken printer and e-shurikens, uplink stuff

* Fixes a duplicate icon

* Attack chain

* Energy katana item sprite

* Ninja net gun

* Brazil

* Spawning ninjas, ninja on traitor panel, ninja spawn sound

* Linter

* Objective stuff

* Fixes n grey suits

* Objectives

* Trim intro sound

* Event, spawn point

* Ninja Outfits, Vox Check, Bug Fixes, Mirror at ninja spawn

* Address code review

* Oops

* Uncomments an important thingy

* Update: Gave space ninjas access to maints and an agent ID card. Updated net description.

* Update scanner examine

* Removes excess file

* Makes ninja scanner fit in belts and ninja suits. Gives them NV goggles

* Fixes modsuit sprite issue

* Energy shuriken fixes

* Scanner fix

* Printer fix

* Fixes some runtimes

* Fixes capture teleport

* Clothes rename

* Buffs energy katana, adds soft no-drop to ekatana, buffs ninja modsuit, fixes equip bug

* Adds research levels to ninja gear

* Fixes ninja capture issue

* Remaps ninja dojo

* Better cuff removal

* Forgor

* Fixes action availability

* Updates walls at dojo

* Improves ninja modsuit

* Windoors can now be opened with the katana

* Adds advanced pinpointer to ninja uplink

* Fixed energy nets sticking

* Fixes slime people ninjas

* Adds reroll to ninja capture if target is DNR. Prevents off Z-level targets

* Oop

* Adds reactor sabotage objective.

* Fixes ninja cuffs

* Removes Carp scroll from uplink. Adds Krav Implant to uplink
2026-03-25 23:11:10 +00:00

102 lines
3.0 KiB
Plaintext

/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, "<span class='notice'>You are now sneaking around. Stick to the darkness to conceal yourself better.</span>")
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, "<span class='notice'>You are no longer sneaking around.</span>")
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()