mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-13 16:13:19 +01:00
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
This commit is contained in:
@@ -11,6 +11,11 @@
|
||||
permeability_coefficient = 0.01
|
||||
sprite_sheets = list(
|
||||
"Grey" = 'icons/mob/clothing/modsuit/species/grey_helmets.dmi',
|
||||
"Skrell" = 'icons/mob/clothing/modsuit/species/skrell_modsuits.dmi',
|
||||
"Nian" = 'icons/mob/clothing/modsuit/species/nian_modsuits.dmi',
|
||||
"Diona" = 'icons/mob/clothing/modsuit/species/diona_modsuits.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/modsuit/species/kidan_modsuits.dmi',
|
||||
"Drask" = 'icons/mob/clothing/modsuit/species/drask_modsuits.dmi',
|
||||
"Vulpkanin" = 'icons/mob/clothing/modsuit/species/vulp_modsuits.dmi',
|
||||
"Tajaran" = 'icons/mob/clothing/modsuit/species/taj_modsuits.dmi',
|
||||
"Unathi" = 'icons/mob/clothing/modsuit/species/unathi_modsuits.dmi',
|
||||
@@ -37,13 +42,17 @@
|
||||
insert_max = 0
|
||||
hide_tail_by_species = list("modsuit")
|
||||
sprite_sheets = list(
|
||||
"Skrell" = 'icons/mob/clothing/modsuit/species/skrell_modsuits.dmi',
|
||||
"Nian" = 'icons/mob/clothing/modsuit/species/nian_modsuits.dmi',
|
||||
"Diona" = 'icons/mob/clothing/modsuit/species/diona_modsuits.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/modsuit/species/kidan_modsuits.dmi',
|
||||
"Drask" = 'icons/mob/clothing/modsuit/species/drask_modsuits.dmi',
|
||||
"Vulpkanin" = 'icons/mob/clothing/modsuit/species/vulp_modsuits.dmi',
|
||||
"Tajaran" = 'icons/mob/clothing/modsuit/species/taj_modsuits.dmi',
|
||||
"Unathi" = 'icons/mob/clothing/modsuit/species/unathi_modsuits.dmi',
|
||||
"Vox" = 'icons/mob/clothing/modsuit/species/vox_modsuits.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/mod
|
||||
name = "MOD gauntlets"
|
||||
desc = "A pair of gauntlets for a MODsuit."
|
||||
@@ -56,13 +65,17 @@
|
||||
cold_protection = HANDS|ARMS
|
||||
permeability_coefficient = 0.01
|
||||
sprite_sheets = list(
|
||||
"Skrell" = 'icons/mob/clothing/modsuit/species/skrell_modsuits.dmi',
|
||||
"Nian" = 'icons/mob/clothing/modsuit/species/nian_modsuits.dmi',
|
||||
"Diona" = 'icons/mob/clothing/modsuit/species/diona_modsuits.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/modsuit/species/kidan_modsuits.dmi',
|
||||
"Drask" = 'icons/mob/clothing/modsuit/species/drask_modsuits.dmi',
|
||||
"Vulpkanin" = 'icons/mob/clothing/modsuit/species/vulp_modsuits.dmi',
|
||||
"Tajaran" = 'icons/mob/clothing/modsuit/species/taj_modsuits.dmi',
|
||||
"Unathi" = 'icons/mob/clothing/modsuit/species/unathi_modsuits.dmi',
|
||||
"Vox" = 'icons/mob/clothing/modsuit/species/vox_modsuits.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/mod
|
||||
name = "MOD boots"
|
||||
desc = "A pair of boots for a MODsuit."
|
||||
@@ -75,6 +88,11 @@
|
||||
cold_protection = FEET|LEGS
|
||||
permeability_coefficient = 0.01
|
||||
sprite_sheets = list(
|
||||
"Skrell" = 'icons/mob/clothing/modsuit/species/skrell_modsuits.dmi',
|
||||
"Nian" = 'icons/mob/clothing/modsuit/species/nian_modsuits.dmi',
|
||||
"Diona" = 'icons/mob/clothing/modsuit/species/diona_modsuits.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/modsuit/species/kidan_modsuits.dmi',
|
||||
"Drask" = 'icons/mob/clothing/modsuit/species/drask_modsuits.dmi',
|
||||
"Vulpkanin" = 'icons/mob/clothing/modsuit/species/vulp_modsuits.dmi',
|
||||
"Tajaran" = 'icons/mob/clothing/modsuit/species/taj_modsuits.dmi',
|
||||
"Unathi" = 'icons/mob/clothing/modsuit/species/unathi_modsuits.dmi',
|
||||
|
||||
@@ -1384,3 +1384,58 @@
|
||||
/// considering this should not be used, it's getting just DS armor, not infinity in everything.
|
||||
/obj/item/mod/armor/mod_theme_administrative
|
||||
armor = list(MELEE = 200, BULLET = 200, LASER = 50, ENERGY = 50, BOMB = INFINITY, RAD = INFINITY, FIRE = INFINITY, ACID = INFINITY)
|
||||
|
||||
/datum/mod_theme/ninja
|
||||
name = "'Shinobi' stealthsuit"
|
||||
desc = "A specialized modsuit worn by the spider clan's elite ninja operatives."
|
||||
default_skin = "ninja"
|
||||
armor_type_1 = /obj/item/mod/armor/mod_theme_ninja
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
flag_2_flags = RAD_PROTECT_CONTENTS_2
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
siemens_coefficient = 0
|
||||
slowdown_inactive = 1
|
||||
slowdown_active = 0.3
|
||||
ui_theme = "syndicate"
|
||||
allowed_suit_storage = list(
|
||||
/obj/item/katana/energy,
|
||||
/obj/item/wormhole_jaunter/ninja_bomb,
|
||||
/obj/item/throwing_star,
|
||||
/obj/item/restraints/legcuffs/bola,
|
||||
/obj/item/gun,
|
||||
/obj/item/ninja_scanner,
|
||||
)
|
||||
skins = list(
|
||||
"ninja" = list(
|
||||
HELMET_FLAGS = list(
|
||||
UNSEALED_LAYER = null,
|
||||
UNSEALED_CLOTHING = THICKMATERIAL,
|
||||
SEALED_CLOTHING = STOPSPRESSUREDMAGE | BLOCKHAIR,
|
||||
UNSEALED_INVISIBILITY = HIDEFACE,
|
||||
SEALED_INVISIBILITY = HIDEMASK | HIDEEYES | HIDEEARS | HIDEFACE,
|
||||
UNSEALED_COVER = HEADCOVERSMOUTH,
|
||||
SEALED_COVER = HEADCOVERSEYES,
|
||||
CAN_OVERSLOT = TRUE,
|
||||
),
|
||||
CHESTPLATE_FLAGS = list(
|
||||
UNSEALED_CLOTHING = THICKMATERIAL,
|
||||
SEALED_CLOTHING = STOPSPRESSUREDMAGE,
|
||||
SEALED_INVISIBILITY = HIDEJUMPSUIT | HIDETAIL,
|
||||
CAN_OVERSLOT = TRUE,
|
||||
),
|
||||
GAUNTLETS_FLAGS = list(
|
||||
UNSEALED_CLOTHING = THICKMATERIAL,
|
||||
SEALED_CLOTHING = STOPSPRESSUREDMAGE,
|
||||
CAN_OVERSLOT = TRUE,
|
||||
),
|
||||
BOOTS_FLAGS = list(
|
||||
UNSEALED_CLOTHING = THICKMATERIAL,
|
||||
SEALED_CLOTHING = STOPSPRESSUREDMAGE,
|
||||
CAN_OVERSLOT = TRUE,
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
/obj/item/mod/armor/mod_theme_ninja
|
||||
|
||||
armor = list(MELEE = 50, BULLET = 35, LASER = 35, ENERGY = 30, BOMB = 25, RAD = 200, FIRE = INFINITY, ACID = INFINITY)
|
||||
|
||||
@@ -569,6 +569,25 @@
|
||||
/obj/item/mod/module/jetpack/advanced,
|
||||
)
|
||||
|
||||
/obj/item/mod/control/pre_equipped/ninja
|
||||
icon_state = "ninja-control"
|
||||
theme = /datum/mod_theme/ninja
|
||||
starting_frequency = MODLINK_FREQ_SYNDICATE
|
||||
applied_cell = /obj/item/stock_parts/cell/bluespace
|
||||
applied_modules = list(
|
||||
/obj/item/mod/module/storage/syndicate,
|
||||
/obj/item/mod/module/jetpack/advanced,
|
||||
/obj/item/mod/module/dispenser/smoke,
|
||||
/obj/item/mod/module/shinobi_stealth,
|
||||
/obj/item/mod/module/shinobi_freedom,
|
||||
/obj/item/mod/module/shinobi_stims,
|
||||
/obj/item/mod/module/noslip,
|
||||
)
|
||||
default_pins = list(
|
||||
/obj/item/mod/module/jetpack/advanced,
|
||||
/obj/item/mod/module/dispenser/smoke,
|
||||
)
|
||||
|
||||
//these exist for the prefs menu
|
||||
/obj/item/mod/control/pre_equipped/empty
|
||||
starting_frequency = null
|
||||
|
||||
@@ -641,3 +641,77 @@
|
||||
/obj/item/mod/module/anomaly_locked/teslawall/prebuilt
|
||||
prebuilt = TRUE
|
||||
removable = FALSE // No switching it into another suit / no free anomaly core
|
||||
|
||||
/obj/item/mod/module/shinobi_stealth
|
||||
name = "MOD shinobi stealth module"
|
||||
desc = "An advanced module, designed by the Spider Clan, that replicates the advanced stealth technology in the classic ninja scarf."
|
||||
icon_state = "armor_booster"
|
||||
origin_tech = "combat=5;bluespace=6;syndicate=4"
|
||||
active_power_cost = DEFAULT_CHARGE_DRAIN * 0.2
|
||||
removable = FALSE
|
||||
/// Linked sneaking action
|
||||
var/datum/action/cooldown/ninja/ninja_cloak/cloak_action
|
||||
|
||||
/obj/item/mod/module/shinobi_stealth/Initialize(mapload)
|
||||
. = ..()
|
||||
cloak_action = new(src)
|
||||
|
||||
/obj/item/mod/module/shinobi_stealth/on_suit_activation()
|
||||
. = ..()
|
||||
cloak_action.Grant(mod.wearer)
|
||||
|
||||
/obj/item/mod/module/shinobi_stealth/on_suit_deactivation(deleting = FALSE)
|
||||
if(deleting)
|
||||
return
|
||||
cloak_action.stop_sneaking()
|
||||
cloak_action.Remove(mod.wearer)
|
||||
|
||||
/obj/item/mod/module/shinobi_freedom
|
||||
name = "MOD shinobi escape module"
|
||||
desc = "An advanced module, designed by the Spider Clan, that replicates the advanced escaping technology in the classic ninja boots."
|
||||
icon_state = "armor_booster"
|
||||
origin_tech = "combat=5;bluespace=6;syndicate=4"
|
||||
active_power_cost = DEFAULT_CHARGE_DRAIN * 0.2
|
||||
removable = FALSE
|
||||
/// Linked freedom action
|
||||
var/datum/action/cooldown/ninja/freedom_shoes/freedoms_action
|
||||
|
||||
/obj/item/mod/module/shinobi_freedom/Initialize(mapload)
|
||||
. = ..()
|
||||
freedoms_action = new(src)
|
||||
|
||||
/obj/item/mod/module/shinobi_freedom/on_suit_activation()
|
||||
. = ..()
|
||||
ADD_TRAIT(mod.wearer, TRAIT_GOTTAGONOTSOFAST, src)
|
||||
freedoms_action.Grant(mod.wearer)
|
||||
|
||||
/obj/item/mod/module/shinobi_freedom/on_suit_deactivation(deleting = FALSE)
|
||||
if(deleting)
|
||||
return
|
||||
REMOVE_TRAIT(mod.wearer, TRAIT_GOTTAGONOTSOFAST, src)
|
||||
freedoms_action.Remove(mod.wearer)
|
||||
|
||||
/obj/item/mod/module/shinobi_stims
|
||||
name = "MOD shinobi stimulant module"
|
||||
desc = "An advanced module, designed by the Spider Clan, that replicates the advanced stimulants technology in the classic ninja kabuto."
|
||||
icon_state = "armor_booster"
|
||||
origin_tech = "combat=5;bluespace=6;syndicate=4"
|
||||
active_power_cost = DEFAULT_CHARGE_DRAIN * 0.2
|
||||
removable = FALSE
|
||||
/// Linked stims action
|
||||
var/datum/action/cooldown/ninja/stim_suit/antistun_action
|
||||
|
||||
/obj/item/mod/module/shinobi_stims/Initialize(mapload)
|
||||
. = ..()
|
||||
antistun_action = new(src)
|
||||
|
||||
/obj/item/mod/module/shinobi_stims/on_suit_activation()
|
||||
. = ..()
|
||||
ADD_TRAIT(mod.wearer, TRAIT_GOTTAGONOTSOFAST, src)
|
||||
antistun_action.Grant(mod.wearer)
|
||||
|
||||
/obj/item/mod/module/shinobi_stims/on_suit_deactivation(deleting = FALSE)
|
||||
if(deleting)
|
||||
return
|
||||
REMOVE_TRAIT(mod.wearer, TRAIT_GOTTAGONOTSOFAST, src)
|
||||
antistun_action.Remove(mod.wearer)
|
||||
|
||||
Reference in New Issue
Block a user