diff --git a/code/__DEFINES/uplinks.dm b/code/__DEFINES/uplinks.dm new file mode 100644 index 00000000000..c8bdcd52ef7 --- /dev/null +++ b/code/__DEFINES/uplinks.dm @@ -0,0 +1,5 @@ +#define UPLINK_TYPE_TRAITOR "traitor" +#define UPLINK_TYPE_NUCLEAR "nuclear" +#define UPLINK_TYPE_SST "sst" +#define UPLINK_TYPE_SIT "sit" +#define UPLINK_TYPE_ADMIN "admin" diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 4c5a96c83ac..48b053594d2 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -1,6 +1,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) -/proc/get_uplink_items(job = null) +/proc/get_uplink_items(obj/item/uplink/U) var/list/uplink_items = list() var/list/sales_items = list() var/newreference = 1 @@ -12,9 +12,9 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) var/datum/uplink_item/I = new path if(!I.item) continue - if(I.gamemodes.len && SSticker && !(SSticker.mode.type in I.gamemodes)) + if(length(I.uplinktypes) && !(U.uplink_type in I.uplinktypes) && U.uplink_type != UPLINK_TYPE_ADMIN) continue - if(I.excludefrom.len && SSticker && (SSticker.mode.type in I.excludefrom)) + if(length(I.excludefrom) && (U.uplink_type in I.excludefrom)) continue if(I.last) last += I @@ -71,8 +71,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) var/cost = 0 var/last = 0 // Appear last var/abstract = 0 - var/list/gamemodes = list() // Empty list means it is in all the gamemodes. Otherwise place the gamemode name here. - var/list/excludefrom = list() //Empty list does nothing. Place the name of gamemode you don't want this item to be available in here. This is so you dont have to list EVERY mode to exclude something. + var/list/uplinktypes = list() // Empty list means it is in all the uplink types. Otherwise place the uplink type here. + var/list/excludefrom = list() // Empty list does nothing. Place the name of uplink type you don't want this item to be available in here. var/list/job = null var/surplus = 100 //Chance of being included in the surplus crate (when pick() selects it) var/cant_discount = FALSE @@ -85,7 +85,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/proc/spawn_item(turf/loc, obj/item/uplink/U) if(hijack_only && !(usr.mind.special_role == SPECIAL_ROLE_NUKEOPS))//nukies get items that regular traitors only get with hijack. If a hijack-only item is not for nukies, then exclude it via the gamemode list. - if(!(locate(/datum/objective/hijack) in usr.mind.get_all_objectives())) + if(!(locate(/datum/objective/hijack) in usr.mind.get_all_objectives()) && U.uplink_type != UPLINK_TYPE_ADMIN) to_chat(usr, "The Syndicate will only issue this extremely dangerous item to agents assigned the Hijack objective.") return @@ -162,7 +162,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/jobspecific category = "Job Specific Tools" cant_discount = TRUE - excludefrom = list(/datum/game_mode/nuclear) // Stops the job specific category appearing for nukies + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) // Stops the job specific category appearing for nukies //Clown /datum/uplink_item/jobspecific/clowngrenade @@ -424,7 +424,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "PP" item = /obj/item/pen/poison cost = 2 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) job = list("Head of Personnel", "Quartermaster", "Cargo Technician", "Librarian") @@ -454,7 +454,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) desc = "The automatic machine pistol version of the FK-69 'Stechkin' chambered in 10mm Auto with a detachable 20-round box magazine. Perfect for dual wielding or as backup." item = /obj/item/gun/projectile/automatic/pistol/APS cost = 8 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/dangerous/smg name = "C-20r Submachine Gun" @@ -462,7 +462,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) desc = "A fully-loaded Scarborough Arms bullpup submachine gun that fires .45 rounds with a 20-round magazine and is compatible with suppressors." item = /obj/item/gun/projectile/automatic/c20r cost = 14 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 40 /datum/uplink_item/dangerous/carbine @@ -471,7 +471,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "AR" item = /obj/item/gun/projectile/automatic/m90 cost = 18 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 50 /datum/uplink_item/dangerous/machinegun @@ -480,7 +480,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "LMG" item = /obj/item/gun/projectile/automatic/l6_saw cost = 40 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 0 /datum/uplink_item/dangerous/rapid @@ -497,7 +497,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/gun/projectile/automatic/sniper_rifle/syndicate cost = 16 surplus = 25 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/dangerous/crossbow name = "Energy Crossbow" @@ -505,7 +505,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "EC" item = /obj/item/gun/energy/kinetic_accelerator/crossbow cost = 12 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 50 /datum/uplink_item/dangerous/flamethrower @@ -514,7 +514,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "FT" item = /obj/item/flamethrower/full/tank cost = 8 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 40 /datum/uplink_item/dangerous/sword @@ -546,7 +546,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/support category = "Support and Mechanized Exosuits" surplus = 0 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/support/gygax name = "Gygax Exosuit" @@ -607,7 +607,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "FSMG" item = /obj/item/gun/projectile/automatic/c20r/toy cost = 5 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 0 /datum/uplink_item/dangerous/foammachinegun @@ -616,7 +616,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "FLMG" item = /obj/item/gun/projectile/automatic/l6_saw/toy cost = 10 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 0 /datum/uplink_item/dangerous/guardian @@ -625,7 +625,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) 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 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) cost = 12 refund_path = /obj/item/guardiancreator/tech/choose refundable = TRUE @@ -671,7 +671,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "10MMAPS" item = /obj/item/ammo_box/magazine/apsm10mm cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/apsap name = "Stechkin APS - 10mm Armour Piercing Magazine" @@ -679,7 +679,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "10MMAPSAP" item = /obj/item/ammo_box/magazine/apsm10mm/ap cost = 3 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/apsfire name = "Stechkin APS - 10mm Incendiary Magazine" @@ -687,7 +687,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "10MMAPSFIRE" item = /obj/item/ammo_box/magazine/apsm10mm/fire cost = 3 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/apshp name = "Stechkin APS - 10mm Hollow Point Magazine" @@ -695,7 +695,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "10MMAPSHP" item = /obj/item/ammo_box/magazine/apsm10mm/hp cost = 4 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/bullslug name = "Bulldog - 12g Slug Magazine" @@ -703,7 +703,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "12BSG" item = /obj/item/ammo_box/magazine/m12g cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/bullbuck name = "Bulldog - 12g Buckshot Magazine" @@ -711,7 +711,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "12BS" item = /obj/item/ammo_box/magazine/m12g/buckshot cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/bullmeteor name = "12g Meteorslug Shells" @@ -719,7 +719,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "12MS" item = /obj/item/ammo_box/magazine/m12g/meteor cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/bulldragon name = "Bulldog - 12g Dragon's Breath Magazine" @@ -727,7 +727,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "12DB" item = /obj/item/ammo_box/magazine/m12g/dragon cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/bulldog_ammobag name = "Bulldog - 12g Ammo Duffel Bag" @@ -735,7 +735,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "12ADB" item = /obj/item/storage/backpack/duffel/syndie/shotgun cost = 12 // normally 18 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/bulldog_XLmagsbag name = "Bulldog - 12g XL Magazine Duffel Bag" @@ -743,7 +743,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "12XLDB" item = /obj/item/storage/backpack/duffel/syndie/shotgunXLmags cost = 12 // normally 18 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/smg name = "C-20r - .45 Magazine" @@ -751,7 +751,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "45" item = /obj/item/ammo_box/magazine/smgm45 cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/smg_ammobag name = "C-20r - .45 Ammo Duffel Bag" @@ -759,7 +759,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "45ADB" item = /obj/item/storage/backpack/duffel/syndie/smg cost = 14 // normally 20 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/carbine name = "Carbine - 5.56 Toploader Magazine" @@ -767,7 +767,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "556" item = /obj/item/ammo_box/magazine/m556 cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/a40mm name = "Carbine - 40mm Grenade Ammo Box" @@ -775,7 +775,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "40MM" item = /obj/item/ammo_box/a40mm cost = 4 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/machinegun name = "L6 SAW - 5.56x45mm Box Magazine" @@ -783,12 +783,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "762" item = /obj/item/ammo_box/magazine/mm556x45 cost = 12 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 0 /datum/uplink_item/ammo/sniper cost = 4 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/sniper/basic name = "Sniper - .50 Magazine" @@ -832,7 +832,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "BTS" item = /obj/item/storage/box/syndie_kit/bioterror cost = 5 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/ammo/toydarts name = "Box of Riot Darts" @@ -840,7 +840,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "FOAM" item = /obj/item/ammo_box/foambox/riot cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 0 /datum/uplink_item/ammo/revolver @@ -871,7 +871,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SCS" item = /obj/item/sleeping_carp_scroll cost = 13 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) refundable = TRUE cant_discount = TRUE @@ -882,7 +882,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/CQC_manual cost = 13 cant_discount = TRUE - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_weapons/cameraflash name = "Camera Flash" @@ -914,7 +914,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SP" item = /obj/item/pen/sleepy cost = 8 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_weapons/foampistol name = "Toy Gun (with Stun Darts)" @@ -946,7 +946,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndie_kit/dart_gun cost = 4 surplus = 50 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_weapons/RSG name = "Rapid Syringe Gun" @@ -976,7 +976,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "CGP" item = /obj/item/clothing/gloves/color/black/krav_maga/combat cost = 5 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_weapons/combat_minus name = "Experimental Krav Gloves" @@ -984,7 +984,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "CGM" item = /obj/item/clothing/gloves/color/black/krav_maga cost = 10 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) // GRENADES AND EXPLOSIVES @@ -1012,7 +1012,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/backpack/duffel/syndie/c4 cost = 8 //20% discount! cant_discount = TRUE - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/explosives/breaching_charge name = "Composition X-4" @@ -1020,7 +1020,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "X4" item = /obj/item/grenade/plastic/c4/x4 cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/explosives/x4bag name = "Bag of X-4 explosives" @@ -1031,7 +1031,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/backpack/duffel/syndie/x4 cost = 4 cant_discount = TRUE - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/explosives/syndicate_bomb name = "Syndicate Bomb" @@ -1067,14 +1067,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "DEPC" item = /obj/item/cartridge/syndicate cost = 6 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/explosives/detomatix/nuclear desc = "When inserted into a personal digital assistant, this cartridge gives you five opportunities to detonate PDAs of crewmembers 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." item = /obj/item/cartridge/syndicate/nuclear reference = "DEPCN" excludefrom = list() - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/explosives/pizza_bomb name = "Pizza Bomb" @@ -1091,7 +1091,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/belt/grenade/full cost = 30 surplus = 0 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/explosives/manhacks name = "Viscerator Delivery Grenade" @@ -1099,7 +1099,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "VDG" item = /obj/item/grenade/spawnergrenade/manhacks cost = 6 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 35 /datum/uplink_item/explosives/atmosn2ogrenades @@ -1169,7 +1169,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SBM" item = /obj/item/storage/belt/military/traitor cost = 2 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_tools/frame name = "F.R.A.M.E. PDA Cartridge" @@ -1195,7 +1195,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "CHAM" item = /obj/item/storage/box/syndie_kit/chameleon cost = 4 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_tools/voice_modulator name = "Chameleon Voice Modulator Mask" @@ -1204,13 +1204,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "CVMM" item = /obj/item/clothing/mask/gas/voice_modulator/chameleon cost = 1 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_tools/chameleon/nuke reference = "NCHAM" cost = 6 - excludefrom = list() - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_tools/syndigaloshes name = "No-Slip Chameleon Shoes" @@ -1219,13 +1218,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "NSSS" item = /obj/item/clothing/shoes/chameleon/noslip cost = 2 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_tools/syndigaloshes/nuke reference = "NNSSS" cost = 4 excludefrom = list() - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_tools/chameleon_proj name = "Chameleon-Projector" @@ -1272,14 +1271,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "NOCS" item = /obj/item/clothing/shoes/chameleon/noslip cost = 2 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_tools/syndigaloshes/nuke reference = "NOCSN" item = /obj/item/clothing/shoes/chameleon/noslip cost = 4 excludefrom = list() - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/stealthy_tools/cutouts name = "Adaptive Cardboard Cutouts" @@ -1303,7 +1302,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "HBIK" item = /obj/item/storage/backpack/clown/syndie cost = 6 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 0 // DEVICE AND TOOLS @@ -1363,7 +1362,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "DRL" item = /obj/item/thermal_drill cost = 3 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/device_tools/diamond_drill name = "Diamond Tipped Thermal Safe Drill" @@ -1371,7 +1370,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "DDRL" item = /obj/item/thermal_drill/diamond_drill cost = 1 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/device_tools/medkit name = "Syndicate Combat Medic Kit" @@ -1380,7 +1379,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SCMK" item = /obj/item/storage/firstaid/tactical cost = 7 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/device_tools/vtec name = "Syndicate Cyborg Upgrade Module (VTEC)" @@ -1388,7 +1387,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "VTEC" item = /obj/item/borg/upgrade/vtec cost = 6 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) //Space Suits and Hardsuits /datum/uplink_item/suits @@ -1414,7 +1413,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "BRHS" item = /obj/item/storage/box/syndie_kit/hardsuit cost = 6 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/suits/hardsuit/elite name = "Elite Syndicate Hardsuit" @@ -1423,7 +1422,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 8 reference = "ESHS" excludefrom = list() - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/suits/hardsuit/shielded name = "Shielded Hardsuit" @@ -1432,7 +1431,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 30 reference = "SHS" excludefrom = list() - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/device_tools/binary name = "Binary Translator Key" @@ -1464,7 +1463,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "BRMB" item = /obj/item/clothing/shoes/magboots/syndie cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/device_tools/powersink name = "Power Sink" @@ -1493,7 +1492,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SD" item = /obj/item/syndicatedetonator cost = 3 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/device_tools/advpinpointer name = "Advanced Pinpointer" @@ -1522,7 +1521,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/circuitboard/teleporter reference = "TP" cost = 20 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 0 /datum/uplink_item/device_tools/assault_pod @@ -1531,7 +1530,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/assault_pod reference = "APT" cost = 25 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 0 /datum/uplink_item/device_tools/shield @@ -1540,7 +1539,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/shield/energy reference = "ESD" cost = 16 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 20 /datum/uplink_item/device_tools/dropwall @@ -1549,7 +1548,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndie_kit/dropwall reference = "DWG" cost = 10 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/device_tools/medgun name = "Medbeam Gun" @@ -1557,7 +1556,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/gun/medbeam reference = "MBG" cost = 15 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) // IMPLANTS @@ -1578,9 +1577,17 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "UI" item = /obj/item/implanter/uplink cost = 14 + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 0 cant_discount = TRUE +/datum/uplink_item/implants/uplink/nuclear + name = "Nuclear Uplink Implant" + reference = "UIN" + item = /obj/item/implanter/nuclear_uplink + excludefrom = list() + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) + /datum/uplink_item/implants/storage name = "Storage Implant" desc = "An implant injected into the body, and later activated at the user's will. It will open a small subspace pocket capable of storing two items." @@ -1609,13 +1616,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "MBI" item = /obj/item/implanter/explosive cost = 2 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) // Cybernetics /datum/uplink_item/cyber_implants category = "Cybernetic Implants" surplus = 0 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/cyber_implants/thermals name = "Thermal Vision Implant" @@ -1665,7 +1672,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SPC" item = /obj/item/deck/cards/syndicate cost = 1 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) surplus = 40 /datum/uplink_item/badass/syndiecash @@ -1682,7 +1689,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "PBAG" item = /obj/item/storage/bag/plasticbag cost = 1 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/badass/balloon name = "For showing that you are The Boss" @@ -1698,7 +1705,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "HAB" item = /obj/item/implanter/explosive_macro cost = 20 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/bundles_TC category = "Bundles and Telecrystals" @@ -1712,7 +1719,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "BULB" item = /obj/item/storage/backpack/duffel/syndie/bulldogbundle cost = 9 // normally 12 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/bundles_TC/c20r name = "C-20r Bundle" @@ -1720,7 +1727,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "C20B" item = /obj/item/storage/backpack/duffel/syndie/c20rbundle cost = 18 // normally 21 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/bundles_TC/cyber_implants name = "Cybernetic Implants Bundle" @@ -1728,7 +1735,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "CIB" item = /obj/item/storage/box/cyber_implants cost = 40 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/bundles_TC/medical name = "Medical Bundle" @@ -1737,7 +1744,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "MEDB" item = /obj/item/storage/backpack/duffel/syndie/med/medicalbundle cost = 20 // normally 24 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/bundles_TC/sniper name = "Sniper bundle" @@ -1747,7 +1754,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SNPB" item = /obj/item/storage/briefcase/sniperbundle cost = 18 // normally 23 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/bundles_TC/contractor name = "Syndicate Contractor Kit" @@ -1755,7 +1762,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SCOK" cost = 20 item = /obj/item/storage/box/syndie_kit/contractor - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/bundles_TC/contractor/spawn_item(turf/loc, obj/item/uplink/U) var/datum/mind/mind = usr.mind @@ -1787,7 +1794,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SYB" item = /obj/item/storage/box/syndicate cost = 20 - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) /datum/uplink_item/bundles_TC/surplus_crate name = "Syndicate Surplus Crate" @@ -1795,7 +1802,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "SYSC" cost = 20 item = /obj/item/storage/box/syndicate - excludefrom = list(/datum/game_mode/nuclear) + excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) var/crate_value = 50 /datum/uplink_item/bundles_TC/surplus_crate/super @@ -1807,7 +1814,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/bundles_TC/surplus_crate/spawn_item(turf/loc, obj/item/uplink/U) var/obj/structure/closet/crate/C = new(loc) - var/list/temp_uplink_list = get_uplink_items() + var/list/temp_uplink_list = get_uplink_items(U) var/list/buyable_items = list() for(var/category in temp_uplink_list) buyable_items += temp_uplink_list[category] @@ -1863,4 +1870,4 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "RTCB" item = /obj/item/stack/telecrystal/fifty cost = 50 - gamemodes = list(/datum/game_mode/nuclear) + uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST) diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 72d591db9a2..ab5a007df3d 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -22,17 +22,21 @@ GLOBAL_LIST_EMPTY(world_uplinks) var/job = null var/temp_category - var/uplink_type = "traitor" + var/uplink_type = UPLINK_TYPE_TRAITOR /// Whether the uplink is jammed and cannot be used to order items. var/is_jammed = FALSE /obj/item/uplink/ui_host() return loc +/obj/item/uplink/proc/update_uplink_type(new_uplink_type) + uplink_type = new_uplink_type + uplink_items = get_uplink_items(src) + /obj/item/uplink/New() ..() uses = SSticker.mode.uplink_uses - uplink_items = get_uplink_items() + uplink_items = get_uplink_items(src) GLOB.world_uplinks += src @@ -58,7 +62,7 @@ GLOBAL_LIST_EMPTY(world_uplinks) cats[++cats.len] = list("cat" = category, "items" = list()) for(var/datum/uplink_item/I in uplink_items[category]) if(I.job && I.job.len) - if(!(I.job.Find(job))) + if(!(I.job.Find(job)) && uplink_type != UPLINK_TYPE_ADMIN) continue cats[cats.len]["items"] += list(list("name" = sanitize(I.name), "desc" = sanitize(I.description()),"cost" = I.cost, "hijack_only" = I.hijack_only, "obj_path" = I.reference, "refundable" = I.refundable)) uplink_items[I.reference] = I @@ -253,7 +257,7 @@ GLOBAL_LIST_EMPTY(world_uplinks) /obj/item/radio/uplink/nuclear/New() ..() if(hidden_uplink) - hidden_uplink.uplink_type = "nuclear" + hidden_uplink.update_uplink_type(UPLINK_TYPE_NUCLEAR) GLOB.nuclear_uplink_list += src /obj/item/radio/uplink/nuclear/Destroy() @@ -263,7 +267,13 @@ GLOBAL_LIST_EMPTY(world_uplinks) /obj/item/radio/uplink/sst/New() ..() if(hidden_uplink) - hidden_uplink.uplink_type = "sst" + hidden_uplink.update_uplink_type(UPLINK_TYPE_SST) + +/obj/item/radio/uplink/admin/New() + ..() + if(hidden_uplink) + hidden_uplink.update_uplink_type(UPLINK_TYPE_ADMIN) + hidden_uplink.uses = 500 /obj/item/multitool/uplink/New() ..() diff --git a/code/game/objects/items/weapons/implants/implantuplink.dm b/code/game/objects/items/weapons/implants/implantuplink.dm index 3d5e2e37591..fca50af88ba 100644 --- a/code/game/objects/items/weapons/implants/implantuplink.dm +++ b/code/game/objects/items/weapons/implants/implantuplink.dm @@ -10,15 +10,20 @@ hidden_uplink.uses = 10 ..() +/obj/item/implant/uplink/nuclear/New() + ..() + if(hidden_uplink) + hidden_uplink.update_uplink_type(UPLINK_TYPE_NUCLEAR) + /obj/item/implant/uplink/sit/New() ..() if(hidden_uplink) - hidden_uplink.uplink_type = "sit" + hidden_uplink.update_uplink_type(UPLINK_TYPE_SIT) /obj/item/implant/uplink/admin/New() ..() if(hidden_uplink) - hidden_uplink.uplink_type = "admin" + hidden_uplink.update_uplink_type(UPLINK_TYPE_ADMIN) /obj/item/implant/uplink/implant(mob/source) var/obj/item/implant/imp_e = locate(src.type) in source @@ -43,3 +48,10 @@ /obj/item/implanter/uplink/New() imp = new /obj/item/implant/uplink(src) ..() + +/obj/item/implanter/nuclear_uplink + name = "implanter (nuclear uplink)" + +/obj/item/implanter/nuclear_uplink/New() + imp = new /obj/item/implant/uplink/nuclear(src) + ..() diff --git a/paradise.dme b/paradise.dme index 31e1732ef04..3ce0e0477e5 100644 --- a/paradise.dme +++ b/paradise.dme @@ -96,6 +96,7 @@ #include "code\__DEFINES\tgui.dm" #include "code\__DEFINES\tools.dm" #include "code\__DEFINES\typeids.dm" +#include "code\__DEFINES\uplinks.dm" #include "code\__DEFINES\vampire.dm" #include "code\__DEFINES\vv.dm" #include "code\__DEFINES\wires.dm"