From 02a9ac9b941612383fc879cb5e0cf7b9ff7022ef Mon Sep 17 00:00:00 2001 From: PowerfulBacon <26465327+PowerfulBacon@users.noreply.github.com> Date: Thu, 11 Apr 2024 09:22:03 +0100 Subject: [PATCH] Display reputation and fix nukies --- code/__DEFINES/antagonists.dm | 2 + .../subsystem/priority_directives.dm | 6 +- code/datums/components/uplink.dm | 4 +- code/game/gamemodes/nuclear/nuclear.dm | 5 +- code/modules/uplink/uplink_devices.dm | 12 +-- code/modules/uplink/uplink_items.dm | 98 ++++++++++++++----- tgui/packages/tgui/interfaces/Uplink.js | 38 ++++++- .../tgui/styles/interfaces/Uplink.scss | 3 +- 8 files changed, 126 insertions(+), 42 deletions(-) diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 224b13fe9241e..114a97015fca2 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -138,6 +138,8 @@ /// Access to anything your heart could ever desire #define REPUTATION_MAX 1000 +#define REPUTATION_TRAITOR_START 300 + /// How much reputation is gained per completed directive #define REPUTATION_GAIN_PER_DIRECTIVE 200 diff --git a/code/controllers/subsystem/priority_directives.dm b/code/controllers/subsystem/priority_directives.dm index 75db9c2743c66..81c5e03efd200 100644 --- a/code/controllers/subsystem/priority_directives.dm +++ b/code/controllers/subsystem/priority_directives.dm @@ -7,7 +7,7 @@ SUBSYSTEM_DEF(directives) /datum/controller/subsystem/directives/Initialize(start_timeofday) . = ..() - next_directive_time = world.time + rand(10 MINUTES, 15 MINUTES) + next_directive_time = world.time + 10 MINUTES for (var/directive_type in subtypesof(/datum/priority_directive)) directives += new directive_type() @@ -102,7 +102,9 @@ SUBSYSTEM_DEF(directives) "track_x" = track_turf?.x, "track_y" = track_turf?.y, "track_z" = track_turf?.z, - "action" = active_directive.get_special_action()?.action_name + "action" = active_directive.get_special_action()?.action_name, + "rep_loss" = active_directive.reputation_loss, + "rep_gain" = active_directive.reputation_reward, )) data["objectives"] = known_objectives return data diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm index 46e7290ced9e7..781c0d7042fd4 100644 --- a/code/datums/components/uplink.dm +++ b/code/datums/components/uplink.dm @@ -33,7 +33,7 @@ GLOBAL_LIST_EMPTY(uplinks) var/non_traitor_allowed = TRUE // Tied to uplink rather than mind since generally traitors only have 1 uplink // and tying it to anything else is difficult due to how much uses an uplink - var/reputation = 200 + var/reputation = REPUTATION_TRAITOR_START var/list/previous_attempts @@ -42,7 +42,7 @@ GLOBAL_LIST_EMPTY(uplinks) _enabled = FALSE, uplink_flag = UPLINK_TRAITORS, starting_tc = TELECRYSTALS_DEFAULT, - _reputation = 200, + _reputation = REPUTATION_TRAITOR_START, ) if(!isitem(parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 34f92120e4b10..f340503bd45e2 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -129,6 +129,7 @@ /obj/item/knife/combat/survival) var/tc = 25 + var/reputation = REPUTATION_EXCELLENT var/command_radio = FALSE var/uplink_type = /obj/item/uplink/nuclear @@ -139,6 +140,7 @@ gloves = /obj/item/clothing/gloves/krav_maga/combatglovesplus r_hand = /obj/item/nuclear_challenge command_radio = TRUE + reputation = REPUTATION_ELITE /datum/outfit/syndicate/no_crystals name = "Syndicate Operative - Reinforcement" @@ -153,7 +155,7 @@ R.use_command = TRUE if(ispath(uplink_type, /obj/item/uplink/nuclear) || tc) // /obj/item/uplink/nuclear understands 0 tc - var/obj/item/U = new uplink_type(H, H, tc) + var/obj/item/U = new uplink_type(H, H, tc, reputation) H.equip_to_slot_or_del(U, ITEM_SLOT_BACKPACK) var/obj/item/implant/explosive/E = new/obj/item/implant/explosive(H) @@ -177,6 +179,7 @@ /obj/item/tank/jetpack/oxygen/harness=1,\ /obj/item/gun/ballistic/automatic/pistol=1,\ /obj/item/knife/combat/survival) + reputation = REPUTATION_ELITE /datum/game_mode/nuclear/generate_credit_text() diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm index 6e4ebd8dbbb51..a20bb6069fcf0 100644 --- a/code/modules/uplink/uplink_devices.dm +++ b/code/modules/uplink/uplink_devices.dm @@ -21,14 +21,14 @@ var/uplink_flag = UPLINK_TRAITORS -/obj/item/uplink/Initialize(mapload, mob/owner, tc_amount = 20) +/obj/item/uplink/Initialize(mapload, mob/owner, tc_amount = 20, rep_amount = TRAITOR_REPUTATION_START) . = ..() AddComponent(/datum/component/uplink, owner?.mind, FALSE, TRUE, uplink_flag, tc_amount) /obj/item/uplink/debug name = "debug uplink" -/obj/item/uplink/debug/Initialize(mapload, mob/owner, tc_amount = 9000) +/obj/item/uplink/debug/Initialize(mapload, mob/owner, tc_amount = 9000, rep_amount = REPUTATION_MAX) . = ..() var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) hidden_uplink.name = "debug uplink" @@ -41,7 +41,7 @@ name = "debug nuclear uplink" uplink_flag = UPLINK_NUKE_OPS -/obj/item/uplink/nuclear/debug/Initialize(mapload, mob/owner, tc_amount = 9000) +/obj/item/uplink/nuclear/debug/Initialize(mapload, mob/owner, tc_amount = 9000, rep_amount = REPUTATION_MAX) . = ..() var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) hidden_uplink.name = "debug nuclear uplink" @@ -62,17 +62,17 @@ name = "dusty radio" desc = "A dusty looking radio." -/obj/item/uplink/old/Initialize(mapload, mob/owner, tc_amount = 10) +/obj/item/uplink/old/Initialize(mapload, mob/owner, tc_amount = 10, rep_amount = REPUTATION_LOW) . = ..() var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink, owner?.mind) hidden_uplink.name = "dusty radio" // Multitool uplink -/obj/item/multitool/uplink/Initialize(mapload, mob/owner, tc_amount = 20) +/obj/item/multitool/uplink/Initialize(mapload, mob/owner, tc_amount = 20, rep_amount = TRAITOR_REPUTATION_START) . = ..() AddComponent(/datum/component/uplink, owner?.mind, FALSE, TRUE, UPLINK_TRAITORS, tc_amount) // Pen uplink -/obj/item/pen/uplink/Initialize(mapload, mob/owner, tc_amount = 20) +/obj/item/pen/uplink/Initialize(mapload, mob/owner, tc_amount = 20, rep_amount = TRAITOR_REPUTATION_START) . = ..() AddComponent(/datum/component/uplink, owner?.mind, TRUE, FALSE, UPLINK_TRAITORS, tc_amount) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index c81ee18a1d2fb..673bef24379ed 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -284,7 +284,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( you will receive. May contain discontinued and/or exotic items." item = /obj/item/storage/box/syndie_kit/bundle_A cost = 15 - reputation_required = REPUTATION_STANDARD + reputation_required = REPUTATION_GOOD purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS) /datum/uplink_item/bundles_TC/bundle_B @@ -293,7 +293,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( In Syndi-kit Special, you will receive items used by famous syndicate agents of the past. Collectively worth more than 20 telecrystals, the syndicate loves a good throwback." item = /obj/item/storage/box/syndie_kit/bundle_B cost = 15 - reputation_required = REPUTATION_STANDARD + reputation_required = REPUTATION_GOOD purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS) /datum/uplink_item/bundles_TC/surplus @@ -493,6 +493,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( desc = "A knife that is made of two razor sharp blades, it has a secret compartment in the handle to store liquids which are injected when stabbing something. Can hold up to forty units of reagents but comes empty." item = /obj/item/knife/poison cost = 6 // all in all it's not super stealthy and you have to get some chemicals yourself + reputation_required = REPUTATION_GOOD /datum/uplink_item/dangerous/rawketlawnchair name = "84mm Rocket Propelled Grenade Launcher" @@ -588,6 +589,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( player_minimum = 25 cost = 18 purchasable_from = ~UPLINK_CLOWN_OPS + reputation_required = REPUTATION_EXCELLENT /datum/uplink_item/dangerous/doublesword/get_discount() return pick(4;0.8,2;0.65,1;0.5) @@ -599,6 +601,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/melee/transforming/energy/sword/saber cost = 8 purchasable_from = ~UPLINK_CLOWN_OPS + reputation_required = REPUTATION_STANDARD /datum/uplink_item/dangerous/shield name = "Energy Shield" @@ -632,8 +635,8 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( 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. Holoparasites come in various types and share damage with their host." item = /obj/item/holoparasite_creator/tech - cost = 15 - reputation_required = REPUTATION_EXCELLENT + cost = 12 + reputation_required = REPUTATION_ELITE surplus = 10 purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS) player_minimum = 25 @@ -691,6 +694,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/gun/ballistic/automatic/pistol cost = 7 purchasable_from = ~UPLINK_CLOWN_OPS + reputation_required = REPUTATION_STANDARD /datum/uplink_item/dangerous/derringer name = "'Infiltrator' Coat Pistol" @@ -713,11 +717,10 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( name = "Syndicate Revolver" desc = "A brutally simple Syndicate revolver that fires .357 Magnum rounds and has 7 chambers." item = /obj/item/gun/ballistic/revolver - player_minimum = 25 cost = 12 - reputation_required = REPUTATION_GOOD surplus = 50 purchasable_from = ~UPLINK_CLOWN_OPS + reputation_required = REPUTATION_GOOD /datum/uplink_item/dangerous/foamsmg name = "Toy Submachine Gun" @@ -866,6 +869,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/storage/box/syndie_kit/chemical cost = 6 surplus = 50 + reputation_required = REPUTATION_GOOD /datum/uplink_item/stealthy_weapons/romerol_kit name = "Romerol" @@ -888,6 +892,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/pen/sleepy cost = 5 purchasable_from = ~UPLINK_NUKE_OPS + reputation_required = REPUTATION_GOOD /datum/uplink_item/stealthy_weapons/suppressor name = "Suppressor" @@ -910,6 +915,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( purchasable_from = ~UPLINK_CLOWN_OPS illegal_tech = FALSE contents_are_illegal_tech = FALSE + reputation_required = REPUTATION_STANDARD /datum/uplink_item/ammo/pistolap name = "10mm Armour Piercing Magazine" @@ -920,6 +926,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( purchasable_from = ~UPLINK_CLOWN_OPS illegal_tech = FALSE contents_are_illegal_tech = FALSE + reputation_required = REPUTATION_STANDARD /datum/uplink_item/ammo/pistolhp name = "10mm Hollow Point Magazine" @@ -930,6 +937,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( purchasable_from = ~UPLINK_CLOWN_OPS illegal_tech = FALSE contents_are_illegal_tech = FALSE + reputation_required = REPUTATION_STANDARD /datum/uplink_item/ammo/pistolfire name = "10mm Incendiary Magazine" @@ -940,6 +948,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( purchasable_from = ~UPLINK_CLOWN_OPS illegal_tech = FALSE contents_are_illegal_tech = FALSE + reputation_required = REPUTATION_STANDARD /datum/uplink_item/ammo/shotgun cost = 2 @@ -995,6 +1004,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( purchasable_from = ~UPLINK_CLOWN_OPS illegal_tech = FALSE contents_are_illegal_tech = FALSE + reputation_required = REPUTATION_GOOD /datum/uplink_item/ammo/c38 name = ".38-special Speed Loader" @@ -1306,7 +1316,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( The concussive effect from the explosion will knock the recipient out for a short period, and deafen them for longer." item = /obj/item/computer_hardware/hard_drive/role/virus/syndicate cost = 6 - reputation_required = REPUTATION_GOOD + reputation_required = REPUTATION_EXCELLENT restricted = TRUE /datum/uplink_item/explosives/emp @@ -1315,12 +1325,14 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( security's energy weapons and silicon lifeforms when you're in a tight spot." item = /obj/item/storage/box/syndie_kit/emp cost = 4 + reputation_required = REPUTATION_GOOD /datum/uplink_item/explosives/ducky name = "Exploding Rubber Duck" desc = "A seemingly innocent rubber duck. When placed, it arms, and will violently explode when stepped on." item = /obj/item/deployablemine/traitor cost = 4 + reputation_required = REPUTATION_GOOD /datum/uplink_item/explosives/doorCharge name = "Airlock Charge" @@ -1328,6 +1340,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( To apply, remove the airlock's maintenance panel and place it within." item = /obj/item/doorCharge cost = 4 + reputation_required = REPUTATION_GOOD /datum/uplink_item/explosives/virus_grenade name = "Fungal Tuberculosis Grenade" @@ -1354,7 +1367,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( This variant has been fitted with high yield X4 charges for a larger explosion." item = /obj/item/deployablemine/traitor/bigboom cost = 10 - reputation_required = REPUTATION_GOOD + reputation_required = REPUTATION_EXCELLENT /datum/uplink_item/explosives/pizza_bomb name = "Pizza Bomb" @@ -1363,6 +1376,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/pizzabox/bomb cost = 3 surplus = 8 + reputation_required = REPUTATION_GOOD /datum/uplink_item/explosives/soap_clusterbang name = "Slipocalypse Clusterbang" @@ -1379,8 +1393,8 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( be defused, and some crew may attempt to do so. \ The bomb core can be pried out and manually detonated with other explosives." item = /obj/item/sbeacondrop/bomb - cost = 12 - reputation_required = REPUTATION_GOOD + cost = 8 + reputation_required = REPUTATION_EXCELLENT /datum/uplink_item/explosives/syndicate_detonator name = "Syndicate Detonator" @@ -1399,7 +1413,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/grenade/syndieminibomb cost = 4 purchasable_from = ~UPLINK_CLOWN_OPS - reputation_required = REPUTATION_STANDARD + reputation_required = REPUTATION_GOOD /datum/uplink_item/explosives/tearstache name = "Teachstache Grenade" @@ -1536,7 +1550,8 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't \ move the projector from their hand. Disguised users move slowly, and projectiles pass over them." item = /obj/item/chameleon - cost = 7 + cost = 6 + reputation_required = REPUTATION_GOOD /datum/uplink_item/stealthy_tools/codespeak_manual name = "Codespeak Manual" @@ -1585,8 +1600,9 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( desc = "These shoes will allow the wearer to run on wet floors and slippery objects without falling down. \ They do not work on heavily lubricated surfaces." item = /obj/item/clothing/shoes/chameleon/noslip - cost = 3 + cost = 2 purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS) + reputation_required = REPUTATION_GOOD /datum/uplink_item/stealthy_tools/syndigaloshes/nuke item = /obj/item/clothing/shoes/chameleon/noslip @@ -1616,6 +1632,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( desc = "This device will disrupt any nearby outgoing wireless signals when activated." item = /obj/item/jammer cost = 5 + reputation_required = REPUTATION_GOOD /datum/uplink_item/stealthy_tools/smugglersatchel name = "Smuggler's Satchel" @@ -1638,6 +1655,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( sightings, however." item = /obj/item/storage/box/syndie_kit/space cost = 3 + reputation_required = REPUTATION_STANDARD /datum/uplink_item/suits/hardsuit name = "Syndicate Hardsuit" @@ -1647,9 +1665,9 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( Additionally the suit is collapsible, making it small enough to fit within a backpack. \ Nanotrasen crew who spot these suits are known to panic." item = /obj/item/clothing/suit/space/hardsuit/syndi - cost = 7 + cost = 5 purchasable_from = ~UPLINK_NUKE_OPS //you can't buy it in nuke, because the elite hardsuit costs the same while being better - reputation_required = REPUTATION_STANDARD + reputation_required = REPUTATION_EXCELLENT /datum/uplink_item/suits/hardsuit/spawn_item(spawn_path, mob/user, datum/component/uplink/U) var/obj/item/clothing/suit/space/hardsuit/suit = ..() @@ -1710,6 +1728,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( cost = 4 surplus = 75 restricted = TRUE + reputation_required = REPUTATION_GOOD /datum/uplink_item/device_tools/compressionkit name = "Bluespace Compression Kit" @@ -1798,7 +1817,8 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( Due to the Syndicate's more limited research of teleportation technologies, it is incapable of phasing the user \ through solid matter nor is it capable of teleporting them across longer ranges." item = /obj/item/teleporter - cost = 7 + cost = 5 + reputation_required = REPUTATION_GOOD /datum/uplink_item/device_tools/frame name = "F.R.A.M.E. PDA Disk" @@ -1853,13 +1873,14 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( Be careful with wording, as artificial intelligences may look for loopholes to exploit." item = /obj/item/aiModule/syndicate cost = 3 + reputation_required = REPUTATION_GOOD /datum/uplink_item/device_tools/hypnotic_flash name = "Hypnotic Flash" desc = "A modified flash able to hypnotize targets. If the target is not in a mentally vulnerable state, it will only confuse and pacify them temporarily." item = /obj/item/assembly/flash/hypnotic cost = 7 - reputation_required = REPUTATION_GOOD + reputation_required = REPUTATION_EXCELLENT /datum/uplink_item/device_tools/medgun name = "Medbeam Gun" @@ -1896,6 +1917,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/reagent_containers/hypospray/medipen/stimulants cost = 5 surplus = 90 + reputation_required = REPUTATION_GOOD /datum/uplink_item/device_tools/medkit name = "Syndicate Combat Medic Kit" @@ -1921,6 +1943,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( a Syndicate brand MMI, a straitjacket, and a muzzle." item = /obj/item/storage/backpack/duffelbag/syndie/surgery cost = 3 + reputation_required = REPUTATION_GOOD /datum/uplink_item/device_tools/encryptionkey name = "Syndicate Encryption Key" @@ -1966,6 +1989,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( and artificial intelligence cores emit more of this light than cooler objects like walls and airlocks." item = /obj/item/clothing/glasses/thermal/syndi cost = 3 + reputation_required = REPUTATION_GOOD // Implants /datum/uplink_item/implants @@ -1979,6 +2003,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/storage/box/syndie_kit/imp_adrenal cost = 8 player_minimum = 20 + reputation_required = REPUTATION_GOOD /datum/uplink_item/implants/antistun name = "CNS Rebooter Implant" @@ -2035,14 +2060,16 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( desc = "This one-of-a-kind implant will make you almost invisible if you play your cards right. \ On activation, it will conceal you inside a chameleon cardboard box that is only revealed once someone bumps into it." item = /obj/item/storage/box/syndie_kit/imp_stealth - cost = 7 + cost = 6 + reputation_required = REPUTATION_EXCELLENT /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 bluespace \ pocket capable of storing two regular-sized items." item = /obj/item/storage/box/syndie_kit/imp_storage - cost = 7 + cost = 5 + reputation_required = REPUTATION_GOOD /datum/uplink_item/implants/thermals name = "Thermal Eyes" @@ -2138,6 +2165,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( cost = 2 restricted_roles = list(JOB_NAME_ASSISTANT) surplus = 0 + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/pie_cannon name = "Banana Cream Pie Cannon" @@ -2146,6 +2174,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/pneumatic_cannon/pie/selfcharge restricted_roles = list(JOB_NAME_CLOWN) surplus = 0 //No fun unless you're the clown! + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/blastcannon name = "Blast Cannon" @@ -2156,6 +2185,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/gun/blastcannon cost = 14 //High cost because of the potential for extreme damage in the hands of a skilled scientist. restricted_roles = list(JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_SCIENTIST) + reputation_required = REPUTATION_EXCELLENT /datum/uplink_item/role_restricted/crushmagboots name = "Crushing Magboots" @@ -2171,6 +2201,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/storage/box/gorillacubes cost = 6 restricted_roles = list(JOB_NAME_GENETICIST, JOB_NAME_CHIEFMEDICALOFFICER) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/rad_laser name = "Radioactive Microlaser" @@ -2181,6 +2212,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/healthanalyzer/rad_laser restricted_roles = list(JOB_NAME_MEDICALDOCTOR, JOB_NAME_CHIEFMEDICALOFFICER, JOB_NAME_ROBOTICIST, JOB_NAME_PARAMEDIC, JOB_NAME_BRIGPHYSICIAN) cost = 3 + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/syndicate_mmi name = "Syndicate MMI" @@ -2215,6 +2247,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/sbeacondrop/clownbomb cost = 10 restricted_roles = list(JOB_NAME_CLOWN) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/clown_grenade name = "C.L.U.W.N.E" @@ -2223,6 +2256,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/grenade/spawnergrenade/clown cost = 3 restricted_roles = list(JOB_NAME_CLOWN) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/clown_grenade_broken @@ -2233,6 +2267,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/grenade/spawnergrenade/clown_broken cost = 5 restricted_roles = list(JOB_NAME_CLOWN) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/clowncar name = "Clown Car" @@ -2256,22 +2291,24 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/clothing/shoes/clown_shoes/taeclowndo restricted_roles = list(JOB_NAME_CLOWN) -/datum/uplink_item/role_restricted/superior_honkrender - name = "Superior Honkrender" +/datum/uplink_item/role_restricted/honkrender + name = "Honkrender" desc = "An ancient artifact recovered from an ancient cave. Opens the way to the Dark Carnival" item = /obj/item/veilrender/honkrender - cost = 8 + cost = 6 restricted = TRUE restricted_roles = list(JOB_NAME_CLOWN, JOB_NAME_CHAPLAIN) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/superior_honkrender name = "Superior Honkrender" desc = "An ancient artifact recovered from -. Opens the way to TRANSMISSION OFFLINE\ All praise be to the honkmother" item = /obj/item/veilrender/honkrender/honkhulkrender - cost = 20 + cost = 12 restricted = TRUE restricted_roles = list(JOB_NAME_CLOWN, JOB_NAME_CHAPLAIN) + reputation_required = REPUTATION_EXCELLENT /datum/uplink_item/role_restricted/concealed_weapon_bay name = "Concealed Weapon Bay" @@ -2281,6 +2318,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/mecha_parts/concealed_weapon_bay cost = 3 restricted_roles = list(JOB_NAME_ROBOTICIST, JOB_NAME_RESEARCHDIRECTOR) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/haunted_magic_eightball name = "Haunted Magic Eightball" @@ -2304,6 +2342,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( item = /obj/item/prisoncube cost = 5 restricted_roles = list(JOB_NAME_CURATOR) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/his_grace name = "His Grace" @@ -2375,6 +2414,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( cost = 10 player_minimum = 25 restricted_roles = list(JOB_NAME_BOTANIST, JOB_NAME_COOK, JOB_NAME_BARTENDER) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/holocarp name = "Holocarp Parasites" @@ -2423,6 +2463,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( cost = 5 //you need one for full damage, so total of 5 for maximum damage limited_stock = 1 //you can't use more than one! restricted_roles = list(JOB_NAME_SHAFTMINER) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/esaw name = "Energy Saw" @@ -2437,28 +2478,32 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( cost = 8 item = /obj/item/autosurgeon/syndicate/esaw_arm restricted_roles = list(JOB_NAME_MEDICALDOCTOR, JOB_NAME_CHIEFMEDICALOFFICER, JOB_NAME_PARAMEDIC, JOB_NAME_BRIGPHYSICIAN) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/magillitis_serum name = "Magillitis Serum Autoinjector" desc = "A single-use autoinjector which contains an experimental serum that causes rapid muscular growth in Hominidae. \ Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." item = /obj/item/reagent_containers/hypospray/medipen/magillitis - cost = 15 + cost = 13 restricted_roles = list(JOB_NAME_GENETICIST, JOB_NAME_CHIEFMEDICALOFFICER) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/modified_syringe_gun name = "Modified Syringe Gun" desc = "A syringe gun that fires DNA injectors instead of normal syringes." item = /obj/item/gun/syringe/dna - cost = 14 + cost = 12 restricted_roles = list(JOB_NAME_GENETICIST, JOB_NAME_CHIEFMEDICALOFFICER) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/chemical_gun name = "Reagent Dartgun" desc = "A heavily modified syringe gun which is capable of synthesizing its own chemical darts using input reagents. Can hold 100u of reagents." item = /obj/item/gun/chem - cost = 12 + cost = 11 restricted_roles = list(JOB_NAME_CHEMIST, JOB_NAME_CHIEFMEDICALOFFICER) + reputation_required = REPUTATION_GOOD /datum/uplink_item/role_restricted/reverse_bear_trap name = "Reverse Bear Trap" @@ -2483,6 +2528,7 @@ GLOBAL_LIST_INIT(illegal_tech_blacklist, typecacheof(list( cost = 12 item = /obj/item/autosurgeon/syndicate/laser_arm restricted_roles = list(JOB_NAME_ROBOTICIST, JOB_NAME_RESEARCHDIRECTOR) + reputation_required = REPUTATION_GOOD // Pointless diff --git a/tgui/packages/tgui/interfaces/Uplink.js b/tgui/packages/tgui/interfaces/Uplink.js index b7a958a9245d9..0e7ab328c3bda 100644 --- a/tgui/packages/tgui/interfaces/Uplink.js +++ b/tgui/packages/tgui/interfaces/Uplink.js @@ -270,6 +270,8 @@ const Directives = (props, context) => { name: objective.name, reward: objective.reward || 0, time_left: objective.time ? (objective.time - time) * 0.1 : null, + rep_gain: objective.rep_gain || null, + rep_loss: objective.rep_loss || null, }} /> ))} @@ -317,6 +319,20 @@ const Directives = (props, context) => { {task} ))} + {(selectedObjective?.rep_gain || selectedObjective?.rep_loss) && ( + <> + + Reputation Details + + + This mission will affect your reputation level.
+ +
+ + )} Additional Details @@ -331,10 +347,13 @@ const Directives = (props, context) => {
- + {selectedObjective?.reward ? selectedObjective?.reward + ' Telecrystals' : 'No reward'} + {(selectedObjective?.rep_gain) && ( + {selectedObjective?.rep_gain} Reputation + )}
@@ -362,19 +381,30 @@ const ObjectiveCard = (props, context) => { name: 'Assassination', reward: 0, time_left: null, + rep_gain: null, + rep_loss: null, }, selected = 0, onClick, } = props; - const { name, reward, time_left } = objective_info; + const { name, reward, time_left, rep_gain, rep_loss } = objective_info; return ( - + {capitalize(name)} - {reward === 0 ? 'Assignment' : reward + ' TC Reward'} + + {(rep_gain || rep_loss) && ( + + -{rep_loss}/+{rep_gain} Reputation + + )} + {reward === 0 ? 'Assignment' : reward + ' TC Reward'} + {time_left === null diff --git a/tgui/packages/tgui/styles/interfaces/Uplink.scss b/tgui/packages/tgui/styles/interfaces/Uplink.scss index 256ebda291613..0d688d5e3d805 100644 --- a/tgui/packages/tgui/styles/interfaces/Uplink.scss +++ b/tgui/packages/tgui/styles/interfaces/Uplink.scss @@ -138,11 +138,12 @@ right: 5px; box-shadow: 0 0 14px 8px #00000069; background-color: #00000069; + text-align: right; } .time_limit { position: absolute; - top: 40%; + top: 35%; right: 0; left: 0; font-size: x-large;