mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-21 21:10:30 +01:00
14b3228582
- Reworked prices, wages and balances of (almost) everything ingame. - Added coinage and decimal support to cash, ruthlessly sanitized to avoid floating-point errors. Reflected in cash-related things like ATMs. - Tweaked how cash bundles are made and distributed to support decimalization. - Adjusted the starting money individuals and departments receive in their accounts. - Adjusted the funding Tajara, Unathi, Diona, Vaurca, and IPCs receive in their accounts. Should earn more on average than they used to. Credit values are now roughly 1/10th what they were before, across the board. Coins were added too! These have names: - Unie: 0.01 credits - Quin: 0.05 credits - Dece: 0.10 credits - Quarter: 0.25 credits These can be seen cameo'd in the screenshots below. Values, wages, etc, are based on the wiki page https://wiki.aurorastation.org/index.php?title=Guide_to_Wages_and_Pay . Values are not anchored to any singular real-world currency. Example price differences: | Example Item | Old Price | New Price | | --- | --- | --- | | Comet Cola | 15.00 | 1.50 | | Cup Ramen | 20.00 | 2.00 | | Jyalara | 38.00 | 3.00 | | Trans-Stellar Cigarettes | 76.00 | 9.00 | | Zo'ra Soda | 29.00 | 2.50 | | Gumball | 5.00 | 0.25 | | 50x plasteel sheets | 700.00 | 120.00 | | 5x meat (cargo) | 160.00 | 55.00 | | 50x phoron crystals (cargo) | 2200.00 | 400.00 | Wages and account balances have also been tweaked: | Type | Old Amount | New Amount | | --- | --- | --- | | Ship Account | 75,000.00 | 35,000.00 | | Departmental Accounts | 10,000.00 | 15,000.00 | | Personal Account (avg) | 200.00 - 20,000.00 | 20.00 - 2,000.00 | Might break the economy; prices will likely need some adjusting depending on gameplay constraints. Can be adjusted in TMs. A little testing never hurt anyone.   --------- Signed-off-by: naut <55491249+nauticall@users.noreply.github.com> Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
150 lines
5.4 KiB
Plaintext
150 lines
5.4 KiB
Plaintext
/obj/item/cargo_package
|
|
name = "cargo package"
|
|
desc = "\
|
|
An Orion Express cargo package. \
|
|
Always pays an extra 2% tip to the courier.\
|
|
"
|
|
desc_extended = "\
|
|
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 = 1
|
|
|
|
var/delivery_point_id = ""
|
|
var/datum/weakref/delivery_point_sector
|
|
/// Site name displayed to player when examining the package. This should clearly state where the player should go, and be lore accurate. This is typically overridden by either sectorname or one set by receptacle
|
|
var/delivery_site = "Unknown"
|
|
var/delivery_point_coordinates = ""
|
|
|
|
var/datum/weakref/associated_delivery_point
|
|
var/pay_amount = 69420
|
|
|
|
/// If true, pay_amount goes into Operations Account
|
|
var/pays_horizon_account = TRUE
|
|
|
|
/obj/item/cargo_package/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)
|
|
. += ..()
|
|
if(delivery_point_id)
|
|
// if name not already set by cargo receptacle, acquire the sector name instead
|
|
if(delivery_site == "Unknown")
|
|
if(delivery_point_sector)
|
|
var/obj/effect/overmap/visitable/delivery_sector = delivery_point_sector.resolve()
|
|
if(delivery_sector)
|
|
delivery_site = delivery_sector.name
|
|
. += SPAN_NOTICE("The label on the package reads: SITE: <b>[delivery_site]</b> | COORD: <b>[delivery_point_coordinates]</b> | ID: <b>[delivery_point_id]</b>")
|
|
. += SPAN_NOTICE("The price tag on the package reads: <b>[pay_amount]电</b>.")
|
|
|
|
/obj/item/cargo_package/Initialize(mapload, obj/structure/cargo_receptacle/delivery_point)
|
|
. = ..()
|
|
pay_amount = rand(4, 7) * 100
|
|
if(prob(3))
|
|
pay_amount = rand(12, 17) * 100
|
|
if(delivery_point)
|
|
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)
|
|
associated_delivery_point = WEAKREF(delivery_point)
|
|
delivery_point_id = delivery_point.delivery_id
|
|
delivery_point_sector = delivery_point.delivery_sector
|
|
if(delivery_point.override_name)
|
|
delivery_site = delivery_point.override_name
|
|
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)
|
|
if(!ishuman(user))
|
|
return FALSE
|
|
|
|
if(user.species.mob_size < 12)
|
|
var/obj/A = user.get_inactive_hand()
|
|
if(A)
|
|
to_chat(user, SPAN_WARNING("Your other hand is occupied!"))
|
|
return
|
|
|
|
user.visible_message("<b>[user]</b> tightens their grip on \the [src] and starts heaving...", SPAN_NOTICE("You tighten your grip on \the [src] and start heaving..."))
|
|
if(do_after(user, 1 SECONDS, src, DO_UNIQUE))
|
|
user.visible_message("<b>[user]</b> heaves \the [src] up!", SPAN_NOTICE("You heave \the [src] up!"))
|
|
// larger mobs, such as industrials, can hold two pieces of cargo
|
|
if(user.species.mob_size < 12)
|
|
wield(user)
|
|
slowdown = 2
|
|
else
|
|
slowdown = 0
|
|
|
|
user.update_equipment_speed_mods()
|
|
|
|
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
|
|
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)
|
|
. += ..()
|
|
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)
|
|
. = ..()
|
|
|
|
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()
|
|
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
|
|
horizon_delivery = TRUE
|