Contractees Now Lose All Implants + 10 Minute Time if Antagonist (#22856)

* i love chaos

* contra review

* contra review 2 or something

* comment fix
This commit is contained in:
matttheficus
2023-11-15 20:40:05 -05:00
committed by GitHub
parent f3e4f5fddb
commit 7f02b6859d
@@ -5,6 +5,8 @@
#define COMPLETION_NOTIFY_DELAY 5 SECONDS
#define RETURN_INJURY_CHANCE 85
#define RETURN_SOUVENIR_CHANCE 10
/// How long an antagonist target remains in the Syndicate jail.
#define ANTAG_CONTRACT_TIME 10 MINUTES
/**
* # Syndicate Contract
@@ -19,7 +21,6 @@
var/portal_duration = 5 MINUTES
/// How long a target remains in the Syndicate jail.
var/prison_time = 4 MINUTES
/// List of items a target can get randomly after their return.
var/list/obj/item/souvenirs = list(
/obj/item/bedsheet/syndie,
/obj/item/clothing/under/syndicate/tacticool,
@@ -41,9 +42,6 @@
var/credits_lower_mult = 25
// The upper bound of the credits reward multiplier.
var/credits_upper_mult = 40
// Implants (non cybernetic ones) that shouldn't be removed when a victim gets kidnapped.
// Typecache; initialized in New()
var/static/implants_to_keep = null
// Variables
/// The owning contractor hub.
var/datum/contractor_hub/owning_hub = null
@@ -88,21 +86,6 @@
var/static/nt_am_board_resigned = FALSE
/datum/syndicate_contract/New(datum/contractor_hub/hub, datum/mind/owner, list/datum/mind/target_blacklist, target_override)
// Init settings
if(!implants_to_keep)
implants_to_keep = typecacheof(list(
// These two are specifically handled in code to prevent usage, but are included here for clarity.
/obj/item/implant/storage,
/obj/item/implant/uplink,
// The rest
/obj/item/implant/adrenalin,
/obj/item/implant/emp,
/obj/item/implant/explosive,
/obj/item/implant/freedom,
/obj/item/implant/traitor,
/obj/item/implant/gorilla_rampage,
/obj/item/implant/stealth
))
// Initialize
owning_hub = hub
contract = new /datum/objective/contract(src)
@@ -352,7 +335,11 @@
var/mob/living/carbon/human/H = M
// Prepare their return
if(M.mind.special_role && !(M.mind.special_role in list(SPECIAL_ROLE_ERT, SPECIAL_ROLE_DEATHSQUAD)))
prison_time = ANTAG_CONTRACT_TIME
prisoner_timer_handle = addtimer(CALLBACK(src, PROC_REF(handle_target_return), M, T), prison_time, TIMER_STOPPABLE)
LAZYSET(GLOB.prisoner_belongings.prisoners, M, src)
// Shove all of the victim's items in the secure locker.
@@ -394,20 +381,13 @@
if(isplasmaman(H) && I == H.head)
continue
// Any kind of non-syndie implant gets potentially removed (mindshield, etc)
// Any kind of implant gets potentially removed (mindshield, freedoms, etc)
if(istype(I, /obj/item/implant))
if(istype(I, /obj/item/implant/storage)) // Storage stays, but items within get confiscated
if(istype(I, /obj/item/implant/storage)) // Storage items are removed and placed in the confiscation locker before the implant is taken.
var/obj/item/implant/storage/storage_implant = I
for(var/it in storage_implant.storage)
storage_implant.storage.remove_from_storage(it)
stuff_to_transfer += it
continue
else if(istype(I, /obj/item/implant/uplink)) // Uplink stays, but is jammed while in jail
var/obj/item/implant/uplink/uplink_implant = I
uplink_implant.hidden_uplink.is_jammed = TRUE
continue
else if(is_type_in_typecache(I, implants_to_keep))
continue
qdel(I)
continue
@@ -461,7 +441,9 @@
var/obj/item/reagent_containers/food/drinks/drinkingglass/drink = new(get_turf(M))
drink.reagents.add_reagent("tea", 25) // British coders beware, tea in glasses
temp_objs = list(food, drink)
var/obj/item/coin/antagtoken/passingtime = new(get_turf(M))
temp_objs = list(food, drink, passingtime)
// Narrate their kidnapping and torturing experience.
if(M.stat != DEAD)
@@ -658,3 +640,4 @@
#undef COMPLETION_NOTIFY_DELAY
#undef RETURN_INJURY_CHANCE
#undef RETURN_SOUVENIR_CHANCE
#undef ANTAG_CONTRACT_TIME