From ecf93da4b12fcd1c6e32443090c3f507c4add2db Mon Sep 17 00:00:00 2001
From: QuoteFox <49098813+quotefox@users.noreply.github.com>
Date: Mon, 25 Jan 2021 10:47:15 +0000
Subject: [PATCH 1/5] Economy part 1
Economy part 1
---
code/__DEFINES/subsystems.dm | 1 +
code/controllers/subsystem/job.dm | 5 +
code/game/objects/items/cards_ids.dm | 2 +-
code/game/objects/items/stacks/cash.dm | 2 +-
code/modules/jobs/job_types/job.dm | 16 ++-
.../mob/living/carbon/human/human_defines.dm | 2 +-
.../mob/living/carbon/human/human_helpers.dm | 1 +
hyperstation/code/__DEFINES/economy.dm | 35 ++++++
.../code/controllers/subsystem/economy.dm | 16 +++
hyperstation/code/modules/economy/account.dm | 26 ++++
hyperstation/code/obj/economy.dm | 115 ++++++++++++++++++
hyperstation/icons/obj/economy.dmi | Bin 0 -> 780 bytes
hyperstation/icons/obj/genitals/belly.dmi | Bin 0 -> 945 bytes
tgstation.dme | 4 +
14 files changed, 221 insertions(+), 4 deletions(-)
create mode 100644 hyperstation/code/__DEFINES/economy.dm
create mode 100644 hyperstation/code/controllers/subsystem/economy.dm
create mode 100644 hyperstation/code/modules/economy/account.dm
create mode 100644 hyperstation/code/obj/economy.dm
create mode 100644 hyperstation/icons/obj/economy.dmi
create mode 100644 hyperstation/icons/obj/genitals/belly.dmi
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index 2a57e7bb..f4e0c316 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -64,6 +64,7 @@
#define INIT_ORDER_TICKER 9
#define INIT_ORDER_MAPPING 8
#define INIT_ORDER_NETWORKS 7
+#define INIT_ORDER_ECONOMY 21
#define INIT_ORDER_ATOMS 6
#define INIT_ORDER_LANGUAGE 5
#define INIT_ORDER_MACHINES 4
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index d027a3cf..494a6568 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -442,6 +442,11 @@ SUBSYSTEM_DEF(job)
if(CONFIG_GET(number/minimal_access_threshold))
to_chat(M, "As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.")
+ if(ishuman(H))
+ var/mob/living/carbon/human/wageslave = H
+ to_chat(M, "Your account ID is [wageslave.account_id].")
+ H.add_memory("Your account ID is [wageslave.account_id].")
+
if(job && H)
if(job.dresscodecompliant)// CIT CHANGE - dress code compliance
equip_loadout(N, H) // CIT CHANGE - allows players to spawn with loadout items
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index b366b571..5a1d0a43 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -170,7 +170,7 @@
var/registered_name = null // The name registered_name on the card
var/assignment = null
var/access_txt // mapping aid
-
+ var/datum/bank_account/registered_account
/obj/item/card/id/Initialize(mapload)
diff --git a/code/game/objects/items/stacks/cash.dm b/code/game/objects/items/stacks/cash.dm
index 94f6fca2..845fc433 100644
--- a/code/game/objects/items/stacks/cash.dm
+++ b/code/game/objects/items/stacks/cash.dm
@@ -19,7 +19,7 @@
/obj/item/stack/spacecash/proc/update_desc()
var/total_worth = amount*value
- desc = "It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
+ desc = "A outdated form of currency, It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
/obj/item/stack/spacecash/merge(obj/item/stack/S)
diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm
index 2f56fe25..5390f9f9 100644
--- a/code/modules/jobs/job_types/job.dm
+++ b/code/modules/jobs/job_types/job.dm
@@ -58,7 +58,7 @@
var/list/mind_traits // Traits added to the mind of the mob assigned this job
var/list/blacklisted_quirks //list of quirk typepaths blacklisted.
-
+
var/list/alt_titles = list()
//Only override this proc
@@ -90,6 +90,13 @@
if(!H)
return FALSE
+ if(!visualsOnly)
+ var/datum/bank_account/bank_account = new(H.real_name, src)
+ bank_account.account_holder = H.real_name
+ bank_account.account_job = src
+ bank_account.account_id = rand(111111,999999)
+ H.account_id = bank_account.account_id
+
if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions))
if(H.dna.species.id != "human")
H.set_species(/datum/species/human)
@@ -230,6 +237,13 @@
C.update_label(C.registered_name, preference_source.prefs.alt_titles_preferences[J.title])
else
C.update_label()
+
+ for(var/A in SSeconomy.bank_accounts)
+ var/datum/bank_account/B = A
+ if(B.account_id == H.account_id)
+ C.registered_account = B
+ B.bank_cards += C
+ break
H.sec_hud_set_ID()
var/obj/item/pda/PDA = H.get_item_by_slot(pda_slot)
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index ea25104c..b30f5ab6 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -68,5 +68,5 @@
var/static/list/can_ride_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/simple_animal/slime, /mob/living/simple_animal/parrot))
var/lastpuke = 0
var/last_fire_update
-
+ var/account_id
can_be_held = "micro"
diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm
index 93c9ce32..5fa5046a 100644
--- a/code/modules/mob/living/carbon/human/human_helpers.dm
+++ b/code/modules/mob/living/carbon/human/human_helpers.dm
@@ -132,6 +132,7 @@
to_chat(src, "Use of ranged weaponry would bring dishonor to the clan.")
return FALSE
+
/mob/living/carbon/human/can_see_reagents()
. = ..()
if(.) //No need to run through all of this if it's already true.
diff --git a/hyperstation/code/__DEFINES/economy.dm b/hyperstation/code/__DEFINES/economy.dm
new file mode 100644
index 00000000..428ea3a0
--- /dev/null
+++ b/hyperstation/code/__DEFINES/economy.dm
@@ -0,0 +1,35 @@
+#define STARTING_PAYCHECKS 5
+
+#define PAYCHECK_ASSISTANT 25
+#define PAYCHECK_MINIMAL 75
+#define PAYCHECK_EASY 125
+#define PAYCHECK_MEDIUM 175
+#define PAYCHECK_HARD 200
+#define PAYCHECK_COMMAND 250
+
+#define MAX_GRANT_CIV 2500
+#define MAX_GRANT_ENG 3000
+#define MAX_GRANT_SCI 5000
+#define MAX_GRANT_SECMEDSRV 3000
+
+#define ACCOUNT_CIV "CIV"
+#define ACCOUNT_CIV_NAME "Civil Budget"
+#define ACCOUNT_ENG "ENG"
+#define ACCOUNT_ENG_NAME "Engineering Budget"
+#define ACCOUNT_SCI "SCI"
+#define ACCOUNT_SCI_NAME "Scientific Budget"
+#define ACCOUNT_MED "MED"
+#define ACCOUNT_MED_NAME "Medical Budget"
+#define ACCOUNT_SRV "SRV"
+#define ACCOUNT_SRV_NAME "Service Budget"
+#define ACCOUNT_CAR "CAR"
+#define ACCOUNT_CAR_NAME "Cargo Budget"
+#define ACCOUNT_SEC "SEC"
+#define ACCOUNT_SEC_NAME "Defense Budget"
+
+#define NO_FREEBIES "commies go home"
+
+//ID bank account support defines.
+#define ID_NO_BANK_ACCOUNT 0
+#define ID_FREE_BANK_ACCOUNT 1
+#define ID_LOCKED_BANK_ACCOUNT 2
\ No newline at end of file
diff --git a/hyperstation/code/controllers/subsystem/economy.dm b/hyperstation/code/controllers/subsystem/economy.dm
new file mode 100644
index 00000000..73e51dc2
--- /dev/null
+++ b/hyperstation/code/controllers/subsystem/economy.dm
@@ -0,0 +1,16 @@
+SUBSYSTEM_DEF(economy)
+ name = "Economy"
+ wait = 5 MINUTES
+ init_order = INIT_ORDER_ECONOMY
+ runlevels = RUNLEVEL_GAME
+ var/roundstart_paychecks = 5
+ var/budget_pool = 35000
+ var/list/department_accounts = list(ACCOUNT_CIV = ACCOUNT_CIV_NAME,
+ ACCOUNT_ENG = ACCOUNT_ENG_NAME,
+ ACCOUNT_SCI = ACCOUNT_SCI_NAME,
+ ACCOUNT_MED = ACCOUNT_MED_NAME,
+ ACCOUNT_SRV = ACCOUNT_SRV_NAME,
+ ACCOUNT_CAR = ACCOUNT_CAR_NAME,
+ ACCOUNT_SEC = ACCOUNT_SEC_NAME)
+ var/list/generated_accounts = list()
+ var/list/bank_accounts = list() //List of normal accounts (not department accounts)
\ No newline at end of file
diff --git a/hyperstation/code/modules/economy/account.dm b/hyperstation/code/modules/economy/account.dm
new file mode 100644
index 00000000..23827cc8
--- /dev/null
+++ b/hyperstation/code/modules/economy/account.dm
@@ -0,0 +1,26 @@
+#define DUMPTIME 3000
+
+/datum/bank_account
+ var/account_holder = "Rusty Venture"
+ var/account_balance = 0
+ var/datum/job/account_job
+ var/list/bank_cards = list()
+ var/add_to_accounts = TRUE
+ var/transferable = TRUE
+ var/account_id
+ var/withdrawDelay = 0
+
+/datum/bank_account/New(newname, job)
+ if(add_to_accounts)
+ if(!SSeconomy)
+ log_world("Wack")
+ SSeconomy.bank_accounts += src
+ account_holder = newname
+ account_job = job
+ account_id = rand(111111,999999)
+
+/datum/bank_account/Destroy()
+ if(add_to_accounts)
+ SSeconomy.bank_accounts -= src
+ return ..()
+
diff --git a/hyperstation/code/obj/economy.dm b/hyperstation/code/obj/economy.dm
new file mode 100644
index 00000000..500e9069
--- /dev/null
+++ b/hyperstation/code/obj/economy.dm
@@ -0,0 +1,115 @@
+//Hyper station economy. Because coding it yourself is easier than port sometimes.
+
+/obj/machinery/atm
+ name = "automated teller machine"
+ desc = "a wall mounted electronic banking outlet for accessing your bank account."
+ icon = 'hyperstation/icons/obj/economy.dmi'
+ icon_state = "atm"
+ max_integrity = 250
+ integrity_failure = 100
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30)
+ use_power = IDLE_POWER_USE
+ idle_power_usage = 0
+ active_power_usage = 0
+ power_channel = ENVIRON
+ resistance_flags = FIRE_PROOF
+ var/obj/item/card/held_card
+ var/user = ""
+ light_power = 0
+ light_range = 7
+ light_color = "#ff3232"
+
+/obj/machinery/atm/ui_interact(mob/user)
+ . = ..()
+ var/dat = {""}
+ dat += "
"
+ dat += ""
+ dat += "ATM
"
+ dat += "
Welcome to Hyper Station 13's Automated Bank Teller Service."
+ dat += "
"
+ if(!held_card)
+ dat += "
Welcome, please insert your ID to continue."
+ else
+ dat += "
Welcome user, [held_card ? user : "------"]
"
+ var/obj/item/card/id/idcard = held_card
+ if(idcard.registered_account)
+ dat += "
Account ID: ([idcard.registered_account.account_id])"
+ dat += "
Balance: $[idcard.registered_account.account_balance]"
+ dat += "
"
+ dat += "Withdraw"
+ dat += "Change Pin"
+ dat += "Account Settings"
+ dat += "Eject"
+ else
+ dat += "
Error, You don't seem to have a bank account with us."
+ dat += "
"
+
+ dat += "
"
+
+
+ var/datum/browser/popup = new(user, "atm", "ATM")
+ popup.set_content(dat)
+ popup.set_title_image(user.browse_rsc_icon(icon, icon_state), 500,300)
+
+ popup.open()
+
+/obj/machinery/atm/attackby(obj/item/I, mob/living/user)
+ if(istype(I, /obj/item/card))
+ if(!held_card)
+ var/obj/item/card/id/idcard = I
+ if(!user.transferItemToLoc(I, src)) //check if you can put it in
+ return
+ held_card = idcard
+ user = idcard.registered_name
+ playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+
+/obj/machinery/atm/Topic(href, href_list)
+ . = ..()
+ if(..())
+ return
+
+ if(href_list["card"])
+ if(held_card)
+ if(usr.CanReach(src))
+ if(usr.put_in_hands(held_card))
+ to_chat(usr, "You take the ID out of the slot.")
+ held_card = null
+ user = ""
+ else
+ to_chat(usr, "The machine drops the ID onto the floor!")
+ held_card = null
+ user = ""
+ if(href_list["withdraw"])
+ if(held_card)
+ var/obj/item/card/id/idcard = held_card
+ if(idcard.registered_account)
+ var/ammount = input(user, "Choose ammount", "Withdraw") as num|null
+ if(ammount)
+ ammount = max(min( round(text2num(ammount)), idcard.registered_account.account_balance),0)
+
+
+
+ src.ui_interact(usr)
+
+
+//Money, Well, get back, I'm all right Jack, Keep your hands off of my stack.
+//making our own currency, just to stop exploits (for now)
+
+/obj/item/stack/credits
+ name = "credits"
+ singular_name = "credit"
+ icon = 'hyperstation/icons/obj/economy.dmi'
+ icon_state = "cash"
+ amount = 1
+ max_amount = 100
+ throwforce = 0
+ throw_speed = 2
+ throw_range = 2
+ w_class = WEIGHT_CLASS_TINY
+ full_w_class = WEIGHT_CLASS_TINY
+ resistance_flags = FLAMMABLE
+ var/value = 1
+
+/obj/item/stack/spacecash/proc/update_desc()
+ var/total_worth = amount*value
+ desc = "Legal tender, It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
\ No newline at end of file
diff --git a/hyperstation/icons/obj/economy.dmi b/hyperstation/icons/obj/economy.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..6e6dec04dc64dd1425a4adc471ce201e05cc14fc
GIT binary patch
literal 780
zcmV+n1M~ceP)(s9>`11#-&tQ!PUW4v_Xw
zb8v=X&a&SoL_!=6JAe_3e&BiDfM4}*P(6VyPrx?7;)4Iqhmp%H@>eHhz4knhhji6r3`5BRe<3eC=<#<
zaDD}Cy;2}17*(8aVDO<_g4_Y!qdgpr<9OT@aNZl=$4i_{r<0~Fz+TKB)!#_>=o}mN
zxR?Kfe{w=;Qb7}Xyn`)IATy()7}nC$lSAA*d%vuWx3y
zJg>OLJ4h{hUNHw)ELZc@azW|cJ-`E4^}GUM*E<{zhr{tNSZ8@Acq}r>rgsNTv!Y;I
zRzB@mMYd_1fIFy~TlOq;xo7!HmjKj3&u47=TE4xP`@AUfPAkwl==nvR-!TAnFyyoH
zV^=bk=iR=6)QmG@0CiCG2GcSCxA;M~4sbXezsNTVP+gqkyt97*0000<
KMNUMnLSTY*FIwCH
literal 0
HcmV?d00001
diff --git a/hyperstation/icons/obj/genitals/belly.dmi b/hyperstation/icons/obj/genitals/belly.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..1e6798de2585aab6a23b26eff4d1914dd5ae2815
GIT binary patch
literal 945
zcmV;i15W&jP)1Sad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1
zHq(1L9(3(3)ouL_C-u5?aUz@
zgD@90gdx8Z0BFTc1-RXAmV%4lBch=I$Oa4r7rst{>h*b+7E?JDCgNl8eag(|76dqm(V)jvS0K|eQ%usnm56=V%
zgrQ2n>;!y<@&j}Xq=%Ph;53yytuX*nU<2}uGX$y-*mxm8Qey=CdgSltBcwwNJbd>c
z>r@yZMcPhrX0;=Mjf)Vw08t}|OWY5U|2_~n_~rtt1j|CZ0a}&=frA$%K74uCs?~@)
z5v(zuL!~WwcowOqd-YFu#~53N_~Om?&GvclxOZfLT<<$Fz$2m*^j`KU=E;-#d5{|tS@V4>flT-M
z_?`wq;3Q<*>e(EUA>VYM~L)1S|_^}`$C|4
z@ZJv^2%;=nN}lffK@$P$N3f6YCkaTBD1n}(tpq%nB=augy&s%r0Q<6}F^gDUV3#6j
z?b#kdy9h&Pg4DI)2tjubx)Qvg?-{(PbH^Ox{g5F;h74IH-~Vf1-XB^C^#75p`@Q_53#8x7zPd5VZUMvOl!j=Tp!I7vA13a3C1>|GYn3Krm#;kjv!
Date: Tue, 26 Jan 2021 17:43:29 +0000
Subject: [PATCH 2/5] atm finished
atm finished
---
_maps/map_files/BoxStation/BoxStation.dmm | 23 +++---
hyperstation/code/modules/economy/account.dm | 4 +-
hyperstation/code/obj/economy.dm | 75 ++++++++++++++++----
3 files changed, 75 insertions(+), 27 deletions(-)
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index b802e2e2..1ccd4278 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -1534,7 +1534,7 @@
"aDz" = (/turf/open/floor/carpet/red,/area/crew_quarters/bar)
"aDA" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/freezer,/area/crew_quarters/toilet)
"aDB" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/carpet/red,/area/crew_quarters/bar)
-"aDC" = (/obj/machinery/power/apc{areastring = "/area/crew_quarters/bar"; name = "Bar APC"; pixel_y = -24},/obj/structure/cable,/turf/open/floor/carpet/red,/area/crew_quarters/bar)
+"aDC" = (/obj/machinery/power/apc{areastring = "/area/crew_quarters/bar"; name = "Bar APC"; pixel_y = -24},/obj/structure/cable,/obj/effect/landmark/start/bartender,/turf/open/floor/carpet/red,/area/crew_quarters/bar)
"aDD" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/public/glass{name = "Dormitory"},/turf/open/floor/plasteel,/area/hallway/primary/central)
"aDE" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/machinery/meter,/turf/open/floor/plating,/area/maintenance/starboard/fore)
"aDF" = (/obj/machinery/atmospherics/components/binary/valve{dir = 4},/turf/open/floor/plating,/area/maintenance/starboard/fore)
@@ -1598,7 +1598,6 @@
"aEL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/closed/wall,/area/crew_quarters/bar)
"aEM" = (/obj/machinery/airalarm{dir = 8; pixel_x = 24},/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 1},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plasteel/freezer,/area/crew_quarters/toilet)
"aEN" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/twohanded/required/kirbyplants/random,/turf/open/floor/plasteel,/area/gateway)
-"aEO" = (/obj/structure/bed,/obj/effect/spawner/lootdrop/bedsheet,/turf/open/floor/carpet/red,/area/crew_quarters/bar)
"aEP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/starboard/fore)
"aEQ" = (/obj/machinery/door/airlock{name = "Service Hall"; req_one_access_txt = "25;26;35;28"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/hallway/secondary/service)
"aER" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/closed/wall,/area/hallway/secondary/service)
@@ -1931,7 +1930,7 @@
"aLg" = (/obj/structure/chair/stool{pixel_y = 8},/turf/open/floor/wood,/area/crew_quarters/theatre)
"aLh" = (/obj/structure/table/wood,/obj/item/instrument/trumpet,/turf/open/floor/carpet,/area/crew_quarters/theatre)
"aLi" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/hallway/primary/port)
-"aLj" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel,/area/hallway/secondary/entry)
+"aLj" = (/obj/effect/turf_decal/tile/red{dir = 4},/obj/machinery/atm{pixel_y = 30},/turf/open/floor/plasteel,/area/hallway/primary/fore)
"aLk" = (/obj/structure/table/wood,/turf/open/floor/carpet,/area/crew_quarters/theatre)
"aLl" = (/obj/structure/table/wood,/obj/item/instrument/trombone,/turf/open/floor/carpet,/area/crew_quarters/theatre)
"aLm" = (/obj/effect/turf_decal/stripes/line{dir = 1},/turf/open/floor/plasteel,/area/hallway/primary/port)
@@ -1969,6 +1968,7 @@
"aLS" = (/obj/structure/table/wood,/obj/item/instrument/saxophone,/turf/open/floor/carpet,/area/crew_quarters/theatre)
"aLT" = (/obj/structure/chair/stool{pixel_y = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber/on,/turf/open/floor/wood,/area/crew_quarters/theatre)
"aLU" = (/obj/structure/closet/secure_closet/freezer/meat,/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/showroomfloor,/area/crew_quarters/kitchen)
+"aLV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/machinery/atm{pixel_y = 30},/turf/open/floor/plasteel,/area/crew_quarters/fitness)
"aLW" = (/obj/structure/cable{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/open/floor/plating,/area/maintenance/starboard/fore)
"aLX" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/cable{icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 5},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/open/floor/plasteel,/area/hallway/primary/central)
"aLY" = (/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/obj/structure/cable{icon_state = "4-8"},/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 24},/turf/open/floor/plasteel/freezer,/area/crew_quarters/toilet)
@@ -2828,7 +2828,7 @@
"bcu" = (/obj/structure/disposalpipe/segment{dir = 6},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plating,/area/maintenance/port)
"bcv" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/junction/flip{dir = 1},/turf/open/floor/plating,/area/maintenance/port)
"bcw" = (/obj/effect/landmark/xeno_spawn,/obj/item/bikehorn/rubberducky,/turf/open/floor/plasteel/freezer,/area/crew_quarters/toilet)
-"bcx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/junction/yjunction{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/turf/open/floor/plasteel/dark,/area/crew_quarters/bar)
+"bcx" = (/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/obj/machinery/atm{pixel_y = 30},/turf/open/floor/plasteel,/area/hallway/secondary/entry)
"bcy" = (/obj/structure/closet/wardrobe/green,/obj/machinery/light{dir = 8},/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral{dir = 1},/turf/open/floor/plasteel,/area/crew_quarters/locker)
"bcz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/open/floor/plasteel,/area/crew_quarters/cryopod)
"bcA" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/structure/closet/crate/freezer,/turf/open/floor/plasteel,/area/quartermaster/warehouse)
@@ -3155,11 +3155,13 @@
"biJ" = (/obj/machinery/vending/snack/random,/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral,/turf/open/floor/plasteel/dark,/area/crew_quarters/bar)
"biK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/airalarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel,/area/hallway/primary/starboard)
"biL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/open/floor/plasteel,/area/hallway/primary/central)
+"biM" = (/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/obj/machinery/atm{pixel_y = 30},/turf/open/floor/plasteel,/area/hallway/primary/central)
"biN" = (/obj/effect/turf_decal/loading_area{dir = 10; icon_state = "steel_panel"; name = "steel pannel"},/turf/open/floor/plasteel,/area/hydroponics)
"biO" = (/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "steel_panel"; name = "steel pannel"},/turf/open/floor/plasteel,/area/hydroponics)
"biP" = (/obj/item/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/light/small,/obj/item/drone_shell/snowflake,/turf/open/floor/plasteel/dark,/area/ai_monitored/turret_protected/aisat_interior)
"biQ" = (/obj/effect/turf_decal/loading_area{dir = 6; icon_state = "steel_panel"; name = "steel pannel"},/turf/open/floor/plasteel,/area/hydroponics)
"biR" = (/obj/effect/turf_decal/loading_area{dir = 9; icon_state = "steel_panel"; name = "steel pannel"},/turf/open/floor/plasteel,/area/hydroponics)
+"biS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/junction/yjunction{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/machinery/atm{pixel_y = 30},/turf/open/floor/plasteel/dark,/area/crew_quarters/bar)
"biV" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker{pixel_x = 5},/turf/open/floor/plasteel/cafeteria,/area/crew_quarters/kitchen)
"biW" = (/obj/effect/landmark/start/botanist,/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "steel_panel"; name = "steel pannel"},/turf/open/floor/plasteel,/area/hydroponics)
"biX" = (/obj/effect/turf_decal/loading_area{dir = 5; icon_state = "steel_panel"; name = "steel pannel"},/turf/open/floor/plasteel,/area/hydroponics)
@@ -3428,7 +3430,6 @@
"bob" = (/turf/closed/wall/r_wall,/area/crew_quarters/heads/hop)
"boc" = (/turf/closed/wall/r_wall,/area/storage/tech)
"bod" = (/obj/effect/spawner/structure/window/reinforced,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"},/obj/structure/cable{icon_state = "0-4"},/turf/open/floor/plating,/area/engine/gravity_generator)
-"boe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/structure/sign/poster/random{pixel_y = 32},/turf/open/floor/plasteel,/area/crew_quarters/fitness)
"bof" = (/obj/effect/mapping_helpers/airlock/cyclelink_helper{dir = 8},/obj/machinery/door/airlock/external{name = "Escape Airlock"},/obj/effect/turf_decal/delivery,/turf/open/floor/plasteel/dark,/area/hallway/secondary/exit)
"bog" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel/white,/area/science/lab)
"boh" = (/obj/item/stack/sheet/glass,/obj/structure/table/glass,/obj/item/stack/sheet/glass,/obj/item/stack/sheet/glass,/obj/item/stock_parts/matter_bin,/obj/item/stock_parts/matter_bin,/obj/machinery/light{dir = 4},/obj/item/stock_parts/scanning_module{pixel_x = 2; pixel_y = 3},/obj/item/stock_parts/scanning_module,/obj/machinery/power/apc{areastring = "/area/science/lab"; dir = 4; name = "Research Lab APC"; pixel_x = 26},/obj/structure/cable{icon_state = "0-8"},/turf/open/floor/plasteel/white,/area/science/lab)
@@ -7313,13 +7314,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadajJajJakSajJajJaaaaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaacakTakTakTakTakTaaaaaaaaaaaaaaaaaaakUakVakWakrakXakYakZaiUalaaiMalbagdalcaldaleagdalfaldaleagdalfalgaleagdalhalialjaldaldagdaldallalmaiUalnaloalpalqalpalralsakoajdaiEasCahfanfangaqGasDasEaszdeJvhIvhIvhIjjfvhIvhIvhIorcasBrjaaaaaaeaaeaaeaaaaaaaaaaceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaltalualtaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaadalvalwalxalyalvalzalzalzalzalzalzalzalzalzaaaaaaaaaaaaakTalAalBalCakTaaaaaaaaaaaaaaaaaaaiIaiIaiIalDalEalFalGaiUalHaldalIagdalJaldalKagdalLaldalMagdalNaldalOagdalPalQalRaldalkagdalTalUalVaiUalWalXalWalYalWalZalWalWajdaiEaiFaqGaqGaqGaqGapPapQaszarKfVupkRarDarDarDpkRarDeWKasBrjaaaaatJaaaatJaaaaadanIambanIaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaltamcaltaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvamdameamfalvamgamgalzamhamiamjalzamkalzaaaaaaaaaaadalzamlamiammalzaaaaaaaaaaaaaaaaaaaaaaaaamnaiHaiIamoampaiUamqamramsaiUamtamuamuamvamuamuamuamvamuamuamuamvamwamxamyamzamAaiUaiUaiUaiUaiUamBamCamBajcamBcxyamBamBajdamEcJgaqGatvcsRatwhoDcIXaszarKarDarDarDarDarDarDarDeWKatxwzqaaaatJaaaatJaaaaadamaamHamaaadaadaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaltamIaltaadaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamJamJamJamJamJamJamJamJamJamJamJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvamKamLamMalvamNamOaziamQamiamRalzalzalzakTalzakTakTalzehTamTamSalzaaaaaaaaaaaaaaaaaaaiIaiIaiIamUamVamWamXajLaiUaiUaiUaiUamYamYamYamZamYamYamYanaamYamYamYamZamYamYamYanbanbancandandbYdaneamBamCamBajcamBcxyamBamBajdaiEaiFaqGctJhoDatyhoDcuiatKarKeqmarDarDugbarDarDarDeWKauvwzqaadaaeaaeaaeaadanIanIanianIanIaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaaaadatJaaaaltamIaltaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamJamJamJamJamJamJamJamJamJamJamJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvamKamLamMalvamNamOaziamQamiamRalzalzalzakTalzakTakTalzehTamTamSalzaaaaaaaaaaaaaaaaaaaiIaiIaiIamUamVamWamXajLaiUaiUaiUaiUamYamYamYamZamYamYamYanaamYamYamYamZamYamYamYanbanbancandaLjbYdaneamBamCamBajcamBcxyamBamBajdaiEaiFaqGctJhoDatyhoDcuiatKarKeqmarDarDugbarDarDarDeWKauvwzqaadaaeaaeaaeaadanIanIanianIanIaaaaaaaadaaaaaaaadaaaaaaaaaaaaaaaaadatJaaaaltamIaltaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamJanjanjanjanjanjanjanjanjanjamJaadaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaalvalvankanlalvanmamialzamiamiamiaziamiamiannamialBamiamiamiamianoakTaaaaaaaaaaaaaaaanpanqakVanrakrakXakYakXansanbanbanbantanbanbanuanbanbanbanbanbanbanbanvanbanbanbanwanbanbanbanbanbanbanxajcanyanzanAanBanCanzajcapaanEanFaqGauDhoDhoDcuhcIXaszarKarDarDarDarDarDarDarDeWKavEwzqaaaatJaaaatJaaaanIanJanKanLanIaaaaaaaadaaaaaaaadaaaaadaaaaaaaaaatJaltaltaltamIaltaltaltaltaltaltaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamJanjanjanjanjanjanjanjanjanjamJamJanMamJamJaadaaaaaaaaaaaaalzalzalzalzalzaadaadalzanNanOanPanQamOalzalzakTakTalzalzalzalzakTalzakTakTalzanRamianSalzaaaaaaaaaaaaaaaaaaaiIaiIanTanUanVanWanXaiHanYanYanYanYanYanZaoaanYanYanYanYanYanYanYaobaocaocaocaodaoeaocaofaogaohaoianeaojaokajdajdajdajdajdajdajdaiEaolaqGaEChoDbqqhoDcujaszarKarDarDarDerQarDarDarDeWKasBrjaaaaatJaaaatJaaaanIaooaopaoqanIaaaaaaaadaaaaaaaadaaaaadaltalualtalualtaoramIamIamIamIamIamIaosaltaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadamJanjanjanjanjanjanjanjanjanjaotaouaovaowamJaadaaeaaealzalzalzaoxaoyaozalzaaaaaaalzamianOanmamiaoAalzaoBaoBaadaoBaoBaadaadaaFaaFaoCaoCalzaoDamiaoEalzaaaaaaaaaaaaaaaaaaaaaaadajLaiHaoFaiHaoGaoHaoHaoHaoIaoHaoHaoHaoJaoKaoKaoKaoLaoKaoKaoMaoNaoOaoPanGaoQanGanGanGanGaoRanGaoSaoSaoSaoSaoTaoUaoVaoWaoXaoXaoYaoZaqGbFmhoDhoDhoDcIXaszarLaGharEarFarFarFarGarFdwaasBrjaaaaaaeaaeaaeaaaanIapdapeapfanIapgapgapgapgapgalualualualtaphamIaosaltaltamIaltaltaltaltapialtaltaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadamJanjanjanjanjanjanjanjanjanjanMapjapkaplamJaadalzapmalzapnapoamiappamialzakTakTalzapqanOanmapqalzalzalzakTakTakTalzalzaaFapraadaadaaFalzalzamPalzalzaaaaaaaaaaaaaaaaaaaaaaadaiHapsakVaiHaptaoHapuapvapwapxapwaoHapyaoKapzapAapBapCaoKamYanbapDapEapFapGapGapGapGapGapHapIapGapGapGapGapGapJapKapLapMapNapOcsQaqGctzhoDcsScsTcsUcsVctyctxctyctyctycsWculctActActBrjaaadaluapValuapganIanIapWapXanIapYamIamIapZaltaqaamIaqbaltaqcamIamIaqdaltamIaltaqeaqfaltamIaqgaltaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadamJanjanjanjanjaqhanjanjanjaqiaqjapjapkaqkamJaadalzamialzaqlaqmanQaqnaqoalzaoEamiaqpxJwanOaqqamiamiamiamiamiamiamiamialzalzalzaadaaFaadaaFaqraqsaqraaaaaaaaaaaaaaaaaaaaaaaaaadaiHaqtaquaiHaqvaoHaqwaqxaqyapwapwaoHapyaoKaqzapBaqAaqBaqCamYanbandapEaiEaqDaqDaqDaqDaqDaqEaqFaqDaqDaqDaqDaqDaqDaqDaqDaqDasGaqGaqIaqGatIayGctCatIctDatzatzaEXatzatzapUaJgaqGaqGaqGaqGaqGaaaaqLamIaluapgaqMaqNaqOaqPamIamIamIaltamIaltaqQamIamIaltamIaqRaqSaqTapiamIaltaqUaqValtdPCapZaltaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadamJanjanjanjanjanjanjanjanjanjanMaqWapkaqXamJalzalzaqYalzalzalzamPaqZaraaraarbarcardarcarearfargarhalzamialzalzalzamialzarialzaaFaadaoBaadaqraqsaqraaaaaaaaaaaaaaaarjarjarjarjarjarjarjarjaptaoHarkarlarmapwarnaoHapyaroarparqarrarsaqCamYanbartapEaiEaqDaruarvautarxaryatAaqDatBatCatGaqDatHauuayzaqDasGaqGctEboeauFauFauGauHaqJaqKaqKaqKaqKaqKaqJapRaEYayHaadaadaadaadaluarNaluapgarOamIarPuyYaoramIaltaltarQaltaltarRaltaltaqTarSarTamIaltamIarUarUarUarUarUarUarUarUarUarVarVarVarVaaFarVarVaadaadaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadamJanjanjanjanjanjanjanjanjanjanMaqWapkaqXamJalzalzaqYalzalzalzamPaqZaraaraarbarcardarcarearfargarhalzamialzalzalzamialzarialzaaFaadaoBaadaqraqsaqraaaaaaaaaaaaaaaarjarjarjarjarjarjarjarjaptaoHarkarlarmapwarnaoHapyaroarparqarrarsaqCamYanbartapEaiEaqDaruarvautarxaryatAaqDatBatCatGaqDatHauuayzaqDasGaqGctEaLVauFauFauGauHaqJaqKaqKaqKaqKaqKaqJapRaEYayHaadaadaadaadaluarNaluapgarOamIarPuyYaoramIaltaltarQaltaltarRaltaltaqTarSarTamIaltamIarUarUarUarUarUarUarUarUarUarVarVarVarVaaFarVarVaadaadaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadamJanjanjanjanjanjanjanjanjanjanMarWapkarXamJarYarZasaasbasbasbasbasbasbascasdasealzalzalzalzamialzalzamiasfalzargamialzalzalzalzaoBaoBaoBaqrasgaqraaaaaaaaaaadaadarjashasiarjasjaskaslarjaptaoHapxasmapxasnapwaoHasoaspasqapBasrcagaqCamYanbassapEaiEaqDastasuasvavxasxauIaqDavyavAavBaqDavyavCbFnaqDavDaqGctFavFapRayFavHavIaqJaqKaqKaqKaqKaqKaqJapRayDayHaaaaaaaaaaaaaluamIapYapgasMaqTarPamIasNasOasPapiamIamIamIamIamIamIamIarSasQamIatOamIarUasSasTasUarUasVasWasXarUaadaoBaoBaoBaoBaoBaoBaoBaoBaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaamJanjanjanjanjanjanjanjanjanjanMarWasYasZamJamiamiataatbatcatcatcatcatcatcatdateatfaaFatgalzamiathapqargatialzatjamiamiamiatkakTaoBaoBaadaqraqsaqraaaaaaaaaarjarjarjaqsaqsarjaqsaqsaqsarjaptaoHapxatlatmatnapxaoHapyatoaoKatpatqatraoKatsanbandapEaiEaqDaqDaqDaqDaqDattazgaqDavJavAavKaqDbPPavAavLaqDasGaqGawRawTawUawUawVawWasKaqKaqKaqKaqKaqKaqJapRaEZayHatJatJatJaadaluamIctGapgatLamIatMatNatNatNatNavXatNatPamIamIamIuyYamIamIamIamIaltasOarUatQatRatRarUatSatTatUarUaoBaoBaoBaoBaoBaoBaoBaoBaoBaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadamJanjanjanjanjanjanjanjanjanjanMatVatWatXamJatYlORauaaubanRaucaudaueaufalzaugateaaFauhatfakTamiasfalzalzalzalzalzalzalzauiatkakTaadaoBaadaqraqsaqraaeaaeaaeaujaukaulaqsaqsarjarjaumarjarjaptaoHaoHaunaoHauoaoHaoHaupauqaoKaoKaoKaoKaoKauranbausapEaiEaqDaruarvaytarxawXawYaqDaqDawZaqFaqDaqDaxaaqFaqDaxbaqGaxcatDaxdaxdaxeaxfatEaqKaqKaqKaqKaqKatFasHaFaaqGaltaltaltaltaltamIaltapgapgapgapgapgapgapgapgapgaltauMauNaltaltaltaltaltaltaltaltamIauOarUatRatRauPauQatQauRarUaoBaoBaoBaoBaoBaoBaoBaoBaoBaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -7333,13 +7334,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJat
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRMatJjXDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayWaEcaBeaEdaEeaEfaEgaEhaEiazcaFraFsaFwaFxaFsaFwaFxaEkaGVaGYaGZaHaaGZaGZaGZaGZaIuaGVaBnaKiaKjaKkaKkaGjaHyaKkaKpaKraBTaxZayaaEraEsaEtaEuaEvayaaqsaEwaydaydaDiaExaEyaEzaEAaydaydayoayoayqaEBayqazwanbazxahfafmaomaGgaHtbczbdwbdxbeMaEKaEKaEKbssaEMaEKbghbghbgibeLazFaqGaqGbbVaHCaJabnbaCiaCiaCiaCiaCiaCiaCiaCibGNaltaltaltaEPaltayKaEQaERaESaETaEUaEVaEWaEVaHwaHBaHVaHWaHXaFbaFbaFbaFbaFcaFdaFeaFcaFcaFcaFcaFcaFcaFcaFfaFgaFhaCwaCwaCwaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayWaFiaBeaFjaFkaFlaFmaFnaFoazcaIzaYjbfNbgTbjjaCFaFqazcaIvaIwaFtaFuaElaElaElaFvaIxaIyaBnaLcaLgaKkaLhaLkaLlaKkaLnaLoaBTaFDayaaFEaFFaEtaFGaENayaaqsaFIayqaFJayoaFKaFLaFMayoaFNayqaFOaFPayqaFLayqaFQaoNaFRahfafmaombtSbtTbtUbBTattatuazFbaubaKbLfcHhazFazFazFazFazFazFaKtaITbbVaLXaGbbsrbsDcImbjkaOdaDOaDOaDOcveaLWaGmaGkaGkaGnaGiaGoaGpaCnaGqaGraGsaGtaGuaGtaHYaGwaFbaHZaIaaKIaKJaMpaGBaFcaGCaGDaFcaGEaGFaGGaGHaGIaGJaGKaGLaGMaGNaGOaGPaaaatJaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGQayUayWcEwaBeaBeaGSaGTaGUaGTaBeazcazcazcazcazcazcaGWaGXazcaIAaIBaJUaJUaJUaQKaJUaJUcGdcGeaBnaLpaLxaKkaLkaLSaLkaKkaLTaLZaBTaxZayaaHdaHeaHfaHgaHhayaaqsaHiayqaHjayoaHkaFLaHlayoaHmayqaAQaAQayqaHnayqaHoaHpaHqahfanDaomaomaomaomaomaHraHsazFazFazFbLfbjlbsGbsGaLYaMcaNmaNoaNuaNUbbVaOcaNnaJdcvtaJdcuucvtaJdaJdaJdcvuaHKaHLaHMaxpaxpaxpaHNaHOaHPaHQaHRamIaHSaHSaHSaHTaIoaFbaMraNEaOzbagbcbbhPaFcaIbaIcaFcaIdaIeaIfaIgaGIaIhaFfaFgaDYaIiaIjaGPaaaatJaaaaaaatJaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayWaxBaIraIlaImaIlaInbvpaLfaLjaLqaLvbjpbswaJLaCFbyiazccGfcGgcGhcGicGjcGkcGlcGmcGncGoaBnaMaaMbaKkaKkaKkaKkaKkaMNaMaaBTaxZayaaIEaIFaIGaFGaIHayaaqsapyayqaIIcbvaFLaFLaFLaIJaIKayqcFwcFxaHFaIMaINaIOaIPbULbUQaISaIQcFAcFBaITaOuaIVaIWazFbaubbpcHxbbcbbcbbcbbcaOvazFaOwaOyaVmbbVbpAaVnaJdaBQaBRaDxaOxaNsaFHaNraJiaJiaJjaJkaJlaJiaJmaHSaHSaJnaHTaHSaHSaHSaJoaJpaHTaHUaFbaJqaJraJsaJtaJuaJvaFcaJwaJxaJyaJzaJAaJBaJCaJDaIhaFfaJEaDYaGNaJFaGPaaaaaaaaaaaaatJaaaaMzaMzaMzaMzaMzaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRMatJjXDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayWaxBaJGaJHaJIaJHaJJaJHaJHaJHaJKaLOcFCbyfaJLaJMaJLazcaJNaJOaJNaBnaBnaBnaBnaJNaJPaJQaBnaBTaMPaNjaNjaNkaNjaNjaNlaBTaBTaJXayaaJYayaaJZaKaaKbayaarjaoJayqayqayqaAQaKcaAQayqayqayqcFEcFFcFGaKdaIPaIPaIPaIPaIPaKecFHcFIcFJaITaWGaIVaKgazFazFazFazFazFazFazFazFaKqazFaWIaWIaOCbbVbpAaWJaELaPLaDBaDCaOmaDzaDzaEOaJiaLUaKuaKvaKwaJiaKxaKyaKzaKAaKBaKCaKDaKEaKFaKGaHTaHUaFbaKHaMpaMqbmcaMpaKKaFcaKLaKMaKNaKOaKPaKQaKRaFcaFcaKSaFgaDYaIiaIjaGPaaaaaaaaaaaaatJaaaaMzaNIaNJaNLaMzaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauSaKTaxBaKUaKVaKWaKXaKYaKZaweaLaaLbaxBaIraNXaNYaNYaNYaOaaNYbzEaNYaNYaNYaNYaNYaNYbSqaObbSxbTEbUPaNYaNYaNYaNYaNYbVLaNYbVMbWDbWEaLraLmaLsaLmaLtaMWaLuaOeaLwaLRaEEaIRaIRaIRaLNaLPaLPbiFaLPaLPaLAaLBaLCaLDaLEaLFaLGaLPaLPcFDaLHaLIaLJaLKaPJbcXaNKbiGaLPbiHcvEbAIaXUaYkaZMaZMaZMbaEbbbbbRaJdcvtaGcaJdaJdaJdaJdaJdaJiaMdaKuaMeaMfaJiaJiaMgaMhaMiaMjaMkaMlaMmaMnaMoaHTaHUaFbaGzboFaMpaNDaMpaMpaFcaMsaMtaFcaMuctNaKRaKRaFcaMvaMwaMxaDYaCwaCwaCwaMyaMzaMzaMzaMzaMyaMycExaQjaOXaMzaaaatJaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayWaxBaIraIlaImaIlaInbvpaLfbcxaLqaLvbjpbswaJLaCFbyiazccGfcGgcGhcGicGjcGkcGlcGmcGncGoaBnaMaaMbaKkaKkaKkaKkaKkaMNaMaaBTaxZayaaIEaIFaIGaFGaIHayaaqsapyayqaIIcbvaFLaFLaFLaIJaIKayqcFwcFxaHFaIMaINaIOaIPbULbUQaISaIQcFAcFBaITaOuaIVaIWazFbaubbpcHxbbcbbcbbcbbcaOvazFaOwaOyaVmbbVbpAaVnaJdaBQaBRaDxaOxaDzaFHaNraJiaJiaJjaJkaJlaJiaJmaHSaHSaJnaHTaHSaHSaHSaJoaJpaHTaHUaFbaJqaJraJsaJtaJuaJvaFcaJwaJxaJyaJzaJAaJBaJCaJDaIhaFfaJEaDYaGNaJFaGPaaaaaaaaaaaaatJaaaaMzaMzaMzaMzaMzaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRMatJjXDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUayWaxBaJGaJHaJIaJHaJJaJHaJHaJHaJKaLOcFCbyfaJLaJMaJLazcaJNaJOaJNaBnaBnaBnaBnaJNaJPaJQaBnaBTaMPaNjaNjaNkaNjaNjaNlaBTaBTaJXayaaJYayaaJZaKaaKbayaarjaoJayqayqayqaAQaKcaAQayqayqayqcFEcFFcFGaKdaIPaIPaIPaIPaIPaKecFHcFIcFJaITaWGaIVaKgazFazFazFazFazFazFazFazFaKqazFaWIaWIaOCbbVbpAaWJaELaPLaDBaDCaOmaDzaDzaNsaJiaLUaKuaKvaKwaJiaKxaKyaKzaKAaKBaKCaKDaKEaKFaKGaHTaHUaFbaKHaMpaMqbmcaMpaKKaFcaKLaKMaKNaKOaKPaKQaKRaFcaFcaKSaFgaDYaIiaIjaGPaaaaaaaaaaaaatJaaaaMzaNIaNJaNLaMzaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauSaKTaxBaKUaKVaKWaKXaKYaKZaweaLaaLbaxBaIraNXaNYaNYaNYaOaaNYbzEaNYaNYaNYaNYaNYaNYbSqaObbSxbTEbUPaNYaNYaNYaNYaNYbVLaNYbVMbWDbWEaLraLmaLsaLmaLtaMWaLuaOeaLwaLRaEEaIRaIRaIRaLNbiMaLPbiFaLPaLPaLAaLBaLCaLDaLEaLFaLGaLPaLPcFDaLHaLIaLJaLKaPJbcXaNKbiGbiMbiHcvEbAIaXUaYkaZMaZMaZMbaEbbbbbRaJdcvtaGcaJdaJdaJdaJdaJdaJiaMdaKuaMeaMfaJiaJiaMgaMhaMiaMjaMkaMlaMmaMnaMoaHTaHUaFbaGzboFaMpaNDaMpaMpaFcaMsaMtaFcaMuctNaKRaKRaFcaMvaMwaMxaDYaCwaCwaCwaMyaMzaMzaMzaMzaMyaMycExaQjaOXaMzaaaatJaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJatJaaaaaaaaaaaaaaaaaaaaaaaaayUaRNayUayUayUayUayUayUaRNayUaaaauSaBdaMAaKUaMBaMCaMDaMEaMFaweaMGaLbaMHaIkaLdaMIaMJaMLaMKaMLaMMaLeaLeaLeaLeaLeaLeaLeaLiaLdaLebXCaLeaLeaPKaPOaMQaMRaMQaMRaMSaMQaMTaMQaMUaMQaMVaOnaMXaMYaMZaIPaIPaIPaIPaIPaIPaIPaIPaLzaIPaIPaNaaNbaNcaNdaNeaNfaNgaIPaIPaLzaIPaNhaIPaIPaIPaIPaIPaIPaIPaNiaIPaIPaIPaLzaIPaIPaIPaIPaIPbbXaJdaKsaNpaPQaWKaQFaJdaQGaJiaNvaKuaNwaNxaNyaJiaHSaHSaNzaHSaHSaHSaNAaNBaNAaHTaHUaFbaFbaFbbtJbtKaFbaFbaFcaFcaFcaFcaFcaFcaFcaNFaFcaFfaFfaFgaDYaNGaNHaCwaOYaPaaPbaQgaQkaQlaMyaQmaQjaOXaMzatJatJatJatJatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajXDaGRaNMatJatJatJatJauSaAaauSayUaRJayUaNNaNOaNPaNQayUaRJayUayUauSayWaxBaKUaNRaNSaMDaMEaMFaweaNTaLbaxBaPmaPnaPvbXDaPwaPwaPwaPxaPyaQCaNVaNZaPwaPwaPwaQEcGpaPwcHdcHecHecHfaSyaQIaOgaOfaOgaOhaOiaOjaOlaOkaQMaRPaWUaOoaOpaIPaOqaOqaOqaOraOqaOqaOqaOqaOsaOqaOqaOqaOqaOqaOqaOtaOqaOqaOqaOqaPPaOqaOqaOqaOqaOqaOqaOqaOqaIPaIPaIPbfQbfQaRfbfQbfQbfQbfQbfQaRiaJdaRlaKoaJhaLQaLQaJdaltaJiaOAaOBaODaWFaOEaJiaHSaOFaOGaOHaOIaKmaOHaOJaOKaHTaHUaFbaOLaOLaOMaONaOOaOOaOPaFbaOQaORaOSaCwaFfaGNaOTaFfaFfaOUaOVaCwaOWaCwaQnbamaRkaRkbcjaSWaMyaSXaOZaSYaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRMatJjXDbanaaaaaaaaaaaaaaaaweawfaweayUaXfayUayWaxBaxBayXayUaXfayUaPcaPdaPeaxBaKUaPfaPgaKXaPhaKZaweaPiaLbaLOcFKcFLaPjaPkaPlaPlaPlaPlaPlaPlaQHaQLaPlaPoaPlaPlaPlaPpaPqaPraPqaPsaPtaPuaYMaLeaRObeuaRZbexbhKaPzaScaPAaPAaPMaRgaRmaILaILaILaILaILaILaILaILaPCaPDaPEaPFaPEaPEaPEaPGaPEaPHaPEaPIaPCaILaILaILaILaILaILaILaILaPMaTSaUTaJdaJdaJdaJdcuTbeNbeNcuTcwFaJdaRsbjnbMRcvDcvbaJiaRnaJiaJiaPRaJkaJiaJiaJiaJiaOHaPSaPTaPTaPTaPTaPUaOHaHTaHUaFbaPVaMpaOMaONaMpaMpaPWaFbaPXaPYaPZaCwaFfaIiaQaaQbaQbaQcaQdaQeaQfaCwaRkbfTbqAbTpchDaPbaMyaUsaVCbspaXcaRkaRkaXdaRkbkIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaQoaaaaaaaaaaxwaxyaxzayTaQpbvpaQqaPeaxBaxBaQraQqbvpaQpaPeaxBaxBaxBaQsaQtaQuaQvaQwaQxcFMaQyaQzaLOcFNcFOaPjaQBaPlaRQaRRaRSaRUaSLaSMaThaTmaTpaUeaUfaUCaPpaQNaQOaQPaPsaQQaPuaPuaQRaPuaPuaPAaPAaQSaQTaPAaPAaPAaQUbiLbbeaILaaaaaaaaaaaaaaaaaaaaaaPCaKnaQVaQWaQXaQYaQZaRaaRbaRcaRdaReaPCaaaaaaaaaaaaaaaaaaaaaaILaVNaIPbjDaJdaGaaRjaTTaTUcwZcwZaWHbcxbcWbdaaSaaSaaSacvaaVoaSBaRoaRpaRqaRraRtaRuaSuaJiaOHaRvaVsbiNbiNbiOaRxaOHaHTaRyaFbaRzaRzxNJaONaRAaRAaRBaFbaFbaRCaFbaCwaRDaGNaOTaREaRFaOUaOVaCwaCwaCwaYNcDRcEibbkbblbcgaMyaRGaRHaMzaMzaMzaMzaMzaMzaRIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatJaaaaQoaaaaaaaaaaxwaxyaxzayTaQpbvpaQqaPeaxBaxBaQraQqbvpaQpaPeaxBaxBaxBaQsaQtaQuaQvaQwaQxcFMaQyaQzaLOcFNcFOaPjaQBaPlaRQaRRaRSaRUaSLaSMaThaTmaTpaUeaUfaUCaPpaQNaQOaQPaPsaQQaPuaPuaQRaPuaPuaPAaPAaQSaQTaPAaPAaPAaQUbiLbbeaILaaaaaaaaaaaaaaaaaaaaaaPCaKnaQVaQWaQXaQYaQZaRaaRbaRcaRdaReaPCaaaaaaaaaaaaaaaaaaaaaaILaVNaIPbjDaJdaGaaRjaTTaTUcwZcwZaWHbiSbcWbdaaSaaSaaSacvaaVoaSBaRoaRpaRqaRraRtaRuaSuaJiaOHaRvaVsbiNbiNbiOaRxaOHaHTaRyaFbaRzaRzxNJaONaRAaRAaRBaFbaFbaRCaFbaCwaRDaGNaOTaREaRFaOUaOVaCwaCwaCwaYNcDRcEibbkbblbcgaMyaRGaRHaMzaMzaMzaMzaMzaMzaRIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRMatJjXDbanaaaaaaaaaaaaaaaaweaXgawgaRKaRLaRLaRLaRLaRLaRLaRLaRLaRKaRLaRLazaaxBaPmaXbaVOaVPaXbaVTcFPaWNaXbaXyaPjaPjaPjaQBaPlaZfaQDaQDaQDaQDaQDaQDaQDaQDaQDaQDaUIaPpaRVaQOaQOaPsaQQaPuaRWaRXaRXaRYaPAaSdaTxaSbaTAaUNaSebbVbiLbbeaILaaaaaaaaaaaaaPCaPCaPCaPCaSgaShaTHaSjaSkaSiaSmaSnaTHaSlaSvaPCaPCaPCaPCaaaaaaaaaaaaaILaVNaIPbjDaJdcuYcxiaKoaKoaKoaKokkzcvFaSfaSqaKoaKoaKogmfaVoaSBaSCaSDaSEaSFaSGaSHaSBaSIaSJaSKbiQaZubbdbiRaSNaOHaHTaHUaFbaMpaMpaOMaONaRAaRAaMpaSOaSPaMpaSQaCwaKSaSRaSSaREaREaSTaSUaSVaCwbchbcicEhcErbckaZObdjbdmbdnbdobwDbetaRkaRkaRkaRkbofaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajXDbclcEeatJatJatJatJauSauSauSauSayUayUayUayUayUayUayUayUauSauSauSaAgaTbaTcaTcaTdaTcaTcaTcaTcaTeaTcaTcaPjaQAaTfaTgaPlbcyaQDaTiaTjaTkaTlaTkaTnaToaQDaQDaVMaPpaTqaTraTsaPsaQQaPuaTtaTuaTvaTwaPAaUOaTyaSbaTzaUPaSebbVaPBbbeaILaILaTBaPCaPCaPCaTCaTDaTEaTFaTGaTHaTIaTJaTHaTKaTHaTLaTMaTNaTOaTPaTQaPCaPCaPCaTBaILaILbDlaLzbbfaJdaSraKocxeaNqcxfcwAcxgaNqaSscwAcxgcuVcwIgmfaVoaSBaSBaStaTXaTYaTZaUaaSBaUbaUcaUdbiQbejbelbiRaUgaUhaHTaHUaFbaUiaUiaOMaONaUjaMpaMpaUkkkGaUlaUmaCwaUnaUoaUpaREaREaUqaUraFfaCwbewaQjaQhcEubckaZPbfVbfWaQhaQichSaMzaMzaMzaMzaMzaMzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaatJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayUcEAayWaUtaTcaUuaUvaUwaUxaUwaUyaUzaUwaTcjflaRTaUAaUBaPlbfaaUDaUEaUFaUGaUHaUGaUJaUKaULaUMaUIaPpaPpaPpaPpaPsaQQaPuaPuaPuaPuaPuaPAaUQbgfbhQbhRbhVaSebbVaIPbbeaBuaIRaURaUSaZQaPCaUUaUXaUWaUXaUYaUXaUZaVaaVbaVcaVdaVeaVfaVdaVgaSoaViaPCaZRaUSaVkaVlaCTaVNaIPaxxaJdaSwvaYcwDcwXnMVwLlcwHhdlaSzwLlcwHnniwSVgmfaJixtNaSBbgZbiVaVpaVpaUaaWLaJiaVraUdbiWbiXbiXbiYaUgaVtaHTaVuaFbaFbaFbaOMaONaVvaVwaMpaVxaVybqzaVzaCwaFfaSRaSSaREaREaVAaSUaVBaCwbpgaQjaQhcEubqBbjhbsdbfWaQhaQichSaMzaZNaZOaZPaMzbseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/hyperstation/code/modules/economy/account.dm b/hyperstation/code/modules/economy/account.dm
index 23827cc8..e2f3d0cb 100644
--- a/hyperstation/code/modules/economy/account.dm
+++ b/hyperstation/code/modules/economy/account.dm
@@ -1,8 +1,10 @@
#define DUMPTIME 3000
/datum/bank_account
- var/account_holder = "Rusty Venture"
+ var/account_holder = "Some pleb"
var/account_balance = 0
+ var/account_pin = 0
+ var/account_dna = ""
var/datum/job/account_job
var/list/bank_cards = list()
var/add_to_accounts = TRUE
diff --git a/hyperstation/code/obj/economy.dm b/hyperstation/code/obj/economy.dm
index 500e9069..87224590 100644
--- a/hyperstation/code/obj/economy.dm
+++ b/hyperstation/code/obj/economy.dm
@@ -18,14 +18,14 @@
light_power = 0
light_range = 7
light_color = "#ff3232"
+ var/pin = 0
/obj/machinery/atm/ui_interact(mob/user)
. = ..()
var/dat = {""}
- dat += ""
dat += ""
- dat += "ATM
"
- dat += "
Welcome to Hyper Station 13's Automated Bank Teller Service."
+ dat += "
ATM
"
+ dat += "Welcome to Hyper Station 13's Automated Teller Service."
dat += "
"
if(!held_card)
dat += "
Welcome, please insert your ID to continue."
@@ -34,15 +34,22 @@
var/obj/item/card/id/idcard = held_card
if(idcard.registered_account)
dat += "
Account ID: ([idcard.registered_account.account_id])"
+ else
+ dat += "
Error, this account number does not exsist, please contact your local administration."
+
+ if(!idcard.registered_account.account_pin || pin == idcard.registered_account.account_pin)
dat += "
Balance: $[idcard.registered_account.account_balance]"
dat += "
"
dat += "Withdraw"
- dat += "Change Pin"
+ dat += "Change Pin"
dat += "Account Settings"
dat += "Eject"
else
- dat += "
Error, You don't seem to have a bank account with us."
- dat += "
"
+ dat += "
Please enter your bank pin to continue!"
+ dat += "
"
+ dat += "[pin ? pin : "----"]
"
+
+ dat += "
"
dat += ""
@@ -61,7 +68,9 @@
return
held_card = idcard
user = idcard.registered_name
- playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
+ pin = ""
+ playsound(src, 'sound/machines/button.ogg', 50, FALSE)
+ src.ui_interact(usr)
/obj/machinery/atm/Topic(href, href_list)
. = ..()
@@ -71,23 +80,59 @@
if(href_list["card"])
if(held_card)
if(usr.CanReach(src))
+ playsound(src, 'sound/machines/button.ogg', 50, FALSE)
if(usr.put_in_hands(held_card))
to_chat(usr, "You take the ID out of the slot.")
held_card = null
- user = ""
else
to_chat(usr, "The machine drops the ID onto the floor!")
held_card = null
- user = ""
+ pin = ""
+ user = ""
+
+ if(href_list["pin"])
+ playsound(src, get_sfx("terminal_type"), 25, 1)
+ var/pininput = input(user, "Input pin", "Pin Number") as num|null
+ if(pininput)
+ if(pininput > 9999 || pininput < 1000)
+ to_chat(usr, "[src.name] buzzes, you must input a 4 digit number between 1000 and 9999.")
+ return
+ pin = max(min( round(text2num(pininput)), 9999),1000) //4 numbers or less.
+ var/obj/item/card/id/idcard = held_card
+ if(pin == idcard.registered_account.account_pin)
+ to_chat(usr, "[src.name] beeps, accepting the pin.")
+ else
+ to_chat(usr, "[src.name] buzzes, denying the pin.")
+
+ if(href_list["changepin"])
+ playsound(src, get_sfx("terminal_type"), 25, 1)
+ var/pinchange = input(user, "Input pin", "Pin Number") as num|null
+ if(pinchange > 9999 || pinchange < 1000)
+ to_chat(usr, "[src.name], you must have a 4 digit number for a pin and be between 1000 and 9999.")
+ return
+ if(pinchange)
+ var/pinchange2 = input(user, "Confirm pin", "Confirm pin") as num|null //time to confirm!
+ if(pinchange == pinchange2)
+ var/obj/item/card/id/idcard = held_card
+ idcard.registered_account.account_pin = pinchange
+ to_chat(usr, "[src.name] beeps, your pin has been changed.")
+ else
+ to_chat(usr, "[src.name] buzzes, your pins did not match!")
+ pin = ""
+
if(href_list["withdraw"])
+ playsound(src, get_sfx("terminal_type"), 25, 1)
if(held_card)
var/obj/item/card/id/idcard = held_card
if(idcard.registered_account)
- var/ammount = input(user, "Choose ammount", "Withdraw") as num|null
- if(ammount)
- ammount = max(min( round(text2num(ammount)), idcard.registered_account.account_balance),0)
-
-
+ var/amount = input(user, "Choose amount", "Withdraw") as num|null
+ if(amount)
+ amount = max(min( round(text2num(amount)), idcard.registered_account.account_balance),0) //make sure they aint taking out more then what they have
+ to_chat(usr, "The machine prints out [amount] credits.")
+ idcard.registered_account.account_balance = (idcard.registered_account.account_balance-amount) //subtract the amount they took out.
+ var/obj/item/stack/credits/C = new /obj/item/stack/credits/(loc)
+ C.amount = amount
+ C.update_desc()
src.ui_interact(usr)
@@ -110,6 +155,6 @@
resistance_flags = FLAMMABLE
var/value = 1
-/obj/item/stack/spacecash/proc/update_desc()
+/obj/item/stack/credits/proc/update_desc()
var/total_worth = amount*value
desc = "Legal tender, It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
\ No newline at end of file
From 39a5e2863ea7e7cc2e997fb18b8cd8ea582bacb6 Mon Sep 17 00:00:00 2001
From: QuoteFox <49098813+quotefox@users.noreply.github.com>
Date: Fri, 29 Jan 2021 01:08:23 +0000
Subject: [PATCH 3/5] final touches to part 1
final touches to part 1
---
code/controllers/subsystem/job.dm | 3 +-
code/game/machinery/computer/card.dm | 23 +++++++++
code/modules/jobs/job_types/job.dm | 4 +-
hyperstation/code/__DEFINES/economy.dm | 31 +-----------
.../code/controllers/subsystem/economy.dm | 7 ---
hyperstation/code/modules/economy/account.dm | 1 +
hyperstation/code/obj/economy.dm | 47 +++++++++++-------
hyperstation/icons/obj/economy.dmi | Bin 780 -> 817 bytes
8 files changed, 58 insertions(+), 58 deletions(-)
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index 494a6568..9048d77b 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -444,7 +444,8 @@ SUBSYSTEM_DEF(job)
if(ishuman(H))
var/mob/living/carbon/human/wageslave = H
- to_chat(M, "Your account ID is [wageslave.account_id].")
+ to_chat(M, "Your account ID is [wageslave.account_id]")
+ to_chat(M, "You do not have a pin, can set your pin at a ATM.")
H.add_memory("Your account ID is [wageslave.account_id].")
if(job && H)
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index 99f8035e..99b7c577 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -19,6 +19,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
var/mode = 0
var/printing = null
var/target_dept = 0 //Which department this computer has access to. 0=all departments
+ var/datum/bank_account/account/selectedbank
//Cooldown for closing positions in seconds
//if set to -1: No cooldown... probably a bad idea
@@ -250,6 +251,16 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
dat += ""
dat += ""
+ // Bank management
+ else if(mode == 4)
+ dat += {"Return
+
| Bank Accounts | |
"}
+ for(var/datum/bank_account/account in SSeconomy.bank_accounts)
+ dat += {"[account.account_holder] - [account.account_id]"}
+ dat += "Assign to ID | "
+ dat += ""
+
+ dat += "
"
else
var/list/header = list()
var/scan_name = inserted_scan_id ? html_encode(inserted_scan_id.name) : "--------"
@@ -266,6 +277,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
Target: Remove [target_name] ||
Confirm Identity: Remove [scan_name]
Access Crew Manifest
+ Access Bank Accounts
[!target_dept ? "Job Management
" : ""]
Log Out"}
@@ -443,6 +455,17 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if(access_allowed == 1)
inserted_modify_id.access += access_type
playsound(src, "terminal_type", 50, FALSE)
+ if ("bankassign")
+ if (authenticated == 2)
+ var/datum/bank_account/account = locate(href_list["assign_bank"])
+ if (inserted_modify_id && account)
+ playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
+ to_chat(usr, "Bank account: [account.account_id], has been assigned to the ID.")
+ inserted_modify_id.registered_account = account
+ else
+ to_chat(usr, "There is no id inserted to modify.")
+
+
if ("assign")
if (authenticated == 2)
var/t1 = href_list["assign_target"]
diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm
index 5390f9f9..30d3d1ed 100644
--- a/code/modules/jobs/job_types/job.dm
+++ b/code/modules/jobs/job_types/job.dm
@@ -94,7 +94,9 @@
var/datum/bank_account/bank_account = new(H.real_name, src)
bank_account.account_holder = H.real_name
bank_account.account_job = src
- bank_account.account_id = rand(111111,999999)
+ bank_account.account_id = rand(111111,999999) //give account ID!
+ //bank_account.account_pin = rand(1000,9999) //give random pin!
+ bank_account.account_balance = 50
H.account_id = bank_account.account_id
if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions))
diff --git a/hyperstation/code/__DEFINES/economy.dm b/hyperstation/code/__DEFINES/economy.dm
index 428ea3a0..7cb6fc6a 100644
--- a/hyperstation/code/__DEFINES/economy.dm
+++ b/hyperstation/code/__DEFINES/economy.dm
@@ -1,33 +1,4 @@
-#define STARTING_PAYCHECKS 5
-
-#define PAYCHECK_ASSISTANT 25
-#define PAYCHECK_MINIMAL 75
-#define PAYCHECK_EASY 125
-#define PAYCHECK_MEDIUM 175
-#define PAYCHECK_HARD 200
-#define PAYCHECK_COMMAND 250
-
-#define MAX_GRANT_CIV 2500
-#define MAX_GRANT_ENG 3000
-#define MAX_GRANT_SCI 5000
-#define MAX_GRANT_SECMEDSRV 3000
-
-#define ACCOUNT_CIV "CIV"
-#define ACCOUNT_CIV_NAME "Civil Budget"
-#define ACCOUNT_ENG "ENG"
-#define ACCOUNT_ENG_NAME "Engineering Budget"
-#define ACCOUNT_SCI "SCI"
-#define ACCOUNT_SCI_NAME "Scientific Budget"
-#define ACCOUNT_MED "MED"
-#define ACCOUNT_MED_NAME "Medical Budget"
-#define ACCOUNT_SRV "SRV"
-#define ACCOUNT_SRV_NAME "Service Budget"
-#define ACCOUNT_CAR "CAR"
-#define ACCOUNT_CAR_NAME "Cargo Budget"
-#define ACCOUNT_SEC "SEC"
-#define ACCOUNT_SEC_NAME "Defense Budget"
-
-#define NO_FREEBIES "commies go home"
+#define STARTING_PAYCHECK 50
//ID bank account support defines.
#define ID_NO_BANK_ACCOUNT 0
diff --git a/hyperstation/code/controllers/subsystem/economy.dm b/hyperstation/code/controllers/subsystem/economy.dm
index 73e51dc2..b69e29c8 100644
--- a/hyperstation/code/controllers/subsystem/economy.dm
+++ b/hyperstation/code/controllers/subsystem/economy.dm
@@ -5,12 +5,5 @@ SUBSYSTEM_DEF(economy)
runlevels = RUNLEVEL_GAME
var/roundstart_paychecks = 5
var/budget_pool = 35000
- var/list/department_accounts = list(ACCOUNT_CIV = ACCOUNT_CIV_NAME,
- ACCOUNT_ENG = ACCOUNT_ENG_NAME,
- ACCOUNT_SCI = ACCOUNT_SCI_NAME,
- ACCOUNT_MED = ACCOUNT_MED_NAME,
- ACCOUNT_SRV = ACCOUNT_SRV_NAME,
- ACCOUNT_CAR = ACCOUNT_CAR_NAME,
- ACCOUNT_SEC = ACCOUNT_SEC_NAME)
var/list/generated_accounts = list()
var/list/bank_accounts = list() //List of normal accounts (not department accounts)
\ No newline at end of file
diff --git a/hyperstation/code/modules/economy/account.dm b/hyperstation/code/modules/economy/account.dm
index e2f3d0cb..039ab448 100644
--- a/hyperstation/code/modules/economy/account.dm
+++ b/hyperstation/code/modules/economy/account.dm
@@ -3,6 +3,7 @@
/datum/bank_account
var/account_holder = "Some pleb"
var/account_balance = 0
+ var/account_offstation_balance = 0
var/account_pin = 0
var/account_dna = ""
var/datum/job/account_job
diff --git a/hyperstation/code/obj/economy.dm b/hyperstation/code/obj/economy.dm
index 87224590..d5e4deb3 100644
--- a/hyperstation/code/obj/economy.dm
+++ b/hyperstation/code/obj/economy.dm
@@ -37,17 +37,19 @@
else
dat += "Error, this account number does not exsist, please contact your local administration."
- if(!idcard.registered_account.account_pin || pin == idcard.registered_account.account_pin)
- dat += "
Balance: $[idcard.registered_account.account_balance]"
- dat += "
"
- dat += "Withdraw"
- dat += "Change Pin"
- dat += "Account Settings"
- dat += "Eject"
- else
- dat += "
Please enter your bank pin to continue!"
- dat += "
"
- dat += "[pin ? pin : "----"]
"
+ if(idcard.registered_account)
+ if(!idcard.registered_account.account_pin || pin == idcard.registered_account.account_pin)
+ dat += "
Balance: $[idcard.registered_account.account_balance]"
+ //dat += "
Offstation Balance: "
+ dat += "
"
+ dat += "Withdraw"
+ dat += "Change Pin"
+ //dat += "Account Settings"
+ dat += "Eject"
+ else
+ dat += "
Please enter your bank pin to continue!"
+ dat += "
"
+ dat += "[pin ? pin : "----"]
"
dat += "
"
@@ -61,7 +63,7 @@
popup.open()
/obj/machinery/atm/attackby(obj/item/I, mob/living/user)
- if(istype(I, /obj/item/card))
+ if(istype(I, /obj/item/card)) //input id!
if(!held_card)
var/obj/item/card/id/idcard = I
if(!user.transferItemToLoc(I, src)) //check if you can put it in
@@ -72,6 +74,15 @@
playsound(src, 'sound/machines/button.ogg', 50, FALSE)
src.ui_interact(usr)
+ if(istype(I, /obj/item/stack/credits)) //feed money back into the machine! dont need a pin to donate stuff.
+ if(held_card)
+ var/obj/item/stack/credits/cred = I
+ var/obj/item/card/id/idcard = held_card
+ idcard.registered_account.account_balance = (idcard.registered_account.account_balance+cred.amount)
+ to_chat(usr, "You insert [cred] into the ATM.")
+ src.ui_interact(usr)
+ del(cred)
+
/obj/machinery/atm/Topic(href, href_list)
. = ..()
if(..())
@@ -126,13 +137,14 @@
var/obj/item/card/id/idcard = held_card
if(idcard.registered_account)
var/amount = input(user, "Choose amount", "Withdraw") as num|null
- if(amount)
+ if(amount>0)
amount = max(min( round(text2num(amount)), idcard.registered_account.account_balance),0) //make sure they aint taking out more then what they have
to_chat(usr, "The machine prints out [amount] credits.")
idcard.registered_account.account_balance = (idcard.registered_account.account_balance-amount) //subtract the amount they took out.
var/obj/item/stack/credits/C = new /obj/item/stack/credits/(loc)
C.amount = amount
- C.update_desc()
+ if(usr.put_in_hands(C))
+ to_chat(usr, "You take [C] out of the ATM.")
src.ui_interact(usr)
@@ -143,10 +155,11 @@
/obj/item/stack/credits
name = "credits"
singular_name = "credit"
+ desc = "Legal tender, a bundle of shiny metalic looking notes."
icon = 'hyperstation/icons/obj/economy.dmi'
icon_state = "cash"
amount = 1
- max_amount = 100
+ max_amount = 99999999
throwforce = 0
throw_speed = 2
throw_range = 2
@@ -154,7 +167,3 @@
full_w_class = WEIGHT_CLASS_TINY
resistance_flags = FLAMMABLE
var/value = 1
-
-/obj/item/stack/credits/proc/update_desc()
- var/total_worth = amount*value
- desc = "Legal tender, It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
\ No newline at end of file
diff --git a/hyperstation/icons/obj/economy.dmi b/hyperstation/icons/obj/economy.dmi
index 6e6dec04dc64dd1425a4adc471ce201e05cc14fc..7f2db7b114dfb6260c995ae5a92a8f8ac9e62c3d 100644
GIT binary patch
delta 647
zcmV;20(kw52C)WBiBL{Q4GJ0x0000DNk~Le0000$0000$2m=5B0G+pi>;M1&giuUW
zMF0Q*WMpKsv$MayzuVi}pP!#iUPW7eOkZDLbFNu&zfWV3PmxDIHo?Kc-rnBr*cRpG
z<;JTa!=@hp|NphMwUN5I0RQ~Jq8rkVhEV_j00DGTPE!Ct=GbNc004%O*L#0&$fc~{
z>gNJ>6ab>2DrPlpMd|cVSovneix~Moi!rp64y#XwOA`M_qYBmqt)mo=|24b>%^@>Vh%l
z-!riDO5oqIV#@%q>={`3S`dG7pGVyHBM`6{(67J`VJXl?zI_7cwP4)Vl_yVmPtn}u`LioeHZOmTLZN*^{`$6Y
zf#1S
z{yP}h^WVk5_J8190p}z6?_^;4KX9&KH2+B~g_K7Hc{)izoERz?&wnCWk}y^j&{+Ac
z+LOA0E&s_e5wNN%got;Q!TDSb4ea?(Dh36xLR_w*EY*85G{D}(iV1M2#PuSK6=3-f
zEvO2rN(iY8vWI6z)S!D002ovPDHLkV1f)XEA0RP
delta 610
zcmV-o0-gP_28;$riBL{Q4GJ0x0000DNk~Le0001B0000$2m=5B0MhD$JOBUynNUnr
zMF0Q*WMpKsv$MayzuVi}pP!#iUPW`RSzCTgUteF5O+Qgi1y5rFWU`8E!I*pP*cLAY
zFnJ?-jxLXjJ&d}HeZ!_6ax-#~N0PmncZxiVx{7|rt0B0Fd$omlz@i(O{LIe)0004W
zQchCXwf6r057&gqXtI$GkoHe=aE4*dvfm~|LL3e|fDwy+
z;CbGFU-fTLJ%KGxz&8T6Jb}On*z&w!cuEk6e5FA@FABmijKsx%f5X6!Ilj`Mmlp-m
z0bax>7;)4Iqhmp%H@>eHhz4knhhji6r3`5BRe<3eC=<#=o}mNxR?Kfe{w=;Qb7}Xyn`)I
zATFIZ=JCU`6|$)D4bui>Tv+`qCGM4AvzJb<3)oXbM
wKELWy)H(olQ1k}VG61*uLAMTYI2^yoHwsW)oa4N+e*gdg07*qoM6N<$f`Ri4H~;_u
From 6b9a6163d31a332f9719940128d6016b1f87df83 Mon Sep 17 00:00:00 2001
From: QuoteFox <49098813+quotefox@users.noreply.github.com>
Date: Fri, 29 Jan 2021 01:11:58 +0000
Subject: [PATCH 4/5] posting their new pin to chat so they can refer to it
later if they forget.
posting their new pin to chat so they can refer to it later if they forget.
---
hyperstation/code/obj/economy.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hyperstation/code/obj/economy.dm b/hyperstation/code/obj/economy.dm
index d5e4deb3..388fccf5 100644
--- a/hyperstation/code/obj/economy.dm
+++ b/hyperstation/code/obj/economy.dm
@@ -126,7 +126,7 @@
if(pinchange == pinchange2)
var/obj/item/card/id/idcard = held_card
idcard.registered_account.account_pin = pinchange
- to_chat(usr, "[src.name] beeps, your pin has been changed.")
+ to_chat(usr, "[src.name] beeps, your pin has been changed to [pinchange]!.")
else
to_chat(usr, "[src.name] buzzes, your pins did not match!")
pin = ""
From cb19bc751df4e4028036e0b9cfaddf2606bfa185 Mon Sep 17 00:00:00 2001
From: QuoteFox <49098813+quotefox@users.noreply.github.com>
Date: Fri, 29 Jan 2021 01:18:04 +0000
Subject: [PATCH 5/5] conflictions
conflictions
---
hyperstation/icons/obj/genitals/belly.dmi | Bin 945 -> 1141 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/hyperstation/icons/obj/genitals/belly.dmi b/hyperstation/icons/obj/genitals/belly.dmi
index 1e6798de2585aab6a23b26eff4d1914dd5ae2815..2b4409d0c2f91cadca1aba1352b62228ab9af0b1 100644
GIT binary patch
delta 1051
zcmV+$1myd%2lWV$Bvw37OjJexW;6e0GupJW{QUg+`T6YZ?9$TG)TW}&&dyL3t>lMxtg
zE7tn{?|Sxtmn1L)F`j>!uBt1$-5-~K0S1S$5yRH7Ej|Gl3=dQ62IwZGMntAtMIQ&1
zP)c+-94rDk=a%~Te5v`*6>%A7^job2@(e
zFaLeiy1*RZADC-KOG5QA`Jdy@atNk`ATjrUIgIV6AbcDCLO3t|Ck|udA%-A-VhAEH
zEna#!yR$Y#O0y>)WeO!rywVBDQ5W4ZQ^)di<rq$!0~S}Oz+()a8%KK
z4&qQb*GQ%w*@Iu6=_@w7R~FR+4IrlFI$yC}lOqZBNF!MyXhjv!b>Lus4Wk=6psKGp
zGB*JF4t|7$4E^QrD!xNacO)fI)=!XL4LKq$XmIO%{B
z3L{?}mn#6A%Fm)ez6XbYRGISo0QTt$p)M0n_X}O`AcXMur*%MNsJh${I8{vpG@xEu
zcLt{l+)h(x3}GuMmpxAZ3zsXScl#jAC>18!A0*LUiVXnnxG*pPkfr*07vOW6>VTZ4
zZ%;GY#?~0+5#smrDEGi=gsfOSxYw>KfMs}tnn>ASCQ8ZE=l#Kd>Vj(loKbk)%X{PN
z7$-f@b|X%6Ou9iEkash6sd5tag-p*ooCz?B4oDWD{)N;M;OM67H?p@PYMt3z0nK3B
zKNB_qaKUW={H6m(R%r{caftpq02fJflDE!*oSCc=ZoKKl93C~kwb1tBe~&%(*kg|z
z&bmJs*ROtnd4Kpi48XWQd;nmV_aE@L0ow`QzCUaSuzi2{K*?d3HQW97*kh0N@ehbV
V8q<7qeChxI002ovPDHLkV1i}d^yUBn
delta 853
zcmV-b1FHP>2(br{BvUz1OjJd{z`)wHvi$t~z`(%L($e|)`P8PO&d$zZVPW_8_w4NK
z^78WH;^Ou7_1D+e;Nal3iDk>n%fP_EguV3300001bW%=J06^y0W&i*Hhmm?nf2p7-
zwJbBWJia_Nu_!e$Cnr5WGcUa)KO;3KM~RCwC9|j)WE2-?T2W$dDu``}(3=EQREbNK
zvVyCh3)o2jrt&TkHvTaU0007$Nkl1
zMNB8{%pn|uFc&q1A-@vh*b+7E?JDCgNl8eag(|76dqm(e`5AgaR9`E
zD9liKL=Vpd3520a!0ZHkhVlb+45WvbXW%rIJgqSRQeXq}j57qP5ZHJjKvH7_{Cec?
z=Od&;3_N`IAnQ~ZAVu0vab~q6fsKn0y8uxmh)diLk^eprIQZrQsszhIy8&931A&7V
zB|dz4*Q(WsI}xlgocBtX|AoM^FIfiV;~XvxCs_o<%_MMBQ5%kf=MeoR0g=2R97d%ldUz;jpfYd`PTy?c
zo0Gj}!NXS%7*rT2%l7N{_*=&qTZZ`J&G*grdGNS*WPn`nJ2Jo{f1(uhUiK;G$&>nd
zkQ)+N^L;CUO!xZueF;OfW69MW+u#fL22}qJCfu5zU1U#4|^Dg7PADm_Y
z`?91li&$P@mm+BGciA36y9h&Pg4DI)2tjubx)Qvg?-{(PbH^Ox{g5F;h74IH-~Vf1
z-XB^C^#75p`@Q_53#8x7zPd5VZUMvOl!j=Tp!I7vA13a3C1>|GYn3
fKrm#;kjv!