Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revives CMB Black Market Investigation #4405

Merged
merged 18 commits into from
Sep 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,10 @@
#define TRAIT_TOOL_SIMPLE_BLOWTORCH "t_tool_simple_blowtorch"

#define TRAIT_TOOL_PEN "t_tool_pen"

/// Can lockout blackmarket from ASRS console circuits.
#define TRAIT_TOOL_TRADEBAND "t_tool_tradeband"

// CLOTHING TRAITS
#define TRAIT_CLOTHING_HOOD "t_clothing_hood"

Expand Down
14 changes: 7 additions & 7 deletions code/datums/emergency_calls/emergency_call.dm
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,12 @@
else
return chosen_call

/datum/game_mode/proc/get_specific_call(call_name, announce = TRUE, is_emergency = TRUE, info = "", announce_dispatch_message = TRUE)
/datum/game_mode/proc/get_specific_call(call_name, quiet_launch = FALSE, announce = TRUE, is_emergency = TRUE, info = "", announce_dispatch_message = TRUE)
for(var/datum/emergency_call/E in all_calls) //Loop through all potential candidates
if(E.name == call_name)
var/datum/emergency_call/em_call = new E.type()
em_call.objective_info = info
em_call.activate(announce, is_emergency, announce_dispatch_message)
em_call.activate(quiet_launch, announce, is_emergency, announce_dispatch_message)
return
error("get_specific_call could not find emergency call '[call_name]'")
return
Expand Down Expand Up @@ -192,7 +192,7 @@
else
to_chat(src, SPAN_WARNING("You did not get enlisted in the response team. Better luck next time!"))

/datum/emergency_call/proc/activate(announce = TRUE, turf/override_spawn_loc, announce_dispatch_message = TRUE)
/datum/emergency_call/proc/activate(quiet_launch = FALSE, announce = TRUE, turf/override_spawn_loc, announce_dispatch_message = TRUE)
set waitfor = 0
if(!SSticker.mode) //Something horribly wrong with the gamemode ticker
return
Expand All @@ -202,12 +202,12 @@
show_join_message() //Show our potential candidates the message to let them join.
message_admins("Distress beacon: '[name]' activated [src.hostility? "[SPAN_WARNING("(THEY ARE HOSTILE)")]":"(they are friendly)"]. Looking for candidates.")

if(announce)
if(!quiet_launch)
marine_announcement("A distress beacon has been launched from the [MAIN_SHIP_NAME].", "Priority Alert", 'sound/AI/distressbeacon.ogg', logging = ARES_LOG_SECURITY)

addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/emergency_call, spawn_candidates), announce, override_spawn_loc, announce_dispatch_message), 30 SECONDS)
addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/emergency_call, spawn_candidates), quiet_launch, announce, override_spawn_loc, announce_dispatch_message), 30 SECONDS)

/datum/emergency_call/proc/spawn_candidates(announce = TRUE, override_spawn_loc, announce_dispatch_message = TRUE)
/datum/emergency_call/proc/spawn_candidates(quiet_launch = FALSE, announce = TRUE, override_spawn_loc, announce_dispatch_message = TRUE)
if(SSticker.mode)
SSticker.mode.picked_calls -= src

Expand All @@ -218,7 +218,7 @@
members = list() //Empty the members list.
candidates = list()

if(announce)
if(!quiet_launch)
marine_announcement("The distress signal has not received a response, the launch tubes are now recalibrating.", "Distress Beacon", logging = ARES_LOG_SECURITY)
return

Expand Down
41 changes: 41 additions & 0 deletions code/datums/emergency_calls/inspection.dm
Original file line number Diff line number Diff line change
Expand Up @@ -263,3 +263,44 @@
to_chat(M, SPAN_BOLD("The laws of arth stretch beyond the Sol. Where others fall to corruption, you stay steadfast in your morals."))
to_chat(M, SPAN_BOLD("Corporate Officers chase after paychecks and promotions, but you are motivated to do your sworn duty and care for the population, no matter how far or isolated a colony may be."))
to_chat(M, SPAN_BOLD("Despite being stretched thin, the stalwart oath of the Marshals has continued to keep communities safe, with the CMB well respected by many. You are a representation of that oath, serve with distinction."))

/datum/emergency_call/inspection_cmb/black_market
name = "Inspection - Colonial Marshal Ledger Investigation Team"
mob_max = 3 //Marshal, Deputy, ICC CL
mob_min = 2
shuttle_id = "Distress_PMC"

max_synths = 0
will_spawn_icc_liaison = TRUE
will_spawn_cmb_observer = FALSE

/datum/emergency_call/inspection_cmb/black_market/New()
..()
dispatch_message = "Third Fleet High Command to [MAIN_SHIP_NAME], we have received inconsistent supply manifests and irregularities on the ASRS system aboard your ship, and have requested a CMB Investigation Team to board and clear you of any wrongdoing."
arrival_message = "Incoming Transmission: [MAIN_SHIP_NAME], this is Anchorpoint Station with the Colonial Marshal Bureau. Be advised, we are dispatching a team of Marshals to board with you by request of GSO-91. Submitting authorized docking clearances, over."
objectives = "Investigate the inconsistencies aboard the [MAIN_SHIP_NAME]'s ASRS. In the case of illegal activity, collect evidence, and submit a report to the CMB Command at Anchorpoint Station. If required, the ICC Liaison's Tradeband is capable of fixing ASRS computers. Work with the [MAIN_SHIP_NAME]'s military police force."

/datum/emergency_call/inspection_cmb/black_market/create_member(datum/mind/current_mind, turf/override_spawn_loc)
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(spawn_loc))
return //Didn't find a useable spawn point.

var/mob/living/carbon/human/mob = new(spawn_loc)
current_mind.transfer_to(mob, TRUE)

if(!leader && HAS_FLAG(mob?.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job))
leader = mob
to_chat(mob, SPAN_ROLE_HEADER("You are the Colonial Marshal!"))
arm_equipment(mob, /datum/equipment_preset/cmb/leader, TRUE, TRUE)
else if(!icc_liaison && will_spawn_icc_liaison && check_timelock(mob.client, JOB_CORPORATE_LIAISON, time_required_for_job))
icc_liaison = mob
to_chat(mob, SPAN_ROLE_HEADER("You are a CMB-attached Interstellar Commerce Commission Liaison!"))
arm_equipment(mob, /datum/equipment_preset/cmb/liaison/black_market, TRUE, TRUE) //ICC CL gets a custom item
else
to_chat(mob, SPAN_ROLE_HEADER("You are a CMB Deputy!"))
arm_equipment(mob, /datum/equipment_preset/cmb/standard, TRUE, TRUE)

print_backstory(mob)

addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), mob, SPAN_BOLD("Objectives:</b> [objectives]")), 1 SECONDS)
10 changes: 10 additions & 0 deletions code/datums/skills.dm
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,16 @@ CIVILIAN
SKILL_INTEL = SKILL_INTEL_EXPERT,
)

/datum/skills/civilian/icc_investigation
name = "ICC CL - Black Market ERT"
skills = list(
SKILL_CQC = SKILL_CQC_DEFAULT,
SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED,
SKILL_ENGINEER = SKILL_ENGINEER_ENGI, //The ASRS consoles
SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN,
SKILL_POLICE = SKILL_POLICE_SKILLED, //The CMB Tradeband Compliance Device
)

/datum/skills/civilian/manager/director
name = "Weyland-Yutani Director"
skills = list(
Expand Down
2 changes: 2 additions & 0 deletions code/datums/supply_packs/_supply_packs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
var/iteration_needed = 0
/// How many W-Y dollars are deducted from the supply controller. Only use for contraband.
var/dollar_cost = 0
/// How much "heat" this crate adds, too much heat will send an investigation. Only use for contraband.
var/crate_heat = 0

/datum/supply_packs/New()
if(randomised_num_contained)
Expand Down
28 changes: 23 additions & 5 deletions code/datums/supply_packs/black_market.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ black market prices are NOT based on real or in-universe costs. they are based o

*/

/datum/supply_packs/contraband//base
/datum/supply_packs/contraband //base
name = "contraband crate"
contains = null
containertype = null
Expand All @@ -25,6 +25,7 @@ black market prices are NOT based on real or in-universe costs. they are based o
contraband = TRUE
cost = 0
dollar_cost = 50
crate_heat = 5

/obj/structure/largecrate/black_market
/// Wipes points from objects inside to avoid infinite farming.
Expand Down Expand Up @@ -68,11 +69,13 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related.
contains = list(/obj/item/device/black_market_scanner)
containername = "trash cart"
dollar_cost = 5
crate_heat = 0
containertype = /obj/structure/closet/crate/trashcart

/datum/supply_packs/contraband/seized/confiscated_equipment
name = "seized foreign equipment crate"
dollar_cost = 70
crate_heat = 10
containertype = /obj/structure/largecrate/black_market/confiscated_equipment

/obj/structure/largecrate/black_market/confiscated_equipment/Initialize()
Expand Down Expand Up @@ -115,6 +118,7 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related.
name = "seized foreign weaponry crate"
contains = list()
dollar_cost = 45
crate_heat = 15
containertype = /obj/structure/largecrate/black_market/confiscated_weaponry

/obj/structure/largecrate/black_market/confiscated_weaponry/Initialize()
Expand Down Expand Up @@ -413,6 +417,7 @@ Additionally, weapons that are way too good to put in the basically-flavor black
/obj/item/ammo_magazine/pistol/holdout,
)
dollar_cost = 5
crate_heat = 2
containertype = /obj/structure/largecrate/black_market

/datum/supply_packs/contraband/seized/bizon
Expand Down Expand Up @@ -527,6 +532,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat
/obj/item/reagent_container/food/drinks/bottle/beer/craft/mono,
)
dollar_cost = 35
crate_heat = -5
containertype = /obj/structure/largecrate/black_market

/datum/supply_packs/contraband/shipside/confiscated_medicine
Expand All @@ -541,6 +547,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat
/obj/item/storage/pill_bottle/paracetamol,
)
dollar_cost = 25
crate_heat = 3
containertype = /obj/structure/largecrate/black_market

/datum/supply_packs/contraband/shipside/confiscated_cuisine
Expand Down Expand Up @@ -582,6 +589,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat
/obj/item/reagent_container/food/condiment/hotsauce/franks/macho,
)
dollar_cost = 15
crate_heat = -5
containertype = /obj/structure/largecrate/black_market


Expand All @@ -598,6 +606,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat
/obj/item/storage/fancy/cigar/tarbacktube,
)
dollar_cost = 45
crate_heat = -5
containertype = /obj/structure/largecrate/black_market

/datum/supply_packs/contraband/shipside/confiscated_miscellaneous
Expand All @@ -622,7 +631,6 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat
/obj/item/explosive/grenade/smokebomb,
/obj/item/corncob,
/obj/item/poster,
/obj/item/weapon/banhammer,
realforest2001 marked this conversation as resolved.
Show resolved Hide resolved
/obj/item/toy/prize/ripley,
/obj/item/toy/prize/fireripley,
/obj/item/toy/prize/deathripley,
Expand All @@ -639,6 +647,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat
/obj/item/pamphlet/language/spanish,
)
dollar_cost = 30
crate_heat = -2
containertype = /obj/structure/largecrate/black_market


Expand All @@ -659,6 +668,7 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted
name = "surplus USCM poncho crate (x2)"
dollar_cost = 15
containertype = /obj/structure/largecrate/black_market/poncho
crate_heat = -2

/obj/structure/largecrate/black_market/poncho/Initialize()
. = ..()
Expand All @@ -671,6 +681,7 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted
/datum/supply_packs/contraband/surplus/uscm_heap
name = "surplus high-explosive armor-piercing M41A magazine crate (x3)"
dollar_cost = 40
crate_heat = -2
containertype = /obj/structure/largecrate/black_market/uscm_heap

/obj/structure/largecrate/black_market/uscm_heap/Initialize()
Expand Down Expand Up @@ -715,6 +726,7 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted
name = "surplus magazine box (Ext M4RA x 12)"
contains = list(/obj/item/ammo_box/magazine/m4ra/ext)
dollar_cost = 45
crate_heat = 3
containertype = /obj/structure/largecrate/black_market

/* - Misc. USCM weaponry - */
Expand Down Expand Up @@ -761,14 +773,13 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t

/datum/supply_packs/contraband/deep_storage
group = "Deep Storage"


// Helmet Garb
crate_heat = -5

/datum/supply_packs/contraband/deep_storage/spacejam
name = "Tickets to Space Jam"
contains = list(/obj/item/prop/helmetgarb/spacejam_tickets)
dollar_cost = 5
crate_heat = -2
containertype = /obj/structure/largecrate/black_market

/datum/supply_packs/contraband/deep_storage/broken_nvgs
Expand Down Expand Up @@ -923,6 +934,7 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t
name = "Frozen Lime"
contains = list(/obj/item/reagent_container/food/snacks/grown/lime)
dollar_cost = 5
crate_heat = -2
containertype = /obj/structure/largecrate/black_market

/datum/supply_packs/contraband/deep_storage/uno_reverse_random
Expand Down Expand Up @@ -961,18 +973,21 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t
name = "D18 Holdout Pistol"
contains = list(/obj/item/storage/box/clf)
dollar_cost = 10
crate_heat = 2
containertype = /obj/structure/largecrate/black_market

/datum/supply_packs/contraband/deep_storage/m4a3_c
name = "M4A3 Custom Pistol"
contains = list(/obj/item/weapon/gun/pistol/m4a3/custom)
dollar_cost = 35
crate_heat = 4
containertype = /obj/structure/largecrate/black_market

/datum/supply_packs/contraband/deep_storage/m44_c
name = "M44 Custom Revolver"
contains = list(/obj/item/weapon/gun/revolver/m44/custom)
dollar_cost = 70
crate_heat = 4
containertype = /obj/structure/largecrate/black_market

/* --- MISCELLANEOUS --- */
Expand All @@ -989,6 +1004,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro
/datum/supply_packs/contraband/miscellaneous/secured_wildlife
name = "secured wildlife container"
dollar_cost = 45
crate_heat = 7
containertype = /obj/structure/largecrate/black_market/secured_wildlife

/obj/structure/largecrate/black_market/secured_wildlife
Expand All @@ -1007,6 +1023,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro
/datum/supply_packs/contraband/miscellaneous/potted_plant
name = "potted plant crate"
dollar_cost = 50
crate_heat = -10
contains = list(/obj/structure/flora/pottedplant/random/unanchored)
containertype = /obj/structure/largecrate/black_market

Expand All @@ -1019,6 +1036,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro
/datum/supply_packs/contraband/miscellaneous/clf_supplies
name = "unmarked CLF supply crate"
dollar_cost = 40
crate_heat = 25
contains = list()
containertype = /obj/structure/largecrate/black_market/clf_supplies

Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/colonialmarines/colonialmarines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@
continue

if(groundside_humans > (groundside_xenos * GROUNDSIDE_XENO_MULTIPLIER))
SSticker.mode.get_specific_call("Xenomorphs Groundside (Forsaken)", FALSE, FALSE, announce_dispatch_message = FALSE)
SSticker.mode.get_specific_call("Xenomorphs Groundside (Forsaken)", TRUE, FALSE, FALSE, announce_dispatch_message = FALSE)

TIMER_COOLDOWN_START(src, COOLDOWN_HIJACK_GROUND_CHECK, 1 MINUTES)

Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/colonialmarines/whiskey_outpost.dm
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@
announce_xeno_wave(wave)
if(xeno_wave == 7)
//Wave when Marines get reinforcements!
get_specific_call("Marine Reinforcements (Squad)", TRUE, FALSE)
get_specific_call("Marine Reinforcements (Squad)", FALSE, TRUE, FALSE)
xeno_wave = min(xeno_wave + 1, WO_MAX_WAVE)


Expand Down
1 change: 0 additions & 1 deletion code/game/objects/effects/spawners/random.dm
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,6 @@
/obj/item/poster,\
/obj/item/toy/bikehorn,\
/obj/item/toy/beach_ball,\
/obj/item/weapon/banhammer,\
/obj/item/toy/balloon,\
/obj/item/toy/blink,\
/obj/item/toy/crossbow,\
Expand Down
Loading