diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index b63da0e1b1..9c71cfeb69 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -801,10 +801,8 @@ GLOBAL_LIST_INIT(binary, list("0","1")) /proc/readable_corrupted_text(text) var/list/corruption_options = list("..", "£%", "~~\"", "!!", "*", "^", "$!", "-", "}", "?") var/corrupted_text = "" - // Have every letter have a chance of creating corruption on either side - // Small chance of letters being removed in place of corruption - still overall readable - for(var/letter_index = 1; letter_index <= length(text); letter_index++) - var/letter = text[letter_index] + for(var/letter_index = 1; letter_index <= length(text); letter_index++) // Have every letter have a chance of creating corruption on either side + var/letter = text[letter_index] // Small chance of letters being removed in place of corruption - still overall readable if(prob(15)) corrupted_text += pick(corruption_options) if(prob(95)) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 5fa6dc5a4c..e7083cacea 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -1161,8 +1161,7 @@ GLOBAL_LIST_EMPTY(possible_sabotages) var/payout_bonus = 0 var/area/dropoff = null -// Generate a random valid area on the station that the dropoff will happen. -/datum/objective/contract/proc/generate_dropoff() +/datum/objective/contract/proc/generate_dropoff() // Generate a random valid area on the station that the dropoff will happen. var/found = FALSE while(!found) var/area/dropoff_area = pick(GLOB.sortedAreas) @@ -1170,8 +1169,7 @@ GLOBAL_LIST_EMPTY(possible_sabotages) dropoff = dropoff_area found = TRUE -// Check if both the contractor and contract target are at the dropoff point. -/datum/objective/contract/proc/dropoff_check(mob/user, mob/target) +/datum/objective/contract/proc/dropoff_check(mob/user, mob/target) // Check if both the contractor and contract target are at the dropoff point. var/area/user_area = get_area(user) var/area/target_area = get_area(target) return (istype(user_area, dropoff) && istype(target_area, dropoff)) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index f87e0ea075..9abf5c6337 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -402,42 +402,85 @@ name = "contractor kit" desc = "Supplied to Syndicate contractors in active mission areas." -/obj/item/storage/box/syndie_kit/contract_kit/PopulateContents() - new /obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink(src) - new /obj/item/storage/box/syndie_kit/space/contract(src) +/obj/item/storage/box/syndicate/contractor_loadout + name = "standard loadout" + desc = "Supplied to Syndicate contractors, providing their specialised space suit and chameleon uniform." + icon_state = "syndiebox" + illustration = "writing_syndie" + +/obj/item/paper/contractor_guide + name = "Contractor Guide" + +/obj/item/paper/contractor_guide/Initialize() + info = {"

Welcome agent, congratulations on your new position as contractor. On top of your already assigned objectives, + this kit will provide you contracts to take on for TC payments.

+

Provided within, we give your specialist contractor space suit. It's even more compact, being able to fit into a pocket, and faster than the + Syndicate space suit available to you on the uplink. We also provide your chameleon jumpsuit and mask, both of which can be changed + to any form you need for the moment. The cigarettes are a special blend - it'll heal your injuries slowly overtime.

+

The three additional items, apart from the tablet and loadout box, have been randomly selected from what we had available. We hope + they're useful to you for you mission.

+

Using the tablet

+
    +
  1. Open the Syndicate Contract Uplink program.
  2. +
  3. Assign yourself.
  4. +
  5. Here, you can accept a contract, and redeem your TC payments from completed contracts.
  6. +
  7. The payment number shown in brackets is the bonus you'll recieve when bringing your target alive. You recieve the + other number regardless of if they were alive or dead.
  8. +
+

Be careful when accepting a contract. While you'll be able to see the location of the dropoff point, cancelling will make it + unavailable to take on again.

+

The tablet can be recharged at any cell charger.

+

Extracting

+
    +
  1. Make sure both yourself and your target are at the dropoff.
  2. +
  3. Call the extraction. Stand back from the drop point - it'll be coming down hard.
  4. +
  5. If it fails, make sure your target is inside, and there's a free space for the pod to land.
  6. +
  7. Drag your target into the pod.
  8. +
+

Ransoms

+

We need your target for our own reasons, but we ransom them back to your mission area once their use is served. They will return back + from where you sent them off from in several minutes time. Don't worry agent, we give you a cut of what we get paid. We pay this into whatever + ID card you have equipped, on top of the TC payment we give.

"} + + return ..() + +/obj/item/storage/box/syndicate/contractor_loadout/PopulateContents() + new /obj/item/clothing/head/helmet/space/syndicate/contract/black/red(src) + new /obj/item/clothing/suit/space/syndicate/contract/black/red(src) new /obj/item/clothing/under/chameleon(src) new /obj/item/clothing/mask/chameleon(src) new /obj/item/card/id/syndicate(src) + new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src) + new /obj/item/lighter(src) - // All 4 TC or less - some nukeops only items, but fit nicely to the theme. - var/list/item_list = list( +/obj/item/storage/box/syndie_kit/contract_kit/PopulateContents() + new /obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink(src) + new /obj/item/storage/box/syndicate/contractor_loadout(src) + var/list/item_list = list( // All 4 TC or less - some nukeops only items, but fit nicely to the theme. /obj/item/storage/backpack/duffelbag/syndie/x4, - /obj/item/storage/box/syndie_kit/emp, /obj/item/storage/box/syndie_kit/throwing_weapons, /obj/item/gun/syringe/syndicate, /obj/item/pen/edagger, /obj/item/pen/sleepy, - /obj/item/gun/ballistic/automatic/toy/pistol/riot, /obj/item/flashlight/emp, /obj/item/reagent_containers/syringe/mulligan, /obj/item/clothing/shoes/chameleon/noslip, - /obj/item/storage/toolbox/syndicate, /obj/item/storage/firstaid/tactical, /obj/item/storage/backpack/duffelbag/syndie/surgery, /obj/item/encryptionkey/syndicate, /obj/item/clothing/glasses/thermal/syndi, /obj/item/slimepotion/slime/sentience/nuclear, /obj/item/storage/box/syndie_kit/imp_radio, - /obj/item/storage/box/syndie_kit/imp_uplink + /obj/item/storage/box/syndie_kit/imp_uplink, + /obj/item/clothing/gloves/krav_maga/combatglovesplus, + /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, + /obj/item/reagent_containers/syringe/stimulants, + /obj/item/storage/box/syndie_kit/imp_freedom ) - var/obj/item1 = pick_n_take(item_list) var/obj/item2 = pick_n_take(item_list) - - // Create two, non repeat items from the list. - new item1(src) + var/obj/item3 = pick_n_take(item_list) + new item1(src) // Create three, non repeat items from the list. new item2(src) - -/obj/item/storage/box/syndie_kit/space/contract/PopulateContents() - new /obj/item/clothing/suit/space/syndicate/black/red(src) - new /obj/item/clothing/head/helmet/space/syndicate/black/red(src) \ No newline at end of file + new item3(src) + new /obj/item/paper/contractor_guide(src) //Paper guide \ No newline at end of file diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 12c739b725..791724d162 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -32,11 +32,21 @@ /datum/antagonist/traitor/proc/create_contracts() var/contract_generation_quantity = 6 - + var/lowest_TC_threshold = 28 // We don't want the sum of all the payouts to be under this amount + var/total = 0 + var/lowest_paying_sum = 0 + var/datum/syndicate_contract/lowest_paying_contract for(var/i = 1; i <= contract_generation_quantity; i++) var/datum/syndicate_contract/contract_to_add = new(owner) + var/contract_payout_total = contract_to_add.contract.payout + contract_to_add.contract.payout_bonus + if(!lowest_paying_contract || (contract_payout_total < lowest_paying_sum)) + lowest_paying_sum = contract_payout_total + lowest_paying_contract = contract_to_add + total += contract_payout_total contract_to_add.id = i assigned_contracts.Add(contract_to_add) + if(total < lowest_TC_threshold) // If the threshold for TC payouts isn't reached, boost the lowest paying contract + lowest_paying_contract.contract.payout_bonus += (lowest_TC_threshold - total) /datum/antagonist/traitor/apply_innate_effects() if(owner.assigned_role == "Clown") diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index e9848ae6cd..30014f4292 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -75,6 +75,22 @@ icon_state = "syndicate-black" item_state = "syndicate-black" +//Black-red syndicate contract varient +/obj/item/clothing/head/helmet/space/syndicate/contract/black/red + name = "contractor helmet" + desc = "A specialised black and red helmet that's quicker, and more compact that its counterpart. Can be ultra-compressed into even the tightest of spaces." + slowdown = 0.55 + w_class = WEIGHT_CLASS_SMALL + icon_state = "syndicate-helm-black-red" + item_state = "syndicate-helm-black-red" + +/obj/item/clothing/suit/space/syndicate/contract/black/red + name = "contractor space suit" + desc = "A specialised black and red space suit that's quicker, and more compact that its counterpart. Can be ultra-compressed into even the tightest of spaces." + slowdown = 0.55 + w_class = WEIGHT_CLASS_SMALL + icon_state = "syndicate-black-red" + item_state = "syndicate-black-red" //Black-green syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/black/green diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm index c72b3061d0..09b3a73ff0 100644 --- a/code/modules/modular_computers/computers/item/tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/tablet_presets.dm @@ -28,8 +28,7 @@ install_component(new /obj/item/computer_hardware/network_card) install_component(new /obj/item/computer_hardware/printer/mini) -// Given by the syndicate as part of the contract uplink bundle -/obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink/Initialize() +/obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink/Initialize() // Given by the syndicate as part of the contract uplink bundle . = ..() var/obj/item/computer_hardware/hard_drive/small/syndicate/hard_drive = new hard_drive.store_file(new /datum/computer_file/program/contract_uplink) diff --git a/code/modules/modular_computers/hardware/hard_drive.dm b/code/modules/modular_computers/hardware/hard_drive.dm index 303c74a8f8..285463bc0f 100644 --- a/code/modules/modular_computers/hardware/hard_drive.dm +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -158,8 +158,7 @@ icon_state = "ssd_mini" w_class = WEIGHT_CLASS_TINY -// Syndicate variant - very slight better -/obj/item/computer_hardware/hard_drive/small/syndicate +/obj/item/computer_hardware/hard_drive/small/syndicate // Syndicate variant - very slight better desc = "An efficient SSD for portable devices developed by a rival organisation." power_usage = 8 max_capacity = 70 diff --git a/code/modules/uplink/uplink_items/uplink_bundles.dm b/code/modules/uplink/uplink_items/uplink_bundles.dm index 8b29c246b9..2a0a7f947a 100644 --- a/code/modules/uplink/uplink_items/uplink_bundles.dm +++ b/code/modules/uplink/uplink_items/uplink_bundles.dm @@ -32,10 +32,10 @@ /datum/uplink_item/bundles_TC/contract_kit name = "Contract Kit" - desc = "The Syndicate have a number of urgent contracts for you to take on, become a contractor and complete them for TC. Upon purchase, \ - you'll be granted your own contract uplink embedded within the supplied tablet computer. Additonally, you'll be granted contractor \ - gear to help with your mission - comes supplied with the tablet, space suit, chameleon jumpsuit and mask, agent card, and two \ - randomly selected low cost items." + desc = "The Syndicate have offered you the chance to become a contractor, take on kidnapping contracts for TC and cash payouts. Upon purchase, \ + you'll be granted your own contract uplink embedded within the supplied tablet computer. Additionally, you'll be granted \ + standard contractor gear to help with your mission - comes supplied with the tablet, specialised space suit, chameleon jumpsuit and mask, \ + agent card, and three randomly selected low cost items. Includes potentially otherwise unobtainable items." item = /obj/item/storage/box/syndie_kit/contract_kit cost = 20 player_minimum = 20