From 64b60fb701d92ebafa77c3e6cf8a714a724f48b3 Mon Sep 17 00:00:00 2001 From: Geeves Date: Sat, 5 Oct 2024 21:37:41 +0200 Subject: [PATCH] Package Delivery Expansion --- aurorastation.dme | 1 + code/modules/cargo/delivery/_helpers.dm | 23 ++++++++++++++++ code/modules/cargo/delivery/backpack.dm | 11 ++++++++ code/modules/cargo/delivery/package.dm | 26 ++++-------------- code/modules/cargo/delivery/receptacle.dm | 12 ++++++++ .../geeves-package_delivery_expansion.yml | 8 ++++++ icons/obj/orion_delivery.dmi | Bin 4077 -> 4653 bytes maps/_common/mapsystem/map.dm | 3 ++ maps/runtime/code/runtime.dm | 2 ++ maps/sccv_horizon/code/sccv_horizon.dm | 4 ++- 10 files changed, 69 insertions(+), 21 deletions(-) create mode 100644 code/modules/cargo/delivery/_helpers.dm create mode 100644 html/changelogs/geeves-package_delivery_expansion.yml diff --git a/aurorastation.dme b/aurorastation.dme index 1142acaf889..f94edb0935c 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1777,6 +1777,7 @@ #include "code\modules\cargo\bounties\slime.dm" #include "code\modules\cargo\bounties\special.dm" #include "code\modules\cargo\bounties\weapon_prototype.dm" +#include "code\modules\cargo\delivery\_helpers.dm" #include "code\modules\cargo\delivery\backpack.dm" #include "code\modules\cargo\delivery\package.dm" #include "code\modules\cargo\delivery\receptacle.dm" diff --git a/code/modules/cargo/delivery/_helpers.dm b/code/modules/cargo/delivery/_helpers.dm new file mode 100644 index 00000000000..1800e39501f --- /dev/null +++ b/code/modules/cargo/delivery/_helpers.dm @@ -0,0 +1,23 @@ +/proc/get_cargo_package_delivery_point(var/atom/atom, var/horizon_only = FALSE) + var/obj/effect/overmap/visitable/ship/horizon + if(SSatlas.current_map.overmap_visitable_type) + horizon = SSshuttle.ship_by_type(SSatlas.current_map.overmap_visitable_type) + + var/turf/current_turf = get_turf(atom) + + var/list/eligible_delivery_points = list() + for(var/obj/structure/cargo_receptacle/delivery_point in all_cargo_receptacles) + var/obj/effect/overmap/visitable/my_sector = GLOB.map_sectors["[current_turf.z]"] + var/obj/effect/overmap/visitable/delivery_point_sector = GLOB.map_sectors["[delivery_point.z]"] + // no delivering to ourselves + if(my_sector == delivery_point_sector) + continue + // guaranteed horizon, has to go to horizon + if(horizon_only && horizon && delivery_point_sector != horizon) + continue + eligible_delivery_points += delivery_point + + if(!length(eligible_delivery_points)) + return + + return pick(eligible_delivery_points) diff --git a/code/modules/cargo/delivery/backpack.dm b/code/modules/cargo/delivery/backpack.dm index 9e882b919e6..e0e3ee6f6ee 100644 --- a/code/modules/cargo/delivery/backpack.dm +++ b/code/modules/cargo/delivery/backpack.dm @@ -71,6 +71,17 @@ north_overlay.layer = courier.layer + 0.01 // we want the tall backpack to render over hair and helmets north_overlay.appearance_flags |= KEEP_APART mob_overlay.AddOverlays(north_overlay) + return add_color_tag_to_overlay(mob_overlay) + +/obj/item/cargo_backpack/proc/add_color_tag_to_overlay(var/image/mob_overlay) + if(!mob_overlay) + return + var/package_index = 1 + for(var/obj/item/cargo_package/package in contained_packages) + var/image/package_tag = image(icon, icon_state = "package_pack_[package_index]_tag") + package_tag.color = package.accent_color + mob_overlay.AddOverlays(package_tag) + package_index++ return mob_overlay /obj/item/cargo_backpack/attack_hand(mob/living/carbon/human/user) diff --git a/code/modules/cargo/delivery/package.dm b/code/modules/cargo/delivery/package.dm index 99cbd0bb2cc..ae98ffb076a 100644 --- a/code/modules/cargo/delivery/package.dm +++ b/code/modules/cargo/delivery/package.dm @@ -17,6 +17,9 @@ icon_state = "express_package" item_state = "express_package" contained_sprite = TRUE + update_icon_on_init = TRUE + has_accents = TRUE + w_class = WEIGHT_CLASS_HUGE force = 15 @@ -41,7 +44,7 @@ pay_amount = rand(12, 17) * 1000 if(delivery_point) setup_delivery_point(delivery_point) - color = pick("#FFFFFF", "#EEEEEE", "#DDDDDD", "#CCCCCC", "#BBBBBB", "#FFDDDD", "#DDDDFF", "#FFFFDD", "#886600") + accent_color = pick(COLOR_RED, COLOR_AMBER, COLOR_PINK, COLOR_YELLOW, COLOR_LIME) /obj/item/cargo_package/proc/setup_delivery_point(var/obj/structure/cargo_receptacle/delivery_point) associated_delivery_point = WEAKREF(delivery_point) @@ -131,27 +134,10 @@ addtimer(CALLBACK(src, PROC_REF(get_delivery_point)), 3 MINUTES) /obj/item/cargo_package/offship/proc/get_delivery_point() - var/obj/effect/overmap/visitable/ship/horizon = SSshuttle.ship_by_type(/obj/effect/overmap/visitable/ship/sccv_horizon) - - var/turf/current_turf = get_turf(src) - - var/list/eligible_delivery_points = list() - for(var/obj/structure/cargo_receptacle/delivery_point in all_cargo_receptacles) - var/obj/effect/overmap/visitable/my_sector = GLOB.map_sectors["[current_turf.z]"] - var/obj/effect/overmap/visitable/delivery_point_sector = GLOB.map_sectors["[delivery_point.z]"] - // no delivering to ourselves - if(my_sector == delivery_point_sector) - continue - // guaranteed horizon, has to go to horizon - if(horizon_delivery && delivery_point_sector.name != horizon.name) - continue - eligible_delivery_points += delivery_point - - if(!length(eligible_delivery_points)) + var/obj/structure/cargo_receptacle/selected_delivery_point = get_cargo_package_delivery_point(src, horizon_delivery) + if(!selected_delivery_point) qdel(src) return - - var/obj/structure/cargo_receptacle/selected_delivery_point = pick(eligible_delivery_points) setup_delivery_point(selected_delivery_point) /obj/item/cargo_package/offship/get_examine_text(mob/user, distance, is_adjacent, infix, suffix) diff --git a/code/modules/cargo/delivery/receptacle.dm b/code/modules/cargo/delivery/receptacle.dm index 89b2091b1eb..6cd0bac0625 100644 --- a/code/modules/cargo/delivery/receptacle.dm +++ b/code/modules/cargo/delivery/receptacle.dm @@ -82,11 +82,23 @@ var/global/list/all_cargo_receptacles = list() visible_message(SPAN_WARNING("\The [src] buzzes harshly, \"Invalid package! Check the delivery ID!\"")) return + var/pays_horizon_account = package.pays_horizon_account + user.visible_message("[user] starts heaving \the [attacking_item] into \the [src]...", SPAN_NOTICE("You start heaving \the [attacking_item] into \the [src]...")) if(do_after(user, 1 SECONDS, src, DO_UNIQUE)) user.drop_from_inventory(attacking_item, src) pay_account(user, attacking_item) qdel(attacking_item) + + var/obj/structure/cargo_receptacle/selected_delivery_point = get_cargo_package_delivery_point(src) + if(selected_delivery_point) + visible_message("\The [src] beeps, \"[SPAN_NOTICE("New package available for delivery.")]\"") + playsound(loc, /singleton/sound_category/print_sound, 50, TRUE) + + var/obj/item/cargo_package/printed_package = new /obj/item/cargo_package/offship(get_turf(user), selected_delivery_point) + printed_package.pays_horizon_account = pays_horizon_account + animate(printed_package, alpha = 0, alpha = 255, time = 1 SECOND) // Makes them fade in + return return ..() diff --git a/html/changelogs/geeves-package_delivery_expansion.yml b/html/changelogs/geeves-package_delivery_expansion.yml new file mode 100644 index 00000000000..6d08fc61d9b --- /dev/null +++ b/html/changelogs/geeves-package_delivery_expansion.yml @@ -0,0 +1,8 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Cargo delivery packages now have colored tags on them which should hopefully make it easier to distinguish between them, instead of changing the entire package's color." + - rscadd: "Delivering a package now outputs another, allowing you to continuously deliver throughout the round, should you choose to." + - bugfix: "Fixed cargo packages runtiming on the runtime map." diff --git a/icons/obj/orion_delivery.dmi b/icons/obj/orion_delivery.dmi index 5aa58e0a9ea41b1d17a4a5d8f2a55b32a9522f19..c21e11f36196396c563e04679c9650b2b54bca20 100644 GIT binary patch literal 4653 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

#Rr`h3ooD+wks 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 diff --git a/maps/_common/mapsystem/map.dm b/maps/_common/mapsystem/map.dm index 117b4d111d0..e17e4fccdf1 100644 --- a/maps/_common/mapsystem/map.dm +++ b/maps/_common/mapsystem/map.dm @@ -63,6 +63,9 @@ var/bluespace_called_message var/bluespace_recall_message + /// The typepath of the visitable our main map is, for example /obj/effect/overmap/visitable/ship/sccv_horizon + var/overmap_visitable_type + /// If this map has ports of call and refuels there. Crew are implied to be able to leave to these ports. /// Ports of call are taken from the current map sector. var/ports_of_call = FALSE diff --git a/maps/runtime/code/runtime.dm b/maps/runtime/code/runtime.dm index 6482abf4a29..2135befd511 100644 --- a/maps/runtime/code/runtime.dm +++ b/maps/runtime/code/runtime.dm @@ -43,6 +43,8 @@ shuttle_called_message = "Attention all hands: Jump sequence initiated. Transit procedures are now in effect. Jump in %ETA%." shuttle_recall_message = "Attention all hands: Jump sequence aborted, return to normal operating conditions." + overmap_visitable_type = /obj/effect/overmap/visitable/ship/runtime + evac_controller_type = /datum/evacuation_controller/starship station_networks = list( diff --git a/maps/sccv_horizon/code/sccv_horizon.dm b/maps/sccv_horizon/code/sccv_horizon.dm index 6a2c6cda918..e3b819b92bb 100644 --- a/maps/sccv_horizon/code/sccv_horizon.dm +++ b/maps/sccv_horizon/code/sccv_horizon.dm @@ -108,6 +108,8 @@ rogue_drone_end_message = "The hostile drone swarm has left the ship's proximity." rogue_drone_destroyed_message = "Sensors indicate the unidentified drone swarm has left the immediate proximity of the ship." + overmap_visitable_type = /obj/effect/overmap/visitable/ship/sccv_horizon + ports_of_call = TRUE map_shuttles = list( @@ -158,7 +160,7 @@ shuttle_missions = list("Exploration", "Research", "Prospecting", "Transport", "Combat", "Rescue", "Training") /datum/map/sccv_horizon/send_welcome() - var/obj/effect/overmap/visitable/ship/horizon = SSshuttle.ship_by_type(/obj/effect/overmap/visitable/ship/sccv_horizon) + var/obj/effect/overmap/visitable/ship/horizon = SSshuttle.ship_by_type(overmap_visitable_type) var/welcome_text = "


[FONT_LARGE("SCCV Horizon Ultra-Range Sensor Readings:")]
" welcome_text += "Report generated on [worlddate2text()] at [worldtime2text()]


"