This commit is contained in:
Seris02
2019-12-24 22:27:41 +08:00
2635 changed files with 78841 additions and 160362 deletions
+127 -85
View File
@@ -1,13 +1,9 @@
GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/proc/get_uplink_items(var/datum/game_mode/gamemode = null, allow_sales = TRUE, allow_restricted = TRUE)
var/list/filtered_uplink_items = list()
/proc/get_uplink_items(datum/game_mode/gamemode, allow_sales = TRUE, allow_restricted = TRUE)
var/list/filtered_uplink_items = GLOB.uplink_categories.Copy() // list of uplink categories without associated values.
var/list/sale_items = list()
for(var/path in GLOB.uplink_items)
var/datum/uplink_item/I = new path
if(!I.item)
continue
if(I.include_modes.len)
if(!gamemode && SSticker.mode && !(SSticker.mode.type in I.include_modes))
continue
@@ -23,9 +19,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
if (I.restricted && !allow_restricted)
continue
if(!filtered_uplink_items[I.category])
filtered_uplink_items[I.category] = list()
filtered_uplink_items[I.category][I.name] = I
LAZYSET(filtered_uplink_items[I.category], I.name, I)
if(I.limited_stock < 0 && !I.cant_discount && I.item && I.cost > 1)
sale_items += I
if(allow_sales)
@@ -45,9 +40,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
A.desc += " Normally costs [initial(A.cost)] TC. All sales final. [pick(disclaimer)]"
A.item = I.item
if(!filtered_uplink_items[A.category])
filtered_uplink_items[A.category] = list()
filtered_uplink_items[A.category][A.name] = A
LAZYSET(filtered_uplink_items[A.category], A.name, A)
for(var/category in filtered_uplink_items)
if(!filtered_uplink_items[category]) //empty categories with no associated uplink item. Remove.
filtered_uplink_items -= category
return filtered_uplink_items
@@ -106,16 +104,77 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
to_chat(user, "[A] materializes onto the floor.")
return A
//Discounts (dynamically filled above)
/datum/uplink_item/discounts
category = "Discounted Gear"
/*
Uplink Categories:
Due to how the typesof() in-built byond proc works, it should be kept in mind
the order categories are displayed in the uplink UI is same to the order they are loaded in the code.
I trust no extra filter is needed as long as they are all contained within the following lines.
When adding new uplink categories, please keep them separate from their sub paths here and without set item.
Failure to comply may result in the new categories being listed at the bottom of the UI.
*/
/datum/uplink_item/holiday
category = "Holiday"
//All bundles and telecrystals
/datum/uplink_item/bundles_TC
category = "Bundles and Telecrystals"
surplus = 0
cant_discount = TRUE
/datum/uplink_item/dangerous
category = "Conspicuous and Dangerous Weapons"
/datum/uplink_item/stealthy_weapons
category = "Stealthy and Inconspicuous Weapons"
/datum/uplink_item/ammo
category = "Ammunition"
surplus = 40
/datum/uplink_item/explosives
category = "Grenades and Explosives"
/datum/uplink_item/support
category = "Support and Mechanized Exosuits"
surplus = 0
include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/suits
category = "Space Suits, Hardsuits and Clothing"
surplus = 40
/datum/uplink_item/stealthy_tools
category = "Stealth and Camouflage Items"
/datum/uplink_item/device_tools
category = "Devices and Tools"
/datum/uplink_item/implants
category = "Implants"
surplus = 50
/datum/uplink_item/role_restricted
category = "Role-Restricted"
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
surplus = 0
/datum/uplink_item/badass
category = "(Pointless) Badassery"
surplus = 0
//Discounts (dynamically filled above)
/datum/uplink_item/discounts
category = "Discounted Gear"
/*
Uplink Items:
Unlike categories, uplink item entries are automatically sorted alphabetically on server init in a global list,
When adding new entries to the file, please keep them sorted by category.
*/
//All bundles and telecrystals
/datum/uplink_item/bundles_TC/chemical
name = "Bioterror bundle"
desc = "For the madman: Contains a handheld Bioterror chem sprayer, a Bioterror foam grenade, a box of lethal chemicals, a dart pistol, \
@@ -288,8 +347,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
cost = 20
// Dangerous Items
/datum/uplink_item/dangerous
category = "Conspicuous and Dangerous Weapons"
/datum/uplink_item/dangerous/pistol
name = "Stechkin Pistol"
@@ -302,7 +359,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/dangerous/revolver
name = "Syndicate Revolver"
desc = "A brutally simple syndicate revolver that fires .357 Magnum rounds and has 7 chambers."
item = /obj/item/gun/ballistic/revolver/syndie
item = /obj/item/gun/ballistic/revolver
cost = 13
surplus = 50
exclude_modes = list(/datum/game_mode/nuclear/clown_ops)
@@ -544,8 +601,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
surplus = 10
// Stealthy Weapons
/datum/uplink_item/stealthy_weapons
category = "Stealthy and Inconspicuous Weapons"
/datum/uplink_item/stealthy_weapons/combatglovesplus
name = "Combat Gloves Plus"
@@ -564,12 +619,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
cost = 13
surplus = 0
/datum/uplink_item/dangerous/phantomthief
name = "Syndicate Mask"
desc = "A cheap plastic mask fitted with an adrenaline autoinjector, which can be used by simply tensing your muscles"
item = /obj/item/clothing/glasses/phantomthief/syndicate
cost = 2
/datum/uplink_item/stealthy_weapons/dart_pistol
name = "Dart Pistol"
desc = "A miniaturized version of a normal syringe gun. It is very quiet when fired and can fit into any \
@@ -680,9 +729,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
cost = 6
// Ammunition
/datum/uplink_item/ammo
category = "Ammunition"
surplus = 40
/datum/uplink_item/ammo/pistol
name = "10mm Handgun Magazine"
@@ -748,7 +794,7 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
/datum/uplink_item/ammo/shotgun/meteor
name = "12g Meteorslug Shells"
desc = "An alternative 8-round meteorslug magazine for use in the Bulldog shotgun. \
Great for blasting airlocks off their frames and knocking down enemies."
Great for blasting airlocks off their frames and knocking down enemies."
item = /obj/item/ammo_box/magazine/m12g/meteor
include_modes = list(/datum/game_mode/nuclear)
@@ -774,12 +820,17 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
/datum/uplink_item/ammo/revolver
name = ".357 Speed Loader"
desc = "A speed loader that contains seven additional .357 Magnum rounds; usable with the Syndicate revolver. \
desc = "A speed loader that contains seven additional .357 Magnum rounds, and can be further reloaded with individual bullets; usable with the Syndicate revolver. \
For when you really need a lot of things dead."
item = /obj/item/ammo_box/a357
cost = 4
cost = 3
exclude_modes = list(/datum/game_mode/nuclear/clown_ops)
illegal_tech = FALSE
/datum/uplink_item/ammo/revolver/ap
name = ".357 Armor Piercing Speed Loader"
desc = "A speed loader that contains seven additional .357 AP Magnum rounds; usable with the Syndicate revolver. \
Cuts through like a hot knife through butter."
item = /obj/item/ammo_box/a357/ap
/datum/uplink_item/ammo/a40mm
name = "40mm Grenade"
@@ -926,8 +977,7 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
cost = 1
include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/explosives
category = "Grenades and Explosives"
//Grenades and Explosives
/datum/uplink_item/explosives/bioterrorfoam
name = "Bioterror Foam Grenade"
@@ -1084,10 +1134,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
//Support and Mechs
/datum/uplink_item/support
category = "Support and Mechanized Exosuits"
surplus = 0
include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/support/clown_reinforcement
name = "Clown Reinforcements"
@@ -1126,6 +1172,16 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
cost = 35
restricted = TRUE
/datum/uplink_item/support/reinforcement/saboteur_borg
name = "Syndicate Saboteur Cyborg"
desc = "A streamlined engineering cyborg, equipped with covert modules. Also incapable of leaving the welder in the shuttle. \
Aside from regular Engineering equipment, it comes with a special destination tagger that lets it traverse disposals networks. \
Its chameleon projector lets it disguise itself as a Nanotrasen cyborg, on top it has thermal vision and a pinpointer."
item = /obj/item/antag_spawner/nuke_ops/borg_tele/saboteur
refundable = TRUE
cost = 35
restricted = TRUE
/datum/uplink_item/support/gygax
name = "Dark Gygax Exosuit"
desc = "A lightweight exosuit, painted in a dark scheme. Its speed and equipment selection make it excellent \
@@ -1148,8 +1204,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
cost = 140
// Stealth Items
/datum/uplink_item/stealthy_tools
category = "Stealth and Camouflage Items"
/datum/uplink_item/stealthy_tools/agent_card
name = "Agent Identification Card"
@@ -1259,17 +1313,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
item = /obj/item/jammer
cost = 5
/*/datum/uplink_item/stealthy_tools/syndi_borer
name = "Syndicate Brain Slug"
desc = "A small cortical borer, modified to be completely loyal to the owner. \
Genetically infertile, these brain slugs can assist medically in a support role, or take direct action \
to assist their host."
item = /obj/item/antag_spawner/syndi_borer
refundable = TRUE
cost = 10
surplus = 20 //Let's not have this be too common
exclude_modes = list(/datum/game_mode/nuclear) */
/datum/uplink_item/stealthy_tools/smugglersatchel
name = "Smuggler's Satchel"
desc = "This satchel is thin enough to be hidden in the gap between plating and tiling; great for stashing \
@@ -1280,9 +1323,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
surplus = 30
//Space Suits and Hardsuits
/datum/uplink_item/suits
category = "Space Suits, Hardsuits and Clothing"
surplus = 40
/datum/uplink_item/suits/turtlenck
name = "Tactical Turtleneck"
@@ -1357,8 +1397,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
exclude_modes = list()
// Devices and Tools
/datum/uplink_item/device_tools
category = "Devices and Tools"
/datum/uplink_item/device_tools/emag
name = "Cryptographic Sequencer"
@@ -1373,6 +1411,12 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
item = /obj/item/emagrecharge
cost = 2
/datum/uplink_item/device_tools/phantomthief
name = "Syndicate Mask"
desc = "A cheap plastic mask fitted with an adrenaline autoinjector, which can be used by simply tensing your muscles"
item = /obj/item/clothing/glasses/phantomthief/syndicate
cost = 2
/datum/uplink_item/device_tools/cutouts
name = "Adaptive Cardboard Cutouts"
desc = "These cardboard cutouts are coated with a thin material that prevents discoloration and makes the images on them appear more lifelike. \
@@ -1536,7 +1580,7 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
desc = "This first aid kit is a suspicious brown and red. Included is a combat stimulant injector \
for rapid healing, a medical night vision HUD for quick identification of injured personnel, \
and other supplies helpful for a field medic."
item = /obj/item/storage/firstaid/tactical
item = /obj/item/storage/firstaid/tactical/nukeop
cost = 4
include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
@@ -1550,10 +1594,17 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
/datum/uplink_item/device_tools/surgerybag_adv
name = "Advanced Syndicate Surgery Duffel Bag"
desc = "The Syndicate surgery duffel bag is a toolkit containing all advanced surgery tools, surgical drapes, \
a Syndicate brand MMI, a straitjacket, a muzzle, and a full Syndicate Combat Medic Kit."
a Syndicate brand MMI, a straitjacket, a muzzle, and an outdated, yet still useful Combat Medic Kit."
item = /obj/item/storage/backpack/duffelbag/syndie/surgery_adv
cost = 10
/datum/uplink_item/device_tools/brainwash_disk
name = "Brainwashing Surgery Program"
desc = "A disk containing the procedure to perform a brainwashing surgery, allowing you to implant an objective onto a target. \
Insert into an Operating Console to enable the procedure."
item = /obj/item/disk/surgery/brainwashing
cost = 3
/datum/uplink_item/device_tools/encryptionkey
name = "Syndicate Encryption Key"
desc = "A key that, when inserted into a radio headset, allows you to listen to all station department channels \
@@ -1592,9 +1643,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
// Implants
/datum/uplink_item/implants
category = "Implants"
surplus = 50
/datum/uplink_item/implants/adrenal
name = "Adrenal Implant"
@@ -1691,10 +1739,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
include_modes = list(/datum/game_mode/nuclear)
// Role-specific items
/datum/uplink_item/role_restricted
category = "Role-Restricted"
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
surplus = 0
/datum/uplink_item/role_restricted/ancient_jumpsuit
name = "Ancient Jumpsuit"
@@ -1728,14 +1772,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
cost = 12
restricted_roles = list("Research Director", "Scientist", "Roboticist")
/datum/uplink_item/role_restricted/brainwash_disk
name = "Brainwashing Surgery Program"
desc = "A disk containing the procedure to perform a brainwashing surgery, allowing you to implant an objective onto a target. \
Insert into an Operating Console to enable the procedure."
item = /obj/item/disk/surgery/brainwashing
restricted_roles = list("Medical Doctor", "Roboticist")
cost = 3
/datum/uplink_item/role_restricted/clown_bomb
name = "Clown Bomb"
desc = "The Clown bomb is a hilarious device capable of massive pranks. It has an adjustable timer, \
@@ -1797,6 +1833,21 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
cost = 4
restricted_roles = list("Cook", "Botanist", "Clown", "Mime")
/datum/uplink_item/role_restricted/strange_seeds
name = "Pack of strange seeds"
desc = "Mysterious seeds as strange as their name implies. Spooky."
item = /obj/item/seeds/random
cost = 2
restricted_roles = list("Botanist")
illegal_tech = FALSE
/datum/uplink_item/role_restricted/strange_seeds_10pack
name = "Pack of strange seeds x10"
desc = "Mysterious seeds as strange as their name implies. Spooky. These come in bulk"
item = /obj/item/storage/box/strange_seeds_10pack
cost = 20
restricted_roles = list("Botanist")
/datum/uplink_item/role_restricted/ez_clean_bundle
name = "EZ Clean Grenade Bundle"
desc = "A box with three cleaner grenades using the trademark Waffle Co. formula. Serves as a cleaner and causes acid damage to anyone standing nearby. \
@@ -1907,10 +1958,7 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
item = /obj/item/gun/energy/emitter
restricted_roles = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
// Pointless
/datum/uplink_item/badass
category = "(Pointless) Badassery"
surplus = 0
// Pointless (Badassery)
/datum/uplink_item/badass/costumes/obvious_chameleon
name = "Broken Chameleon Kit"
@@ -1964,12 +2012,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
item = /obj/item/storage/secure/briefcase/syndie
cost = 1
/datum/uplink_item/badass/phantomthief
name = "Syndicate Mask"
desc = "A cheap plastic mask fitted with an adrenaline autoinjector, which can be used by simply tensing your muscles"
item = /obj/item/clothing/glasses/phantomthief/syndicate
cost = 2
/datum/uplink_item/badass/syndiecards
name = "Syndicate Playing Cards"
desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, \