diff --git a/code/datums/components/commissaryShop.dm b/code/datums/components/commissaryShop.dm
index 6227cdcea27..692a748e5db 100644
--- a/code/datums/components/commissaryShop.dm
+++ b/code/datums/components/commissaryShop.dm
@@ -183,6 +183,8 @@
if(transaction_amount <= E.worth)
SSeconomy.charge_to_account(SSeconomy.get_department_account(destinationact)?.account_number, E.owner_name, transaction_purpose, transaction_terminal, transaction_amount)
E.worth -= transaction_amount
+ if(istype(E, /obj/item/spacecash/ewallet/persistent_charge_card))
+ log_and_message_admins("[E] used for a transaction at [src] with amount [transaction_amount]. Remaining balance: [E.worth]", user, get_turf(src))
end_transaction(user)
else if (transaction_amount > E.worth)
diff --git a/code/game/machinery/computer/slotmachine.dm b/code/game/machinery/computer/slotmachine.dm
index 152c1d09659..6c0ec3b19c6 100644
--- a/code/game/machinery/computer/slotmachine.dm
+++ b/code/game/machinery/computer/slotmachine.dm
@@ -98,6 +98,9 @@
return TRUE
else if(istype(attacking_item, /obj/item/spacecash))
if(paymode == CREDITCHIP)
+ if(istype(attacking_item, /obj/item/spacecash/ewallet/persistent_charge_card))
+ to_chat(user, SPAN_WARNING("This machine does not accept this kind of card!"))
+ return TRUE
var/obj/item/spacecash/H = attacking_item
to_chat(user, SPAN_NOTICE("You insert [H.worth]电 into [src]'s slot!"))
playsound(loc, 'sound/arcade/sloto_token.ogg', 10, 1, extrarange = -3, falloff_distance = 10, required_asfx_toggles = ASFX_ARCADE)
diff --git a/code/game/machinery/vending/_vending.dm b/code/game/machinery/vending/_vending.dm
index 36e64ce7199..03df64f8a1c 100644
--- a/code/game/machinery/vending/_vending.dm
+++ b/code/game/machinery/vending/_vending.dm
@@ -402,7 +402,7 @@
handled = 1
else if (istype(attacking_item, /obj/item/spacecash/ewallet))
var/obj/item/spacecash/ewallet/C = attacking_item
- paid = pay_with_ewallet(C)
+ paid = pay_with_ewallet(C, user)
handled = 1
else if (istype(attacking_item, /obj/item/spacecash))
var/obj/item/spacecash/C = attacking_item
@@ -535,7 +535,7 @@
* Takes payment for whatever is the currently_vending item. Returns 1 if
* successful, 0 if failed.
*/
-/obj/machinery/vending/proc/pay_with_ewallet(var/obj/item/spacecash/ewallet/wallet)
+/obj/machinery/vending/proc/pay_with_ewallet(var/obj/item/spacecash/ewallet/wallet, var/mob/user)
visible_message("\The [usr] swipes \the [wallet] through \the [src].")
playsound(src.loc, 'sound/machines/id_swipe.ogg', 50, 1)
if(currently_vending.price > wallet.worth)
@@ -544,6 +544,8 @@
return 0
else
wallet.worth -= currently_vending.price
+ if(istype(wallet, /obj/item/spacecash/ewallet/persistent_charge_card))
+ log_and_message_admins("[wallet] used for a transaction at [src] with amount [currently_vending.price]. Remaining balance: [wallet.worth]", user, get_turf(src))
credit_purchase("[wallet.owner_name] (chargecard)")
return 1
diff --git a/code/modules/cargo/delivery/backpack.dm b/code/modules/cargo/delivery/backpack.dm
index 5bc144e1562..e10739d2d7d 100644
--- a/code/modules/cargo/delivery/backpack.dm
+++ b/code/modules/cargo/delivery/backpack.dm
@@ -1,7 +1,7 @@
/obj/item/cargo_backpack
name = "cargo pack"
desc = "A robust set of rigs and buckles that allows the wearer to carry two additional Orion Express delivery packages on their back."
- icon = 'icons/obj/orion_delivery.dmi'
+ icon = 'icons/obj/package.dmi'
icon_state = "package_pack"
item_state = "package_pack"
contained_sprite = TRUE
@@ -41,7 +41,7 @@
var/list/data = list()
data["cargo_pack_details"] = list()
- for(var/obj/item/cargo_package/package in contained_packages)
+ for(var/obj/item/package/delivery/package in contained_packages)
var/delivery_site = "Unknown"
if(package.delivery_point_sector)
var/obj/effect/overmap/visitable/delivery_sector = package.delivery_point_sector.resolve()
@@ -82,7 +82,7 @@
return
for(var/package_index = 1 to length(contained_packages))
- var/obj/item/cargo_package/package = contained_packages[package_index]
+ var/obj/item/package/delivery/package = contained_packages[package_index]
var/image/package_tag = image(icon, icon_state = "package_pack_[package_index]_tag")
package_tag.color = package.accent_color
mob_overlay.AddOverlays(package_tag)
@@ -110,7 +110,7 @@
to_chat(user, SPAN_WARNING("Your other hand is occupied!"))
return
user.visible_message("[user] unloads a package from \the [src]!", SPAN_NOTICE("You unload a package from \the [src]!"))
- var/obj/item/cargo_package/package = contained_packages[1]
+ var/obj/item/package/delivery/package = contained_packages[1]
user.put_in_hands(package)
if(user.species.mob_size < 12)
package.wield(user)
@@ -121,11 +121,11 @@
if(!ishuman(user))
return ..()
if(user.back != src)
- if(istype(attacking_item, /obj/item/cargo_package))
+ if(istype(attacking_item, /obj/item/package/delivery))
to_chat(user, SPAN_WARNING("Put \the [src] on your back before you load packages onto it!"))
return
return ..()
- if(!istype(attacking_item, /obj/item/cargo_package))
+ if(!istype(attacking_item, /obj/item/package/delivery))
return ..()
if(LAZYLEN(contained_packages) >= 2)
diff --git a/code/modules/cargo/delivery/package.dm b/code/modules/cargo/delivery/package.dm
index 6b4b3717352..0ce4be6998b 100644
--- a/code/modules/cargo/delivery/package.dm
+++ b/code/modules/cargo/delivery/package.dm
@@ -1,4 +1,42 @@
-/obj/item/cargo_package
+ABSTRACT_TYPE(/obj/item/package)
+ name = "package"
+ icon = 'icons/obj/package.dmi'
+ contained_sprite = TRUE
+ update_icon_on_init = TRUE
+ has_accents = TRUE
+ w_class = WEIGHT_CLASS_HUGE
+ force = 15
+ slowdown = 0.5
+
+/obj/item/package/proc/wield(var/mob/living/carbon/human/user)
+ var/obj/A = user.get_inactive_hand()
+ if(A)
+ to_chat(user, SPAN_WARNING("Your other hand is occupied!"))
+ return
+ item_state += "_wielded"
+ var/obj/item/offhand/O = new(user)
+ O.name = "[initial(name)] - offhand"
+ O.desc = "Your second grip on \the [initial(name)]."
+ user.put_in_inactive_hand(O)
+
+/obj/item/package/dropped(mob/user)
+ ..()
+ item_state = initial(item_state)
+ if(user)
+ var/obj/item/offhand/O = user.get_inactive_hand()
+ if(istype(O))
+ O.unwield()
+
+/obj/item/package/can_swap_hands(var/mob/user)
+ var/obj/item/offhand/O = user.get_inactive_hand()
+ if(istype(O))
+ return FALSE
+ return TRUE
+
+/obj/item/package/too_heavy_to_throw()
+ return TRUE
+
+/obj/item/package/delivery
name = "cargo package"
desc = "\
An Orion Express cargo package. \
@@ -8,17 +46,8 @@
This package makes use of the small-scale shipping network of Orion Express. \
It is a common sight all over the Spur, where Orion Express services depend on ordinary people and ships picking up and delivering packages for each other, \
with Orion Express only delivering to automated stations and other distribution points."
- icon = 'icons/obj/orion_delivery.dmi'
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
-
- slowdown = 0.5
var/delivery_point_id = ""
var/datum/weakref/delivery_point_sector
@@ -32,12 +61,12 @@
/// If true, pay_amount goes into Operations Account
var/pays_horizon_account = TRUE
-/obj/item/cargo_package/mechanics_hints(mob/user, distance, is_adjacent)
+/obj/item/package/delivery/mechanics_hints(mob/user, distance, is_adjacent)
. += ..()
. += "You can deliver this package to a cargo delivery point."
. += "An additional 2% is added to your account on delivery, or paid to you directly. Can be loaded into a cargo pack."
-/obj/item/cargo_package/feedback_hints(mob/user, distance, is_adjacent)
+/obj/item/package/delivery/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
if(delivery_point_id)
// if name not already set by cargo receptacle, acquire the sector name instead
@@ -49,7 +78,7 @@
. += SPAN_NOTICE("The label on the package reads: SITE: [delivery_site] | COORD: [delivery_point_coordinates] | ID: [delivery_point_id]")
. += SPAN_NOTICE("The price tag on the package reads: [pay_amount]电.")
-/obj/item/cargo_package/Initialize(mapload, obj/structure/cargo_receptacle/delivery_point)
+/obj/item/package/delivery/Initialize(mapload, obj/structure/cargo_receptacle/delivery_point)
. = ..()
pay_amount = rand(4, 7) * 100
if(prob(3))
@@ -58,7 +87,7 @@
setup_delivery_point(delivery_point)
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)
+/obj/item/package/delivery/proc/setup_delivery_point(var/obj/structure/cargo_receptacle/delivery_point)
associated_delivery_point = WEAKREF(delivery_point)
delivery_point_id = delivery_point.delivery_id
delivery_point_sector = delivery_point.delivery_sector
@@ -67,7 +96,7 @@
delivery_point_coordinates = "[delivery_point.x]-[delivery_point.y]"
pay_amount = pay_amount * delivery_point.payment_modifier
-/obj/item/cargo_package/do_additional_pickup_checks(var/mob/living/carbon/human/user)
+/obj/item/package/delivery/do_additional_pickup_checks(var/mob/living/carbon/human/user)
if(!ishuman(user))
return FALSE
@@ -92,58 +121,57 @@
return TRUE
return FALSE
-/obj/item/cargo_package/proc/wield(var/mob/living/carbon/human/user)
- var/obj/A = user.get_inactive_hand()
- if(A)
- to_chat(user, SPAN_WARNING("Your other hand is occupied!"))
- return
- item_state += "_wielded"
- var/obj/item/offhand/O = new(user)
- O.name = "[initial(name)] - offhand"
- O.desc = "Your second grip on \the [initial(name)]."
- user.put_in_inactive_hand(O)
-
-/obj/item/cargo_package/dropped(mob/user)
- ..()
- item_state = initial(item_state)
- if(user)
- var/obj/item/offhand/O = user.get_inactive_hand()
- if(istype(O))
- O.unwield()
-
-/obj/item/cargo_package/can_swap_hands(var/mob/user)
- var/obj/item/offhand/O = user.get_inactive_hand()
- if(istype(O))
- return FALSE
- return TRUE
-
-/obj/item/cargo_package/too_heavy_to_throw()
- return TRUE
-
-
-/obj/item/cargo_package/offship
+/obj/item/package/delivery/offship
pays_horizon_account = FALSE
/// Whether this package is guaranteed to deliver to the horizon or not
var/horizon_delivery = FALSE
-/obj/item/cargo_package/offship/feedback_hints(mob/user, distance, is_adjacent)
+/obj/item/package/delivery/offship/feedback_hints(mob/user, distance, is_adjacent)
. += ..()
if(!delivery_point_id)
. += SPAN_NOTICE("Delivery site still being calculated, please check back later!")
-/obj/item/cargo_package/offship/Initialize(mapload, obj/structure/cargo_receptacle/delivery_point)
+/obj/item/package/delivery/offship/Initialize(mapload, obj/structure/cargo_receptacle/delivery_point)
. = ..()
if(!delivery_point)
// add a timer before we pick the delivery point, in case any ships or ruins still need to load
addtimer(CALLBACK(src, PROC_REF(get_delivery_point)), 3 MINUTES)
-/obj/item/cargo_package/offship/proc/get_delivery_point()
+/obj/item/package/delivery/offship/proc/get_delivery_point()
var/obj/structure/cargo_receptacle/selected_delivery_point = get_cargo_package_delivery_point(src, horizon_delivery)
if(!selected_delivery_point)
qdel(src)
return
setup_delivery_point(selected_delivery_point)
-/obj/item/cargo_package/offship/to_horizon
+/obj/item/package/delivery/offship/to_horizon
horizon_delivery = TRUE
+
+// Persistent supply packages. These are meant to be spawned by admins and feature no mechanics like the orion deliveries.
+/obj/item/package/persistent_supply
+ name = "supply package"
+ desc = "A supply package. Doesn't qualify for deliveries."
+ desc_extended = "\
+ Usually each package contains a different set of things one might need as supplies. \
+ Unlike the Orion deliveries, these packages are not tied to a specific delivery network and are not eligible for deliveries. \
+ Probably more expensive then it should be."
+ icon_state = "supply_package"
+ item_state = "supply_package"
+ persistant_objects_expiration_time_days = 360
+
+/obj/item/package/persistent_supply/Initialize()
+ . = ..()
+ SSpersistence.objectsRegisterTrack(src)
+
+/obj/item/package/persistent_supply/persistent_objects_get_content()
+ return list()
+
+/obj/item/package/persistent_supply/persistent_objects_apply_content(content, x, y, z)
+ src.x = x
+ src.y = y
+ src.z = z
+
+/obj/item/package/persistent_supply/Destroy()
+ log_and_message_admins("Persistent supply package at [src] was destroyed!", null, get_turf(src))
+ . = ..()
diff --git a/code/modules/cargo/delivery/receptacle.dm b/code/modules/cargo/delivery/receptacle.dm
index a5b4df0d777..7775f47bfd4 100644
--- a/code/modules/cargo/delivery/receptacle.dm
+++ b/code/modules/cargo/delivery/receptacle.dm
@@ -10,7 +10,7 @@ GLOBAL_LIST_INIT_TYPED(all_cargo_receptacles, /obj/structure/cargo_receptacle, l
These are set up by Orion to expand its small-scale shipping network, especially in more remote areas, like outer edges of the Frontier or Coalition. \
It is a common sight all over the Spur, however, where Orion Express services depend on ordinary people and ships picking up and delivering packages for each other, \
with Orion Express only delivering to automated stations and other distribution points."
- icon = 'icons/obj/orion_delivery.dmi'
+ icon = 'icons/obj/package.dmi'
icon_state = "delivery_point"
density = TRUE
@@ -86,7 +86,7 @@ GLOBAL_LIST_INIT_TYPED(all_cargo_receptacles, /obj/structure/cargo_receptacle, l
for(var/i = 1 to package_amount)
var/turf/random_turf = pick_n_take(warehouse_turfs)
if(random_turf)
- new /obj/item/cargo_package(random_turf, src)
+ new /obj/item/package/delivery(random_turf, src)
if(late_spawner)
playsound(pick(warehouse_turfs), 'sound/machines/twobeep.ogg', 50, 1)
GLOB.global_announcer.autosay(announcement_message, capitalize_first_letters(announcer_name), channel)
@@ -96,8 +96,8 @@ GLOBAL_LIST_INIT_TYPED(all_cargo_receptacles, /obj/structure/cargo_receptacle, l
return ..()
/obj/structure/cargo_receptacle/attackby(obj/item/attacking_item, mob/user)
- if(istype(attacking_item, /obj/item/cargo_package))
- var/obj/item/cargo_package/package = attacking_item
+ if(istype(attacking_item, /obj/item/package/delivery))
+ var/obj/item/package/delivery/package = attacking_item
if(!package.associated_delivery_point)
to_chat(user, SPAN_WARNING("Something's wrong with the cargo package, submit a bug report. ERRCODE: 0"))
return
@@ -120,14 +120,14 @@ GLOBAL_LIST_INIT_TYPED(all_cargo_receptacles, /obj/structure/cargo_receptacle, l
visible_message("\The [src] beeps, \"[SPAN_NOTICE("New package available for delivery.")]\"")
playsound(src, SFX_PRINT, 50, TRUE)
- var/obj/item/cargo_package/printed_package = new /obj/item/cargo_package/offship(get_turf(user), selected_delivery_point)
+ var/obj/item/package/delivery/printed_package = new /obj/item/package/delivery/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 ..()
-/obj/structure/cargo_receptacle/proc/pay_account(var/mob/living/carbon/human/courier, var/obj/item/cargo_package/package)
+/obj/structure/cargo_receptacle/proc/pay_account(var/mob/living/carbon/human/courier, var/obj/item/package/delivery/package)
if(package.pays_horizon_account)
var/datum/money_account/supply_account = SScargo.supply_account
if(supply_account && !supply_account.suspended)
diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm
index 6ff33b518ae..78adb41a03b 100644
--- a/code/modules/economy/ATM.dm
+++ b/code/modules/economy/ATM.dm
@@ -104,6 +104,9 @@
update_icon()
else if(authenticated_account)
if(istype(attacking_item,/obj/item/spacecash))
+ if(istype(attacking_item, /obj/item/spacecash/ewallet/persistent_charge_card))
+ to_chat(user, SPAN_WARNING("You insert the [attacking_item] into [src], but the machine immediately rejects it!"))
+ return
var/obj/item/spacecash/cash = attacking_item
//consume the money
authenticated_account.money += cash.worth
diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm
index a05857e51b8..50656b51a9d 100644
--- a/code/modules/economy/EFTPOS.dm
+++ b/code/modules/economy/EFTPOS.dm
@@ -133,6 +133,8 @@
//transfer the money
E.worth -= transaction_amount
+ if(istype(E, /obj/item/spacecash/ewallet/persistent_charge_card))
+ log_and_message_admins("[E] used for a transaction at [src] with amount [transaction_amount]. Remaining balance: [E.worth]", user, get_turf(src))
linked_account.money += transaction_amount
//create entry in the EFTPOS linked account transaction log
diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm
index 3348dded99f..606bc56496f 100644
--- a/code/modules/economy/cash.dm
+++ b/code/modules/economy/cash.dm
@@ -297,7 +297,7 @@
name = "charge card"
icon_state = "efundcard"
desc = "A card that holds an amount of money."
- var/owner_name = "" //So the ATM can set it so the EFTPOS can put a valid name on transactions.
+ var/owner_name = "unknown" //So the ATM can set it so the EFTPOS can put a valid name on transactions.
drop_sound = 'sound/items/drop/card.ogg'
pickup_sound = 'sound/items/pickup/card.ogg'
@@ -305,7 +305,8 @@
. = ..()
if(distance > 2 && user != loc)
return
- . += SPAN_NOTICE("The charge card's owner is [src.owner_name].")
+ if(src.owner_name)
+ . += SPAN_NOTICE("The charge card's owner is [src.owner_name].")
. += SPAN_NOTICE("It has [src.worth]电 left.")
/obj/item/spacecash/ewallet/c2000
@@ -316,3 +317,37 @@
/obj/item/spacecash/ewallet/c10000
worth = 10000
+
+// Persistent ewallet that keeps it's value across rounds.
+// When spawned, using VV, set "worth", "initial_worth", "owner_name" and "name".
+/obj/item/spacecash/ewallet/persistent_charge_card
+ name = "specialized charge card"
+ desc = "A specialized charge card that holds a certain amount of money. This type of charge card is in use for special purposes and not generally available."
+ icon_state = "efundcard_special"
+ var/initial_worth = 0 // Used for calculating how much cash was spend, needs to be set using VV after spawning it.
+ persistant_objects_expiration_time_days = 360
+
+/obj/item/spacecash/ewallet/persistent_charge_card/Initialize()
+ . = ..()
+ SSpersistence.objectsRegisterTrack(src)
+
+/obj/item/spacecash/ewallet/persistent_charge_card/persistent_objects_get_content()
+ var/list/content = list()
+ content["name"] = src.name
+ content["initial_worth"] = src.initial_worth
+ content["worth"] = src.worth
+ content["owner_name"] = src.owner_name
+ return content
+
+/obj/item/spacecash/ewallet/persistent_charge_card/persistent_objects_apply_content(content, x, y, z)
+ name = isnull(content["name"]) ? src.name : content["name"]
+ initial_worth = isnull(content["initial_worth"]) ? 0 : content["initial_worth"]
+ worth = isnull(content["worth"]) ? 0 : content["worth"]
+ owner_name = isnull(content["owner_name"]) ? src.owner_name : content["owner_name"]
+ src.x = x
+ src.y = y
+ src.z = z
+
+/obj/item/spacecash/ewallet/persistent_charge_card/Destroy()
+ log_and_message_admins("Persistent charge card ([src.name]) at [src] was destroyed!", null, get_turf(src))
+ . = ..()
diff --git a/code/modules/modular_computers/file_system/programs/civilian/cargo_delivery.dm b/code/modules/modular_computers/file_system/programs/civilian/cargo_delivery.dm
index 2c3a44ad65b..9f1fdb58f86 100644
--- a/code/modules/modular_computers/file_system/programs/civilian/cargo_delivery.dm
+++ b/code/modules/modular_computers/file_system/programs/civilian/cargo_delivery.dm
@@ -107,9 +107,10 @@
return TRUE
var/obj/item/spacecash/ewallet/charge_card
+ var/mob/living/L
if(!using_id)
if(isliving(usr))
- var/mob/living/L = usr
+ L = usr
charge_card = L.get_active_hand()
if(!istype(charge_card))
return TRUE
@@ -137,6 +138,8 @@
status_message = "Account Error: Failed to Deposit Credits into Cargo Account"
return TRUE
charge_card.worth -= transaction_amount
+ if(istype(charge_card, /obj/item/spacecash/ewallet/persistent_charge_card))
+ log_and_message_admins("[charge_card] used for a transaction at [src] with amount [transaction_amount]. Remaining balance: [charge_card.worth]", L, get_turf(src))
playsound(computer, 'sound/machines/chime.ogg', 50, TRUE)
status_message = co.set_paid(GetNameAndAssignmentFromId(id_card), usr.character_id, destinationact)
diff --git a/html/changelogs/fabiank3-arc-feature-persistent-supply.yml b/html/changelogs/fabiank3-arc-feature-persistent-supply.yml
new file mode 100644
index 00000000000..7327f450252
--- /dev/null
+++ b/html/changelogs/fabiank3-arc-feature-persistent-supply.yml
@@ -0,0 +1,7 @@
+author: FabianK3
+
+delete-after: True
+
+changes:
+ - rscadd: "Added a persistent version of charge cards - Arc feature / Admin spawn only."
+ - rscadd: "Added a persistent version of cargo packages, called supply package - Arc feature / Admin spawn only."
diff --git a/icons/obj/cash.dmi b/icons/obj/cash.dmi
index 73399e656be..d8ae968dbc5 100644
Binary files a/icons/obj/cash.dmi and b/icons/obj/cash.dmi differ
diff --git a/icons/obj/orion_delivery.dmi b/icons/obj/orion_delivery.dmi
deleted file mode 100644
index c21e11f3619..00000000000
Binary files a/icons/obj/orion_delivery.dmi and /dev/null differ
diff --git a/icons/obj/package.dmi b/icons/obj/package.dmi
new file mode 100644
index 00000000000..89305c2c177
Binary files /dev/null and b/icons/obj/package.dmi differ
diff --git a/maps/away/away_site/orion/orion_automated_station.dmm b/maps/away/away_site/orion/orion_automated_station.dmm
index e94a282a57d..11477cdee35 100644
--- a/maps/away/away_site/orion/orion_automated_station.dmm
+++ b/maps/away/away_site/orion/orion_automated_station.dmm
@@ -62,7 +62,7 @@
/area/orion_automated_station/west)
"bt" = (
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/turf/simulated/floor/tiled/dark,
/area/orion_automated_station/packages)
"bu" = (
@@ -792,10 +792,10 @@
/area/orion_automated_station/east)
"nB" = (
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package{
+/obj/item/package/delivery{
pixel_y = 12
},
-/obj/item/cargo_package,
+/obj/item/package/delivery,
/turf/simulated/floor/tiled/dark,
/area/orion_automated_station/packages)
"nH" = (
@@ -931,10 +931,10 @@
/area/orion_automated_station/engineering)
"qB" = (
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package{
+/obj/item/package/delivery{
pixel_y = 12
},
-/obj/item/cargo_package,
+/obj/item/package/delivery,
/obj/machinery/light{
dir = 1
},
@@ -1253,10 +1253,10 @@
/area/orion_automated_station/east)
"xw" = (
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 12
},
-/obj/item/cargo_package/offship/to_horizon,
+/obj/item/package/delivery/offship/to_horizon,
/obj/machinery/light{
dir = 8
},
@@ -1575,10 +1575,10 @@
/area/orion_automated_station/west)
"Do" = (
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = 12
},
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/turf/simulated/floor/tiled/dark,
/area/orion_automated_station/packages)
"DA" = (
@@ -1783,7 +1783,7 @@
/area/orion_automated_station/exterior)
"FT" = (
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package{
+/obj/item/package/delivery{
pixel_y = 12
},
/obj/machinery/light,
@@ -1897,7 +1897,7 @@
/area/orion_automated_station/west)
"HV" = (
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 12
},
/turf/simulated/floor/tiled/dark,
@@ -2870,7 +2870,7 @@
/area/orion_automated_station/west)
"Wg" = (
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package,
+/obj/item/package/delivery,
/turf/simulated/floor/tiled/dark,
/area/orion_automated_station/packages)
"Wh" = (
diff --git a/maps/away/away_site/uueoaesa/tret/tret_industrial_complex.dmm b/maps/away/away_site/uueoaesa/tret/tret_industrial_complex.dmm
index df77e9ffac2..69c9115985b 100644
--- a/maps/away/away_site/uueoaesa/tret/tret_industrial_complex.dmm
+++ b/maps/away/away_site/uueoaesa/tret/tret_industrial_complex.dmm
@@ -8939,15 +8939,15 @@
icon_state = "1-2"
},
/obj/random/dirt_75,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = 10;
pixel_x = -3
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 3
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = 7
},
/turf/simulated/floor/plating,
diff --git a/maps/away/ships/golden_deep/golden_deep.dmm b/maps/away/ships/golden_deep/golden_deep.dmm
index d8cf23f6481..326d6f4b347 100644
--- a/maps/away/ships/golden_deep/golden_deep.dmm
+++ b/maps/away/ships/golden_deep/golden_deep.dmm
@@ -7751,11 +7751,11 @@
/area/golden_deep/owned_lounge)
"Ga" = (
/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 10;
pixel_x = -1
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 3
},
@@ -8241,11 +8241,11 @@
dir = 8
},
/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 10;
pixel_x = -1
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 3
},
@@ -11555,11 +11555,11 @@
dir = 4
},
/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = 10;
pixel_x = -2
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 3
},
diff --git a/maps/away/ships/himeo/himeo_patrol_ship_submaps.dmm b/maps/away/ships/himeo/himeo_patrol_ship_submaps.dmm
index 04d0fed1e47..8b2c4571126 100644
--- a/maps/away/ships/himeo/himeo_patrol_ship_submaps.dmm
+++ b/maps/away/ships/himeo/himeo_patrol_ship_submaps.dmm
@@ -607,8 +607,8 @@
"DX" = (
/obj/effect/map_effect/marker/mapmanip/submap/extract/himeo_patrol_ship/storage_1,
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package/offship,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship,
+/obj/item/package/delivery/offship{
pixel_x = 3;
pixel_y = 9
},
@@ -776,8 +776,8 @@
"Oe" = (
/obj/effect/map_effect/marker/mapmanip/submap/extract/himeo_patrol_ship/storage_2,
/obj/effect/floor_decal/industrial/outline/grey,
-/obj/item/cargo_package/offship,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship,
+/obj/item/package/delivery/offship{
pixel_x = 3;
pixel_y = 9
},
diff --git a/maps/away/ships/lone_spacer/lone_spacer.dmm b/maps/away/ships/lone_spacer/lone_spacer.dmm
index ef872611dc0..753fd0f77e4 100644
--- a/maps/away/ships/lone_spacer/lone_spacer.dmm
+++ b/maps/away/ships/lone_spacer/lone_spacer.dmm
@@ -151,11 +151,11 @@
/turf/simulated/floor/tiled/dark/full,
/area/shuttle/lone_spacer/port_nacelle)
"aT" = (
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 10;
pixel_x = -1
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 1
},
@@ -2435,11 +2435,11 @@
/turf/simulated/floor/tiled/dark/full,
/area/shuttle/lone_spacer/storage)
"Mz" = (
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 11;
pixel_x = 1
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 3
},
diff --git a/maps/away/ships/lone_spacer/lone_spacer_submaps.dmm b/maps/away/ships/lone_spacer/lone_spacer_submaps.dmm
index 69c181898a4..ab453d8bb0b 100644
--- a/maps/away/ships/lone_spacer/lone_spacer_submaps.dmm
+++ b/maps/away/ships/lone_spacer/lone_spacer_submaps.dmm
@@ -284,11 +284,11 @@
/area/shuttle/lone_spacer/storage)
"G" = (
/obj/effect/floor_decal/industrial/outline/operations,
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 10;
pixel_x = -1
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 1
},
diff --git a/maps/away/ships/orion/orion_express_ship/orion_express_ship.dmm b/maps/away/ships/orion/orion_express_ship/orion_express_ship.dmm
index 5a757234ed0..2f08b11e213 100644
--- a/maps/away/ships/orion/orion_express_ship/orion_express_ship.dmm
+++ b/maps/away/ships/orion/orion_express_ship/orion_express_ship.dmm
@@ -991,7 +991,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark,
/area/ship/orion/cargo)
@@ -1988,7 +1988,7 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 8
},
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark,
/area/ship/orion/cargo)
@@ -2058,7 +2058,7 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark,
/area/ship/orion/cargo)
@@ -3408,7 +3408,7 @@
/turf/simulated/floor/wood,
/area/ship/orion/crew)
"lQT" = (
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark,
/area/ship/orion/cargo)
@@ -3662,7 +3662,7 @@
/obj/structure/cable/green{
icon_state = "4-8"
},
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark,
/area/ship/orion/cargo)
@@ -3884,7 +3884,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 8
},
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark,
/area/ship/orion/cargo)
@@ -6847,7 +6847,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 8
},
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark,
/area/ship/orion/cargo)
@@ -7211,7 +7211,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 8
},
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark,
/area/ship/orion/cargo)
@@ -7659,7 +7659,7 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
-/obj/item/cargo_package/offship,
+/obj/item/package/delivery/offship,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark,
/area/ship/orion/cargo)
diff --git a/maps/away/ships/orion/orion_miner/orion_miner.dmm b/maps/away/ships/orion/orion_miner/orion_miner.dmm
index 95cf88037c6..5e09eddb807 100644
--- a/maps/away/ships/orion/orion_miner/orion_miner.dmm
+++ b/maps/away/ships/orion/orion_miner/orion_miner.dmm
@@ -573,8 +573,8 @@
/area/shuttle/orion_miner/cargo_bay)
"dY" = (
/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/item/cargo_package/offship/to_horizon,
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon,
+/obj/item/package/delivery/offship/to_horizon{
pixel_x = -1;
pixel_y = 11
},
@@ -4363,8 +4363,8 @@
/area/shuttle/orion_miner/tech_storage)
"Oc" = (
/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/item/cargo_package/offship,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship,
+/obj/item/package/delivery/offship{
pixel_x = 1;
pixel_y = 10
},
diff --git a/maps/away/ships/scc/scc_scout_ship.dmm b/maps/away/ships/scc/scc_scout_ship.dmm
index ddee8636899..602257bfdf2 100644
--- a/maps/away/ships/scc/scc_scout_ship.dmm
+++ b/maps/away/ships/scc/scc_scout_ship.dmm
@@ -3874,11 +3874,11 @@
/area/ship/scc_scout_ship/medbay)
"wI" = (
/obj/random/dirt_75,
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 10;
pixel_x = -3
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 3
},
@@ -4916,11 +4916,11 @@
/area/ship/scc_scout_ship/exterior)
"DX" = (
/obj/random/dirt_75,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = 10;
pixel_x = -3
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 3
},
@@ -5690,11 +5690,11 @@
},
/obj/random/dirt_75,
/obj/random/dirt_75,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = 10;
pixel_x = -3
},
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = -2;
pixel_x = 3
},
diff --git a/maps/away/ships/tramp_freighter/tramp_freighter.dmm b/maps/away/ships/tramp_freighter/tramp_freighter.dmm
index ef27708d011..74cb7308193 100644
--- a/maps/away/ships/tramp_freighter/tramp_freighter.dmm
+++ b/maps/away/ships/tramp_freighter/tramp_freighter.dmm
@@ -2091,11 +2091,11 @@
/obj/machinery/atmospherics/unary/vent_pump/on,
/obj/effect/floor_decal/industrial/outline/operations,
/obj/effect/decal/cleanable/dirt,
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 10;
pixel_x = -1
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 1
},
@@ -2714,11 +2714,11 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on,
/obj/effect/floor_decal/industrial/outline/operations,
/obj/effect/decal/cleanable/dirt,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = 10;
pixel_x = -2
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 3
},
@@ -4884,11 +4884,11 @@
"ys" = (
/obj/effect/floor_decal/industrial/outline/operations,
/obj/effect/decal/cleanable/dirt,
-/obj/item/cargo_package/offship/to_horizon{
+/obj/item/package/delivery/offship/to_horizon{
pixel_y = 10;
pixel_x = -1
},
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = -2;
pixel_x = 3
},
diff --git a/maps/random_ruins/exoplanets/delivery/delivery_site.dmm b/maps/random_ruins/exoplanets/delivery/delivery_site.dmm
index dd6406d3c31..66beb02b72a 100644
--- a/maps/random_ruins/exoplanets/delivery/delivery_site.dmm
+++ b/maps/random_ruins/exoplanets/delivery/delivery_site.dmm
@@ -101,7 +101,7 @@
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/random/dirt_75,
/obj/random/dirt_75,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = 3
},
/turf/simulated/floor/exoplanet/concrete,
@@ -109,7 +109,7 @@
"te" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/random/dirt_75,
-/obj/item/cargo_package/offship{
+/obj/item/package/delivery/offship{
pixel_y = 3
},
/turf/simulated/floor/exoplanet/concrete,