mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-16 18:45:22 +01:00
[MIRROR] Export scanner doesn't need to link + old bounty code is gone (#2197)
* Export scanner doesn't need to link + old bounty code is gone (#55504) Removes the Export scanner's need to link with a console and cleans up the old bounty code * Export scanner doesn't need to link + old bounty code is gone Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
This commit is contained in:
@@ -24,10 +24,6 @@
|
||||
wanted_types[i_type] = TRUE
|
||||
wanted_types = string_assoc_list(wanted_types)
|
||||
|
||||
|
||||
/datum/bounty/item/completion_string()
|
||||
return {"[shipped_count]/[required_count]"}
|
||||
|
||||
/datum/bounty/item/can_claim()
|
||||
return ..() && shipped_count >= required_count
|
||||
|
||||
@@ -46,6 +42,3 @@
|
||||
shipped_count += O_is_a_stack.amount
|
||||
else
|
||||
shipped_count += 1
|
||||
|
||||
/datum/bounty/item/compatible_with(datum/other_bounty)
|
||||
return type != other_bounty.type
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
M.wreckage = null // So the mech doesn't explode.
|
||||
..()
|
||||
|
||||
/datum/bounty/item/mech/mark_high_priority(scale_reward)
|
||||
return ..(max(scale_reward * 0.7, 1.2))
|
||||
|
||||
/datum/bounty/item/mech/ripleymk2
|
||||
name = "APLU MK-II \"Ripley\""
|
||||
reward = CARGO_CRATE_VALUE * 26
|
||||
|
||||
@@ -3,9 +3,6 @@
|
||||
var/shipped_volume = 0
|
||||
var/datum/reagent/wanted_reagent
|
||||
|
||||
/datum/bounty/reagent/completion_string()
|
||||
return {"[round(shipped_volume)]/[required_volume] Units"}
|
||||
|
||||
/datum/bounty/reagent/can_claim()
|
||||
return ..() && shipped_volume >= required_volume
|
||||
|
||||
@@ -25,12 +22,6 @@
|
||||
if(shipped_volume > required_volume)
|
||||
shipped_volume = required_volume
|
||||
|
||||
/datum/bounty/reagent/compatible_with(other_bounty)
|
||||
if(!istype(other_bounty, /datum/bounty/reagent))
|
||||
return TRUE
|
||||
var/datum/bounty/reagent/R = other_bounty
|
||||
return wanted_reagent.type != R.wanted_reagent.type
|
||||
|
||||
/datum/bounty/reagent/simple_drink
|
||||
name = "Simple Drink"
|
||||
reward = CARGO_CRATE_VALUE * 3
|
||||
@@ -199,9 +190,6 @@
|
||||
/// minimum volume of chemical needed, gets randomized on new()
|
||||
var/wanted_vol = 30
|
||||
|
||||
/datum/bounty/pill/completion_string()
|
||||
return {"[shipped_ammount]/[required_ammount] pills"}
|
||||
|
||||
/datum/bounty/pill/can_claim()
|
||||
return ..() && shipped_ammount >= required_ammount
|
||||
|
||||
@@ -219,12 +207,6 @@
|
||||
if(shipped_ammount > required_ammount)
|
||||
shipped_ammount = required_ammount
|
||||
|
||||
/datum/bounty/pill/compatible_with(other_bounty)
|
||||
if(!istype(other_bounty, /datum/bounty/pill/simple_pill))
|
||||
return TRUE
|
||||
var/datum/bounty/pill/simple_pill/P = other_bounty
|
||||
return (wanted_reagent.type == P.wanted_reagent.type) && (wanted_vol == P.wanted_vol)
|
||||
|
||||
/datum/bounty/pill/simple_pill
|
||||
name = "Simple Pill"
|
||||
reward = CARGO_CRATE_VALUE * 20
|
||||
|
||||
@@ -32,24 +32,3 @@
|
||||
reward = CARGO_CRATE_VALUE * 2
|
||||
required_count = 10
|
||||
wanted_types = list(/obj/item/trash)
|
||||
|
||||
/datum/bounty/more_bounties
|
||||
name = "More Bounties"
|
||||
description = "Complete enough bounties and CentCom will issue new ones!"
|
||||
reward = 5 // number of bounties
|
||||
var/required_bounties = 5
|
||||
|
||||
/datum/bounty/more_bounties/can_claim()
|
||||
return ..() && completed_bounty_count() >= required_bounties
|
||||
|
||||
/datum/bounty/more_bounties/completion_string()
|
||||
return "[min(required_bounties, completed_bounty_count())]/[required_bounties] Bounties"
|
||||
|
||||
/datum/bounty/more_bounties/reward_string()
|
||||
return "Up to [reward] new bounties"
|
||||
|
||||
/datum/bounty/more_bounties/claim()
|
||||
if(can_claim())
|
||||
claimed = TRUE
|
||||
for(var/i = 0; i < reward; ++i)
|
||||
try_add_bounty(random_bounty())
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
description = "Nanotrasen is interested in a virus with a [stat_name] stat of exactly [stat_value]. Central Command will pay handsomely for such a virus."
|
||||
reward += rand(0, 4) * CARGO_CRATE_VALUE
|
||||
|
||||
/datum/bounty/virus/completion_string()
|
||||
return shipped ? "Shipped" : "Not Shipped"
|
||||
|
||||
/datum/bounty/virus/can_claim()
|
||||
return ..() && shipped
|
||||
|
||||
@@ -41,12 +38,6 @@
|
||||
return
|
||||
shipped = TRUE
|
||||
|
||||
/datum/bounty/virus/compatible_with(datum/other_bounty)
|
||||
if(!istype(other_bounty, /datum/bounty/virus))
|
||||
return TRUE
|
||||
var/datum/bounty/virus/V = other_bounty
|
||||
return type != V.type || stat_value != V.stat_value
|
||||
|
||||
|
||||
/datum/bounty/virus/proc/accepts_virus(V)
|
||||
return TRUE
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
GLOBAL_LIST_EMPTY(bounties_list)
|
||||
|
||||
/datum/bounty
|
||||
var/name
|
||||
var/description
|
||||
@@ -7,14 +5,6 @@ GLOBAL_LIST_EMPTY(bounties_list)
|
||||
var/claimed = FALSE
|
||||
var/high_priority = FALSE
|
||||
|
||||
/// Displayed on bounty UI screen.
|
||||
/datum/bounty/proc/completion_string()
|
||||
return ""
|
||||
|
||||
/// Displayed on bounty UI screen.
|
||||
/datum/bounty/proc/reward_string()
|
||||
return "[reward] Credits"
|
||||
|
||||
/datum/bounty/proc/can_claim()
|
||||
return !claimed
|
||||
|
||||
@@ -34,49 +24,6 @@ GLOBAL_LIST_EMPTY(bounties_list)
|
||||
/datum/bounty/proc/ship(obj/O)
|
||||
return
|
||||
|
||||
/** When randomly generating the bounty list, duplicate bounties must be avoided.
|
||||
* This proc is used to determine if two bounties are duplicates, or incompatible in general.
|
||||
*/
|
||||
/datum/bounty/proc/compatible_with(other_bounty)
|
||||
return TRUE
|
||||
|
||||
/datum/bounty/proc/mark_high_priority(scale_reward = 2)
|
||||
if(high_priority)
|
||||
return
|
||||
high_priority = TRUE
|
||||
reward = round(reward * scale_reward)
|
||||
|
||||
/** This proc is called when the shuttle docks at CentCom.
|
||||
* It handles items shipped for bounties.
|
||||
*/
|
||||
/proc/bounty_ship_item_and_contents(atom/movable/AM, dry_run=FALSE)
|
||||
if(!GLOB.bounties_list.len)
|
||||
setup_bounties()
|
||||
|
||||
var/list/matched_one = FALSE
|
||||
for(var/thing in reverseRange(AM.GetAllContents()))
|
||||
var/matched_this = FALSE
|
||||
for(var/datum/bounty/B in GLOB.bounties_list)
|
||||
if(B.applies_to(thing))
|
||||
matched_one = TRUE
|
||||
matched_this = TRUE
|
||||
if(!dry_run)
|
||||
B.ship(thing)
|
||||
if(!dry_run && matched_this)
|
||||
qdel(thing)
|
||||
return matched_one
|
||||
|
||||
/// Returns FALSE if the bounty is incompatible with the current bounties.
|
||||
/proc/try_add_bounty(datum/bounty/new_bounty)
|
||||
if(!new_bounty || !new_bounty.name || !new_bounty.description)
|
||||
return FALSE
|
||||
for(var/i in GLOB.bounties_list)
|
||||
var/datum/bounty/B = i
|
||||
if(!B.compatible_with(new_bounty) || !new_bounty.compatible_with(B))
|
||||
return FALSE
|
||||
GLOB.bounties_list += new_bounty
|
||||
return TRUE
|
||||
|
||||
/** Returns a new bounty of random type, but does not add it to GLOB.bounties_list.
|
||||
*
|
||||
* *Guided determines what specific catagory of bounty should be chosen.
|
||||
@@ -130,65 +77,3 @@ GLOBAL_LIST_EMPTY(bounties_list)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/botany))
|
||||
return new subtype
|
||||
|
||||
// Called lazily at startup to populate GLOB.bounties_list with random bounties.
|
||||
/proc/setup_bounties()
|
||||
|
||||
var/pick // instead of creating it a bunch let's go ahead and toss it here, we know we're going to use it for dynamics and subtypes!
|
||||
|
||||
/********************************Subtype Gens********************************/
|
||||
var/list/easy_add_list_subtypes = list(/datum/bounty/item/assistant = 2,
|
||||
/datum/bounty/item/mech = 1,
|
||||
/datum/bounty/item/chef = 2,
|
||||
/datum/bounty/item/security = 1,
|
||||
/datum/bounty/virus = 1,
|
||||
/datum/bounty/item/engineering = 1,
|
||||
/datum/bounty/item/mining = 2,
|
||||
/datum/bounty/item/medical = 2,
|
||||
/datum/bounty/item/botany = 2)
|
||||
|
||||
for(var/the_type in easy_add_list_subtypes)
|
||||
for(var/i in 1 to easy_add_list_subtypes[the_type])
|
||||
pick = pick(subtypesof(the_type))
|
||||
try_add_bounty(new pick)
|
||||
|
||||
/********************************Strict Type Gens********************************/
|
||||
var/list/easy_add_list_strict_types = list(/datum/bounty/reagent/simple_drink = 1,
|
||||
/datum/bounty/reagent/complex_drink = 1,
|
||||
/datum/bounty/reagent/chemical_simple = 1,
|
||||
/datum/bounty/reagent/chemical_complex = 1,
|
||||
/datum/bounty/pill/simple_pill = 1)
|
||||
|
||||
for(var/the_strict_type in easy_add_list_strict_types)
|
||||
for(var/i in 1 to easy_add_list_strict_types[the_strict_type])
|
||||
try_add_bounty(new the_strict_type)
|
||||
|
||||
/********************************Dynamic Gens********************************/
|
||||
|
||||
for(var/i in 0 to 1)
|
||||
if(prob(50))
|
||||
pick = pick(subtypesof(/datum/bounty/item/slime))
|
||||
else
|
||||
pick = pick(subtypesof(/datum/bounty/item/science))
|
||||
try_add_bounty(new pick)
|
||||
|
||||
/********************************Cutoff for Non-Low Priority Bounties********************************/
|
||||
var/datum/bounty/B = pick(GLOB.bounties_list)
|
||||
B.mark_high_priority()
|
||||
|
||||
/********************************Low Priority Gens********************************/
|
||||
var/list/low_priority_strict_type_list = list( /datum/bounty/item/alien_organs,
|
||||
/datum/bounty/item/syndicate_documents,
|
||||
/datum/bounty/item/adamantine,
|
||||
/datum/bounty/item/trash,
|
||||
/datum/bounty/more_bounties)
|
||||
|
||||
for(var/low_priority_bounty in low_priority_strict_type_list)
|
||||
try_add_bounty(new low_priority_bounty)
|
||||
|
||||
/proc/completed_bounty_count()
|
||||
var/count = 0
|
||||
for(var/i in GLOB.bounties_list)
|
||||
var/datum/bounty/B = i
|
||||
if(B.claimed)
|
||||
++count
|
||||
return count
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/export_scanner
|
||||
name = "export scanner"
|
||||
desc = "A device used to check objects against Nanotrasen exports and bounty database."
|
||||
desc = "A device used to check objects against Nanotrasen exports database."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "export_scanner"
|
||||
inhand_icon_state = "radio"
|
||||
@@ -8,38 +8,19 @@
|
||||
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
|
||||
item_flags = NOBLUDGEON
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
siemens_coefficient = 1
|
||||
var/obj/machinery/computer/cargo/cargo_console = null
|
||||
|
||||
/obj/item/export_scanner/examine(user)
|
||||
. = ..()
|
||||
if(!cargo_console)
|
||||
. += "<span class='notice'>[src] is not currently linked to a cargo console.</span>"
|
||||
|
||||
/obj/item/export_scanner/afterattack(obj/O, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!istype(O) || !proximity)
|
||||
return
|
||||
|
||||
if(istype(O, /obj/machinery/computer/cargo))
|
||||
var/obj/machinery/computer/cargo/C = O
|
||||
if(!C.requestonly)
|
||||
cargo_console = C
|
||||
to_chat(user, "<span class='notice'>Scanner linked to [C].</span>")
|
||||
else if(!istype(cargo_console))
|
||||
to_chat(user, "<span class='warning'>You must link [src] to a cargo console first!</span>")
|
||||
// Before you fix it:
|
||||
// yes, checking manifests is a part of intended functionality.
|
||||
|
||||
var/datum/export_report/ex = export_item_and_contents(O, dry_run=TRUE)
|
||||
var/price = 0
|
||||
for(var/x in ex.total_amount)
|
||||
price += ex.total_value[x]
|
||||
if(price)
|
||||
to_chat(user, "<span class='notice'>Scanned [O], value: <b>[price]</b> credits[O.contents.len ? " (contents included)" : ""].</span>")
|
||||
else
|
||||
// Before you fix it:
|
||||
// yes, checking manifests is a part of intended functionality.
|
||||
|
||||
var/datum/export_report/ex = export_item_and_contents(O, cargo_console.get_export_categories(), dry_run=TRUE)
|
||||
var/price = 0
|
||||
for(var/x in ex.total_amount)
|
||||
price += ex.total_value[x]
|
||||
|
||||
if(price)
|
||||
to_chat(user, "<span class='notice'>Scanned [O], value: <b>[price]</b> credits[O.contents.len ? " (contents included)" : ""].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Scanned [O], no export value.</span>")
|
||||
if(bounty_ship_item_and_contents(O, dry_run=TRUE))
|
||||
to_chat(user, "<span class='notice'>Scanned item is eligible for one or more bounties.</span>")
|
||||
to_chat(user, "<span class='warning'>Scanned [O], no export value.</span>")
|
||||
|
||||
@@ -27,7 +27,7 @@ Then the player gets the profit from selling his own wasted time.
|
||||
var/list/exported_atoms_ref = list() //if they're not deleted they go in here for use.
|
||||
|
||||
// external_report works as "transaction" object, pass same one in if you're doing more than one export in single go
|
||||
/proc/export_item_and_contents(atom/movable/AM, allowed_categories = EXPORT_CARGO, apply_elastic = TRUE, delete_unsold = TRUE, dry_run=FALSE, datum/export_report/external_report)
|
||||
/proc/export_item_and_contents(atom/movable/AM, apply_elastic = TRUE, delete_unsold = TRUE, dry_run=FALSE, datum/export_report/external_report)
|
||||
if(!GLOB.exports_list.len)
|
||||
setupExports()
|
||||
|
||||
@@ -50,8 +50,8 @@ Then the player gets the profit from selling his own wasted time.
|
||||
for(var/datum/export/E in GLOB.exports_list)
|
||||
if(!E)
|
||||
continue
|
||||
if(E.applies_to(thing, allowed_categories, apply_elastic))
|
||||
sold = E.sell_object(thing, report, dry_run, allowed_categories , apply_elastic, profit_ratio)
|
||||
if(E.applies_to(thing, apply_elastic))
|
||||
sold = E.sell_object(thing, report, dry_run, apply_elastic, profit_ratio)
|
||||
report.exported_atoms += " [thing.name]"
|
||||
if(!QDELETED(thing))
|
||||
report.exported_atoms_ref += thing
|
||||
@@ -75,8 +75,7 @@ Then the player gets the profit from selling his own wasted time.
|
||||
//cost includes elasticity, this does not.
|
||||
var/init_cost
|
||||
|
||||
//All these need to be present in export call parameter for this to apply.
|
||||
var/export_category = EXPORT_CARGO
|
||||
|
||||
|
||||
/datum/export/New()
|
||||
..()
|
||||
@@ -96,7 +95,7 @@ Then the player gets the profit from selling his own wasted time.
|
||||
cost = init_cost
|
||||
|
||||
// Checks the cost. 0 cost items are skipped in export.
|
||||
/datum/export/proc/get_cost(obj/O, allowed_categories = NONE, apply_elastic = TRUE)
|
||||
/datum/export/proc/get_cost(obj/O, apply_elastic = TRUE)
|
||||
var/amount = get_amount(O)
|
||||
if(apply_elastic)
|
||||
if(k_elasticity!=0)
|
||||
@@ -112,14 +111,12 @@ Then the player gets the profit from selling his own wasted time.
|
||||
return 1
|
||||
|
||||
// Checks if the item is fit for export datum.
|
||||
/datum/export/proc/applies_to(obj/O, allowed_categories = NONE, apply_elastic = TRUE)
|
||||
if((allowed_categories & export_category) != export_category)
|
||||
return FALSE
|
||||
/datum/export/proc/applies_to(obj/O, apply_elastic = TRUE)
|
||||
if(!is_type_in_typecache(O, export_types))
|
||||
return FALSE
|
||||
if(include_subtypes && is_type_in_typecache(O, exclude_types))
|
||||
return FALSE
|
||||
if(!get_cost(O, allowed_categories , apply_elastic))
|
||||
if(!get_cost(O, apply_elastic))
|
||||
return FALSE
|
||||
if(O.flags_1 & HOLOGRAM_1)
|
||||
return FALSE
|
||||
@@ -133,9 +130,9 @@ Then the player gets the profit from selling his own wasted time.
|
||||
* get_cost, get_amount and applies_to do not neccesary mean a successful sale.
|
||||
*
|
||||
*/
|
||||
/datum/export/proc/sell_object(obj/O, datum/export_report/report, dry_run = TRUE, allowed_categories = EXPORT_CARGO , apply_elastic = TRUE)
|
||||
/datum/export/proc/sell_object(obj/O, datum/export_report/report, dry_run = TRUE, apply_elastic = TRUE)
|
||||
///This is the value of the object, as derived from export datums.
|
||||
var/the_cost = get_cost(O, allowed_categories , apply_elastic)
|
||||
var/the_cost = get_cost(O, apply_elastic)
|
||||
///Quantity of the object in question.
|
||||
var/amount = get_amount(O)
|
||||
///Utilized in the pricetag component. Splits the object's profit when it has a pricetag by the specified amount.
|
||||
@@ -144,7 +141,7 @@ Then the player gets the profit from selling his own wasted time.
|
||||
if(amount <=0 || the_cost <=0)
|
||||
return FALSE
|
||||
if(dry_run == FALSE)
|
||||
if(SEND_SIGNAL(O, COMSIG_ITEM_SOLD, item_value = get_cost(O, allowed_categories , apply_elastic)) & COMSIG_ITEM_SPLIT_VALUE)
|
||||
if(SEND_SIGNAL(O, COMSIG_ITEM_SOLD, item_value = get_cost(O, apply_elastic)) & COMSIG_ITEM_SPLIT_VALUE)
|
||||
profit_ratio = SEND_SIGNAL(O, COMSIG_ITEM_SPLIT_PROFIT_DRY)
|
||||
the_cost = the_cost * ((100 - profit_ratio) * 0.01)
|
||||
else
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
unit_name = "completed bounty cube"
|
||||
export_types = list(/obj/item/bounty_cube)
|
||||
|
||||
/datum/export/bounty_box/get_cost(obj/item/bounty_cube/cube, allowed_categories, apply_elastic)
|
||||
/datum/export/bounty_box/get_cost(obj/item/bounty_cube/cube, apply_elastic)
|
||||
return cube.bounty_value
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/datum/export/organ
|
||||
include_subtypes = FALSE //CentCom doesn't need organs from non-humans.
|
||||
export_category = EXPORT_CONTRABAND
|
||||
|
||||
/datum/export/organ/heart
|
||||
cost = CARGO_CRATE_VALUE * 0.2 //For the man who has everything and nothing.
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
return 0
|
||||
return ..() * S.rarity // That's right, no bonus for potency. Send a crappy sample first to "show improvement" later.
|
||||
|
||||
/datum/export/seed/sell_object(obj/O, datum/export_report/report, dry_run, allowed_categories, apply_elastic)
|
||||
/datum/export/seed/sell_object(obj/O, datum/export_report/report, dry_run, apply_elastic)
|
||||
. = ..()
|
||||
if(. && !dry_run)
|
||||
var/obj/item/seeds/S = O
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
/datum/export/stack/skin/human
|
||||
cost = CARGO_CRATE_VALUE * 0.5
|
||||
export_category = EXPORT_CONTRABAND
|
||||
unit_name = "piece"
|
||||
message = "of human skin"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/human)
|
||||
@@ -28,13 +27,11 @@
|
||||
|
||||
/datum/export/stack/skin/cat
|
||||
cost = CARGO_CRATE_VALUE * 0.75
|
||||
export_category = EXPORT_CONTRABAND
|
||||
unit_name = "cat hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/cat)
|
||||
|
||||
/datum/export/stack/skin/corgi
|
||||
cost = CARGO_CRATE_VALUE
|
||||
export_category = EXPORT_CONTRABAND
|
||||
unit_name = "corgi hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/corgi)
|
||||
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
var/datum/export_report/ex = export_item_and_contents(I, allowed_categories = (ALL), dry_run=TRUE)
|
||||
var/datum/export_report/ex = export_item_and_contents(I, dry_run=TRUE)
|
||||
var/price = 0
|
||||
for(var/x in ex.total_amount)
|
||||
price += ex.total_value[x]
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
for(var/atom/movable/AM in get_turf(pad))
|
||||
if(AM == pad)
|
||||
continue
|
||||
export_item_and_contents(AM, EXPORT_PIRATE | EXPORT_CARGO | EXPORT_CONTRABAND | EXPORT_EMAG, apply_elastic = FALSE, dry_run = TRUE, external_report = ex)
|
||||
export_item_and_contents(AM, apply_elastic = FALSE, dry_run = TRUE, external_report = ex)
|
||||
|
||||
for(var/datum/export/E in ex.total_amount)
|
||||
status_report += E.total_printout(ex,notes = FALSE)
|
||||
@@ -398,9 +398,6 @@
|
||||
pad.icon_state = pad.idle_state
|
||||
deltimer(sending_timer)
|
||||
|
||||
/datum/export/pirate
|
||||
export_category = EXPORT_PIRATE
|
||||
|
||||
//Attempts to find the thing on station
|
||||
/datum/export/pirate/proc/find_loot()
|
||||
return
|
||||
|
||||
@@ -195,7 +195,6 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
|
||||
setupExports()
|
||||
|
||||
var/msg = ""
|
||||
var/matched_bounty = FALSE
|
||||
|
||||
var/datum/export_report/ex = new
|
||||
|
||||
@@ -204,17 +203,12 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
|
||||
for(var/atom/movable/AM in shuttle_area)
|
||||
if(iscameramob(AM))
|
||||
continue
|
||||
if(bounty_ship_item_and_contents(AM, dry_run = FALSE))
|
||||
matched_bounty = TRUE
|
||||
if(!AM.anchored || istype(AM, /obj/vehicle/sealed/mecha))
|
||||
export_item_and_contents(AM, export_categories , dry_run = FALSE, external_report = ex)
|
||||
|
||||
if(ex.exported_atoms)
|
||||
ex.exported_atoms += "." //ugh
|
||||
|
||||
if(matched_bounty)
|
||||
msg += "Bounty items received. An update has been sent to all bounty consoles. "
|
||||
|
||||
for(var/datum/export/E in ex.total_amount)
|
||||
var/export_text = E.total_printout(ex)
|
||||
if(!export_text)
|
||||
|
||||
Reference in New Issue
Block a user