Contractor Updates (#19716)

* updates some contractor stuff

* Update modular_skyrat/modules/contractor/code/datums/midround/event.dm

engrish

Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>

* rand 75 -> 100

---------

Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
This commit is contained in:
Zonespace
2023-03-09 18:15:03 +00:00
committed by GitHub
co-authored by Tom
parent 39f337840e
commit 61351c3f9a
4 changed files with 51 additions and 8 deletions
@@ -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
@@ -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
@@ -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
@@ -78,6 +78,9 @@
<p>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.</p>
<p>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.</p>
<h3>Using the tablet</h3>
<ol>
<li>Open the Syndicate Contract Uplink program.</li>