mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 06:29:23 +01:00
Contractor Expansion 2 (#12311)
* weh! * fuck you linter * very important * Update modular_skyrat/modules/contractor/code/datums/midround/event.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update modular_skyrat/modules/contractor/code/datums/midround/outfit.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * requested changes * also this * requested + cleanup Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
This commit is contained in:
co-authored by
GoldenAlpharex
parent
fb97697d14
commit
b995fbe31b
@@ -39,8 +39,9 @@
|
||||
#define ROLE_SPACE_DRAGON "Space Dragon"
|
||||
#define ROLE_SPIDER "Spider"
|
||||
#define ROLE_WIZARD_MIDROUND "Wizard (Midround)"
|
||||
// SKYRAT EDIT ADDITION
|
||||
//SKYRAT EDIT START
|
||||
#define ROLE_BORER "Borer"
|
||||
#define ROLE_DRIFTING_CONTRACTOR "Drifting Contractor"
|
||||
#define ROLE_ASSAULT_OPERATIVE "Assault Operative"
|
||||
// SKYRAT EDIT END
|
||||
|
||||
@@ -146,8 +147,10 @@ GLOBAL_LIST_INIT(special_roles, list(
|
||||
ROLE_SPACE_DRAGON = 0,
|
||||
ROLE_SPIDER = 0,
|
||||
ROLE_WIZARD_MIDROUND = 14,
|
||||
//SKYRAT EDIT: Cortical Borers
|
||||
//SKYRAT EDIT START
|
||||
ROLE_BORER = 0,
|
||||
ROLE_DRIFTING_CONTRACTOR = 14,
|
||||
//SKYRAT EDIT END
|
||||
|
||||
// Latejoin
|
||||
ROLE_HERETIC_SMUGGLER = 0,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#define BATON_ALL_UPGRADE (1<<0)
|
||||
#define BATON_CUFF_UPGRADE (1<<1)
|
||||
#define BATON_MUTE_UPGRADE (1<<2)
|
||||
#define BATON_FOCUS_UPGRADE (1<<3)
|
||||
|
||||
@@ -252,22 +252,22 @@
|
||||
new /obj/item/implanter/freedom(src)
|
||||
new /obj/item/stack/telecrystal(src) //The failsafe/self destruct isn't an item we can physically include in the kit, but 1 TC is technically enough to buy the equivalent.
|
||||
|
||||
/obj/item/storage/box/syndicate/contract_kit
|
||||
/obj/item/storage/box/syndicate/contract_kit //SKYRAT EDIT - CHANGED IN MODULAR FOLDER
|
||||
name = "Contract Kit"
|
||||
desc = "Supplied to Syndicate contractors."
|
||||
icon_state = "syndiebox"
|
||||
illustration = "writing_syndie"
|
||||
|
||||
/obj/item/storage/box/syndicate/contractor_loadout
|
||||
/obj/item/storage/box/syndicate/contractor_loadout //SKYRAT EDIT - CHANGED IN MODULAR FOLDER
|
||||
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
|
||||
/obj/item/paper/contractor_guide //SKYRAT EDIT - CHANGED IN MODULAR FOLDER
|
||||
name = "Contractor Guide"
|
||||
|
||||
/obj/item/paper/contractor_guide/Initialize(mapload)
|
||||
/obj/item/paper/contractor_guide/Initialize(mapload) //SKYRAT EDIT - CHANGED IN MODULAR FOLDER
|
||||
info = {"<p>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.</p>
|
||||
|
||||
|
||||
@@ -115,6 +115,7 @@
|
||||
var/static/list/non_ruleset_antagonists = list(
|
||||
ROLE_FUGITIVE = /datum/antagonist/fugitive,
|
||||
ROLE_LONE_OPERATIVE = /datum/antagonist/nukeop/lone,
|
||||
ROLE_DRIFTING_CONTRACTOR = /datum/antagonist/contractor, //SKYRAT EDIT
|
||||
)
|
||||
|
||||
var/list/antagonists = non_ruleset_antagonists.Copy()
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 7.2 KiB |
@@ -149,7 +149,7 @@
|
||||
desc = "Request Syndicate Command to distrupt the station's powernet. Disables power across the station for a short duration."
|
||||
item_icon = "bolt"
|
||||
limited = 2
|
||||
cost = 3
|
||||
cost = 2
|
||||
|
||||
/datum/contractor_item/blackout/handle_purchase(datum/contractor_hub/hub)
|
||||
. = ..()
|
||||
@@ -164,7 +164,7 @@
|
||||
desc = "Request Syndicate Command to disable station Telecommunications. Disables telecommunications across the station for a medium duration."
|
||||
item_icon = "phone-slash"
|
||||
limited = 2
|
||||
cost = 3
|
||||
cost = 2
|
||||
|
||||
/datum/contractor_item/comms_blackout/handle_purchase(datum/contractor_hub/hub)
|
||||
. = ..()
|
||||
@@ -178,7 +178,7 @@
|
||||
name = "Baton Holster Module"
|
||||
desc = "Never worry about dropping your baton again with this holster module! Simply insert your baton into the module, put it in your MODsuit, and the baton will retract whenever dropped."
|
||||
item = /obj/item/mod/module/baton_holster
|
||||
item_icon = "arrow-up-from-arc" //I cannot find anything better, replace if you find something more fitting
|
||||
item_icon = "wrench" //I cannot find anything better, replace if you find something more fitting
|
||||
limited = 1
|
||||
cost = 1
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
name = "Baton Cuff Upgrade"
|
||||
desc = "Using technology reverse-engineered from some alien batons we had lying around, you can now cuff people using your baton with the secondary attack. Due to technical limitations, only cable cuffs and zipties work, and they need to be loaded into the baton manually."
|
||||
item = /obj/item/baton_upgrade/cuff
|
||||
item_icon = "handcuff"
|
||||
item_icon = "hands-bound"
|
||||
limited = 1
|
||||
cost = 1
|
||||
|
||||
@@ -197,3 +197,11 @@
|
||||
item_icon = "comment-slash"
|
||||
limited = 1
|
||||
cost = 2
|
||||
|
||||
/datum/contractor_item/baton_upgrade_focus
|
||||
name = "Baton Focus Upgrade"
|
||||
desc = "When applied to a baton, it will exhaust the target even more, should they be the target of your current contract."
|
||||
item = /obj/item/baton_upgrade/focus
|
||||
item_icon = "eye"
|
||||
limited = 1
|
||||
cost = 2
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
// USED FOR THE MIDROUND
|
||||
/datum/antagonist/contractor
|
||||
name = "Drifting Contractor"
|
||||
antagpanel_category = "DriftingContractor"
|
||||
preview_outfit = /datum/outfit/contractor_preview
|
||||
job_rank = ROLE_DRIFTING_CONTRACTOR
|
||||
hud_icon = 'modular_skyrat/modules/contractor/icons/hud_icon.dmi'
|
||||
antag_hud_name = "contractor"
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
show_to_ghosts = TRUE
|
||||
suicide_cry = "FOR THE CONTRACTS!!"
|
||||
/// The outfit the contractor is equipped with
|
||||
var/contractor_outfit = /datum/outfit/contractor
|
||||
|
||||
/datum/antagonist/contractor/proc/equip_guy()
|
||||
if(!ishuman(owner.current))
|
||||
return
|
||||
var/mob/living/carbon/human/person = owner.current
|
||||
person.equipOutfit(contractor_outfit)
|
||||
return TRUE
|
||||
|
||||
/datum/antagonist/contractor/on_gain()
|
||||
forge_objectives()
|
||||
. = ..()
|
||||
equip_guy()
|
||||
|
||||
/datum/antagonist/contractor/proc/forge_objectives()
|
||||
objectives += new/datum/objective/contractor_total
|
||||
|
||||
/datum/job/drifting_contractor
|
||||
title = ROLE_DRIFTING_CONTRACTOR
|
||||
@@ -0,0 +1,38 @@
|
||||
/datum/round_event_control/contractor
|
||||
name = "Drifting Contractor"
|
||||
typepath = /datum/round_event/ghost_role/contractor
|
||||
weight = 8
|
||||
max_occurrences = 1
|
||||
|
||||
/datum/round_event/ghost_role/contractor
|
||||
minimum_required = 1
|
||||
role_name = "Drifting Contractor"
|
||||
fakeable = FALSE
|
||||
|
||||
/datum/round_event/ghost_role/contractor/spawn_role()
|
||||
var/list/candidates = get_candidates(ROLE_DRIFTING_CONTRACTOR)
|
||||
if(!length(candidates))
|
||||
return NOT_ENOUGH_PLAYERS
|
||||
|
||||
var/mob/dead/selected = pick_n_take(candidates)
|
||||
|
||||
var/list/spawn_locs = list()
|
||||
for(var/obj/effect/landmark/carpspawn/carp in GLOB.landmarks_list)
|
||||
spawn_locs += carp.loc
|
||||
if(!length(spawn_locs))
|
||||
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)
|
||||
mind.set_assigned_role(SSjob.GetJobType(/datum/job/drifting_contractor))
|
||||
mind.special_role = ROLE_DRIFTING_CONTRACTOR
|
||||
mind.active = TRUE
|
||||
mind.transfer_to(operative)
|
||||
mind.add_antag_datum(/datum/antagonist/contractor)
|
||||
|
||||
message_admins("[ADMIN_LOOKUPFLW(operative)] has been made into [src] by an event.")
|
||||
log_game("[key_name(operative)] was spawned as a [src] by an event.")
|
||||
spawned_mobs += operative
|
||||
return SUCCESSFUL_SPAWN
|
||||
@@ -0,0 +1,17 @@
|
||||
/datum/objective/contractor_total
|
||||
name = "contractor"
|
||||
explanation_text = "Complete at least %CONTRACTNUM% contract%S%."
|
||||
martyr_compatible = TRUE
|
||||
/// How many contracts are needed, rand(1, 3)
|
||||
var/contracts_needed
|
||||
|
||||
/datum/objective/contractor_total/New(text)
|
||||
. = ..()
|
||||
contracts_needed = rand(1, 3)
|
||||
explanation_text = replacetext(explanation_text, "%CONTRACTNUM%", contracts_needed)
|
||||
explanation_text = replacetext(explanation_text, "%S%", (contracts_needed > 1 ? "S" : ""))
|
||||
|
||||
/datum/objective/contractor_total/check_completion()
|
||||
if(length(owner.opposing_force.contractor_hub.contracts_completed) >= contracts_needed)
|
||||
return TRUE
|
||||
return FALSE
|
||||
@@ -0,0 +1,40 @@
|
||||
/datum/outfit/contractor
|
||||
name = "Syndicate Contractor - Full Kit"
|
||||
|
||||
glasses = /obj/item/clothing/glasses/night
|
||||
mask = /obj/item/clothing/mask/chameleon
|
||||
back = /obj/item/mod/control/pre_equipped/contractor/upgraded
|
||||
r_pocket = /obj/item/tank/internals/emergency_oxygen/engi
|
||||
internals_slot = ITEM_SLOT_RPOCKET
|
||||
belt = /obj/item/storage/belt/military
|
||||
|
||||
uniform = /obj/item/clothing/under/chameleon
|
||||
shoes = /obj/item/clothing/shoes/chameleon/noslip
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
ears = /obj/item/radio/headset/chameleon/advanced
|
||||
l_pocket = /obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink
|
||||
id = /obj/item/card/id/advanced/chameleon
|
||||
backpack_contents = list(
|
||||
/obj/item/storage/box/survival/syndie,
|
||||
/obj/item/storage/box/syndicate/contract_kit/midround,
|
||||
/obj/item/knife/combat/survival,
|
||||
)
|
||||
|
||||
implants = list(
|
||||
/obj/item/implant/uplink/precharged,
|
||||
/obj/item/implant/explosive,
|
||||
)
|
||||
|
||||
id_trim = /datum/id_trim/chameleon/contractor
|
||||
|
||||
/datum/outfit/contractor_preview
|
||||
name = "Syndicate Contractor (Preview only)"
|
||||
|
||||
back = /obj/item/mod/control/pre_equipped/syndicate_empty/contractor
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
glasses = /obj/item/clothing/glasses/night
|
||||
|
||||
/datum/outfit/contractor_preview/post_equip(mob/living/carbon/human/guy, visualsOnly)
|
||||
var/obj/item/mod/module/armor_booster/booster = locate() in guy.back
|
||||
booster.active = TRUE
|
||||
guy.update_inv_back()
|
||||
@@ -0,0 +1,5 @@
|
||||
/// Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards.
|
||||
/datum/id_trim/chameleon/contractor
|
||||
assignment = "Syndicate Contractor"
|
||||
trim_state = "trim_contractor"
|
||||
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
|
||||
@@ -1,11 +1,20 @@
|
||||
#define CUFF_MAXIMUM 3
|
||||
#define MUTE_CYCLES 5
|
||||
#define MUTE_MAX_MOD 2
|
||||
#define BONUS_STAMINA_DAM 35
|
||||
#define BONUS_STUTTER 10
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton
|
||||
/// Ref to the baton holster, should the baton have one.
|
||||
var/obj/item/mod/module/baton_holster/holster
|
||||
/// Bitflags for what upgrades the baton has
|
||||
var/upgrade_flags
|
||||
/// If the baton lists its upgrades
|
||||
var/lists_upgrades = TRUE
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_STORAGE_ENTERED, .proc/storage_undeploy)
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/dropped(mob/user, silent)
|
||||
. = ..()
|
||||
@@ -13,6 +22,16 @@
|
||||
return
|
||||
holster.undeploy(user)
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/proc/storage_undeploy(mob/user)
|
||||
if(!holster)
|
||||
return
|
||||
if(!user)
|
||||
user = holster?.mod?.wearer
|
||||
var/obj/item/storage = src.loc
|
||||
var/datum/component/storage/storagecomp = storage.GetComponent(/datum/component/storage)
|
||||
storagecomp.remove_from_storage(src, get_turf(src))
|
||||
holster.undeploy(user)
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/attack_secondary(mob/living/victim, mob/living/user, params)
|
||||
if(!(upgrade_flags & BATON_CUFF_UPGRADE) || !active)
|
||||
return
|
||||
@@ -26,7 +45,6 @@
|
||||
var/obj/item/baton_upgrade/upgrade = attacking_item
|
||||
if(!(upgrade_flags & upgrade.upgrade_flag))
|
||||
upgrade_flags |= upgrade.upgrade_flag
|
||||
upgrade.desc_update(src)
|
||||
attacking_item.forceMove(src)
|
||||
balloon_alert(user, "[attacking_item] attached")
|
||||
if(!(upgrade_flags & BATON_CUFF_UPGRADE) && !(upgrade_flags & BATON_ALL_UPGRADE))
|
||||
@@ -52,25 +70,40 @@
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/additional_effects_non_cyborg(mob/living/carbon/target, mob/living/user)
|
||||
. = ..()
|
||||
if(!((upgrade_flags & BATON_MUTE_UPGRADE) && !(upgrade_flags & BATON_ALL_UPGRADE))|| !istype(target))
|
||||
if(!istype(target))
|
||||
return
|
||||
if(target.silent >= (MUTE_CYCLES * 2))
|
||||
return
|
||||
target.silent += MUTE_CYCLES //10 seconds of mute a hit up to 20 max
|
||||
if((upgrade_flags & BATON_MUTE_UPGRADE) || (upgrade_flags & BATON_ALL_UPGRADE))
|
||||
if(target.silent < (MUTE_CYCLES * MUTE_MAX_MOD))
|
||||
target.silent = min((target.silent + MUTE_CYCLES), (MUTE_CYCLES * MUTE_MAX_MOD))
|
||||
if((upgrade_flags & BATON_FOCUS_UPGRADE) || (upgrade_flags & BATON_ALL_UPGRADE))
|
||||
if(target == user.mind?.opposing_force?.contractor_hub?.current_contract?.contract.target?.current) // Pain
|
||||
target.apply_damage(BONUS_STAMINA_DAM, STAMINA, BODY_ZONE_CHEST)
|
||||
target.stuttering += BONUS_STUTTER
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/examine(mob/user)
|
||||
. = ..()
|
||||
if(upgrade_flags && lists_upgrades)
|
||||
. += "<br><br>[span_boldnotice("[src] has the following upgrades attached:")]"
|
||||
for(var/obj/item/baton_upgrade/upgrade in contents)
|
||||
. += "<br>[span_notice("[upgrade].")]"
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/upgraded
|
||||
upgrade_flags = BATON_ALL_UPGRADE
|
||||
desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets. This one seems to be fully upgraded with unremovable parts."
|
||||
lists_upgrades = FALSE
|
||||
upgrade_flags = BATON_ALL_UPGRADE
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/upgraded/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/i in 1 to CUFF_MAXIMUM)
|
||||
new/obj/item/restraints/handcuffs/cable(src)
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/upgraded/wrench_act(mob/living/user, obj/item/tool)
|
||||
return
|
||||
|
||||
/obj/item/baton_upgrade
|
||||
icon = 'modular_skyrat/modules/contractor/icons/baton_upgrades.dmi'
|
||||
var/upgrade_flag
|
||||
|
||||
/obj/item/baton_upgrade/proc/desc_update(obj/item/melee/baton/telescopic/contractor_baton/batong)
|
||||
if(!batong.upgrade_flags)
|
||||
desc += "<br><br>[span_boldnotice("[batong] has the following upgrades attached:")]"
|
||||
desc += "<br>[span_notice("[src].")]"
|
||||
|
||||
/obj/item/baton_upgrade/cuff
|
||||
name = "handcuff baton upgrade"
|
||||
desc = "Allows the user to apply restraints to a target via baton, requires to be loaded with up to three prior."
|
||||
@@ -83,5 +116,14 @@
|
||||
icon_state = "mute_upgrade"
|
||||
upgrade_flag = BATON_MUTE_UPGRADE
|
||||
|
||||
/obj/item/baton_upgrade/focus
|
||||
name = "focus baton upgrade"
|
||||
desc = "Use of the baton on a target, should they be the subject of your contract, will be extra exhausted."
|
||||
icon_state = "focus_upgrade"
|
||||
upgrade_flag = BATON_FOCUS_UPGRADE
|
||||
|
||||
#undef CUFF_MAXIMUM
|
||||
#undef MUTE_CYCLES
|
||||
#undef MUTE_MAX_MOD
|
||||
#undef BONUS_STAMINA_DAM
|
||||
#undef BONUS_STUTTER
|
||||
|
||||
@@ -6,13 +6,6 @@
|
||||
special_desc_requirement = EXAMINE_CHECK_CONTRACTOR
|
||||
icon_state = "syndiebox"
|
||||
illustration = "writing_syndie"
|
||||
|
||||
/obj/item/storage/box/syndicate/contract_kit/PopulateContents()
|
||||
new /obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink(src)
|
||||
new /obj/item/storage/box/syndicate/contractor_loadout(src)
|
||||
new /obj/item/melee/baton/telescopic/contractor_baton(src)
|
||||
|
||||
// All about 4 TC or less - some nukeops only items, but fit nicely to the theme.
|
||||
var/list/item_list = list(
|
||||
/obj/item/storage/backpack/duffelbag/syndie/x4,
|
||||
/obj/item/storage/box/syndie_kit/throwing_weapons,
|
||||
@@ -27,8 +20,6 @@
|
||||
/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/clothing/gloves/krav_maga/combatglovesplus,
|
||||
/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot,
|
||||
/obj/item/reagent_containers/hypospray/medipen/stimulants,
|
||||
/obj/item/storage/box/syndie_kit/imp_freedom,
|
||||
@@ -40,6 +31,12 @@
|
||||
/obj/item/healthanalyzer/rad_laser
|
||||
)
|
||||
|
||||
/obj/item/storage/box/syndicate/contract_kit/PopulateContents()
|
||||
new /obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink(src)
|
||||
new /obj/item/storage/box/syndicate/contractor_loadout(src)
|
||||
new /obj/item/melee/baton/telescopic/contractor_baton(src)
|
||||
|
||||
// All about 4 TC or less - some nukeops only items, but fit nicely to the theme.
|
||||
for(var/iteration in 1 to SMALL_ITEM_AMOUNT)
|
||||
var/obj/item/small_item = pick_n_take(item_list)
|
||||
new small_item(src)
|
||||
@@ -50,7 +47,7 @@
|
||||
/obj/item/storage/box/syndicate/contractor_loadout
|
||||
name = "Standard Loadout"
|
||||
special_desc_requirement = EXAMINE_CHECK_CONTRACTOR
|
||||
special_desc = "Supplied to Syndicate contractors, providing their specialised space suit and chameleon uniform."
|
||||
special_desc = "Supplied to Syndicate contractors, providing their specialised MODSuit and chameleon uniform."
|
||||
icon_state = "syndiebox"
|
||||
illustration = "writing_syndie"
|
||||
|
||||
@@ -73,4 +70,23 @@
|
||||
new /obj/item/extraction_pack/contractor(src)
|
||||
new /obj/item/fulton_core(src)
|
||||
|
||||
/obj/item/storage/box/syndicate/contract_kit/midround
|
||||
name = "Contract Kit"
|
||||
special_desc = "Supplied to Syndicate contractors."
|
||||
special_desc_requirement = EXAMINE_CHECK_CONTRACTOR
|
||||
icon_state = "syndiebox"
|
||||
illustration = "writing_syndie"
|
||||
|
||||
/obj/item/storage/box/syndicate/contract_kit/midround/PopulateContents()
|
||||
// All about 4 TC or less - some nukeops only items, but fit nicely to the theme.
|
||||
for(var/iteration in 1 to SMALL_ITEM_AMOUNT)
|
||||
var/obj/item/small_item = pick_n_take(item_list)
|
||||
new small_item(src)
|
||||
|
||||
// Paper guide
|
||||
new /obj/item/paper/contractor_guide/midround(src)
|
||||
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src)
|
||||
new /obj/item/lighter(src)
|
||||
new /obj/item/jammer(src)
|
||||
|
||||
#undef SMALL_ITEM_AMOUNT
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
info = {"<p>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.</p>
|
||||
|
||||
<p>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
|
||||
<p>You likely already have your Contractor MODSuit equipped. It has a built in chameleon module, which only works when the MODSuit is undeployed,
|
||||
but is highly useful for on-station infiltrations. 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.</p>
|
||||
|
||||
<p>Your standard issue contractor baton hits harder than the ones you might be used to, and likely be your go to weapon for kidnapping your
|
||||
@@ -60,3 +60,49 @@
|
||||
special_desc_requirement = EXAMINE_CHECK_CONTRACTOR
|
||||
special_desc = "A modified fulton pack that can be used indoors thanks to Bluespace technology. Favored by Syndicate Contractors."
|
||||
|
||||
|
||||
/obj/item/paper/contractor_guide/midround
|
||||
name = "Contractor Guide"
|
||||
|
||||
/obj/item/paper/contractor_guide/midround/Initialize(mapload)
|
||||
info = {"<p>Welcome agent, congratulations on successfully getting in range of the station.</p>
|
||||
|
||||
<p>You likely already have your Contractor MODSuit equipped. It has a built in chameleon module, which only works when the MODSuit is undeployed,
|
||||
but is highly useful for on-station infiltrations. 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.</p>
|
||||
|
||||
<p>Your standard issue contractor baton can be found in the baton holster MODSuit module, it hits harder than the ones you might be used to,
|
||||
and will likely be your go to weapon for kidnapping your targets. We took the liberty of fully upgrading it beforehand, so don't worry about that.
|
||||
The three additional items have been randomly selected from what we had available. We hope they're useful to you for your mission.</p>
|
||||
|
||||
<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>
|
||||
|
||||
<h3>Using the tablet</h3>
|
||||
<ol>
|
||||
<li>Open the Syndicate Contract Uplink program.</li>
|
||||
<li>Here, you can accept a contract, and redeem your TC payments from completed contracts.</li>
|
||||
<li>The payment number shown in brackets is the bonus you'll receive when bringing your target <b>alive</b>. You receive the
|
||||
other number regardless of if they were alive or dead.</li>
|
||||
<li>Contracts are completed by bringing the target to designated dropoff, calling for extraction, and putting them
|
||||
inside the pod.</li>
|
||||
</ol>
|
||||
|
||||
<p>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.</p>
|
||||
<p>The tablet can also be recharged at any cell charger.</p>
|
||||
<h3>Extracting</h3>
|
||||
<ol>
|
||||
<li>Make sure both yourself and your target are at the dropoff.</li>
|
||||
<li>Call the extraction, and stand back from the drop point.</li>
|
||||
<li>If it fails, make sure your target is inside, and there's a free space for the pod to land.</li>
|
||||
<li>Grab your target, and drag them into the pod.</li>
|
||||
</ol>
|
||||
<h3>Ransoms</h3>
|
||||
<p>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, 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.</p>
|
||||
|
||||
<p>Good luck agent. You can burn this document with the supplied lighter.</p>"}
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -89,3 +89,7 @@
|
||||
/obj/item/clothing/shoes/mod/contractor
|
||||
worn_icon = 'modular_skyrat/modules/contractor/icons/worn_modsuit.dmi'
|
||||
icon = 'modular_skyrat/modules/contractor/icons/modsuit.dmi'
|
||||
|
||||
// For the prefs menu
|
||||
/obj/item/mod/control/pre_equipped/syndicate_empty/contractor
|
||||
theme = /datum/mod_theme/contractor
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 435 B |
Binary file not shown.
|
After Width: | Height: | Size: 247 B |
@@ -4804,6 +4804,11 @@
|
||||
#include "modular_skyrat\modules\contractor\code\datums\contractor_support.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\datums\contractor_tablet.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\datums\mind_datum.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\datums\midround\antag_datum.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\datums\midround\event.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\datums\midround\objective.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\datums\midround\outfit.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\datums\midround\trim.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\items\baton.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\items\boxes.dm"
|
||||
#include "modular_skyrat\modules\contractor\code\items\misc.dm"
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
import { multiline } from "common/string";
|
||||
import { Antagonist, Category } from "../base";
|
||||
|
||||
export const CONTRACTOR_MECHANICAL_DESCRIPTION
|
||||
= multiline`
|
||||
Float onto the station and complete as many
|
||||
contracts for your employer as you can!
|
||||
`;
|
||||
|
||||
const DriftingContractor: Antagonist = {
|
||||
key: "driftingcontractor",
|
||||
name: "Drifting Contractor",
|
||||
description: [
|
||||
multiline`A Syndicate agent that can spawn near the station, equipped with
|
||||
top-of-the-line contractor gear, to complete contracts for the Syndicate.`,
|
||||
CONTRACTOR_MECHANICAL_DESCRIPTION,
|
||||
],
|
||||
category: Category.Midround,
|
||||
};
|
||||
|
||||
export default DriftingContractor;
|
||||
Reference in New Issue
Block a user