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:
PollardTheDragon
2026-03-25 19:11:10 -04:00
committed by GitHub
parent 3e8f140498
commit 394c3b0108
120 changed files with 2616 additions and 1184 deletions
+32
View File
@@ -408,6 +408,18 @@
else
. += "thrall|<b>NO</b>"
/datum/mind/proc/memory_edit_space_ninja(mob/living/carbon/human/H)
. = _memory_edit_header("space_ninja")
var/datum/antagonist/space_ninja/ninja = has_antag_datum(/datum/antagonist/space_ninja)
if(ninja)
. += "<b><font color='red'>SPACE NINJA</font></b>|<a href='byond://?src=[UID()];space_ninja=clear'>no</a>"
if(!ninja.has_antag_objectives())
. += "<br>Objectives are empty! <a href='byond://?src=[UID()];space_ninja=autoobjectives'>Randomize!</a>"
else
. += "<a href='byond://?src=[UID()];space_ninja=space_ninja'>space_ninja</a>|<b>NO</b>"
. += _memory_edit_role_enabled(ROLE_NINJA)
/datum/mind/proc/memory_edit_mind_flayer(mob/living/carbon/human/H)
. = _memory_edit_header("mind_flayer")
var/datum/antagonist/mindflayer/flayer = has_antag_datum(/datum/antagonist/mindflayer)
@@ -605,6 +617,8 @@
sections["changeling"] = memory_edit_changeling(H)
/** VAMPIRE ***/
sections["vampire"] = memory_edit_vampire(H)
/** SPACE NINJA */
sections["space_ninja"] = memory_edit_space_ninja(H)
/** MINDFLAYER ***/
sections["mind_flayer"] = memory_edit_mind_flayer(H)
/** HERETIC ***/
@@ -1169,6 +1183,19 @@
log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
else if(href_list["space_ninja"])
switch(href_list["space_ninja"])
if("clear")
if(has_antag_datum(/datum/antagonist/space_ninja))
remove_antag_datum(/datum/antagonist/space_ninja)
log_admin("[key_name(usr)] has de-ninja'd [key_name(current)].")
message_admins("[key_name(usr)] has de-ninja'd [key_name(current)].")
if("space_ninja")
make_space_ninja()
log_admin("[key_name(usr)] has ninja'd [key_name(current)].")
to_chat(current, "<b><font color='red'>Your training awakens, and a myserious set of gear teleports in around you... You are a Space Ninja!</font></b>")
message_admins("[key_name(usr)] has ninja'd [key_name(current)].")
else if(href_list["vampthrall"])
switch(href_list["vampthrall"])
if("clear")
@@ -1826,6 +1853,11 @@
add_antag_datum(/datum/antagonist/mindflayer)
SSticker.mode.mindflayers |= src
/datum/mind/proc/make_space_ninja()
if(!has_antag_datum(/datum/antagonist/space_ninja))
add_antag_datum(/datum/antagonist/space_ninja)
SSticker.mode.ninjas |= src
/datum/mind/proc/make_heretic()
if(!has_antag_datum(/datum/antagonist/heretic))
add_antag_datum(/datum/antagonist/heretic)
+39 -2
View File
@@ -182,6 +182,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/dangerous
category = "Highly Visible and Dangerous Weapons"
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/dangerous/pistol
name = "FK-69 Stechkin Pistol"
@@ -243,7 +244,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/chainsaw/syndie
cost = 65
surplus = 0 // This has caused major problems with un-needed chainsaw massacres. Bwoink bait.
excludefrom = list(UPLINK_TYPE_NUCLEAR)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_NINJA)
can_discount = FALSE // Too gamer.
/datum/uplink_item/dangerous/universal_gun_kit
@@ -275,6 +276,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
category = "Ammunition"
surplus = 0 // Getting these in a discount or surplus is not a good time.
can_discount = FALSE
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/ammo/pistol
name = "Stechkin - 10mm Magazine"
@@ -317,6 +319,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/stealthy_weapons
category = "Stealthy and Inconspicuous Weapons"
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/stealthy_weapons/garrote
name = "Fiber Wire Garrote"
@@ -325,6 +328,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/garrote
reference = "GAR"
cost = 30
excludefrom = list()
/datum/uplink_item/stealthy_weapons/cameraflash
name = "Camera Flash"
@@ -342,6 +346,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "STK"
item = /obj/item/storage/box/syndie_kit/throwing_weapons
cost = 15
excludefrom = list()
/datum/uplink_item/stealthy_weapons/edagger
name = "Energy Dagger"
@@ -349,6 +354,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "EDP"
item = /obj/item/pen/edagger
cost = 10
excludefrom = list()
/datum/uplink_item/stealthy_weapons/foampistol
name = "Toy Gun (with Stun Darts)"
@@ -387,6 +393,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/reagent_containers/glass/bottle/traitor
cost = 10
surplus = 0 // Requires another item to function.
excludefrom = list()
/datum/uplink_item/stealthy_weapons/silencer
name = "Universal Suppressor"
@@ -416,6 +423,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/explosives
category = "Grenades and Explosives"
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/explosives/plastic_explosives
name = "Composition C-4"
@@ -487,6 +495,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "TARG"
item = /obj/item/grenade/chem_grenade/tar
cost = 7
excludefrom = list()
////////////////////////////////////////
// MARK: STEALTHY TOOLS
@@ -494,6 +503,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/stealthy_tools
category = "Stealth and Camouflage Items"
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/stealthy_tools/forgers_kit
name = "Forger's Kit"
@@ -526,6 +536,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "THIG"
item = /obj/item/clothing/glasses/chameleon/thermal
cost = 15
excludefrom = list()
/datum/uplink_item/stealthy_tools/night
name = "Nightvision Chameleon Glasses"
@@ -533,6 +544,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "TNIG"
item = /obj/item/clothing/glasses/chameleon/night
cost = 5
excludefrom = list()
/datum/uplink_item/stealthy_tools/agent_card
name = "Agent ID Card"
@@ -547,6 +559,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "CP"
item = /obj/item/chameleon
cost = 25
excludefrom = list()
/datum/uplink_item/stealthy_tools/chameleon_counter
name = "Chameleon Counterfeiter"
@@ -562,6 +575,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/storage/box/syndie_kit/camera_bug
cost = 5
surplus = 90
excludefrom = list()
/datum/uplink_item/stealthy_tools/dnascrambler
name = "DNA Scrambler"
@@ -569,6 +583,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "DNAS"
item = /obj/item/dnascrambler
cost = 7
excludefrom = list()
/datum/uplink_item/stealthy_tools/smugglersatchel
name = "Smuggler's Satchel"
@@ -615,6 +630,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "HM"
item = /obj/item/handheld_mirror
cost = 5
excludefrom = list()
////////////////////////////////////////
// MARK: DEVICES AND TOOLS
@@ -623,6 +639,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/device_tools
category = "Devices and Tools"
abstract = 1
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/device_tools/emag
name = "Cryptographic Sequencer"
@@ -658,6 +675,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "NCAI"
item = /obj/item/reagent_containers/hypospray/autoinjector/nanocalcium
cost = 10
excludefrom = list()
/datum/uplink_item/device_tools/syndicate_teleporter
name = "Experimental Syndicate Teleporter"
@@ -692,6 +710,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "TAR"
item = /obj/item/reagent_containers/spray/sticky_tar
cost = 10
excludefrom = list()
/datum/uplink_item/device_tools/binary
name = "Binary Translator Key"
@@ -739,6 +758,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
name = "Advanced Pinpointer"
desc = "A pinpointer that tracks any specified coordinates, DNA string, high value item or the nuclear authentication disk."
reference = "ADVP"
excludefrom = list()
item = /obj/item/pinpointer/advpinpointer
cost = 10
can_discount = FALSE
@@ -749,6 +769,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "AID"
item = /obj/item/multitool/ai_detect
cost = 5
excludefrom = list()
/datum/uplink_item/device_tools/jammer
name = "Radio Jammer"
@@ -756,6 +777,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "RJ"
item = /obj/item/jammer
cost = 20
excludefrom = list()
/datum/uplink_item/device_tools/decoy_nade
name = "Decoy Grenade Kit"
@@ -763,6 +785,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "DCY"
item = /obj/item/storage/box/syndie_kit/decoy
cost = 20
excludefrom = list()
////////////////////////////////////////
// MARK: SPACE SUITS AND HARDSUITS
@@ -771,6 +794,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/suits
category = "Space Suits and MODsuits"
surplus = 10 //I am setting this to 10 as there are a bunch of modsuit parts in here that should be weighted to 10. Suits and modsuits adjusted below.
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/suits/space_suit
name = "Syndicate Space Suit"
@@ -787,6 +811,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "MSTV"
item = /obj/item/mod/module/visor/thermal
cost = 15 // Don't forget, you need to get a modsuit to go with this
excludefrom = list()
/datum/uplink_item/suits/night
name = "MODsuit Night Visor Module"
@@ -794,6 +819,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "MSNV"
item = /obj/item/mod/module/visor/night
cost = 5 // It's night vision, rnd pumps out those goggles for anyone man.
excludefrom = list()
/datum/uplink_item/suits/plate_compression
name = "MODsuit Plate Compression Module"
@@ -809,6 +835,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "MSCM"
item = /obj/item/mod/module/chameleon
cost = 10
excludefrom = list()
/datum/uplink_item/suits/noslip
name = "MODsuit Anti-Slip Module"
@@ -816,6 +843,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "MSNS"
item = /obj/item/mod/module/noslip
cost = 5
excludefrom = list()
/datum/uplink_item/suits/springlock_module
name = "Heavily Modified Springlock MODsuit Module"
@@ -831,6 +859,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "FNAF"
item = /obj/item/mod/module/springlock/bite_of_87
cost = 5
excludefrom = list()
/datum/uplink_item/suits/hidden_holster
name = "Hidden Holster Module"
@@ -845,6 +874,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "SGM"
item = /obj/item/mod/module/dispenser/smoke
cost = 10
excludefrom = list()
////////////////////////////////////////
// MARK: IMPLANTS
@@ -852,6 +882,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/bio_chips
category = "Bio-chips"
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/bio_chips/freedom
name = "Freedom Bio-chip"
@@ -873,6 +904,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "ESI"
item = /obj/item/bio_chip_implanter/storage
cost = 40
excludefrom = list()
/datum/uplink_item/bio_chips/mindslave
name = "Mindslave Bio-chip"
@@ -917,6 +949,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/cyber_implants
category = "Cybernetic Implants"
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/cyber_implants/hackerman_deck
name = "Binyat Wireless Hacking System Autoimplanter"
@@ -935,6 +968,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "RZR"
item = /obj/item/autosurgeon/organ/syndicate/oneuse/razorwire
cost = 20
excludefrom = list()
/datum/uplink_item/cyber_implants/scope_eyes
name = "Hardened Kaleido Optics Eyes Autoimplanter"
@@ -944,6 +978,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
reference = "KOE"
item = /obj/item/autosurgeon/organ/syndicate/oneuse/scope_eyes
cost = 10
excludefrom = list()
/datum/uplink_item/cyber_implants/mantis_kit
name = "'Naginata' Mantis Blades Kit"
@@ -956,7 +991,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
cost = 50
surplus = 0
can_discount = FALSE
excludefrom = list(UPLINK_TYPE_NUCLEAR)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_NINJA)
////////////////////////////////////////
// MARK: POINTLESS BADASSERY
@@ -965,6 +1000,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/badass
category = "(Pointless) Badassery"
surplus = 0
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/badass/pen
name = "Syndicate Fountain Pen"
@@ -1025,6 +1061,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
category = "Bundles and Telecrystals"
surplus = 0
can_discount = FALSE
excludefrom = list(UPLINK_TYPE_NINJA)
/datum/uplink_item/bundles_tc/telecrystal
name = "Raw Telecrystal"
+7 -7
View File
@@ -550,7 +550,7 @@
reference = "KMI"
item = /obj/item/bio_chip_implanter/krav_maga
cost = 25
uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/bio_chips/uplink/nuclear
name = "Nuclear Uplink Bio-chip"
@@ -661,34 +661,34 @@
/datum/uplink_item/stealthy_weapons/cqc/nuke
reference = "NCQC"
cost = 40
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT)
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT, UPLINK_TYPE_NINJA)
/datum/uplink_item/explosives/syndicate_bomb/nuke
reference = "NSB"
cost = 55
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT)
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT, UPLINK_TYPE_NINJA)
hijack_only = FALSE
/datum/uplink_item/explosives/emp_bomb/nuke
reference = "NSBEMP"
cost = 50
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT)
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT, UPLINK_TYPE_NINJA)
/datum/uplink_item/explosives/atmosfiregrenades/nuke
reference = "NAPG"
cost = 60
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT)
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT, UPLINK_TYPE_NINJA)
/datum/uplink_item/stealthy_tools/chameleon/nuke
reference = "NCHAM"
item = /obj/item/storage/box/syndie_kit/chameleon/nuke
cost = 30
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT)
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT, UPLINK_TYPE_NINJA)
/datum/uplink_item/stealthy_tools/syndigaloshes/nuke
reference = "NNSSS"
cost = 20
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT)
excludefrom = list(UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT, UPLINK_TYPE_NINJA)
/datum/uplink_item/explosives/detomatix/nuclear
desc = "When inserted into a personal digital assistant, this cartridge gives you five opportunities to detonate PDAs of crew members who have their message feature enabled. The concussive effect from the explosion will knock the recipient out for a short period, and deafen them for longer. It has a chance to detonate your PDA. This version comes with a program to toggle your nuclear shuttle blast doors remotely."
+1 -1
View File
@@ -3,7 +3,7 @@
category = "Special Offers"
can_discount = FALSE
surplus = 0
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_TRAITOR, UPLINK_TYPE_SIT, UPLINK_TYPE_NINJA)
/datum/uplink_item/special/autosurgeon
name = "Syndicate Autosurgeon"
+25 -25
View File
@@ -4,7 +4,7 @@
/datum/uplink_item/jobspecific
category = "Job Specific Tools"
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) // Stops the job specific category appearing for nukies
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA) // Stops the job specific category appearing for nukies
//Clown
/datum/uplink_item/jobspecific/clowngrenade
@@ -347,7 +347,7 @@
reference = "PP"
item = /obj/item/storage/box/syndie_kit/poisoner
cost = 10
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
job = list("Head of Personnel", "Quartermaster", "Cargo Technician", "Librarian", "Coroner", "Psychiatrist", "Virologist")
// Tarot card generator, librarian and Chaplain.
@@ -368,7 +368,7 @@
/datum/uplink_item/species_restricted
category = "Species Specific Gear"
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) // Stops the job specific category appearing for nukies
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA) // Stops the job specific category appearing for nukies
//skrell
/datum/uplink_item/species_restricted/lovepen
@@ -469,7 +469,7 @@
reference = "BLSG"
item = /obj/item/gun/projectile/automatic/shotgun/bulldog/traitor
cost = 50
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/ammo/bull_rubbershot
name = "Bulldog - 12g Rubbershot Magazine"
@@ -477,7 +477,7 @@
reference = "12BRU"
item = /obj/item/ammo_box/magazine/m12g/rubbershot
cost = 10
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/dangerous/guardian
name = "Holoparasites"
@@ -485,7 +485,7 @@
desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an organic host as a home base and source of fuel. \
The holoparasites are unable to incoporate themselves to changeling and vampire agents."
item = /obj/item/storage/box/syndie_kit/guardian/uplink
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
cost = 60
refund_path = /obj/item/guardiancreator/tech/choose
refundable = TRUE
@@ -506,7 +506,7 @@
reference = "SCS"
item = /obj/item/sleeping_carp_scroll
cost = 65
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
can_discount = FALSE
/datum/uplink_item/stealthy_weapons/bearserk
@@ -525,7 +525,7 @@
reference = "SBM"
item = /obj/item/storage/belt/military/traitor
cost = 10
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/stealthy_tools/frame
name = "F.R.A.M.E. PDA Cartridge"
@@ -535,7 +535,7 @@
telecrystals normally."
reference = "FRAME"
item = /obj/item/cartridge/frame
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
cost = 20
/datum/uplink_item/stealthy_tools/voice_modulator
@@ -589,7 +589,7 @@
reference = "CGM"
item = /obj/item/clothing/gloves/color/black/krav_maga
cost = 50
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/device_tools/extraction_beacon
name = "Extraction Flare"
@@ -597,7 +597,7 @@
reference = "EXTF"
item = /obj/item/wormhole_jaunter/extraction
limited_stock = 1
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/device_tools/hyper_medipen
name = "Hyper-regenerative Medipen"
@@ -615,7 +615,7 @@
item = /obj/item/thermal_drill/syndicate
cost = 5
surplus = 0 // I feel like its amazing for one objective and one objective only. Far too specific.
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/suits/modsuit
name = "Syndicate MODsuit"
@@ -628,7 +628,7 @@
item = /obj/item/mod/control/pre_equipped/traitor
cost = 30
surplus = 60 //I have upped the chance of modsuits from 40, as I do feel they are much more worthwhile with the base modsuit no longer being 8 tc, and the high armor values of the elite.
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/suits/modsuit_elite
name = "Syndicate Elite MODsuit"
@@ -638,7 +638,7 @@
item = /obj/item/mod/control/pre_equipped/traitor_elite
cost = 45 //45 to start, no holopara / ebow.
surplus = 60
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/// Nukies get Nuclear Uplink Bio-chip instead
/datum/uplink_item/bio_chips/uplink
@@ -647,7 +647,7 @@
reference = "UI"
item = /obj/item/bio_chip_implanter/uplink
cost = 70
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
surplus = 0
can_discount = FALSE
@@ -661,7 +661,7 @@
reference = "QLSC"
item = /obj/item/autosurgeon/organ/syndicate/oneuse/sensory_enhancer
cost = 40
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) //No, nukies do not get to dodge bullets.
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA) //No, nukies do not get to dodge bullets.
/datum/uplink_item/species_restricted/skinmonger
name = "Skinmonger Autoimplanter"
@@ -680,7 +680,7 @@
reference = "SPC"
item = /obj/item/deck/cards/syndicate
cost = 2
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
surplus = 40
/datum/uplink_item/badass/plasticbag
@@ -689,7 +689,7 @@
reference = "PBAG"
item = /obj/item/storage/bag/plasticbag
cost = 1
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/bundles_tc/contractor
name = "Syndicate Contractor Kit"
@@ -697,7 +697,7 @@
reference = "SCOK"
cost = 100
item = /obj/item/storage/box/syndie_kit/contractor
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/bundles_tc/contractor/spawn_item(turf/loc, obj/item/uplink/U)
var/datum/mind/mind = usr.mind
@@ -729,7 +729,7 @@
reference = "SYB"
item = /obj/item/beacon/syndicate/bundle
cost = 100
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
/datum/uplink_item/bundles_tc/surplus_crate
name = "Syndicate Surplus Crate"
@@ -737,7 +737,7 @@
reference = "SYSC"
cost = 100
item = /obj/item/storage/box/syndie_kit/bundle
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
var/crate_value = 250
uses_special_spawn = TRUE
@@ -768,7 +768,7 @@
reference = "SB"
item = /obj/item/beacon/syndicate/bomb
cost = 40
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
surplus = 0
hijack_only = TRUE
@@ -779,7 +779,7 @@
reference = "SBEMP"
item = /obj/item/beacon/syndicate/bomb/emp
cost = 40
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
surplus = 0
can_discount = FALSE
@@ -794,7 +794,7 @@
reference = "APG"
item = /obj/item/storage/box/syndie_kit/atmosfiregrenades
cost = 50
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)
surplus = 0
hijack_only = TRUE
@@ -822,4 +822,4 @@
reference = "DEPC"
item = /obj/item/cartridge/syndicate
cost = 30
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST, UPLINK_TYPE_NINJA)