Splits telecrystals into bluecrystals and telecrystals. (#16380)

* bluecrystals 1

* Splits telecrystals into bluecrystals and telecrystals.

* fixes

* dans ma tete ce n'est pas evident

* c'est toujours trop beau pour etre vrai

* on ne peut toucher le ciel des doigts

* thanks lily

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
Matt Atlas
2023-06-18 14:43:49 +02:00
committed by GitHub
parent 34df7e093c
commit 316a80c231
36 changed files with 566 additions and 320 deletions

View File

@@ -64,6 +64,7 @@
#define MODE_GOLEM "golem"
#define DEFAULT_TELECRYSTAL_AMOUNT 20
#define DEFAULT_BLUECRYSTAL_AMOUNT 15
// Defines (NOT FLAGS) for making secret, random, and mixed secret less snowflake-string
// and number dependant.

View File

@@ -49,7 +49,9 @@
return sorttext(b.last_name, a.last_name)
/proc/cmp_uplink_item(datum/uplink_item/a, datum/uplink_item/b)
return b.cost(INFINITY) - a.cost(INFINITY)
var/total_crystal_cost_a = a.telecrystal_cost(INFINITY) + a.bluecrystal_cost(INFINITY)
var/total_crystal_cost_b = b.telecrystal_cost(INFINITY) + b.bluecrystal_cost(INFINITY)
return total_crystal_cost_b - total_crystal_cost_a
/proc/cmp_access(datum/access/a, datum/access/b)
return sorttext("[b.access_type][b.desc]", "[a.access_type][a.desc]")

View File

@@ -427,11 +427,12 @@
var/obj/item/device/uplink/hidden/suplink = find_syndicate_uplink()
var/crystals
if (suplink)
crystals = suplink.uses
crystals = input("Amount of telecrystals for [key]","Operative uplink", crystals) as null|num
crystals = suplink.telecrystals + suplink.bluecrystals
crystals = input("Amount of telecrystals and bluecrystals for [key]","Operative uplink", crystals) as null|num
if (!isnull(crystals))
if (suplink)
suplink.uses = crystals
suplink.telecrystals = crystals
suplink.bluecrystals = crystals
else if (href_list["obj_announce"])
var/obj_count = 1
@@ -570,4 +571,4 @@
/mob/living/silicon/robot/combat/mind_initialize()
..()
mind.assigned_role = "Combat Robot"
mind.special_role = "Mercenary"
mind.special_role = "Mercenary"

View File

@@ -38,7 +38,8 @@
var/obj/item/device/radio/uplink/U = H.r_store
if(istype(U))
U.hidden_uplink.uplink_owner = H.mind
U.hidden_uplink.uses = uplink_uses
U.hidden_uplink.telecrystals = uplink_uses
U.hidden_uplink.bluecrystals = round(uplink_uses / 2)
U.hidden_uplink.nanoui_menu = 1
/datum/outfit/admin/syndicate/get_id_access()

View File

@@ -2,7 +2,7 @@
* Ammunition *
*************/
/datum/uplink_item/item/ammo
item_cost = 1
telecrystal_cost = 1
category = /datum/uplink_category/ammunition
/datum/uplink_item/item/ammo/mc9mm
@@ -22,7 +22,7 @@
/datum/uplink_item/item/ammo/submachinegundrum
name = "Submachine Gun Drum Magazine (.45)"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/ammo_magazine/submachinedrum
desc = "Contains fifty rounds of .45 bullets, for use with the vintage submachine gun."
@@ -43,7 +43,7 @@
/datum/uplink_item/item/ammo/plasma_mag
name = "Plasma Shotgun Magazine"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/ammo_magazine/plasma
desc = "Contains ten plasma cells."
@@ -54,13 +54,13 @@
/datum/uplink_item/item/ammo/carbine_mag
name = "5.56 carbine magazine"
item_cost = 1
path = /obj/item/ammo_magazine/a556/carbine
telecrystal_cost = 1
path = /obj/item/ammo_magazine/a556/carbine
desc = "Contains 15 rounds of 5.56."
/datum/uplink_item/item/ammo/lmg_drum
name = "7.62 LMG drum"
item_cost = 5
telecrystal_cost = 5
path = /obj/item/ammo_magazine/a762
desc = "Contains 50 rounds of 7.62."
@@ -71,60 +71,60 @@
/datum/uplink_item/item/ammo/super_heavy
name = "K2557 Magazine"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/ammo_magazine/super_heavy
desc = "A spare magazine, for the super heavy K2557 pistol."
/datum/uplink_item/item/ammo/shotgun_slug
name = "Shotgun Slug"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/ammo_casing/shotgun
desc = "A shotgun slug."
/datum/uplink_item/item/ammo/tungsten_ammo_box
name = "Tungsten Ammo Box"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/ammo_magazine/gauss
desc = "A tungsten ammo box."
/datum/uplink_item/item/ammo/slug_magazine
name = "Slug Magazine"
item_cost = 8
telecrystal_cost = 8
path = /obj/item/ammo_magazine/assault_shotgun
desc = "A magazine for an assault shotgun, loaded with slug shells."
/datum/uplink_item/item/ammo/buckshot_magazine
name = "Buckshot Magazine"
item_cost = 4
telecrystal_cost = 4
path = /obj/item/ammo_magazine/assault_shotgun/shells
desc = "A magazine for an assault shotgun, loaded with buckshot shells."
/datum/uplink_item/item/ammo/ar_ammo
name = "7.62 Assault Rifle magazine"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/ammo_magazine/c762
desc = "A magazine for an assault rifle."
/datum/uplink_item/item/ammo/sniper_ammo
name = "7.62 Sniper Magazine"
item_cost = 4
telecrystal_cost = 4
path = /obj/item/ammo_magazine/d762
desc = "A magazine for a 7.62 sniper rifle."
/datum/uplink_item/item/ammo/bullpup_magazine
name = "5.56 Rifle Magazine"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/ammo_magazine/a556
desc = "A magazine for a 5.56 rifle."
/datum/uplink_item/item/ammo/uzi_magazine
name = ".45 Autopistol Magazine"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/ammo_magazine/c45uzi
desc = "A magazine for a .45 automatic pistol."
/datum/uplink_item/item/ammo/deagle_magazine
name = ".50 Pistol Magazine"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/ammo_magazine/a50
desc = "A magazine for a .50 pistol."
desc = "A magazine for a .50 pistol."

View File

@@ -12,7 +12,8 @@
/datum/uplink_item/abstract/announcements/fake_centcom/New()
..()
name = "[current_map.boss_name] Update Announcement"
item_cost = 5
telecrystal_cost = 5
bluecrystal_cost = 5
desc = "Causes a falsified [current_map.boss_name] Update. Triggers immediately after supplying additional data."
/datum/uplink_item/abstract/announcements/fake_centcom/extra_args(var/mob/user)
@@ -32,7 +33,7 @@
name = "Crew Arrival Announcement/Records"
desc = "Creates a fake crew arrival announcement as well as fake crew records, using your current appearance (including held items!) and worn id card. Trigger with care!"
antag_roles = list(MODE_MERCENARY)
item_cost = 4
telecrystal_cost = 4
/datum/uplink_item/abstract/announcements/fake_crew_arrival/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user, var/list/args)
if(!user)
@@ -86,7 +87,7 @@
/datum/uplink_item/abstract/announcements/fake_ion_storm
name = "Ion Storm Announcement"
desc = "Interferes with the station's ion sensors. Triggers immediately upon investment."
item_cost = 2
telecrystal_cost = 2
/datum/uplink_item/abstract/announcements/fake_ion_storm/get_goods(var/obj/item/device/uplink/U, var/loc)
var/static/cooldown = 0
@@ -103,7 +104,7 @@
/datum/uplink_item/abstract/announcements/fake_radiation
name = "Radiation Storm Announcement"
desc = "Interferes with the station's radiation sensors. Triggers immediately upon investment."
item_cost = 3
telecrystal_cost = 3
/datum/uplink_item/abstract/announcements/fake_radiation/get_goods(var/obj/item/device/uplink/U, var/loc)
var/static/cooldown = 0

View File

@@ -6,7 +6,7 @@
/datum/uplink_item/item/badassery/balloon
name = "For showing that You Are The BOSS (Useless Balloon)"
item_cost = DEFAULT_TELECRYSTAL_AMOUNT
telecrystal_cost = DEFAULT_TELECRYSTAL_AMOUNT
path = /obj/item/toy/balloon/syndicate
/datum/uplink_item/item/badassery/balloon/NT
@@ -16,7 +16,7 @@
/datum/uplink_item/item/badassery/crayonmre
name = "Crayon MRE"
desc = "An exceptionally robust MRE."
item_cost = DEFAULT_TELECRYSTAL_AMOUNT
telecrystal_cost = DEFAULT_TELECRYSTAL_AMOUNT
path = /obj/item/storage/box/fancy/mre/menu11/special
/**************
@@ -27,22 +27,22 @@
desc = "Buys you one random item."
/datum/uplink_item/item/badassery/random_one/buy(var/obj/item/device/uplink/U, var/mob/user)
var/datum/uplink_item/item = default_uplink_selection.get_random_item(U.uses)
var/datum/uplink_item/item = default_uplink_selection.get_random_item(U.telecrystals)
return item.buy(U, user)
/datum/uplink_item/item/badassery/random_one/can_buy(obj/item/device/uplink/U)
return default_uplink_selection.get_random_item(U.uses, U) != null
/datum/uplink_item/item/badassery/random_one/can_buy_telecrystals(obj/item/device/uplink/U)
return default_uplink_selection.get_random_item(U.telecrystals, U) != null
/datum/uplink_item/item/badassery/random_many
name = "Random Items"
desc = "Buys you as many random items you can afford. Convenient packaging NOT included."
/datum/uplink_item/item/badassery/random_many/cost(var/telecrystals)
/datum/uplink_item/item/badassery/random_many/telecrystal_cost(var/telecrystals)
return max(1, telecrystals)
/datum/uplink_item/item/badassery/random_many/get_goods(var/obj/item/device/uplink/U, var/loc)
var/list/bought_items = list()
for(var/datum/uplink_item/UI in get_random_uplink_items(U, U.uses, loc))
for(var/datum/uplink_item/UI in get_random_uplink_items(U, U.telecrystals, loc))
UI.purchase_log(U)
var/obj/item/I = UI.get_goods(U, loc)
if(istype(I))
@@ -60,7 +60,7 @@
/datum/uplink_item/item/badassery/surplus
name = "Surplus Crate"
antag_roles = list(MODE_MERCENARY)
item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 4
telecrystal_cost = DEFAULT_TELECRYSTAL_AMOUNT * 4
var/item_worth = DEFAULT_TELECRYSTAL_AMOUNT * 6
var/icon

View File

@@ -5,41 +5,43 @@
/datum/uplink_item/item/bioweapons/random_toxin
name = "Random Toxins Kit"
desc = "A kit that contains 3 vials containing random toxins. Comes with a syringe!"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/storage/box/syndie_kit/toxin
/datum/uplink_item/item/bioweapons/nerveworms_kit
name = "Parasitic Worms Kit - Nerve Fluke"
desc = "Contains the eggs of a Nerve Fluke. Non-lethal but incapacitating."
item_cost = 3
telecrystal_cost = 3
path = /obj/item/storage/box/syndie_kit/nerveworms
/datum/uplink_item/item/bioweapons/heartworms_kit
name = "Parasitic Worms Kit - Heart Fluke"
desc = "Contains the eggs of a Heart Fluke. Lethal if left untreated."
item_cost = 5
telecrystal_cost = 5
path = /obj/item/storage/box/syndie_kit/heartworms
/datum/uplink_item/item/bioweapons/greimorian_eggs
name = "Greimorian Eggs"
desc = "A cluster of greimorian eggs. (They will be planted at your feet on-purchase and CANNOT be moved, so make sure you're where you want them to be)"
item_cost = 4
telecrystal_cost = 4
path = /obj/effect/spider/eggcluster
/datum/uplink_item/item/bioweapons/radsuit
name = "Radiation Suit"
desc = "A kit containing a radiation suit. Complete with a geiger counter and one anti-radiation tablet."
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/box/syndie_kit/radsuit
/datum/uplink_item/item/bioweapons/dirtybomb
name = "Dirty Bomb"
desc = "A small explosive laced with radium. The explosion is small, but the radioactive will affect a large area for a while (10 minutes approx)."
item_cost = 4
telecrystal_cost = 4
path = /obj/item/plastique/dirty
/datum/uplink_item/item/bioweapons/syringe_gun
name = "Syringe Gun Kit"
desc = "A kit containing a syringe gun and 3 disassembled darts. Fill a syringe, add it to a dart, then load into the rifle."
item_cost = 3
telecrystal_cost = 3
bluecrystal_cost = 3
path = /obj/item/storage/box/syndie_kit/syringe_gun

View File

@@ -3,24 +3,28 @@
/datum/uplink_item/item/corporate_equipment/suit/zavodskoi
name = "Revenant Combat Suit"
item_cost = 5
telecrystal_cost = 5
bluecrystal_cost = 5
path = /obj/structure/closet/crate/gear_loadout/zavodskoi
desc = "A full spaceworthy kit of a Zavodskoi Interstellar Revenant-type combat suit. Heavily resistant against fast projectiles and backpack-portable. Only wearable by Humans and Humanoid IPCs."
desc = "A full spaceworthy kit of a Zavodskoi Interstellar Revenant-type combat suit. Only wearable by Humans and Humanoid IPCs. This voidsuit is just as armoured as a mercenary voidsuit, being a bit worse than heavy armour."
/datum/uplink_item/item/corporate_equipment/suit/zenghu
name = "Dragon Biohazard Control Suit"
item_cost = 5
telecrystal_cost = 5
bluecrystal_cost = 5
path = /obj/structure/closet/crate/gear_loadout/zenghu
desc = "A full spaceworthy kit of a Zeng-Hu Pharmaceuticals Dragon-type biohazard containment suit. Entirely resistant against radiation in most circumstances. Only wearable by Humans and Humanoid IPCs."
desc = "A full spaceworthy kit of a Zeng-Hu Pharmaceuticals Dragon-type biohazard containment suit. Only wearable by Humans and Humanoid IPCs. This voidsuit is just as armoured as a mercenary voidsuit, being a bit worse than heavy armour.."
/datum/uplink_item/item/corporate_equipment/suit/hephaestus
name = "Caiman Drop Suit"
item_cost = 5
telecrystal_cost = 5
bluecrystal_cost = 5
path = /obj/structure/closet/crate/gear_loadout/hephaestus
desc = "A full spaceworthy kit of a Hephaestus Industries Caiman-type terraforming suit. Very resistant against slow-moving blunt force, but heavy. Only wearable by Humans and Humanoid IPCs."
desc = "A full spaceworthy kit of a Hephaestus Industries Caiman-type terraforming suit. Only wearable by Humans and Humanoid IPCs. This voidsuit is just as armoured as a mercenary voidsuit, being a bit worse than heavy armour.."
/datum/uplink_item/item/corporate_equipment/suit/einstein
name = "Banshee Infiltration Suit"
item_cost = 5
telecrystal_cost = 5
bluecrystal_cost = 5
path = /obj/structure/closet/crate/gear_loadout/einstein
desc = "A full spaceworthy kit of an Einstein Engines Banshee-type infiltration suit. Resistant against small arms, but made of paper against anything else. Only wearable by Humans and Humanoid IPCs."
desc = "A full spaceworthy kit of an Einstein Engines Banshee-type infiltration suit. Only wearable by Humans and Humanoid IPCs. This voidsuit is just as armoured as a mercenary voidsuit, being a bit worse than heavy armour.."

View File

@@ -6,79 +6,87 @@
/datum/uplink_item/item/tools/toolbox
name = "Fully Loaded Toolbox"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/toolbox/syndicate
desc = "A suspiciously painted toolbox, filled with most of the odds and ends a good-for-nothing traitor would need."
/datum/uplink_item/item/tools/toolbelt
name = "Fully Loaded Tool-belt"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/belt/utility/very_full
desc = "A fully loaded tool-belt even NanoTrasen's top Chief Engineer would be proud to wear."
/datum/uplink_item/item/tools/money
name = "Operations Funding"
item_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/secure/briefcase/money
desc = "A briefcase with 10,000 untraceable credits for funding your sneaky activities."
/datum/uplink_item/item/tools/firingpin //todo, make this a special syndicate one instead of just a normal one?
name = "Firing Pin"
item_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/firing_pin
desc = "A Syndicate-branded Firing pin - It should be compatible with nearly every weapon onboard."
/datum/uplink_item/item/tools/surge
name = "IPC surge prevention module"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/stack/nanopaste/surge
desc = "An internal module that allow operative IPC frames to be protected from EMP pulse. The device has limited use that varies between two to five pulses"
/datum/uplink_item/item/tools/clerical
name = "Morphic Clerical Kit"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/storage/box/syndie_kit/clerical
/datum/uplink_item/item/tools/plastique
name = "C-4 (Destroys walls)"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/plastique
desc = "A single block of C4, enough to breach any wall."
/datum/uplink_item/item/tools/heavy_vest
name = "Heavy Armor Kit"
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/storage/box/syndie_kit/armor
desc = "A heavy armor set consisting of a full kit. Not EVA capable."
/datum/uplink_item/item/tools/encryptionkey_radio
name = "Encrypted Radio Channel Key"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/encryptionkey/syndicate
desc = "An encryption key for use in a headset, intercepts all frequencies and grants access to a secure syndicate frequency."
/datum/uplink_item/item/tools/encryptionkey_binary
name = "Binary Translator Key"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/encryptionkey/binary
desc = "An encryption key for use in a headset, capable of intercepting stationbound binary communications."
/datum/uplink_item/item/tools/emag
name = "Cryptographic Sequencer"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/card/emag
/datum/uplink_item/item/tools/personal_shield
name = "Personal Shield"
desc = "A personal shield that, when kept in your hand and activated, will protect its user from five projectile shots. \
This can only be bought once."
item_cost = 1
telecrystal_cost = 1
item_limit = 1
path = /obj/item/device/personal_shield
/datum/uplink_item/item/tools/hacking_tool
name = "Door Hacking Tool"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/multitool/hacktool
desc = "Appears and functions as a standard multitool until the mode is toggled by applying a screwdriver appropriately. \
When in hacking mode this device will grant full access to any standard airlock within 7 to 13 seconds. \
@@ -86,136 +94,159 @@
/datum/uplink_item/item/tools/space_suit
name = "Space Suit"
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/storage/box/syndie_kit/space
/datum/uplink_item/item/tools/thermal
name = "Thermal Imaging Glasses"
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/clothing/glasses/thermal/syndi
/datum/uplink_item/item/tools/powersink
name = "Powersink (DANGER!)"
item_cost = 6
telecrystal_cost = 6
bluecrystal_cost = 6
path = /obj/item/device/powersink
/datum/uplink_item/item/tools/ai_module
name = "Hacked AI Upload Module"
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/aiModule/syndicate
desc = "A hacked AI law module able to subvert a shipbound intelligence when appropriately configured. It must be installed through a special upload console \
-- a circuitboard for which can be found in the secure technical storage areas of most SCC facilities."
/datum/uplink_item/item/tools/supply_beacon
name = "Hacked Supply Beacon (DANGER!)"
item_cost = 4
telecrystal_cost = 4
bluecrystal_cost = 4
path = /obj/item/supply_beacon
desc = "A hacked supply beacon that will call in a random supply pod when deployed and activated. Steer clear of the area afterwards."
/datum/uplink_item/item/tools/advancedpinpointer
name = "Advanced pinpointer"
item_cost = 5
telecrystal_cost = 5
bluecrystal_cost = 5
path = /obj/item/pinpointer/advpinpointer
desc = "An advanced pinpointer that can find any target with DNA along with various other items."
/datum/uplink_item/item/tools/combat_robot
name = "Combat Robot Teleporter"
item_cost = 20
telecrystal_cost = 20
path = /obj/item/antag_spawner/combat_robot
/datum/uplink_item/item/tools/thermal_drill
name = "Thermal Safe Drill"
item_cost = 3
telecrystal_cost = 3
bluecrystal_cost = 3
path = /obj/item/thermal_drill
/datum/uplink_item/item/tools/heatpatch
name = "HUDPatch, Thermal"
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/clothing/glasses/eyepatch/hud/thermal
/datum/uplink_item/item/tools/nightpatch
name = "HUDPatch, Night-Vision"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/clothing/glasses/eyepatch/hud/night
/datum/uplink_item/item/tools/aviatortherm
name = "Aviators, Thermal"
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/clothing/glasses/thermal/aviator
desc = "A pair of thermal-vision glasses disguised as aviator shades."
/datum/uplink_item/item/tools/aviatornight
name = "Aviators, Night-Vision"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/clothing/glasses/night/aviator
desc = "A pair of night-vision glasses disguised as aviator shades."
/datum/uplink_item/item/tools/suit_cooling_unit
name = "Portable suit cooling unit"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/suit_cooling_unit
desc = "A suit cooling unit with a high capacity power cell."
/datum/uplink_item/item/tools/keypad
name = "Keypad Mag-Lock"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/magnetic_lock/keypad
desc = "A maglock that requires the user to enter a passcode to lock and then later unlock."
/datum/uplink_item/item/tools/personal_ai
name = "Personal AI"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/paicard
desc = "An unmodified personal AI that can assist you in your ventures."
/datum/uplink_item/item/tools/pin_extractor
name = "Firing Pin Extractor"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/pin_extractor
desc = "An extractor tool capable of extracting firing pins from most firearms."
/datum/uplink_item/item/tools/radio_jammer
name = "Radio Jammer"
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/device/radiojammer
desc = "A small jammer that can fit inside a pocket. Capable of disrupting nearby radios and hivenet transmitters."
/datum/uplink_item/item/tools/jetpack
name = "Jetpack"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/tank/jetpack/oxygen
/datum/uplink_item/item/tools/electropack
name = "Electropack"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/radio/electropack
desc = "A backpack wired with electrodes. Sync up with a signaller, attach to an unwilling host and pulse the signal to shock them."
/datum/uplink_item/item/tools/ammo_display
name = "Holographic Ammo Display"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/ammo_display
/datum/uplink_item/item/tools/mesons_glasses
name = "Mesons Scanners"
desc = "These glasses make use of meson-scanning technology to allow the wearer to see through solid walls and floors."
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/clothing/glasses/meson
/datum/uplink_item/item/tools/materials_glasses
name = "Optical Material Scanner"
desc = "These glasses make use of scanning technology to allow the wearer to see objects through solid walls and floors."
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/clothing/glasses/material
/datum/uplink_item/item/tools/earmuff_headset
name = "Earmuff Headset"
desc = "This set of earmuffs has a secret compartment housing radio gear, allowing it to function as a standard headset."
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/device/radio/headset/earmuff
/datum/uplink_item/item/tools/liquidbags
name = "25 Liquid-Bags"
desc = "Use these bags to set up some barricades. Does not come with barbed wire included."
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/stack/liquidbags/half_full

View File

@@ -4,23 +4,23 @@
/datum/uplink_item/item/exosuit/combat
name = "Combat Exosuit Dropper"
desc = "A device that can be used to drop in a combat exosuit. Can only be used outside station areas, unless emagged, which is hazardous."
item_cost = 25
telecrystal_cost = 25
path = /obj/item/device/orbital_dropper/mecha/combat
/datum/uplink_item/item/exosuit/heavy
name = "Heavy Exosuit Dropper"
desc = "A device that can be used to drop in a heavy exosuit. Can only be used outside station areas, unless emagged, which is hazardous."
item_cost = 20
telecrystal_cost = 20
path = /obj/item/device/orbital_dropper/mecha/heavy
/datum/uplink_item/item/exosuit/light
name = "Light Exosuit Dropper"
desc = "A device that can be used to drop in a light exosuit. Can only be used outside station areas, unless emagged, which is hazardous."
item_cost = 15
telecrystal_cost = 15
path = /obj/item/device/orbital_dropper/mecha
/datum/uplink_item/item/exosuit/powerloader
name = "Powerloader Exosuit Dropper"
desc = "A device that can be used to drop in a powerloader exosuit. Can only be used outside station areas, unless emagged, which is hazardous."
item_cost = 10
telecrystal_cost = 10
path = /obj/item/device/orbital_dropper/mecha/powerloader

View File

@@ -6,31 +6,31 @@
/datum/uplink_item/item/exosuit_equipment/mounted_gun
name = "Mounted Electrolaser Carbine"
desc = "A dual fire mode electrolaser system connected to the exosuit's targeting system."
item_cost = 2
telecrystal_cost = 2
path = /obj/item/mecha_equipment/mounted_system/combat/taser
/datum/uplink_item/item/exosuit_equipment/mounted_gun/ion
name = "Mounted Ion Rifle"
desc = "An exosuit-mounted ion rifle. Handle with care."
item_cost = 7
telecrystal_cost = 7
path = /obj/item/mecha_equipment/mounted_system/combat/ion
/datum/uplink_item/item/exosuit_equipment/mounted_gun/laser
name = "Mounted Laser Rifle"
desc = "An exosuit-mounted laser rifle. Handle with care."
item_cost = 3
telecrystal_cost = 3
path = /obj/item/mecha_equipment/mounted_system/combat/laser
/datum/uplink_item/item/exosuit_equipment/mounted_gun/smg
name = "Mounted Machine Gun"
desc = "An exosuit-mounted automatic weapon. Handle with care."
item_cost = 3
telecrystal_cost = 3
path = /obj/item/mecha_equipment/mounted_system/combat/smg
/datum/uplink_item/item/exosuit_equipment/mounted_launcher
name = "Mounted Missile Rack"
desc = "An SRM-8 missile rack loaded with explosive missiles."
item_cost = 10
telecrystal_cost = 10
path = /obj/item/mecha_equipment/mounted_system/combat/missile
// UTILITY //
@@ -38,31 +38,31 @@
/datum/uplink_item/item/exosuit_equipment/mounted_tool
name = "Mounted RFD-C"
desc = "A RFD, modified to construct walls and floors. This one can be mounted on an exosuit."
item_cost = 5
telecrystal_cost = 5
path = /obj/item/mecha_equipment/mounted_system/rfd
/datum/uplink_item/item/exosuit_equipment/mounted_tool/clamp
name = "Mounted Clamp"
desc = "A large, heavy industrial cargo loading clamp."
item_cost = 1
telecrystal_cost = 1
path = /obj/item/mecha_equipment/clamp
/datum/uplink_item/item/exosuit_equipment/mounted_tool/catapult
name = "Mounted Gravitational Catapult"
desc = "An exosuit-mounted gravitational catapult."
item_cost = 2
telecrystal_cost = 2
path = /obj/item/mecha_equipment/catapult
/datum/uplink_item/item/exosuit_equipment/mounted_tool/drill
name = "Mounted Drill"
desc = "An exosuit-mounted drill."
item_cost = 1
telecrystal_cost = 1
path = /obj/item/mecha_equipment/drill
/datum/uplink_item/item/exosuit_equipment/mounted_tool/passenger
name = "Mounted Passenger Compartment"
desc = "An exosuit-mounted passenger compartment."
item_cost = 1
telecrystal_cost = 1
path = /obj/item/mecha_equipment/sleeper/passenger_compartment
// MEDICAL //
@@ -70,11 +70,11 @@
/datum/uplink_item/item/exosuit_equipment/mounted_medical
name = "Mounted Sleeper"
desc = "An exosuit-mounted sleeper designed to maintain patients stabilized on their way to medical facilities."
item_cost = 1
telecrystal_cost = 1
path = /obj/item/mecha_equipment/sleeper
/datum/uplink_item/item/exosuit_equipment/mounted_medical/drone
name = "Mounted Crisis Dronebay"
desc = "A small shoulder-mounted dronebay containing a rapid response drone capable of moderately stabilizing a patient near the exosuit."
item_cost = 1
telecrystal_cost = 1
path = /obj/item/mecha_equipment/crisis_drone

View File

@@ -1,6 +1,6 @@
/datum/uplink_item/item/gear_loadout
category = /datum/uplink_category/gear_loadout
item_cost = 35
telecrystal_cost = 35
/datum/uplink_item/item/gear_loadout/coalition
name = "Coalition of Colonies Assets (Group)"
@@ -9,7 +9,7 @@
/datum/uplink_item/item/gear_loadout/coalition_single
name = "Coalition of Colonies Assets (Single)"
path = /obj/structure/closet/crate/secure/gear_loadout/coalition_single
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/gear_loadout/eridani
name = "Eridani Corporate Federation Assets (Group)"
@@ -18,7 +18,7 @@
/datum/uplink_item/item/gear_loadout/eridani_single
name = "Eridani Corporate Federation Assets (Single)"
path = /obj/structure/closet/crate/secure/gear_loadout/eridani_single
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/gear_loadout/elyra
name = "Serene Republic of Elyra Assets (Group)"
@@ -27,7 +27,7 @@
/datum/uplink_item/item/gear_loadout/elyra_single
name = "Serene Republic of Elyra Assets (Single)"
path = /obj/structure/closet/crate/secure/gear_loadout/elyra_single
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/gear_loadout/elyra
name = "Serene Republic of Elyra Assets (Group)"
@@ -36,7 +36,7 @@
/datum/uplink_item/item/gear_loadout/elyra_single
name = "Serene Republic of Elyra Assets (Single)"
path = /obj/structure/closet/crate/secure/gear_loadout/elyra_single
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/gear_loadout/sol
name = "Sol Alliance Assets (Group)"
@@ -45,7 +45,7 @@
/datum/uplink_item/item/gear_loadout/sol_single
name = "Sol Alliance Assets (Single)"
path = /obj/structure/closet/crate/secure/gear_loadout/sol_single
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/gear_loadout/dominia
name = "Empire of Dominia Assets (Group)"
@@ -54,17 +54,17 @@
/datum/uplink_item/item/gear_loadout/dominia_single
name = "Empire of Dominia Assets (Single)"
path = /obj/structure/closet/crate/secure/gear_loadout/dominia/single
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/gear_loadout/cowboys
name = "Frontier Cowboys (Group)"
path = /obj/structure/closet/crate/secure/gear_loadout/ram_ranch
item_cost = 35
telecrystal_cost = 35
/datum/uplink_item/item/gear_loadout/cowboy_single
name = "Frontier Cowboy (Single)"
path = /obj/structure/closet/crate/secure/gear_loadout/ram_ranch/single
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/gear_loadout/kosmostrelki
name = "Kosmostrelki Assets (Group)"
@@ -75,7 +75,7 @@
name = "Kosmostrelki Assets (Single)"
desc = "A crate containing gear for a single individual.The voidsuit is only usable by Tajara."
path = /obj/structure/closet/crate/secure/gear_loadout/kosmostrelki/single
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/gear_loadout/legion
name = "Tau Ceti Foreign Legion Assets (Group)"
@@ -84,7 +84,7 @@
/datum/uplink_item/item/gear_loadout/legion_single
name = "Tau Ceti Foreign Legion Assets (Single)"
path = /obj/structure/closet/crate/secure/gear_loadout/legion/single
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/gear_loadout/einstein
name = "Einstein Engines Assets (Group)"
@@ -93,4 +93,4 @@
/datum/uplink_item/item/gear_loadout/einstein_single
name = "Einstein Engines Assets (Single)"
path = /obj/structure/closet/crate/secure/gear_loadout/einstein/single
item_cost = 10
telecrystal_cost = 10

View File

@@ -6,35 +6,36 @@
/datum/uplink_item/item/grenades/manhack
name = "Viscerator Delivery Grenade"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/grenade/spawnergrenade/manhacks
desc = "A grenade that deploys five viscerator combat drones. Deadly in numbers, will not attack you or your allies."
/datum/uplink_item/item/grenades/lubed_manhack
name = "Lubed Viscerator Delivery Grenade"
item_cost = 4
telecrystal_cost = 4
path = /obj/item/grenade/spawnergrenade/manhacks/lubed
desc = "A grenade that deploys five lubed viscerator combat drones. Deadly in numbers, will not attack you or your allies. Works best when killed."
/datum/uplink_item/item/grenades/smoke
name = "5xSmoke Grenades"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/box/smokes
desc = "A box of five grenades that deploy smoke in the thrown area. Targets hidden in smoke are much harder to hit with ranged weaponry."
/datum/uplink_item/item/grenades/emp
name = "5xEMP Grenades"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/storage/box/emps
desc = "A box of five grenades that cause a risky EMP explosion, capable of toggling headsets off, permanently destroying IPC units and draining a stationbound completely."
/datum/uplink_item/item/grenades/frag
name = "5xFrag Grenades"
item_cost = 6
telecrystal_cost = 6
path = /obj/item/storage/box/frags
/datum/uplink_item/item/grenades/cardox
name = "5xCardox Grenades"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/storage/box/cardox
desc = "A box of five grenades that deploy cardox smoke in the thrown area. This smoke is incredibly toxic, especially to vaurca. It can also clear K'ois outbreaks with ease."

View File

@@ -6,41 +6,41 @@
/datum/uplink_item/item/hardsuit_modules/thermal
name = "Thermal Scanner"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/rig_module/vision/thermal
/datum/uplink_item/item/hardsuit_modules/energy_net
name = "Net Projector"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/rig_module/fabricator/energy_net
/datum/uplink_item/item/hardsuit_modules/ewar_voice
name = "Electrowarfare Suite and Voice Synthesiser"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/storage/box/syndie_kit/ewar_voice
/datum/uplink_item/item/hardsuit_modules/maneuvering_jets
name = "Maneuvering Jets"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/rig_module/maneuvering_jets
/datum/uplink_item/item/hardsuit_modules/egun
name = "Mounted Energy Gun"
item_cost = 6
telecrystal_cost = 6
path = /obj/item/rig_module/mounted/egun
/datum/uplink_item/item/hardsuit_modules/power_sink
name = "Power Sink"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/rig_module/power_sink
/datum/uplink_item/item/hardsuit_modules/laser_canon
name = "Mounted Laser Cannon"
item_cost = 8
telecrystal_cost = 8
path = /obj/item/rig_module/mounted
/datum/uplink_item/item/tools/rig_cooling_unit
name = "mounted suit cooling unit"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/rig_module/cooling_unit
desc = "A mounted suit cooling unit for use with hardsuits."

View File

@@ -6,247 +6,248 @@
/datum/uplink_item/item/visible_weapons/dartgun
name = "Dart Gun"
item_cost = 3
telecrystal_cost = 3
bluecrystal_cost = 3
path = /obj/item/gun/projectile/dartgun
/datum/uplink_item/item/visible_weapons/crossbow
name = "Energy Crossbow"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/gun/energy/crossbow
/datum/uplink_item/item/visible_weapons/forcegloves
name = "Force Gloves"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/clothing/gloves/force/syndicate
/datum/uplink_item/item/visible_weapons/energy_sword
name = "Energy Sword"
item_cost = 4
telecrystal_cost = 4
path = /obj/item/melee/energy/sword
/datum/uplink_item/item/visible_weapons/g9mm
name = "Silenced 9mm"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/storage/box/syndie_kit/g9mm
/datum/uplink_item/item/visible_weapons/hammer
name = "Kneebreaker Hammer"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/melee/hammer
/datum/uplink_item/item/visible_weapons/revolver
name = "Revolver"
item_cost = 4
telecrystal_cost = 4
path = /obj/item/gun/projectile/revolver
/datum/uplink_item/item/visible_weapons/submachinegun
name = "Submachine Gun"
item_cost = 8
telecrystal_cost = 8
path = /obj/item/gun/projectile/automatic/tommygun
/datum/uplink_item/item/visible_weapons/landmine
name = "Land Mine"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/landmine
/datum/uplink_item/item/visible_weapons/emplandmine
name = "EMP Land Mine"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/landmine/emp
/datum/uplink_item/item/visible_weapons/sleepylandmine
name = "N2O Land Mine"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/landmine/n2o
/datum/uplink_item/item/visible_weapons/caltrops
name = "Caltrops"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/material/caltrops
/datum/uplink_item/item/visible_weapons/powerfist
name = "Power Fist"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/clothing/gloves/powerfist
/datum/uplink_item/item/visible_weapons/clawedgloves
name = "Clawed Gauntlets"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/clothing/gloves/claws
/datum/uplink_item/item/visible_weapons/ballisticgauntlet
name = "Ballistic Gauntlet"
item_cost = 6
telecrystal_cost = 6
path = /obj/item/clothing/gloves/ballistic
/datum/uplink_item/item/visible_weapons/gatling
name = "Gatling Machine Gun"
item_cost = 40
telecrystal_cost = 40
item_limit = 1
path = /obj/item/minigunpack
/datum/uplink_item/item/visible_weapons/chainsaw
name = "Chainsaw"
item_cost = 6
telecrystal_cost = 6
path = /obj/item/material/twohanded/chainsaw/fueled
/datum/uplink_item/item/visible_weapons/throwing_star
name = "Steel Throwing Star"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/material/star
/datum/uplink_item/item/visible_weapons/plasma_shotty
name = "Plasma Shotgun"
item_cost = 9
telecrystal_cost = 9
path = /obj/item/gun/projectile/plasma
/datum/uplink_item/item/visible_weapons/laser_rifle
name = "Laser Rifle"
item_cost = 8
telecrystal_cost = 8
path = /obj/item/gun/energy/rifle/laser
/datum/uplink_item/item/visible_weapons/ballistic_carbine
name = "Ballistic Carbine"
item_cost = 8
telecrystal_cost = 8
path = /obj/item/gun/projectile/automatic/rifle/carbine
/datum/uplink_item/item/visible_weapons/noctiluca
name = "Combat Laser Rifle"
item_cost = 8
telecrystal_cost = 8
path = /obj/item/gun/energy/rifle/laser/noctiluca
/datum/uplink_item/item/visible_weapons/jingya
name = "Burst Rifle"
item_cost = 8
telecrystal_cost = 8
path = /obj/item/gun/projectile/automatic/rifle/jingya
/datum/uplink_item/item/visible_weapons/energy_carbine
name = "Energy Carbine"
item_cost = 6
telecrystal_cost = 6
path = /obj/item/gun/energy/gun
/datum/uplink_item/item/visible_weapons/icelance
name = "Icelance Rifle"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/gun/energy/rifle/icelance
/datum/uplink_item/item/visible_weapons/boltaction
name = "Bolt-Action Rifle"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/gun/projectile/shotgun/pump/rifle
/datum/uplink_item/item/visible_weapons/colt
name = "Vintage .45 Pistol"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/gun/projectile/colt
/datum/uplink_item/item/visible_weapons/custom_ka
name = "Kinetic Laser Assembly"
item_cost = 3
telecrystal_cost = 3
path = /obj/item/gun/custom_ka/frame01/illegal
/datum/uplink_item/item/visible_weapons/teslagauntlet
name = "Tesla Glove"
item_cost = 6
telecrystal_cost = 6
path = /obj/item/clothing/gloves/tesla
/datum/uplink_item/item/visible_weapons/peac
name = "Point Entry Anti-materiel Cannon"
item_cost = 9
telecrystal_cost = 9
path = /obj/item/gun/projectile/peac
/datum/uplink_item/item/visible_weapons/recoilless_rifle
name = "One Use Recoilless Rifle"
item_cost = 5
telecrystal_cost = 5
path = /obj/item/gun/projectile/recoilless_rifle
/datum/uplink_item/item/visible_weapons/ionrifle
name = "Ion Rifle"
item_cost = 5
telecrystal_cost = 5
path = /obj/item/gun/energy/rifle/ionrifle
/datum/uplink_item/item/visible_weapons/lmg
name = "Light Machine Gun"
item_cost = 20
telecrystal_cost = 20
path = /obj/item/gun/projectile/automatic/rifle/l6_saw
/datum/uplink_item/item/visible_weapons/random_weapon
name = "Random Gun"
item_cost = 6
telecrystal_cost = 6
path = /obj/item/storage/box/syndie_kit/random_weapon
/datum/uplink_item/item/visible_weapons/super_heavy_pistol
name = "Super Heavy Pistol"
item_cost = 4
telecrystal_cost = 4
path = /obj/item/gun/projectile/pistol/super_heavy
/datum/uplink_item/item/visible_weapons/energy_pistol
name = "Energy Pistol"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/gun/energy/pistol
/datum/uplink_item/item/visible_weapons/bullpup_assault_carbine
name = "Bullpup Assault Carbine"
item_cost = 12
telecrystal_cost = 12
path = /obj/item/gun/projectile/automatic/rifle/z8
/datum/uplink_item/item/visible_weapons/assault_shotgun
name = "Assault Shotgun"
item_cost = 15
telecrystal_cost = 15
path = /obj/item/gun/projectile/automatic/rifle/shotgun
/datum/uplink_item/item/visible_weapons/gatling_laser
name = "Gatling Laser"
item_cost = 40
telecrystal_cost = 40
item_limit = 1
path = /obj/item/gun/energy/vaurca/gatlinglaser
/datum/uplink_item/item/visible_weapons/laser_shotgun
name = "Laser Shotgun"
item_cost = 10
telecrystal_cost = 10
path = /obj/item/gun/energy/laser/shotgun
/datum/uplink_item/item/visible_weapons/xray_laser
name = "X-Ray Laser Rifle"
item_cost = 12
telecrystal_cost = 12
path = /obj/item/gun/energy/rifle/laser/xray
/datum/uplink_item/item/visible_weapons/combat_shotgun
name = "Combat Shotgun"
item_cost = 10
telecrystal_cost = 10
path = /obj/item/gun/projectile/shotgun/pump/combat
/datum/uplink_item/item/visible_weapons/automatic_45_pistol
name = "Automatic .45 Pistol"
item_cost = 5
telecrystal_cost = 5
path = /obj/item/gun/projectile/automatic/mini_uzi
/datum/uplink_item/item/visible_weapons/shortened_assault_rifle
name = "Shortened Assault Rifle"
item_cost = 12
telecrystal_cost = 12
path = /obj/item/gun/projectile/automatic/rifle/shorty
/datum/uplink_item/item/visible_weapons/assault_rifle
name = "Assault Rifle"
item_cost = 12
telecrystal_cost = 12
path = /obj/item/gun/projectile/automatic/rifle/sts35
/datum/uplink_item/item/visible_weapons/laser_cannon
name = "Laser Cannon"
item_cost = 12
telecrystal_cost = 12
path = /obj/item/gun/energy/lasercannon
/datum/uplink_item/item/visible_weapons/derringer
name = "Derringer"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/gun/projectile/revolver/derringer
/datum/uplink_item/item/visible_weapons/gauss_thumper
name = "Gauss Thumper"
item_cost = 12
telecrystal_cost = 12
path = /obj/item/gun/projectile/gauss
/datum/uplink_item/item/visible_weapons/deagle
name = ".50 Pistol"
item_cost = 5
path = /obj/item/gun/projectile/deagle/adhomai
telecrystal_cost = 5
path = /obj/item/gun/projectile/deagle/adhomai

View File

@@ -6,24 +6,24 @@
/datum/uplink_item/item/implants/imp_freedom
name = "Freedom Implant"
item_cost = 1
telecrystal_cost = 1
path = /obj/item/storage/box/syndie_kit/imp_freedom
/datum/uplink_item/item/implants/imp_compress
name = "Compressed Matter Implant"
desc = "A box containing a single implanter and matter cartridge. To remove an unintended target, use the implanter in-hand then open the cartridge with a screwdriver."
item_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/box/syndie_kit/imp_compress
/datum/uplink_item/item/implants/imp_explosive
name = "Explosive Implant (DANGER!)"
item_cost = 3
bluecrystal_cost = 3
desc = "A box containing an explosive implant and implanter. Use the implant in-hand to set the explosion size and trigger phrase."
path = /obj/item/storage/box/syndie_kit/imp_explosive
/datum/uplink_item/item/implants/imp_deadman
name = "Deadman Implant (DANGER!)"
item_cost = 3
bluecrystal_cost = 3
desc = "A box containing an explosive implant and implanter. The implant monitors vitals and will detonate when the subject dies."
path = /obj/item/storage/box/syndie_kit/imp_deadman
@@ -33,17 +33,17 @@
/datum/uplink_item/item/implants/imp_uplink/New()
..()
item_cost = round(DEFAULT_TELECRYSTAL_AMOUNT / 2)
telecrystal_cost = round(DEFAULT_TELECRYSTAL_AMOUNT / 2)
desc = "Contains [round((DEFAULT_TELECRYSTAL_AMOUNT / 2) * 0.8)] Telecrystal\s"
/datum/uplink_item/item/implants/aug_combitool
name = "Combitool Augment Implanter"
item_cost = 2
bluecrystal_cost = 1
desc = "An augment implanter, with the combitool augment."
path = /obj/item/device/augment_implanter/combitool
/datum/uplink_item/item/implants/aug_health_scanner
name = "Health Scanner Augment Implanter"
item_cost = 1
bluecrystal_cost = 1
desc = "An augment implanter, with the integrated health scanner augment."
path = /obj/item/device/augment_implanter/health_scanner

View File

@@ -3,21 +3,21 @@
/datum/uplink_item/item/martial_arts/solcom
name = "SolCom"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/martial_manual
/datum/uplink_item/item/martial_arts/wrestling
name = "Wrestling"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/martial_manual/wrestling
/datum/uplink_item/item/martial_arts/swordsmanship
name = "Swordsmanship"
item_cost = 2
telecrystal_cost = 2
path = /obj/item/martial_manual/swordsmanship
/datum/uplink_item/item/martial_arts/gun_kata
name = "Gun-Kata"
desc = "A manual containing basic Gun-Kata instruction and techniques. This is for projectile weapons, allowing you to reload by using a gun on a magazine, and automatically ejecting the magazine when it's empty."
item_cost = 1
telecrystal_cost = 1
path = /obj/item/martial_manual/gun_kata

View File

@@ -6,82 +6,82 @@
/datum/uplink_item/item/medical/sinpockets
name = "Box of Sin-Pockets"
item_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/box/sinpockets
/datum/uplink_item/item/medical/lunchbox
name = "Syndicate Lunchbox"
item_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/toolbox/lunchbox/syndicate/filled
/datum/uplink_item/item/medical/sanasomnum
name = "Sanasomnum Injector"
item_cost = 2
bluecrystal_cost = 3
path = /obj/item/reagent_containers/hypospray/autoinjector/sanasomnum
/datum/uplink_item/item/medical/combathypo
name = "Combat Hypospray"
item_cost = 1
bluecrystal_cost = 2
path = /obj/item/reagent_containers/hypospray/combat
/datum/uplink_item/item/medical/surgery
name = "Surgery Kit"
item_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/firstaid/surgery
/datum/uplink_item/item/medical/combat
name = "Combat Medical Kit"
item_cost = 1
bluecrystal_cost = 2
path = /obj/item/storage/firstaid/combat
/datum/uplink_item/item/medical/medicalbelt
name = "Fully Loaded Combat Medical Belt"
item_cost = 3
bluecrystal_cost = 3
path = /obj/item/storage/belt/medical/first_responder/combat/full
desc = "A fully loaded medical belt even Zeng-Hu's top First Responders would be dying to wear. It contains liquid medicines and a hypospray. Combat hypo sold separately."
/datum/uplink_item/item/medical/stimulants
name = "Box of Combat Stimulants"
item_cost = 1
bluecrystal_cost = 4
path = /obj/item/storage/box/syndie_kit/stimulants
/datum/uplink_item/item/medical/stabilisation
name = "Slimline Stabilisation Kit"
desc = "A pocket-sized medkit filled with lifesaving equipment."
item_cost = 2
bluecrystal_cost = 2
path = /obj/item/storage/firstaid/sleekstab
/datum/uplink_item/item/medical/berserk_injectors
name = "Box of Berserk Injectors"
item_cost = 2
bluecrystal_cost = 4
path = /obj/item/storage/box/syndie_kit/berserk_injectors
desc = "Comes with 2x autoinjectors filled with Red Nightshade - used to induce a berserk state lasting ~2.5 minutes per injector. You cannot use advanced tools (guns/computer consoles/etc.) while berserk. Using both injectors will increase time berserk, but will lead to liver failure."
/datum/uplink_item/item/medical/sideeffectbegone
name = "Box of Sideeffect-Be-Gone Injectors"
item_cost = 1
bluecrystal_cost = 2
path = /obj/item/storage/box/syndie_kit/sideeffectbegone
/datum/uplink_item/item/medical/firstaid
name = "Standard First-Aid Kit"
item_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/firstaid/regular
/datum/uplink_item/item/medical/firstaid
name = "Standard First-Aid Kit (Free)"
item_cost = 0
telecrystal_cost = 0
item_limit = 1
path = /obj/item/storage/firstaid/regular
desc = "You can claim this first-aid kit only once."
/datum/uplink_item/item/medical/advfirstaid
name = "Advanced First-Aid Kit"
item_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/firstaid/adv
desc = "Note: doesn't come with a medical scanner."
/datum/uplink_item/item/medical/bloodpack
name = "O- blood pack"
item_cost = 1
bluecrystal_cost = 1
path = /obj/item/reagent_containers/blood/OMinus
desc = "If transferring to self or others without a stand, hold firmly in hand, configure the transfer rate and attach the tubing carefully."

View File

@@ -7,65 +7,65 @@
/datum/uplink_item/item/ninja_modules/energency_generator
name = "Emergency Power Generator"
desc = "An emergency use power generator that gives 1000 power to the suits battery. Has a long cooldown."
item_cost = 2
telecrystal_cost = 2
path = /obj/item/rig_module/emergency_powergenerator
/datum/uplink_item/item/ninja_modules/energy_net
name = "Energy Net"
desc = "An unlimited use net, if the user has enough power, that can be thrown at others causing them to be trapped. The net can be broken with brute force.."
item_cost = 3
telecrystal_cost = 3
path = /obj/item/rig_module/fabricator/energy_net
/datum/uplink_item/item/ninja_modules/stealth_field
name = "Stealth Field"
desc = "A module that allows the user to go invisible. Consumes power when active."
item_cost = 5
telecrystal_cost = 5
path = /obj/item/rig_module/stealth_field
/datum/uplink_item/item/ninja_modules/normal_grenade_lancher
name = "Standard Grenade Launcher"
desc = "A shoulder mounted grenade launcher with 3 EMP, Smoke, and flashbang grenades.It can be refilled with more grenades."
item_cost = 5
telecrystal_cost = 5
path = /obj/item/rig_module/grenade_launcher
/datum/uplink_item/item/ninja_modules/enery_blade
name = "Energy Blade and dart launcher."
desc = "A module that can produce a powerful energy blade in the users hand. It can also shoot stun-darts."
item_cost = 4
telecrystal_cost = 4
path = /obj/item/rig_module/mounted/energy_blade
/datum/uplink_item/item/ninja_modules/matter_fab
name = "Matter Fabricator"
desc = "A hardsuit matter fabricator that can produce sharp steel ninja stars used for throwing."
item_cost = 3
telecrystal_cost = 3
path = /obj/item/rig_module/fabricator
/datum/uplink_item/item/ninja_modules/emag_hand
name = "EMAG Hand Module"
desc = "A module that allows the user to apply an EMAG effect to the targeted item."
item_cost = 1
telecrystal_cost = 1
path = /obj/item/rig_module/device/emag_hand
/datum/uplink_item/item/ninja_modules/chem_injector
name = "Chemical Injector"
desc = "A chemical injector that allows the user to inject themselves with medical chemicals."
item_cost = 1
telecrystal_cost = 1
path = /obj/item/rig_module/chem_dispenser
/datum/uplink_item/item/ninja_modules/EMP_Shield
name = "Active EMP Shielding"
desc = "A very complicated module for a hardsuit that protects it to some degree from EMPs."
item_cost = 1
telecrystal_cost = 1
path = /obj/item/rig_module/emp_shielding
/datum/uplink_item/item/ninja_modules/combat_injector
name = "Combat Injector"
desc = "A chemical injector that allows the user to inject themselves with combat chemicals."
item_cost = 2
telecrystal_cost = 2
path = /obj/item/rig_module/chem_dispenser/combat
/datum/uplink_item/item/ninja_modules/self_destruct
name = "Self-destruct Module"
desc = "A Self-destruct Module that causes an explosion when the user dies or presses the switch."
item_cost = 5
telecrystal_cost = 5
path = /obj/item/rig_module/self_destruct

View File

@@ -4,23 +4,26 @@
/datum/uplink_item/item/revolution/armory
name = "Armory Dropper"
desc = "A device that can be used to drop in an armory-worth of guns. Can only be used outside station areas, unless emagged, which is hazardous."
item_cost = 25
telecrystal_cost = 25
path = /obj/item/device/orbital_dropper/armory/syndicate
/datum/uplink_item/item/revolution/implants
name = "Box of Aggression Implants"
desc = "A box containing implants that will make their owners increasingly aggressive."
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/storage/box/aggression
/datum/uplink_item/item/revolution/encryption_keys
name = "Box of Encryption Keys"
desc = "A box of encryption keys that gives the user a safe channel to chatter in. Access safe channel with :x."
item_cost = 3
telecrystal_cost = 3
bluecrystal_cost = 3
path = /obj/item/storage/box/encryption_key
/datum/uplink_item/item/revolution/softsuits
name = "Crate of Softsuits"
desc = "A crate containing six softsuits, their helmets, and oxygen tanks. Useful for getting out of a pinch."
item_cost = 3
telecrystal_cost = 3
bluecrystal_cost = 3
path = /obj/structure/closet/crate/secure/gear_loadout/syndicate_softsuits

View File

@@ -47,7 +47,7 @@ Quick and easy list of all the occupations for farther expansion and addition.
/* //An example of how to set it up.
/datum/uplink_item/item/specialty/crossbow
name = "Eneree Crossbow"
item_cost = 6
telecrystal_cost = 6
path = /obj/item/gun/energy/crossbow
antag_job = "assistant"
*/

View File

@@ -6,55 +6,64 @@
/datum/uplink_item/item/stealth_items/syndigaloshes
name = "No-Slip Shoes"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/clothing/shoes/syndigaloshes
/datum/uplink_item/item/stealth_items/spy
name = "Bug Kit"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/box/syndie_kit/spy
/datum/uplink_item/item/stealth_items/id
name = "Agent ID card"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/card/id/syndicate
/datum/uplink_item/item/stealth_items/chameleon_kit
name = "Chameleon Kit"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/box/syndie_kit/chameleon
/datum/uplink_item/item/stealth_items/voice
name = "Voice Changer"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/clothing/mask/gas/voice
/datum/uplink_item/item/stealth_items/chameleon_projector
name = "Chameleon-Projector"
desc = "A device that can be used to mimic common items by scanning, then transforming into them."
item_cost = 2
telecrystal_cost = 2
path = /obj/item/device/chameleon
/datum/uplink_item/item/stealth_items/venenum
name = "Vial of Venenum"
desc = "A vial that contains 30u of venemum. Changes DNA structure randomly, effectively masking your appearance until it wears off. Good for 15 minutes of appearance changes."
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/reagent_containers/glass/beaker/vial/venenum
/datum/uplink_item/item/stealth_items/balaclava
name = "Balaclava"
desc = "Designed to both hide identities and keep your face comfy and warm."
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/clothing/mask/balaclava/grey
/datum/uplink_item/item/stealth_items/stealthpop
name = "Stealthpops"
desc = "Snap pops with a compound added which deploys a small smokescreen upon exploding."
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/box/snappops/syndi
/datum/uplink_item/item/stealth_items/closet_teleporter
name = "Closet Teleportation Set-up"
desc = "A box of closet teleporters, devices that can be inserted into closets to set up a teleportation network. Has a one minute cooldown after a batch teleport."
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/box/closet_teleporter

View File

@@ -6,38 +6,45 @@
/datum/uplink_item/item/stealthy_weapons/soap
name = "Subversive Soap"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/soap/syndie
/datum/uplink_item/item/stealthy_weapons/cigarette_kit
name = "Cigarette Kit"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/storage/box/syndie_kit/cigarette
/datum/uplink_item/item/stealthy_weapons/pens
name = "Pen-jector Kit"
desc = "A kit that contains four differently coloured pens. A blue pacifying pen, a green pen containing healing chemicals, and a yellow hyperzine pen."
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/storage/box/syndie_kit/special_pens
/datum/uplink_item/item/stealthy_weapons/parapen
name = "Paralysis Pen"
desc = "A kit containing: a red parapen (lasts approximately 5 minutes) and a green pen loaded with a purging chemical if you want to remove the paralytic early."
item_cost = 3
telecrystal_cost = 3
bluecrystal_cost = 3
path = /obj/item/storage/box/syndie_kit/parapen
/datum/uplink_item/item/stealthy_weapons/concealed_cane
name = "Concealed Cane Sword"
item_cost = 1
telecrystal_cost = 1
bluecrystal_cost = 1
path = /obj/item/cane/concealed
/datum/uplink_item/item/stealthy_weapons/sleepy_ring
name = "Sleepy Ring"
desc = "A silver ring that will quickly put its wearer to sleep. WARNING: Do not wear this yourself. It'll end about as well as you expect it to."
item_cost = 3
telecrystal_cost = 3
bluecrystal_cost = 3
path = /obj/item/clothing/ring/reagent/sleepy
/datum/uplink_item/item/stealthy_weapons/bear_trap
name = "Sharpened Bear Trap"
item_cost = 2
telecrystal_cost = 2
bluecrystal_cost = 2
path = /obj/item/trap/sharpened

View File

@@ -2,30 +2,62 @@
* Telecrystals *
***************/
/datum/uplink_item/item/telecrystal
category = /datum/uplink_category/telecrystals
desc = "Acquire the uplink crystals in pure form."
category = /datum/uplink_category/crystals
desc = "Acquire the uplink telecrystals in pure form."
/datum/uplink_item/item/telecrystal/get_goods(var/obj/item/device/uplink/U, var/loc)
return new /obj/item/stack/telecrystal(loc, cost(U.uses))
return new /obj/item/stack/telecrystal(loc, telecrystal_cost(U.telecrystals))
/datum/uplink_item/item/telecrystal/one
name = "Telecrystal - 01"
item_cost = 1
telecrystal_cost = 1
/datum/uplink_item/item/telecrystal/five
name = "Telecrystals - 05"
item_cost = 5
telecrystal_cost = 5
/datum/uplink_item/item/telecrystal/ten
name = "Telecrystals - 10"
item_cost = 10
telecrystal_cost = 10
/datum/uplink_item/item/telecrystal/twentyfive
name = "Telecrystals - 25"
item_cost = 25
telecrystal_cost = 25
/datum/uplink_item/item/telecrystal/all
name = "Telecrystals - Empty Uplink"
telecrystal_cost = 1
/datum/uplink_item/item/telecrystal/all/cost(var/telecrystals)
/datum/uplink_item/item/telecrystal/all/telecrystal_cost(var/telecrystals)
return max(1, telecrystals)
/datum/uplink_item/item/bluecrystal
category = /datum/uplink_category/crystals
desc = "Acquire the uplink bluecrystals in pure form."
/datum/uplink_item/item/bluecrystal/get_goods(var/obj/item/device/uplink/U, var/loc)
return new /obj/item/stack/telecrystal/blue(loc, bluecrystal_cost(U.bluecrystals))
/datum/uplink_item/item/bluecrystal/one
name = "Bluecrystals - 01"
bluecrystal_cost = 1
/datum/uplink_item/item/bluecrystal/five
name = "Bluecrystals - 05"
bluecrystal_cost = 5
/datum/uplink_item/item/bluecrystal/ten
name = "Bluecrystals - 10"
bluecrystal_cost = 10
/datum/uplink_item/item/bluecrystal/twentyfive
name = "Bluecrystals - 25"
bluecrystal_cost = 25
/datum/uplink_item/item/bluecrystal/all
name = "Bluecrystals - Empty Uplink"
bluecrystal_cost = 1
/datum/uplink_item/item/bluecrystal/all/bluecrystal_cost(var/bluecrystals)
return max(1, bluecrystals)

View File

@@ -69,8 +69,8 @@
/datum/uplink_category/corporate_equipment
name = "Corporate Equipment"
/datum/uplink_category/telecrystals
name = "Telecrystals"
/datum/uplink_category/crystals
name = "Crystals"
/datum/uplink_category/specialty //snowflake antag items - a brave new frontier!
name = "Specialised Items"

View File

@@ -28,32 +28,50 @@ var/datum/uplink/uplink
/datum/uplink_item
var/name
var/desc
var/item_cost = 0
var/item_limit = 999 // how many times can this item be bought from a uplink (high limit is not shown in the uplink gui)
var/datum/uplink_category/category // Item category
var/list/datum/antagonist/antag_roles // Antag roles this item is displayed to. If empty, display to all.
var/list/datum/antagonist/antag_job // Antag job this item is displayed to, if empty, display to all.
/// A null telecrystal cost means that this item cannot be bought with bluecrystals.
var/telecrystal_cost
/// A null bluecrystal cost means that this item cannot be bought with bluecrystals.
var/bluecrystal_cost
/// How many times can this item be bought from an uplink (high limit is not shown in the uplink GUI).
var/item_limit = 999
/// Item category.
var/datum/uplink_category/category
/// Antag roles this item is displayed to. If empty, display to all.
var/list/datum/antagonist/antag_roles
/// Antag job this item is displayed to, if empty, display to all.
var/list/datum/antagonist/antag_job
/datum/uplink_item/item
var/path = null
var/path
/datum/uplink_item/proc/buy(var/obj/item/device/uplink/U, var/mob/user)
var/extra_args = extra_args(user)
if(!extra_args)
return
if(!can_buy(U))
var/can_buy_telecrystals = can_buy_telecrystals(U)
var/can_buy_bluecrystals = can_buy_bluecrystals(U)
if(!can_buy_telecrystals && !can_buy_bluecrystals)
return
if(U.CanUseTopic(user, inventory_state) != STATUS_INTERACTIVE)
return
var/cost = cost(U.uses)
var/goods = get_goods(U, get_turf(user), user, extra_args)
if(!goods)
log_admin("Bought item [name] for [user]'s uplink could not be obtained.")
return
var/cost
if(can_buy_bluecrystals)
cost = bluecrystal_cost(U.bluecrystals)
U.bluecrystals -= cost
U.used_bluecrystals += cost
else if(can_buy_telecrystals)
cost = telecrystal_cost(U.telecrystals)
U.telecrystals -= cost
U.used_telecrystals += cost
var/obj/item/implanter/implanter = goods
if(istype(implanter))
var/obj/item/implant/uplink/uplink_implant = implanter.imp
@@ -61,55 +79,71 @@ var/datum/uplink/uplink
var/obj/item/device/uplink/hidden/hidden_uplink = uplink_implant.hidden_uplink
if(istype(hidden_uplink))
hidden_uplink.purchase_log = U.purchase_log
purchase_log(U)
U.uses -= cost
U.used_TC += cost
return goods
// Any additional arguments you wish to send to the get_goods
/datum/uplink_item/proc/extra_args(var/mob/user)
return 1
/datum/uplink_item/proc/can_buy(obj/item/device/uplink/U)
if(cost(U.uses) > U.uses)
return 0
/datum/uplink_item/proc/can_buy_telecrystals(obj/item/device/uplink/U)
if(isnull(telecrystal_cost))
return FALSE
if(telecrystal_cost(U.telecrystals) > U.telecrystals)
return FALSE
if(items_left(U) <= 0)
return 0
return FALSE
return can_view(U)
/datum/uplink_item/proc/can_buy_bluecrystals(obj/item/device/uplink/U)
if(isnull(bluecrystal_cost))
return FALSE
if(bluecrystal_cost(U.bluecrystals) > U.bluecrystals)
return FALSE
if(items_left(U) <= 0)
return FALSE
return can_view(U)
/datum/uplink_item/proc/items_left(obj/item/device/uplink/U)
return item_limit - U.purchase_log[src]
/datum/uplink_item/proc/can_view(obj/item/device/uplink/U)
// Making the assumption that if no uplink was supplied, then we don't care about antag roles
if(!U || (!length(antag_roles) && !antag_job))
return 1
return TRUE
// With no owner, there's no need to check antag status.
if(!U.uplink_owner)
return 0
return FALSE
for(var/antag_role in antag_roles)
var/datum/antagonist/antag = all_antag_types[antag_role]
if(antag.is_antagonist(U.uplink_owner))
return 1
return TRUE
if (antag_job == U.uplink_owner.assigned_role) //for a quick and easy list of the assigned_role, look in specialty.dm
return 1
return 0
return TRUE
return FALSE
/datum/uplink_item/proc/cost(var/telecrystals)
return item_cost
/datum/uplink_item/proc/telecrystal_cost(var/telecrystals)
return telecrystal_cost
/datum/uplink_item/proc/bluecrystal_cost(var/bluecrystals)
return bluecrystal_cost
/datum/uplink_item/proc/description()
return desc
// get_goods does not necessarily return physical objects, it is simply a way to acquire the uplink item without paying
/datum/uplink_item/proc/get_goods(var/obj/item/device/uplink/U, var/loc)
return 0
return FALSE
/datum/uplink_item/proc/log_icon()
return
@@ -177,6 +211,6 @@ var/datum/uplink/uplink
if(!I)
break
bought_items += I
remaining_TC -= I.cost(remaining_TC)
remaining_TC -= I.telecrystal_cost(remaining_TC)
return bought_items

View File

@@ -90,16 +90,18 @@
/datum/antagonist/proc/print_player_full(var/datum/mind/ply)
var/text = print_player_lite(ply)
var/TC_uses = 0
var/telecrystal_uses = 0
var/bluecrystal_uses = 0
var/uplink_true = 0
var/purchases = ""
for(var/obj/item/device/uplink/H in world_uplinks)
if(H && H.uplink_owner && H.uplink_owner == ply)
TC_uses += H.used_TC
telecrystal_uses += H.used_telecrystals
bluecrystal_uses += H.used_bluecrystals
uplink_true = 1
purchases += get_uplink_purchases(H)
if(uplink_true)
text += " (used [TC_uses] TC)"
text += " (used [telecrystal_uses] TC and [bluecrystal_uses] BC)"
if(purchases)
text += "<br>[purchases]"
@@ -108,11 +110,11 @@
/proc/print_ownerless_uplinks()
var/has_printed = 0
for(var/obj/item/device/uplink/H in world_uplinks)
if(isnull(H.uplink_owner) && H.used_TC)
if(isnull(H.uplink_owner) && (H.used_telecrystals || H.used_bluecrystals))
if(!has_printed)
has_printed = 1
to_world("<b>Ownerless Uplinks</b>")
to_world("[H.loc] (used [H.used_TC] TC)")
to_world("[H.loc] (used [H.used_telecrystals] TC and [H.used_bluecrystals] BC)")
to_world(get_uplink_purchases(H))
/proc/get_uplink_purchases(var/obj/item/device/uplink/H)

View File

@@ -7,27 +7,41 @@ A list of items and costs is stored under the datum of every game mode, alongsid
*/
/obj/item/device/uplink
var/welcome = "Welcome, Operative" // Welcoming menu message
var/uses // Numbers of crystals
var/list/ItemsCategory // List of categories with lists of items
var/list/ItemsReference // List of references with an associated item
var/list/nanoui_items // List of items for NanoUI use
var/nanoui_menu = 0 // The current menu we are in
var/list/nanoui_data = new // Additional data for NanoUI use
var/list/purchase_log = new // Assoc list of item to times bought; shared/referenced by child uplinks
/// Welcoming menu message.
var/welcome = "Welcome, Operative"
/// Number of telecrystals.
var/telecrystals
/// Number of bluecrystals.
var/bluecrystals
/// Counter of used telecrystals.
var/used_telecrystals = 0
/// Counter of used bluecrystals.
var/used_bluecrystals = 0
/// List of categories with lists of items.
var/list/ItemsCategory
/// List of references with an associated item.
var/list/ItemsReference
/// List of items for NanoUI use.
var/list/nanoui_items
/// The current menu we are in.
var/nanoui_menu = 0
/// Additional data for NanoUI use.
var/list/nanoui_data = list()
// Assoc list of item to times bought; shared/referenced by child uplinks
var/list/purchase_log = list()
/// Mind of the uplink's owner.
var/datum/mind/uplink_owner = null
var/used_TC = 0
/obj/item/device/uplink/ui_host()
return loc
/obj/item/device/uplink/New(var/location, var/datum/mind/owner, var/telecrystals = DEFAULT_TELECRYSTAL_AMOUNT)
..()
/obj/item/device/uplink/Initialize(var/mapload, var/datum/mind/owner, var/new_telecrystals = DEFAULT_TELECRYSTAL_AMOUNT, var/new_bluecrystals = DEFAULT_BLUECRYSTAL_AMOUNT)
. = ..()
src.uplink_owner = owner
purchase_log = list()
world_uplinks += src
uses = telecrystals
telecrystals = new_telecrystals
bluecrystals = new_bluecrystals
/obj/item/device/uplink/Destroy()
world_uplinks -= src
@@ -57,7 +71,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
// The hidden uplink MUST be inside an obj/item's contents.
/obj/item/device/uplink/hidden/New()
spawn(2)
if(!istype(src.loc, /obj/item))
if(!istype(loc, /obj/item))
qdel(src)
..()
nanoui_data = list()
@@ -90,7 +104,8 @@ A list of items and costs is stored under the datum of every game mode, alongsid
var/data[0]
data["welcome"] = welcome
data["crystals"] = uses
data["telecrystals"] = telecrystals
data["bluecrystals"] = bluecrystals
data["menu"] = nanoui_menu
data += nanoui_data
@@ -158,12 +173,15 @@ A list of items and costs is stored under the datum of every game mode, alongsid
var/items[0]
for(var/datum/uplink_item/item in category.items)
if(item.can_view(src))
var/cost = item.cost(uses)
var/tc_cost = item.telecrystal_cost(telecrystals)
var/bc_cost = item.bluecrystal_cost(bluecrystals)
var/can_buy = item.can_buy_telecrystals(src) || item.can_buy_bluecrystals(src)
items[++items.len] = list(
"name" = item.name,
"description" = replacetext(item.description(), "\n", "<br>"),
"can_buy" = item.can_buy(src),
"cost" = cost,
"can_buy" = can_buy,
"tc_cost" = tc_cost,
"bc_cost" = bc_cost,
"left" = item.items_left(src),
"ref" = "\ref[item]"
)
@@ -341,7 +359,8 @@ A list of items and costs is stored under the datum of every game mode, alongsid
/obj/item/device/radio/headset/uplink/New(var/loc, var/mind)
..()
hidden_uplink = new(src, mind)
hidden_uplink.uses = DEFAULT_TELECRYSTAL_AMOUNT
hidden_uplink.telecrystals = DEFAULT_TELECRYSTAL_AMOUNT
hidden_uplink.bluecrystals = DEFAULT_BLUECRYSTAL_AMOUNT
/*
* A simple device for accessing the SQL based contract database
@@ -355,10 +374,11 @@ A list of items and costs is stored under the datum of every game mode, alongsid
flags = CONDUCT
w_class = ITEMSIZE_SMALL
/obj/item/device/contract_uplink/New(var/loc, var/mind)
..()
/obj/item/device/contract_uplink/Initialize(var/mapload, var/mind)
. = ..()
hidden_uplink = new(src, mind)
hidden_uplink.uses = 0
hidden_uplink.telecrystals = 0
hidden_uplink.bluecrystals = 0
hidden_uplink.nanoui_menu = 3
/obj/item/device/contract_uplink/attack_self(mob/user as mob)
@@ -398,15 +418,22 @@ A list of items and costs is stored under the datum of every game mode, alongsid
icon_state = "radio"
flags = CONDUCT
w_class = ITEMSIZE_SMALL
var/starting_telecrystals // how much telecrystals the uplink should spawn with, defaults to default amount if not set
// Amount of starting telecrystals. Defaults to default amount if not set.
var/starting_telecrystals
/// Amount of starting bluecrystals, used to buy support/medical/gimmick items. Defaults to default amount if not set.
var/starting_bluecrystals
/obj/item/device/special_uplink/New(var/loc, var/mind)
..()
hidden_uplink = new(src, mind)
if(!starting_telecrystals)
hidden_uplink.uses = DEFAULT_TELECRYSTAL_AMOUNT
hidden_uplink.telecrystals = DEFAULT_TELECRYSTAL_AMOUNT
else
hidden_uplink.uses = starting_telecrystals
hidden_uplink.telecrystals = starting_telecrystals
if(!starting_bluecrystals)
hidden_uplink.bluecrystals = DEFAULT_BLUECRYSTAL_AMOUNT
else
hidden_uplink.bluecrystals = DEFAULT_BLUECRYSTAL_AMOUNT
hidden_uplink.nanoui_menu = 1
/obj/item/device/special_uplink/attack_self(mob/user as mob)

View File

@@ -27,11 +27,11 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
if(!prob(RI.keep_probability))
continue
var/datum/uplink_item/I = uplink.items_assoc[RI.uplink_item]
if(I.cost(telecrystals) > telecrystals)
if(I.telecrystal_cost(telecrystals) > telecrystals)
continue
if(bought_items && (I in bought_items) && !prob(RI.reselect_probability))
continue
if(U && !I.can_buy(U))
if(U && !I.can_buy_telecrystals(U))
continue
return I

View File

@@ -1,13 +1,18 @@
#define CRYSTAL_TYPE_TELECRYSTAL "telecrystal"
#define CRYSTAL_TYPE_BLUECRYSTAL "bluecrystal"
/obj/item/stack/telecrystal
name = "telecrystal"
desc = "It seems to be pulsing with suspiciously enticing energies."
desc_antag = "Telecrystals can be activated by utilizing them on devices with an actively running uplink. They will not activate on unactivated uplinks."
desc_antag = "Crystals can be activated by utilizing them on devices with an actively running uplink. They will not activate on unactivated uplinks."
singular_name = "telecrystal"
icon_state = "telecrystal"
w_class = ITEMSIZE_TINY
max_amount = 50
flags = NOBLUDGEON
origin_tech = list(TECH_MATERIAL = 6, TECH_BLUESPACE = 4)
icon_has_variants = TRUE
var/crystal_type = CRYSTAL_TYPE_TELECRYSTAL
/obj/item/stack/telecrystal/five/Initialize()
. = ..()
@@ -24,13 +29,40 @@
amount = 50
update_icon()
/obj/item/stack/telecrystal/afterattack(var/obj/item/I as obj, mob/user as mob, proximity)
/obj/item/stack/telecrystal/afterattack(var/obj/item/I, mob/user, proximity)
if(!proximity)
return
if(istype(I, /obj/item))
if(I.hidden_uplink && I.hidden_uplink.active) //No metagaming by using this on every PDA around just to see if it gets used up.
I.hidden_uplink.uses += amount
if(crystal_type == CRYSTAL_TYPE_TELECRYSTAL)
I.hidden_uplink.telecrystals += amount
else if(crystal_type == CRYSTAL_TYPE_BLUECRYSTAL)
I.hidden_uplink.bluecrystals += amount
I.hidden_uplink.update_nano_data()
SSnanoui.update_uis(I.hidden_uplink)
use(amount)
to_chat(user, SPAN_NOTICE("You slot \the [src] into \the [I] and charge its internal uplink."))
/obj/item/stack/telecrystal/blue
name = "bluecrystal"
singular_name = "bluecrystal"
icon_state = "bluecrystal"
crystal_type = CRYSTAL_TYPE_BLUECRYSTAL
/obj/item/stack/telecrystal/blue/five/Initialize()
. = ..()
amount = 5
update_icon()
/obj/item/stack/telecrystal/blue/twentyfive/Initialize()
. = ..()
amount = 25
update_icon()
/obj/item/stack/telecrystal/blue/fifty/Initialize()
. = ..()
amount = 50
update_icon()
#undef CRYSTAL_TYPE_TELECRYSTAL
#undef CRYSTAL_TYPE_BLUECRYSTAL

View File

@@ -6,7 +6,8 @@
/obj/item/implant/uplink/New()
activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
hidden_uplink = new(src)
hidden_uplink.uses = round((DEFAULT_TELECRYSTAL_AMOUNT / 2) * 0.8)
hidden_uplink.telecrystals = round((DEFAULT_TELECRYSTAL_AMOUNT / 2) * 0.8)
hidden_uplink.bluecrystals = round((DEFAULT_BLUECRYSTAL_AMOUNT / 2) * 0.8)
..()
return

View File

@@ -54,7 +54,8 @@
new /obj/item/pinpointer/nukeop(src)
new /obj/item/modular_computer/handheld/pda/syndicate(src)
var/obj/item/device/radio/uplink/U = new(src)
U.hidden_uplink.uses = 40
U.hidden_uplink.telecrystals = 40
U.hidden_uplink.bluecrystals = 20
return
/obj/structure/closet/syndicate/resources