diff --git a/modular_skyrat/modules/contractor/code/datums/contract.dm b/modular_skyrat/modules/contractor/code/datums/contract.dm index f86843c85ae..643f3f67fb9 100644 --- a/modular_skyrat/modules/contractor/code/datums/contract.dm +++ b/modular_skyrat/modules/contractor/code/datums/contract.dm @@ -1,5 +1,5 @@ -#define RANSOM_LOWER 25 -#define RANSOM_UPPER 75 +#define RANSOM_LOWER 75 +#define RANSOM_UPPER 150 #define CONTRACTOR_RANSOM_CUT 0.35 /datum/syndicate_contract @@ -11,7 +11,7 @@ var/datum/objective/contract/contract = new() /// Target's job var/target_rank - /// A number in multiples of 100, anywhere from 2500 credits to 7500, station cost when someone is kidnapped + /// A number in multiples of 100, anywhere from 7500 credits to 15000, station cost when someone is kidnapped var/ransom = 0 /// TC payout size, will be small, medium, or large. var/payout_type @@ -160,17 +160,22 @@ /// Called when person is finished shoving in, awards ransome money /datum/syndicate_contract/proc/finish_enter() - // Pay contractor their portion of ransom - if(!(status == CONTRACT_STATUS_COMPLETE)) + if(!status != CONTRACT_STATUS_COMPLETE) return + var/obj/item/card/id/owner_id = contract.owner.current?.get_idcard(TRUE) - if(owner_id?.registered_account) + if(owner_id?.registered_account && !istype(owner_id, /obj/item/card/id/advanced/chameleon)) owner_id.registered_account.adjust_money(ransom * CONTRACTOR_RANSOM_CUT) owner_id.registered_account.bank_card_talk("We've processed the ransom, agent. Here's your cut - your balance is now \ [owner_id.registered_account.account_balance] credits.", TRUE) + else + to_chat(contract.owner.current, span_notice("A briefcase appears at your feet!")) + var/obj/item/storage/secure/briefcase/case = new(get_turf(contract.owner.current)) + for(var/i in 1 to round(ransom * CONTRACTOR_RANSOM_CUT)) // Gets slightly less/more but whatever + new /obj/item/stack/spacecash/c1000(case) /// They're off to holding - handle the return timer and give some text about what's going on. /datum/syndicate_contract/proc/handle_victim_experience(mob/living/target) @@ -196,8 +201,23 @@ /// Continued victim handling /datum/syndicate_contract/proc/victim_stage_two(mob/living/target) + var/list/parts_to_fuck_up = list( + BODY_ZONE_L_ARM, + BODY_ZONE_R_ARM, + BODY_ZONE_L_LEG, + BODY_ZONE_R_LEG, + ) + to_chat(target, span_warning("That pod did something to you...")) target.set_dizzy(70 SECONDS) + + for(var/i in 1 to 2) + var/obj/item/bodypart/limb = target.get_bodypart(pick_n_take(parts_to_fuck_up)) + var/datum/wound/blunt/severe/severe_wound_type = /datum/wound/blunt/severe + var/datum/wound/blunt/critical/critical_wound_type = /datum/wound/blunt/critical + limb.receive_damage(brute = WOUND_MINIMUM_DAMAGE, wound_bonus = rand(initial(severe_wound_type.threshold_minimum), initial(critical_wound_type.threshold_minimum) + 10)) + target.update_damage_overlays() + addtimer(CALLBACK(src, PROC_REF(victim_stage_three), target), 6 SECONDS) /// Continued victim handling, flashes them as well @@ -211,6 +231,24 @@ /// Continued victim handling /datum/syndicate_contract/proc/victim_stage_four(mob/living/target) to_chat(target, span_warning("Your head pounds...")) + + if(iscarbon(target)) + var/mob/living/carbon/carbon_target = target + switch(rand(1, 100)) + if(1 to 45) + carbon_target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_SURGERY) + + if(46 to 73) + carbon_target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_SURGERY) + carbon_target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_SURGERY) + + if(74 to 94) + carbon_target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_SURGERY) + + if(75 to 100) + carbon_target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_SURGERY) + carbon_target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_SURGERY) + addtimer(CALLBACK(src, PROC_REF(victim_stage_five), target), 10 SECONDS) /// Continued victim handling, some unconsciousness diff --git a/modular_skyrat/modules/contractor/code/datums/midround/event.dm b/modular_skyrat/modules/contractor/code/datums/midround/event.dm index 5d995a07341..d90a2b90dff 100644 --- a/modular_skyrat/modules/contractor/code/datums/midround/event.dm +++ b/modular_skyrat/modules/contractor/code/datums/midround/event.dm @@ -4,6 +4,7 @@ weight = 8 max_occurrences = 1 category = EVENT_CATEGORY_INVASION + description = "A pre-equipped contractor floats towards the station to fulfill contracts." /datum/round_event/ghost_role/contractor minimum_required = 1 @@ -24,9 +25,9 @@ return MAP_ERROR var/mob/living/carbon/human/operative = new(pick(spawn_locs)) - operative.randomize_human_appearance(~RANDOMIZE_SPECIES) operative.dna.update_dna_identity() var/datum/mind/mind = new /datum/mind(selected.key) + selected.client?.prefs?.apply_prefs_to(operative) mind.set_assigned_role(SSjob.GetJobType(/datum/job/drifting_contractor)) mind.special_role = ROLE_DRIFTING_CONTRACTOR mind.active = TRUE diff --git a/modular_skyrat/modules/contractor/code/items/boxes.dm b/modular_skyrat/modules/contractor/code/items/boxes.dm index 2e4ee333801..d0eab90eb92 100644 --- a/modular_skyrat/modules/contractor/code/items/boxes.dm +++ b/modular_skyrat/modules/contractor/code/items/boxes.dm @@ -106,8 +106,9 @@ // Paper guide new /obj/item/paper/contractor_guide/midround(src) + new /obj/item/reagent_containers/hypospray/medipen/atropine(src) + new /obj/item/jammer(src) new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src) new /obj/item/lighter(src) - new /obj/item/jammer(src) #undef SMALL_ITEM_AMOUNT diff --git a/modular_skyrat/modules/contractor/code/items/misc.dm b/modular_skyrat/modules/contractor/code/items/misc.dm index aa7e22cc6aa..8235dc9adf8 100644 --- a/modular_skyrat/modules/contractor/code/items/misc.dm +++ b/modular_skyrat/modules/contractor/code/items/misc.dm @@ -78,6 +78,9 @@

The contractor hub, available at the top right of the uplink, will provide you unique items and abilities. These are bought using Contractor Rep, with two Rep being provided each time you complete a contract.

+

You've also been provided with a medipen of atropine, to prevent your implanted microbomb going off if it would be more tactically sound for your + body to stay intact. If circumstances change, you are still able to detonate your microbomb post-mortem.

+

Using the tablet

  1. Open the Syndicate Contract Uplink program.