From 4c6f1b622baf63f9e8cc7d70cdb48b38256274b6 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 17 Apr 2020 07:48:11 +0200 Subject: [PATCH 01/34] Porting Goofconomy & co. --- code/__DEFINES/economy.dm | 35 ++ code/__DEFINES/maps.dm | 2 + code/__DEFINES/preferences.dm | 3 +- code/__DEFINES/subsystems.dm | 1 + code/__HELPERS/game.dm | 13 + code/__HELPERS/level_traits.dm | 2 + code/__HELPERS/unsorted.dm | 23 +- code/_globalvars/lists/flavor_misc.dm | 2 + .../configuration/entries/game_options.dm | 2 + code/controllers/subsystem/economy.dm | 139 +++++++ code/controllers/subsystem/job.dm | 4 + code/controllers/subsystem/mapping.dm | 5 +- code/controllers/subsystem/shuttle.dm | 6 - code/game/atoms.dm | 3 + code/game/machinery/Sleeper.dm | 13 +- code/game/machinery/_machinery.dm | 34 ++ code/game/machinery/autolathe.dm | 2 + code/game/machinery/bank_machine.dm | 38 +- code/game/machinery/cloning.dm | 31 +- code/game/machinery/computer/card.dm | 3 +- code/game/machinery/computer/cloning.dm | 14 +- .../game/machinery/computer/communications.dm | 11 +- .../machinery/doors/airlock_electronics.dm | 1 + code/game/machinery/doors/firedoor.dm | 1 + code/game/machinery/doppler_array.dm | 6 +- code/game/machinery/firealarm.dm | 1 + code/game/objects/items/RCD.dm | 1 + code/game/objects/items/RSF.dm | 27 +- code/game/objects/items/cards_ids.dm | 220 ++++++++++- code/game/objects/items/cigs_lighters.dm | 3 +- .../circuitboards/machine_circuitboards.dm | 15 +- code/game/objects/items/crab17.dm | 229 ++++++++++++ code/game/objects/items/credit_holochip.dm | 107 ++++++ code/game/objects/items/devices/flashlight.dm | 2 + code/game/objects/items/devices/scanners.dm | 2 + .../objects/items/devices/sensor_device.dm | 1 + code/game/objects/items/kitchen.dm | 3 + code/game/objects/items/pinpointer.dm | 1 + code/game/objects/items/stacks/cash.dm | 2 +- code/game/objects/items/stacks/medical.dm | 1 + code/game/objects/items/storage/belt.dm | 2 + code/game/objects/items/storage/boxes.dm | 1 + code/game/objects/items/storage/fancy.dm | 2 + code/game/objects/items/storage/wallets.dm | 17 +- code/game/objects/items/tanks/watertank.dm | 1 + code/game/objects/items/weaponry.dm | 2 + .../crates_lockers/crates/secure.dm | 41 ++- .../objects/structures/ghost_role_spawners.dm | 2 +- code/modules/admin/secrets.dm | 12 + .../antagonists/blob/blob/blob_report.dm | 11 + .../antagonists/traitor/syndicate_contract.dm | 24 +- .../atmospherics/machinery/airalarm.dm | 1 + .../components/unary_devices/cryo.dm | 9 +- code/modules/awaymissions/zlevel.dm | 7 +- code/modules/cargo/bounties/science.dm | 2 +- code/modules/cargo/bounty.dm | 24 +- code/modules/cargo/bounty_console.dm | 4 +- code/modules/cargo/console.dm | 27 +- code/modules/cargo/exports.dm | 1 + code/modules/cargo/expressconsole.dm | 35 +- code/modules/cargo/order.dm | 11 +- code/modules/cargo/packs.dm | 12 +- code/modules/client/preferences.dm | 5 + code/modules/client/preferences_toggles.dm | 10 + code/modules/clothing/ears/_ears.dm | 2 + code/modules/clothing/gloves/color.dm | 2 + code/modules/clothing/gloves/miscellaneous.dm | 1 + code/modules/clothing/head/beanie.dm | 1 + code/modules/clothing/head/helmet.dm | 1 + code/modules/clothing/head/misc.dm | 1 + code/modules/clothing/neck/_neck.dm | 36 ++ code/modules/clothing/outfits/vr.dm | 15 +- code/modules/clothing/shoes/colour.dm | 1 + code/modules/clothing/shoes/miscellaneous.dm | 2 + code/modules/clothing/suits/armor.dm | 1 + code/modules/clothing/under/miscellaneous.dm | 1 + code/modules/clothing/under/pants.dm | 2 + code/modules/clothing/under/skirt_dress.dm | 4 + code/modules/economy/_economy.dm | 2 + code/modules/economy/account.dm | 118 ++++++ code/modules/economy/paystand.dm | 138 +++++++ code/modules/events/pirates.dm | 42 ++- code/modules/events/shuttle_loan.dm | 4 +- code/modules/food_and_drinks/drinks/drinks.dm | 10 +- .../food_and_drinks/drinks/drinks/bottle.dm | 13 +- .../drinks/drinks/drinkingglass.dm | 2 + .../food_and_drinks/food/snacks_vend.dm | 3 + code/modules/jobs/job_types/_job.dm | 19 +- code/modules/jobs/job_types/assistant.dm | 2 + .../jobs/job_types/atmospheric_technician.dm | 2 + code/modules/jobs/job_types/bartender.dm | 2 + code/modules/jobs/job_types/botanist.dm | 2 + code/modules/jobs/job_types/captain.dm | 4 + .../jobs/job_types/cargo_technician.dm | 2 + code/modules/jobs/job_types/chaplain.dm | 2 + code/modules/jobs/job_types/chemist.dm | 2 + code/modules/jobs/job_types/chief_engineer.dm | 2 + .../jobs/job_types/chief_medical_officer.dm | 2 + code/modules/jobs/job_types/clown.dm | 2 + code/modules/jobs/job_types/cook.dm | 2 + code/modules/jobs/job_types/curator.dm | 2 + code/modules/jobs/job_types/detective.dm | 2 + code/modules/jobs/job_types/geneticist.dm | 2 + .../jobs/job_types/head_of_personnel.dm | 2 + .../jobs/job_types/head_of_security.dm | 2 + code/modules/jobs/job_types/janitor.dm | 2 + code/modules/jobs/job_types/lawyer.dm | 2 + code/modules/jobs/job_types/medical_doctor.dm | 2 + code/modules/jobs/job_types/mime.dm | 2 + code/modules/jobs/job_types/paramedic.dm | 2 + code/modules/jobs/job_types/quartermaster.dm | 2 + .../jobs/job_types/research_director.dm | 2 + code/modules/jobs/job_types/roboticist.dm | 2 + code/modules/jobs/job_types/scientist.dm | 2 + .../jobs/job_types/security_officer.dm | 2 + code/modules/jobs/job_types/shaft_miner.dm | 2 + .../jobs/job_types/station_engineer.dm | 2 + code/modules/jobs/job_types/virologist.dm | 2 + code/modules/jobs/job_types/warden.dm | 3 + code/modules/mapping/map_template.dm | 8 +- code/modules/mining/money_bag.dm | 2 +- .../mob/living/carbon/human/human_defines.dm | 3 +- .../mob/living/carbon/human/human_helpers.dm | 11 + .../mob/living/silicon/robot/robot_modules.dm | 2 +- .../modular_computers/hardware/hard_drive.dm | 1 + .../modular_computers/laptop_vendor.dm | 10 +- code/modules/photography/camera/camera.dm | 1 + code/modules/power/apc.dm | 3 +- code/modules/power/cable.dm | 5 +- code/modules/power/singularity/collector.dm | 6 +- code/modules/power/tesla/coil.dm | 6 + .../reagents/reagent_containers/dropper.dm | 1 + .../reagents/reagent_containers/glass.dm | 1 + .../reagents/reagent_containers/hypospray.dm | 2 + .../reagents/reagent_containers/syringes.dm | 1 + .../autolathe_designs_tcomms_and_misc.dm | 16 + .../machine_designs_all_misc.dm | 8 + code/modules/research/techweb/_techweb.dm | 8 + code/modules/research/techweb/all_nodes.dm | 2 +- .../ruins/spaceruin_code/listeningstation.dm | 2 +- code/modules/shuttle/supply.dm | 37 +- .../modules/spells/spell_types/devil_boons.dm | 16 +- .../uplink/uplink_items/uplink_badass.dm | 1 + .../uplink/uplink_items/uplink_bundles.dm | 1 + .../uplink/uplink_items/uplink_devices.dm | 10 + code/modules/vending/_vending.dm | 344 ++++++++++++++---- code/modules/vending/assist.dm | 3 + code/modules/vending/autodrobe.dm | 7 + code/modules/vending/boozeomat.dm | 5 +- code/modules/vending/cartridge.dm | 3 + code/modules/vending/cigarette.dm | 3 + code/modules/vending/clothesmate.dm | 6 + code/modules/vending/coffee.dm | 3 + code/modules/vending/cola.dm | 3 + code/modules/vending/drinnerware.dm | 3 + code/modules/vending/engineering.dm | 3 + code/modules/vending/engivend.dm | 3 + code/modules/vending/games.dm | 3 + code/modules/vending/kinkmate.dm | 3 + code/modules/vending/liberation.dm | 3 + code/modules/vending/liberation_toy.dm | 3 + code/modules/vending/magivend.dm | 3 + code/modules/vending/medical.dm | 3 + code/modules/vending/medical_wall.dm | 3 + code/modules/vending/megaseed.dm | 3 + code/modules/vending/nutrimax.dm | 3 + code/modules/vending/plasmaresearch.dm | 3 + code/modules/vending/robotics.dm | 2 + code/modules/vending/security.dm | 3 + code/modules/vending/snack.dm | 72 +--- code/modules/vending/sovietsoda.dm | 3 + code/modules/vending/sovietvend.dm | 3 + code/modules/vending/sustenance.dm | 3 + code/modules/vending/toys.dm | 3 + code/modules/vending/wardrobes.dm | 26 ++ code/modules/vending/youtool.dm | 3 + config/game_options.txt | 3 + config/vr_config.txt | 13 + icons/obj/crates.dmi | Bin 22621 -> 23582 bytes icons/obj/device.dmi | Bin 53345 -> 53137 bytes icons/obj/economy.dmi | Bin 13420 -> 16128 bytes icons/obj/items_and_weapons.dmi | Bin 134455 -> 135077 bytes icons/obj/money_machine.dmi | Bin 0 -> 4676 bytes icons/obj/money_machine_64.dmi | Bin 0 -> 2307 bytes icons/obj/vending_restock.dmi | Bin 2380 -> 2460 bytes sound/items/dump_it.ogg | Bin 0 -> 190123 bytes tgstation.dme | 7 + tgui-next/packages/tgui/interfaces/Cargo.js | 19 +- tgui-next/packages/tgui/interfaces/Vending.js | 64 +++- tgui-next/packages/tgui/public/tgui.bundle.js | 4 +- 190 files changed, 2213 insertions(+), 353 deletions(-) create mode 100644 code/__DEFINES/economy.dm create mode 100644 code/controllers/subsystem/economy.dm create mode 100644 code/game/objects/items/crab17.dm create mode 100644 code/game/objects/items/credit_holochip.dm create mode 100644 code/modules/economy/_economy.dm create mode 100644 code/modules/economy/account.dm create mode 100644 code/modules/economy/paystand.dm create mode 100644 config/vr_config.txt create mode 100644 icons/obj/money_machine.dmi create mode 100644 icons/obj/money_machine_64.dmi create mode 100644 sound/items/dump_it.ogg diff --git a/code/__DEFINES/economy.dm b/code/__DEFINES/economy.dm new file mode 100644 index 0000000000..bc9534f527 --- /dev/null +++ b/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 diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 73e900226e..8b529859ac 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -38,6 +38,7 @@ require only minor tweaks. #define ZTRAIT_SPACE_RUINS "Space Ruins" #define ZTRAIT_LAVA_RUINS "Lava Ruins" #define ZTRAIT_ISOLATED_RUINS "Isolated Ruins" //Placing ruins on z levels with this trait will use turf reservation instead of usual placement. +#define ZTRAIT_VIRTUAL_REALITY "Virtual Reality" // number - bombcap is multiplied by this before being applied to bombs #define ZTRAIT_BOMBCAP_MULTIPLIER "Bombcap Multiplier" @@ -71,6 +72,7 @@ require only minor tweaks. ZTRAIT_BOMBCAP_MULTIPLIER = 5, \ ZTRAIT_BASETURF = /turf/open/lava/smooth/lava_land_surface) #define ZTRAITS_REEBE list(ZTRAIT_REEBE = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 0.5) +#define ZTRAITS_VR list(ZTRAIT_VIRTUAL_REALITY = TRUE, ZTRAIT_AWAY = TRUE) #define DL_NAME "name" #define DL_TRAITS "traits" diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 06926317ee..84eed5483a 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -30,8 +30,9 @@ #define CHAT_GHOSTPDA (1<<8) #define CHAT_GHOSTRADIO (1<<9) #define CHAT_LOOC (1<<10) +#define CHAT_BANKCARD (1<<11) -#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC) +#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC|CHAT_BANKCARD) #define PARALLAX_INSANE -1 //for show offs #define PARALLAX_HIGH 0 //default. diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 5aa0301bf6..104e69706c 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -65,6 +65,7 @@ #define INIT_ORDER_INSTRUMENTS 53 #define INIT_ORDER_MAPPING 50 #define INIT_ORDER_NETWORKS 45 +#define INIT_ORDER_ECONOMY 40 #define INIT_ORDER_ATOMS 30 #define INIT_ORDER_LANGUAGE 25 #define INIT_ORDER_MACHINES 20 diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 170d93c31f..679f89f4d2 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -506,6 +506,19 @@ return winset(C, "mainwindow", "flash=5") +//Recursively checks if an item is inside a given type, even through layers of storage. Returns the atom if it finds it. +/proc/recursive_loc_check(atom/movable/target, type) + var/atom/A = target + if(istype(A, type)) + return A + + while(!istype(A.loc, type)) + if(!A.loc) + return + A = A.loc + + return A.loc + /proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank) if(!SSticker.IsRoundInProgress() || QDELETED(character)) return diff --git a/code/__HELPERS/level_traits.dm b/code/__HELPERS/level_traits.dm index 3e6e88c8fa..c903314da0 100644 --- a/code/__HELPERS/level_traits.dm +++ b/code/__HELPERS/level_traits.dm @@ -12,3 +12,5 @@ #define is_reserved_level(z) SSmapping.level_trait(z, ZTRAIT_RESERVED) #define is_away_level(z) SSmapping.level_trait(z, ZTRAIT_AWAY) + +#define is_vr_level(z) SSmapping.level_trait(z, ZTRAIT_VIRTUAL_REALITY) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index afa858afb7..5b91afca4c 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1025,6 +1025,27 @@ B --><-- A /proc/get_random_station_turf() return safepick(get_area_turfs(pick(GLOB.the_station_areas))) +/proc/get_safe_random_station_turf() //excludes dense turfs (like walls) and areas that have valid_territory set to FALSE + for (var/i in 1 to 5) + var/list/L = get_area_turfs(pick(GLOB.the_station_areas)) + var/turf/target + while (L.len && !target) + var/I = rand(1, L.len) + var/turf/T = L[I] + var/area/X = get_area(T) + if(!T.density && X.valid_territory) + var/clear = TRUE + for(var/obj/O in T) + if(O.density) + clear = FALSE + break + if(clear) + target = T + if (!target) + L.Cut(I,I+1) + if (target) + return target + /proc/get_closest_atom(type, list, source) var/closest_atom var/closest_distance @@ -1568,7 +1589,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) /proc/blood_sucking_checks(var/mob/living/carbon/target, check_neck, check_blood) //Bypass this if the target isnt carbon. if(!iscarbon(target)) - return TRUE + return TRUE if(check_neck) if(istype(target.get_item_by_slot(SLOT_NECK), /obj/item/clothing/neck/garlic_necklace)) return FALSE diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 968995e81d..8430e690cc 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -221,3 +221,5 @@ GLOBAL_LIST_INIT(numbers_as_words, world.file2list("strings/numbers_as_words.txt GLOBAL_LIST_INIT(station_numerals, greek_letters + phonetic_alphabet + numbers_as_words + generate_number_strings()) GLOBAL_LIST_INIT(admiral_messages, list("Do you know how expensive these stations are?","Stop wasting my time.","I was sleeping, thanks a lot.","Stand and fight you cowards!","You knew the risks coming in.","Stop being paranoid.","Whatever's broken just build a new one.","No.", "null","Error: No comment given.", "It's a good day to die!")) + +GLOBAL_LIST_INIT(redacted_strings, list("\[REDACTED\]", "\[CLASSIFIED\]", "\[ARCHIVED\]", "\[EXPLETIVE DELETED\]", "\[EXPUNGED\]", "\[INFORMATION ABOVE YOUR SECURITY CLEARANCE\]", "\[MOVE ALONG CITIZEN\]", "\[NOTHING TO SEE HERE\]", "\[ACCESS DENIED\]")) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index f11093cba7..63e3f489bd 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -74,6 +74,8 @@ /datum/config_entry/flag/disable_peaceborg +/datum/config_entry/flag/economy //money money money money money money money money money money money money + /datum/config_entry/number/minimum_secborg_alert //Minimum alert level for secborgs to be chosen. config_entry_value = 3 diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm new file mode 100644 index 0000000000..078d122aa6 --- /dev/null +++ b/code/controllers/subsystem/economy.dm @@ -0,0 +1,139 @@ +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/full_ancap = FALSE // Enables extra money charges for things that normally would be free, such as sleepers/cryo/cloning. + //Take care when enabling, as players will NOT respond well if the economy is set up for low cash flows. + var/alive_humans_bounty = 100 + var/crew_safety_bounty = 1500 + var/monster_bounty = 150 + var/mood_bounty = 100 + var/techweb_bounty = 250 + var/slime_bounty = list("grey" = 10, + // tier 1 + "orange" = 100, + "metal" = 100, + "blue" = 100, + "purple" = 100, + // tier 2 + "dark purple" = 500, + "dark blue" = 500, + "green" = 500, + "silver" = 500, + "gold" = 500, + "yellow" = 500, + "red" = 500, + "pink" = 500, + // tier 3 + "cerulean" = 750, + "sepia" = 750, + "bluespace" = 750, + "pyrite" = 750, + "light pink" = 750, + "oil" = 750, + "adamantine" = 750, + // tier 4 + "rainbow" = 1000) + var/list/bank_accounts = list() //List of normal accounts (not department accounts) + var/list/dep_cards = list() + +/datum/controller/subsystem/economy/Initialize(timeofday) + var/budget_to_hand_out = round(budget_pool / department_accounts.len) + for(var/A in department_accounts) + new /datum/bank_account/department(A, budget_to_hand_out) + return ..() + +/datum/controller/subsystem/economy/fire(resumed = 0) + eng_payout() // Payout based on nothing. What will replace it? Surplus power, powered APC's, air alarms? Who knows. + sci_payout() // Payout based on slimes. + secmedsrv_payout() // Payout based on crew safety, health, and mood. + civ_payout() // Payout based on ??? Profit + car_payout() // Cargo's natural gain in the cash moneys. + for(var/A in bank_accounts) + var/datum/bank_account/B = A + B.payday(1) + + +/datum/controller/subsystem/economy/proc/get_dep_account(dep_id) + for(var/datum/bank_account/department/D in generated_accounts) + if(D.department_id == dep_id) + return D + +/datum/controller/subsystem/economy/proc/eng_payout() + var/engineering_cash = 3000 + var/datum/bank_account/D = get_dep_account(ACCOUNT_ENG) + if(D) + D.adjust_money(engineering_cash) + + +/datum/controller/subsystem/economy/proc/car_payout() + var/cargo_cash = 500 + var/datum/bank_account/D = get_dep_account(ACCOUNT_CAR) + if(D) + D.adjust_money(cargo_cash) + +/datum/controller/subsystem/economy/proc/secmedsrv_payout() + var/crew + var/alive_crew + var/dead_monsters + var/cash_to_grant + for(var/mob/m in GLOB.mob_list) + if(isnewplayer(m)) + continue + if(m.mind) + if(isbrain(m) || iscameramob(m)) + continue + if(ishuman(m)) + var/mob/living/carbon/human/H = m + crew++ + if(H.stat != DEAD) + alive_crew++ + var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) + var/medical_cash = (H.health / H.maxHealth) * alive_humans_bounty + if(mood) + var/datum/bank_account/D = get_dep_account(ACCOUNT_SRV) + if(D) + var/mood_dosh = (mood.mood_level / 9) * mood_bounty + D.adjust_money(mood_dosh) + medical_cash *= (mood.sanity / 100) + + var/datum/bank_account/D = get_dep_account(ACCOUNT_MED) + if(D) + D.adjust_money(medical_cash) + if(ishostile(m)) + var/mob/living/simple_animal/hostile/H = m + if(H.stat == DEAD && (H.z in SSmapping.levels_by_trait(ZTRAIT_STATION))) + dead_monsters++ + CHECK_TICK + var/living_ratio = alive_crew / crew + cash_to_grant = (crew_safety_bounty * living_ratio) + (monster_bounty * dead_monsters) + var/datum/bank_account/D = get_dep_account(ACCOUNT_SEC) + if(D) + D.adjust_money(min(cash_to_grant, MAX_GRANT_SECMEDSRV)) + +/datum/controller/subsystem/economy/proc/sci_payout() + var/science_bounty = 0 + for(var/mob/living/simple_animal/slime/S in GLOB.mob_list) + if(S.stat == DEAD) + continue + science_bounty += slime_bounty[S.colour] + var/datum/bank_account/D = get_dep_account(ACCOUNT_SCI) + if(D) + D.adjust_money(min(science_bounty, MAX_GRANT_SCI)) + +/datum/controller/subsystem/economy/proc/civ_payout() + var/civ_cash = (rand(1,5) * 500) + var/datum/bank_account/D = get_dep_account(ACCOUNT_CIV) + if(D) + D.adjust_money(min(civ_cash, MAX_GRANT_CIV)) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 91d0db85d1..7fc3f576de 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -477,6 +477,10 @@ SUBSYSTEM_DEF(job) to_chat(M, "[job.custom_spawn_text]") 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/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index f13d5a2779..5a1f17e8fb 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -438,9 +438,12 @@ GLOBAL_LIST_EMPTY(the_station_areas) else if(answer in GLOB.potentialRandomZlevels) away_name = answer + var/list/traits = list(ZTRAIT_AWAY = TRUE) + if(answer in GLOB.potentialRandomVRlevels) + traits[ZTRAIT_VIRTUAL_REALITY] = TRUE to_chat(usr,"Loading [away_name]...") var/datum/map_template/template = new(away_name, "Away Mission") - away_level = template.load_new_z() + away_level = template.load_new_z(traits) else return diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index e4a3ff1f9a..b9ec1d647f 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -35,10 +35,8 @@ SUBSYSTEM_DEF(shuttle) //supply shuttle stuff var/obj/docking_port/mobile/supply/supply var/ordernum = 1 //order number given to next order - var/points = 5000 //number of trade-points we have var/centcom_message = "" //Remarks from CentCom on how well you checked the last order. var/list/discoveredPlants = list() //Typepaths for unusual plants we've already sent CentCom, associated with their potencies - var/passive_supply_points_per_minute = 125 var/list/supply_packs = list() var/list/shoppinglist = list() @@ -113,9 +111,6 @@ SUBSYSTEM_DEF(shuttle) qdel(T, force=TRUE) CheckAutoEvac() - if(!(times_fired % CEILING(600/wait, 1))) - points += passive_supply_points_per_minute - var/esETA = emergency?.getModeStr() emergency_shuttle_stat_text = "[esETA? "[esETA] [emergency.getTimerStr()]" : ""]" @@ -559,7 +554,6 @@ SUBSYSTEM_DEF(shuttle) centcom_message = SSshuttle.centcom_message ordernum = SSshuttle.ordernum - points = SSshuttle.points emergencyNoEscape = SSshuttle.emergencyNoEscape emergencyCallAmount = SSshuttle.emergencyCallAmount shuttle_purchased = SSshuttle.shuttle_purchased diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 44a891e24a..48518f69c8 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -32,6 +32,9 @@ var/list/filter_data //For handling persistent filters + var/custom_price + var/custom_premium_price + var/datum/component/orbiter/orbiters var/rad_flags = NONE // Will move to flags_1 when i can be arsed to diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 42904383bb..3f2edd7174 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -26,6 +26,8 @@ var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: antitoxin -> morphine var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning var/enter_message = "You feel cool air surround you. You go numb as your senses turn inward." + payment_department = ACCOUNT_MED + fair_market_price = 5 /obj/machinery/sleeper/Initialize() . = ..() @@ -205,6 +207,13 @@ ui = new(user, src, ui_key, "sleeper", name, 550, 700, master_ui, state) ui.open() +/obj/machinery/sleeper/process() + ..() + check_nap_violations() + +/obj/machinery/sleeper/nap_violation(mob/violator) + open_machine() + /obj/machinery/sleeper/ui_data() var/list/data = list() var/chemical_list = list() @@ -250,7 +259,7 @@ data["occupant"]["fireLoss"] = mob_occupant.getFireLoss() data["occupant"]["cloneLoss"] = mob_occupant.getCloneLoss() data["occupant"]["brainLoss"] = mob_occupant.getOrganLoss(ORGAN_SLOT_BRAIN) - + if(mob_occupant.reagents.reagent_list.len) for(var/datum/reagent/R in mob_occupant.reagents.reagent_list) chemical_list += list(list("name" = R.name, "volume" = R.volume)) @@ -290,7 +299,7 @@ if(..()) return var/mob/living/mob_occupant = occupant - + check_nap_violations() switch(action) if("door") if(state_open) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 995d11acb7..93121a0753 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -121,6 +121,10 @@ Class Procs: var/interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE + var/fair_market_price = 69 + var/market_verb = "Customer" + var/payment_department = ACCOUNT_ENG + /obj/machinery/Initialize() if(!armor) armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) @@ -248,6 +252,36 @@ Class Procs: return FALSE return TRUE +/obj/machinery/proc/check_nap_violations() + if(!SSeconomy.full_ancap) + return TRUE + if(occupant && !state_open) + if(ishuman(occupant)) + var/mob/living/carbon/human/H = occupant + var/obj/item/card/id/I = H.get_idcard() + if(I) + var/datum/bank_account/insurance = I.registered_account + if(!insurance) + say("[market_verb] NAP Violation: No bank account found.") + nap_violation() + return FALSE + else + if(!insurance.adjust_money(-fair_market_price)) + say("[market_verb] NAP Violation: Unable to pay.") + nap_violation() + return FALSE + var/datum/bank_account/D = SSeconomy.get_dep_account(payment_department) + if(D) + D.adjust_money(fair_market_price) + else + say("[market_verb] NAP Violation: No ID card found.") + nap_violation() + return FALSE + return TRUE + +/obj/machinery/proc/nap_violation(mob/violator) + return + //////////////////////////////////////////////////////////////////////////////////////////// //Return a non FALSE value to interrupt attack_hand propagation to subtypes. diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 6fa7fa30c0..e12e4c6cf5 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -32,6 +32,8 @@ var/list/datum/design/matching_designs var/selected_category var/screen = 1 + var/base_price = 25 + var/hacked_price = 50 var/list/categories = list( "Tools", diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index 41867a8520..2b683f16a3 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -8,6 +8,7 @@ var/obj/item/radio/radio var/radio_channel = RADIO_CHANNEL_COMMON var/minimum_time_between_warnings = 400 + var/syphoning_credits = 0 /obj/machinery/computer/bank_machine/Initialize() . = ..() @@ -25,9 +26,14 @@ if(istype(I, /obj/item/stack/spacecash)) var/obj/item/stack/spacecash/C = I value = C.value * C.amount + else if(istype(I, /obj/item/holochip)) + var/obj/item/holochip/H = I + value = H.credits if(value) - SSshuttle.points += value - to_chat(user, "You deposit [I]. The station now has [SSshuttle.points] credits.") + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + D.adjust_money(value) + to_chat(user, "You deposit [I]. The Cargo Budget is now [D.account_balance] cr.") qdel(I) return return ..() @@ -38,14 +44,16 @@ if(siphoning) if (stat & (BROKEN|NOPOWER)) say("Insufficient power. Halting siphon.") - siphoning = FALSE - if(SSshuttle.points < 200) - say("Station funds depleted. Halting siphon.") - siphoning = FALSE - else - new /obj/item/stack/spacecash/c200(drop_location()) // will autostack - playsound(src.loc, 'sound/items/poster_being_created.ogg', 100, 1) - SSshuttle.points -= 200 + end_syphon() + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(!D.has_money(200)) + say("Cargo budget depleted. Halting siphon.") + end_syphon() + return + + playsound(src.loc, 'sound/items/poster_being_created.ogg', 100, 1) + syphoning_credits += 200 + D.adjust_money(-200) if(next_warning < world.time && prob(15)) var/area/A = get_area(loc) var/message = "Unauthorized credit withdrawal underway in [A.map_name]!!" @@ -61,7 +69,8 @@ /obj/machinery/computer/bank_machine/ui_data(mob/user) var/list/data = list() - data["current_balance"] = SSshuttle.points + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + data["current_balance"] = D.account_balance data["siphoning"] = siphoning data["station_name"] = station_name() @@ -78,5 +87,10 @@ . = TRUE if("halt") say("Station credit withdrawal halted.") - siphoning = FALSE + end_syphon() . = TRUE + +/obj/machinery/computer/bank_machine/proc/end_syphon() + siphoning = FALSE + new /obj/item/holochip(drop_location(), syphoning_credits) //get the loot + syphoning_credits = 0 diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index bc0fec68ba..ecea8c74c3 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -37,6 +37,9 @@ var/list/unattached_flesh var/flesh_number = 0 + var/datum/bank_account/current_insurance + fair_market_price = 5 // He nodded, because he knew I was right. Then he swiped his credit card to pay me for arresting him. + payment_department = ACCOUNT_MED /obj/machinery/clonepod/Initialize() . = ..() @@ -131,7 +134,7 @@ return examine(user) //Start growing a human clone in the pod! -/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, mutation_index, mindref, datum/species/mrace, list/features, factions, list/quirks) +/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, mutation_index, mindref, datum/species/mrace, list/features, factions, list/quirks, datum/bank_account/insurance) if(panel_open) return FALSE if(mess || attempting) @@ -161,7 +164,7 @@ mess = TRUE update_icon() return FALSE - + current_insurance = insurance attempting = TRUE //One at a time!! countdown.start() @@ -224,15 +227,29 @@ connected_message("Clone Ejected: Loss of power.") else if(mob_occupant && (mob_occupant.loc == src)) - if((mob_occupant.stat == DEAD) || (mob_occupant.suiciding) || mob_occupant.hellbound) //Autoeject corpses and suiciding dudes. - connected_message("Clone Rejected: Deceased.") + if(SSeconomy.full_ancap) + if(!current_insurance) + go_out() + connected_message("Clone Ejected: No bank account.") + if(internal_radio) + SPEAK("The cloning of [mob_occupant.real_name] has been terminated due to no bank account to draw payment from.") + else if(!current_insurance.adjust_money(-fair_market_price)) + go_out() + connected_message("Clone Ejected: Out of Money.") + if(internal_radio) + SPEAK("The cloning of [mob_occupant.real_name] has been ended prematurely due to being unable to pay.") + else + var/datum/bank_account/D = SSeconomy.get_dep_account(payment_department) + if(D) + D.adjust_money(fair_market_price) + if(mob_occupant && (mob_occupant.stat == DEAD) || (mob_occupant.suiciding) || mob_occupant.hellbound) //Autoeject corpses and suiciding dudes. connected_message("Clone Rejected: Deceased.") if(internal_radio) SPEAK("The cloning has been \ aborted due to unrecoverable tissue failure.") go_out() mob_occupant.copy_from_prefs_vr() - else if(mob_occupant.cloneloss > (100 - heal_level)) + else if(mob_occupant && mob_occupant.cloneloss > (100 - heal_level)) mob_occupant.Unconscious(80) var/dmg_mult = CONFIG_GET(number/damage_multiplier) //Slowly get that clone healed and finished. @@ -259,7 +276,7 @@ use_power(7500) //This might need tweaking. - else if((mob_occupant.cloneloss <= (100 - heal_level))) + else if((mob_occupant && mob_occupant.cloneloss <= (100 - heal_level))) connected_message("Cloning Process Complete.") if(internal_radio) SPEAK("The cloning cycle is complete.") @@ -368,7 +385,7 @@ if(!mob_occupant) return - + current_insurance = null REMOVE_TRAIT(mob_occupant, TRAIT_STABLEHEART, CLONING_POD_TRAIT) REMOVE_TRAIT(mob_occupant, TRAIT_MUTATION_STASIS, CLONING_POD_TRAIT) REMOVE_TRAIT(mob_occupant, TRAIT_STABLELIVER, CLONING_POD_TRAIT) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index b0e80b63d2..74cceacd12 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -467,7 +467,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) to_chat(usr, "No log exists for this job.") updateUsrDialog() return - + if(inserted_modify_id.registered_account) + inserted_modify_id.registered_account.account_job = jobdatum // this is a terrible idea and people will grief but sure whatever inserted_modify_id.access = ( istype(src, /obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : jobdatum.get_access() ) if (inserted_modify_id) inserted_modify_id.assignment = t1 diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 07cc252b87..981a5643a8 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -73,7 +73,7 @@ if(pod.occupant) continue //how though? - if(pod.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["features"], R.fields["factions"], R.fields["quirks"])) + if(pod.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["features"], R.fields["factions"], R.fields["quirks"], R.fields["bank_account"])) temp = "[R.fields["name"]] => Cloning cycle in progress..." records -= R @@ -415,7 +415,7 @@ else if(pod.occupant) temp = "Cloning cycle already in progress." playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) - else if(pod.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["features"], C.fields["factions"], C.fields["quirks"])) + else if(pod.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["features"], C.fields["factions"], C.fields["quirks"], C.fields["bank_account"])) temp = "[C.fields["name"]] => Cloning cycle in progress..." playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) records.Remove(C) @@ -441,9 +441,13 @@ /obj/machinery/computer/cloning/proc/scan_occupant(occupant) var/mob/living/mob_occupant = get_mob_or_brainmob(occupant) var/datum/dna/dna + var/datum/bank_account/has_bank_account if(ishuman(mob_occupant)) var/mob/living/carbon/C = mob_occupant dna = C.has_dna() + var/obj/item/card/id/I = C.get_idcard() + if(I) + has_bank_account = I.registered_account if(isbrain(mob_occupant)) var/mob/living/brain/B = mob_occupant dna = B.stored_dna @@ -468,7 +472,10 @@ scantemp = "Subject already in database." playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) return - + if(SSeconomy.full_ancap && !has_bank_account) + scantemp = "Subject is either missing an ID card with a bank account on it, or does not have an account to begin with. Please ensure the ID card is on the body before attempting to scan." + playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) + return var/datum/data/record/R = new() if(dna.species) // We store the instance rather than the path, because some @@ -490,6 +497,7 @@ R.fields["features"] = dna.features R.fields["factions"] = mob_occupant.faction R.fields["quirks"] = list() + R.fields["bank_account"] = has_bank_account for(var/V in mob_occupant.roundstart_quirks) var/datum/quirk/T = V R.fields["quirks"][T.type] = T.clone_data() diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 4c3d85a162..4cef487baf 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -163,11 +163,15 @@ else if(!S.prerequisites_met()) to_chat(usr, "You have not met the requirements for purchasing this shuttle.") else - if(SSshuttle.points >= S.credit_cost) + var/points_to_check + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + points_to_check = D.account_balance + if(points_to_check >= S.credit_cost) var/obj/machinery/shuttle_manipulator/M = locate() in GLOB.machines if(M) SSshuttle.shuttle_purchased = TRUE - SSshuttle.points -= S.credit_cost + D.adjust_money(-S.credit_cost) minor_announce("[usr.real_name] has purchased [S.name] for [S.credit_cost] credits." , "Shuttle Purchase") message_admins("[ADMIN_LOOKUPFLW(usr)] purchased [S.name].") SSblackbox.record_feedback("text", "shuttle_purchase", 1, "[S.name]") @@ -576,7 +580,8 @@ dat += "
Lift access restrictions on maintenance and external airlocks?
\[ OK | Cancel \]" if(STATE_PURCHASE) - dat += "Budget: [SSshuttle.points] Credits.
" + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + dat += "Budget: [D.account_balance] Credits.
" dat += "
" dat += "Caution: Purchasing dangerous shuttles may lead to mutiny and/or death.
" dat += "
" diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 7b90715f2b..fed54f55f8 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -1,6 +1,7 @@ /obj/item/electronics/airlock name = "airlock electronics" req_access = list(ACCESS_MAINT_TUNNELS) + custom_price = 50 var/list/accesses = list() var/one_access = 0 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 1b83bb4b96..4533d18ae4 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -260,6 +260,7 @@ /obj/item/electronics/firelock name = "firelock circuitry" + custom_price = 50 desc = "A circuit board used in construction of firelocks." icon_state = "mainboard" diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index db806ef3ac..a9c411c634 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -174,9 +174,11 @@ GLOBAL_LIST_EMPTY(doppler_arrays) else linked_techweb.largest_bomb_value = TECHWEB_BOMB_POINTCAP point_gain = 1000 - + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_SCI) + if(D) + D.adjust_money(point_gain) linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, point_gain) - say("Gained [point_gain] points from explosion dataset.") + say("Explosion details and mixture analyzed and sold to the highest bidder for [point_gain] cr, with a reward of [point_gain] points.") else //you've made smaller bombs say("Data already captured. Aborting.") diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index f4f308c490..16ad36d0e1 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -2,6 +2,7 @@ /obj/item/electronics/firealarm name = "fire alarm electronics" + custom_price = 50 desc = "A fire alarm circuit. Can handle heat levels up to 40 degrees celsius." /obj/item/wallframe/firealarm diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index d248556a9c..565030b13a 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -154,6 +154,7 @@ RLD icon_state = "rcd" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + custom_price = 1700 max_matter = 160 item_flags = NO_MAT_REDEMPTION | NOBLUDGEON has_ammobar = TRUE diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index ba0766de00..35843c1030 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -41,24 +41,21 @@ RSF /obj/item/rsf/attack_self(mob/user) playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) switch(mode) + if(5) + mode = 1 + to_chat(user, "Changed dispensing mode to 'Drinking Glass'") if(1) mode = 2 - to_chat(user, "Changed dispensing mode to 'Drinking Glass'") + to_chat(user, "Changed dispensing mode to 'Paper'") if(2) mode = 3 - to_chat(user, "Changed dispensing mode to 'Paper'") + to_chat(user, "Changed dispensing mode to 'Pen'") if(3) mode = 4 - to_chat(user, "Changed dispensing mode to 'Pen'") + to_chat(user, "Changed dispensing mode to 'Dice Pack'") if(4) mode = 5 - to_chat(user, "Changed dispensing mode to 'Dice Pack'") - if(5) - mode = 6 to_chat(user, "Changed dispensing mode to 'Cigarette'") - if(6) - mode = 1 - to_chat(user, "Changed dispensing mode to 'Dosh'") // Change mode /obj/item/rsf/afterattack(atom/A, mob/user, proximity) @@ -81,26 +78,22 @@ RSF playsound(src.loc, 'sound/machines/click.ogg', 10, 1) switch(mode) if(1) - to_chat(user, "Dispensing Dosh...") - new /obj/item/stack/spacecash/c10(T) - use_matter(200, user) - if(2) to_chat(user, "Dispensing Drinking Glass...") new /obj/item/reagent_containers/food/drinks/drinkingglass(T) use_matter(20, user) - if(3) + if(2) to_chat(user, "Dispensing Paper Sheet...") new /obj/item/paper(T) use_matter(10, user) - if(4) + if(3) to_chat(user, "Dispensing Pen...") new /obj/item/pen(T) use_matter(50, user) - if(5) + if(4) to_chat(user, "Dispensing Dice Pack...") new /obj/item/storage/pill_bottle/dice(T) use_matter(200, user) - if(6) + if(5) to_chat(user, "Dispensing Cigarette...") new /obj/item/clothing/mask/cigarette(T) use_matter(10, user) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 20e0b09d26..bcc4697d0b 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -6,8 +6,6 @@ * FINGERPRINT CARD */ - - /* * DATA CARDS - Used for the IC data card reader */ @@ -173,13 +171,19 @@ var/registered_name = null // The name registered_name on the card var/assignment = null var/access_txt // mapping aid - - + var/bank_support = ID_FREE_BANK_ACCOUNT + var/datum/bank_account/registered_account + var/obj/machinery/paystand/my_store /obj/item/card/id/Initialize(mapload) . = ..() if(mapload && access_txt) access = text2access(access_txt) + var/turf/T = get_turf(src) + if(bank_support == ID_FREE_BANK_ACCOUNT && is_vr_level(T.z)) //economy is quite exploitable on VR in so many ways. + bank_support = ID_NO_BANK_ACCOUNT + else if(bank_support == ID_LOCKED_BANK_ACCOUNT) + registered_account = new /datum/bank_account/remote/non_transferable(pick(GLOB.redacted_strings)) /obj/item/card/id/vv_edit_var(var_name, var_value) . = ..() @@ -193,12 +197,150 @@ user.visible_message("[user] shows you: [icon2html(src, viewers(user))] [src.name].", \ "You show \the [src.name].") add_fingerprint(user) + +/obj/item/card/id/attackby(obj/item/W, mob/user, params) + if(!bank_support) + return ..() + if(istype(W, /obj/item/holochip)) + insert_money(W, user) + else if(istype(W, /obj/item/stack/spacecash) || istype(W, /obj/item/coin)) + insert_money(W, user, TRUE) + else if(istype(W, /obj/item/storage/bag/money)) + var/obj/item/storage/bag/money/money_bag = W + var/list/money_contained = money_bag.contents + var/money_added = mass_insert_money(money_contained, user) + if (money_added) + to_chat(user, "You stuff the contents into the card! They disappear in a puff of bluespace smoke, adding [money_added] worth of credits to the linked account.") + else + return ..() + +/obj/item/card/id/proc/insert_money(obj/item/I, mob/user, physical_currency) + var/cash_money = I.get_item_credit_value() + if(!cash_money) + to_chat(user, "[I] doesn't seem to be worth anything!") return + if(!registered_account) + to_chat(user, "[src] doesn't have a linked account to deposit [I] into!") + return + + registered_account.adjust_money(cash_money) + if(physical_currency) + to_chat(user, "You stuff [I] into [src]. It disappears in a small puff of bluespace smoke, adding [cash_money] credits to the linked account.") + else + to_chat(user, "You insert [I] into [src], adding [cash_money] credits to the linked account.") + + to_chat(user, "The linked account now reports a balance of [registered_account.account_balance] cr.") + qdel(I) + +/obj/item/card/id/proc/mass_insert_money(list/money, mob/user) + if (!money || !money.len) + return FALSE + + var/total = 0 + + for (var/obj/item/physical_money in money) + var/cash_money = physical_money.get_item_credit_value() + + total += cash_money + + registered_account.adjust_money(cash_money) + + QDEL_LIST(money) + + return total + +/obj/item/card/id/proc/alt_click_can_use_id(mob/living/user) + if(!isliving(user)) + return + if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return + + return TRUE + +// Returns true if new account was set. +/obj/item/card/id/proc/set_new_account(mob/living/user) + if(bank_support != ID_FREE_BANK_ACCOUNT) + to_chat(user, "This ID has no modular banking support whatsover, must be an older model...") + return + . = FALSE + var/datum/bank_account/old_account = registered_account + + var/new_bank_id = input(user, "Enter your account ID number.", "Account Reclamation", 111111) as num | null + + if (isnull(new_bank_id)) + return + + if(!alt_click_can_use_id(user)) + return + if(!new_bank_id || new_bank_id < 111111 || new_bank_id > 999999) + to_chat(user, "The account ID number needs to be between 111111 and 999999.") + return + if (registered_account && registered_account.account_id == new_bank_id) + to_chat(user, "The account ID was already assigned to this card.") + return + + for(var/A in SSeconomy.bank_accounts) + var/datum/bank_account/B = A + if(B.account_id == new_bank_id) + if (old_account) + old_account.bank_cards -= src + + B.bank_cards += src + registered_account = B + to_chat(user, "The provided account has been linked to this ID card.") + + return TRUE + + to_chat(user, "The account ID number provided is invalid.") + return + +/obj/item/card/id/AltClick(mob/living/user) + . = ..() + if(!bank_support || !alt_click_can_use_id(user)) + return + + if(!registered_account) + set_new_account(user) + return + + if (world.time < registered_account.withdrawDelay) + registered_account.bank_card_talk("ERROR: UNABLE TO LOGIN DUE TO SCHEDULED MAINTENANCE. MAINTENANCE IS SCHEDULED TO COMPLETE IN [(registered_account.withdrawDelay - world.time)/10] SECONDS.", TRUE) + return + + var/amount_to_remove = FLOOR(input(user, "How much do you want to withdraw? Current Balance: [registered_account.account_balance]", "Withdraw Funds", 5) as num|null, 1) + + if(!amount_to_remove || amount_to_remove < 0) + return + if(!alt_click_can_use_id(user)) + return + if(registered_account.adjust_money(-amount_to_remove)) + var/obj/item/holochip/holochip = new (user.drop_location(), amount_to_remove) + user.put_in_hands(holochip) + to_chat(user, "You withdraw [amount_to_remove] credits into a holochip.") + return + else + var/difference = amount_to_remove - registered_account.account_balance + registered_account.bank_card_talk("ERROR: The linked account requires [difference] more credit\s to perform that withdrawal.", TRUE) + /obj/item/card/id/examine(mob/user) . = ..() if(mining_points) . += "There's [mining_points] mining equipment redemption point\s loaded onto this card." + if(!bank_support || (bank_support == ID_LOCKED_BANK_ACCOUNT && !registered_account)) + . += "This ID has no banking support whatsover, must be an older model..." + else if(registered_account) + . += "The account linked to the ID belongs to '[registered_account.account_holder]' and reports a balance of [registered_account.account_balance] cr." + if(registered_account.account_job) + var/datum/bank_account/D = SSeconomy.get_dep_account(registered_account.account_job.paycheck_department) + if(D) + . += "The [D.account_holder] reports a balance of [D.account_balance] cr." + . += "Alt-Click the ID to pull money from the linked account in the form of holochips." + . += "You can insert credits into the linked account by pressing holochips, cash, or coins against the ID." + if(registered_account.account_holder == user.real_name) + . += "If you lose this ID card, you can reclaim your account by Alt-Clicking a blank ID card while holding it and entering your account ID number." + else + . += "There is no registered account linked to this card. Alt-Click to add one." /obj/item/card/id/GetAccess() return access @@ -278,7 +420,11 @@ update_label("John Doe", "Clowny") else return ..() - var/popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset") + var/popup_input + if(bank_support == ID_FREE_BANK_ACCOUNT) + popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset", "Change Account ID") + else + popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset") if(user.incapacitated()) return if(popup_input == "Forge/Reset" && !forged) @@ -302,6 +448,18 @@ update_label("John Doe", "Clowny") forged = TRUE to_chat(user, "You successfully forge the ID card.") log_game("[key_name(user)] has forged \the [initial(name)] with name \"[registered_name]\" and occupation \"[assignment]\".") + + // First time use automatically sets the account id to the user. + if (first_use && !registered_account) + if(ishuman(user)) + var/mob/living/carbon/human/accountowner = user + + for(var/bank_account in SSeconomy.bank_accounts) + var/datum/bank_account/account = bank_account + if(account.account_id == accountowner.account_id) + account.bank_cards += src + registered_account = account + to_chat(user, "Your account number has been automatically assigned.") return else if (popup_input == "Forge/Reset" && forged) registered_name = initial(registered_name) @@ -311,6 +469,9 @@ update_label("John Doe", "Clowny") forged = FALSE to_chat(user, "You successfully reset the ID card.") return + else if (popup_input == "Change Account ID") + set_new_account(user) + return return ..() /obj/item/card/id/syndicate/anyone @@ -327,6 +488,15 @@ update_label("John Doe", "Clowny") assignment = "Syndicate Overlord" access = list(ACCESS_SYNDICATE) +/obj/item/card/id/no_banking + bank_support = ID_NO_BANK_ACCOUNT + +/obj/item/card/id/locked_banking + bank_support = ID_LOCKED_BANK_ACCOUNT + +/obj/item/card/id/syndicate/locked_banking + bank_support = ID_LOCKED_BANK_ACCOUNT + /obj/item/card/id/captains_spare name = "captain's spare ID" desc = "The spare ID of the High Lord himself." @@ -396,6 +566,17 @@ update_label("John Doe", "Clowny") access = get_all_accesses()+get_ert_access("sec")-ACCESS_CHANGE_IDS . = ..() +/obj/item/card/id/debug + name = "\improper Debug ID" + desc = "A debug ID card. Has ALL the all access, you really shouldn't have this." + icon_state = "centcom" + assignment = "Jannie" + +/obj/item/card/id/debug/Initialize() + access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access() + registered_account = SSeconomy.get_dep_account(ACCOUNT_CAR) + . = ..() + /obj/item/card/id/prisoner name = "prisoner ID card" desc = "You are a number, you are not a free man." @@ -514,6 +695,34 @@ update_label("John Doe", "Clowny") desc = "A special ID card that allows access to APC terminals." access = list(ACCESS_ENGINE_EQUIP) +/obj/item/card/id/departmental_budget + name = "departmental card (FUCK)" + desc = "Provides access to the departmental budget." + var/department_ID = ACCOUNT_CIV + var/department_name = ACCOUNT_CIV_NAME + +/obj/item/card/id/departmental_budget/Initialize() + . = ..() + var/datum/bank_account/B = SSeconomy.get_dep_account(department_ID) + if(B) + registered_account = B + if(!B.bank_cards.Find(src)) + B.bank_cards += src + name = "departmental card ([department_name])" + desc = "Provides access to the [department_name]." + SSeconomy.dep_cards += src + +/obj/item/card/id/departmental_budget/Destroy() + SSeconomy.dep_cards -= src + return ..() + +/obj/item/card/id/departmental_budget/update_label() + return + +/obj/item/card/id/departmental_budget/car + department_ID = ACCOUNT_CAR + department_name = ACCOUNT_CAR_NAME + //Polychromatic Knight Badge /obj/item/card/id/knight @@ -577,4 +786,3 @@ update_label("John Doe", "Clowny") /obj/item/card/id/debug/Initialize() access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access() . = ..() - diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 2303278f5c..6ebeffe90f 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -506,6 +506,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM resistance_flags = FIRE_PROOF light_color = LIGHT_COLOR_FIRE grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/oil = 5) + custom_price = 55 /obj/item/lighter/Initialize() . = ..() @@ -710,7 +711,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM item_state = "black_vape" w_class = WEIGHT_CLASS_TINY var/chem_volume = 100 - var/vapetime = FALSE //this so it won't puff out clouds every tick + var/vapetime = FALSE //this so it won't puff out clouds every tick var/screw = FALSE // kinky var/super = FALSE //for the fattest vapes dude. diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index b13cfd9f64..890a17e52c 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -229,10 +229,11 @@ def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial) /obj/item/circuitboard/machine/vendor - name = "Booze-O-Mat Vendor (Machine Board)" + name = "Custom Vendor (Machine Board)" desc = "You can turn the \"brand selection\" dial using a screwdriver." - build_path = /obj/machinery/vending/boozeomat - req_components = list(/obj/item/vending_refill/boozeomat = 1) + custom_premium_price = 100 + build_path = /obj/machinery/vending/custom + req_components = list(/obj/item/vending_refill/custom = 1) var/static/list/vending_names_paths = list( /obj/machinery/vending/boozeomat = "Booze-O-Mat", @@ -269,7 +270,8 @@ /obj/machinery/vending/wardrobe/viro_wardrobe = "ViroDrobe", /obj/machinery/vending/clothing = "ClothesMate", /obj/machinery/vending/medical = "NanoMed Plus", - /obj/machinery/vending/wallmed = "NanoMed") + /obj/machinery/vending/wallmed = "NanoMed", + /obj/machinery/vending/custom = "Custom Vendor") /obj/item/circuitboard/machine/vendor/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver)) @@ -1019,6 +1021,11 @@ build_path = /obj/machinery/ore_silo req_components = list() +/obj/item/circuitboard/machine/paystand + name = "Pay Stand (Machine Board)" + build_path = /obj/machinery/paystand + req_components = list() + /obj/item/circuitboard/machine/autobottler name = "Auto-Bottler (Machine Board)" build_path = /obj/machinery/rnd/production/protolathe/department/autobottler //Manips make you print things cheaper, even chems diff --git a/code/game/objects/items/crab17.dm b/code/game/objects/items/crab17.dm new file mode 100644 index 0000000000..8d55d3d5a2 --- /dev/null +++ b/code/game/objects/items/crab17.dm @@ -0,0 +1,229 @@ +/obj/item/suspiciousphone + name = "suspicious phone" + desc = "This device raises pink levels to unknown highs." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "suspiciousphone" + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("dumped") + var/dumped = FALSE + +/obj/item/suspiciousphone/attack_self(mob/user) + if(!ishuman(user)) + to_chat(user, "This device is too advanced for you!") + return + if(dumped) + to_chat(user, "You already activated Protocol CRAB-17.") + return FALSE + if(alert(user, "Are you sure you want to crash this market with no survivors?", "Protocol CRAB-17", "Yes", "No") == "Yes") + if(dumped || QDELETED(src)) //Prevents fuckers from cheesing alert + return FALSE + var/turf/targetturf = get_safe_random_station_turf() + if (!targetturf) + return FALSE + new /obj/effect/dumpeetTarget(targetturf, user) + dumped = TRUE + +/obj/structure/checkoutmachine + name = "\improper Nanotrasen Space-Coin Market" + desc = "This is good for spacecoin because" + icon = 'icons/obj/money_machine.dmi' + icon_state = "bogdanoff" + layer = LARGE_MOB_LAYER + armor = list("melee" = 80, "bullet" = 30, "laser" = 30, "energy" = 60, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80) + density = TRUE + pixel_z = -8 + max_integrity = 5000 + var/list/accounts_to_rob + var/mob/living/carbon/human/bogdanoff + var/canwalk = FALSE + +/obj/structure/checkoutmachine/examine(mob/living/user) + . = ..() + . += "It's integrated integrity meter reads: HEALTH: [obj_integrity]." + +/obj/structure/checkoutmachine/proc/check_if_finished() + for(var/i in accounts_to_rob) + var/datum/bank_account/B = i + if (B.being_dumped) + return FALSE + return TRUE + +/obj/structure/checkoutmachine/attackby(obj/item/W, mob/user, params) + if(check_if_finished()) + qdel(src) + return + if(istype(W, /obj/item/card/id)) + var/obj/item/card/id/card = W + if(!card.registered_account) + to_chat(user, "This card does not have a registered account!") + return + if(!card.registered_account.being_dumped) + to_chat(user, "It appears that your funds are safe from draining!") + return + if(do_after(user, 40, target = src)) + if(!card.registered_account.being_dumped) + return + to_chat(user, "You quickly cash out your funds to a more secure banking location. Funds are safu.") // This is a reference and not a typo + card.registered_account.being_dumped = FALSE + card.registered_account.withdrawDelay = 0 + if(check_if_finished()) + qdel(src) + return + else + return ..() + +/obj/structure/checkoutmachine/Initialize(mapload, mob/living/user) + . = ..() + bogdanoff = user + add_overlay("flaps") + add_overlay("hatch") + add_overlay("legs_retracted") + addtimer(CALLBACK(src, .proc/startUp), 50) + QDEL_IN(src, 8 MINUTES) //Self destruct after 8 min + + +/obj/structure/checkoutmachine/proc/startUp() //very VERY snowflake code that adds a neat animation when the pod lands. + start_dumping() //The machine doesnt move during this time, giving people close by a small window to grab their funds before it starts running around + sleep(10) + if(QDELETED(src)) + return + playsound(src, 'sound/machines/click.ogg', 15, TRUE, -3) + cut_overlay("flaps") + sleep(10) + if(QDELETED(src)) + return + playsound(src, 'sound/machines/click.ogg', 15, TRUE, -3) + cut_overlay("hatch") + sleep(30) + if(QDELETED(src)) + return + playsound(src,'sound/machines/twobeep.ogg',50,FALSE) + var/mutable_appearance/hologram = mutable_appearance(icon, "hologram") + hologram.pixel_y = 16 + add_overlay(hologram) + var/mutable_appearance/holosign = mutable_appearance(icon, "holosign") + holosign.pixel_y = 16 + add_overlay(holosign) + add_overlay("legs_extending") + cut_overlay("legs_retracted") + pixel_z += 4 + sleep(5) + if(QDELETED(src)) + return + add_overlay("legs_extended") + cut_overlay("legs_extending") + pixel_z += 4 + sleep(20) + if(QDELETED(src)) + return + add_overlay("screen_lines") + sleep(5) + if(QDELETED(src)) + return + cut_overlay("screen_lines") + sleep(5) + if(QDELETED(src)) + return + add_overlay("screen_lines") + add_overlay("screen") + sleep(5) + if(QDELETED(src)) + return + playsound(src,'sound/machines/triple_beep.ogg',50,FALSE) + add_overlay("text") + sleep(10) + if(QDELETED(src)) + return + add_overlay("legs") + cut_overlay("legs_extended") + cut_overlay("screen") + add_overlay("screen") + cut_overlay("screen_lines") + add_overlay("screen_lines") + cut_overlay("text") + add_overlay("text") + canwalk = TRUE + START_PROCESSING(SSfastprocess, src) + +/obj/structure/checkoutmachine/Destroy() + stop_dumping() + STOP_PROCESSING(SSfastprocess, src) + priority_announce("The credit deposit machine at [get_area(src)] has been destroyed. Station funds have stopped draining!", sender_override = "CRAB-17 Protocol") + explosion(src, 0,0,1, flame_range = 2) + return ..() + +/obj/structure/checkoutmachine/proc/start_dumping() + accounts_to_rob = SSeconomy.bank_accounts.Copy() + accounts_to_rob -= bogdanoff.get_bank_account() + for(var/i in accounts_to_rob) + var/datum/bank_account/B = i + B.dumpeet() + dump() + +/obj/structure/checkoutmachine/proc/dump() + var/percentage_lost = (rand(5, 15) / 100) + for(var/i in accounts_to_rob) + var/datum/bank_account/B = i + if(!B.being_dumped) + continue + var/amount = B.account_balance * percentage_lost + var/datum/bank_account/account = bogdanoff.get_bank_account() + if (account) // get_bank_account() may return FALSE + account.transfer_money(B, amount) + B.bank_card_talk("You have lost [percentage_lost * 100]% of your funds! A spacecoin credit deposit machine is located at: [get_area(src)].") + addtimer(CALLBACK(src, .proc/dump), 150) //Drain every 15 seconds + +/obj/structure/checkoutmachine/process() + var/anydir = pick(GLOB.cardinals) + if(Process_Spacemove(anydir)) + Move(get_step(src, anydir), anydir) + +/obj/structure/checkoutmachine/proc/stop_dumping() + for(var/i in accounts_to_rob) + var/datum/bank_account/B = i + B.being_dumped = FALSE + +/obj/effect/dumpeetFall //Falling pod + name = "" + icon = 'icons/obj/money_machine_64.dmi' + pixel_z = 300 + desc = "Get out of the way!" + layer = FLY_LAYER//that wasnt flying, that was falling with style! + icon_state = "missile_blur" + +/obj/effect/dumpeetTarget + name = "Landing Zone Indicator" + desc = "A holographic projection designating the landing zone of something. It's probably best to stand back." + icon = 'icons/mob/actions/actions_items.dmi' + icon_state = "sniper_zoom" + layer = PROJECTILE_HIT_THRESHHOLD_LAYER + light_range = 2 + var/obj/effect/dumpeetFall/DF + var/obj/structure/checkoutmachine/dump + var/mob/living/carbon/human/bogdanoff + +/obj/effect/ex_act() + return + +/obj/effect/dumpeetTarget/Initialize(mapload, user) + . = ..() + bogdanoff = user + addtimer(CALLBACK(src, .proc/startLaunch), 100) + sound_to_playing_players('sound/items/dump_it.ogg', 20) + deadchat_broadcast("Protocol CRAB-17 has been activated. A space-coin market has been launched at the station!", turf_target = get_turf(src)) + +/obj/effect/dumpeetTarget/proc/startLaunch() + DF = new /obj/effect/dumpeetFall(drop_location()) + dump = new /obj/structure/checkoutmachine(null, bogdanoff) + priority_announce("The spacecoin bubble has popped! Get to the credit deposit machine at [get_area(src)] and cash out before you lose all of your funds!", sender_override = "CRAB-17 Protocol") + animate(DF, pixel_z = -8, time = 5, , easing = LINEAR_EASING) + playsound(src, 'sound/weapons/mortar_whistle.ogg', 70, TRUE, 6) + addtimer(CALLBACK(src, .proc/endLaunch), 5, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation + + + +/obj/effect/dumpeetTarget/proc/endLaunch() + QDEL_NULL(DF) //Delete the falling machine effect, because at this point its animation is over. We dont use temp_visual because we want to manually delete it as soon as the pod appears + playsound(src, "explosion", 80, TRUE) + dump.forceMove(get_turf(src)) + qdel(src) //The target's purpose is complete. It can rest easy now diff --git a/code/game/objects/items/credit_holochip.dm b/code/game/objects/items/credit_holochip.dm new file mode 100644 index 0000000000..0acb225772 --- /dev/null +++ b/code/game/objects/items/credit_holochip.dm @@ -0,0 +1,107 @@ +/obj/item/holochip + name = "credit holochip" + desc = "A hard-light chip encoded with an amount of credits. It is a modern replacement for physical money that can be directly converted to virtual currency and viceversa. Keep away from magnets." + icon = 'icons/obj/economy.dmi' + icon_state = "holochip" + throwforce = 0 + force = 0 + w_class = WEIGHT_CLASS_TINY + var/credits = 0 + +/obj/item/holochip/Initialize(mapload, amount) + . = ..() + credits = amount + update_icon() + +/obj/item/holochip/examine(mob/user) + . = ..() + . += "It's loaded with [credits] credit[( credits > 1 ) ? "s" : ""]\n"+\ + "Alt-Click to split." + +/obj/item/holochip/get_item_credit_value() + return credits + +/obj/item/holochip/update_icon() + name = "\improper [credits] credit holochip" + var/rounded_credits = credits + switch(credits) + if(1 to 999) + icon_state = "holochip" + if(1000 to 999999) + icon_state = "holochip_kilo" + rounded_credits = round(rounded_credits * 0.001) + if(1000000 to 999999999) + icon_state = "holochip_mega" + rounded_credits = round(rounded_credits * 0.000001) + if(1000000000 to INFINITY) + icon_state = "holochip_giga" + rounded_credits = round(rounded_credits * 0.000000001) + var/overlay_color = "#914792" + switch(rounded_credits) + if(0 to 4) + overlay_color = "#8E2E38" + if(5 to 9) + overlay_color = "#914792" + if(10 to 19) + overlay_color = "#BF5E0A" + if(20 to 49) + overlay_color = "#358F34" + if(50 to 99) + overlay_color = "#676767" + if(100 to 199) + overlay_color = "#009D9B" + if(200 to 499) + overlay_color = "#0153C1" + if(500 to INFINITY) + overlay_color = "#2C2C2C" + cut_overlays() + var/mutable_appearance/holochip_overlay = mutable_appearance('icons/obj/economy.dmi', "[icon_state]-color") + holochip_overlay.color = overlay_color + add_overlay(holochip_overlay) + +/obj/item/holochip/proc/spend(amount, pay_anyway = FALSE) + if(credits >= amount) + credits -= amount + if(credits == 0) + qdel(src) + update_icon() + return amount + else if(pay_anyway) + qdel(src) + return credits + else + return 0 + +/obj/item/holochip/attackby(obj/item/I, mob/user, params) + ..() + if(istype(I, /obj/item/holochip)) + var/obj/item/holochip/H = I + credits += H.credits + to_chat(user, "You insert the credits into [src].") + update_icon() + qdel(H) + +/obj/item/holochip/AltClick(mob/user) + if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + return + var/split_amount = round(input(user,"How many credits do you want to extract from the holochip?") as null|num) + if(split_amount == null || split_amount <= 0 || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + return + else + var/new_credits = spend(split_amount, TRUE) + var/obj/item/holochip/H = new(user ? user : drop_location(), new_credits) + if(user) + if(!user.put_in_hands(H)) + H.forceMove(user.drop_location()) + add_fingerprint(user) + H.add_fingerprint(user) + to_chat(user, "You extract [split_amount] credits into a new holochip.") + +/obj/item/holochip/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return + var/wipe_chance = 60 / severity + if(prob(wipe_chance)) + visible_message("[src] fizzles and disappears!") + qdel(src) //rip cash diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 29a31122bf..1c50717bd5 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -1,6 +1,7 @@ /obj/item/flashlight name = "flashlight" desc = "A hand-held emergency light." + custom_price = 100 icon = 'icons/obj/lighting.dmi' icon_state = "flashlight" item_state = "flashlight" @@ -422,6 +423,7 @@ /obj/item/flashlight/glowstick name = "glowstick" desc = "A military-grade glowstick." + custom_price = 50 w_class = WEIGHT_CLASS_SMALL brightness_on = 4 color = LIGHT_COLOR_GREEN diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index b6cab8b438..1bc0f81695 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -11,6 +11,7 @@ SLIME SCANNER /obj/item/t_scanner name = "\improper T-ray scanner" desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." + custom_price = 150 icon = 'icons/obj/device.dmi' icon_state = "t-ray0" var/on = FALSE @@ -79,6 +80,7 @@ SLIME SCANNER var/mode = 1 var/scanmode = 0 var/advanced = FALSE + custom_price = 300 /obj/item/healthanalyzer/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!") diff --git a/code/game/objects/items/devices/sensor_device.dm b/code/game/objects/items/devices/sensor_device.dm index 79d26776a9..07b975f133 100644 --- a/code/game/objects/items/devices/sensor_device.dm +++ b/code/game/objects/items/devices/sensor_device.dm @@ -5,6 +5,7 @@ icon_state = "scanner" w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_BELT + custom_price = 1750 /obj/item/sensor_device/attack_self(mob/user) GLOB.crewmonitor.show(user,src) //Proc already exists, just had to call it diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 502930bf65..df5c840a1c 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -70,6 +70,7 @@ sharpness = IS_SHARP_ACCURATE armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) var/bayonet = FALSE //Can this be attached to a gun? + custom_price = 250 /obj/item/kitchen/knife/Initialize() . = ..() @@ -107,6 +108,7 @@ custom_materials = list(/datum/material/iron=18000) attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") w_class = WEIGHT_CLASS_NORMAL + custom_price = 600 /obj/item/kitchen/knife/combat name = "combat knife" @@ -174,6 +176,7 @@ throw_range = 7 w_class = WEIGHT_CLASS_NORMAL attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") + custom_price = 200 /obj/item/kitchen/rollingpin/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins flattening [user.p_their()] head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index 090c2f6d57..5a47b2eecc 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -78,6 +78,7 @@ name = "crew pinpointer" desc = "A handheld tracking device that points to crew suit sensors." icon_state = "pinpointer_crew" + custom_price = 1000 var/has_owner = FALSE var/pinpointer_owner = null diff --git a/code/game/objects/items/stacks/cash.dm b/code/game/objects/items/stacks/cash.dm index 94f6fca28c..430018929d 100644 --- a/code/game/objects/items/stacks/cash.dm +++ b/code/game/objects/items/stacks/cash.dm @@ -3,7 +3,7 @@ singular_name = "bill" icon = 'icons/obj/economy.dmi' icon_state = "spacecash" - amount = 1 + amount = INFINITY max_amount = 20 throwforce = 0 throw_speed = 2 diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 50e9b94e97..588b231bda 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -93,6 +93,7 @@ var/stop_bleeding = 1800 var/heal_brute = 5 self_delay = 10 + custom_price = 100 /obj/item/stack/medical/gauze/heal(mob/living/M, mob/user) if(ishuman(M)) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index dc6f5f701e..0cc108c1b9 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -43,6 +43,7 @@ icon_state = "utilitybelt" item_state = "utility" content_overlays = TRUE + custom_premium_price = 300 rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE //because this is easier than trying to have showers wash all contents. /obj/item/storage/belt/utility/ComponentInitialize() @@ -709,6 +710,7 @@ icon_state = "fannypack_leather" item_state = "fannypack_leather" dying_key = DYE_REGISTRY_FANNYPACK + custom_price = 100 /obj/item/storage/belt/fannypack/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 515c39ffcb..91206df4c2 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -622,6 +622,7 @@ item_state = "zippo" w_class = WEIGHT_CLASS_TINY slot_flags = ITEM_SLOT_BELT + custom_price = 20 /obj/item/storage/box/matches/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 3bc90d3615..18499d66be 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -136,6 +136,7 @@ slot_flags = ITEM_SLOT_BELT icon_type = "cigarette" spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette + custom_price = 75 /obj/item/storage/fancy/cigarettes/ComponentInitialize() . = ..() @@ -276,6 +277,7 @@ icon_state = "cig_paper_pack" icon_type = "rolling paper" spawn_type = /obj/item/rollingpaper + custom_price = 25 /obj/item/storage/fancy/rollingpapers/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index 27cd9c8908..0b4b6f54f3 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -16,6 +16,7 @@ STR.cant_hold = typecacheof(list(/obj/item/screwdriver/power)) STR.can_hold = typecacheof(list( /obj/item/stack/spacecash, + /obj/item/holochip, /obj/item/card, /obj/item/clothing/mask/cigarette, /obj/item/flashlight/pen, @@ -101,17 +102,5 @@ icon_state = "random_wallet" /obj/item/storage/wallet/random/PopulateContents() - var/item1_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500) - var/item2_type - if(prob(50)) - item2_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500) - var/item3_type = pick( /obj/item/coin/silver, /obj/item/coin/silver, /obj/item/coin/gold, /obj/item/coin/iron, /obj/item/coin/iron, /obj/item/coin/iron ) - - spawn(2) - if(item1_type) - new item1_type(src) - if(item2_type) - new item2_type(src) - if(item3_type) - new item3_type(src) - update_icon() + new /obj/item/holochip(src, rand(5,30)) + icon_state = "wallet" diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 6ff5dfc8ad..67dbc19289 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -145,6 +145,7 @@ desc = "A janitorial watertank backpack with nozzle to clean dirt and graffiti." icon_state = "waterbackpackjani" item_state = "waterbackpackjani" + custom_price = 1200 /obj/item/watertank/janitor/Initialize() . = ..() diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 8496a8a216..01131a3e85 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -525,6 +525,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 icon_state = "skateboard2" item_state = "skateboard2" board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro + custom_premium_price = 500 /obj/item/melee/skateboard/hoverboard name = "hoverboard" @@ -532,6 +533,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 icon_state = "hoverboard_red" item_state = "hoverboard_red" board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard + custom_premium_price = 2015 /obj/item/melee/skateboard/hoverboard/admin name = "\improper Board Of Directors" diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 4ac69253d3..2c923c1905 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -74,4 +74,43 @@ /obj/structure/closet/crate/secure/medical desc = "A secure medical crate." name = "medical crate" - icon_state = "medical_secure_crate" \ No newline at end of file + icon_state = "medical_secure_crate" + +/obj/structure/closet/crate/secure/owned + name = "private crate" + desc = "A crate cover designed to only open for who purchased its contents." + icon_state = "privatecrate" + var/datum/bank_account/buyer_account + var/privacy_lock = TRUE + +/obj/structure/closet/crate/secure/owned/examine(mob/user) + . = ..() + to_chat(user, "It's locked with a privacy lock, and can only be unlocked by the buyer's ID.") + +/obj/structure/closet/crate/secure/owned/Initialize(mapload, datum/bank_account/_buyer_account) + . = ..() + buyer_account = _buyer_account + +/obj/structure/closet/crate/secure/owned/togglelock(mob/living/user, silent) + if(privacy_lock) + if(!broken) + var/obj/item/card/id/id_card = user.get_idcard(TRUE) + if(id_card) + if(id_card.registered_account) + if(id_card.registered_account == buyer_account) + if(iscarbon(user)) + add_fingerprint(user) + locked = !locked + user.visible_message("[user] unlocks [src]'s privacy lock.", + "You unlock [src]'s privacy lock.") + privacy_lock = FALSE + update_icon() + else if(!silent) + to_chat(user, "Bank account does not match with buyer!") + else if(!silent) + to_chat(user, "No linked bank account detected!") + else if(!silent) + to_chat(user, "No ID detected!") + else if(!silent) + to_chat(user, "[src] is broken!") + else ..() diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index c918e7b867..d0be6c8469 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -689,7 +689,7 @@ name = "ID, jumpsuit and shoes" uniform = /obj/item/clothing/under/color/random shoes = /obj/item/clothing/shoes/sneakers/black - id = /obj/item/card/id + id = /obj/item/card/id/no_banking r_hand = /obj/item/storage/box/syndie_kit/chameleon/ghostcafe diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index c70db70ee8..a06b674e42 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -63,6 +63,7 @@ There can only be one! (40-second delay)
Make all players stupid
Egalitarian Station Mode
+ Anarcho-Capitalist Station Mode
Break all lights
Fix all lights
The floor is lava! (DANGEROUS: extremely lame)
@@ -478,6 +479,17 @@ usr.client.ak47s() sound_to_playing_players('sound/misc/ak47s.ogg') + if("ancap") + if(!check_rights(R_FUN)) + return + SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Anarcho-capitalist Station")) + SSeconomy.full_ancap = !SSeconomy.full_ancap + message_admins("[key_name_admin(usr)] toggled Anarcho-capitalist mode") + if(SSeconomy.full_ancap) + priority_announce("The NAP is now in full effect.", null, "commandreport") + else + priority_announce("The NAP has been revoked.", null, "commandreport") + if("guns") if(!check_rights(R_FUN)) return diff --git a/code/modules/antagonists/blob/blob/blob_report.dm b/code/modules/antagonists/blob/blob/blob_report.dm index 4385b732c3..d532121e12 100644 --- a/code/modules/antagonists/blob/blob/blob_report.dm +++ b/code/modules/antagonists/blob/blob/blob_report.dm @@ -8,6 +8,13 @@ var/mach = 0 /datum/station_state/proc/count() + floor = 0 + wall = 0 + r_wall = 0 + window = 0 + door = 0 + grille = 0 + mach = 0 for(var/Z in SSmapping.levels_by_trait(ZTRAIT_STATION)) for(var/turf/T in block(locate(1,1,Z), locate(world.maxx,world.maxy,Z))) // don't count shuttles since they may have just left @@ -48,6 +55,10 @@ else if(ismachinery(O)) mach += 1 + CHECK_TICK + CHECK_TICK + CHECK_TICK + /datum/station_state/proc/score(datum/station_state/result) if(!result) return 0 diff --git a/code/modules/antagonists/traitor/syndicate_contract.dm b/code/modules/antagonists/traitor/syndicate_contract.dm index daa9127591..70ff59eee0 100644 --- a/code/modules/antagonists/traitor/syndicate_contract.dm +++ b/code/modules/antagonists/traitor/syndicate_contract.dm @@ -78,14 +78,28 @@ var/mob/living/carbon/human/target = M // After we remove items, at least give them what they need to live. target.dna.species.give_important_for_life(target) handleVictimExperience(M) // After pod is sent we start the victim narrative/heal. - var/points_to_check = SSshuttle.points // This is slightly delayed because of the sleep calls above to handle the narrative. We don't want to tell the station instantly. - if(points_to_check >= ransom) - SSshuttle.points -= ransom - else - SSshuttle.points -= points_to_check + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + var/points_to_check = min(D.account_balance, ransom) + D.adjust_money(min(points_to_check, ransom)) priority_announce("One of your crew was captured by a rival organisation - we've needed to pay their ransom to bring them back. \ As is policy we've taken a portion of the station's funds to offset the overall cost.", null, "attention", null, "Nanotrasen Asset Protection") + sleep(30) + + // Pay contractor their portion of ransom + if (status == CONTRACT_STATUS_COMPLETE) + var/mob/living/carbon/human/H + var/obj/item/card/id/C + if(ishuman(contract.owner.current)) + H = contract.owner.current + C = H.get_idcard(TRUE) + + if(C && C.registered_account) + C.registered_account.adjust_money(points_to_check * 0.35) + + C.registered_account.bank_card_talk("We've processed the ransom, agent. Here's your cut - your balance is now \ + [C.registered_account.account_balance] cr.", TRUE) + /datum/syndicate_contract/proc/handleVictimExperience(var/mob/living/M) // They're off to holding - handle the return timer and give some text about what's going on. addtimer(CALLBACK(src, .proc/returnVictim, M), 4 MINUTES) // Ship 'em back - dead or alive... 4 minutes wait. if(M.stat != DEAD) //Even if they weren't the target, we're still treating them the same. diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index a4617462fe..aa1e5c7401 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -36,6 +36,7 @@ /obj/item/electronics/airalarm name = "air alarm electronics" icon_state = "airalarm_electronics" + custom_price = 50 /obj/item/wallframe/airalarm name = "air alarm frame" diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index e013a86fd2..b859c536cc 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -33,6 +33,9 @@ var/message_cooldown var/breakout_time = 300 + fair_market_price = 10 + payment_department = ACCOUNT_MED + /obj/machinery/atmospherics/components/unary/cryo_cell/Initialize() . = ..() initialize_directions = dir @@ -149,6 +152,9 @@ add_overlay("cover-on") addtimer(CALLBACK(src, .proc/run_anim, anim_up, occupant_overlay), 7, TIMER_UNIQUE) +/obj/machinery/atmospherics/components/unary/cryo_cell/nap_violation(mob/violator) + open_machine() + /obj/machinery/atmospherics/components/unary/cryo_cell/process() ..() @@ -162,7 +168,8 @@ return var/mob/living/mob_occupant = occupant - + if(!check_nap_violations()) + return if(mob_occupant.stat == DEAD) // We don't bother with dead people. return diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index d4c9fdbee7..00460e8a85 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -1,5 +1,7 @@ // How much "space" we give the edge of the map GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "[global.config.directory]/awaymissionconfig.txt")) +// So far only adds an additional trait to vr levels. But I'll probably use make VR separate from away missions in a near future. +GLOBAL_LIST_INIT(potentialRandomVRlevels, generateMapList(filename = "[global.config.directory]/vr_config.txt")) /proc/createRandomZlevel() if(GLOB.awaydestinations.len) //crude, but it saves another var! @@ -8,7 +10,10 @@ GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "[global.con if(GLOB.potentialRandomZlevels && GLOB.potentialRandomZlevels.len) to_chat(world, "Loading away mission...") var/map = pick(GLOB.potentialRandomZlevels) - load_new_z_level(map, "Away Mission") + var/list/traits = list(ZTRAIT_AWAY = TRUE) + if(map in GLOB.potentialRandomVRlevels) + traits[ZTRAIT_VIRTUAL_REALITY] = TRUE + load_new_z_level(map, "Away Mission", traits) to_chat(world, "Away mission loaded.") /proc/reset_gateway_spawns(reset = FALSE) diff --git a/code/modules/cargo/bounties/science.dm b/code/modules/cargo/bounties/science.dm index ad03b2f393..a4632f7ed0 100644 --- a/code/modules/cargo/bounties/science.dm +++ b/code/modules/cargo/bounties/science.dm @@ -55,7 +55,7 @@ /datum/bounty/item/science/advanced_mop name = "Advanced Mop" - description = "Excuse me. I'd like to request 17 credits for a push broom rebristling. Either that, or an advanced mop." + description = "Excuse me. I'd like to request 17 cr for a push broom rebristling. Either that, or an advanced mop." reward = 3000 wanted_types = list(/obj/item/mop/advanced) diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm index bfd97e4d1f..b888dc1a28 100644 --- a/code/modules/cargo/bounty.dm +++ b/code/modules/cargo/bounty.dm @@ -21,7 +21,9 @@ GLOBAL_LIST_EMPTY(bounties_list) // Called when the claim button is clicked. Override to provide fancy rewards. /datum/bounty/proc/claim() if(can_claim()) - SSshuttle.points += reward + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + D.adjust_money(reward) claimed = TRUE // If an item sent in the cargo shuttle can satisfy the bounty. @@ -126,11 +128,11 @@ GLOBAL_LIST_EMPTY(bounties_list) /proc/setup_bounties() var/pick // instead of creating it a bunch let's go ahead and toss it here, we know we're going to use it for dynamics and subtypes! - + /********************************Subtype Gens********************************/ var/list/easy_add_list_subtypes = list(/datum/bounty/item/assistant = 2, - /datum/bounty/item/mech = 1, - /datum/bounty/item/chef = 2, + /datum/bounty/item/mech = 1, + /datum/bounty/item/chef = 2, /datum/bounty/item/security = 1, /datum/bounty/virus = 1, /datum/bounty/item/engineering = 1, @@ -139,30 +141,30 @@ GLOBAL_LIST_EMPTY(bounties_list) /datum/bounty/item/botany = 2, /datum/bounty/item/silly = 1, /datum/bounty/item/gardencook = 1) - + for(var/the_type in easy_add_list_subtypes) for(var/i in 1 to easy_add_list_subtypes[the_type]) pick = pick(subtypesof(the_type)) try_add_bounty(new pick) - + /********************************Strict Type Gens********************************/ var/list/easy_add_list_strict_types = list(/datum/bounty/reagent/simple_drink = 1, /datum/bounty/reagent/complex_drink = 1, /datum/bounty/reagent/chemical = 1) - + for(var/the_strict_type in easy_add_list_strict_types) for(var/i in 1 to easy_add_list_strict_types[the_strict_type]) try_add_bounty(new the_strict_type) - + /********************************Dynamic Gens********************************/ - + for(var/i in 0 to 1) if(prob(50)) pick = pick(subtypesof(/datum/bounty/item/slime)) else pick = pick(subtypesof(/datum/bounty/item/science)) try_add_bounty(new pick) - + /********************************Cutoff for Non-Low Priority Bounties********************************/ var/datum/bounty/B = pick(GLOB.bounties_list) B.mark_high_priority() @@ -172,7 +174,7 @@ GLOBAL_LIST_EMPTY(bounties_list) /datum/bounty/item/syndicate_documents, /datum/bounty/item/adamantine, /datum/bounty/more_bounties) - + for(var/low_priority_bounty in low_priority_strict_type_list) try_add_bounty(new low_priority_bounty) diff --git a/code/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm index 45260f4926..f499c38090 100644 --- a/code/modules/cargo/bounty_console.dm +++ b/code/modules/cargo/bounty_console.dm @@ -35,10 +35,10 @@ if(!GLOB.bounties_list.len) setup_bounties() - + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) var/list/dat = list({"Refresh Print Paper -

Credits: [SSshuttle.points]

+

Credits: [D.account_balance]

"}) for(var/datum/bounty/B in GLOB.bounties_list) diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index 64b208a90b..1883a5f615 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -74,9 +74,12 @@ /obj/machinery/computer/cargo/ui_data() var/list/data = list() data["location"] = SSshuttle.supply.getStatusText() + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + data["points"] = D.account_balance data["away"] = SSshuttle.supply.getDockedId() == "supply_away" + data["self_paid"] = self_paid data["docked"] = SSshuttle.supply.mode == SHUTTLE_IDLE - data["points"] = SSshuttle.points data["loan"] = !!SSshuttle.shuttle_loan data["loan_dispatched"] = SSshuttle.shuttle_loan && SSshuttle.shuttle_loan.dispatched var/message = "Remember to stamp and send back the supply manifests." @@ -92,6 +95,7 @@ "cost" = SO.pack.cost, "id" = SO.id, "orderer" = SO.orderer, + "paid" = !isnull(SO.paying_account) //paid by requester )) data["requests"] = list() @@ -165,6 +169,7 @@ . = TRUE if("add") var/id = text2path(params["id"]) + var/self_paid = text2num(params["self_paid"]) var/datum/supply_pack/pack = SSshuttle.supply_packs[id] if(!istype(pack)) return @@ -182,19 +187,33 @@ name = usr.real_name rank = "Silicon" + var/datum/bank_account/account + if(self_paid && ishuman(usr)) + var/mob/living/carbon/human/H = usr + var/obj/item/card/id/id_card = H.get_idcard(TRUE) + if(!istype(id_card)) + say("No ID card detected.") + return + account = id_card.registered_account + if(!istype(account)) + say("Invalid bank account.") + return + var/reason = "" - if(requestonly) + if(requestonly && !self_paid) reason = stripped_input("Reason:", name, "") if(isnull(reason) || ..()) return var/turf/T = get_turf(src) - var/datum/supply_order/SO = new(pack, name, rank, ckey, reason) + var/datum/supply_order/SO = new(pack, name, rank, ckey, reason, account) SO.generateRequisition(T) - if(requestonly) + if(requestonly && !self_paid) SSshuttle.requestlist += SO else SSshuttle.shoppinglist += SO + if(self_paid) + say("Order processed. The price will be charged to [account.account_holder]'s bank account on delivery.") . = TRUE if("remove") var/id = text2num(params["id"]) diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index bb90fa717a..0a1346ba01 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -26,6 +26,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they var/list/total_value = list() //export instance => total value of sold objects var/list/reagents_volume = list()//export reagents => into the total volume of the object sold var/list/reagents_value = list()//export reagents => into the reagent type total value. + var/list/exported_atoms_ref = list() //if they're not deleted they go in here for use. // external_report works as "transaction" object, pass same one in if you're doing more than one export in single go /proc/export_item_and_contents(atom/movable/AM, allowed_categories = EXPORT_CARGO, apply_elastic = TRUE, delete_unsold = TRUE, dry_run=FALSE, datum/export_report/external_report) diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index a65d8cad40..678f5c851f 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -96,17 +96,19 @@ /obj/machinery/computer/cargo/express/ui_data(mob/user) var/canBeacon = beacon && (isturf(beacon.loc) || ismob(beacon.loc))//is the beacon in a valid location? var/list/data = list() + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + data["points"] = D.account_balance data["locked"] = locked//swipe an ID to unlock data["siliconUser"] = hasSiliconAccessInArea(user) data["beaconzone"] = beacon ? get_area(beacon) : ""//where is the beacon located? outputs in the tgui data["usingBeacon"] = usingBeacon //is the mode set to deliver to the beacon or the cargobay? data["canBeacon"] = !usingBeacon || canBeacon //is the mode set to beacon delivery, and is the beacon in a valid location? - data["canBuyBeacon"] = cooldown <= 0 && SSshuttle.points >= BEACON_COST + data["canBuyBeacon"] = cooldown <= 0 && D.account_balance >= BEACON_COST data["beaconError"] = usingBeacon && !canBeacon ? "(BEACON ERROR)" : ""//changes button text to include an error alert if necessary data["hasBeacon"] = beacon != null//is there a linked beacon? data["beaconName"] = beacon ? beacon.name : "No Beacon Found" data["printMsg"] = cooldown > 0 ? "Print Beacon for [BEACON_COST] credits ([cooldown])" : "Print Beacon for [BEACON_COST] credits"//buttontext for printing beacons - data["points"] = SSshuttle.points data["supplies"] = list() message = "Sales are near-instantaneous - please choose carefully." if(SSshuttle.supplyBlocked) @@ -137,13 +139,14 @@ if (beacon) beacon.update_status(SP_READY) //turns on the beacon's ready light if("printBeacon") - if (SSshuttle.points >= BEACON_COST) - cooldown = 10//a ~ten second cooldown for printing beacons to prevent spam - var/obj/item/supplypod_beacon/C = new /obj/item/supplypod_beacon(drop_location()) - C.link_console(src, usr)//rather than in beacon's Initialize(), we can assign the computer to the beacon by reusing this proc) - printed_beacons++//printed_beacons starts at 0, so the first one out will be called beacon # 1 - beacon.name = "Supply Pod Beacon #[printed_beacons]" - SSshuttle.points -= BEACON_COST + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + if(D.adjust_money(-BEACON_COST)) + cooldown = 10//a ~ten second cooldown for printing beacons to prevent spam + var/obj/item/supplypod_beacon/C = new /obj/item/supplypod_beacon(drop_location()) + C.link_console(src, usr)//rather than in beacon's Initialize(), we can assign the computer to the beacon by reusing this proc) + printed_beacons++//printed_beacons starts at 0, so the first one out will be called beacon # 1 + beacon.name = "Supply Pod Beacon #[printed_beacons]" if("add")//Generate Supply Order first var/id = text2path(params["id"]) @@ -163,8 +166,12 @@ var/reason = "" var/list/empty_turfs var/datum/supply_order/SO = new(pack, name, rank, ckey, reason) + var/points_to_check + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + points_to_check = D.account_balance if(!(obj_flags & EMAGGED)) - if(SO.pack.cost <= SSshuttle.points) + if(SO.pack.cost <= points_to_check) var/LZ if (istype(beacon) && usingBeacon)//prioritize beacons over landing in cargobay LZ = get_turf(beacon) @@ -181,14 +188,14 @@ CHECK_TICK if(empty_turfs && empty_turfs.len) LZ = pick(empty_turfs) - if (SO.pack.cost <= SSshuttle.points && LZ)//we need to call the cost check again because of the CHECK_TICK call - SSshuttle.points -= SO.pack.cost + if (SO.pack.cost <= points_to_check && LZ)//we need to call the cost check again because of the CHECK_TICK call + D.adjust_money(-SO.pack.cost) SSblackbox.record_feedback("nested tally", "cargo_imports", 1, list("[SO.pack.cost]", "[SO.pack.name]")) new /obj/effect/abstract/DPtarget(LZ, podType, SO) . = TRUE update_icon() else - if(SO.pack.cost * (0.72*MAX_EMAG_ROCKETS) <= SSshuttle.points) // bulk discount :^) + if(SO.pack.cost * (0.72*MAX_EMAG_ROCKETS) <= points_to_check) // bulk discount :^) landingzone = GLOB.areas_by_type[pick(GLOB.the_station_areas)] //override default landing zone for(var/turf/open/floor/T in landingzone.contents) if(is_blocked_turf(T)) @@ -196,7 +203,7 @@ LAZYADD(empty_turfs, T) CHECK_TICK if(empty_turfs && empty_turfs.len) - SSshuttle.points -= SO.pack.cost * (0.72*MAX_EMAG_ROCKETS) + D.adjust_money(-(SO.pack.cost * (0.72*MAX_EMAG_ROCKETS))) SSblackbox.record_feedback("nested tally", "cargo_imports", MAX_EMAG_ROCKETS, list("[SO.pack.cost * 0.72]", "[SO.pack.name]")) SO.generateRequisition(get_turf(src)) for(var/i in 1 to MAX_EMAG_ROCKETS) diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index b78f218348..5e6f7c677d 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -28,14 +28,16 @@ var/orderer_ckey var/reason var/datum/supply_pack/pack + var/datum/bank_account/paying_account -/datum/supply_order/New(datum/supply_pack/pack, orderer, orderer_rank, orderer_ckey, reason) +/datum/supply_order/New(datum/supply_pack/pack, orderer, orderer_rank, orderer_ckey, reason, paying_account) id = SSshuttle.ordernum++ src.pack = pack src.orderer = orderer src.orderer_rank = orderer_rank src.orderer_ckey = orderer_ckey src.reason = reason + src.paying_account = paying_account /datum/supply_order/proc/generateRequisition(turf/T) var/obj/item/paper/P = new(T) @@ -47,6 +49,8 @@ P.info += "Item: [pack.name]
" P.info += "Access Restrictions: [get_access_desc(pack.access)]
" P.info += "Requested by: [orderer]
" + if(paying_account) + P.info += "Paid by: [paying_account.account_holder]
" P.info += "Rank: [orderer_rank]
" P.info += "Comment: [reason]
" @@ -61,6 +65,9 @@ P.name = "shipping manifest - #[id] ([pack.name])" P.info += "

[command_name()] Shipping Manifest

" P.info += "
" + if(paying_account) + P.info += "Direct purchase from [paying_account.account_holder]
" + P.name += " - Purchased by [paying_account.account_holder]" P.info += "Order #[id]
" P.info += "Destination: [station_name]
" P.info += "Item: [pack.name]
" @@ -84,7 +91,7 @@ return P /datum/supply_order/proc/generate(atom/A) - var/obj/structure/closet/crate/C = pack.generate(A) + var/obj/structure/closet/crate/C = pack.generate(A, paying_account) var/obj/item/paper/fluff/jobs/cargo/manifest/M = generateManifest(C) if(M.errors & MANIFEST_ERROR_ITEM) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 07a75bbfaf..96557d58ef 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -16,16 +16,20 @@ var/DropPodOnly = FALSE //only usable by the Bluespace Drop Pod via the express cargo console var/admin_spawned = FALSE //Can only an admin spawn this crate? -/datum/supply_pack/proc/generate(atom/A) - var/obj/structure/closet/crate/C = new crate_type(A) - C.name = crate_name +/datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account) + var/obj/structure/closet/crate/C + if(paying_account) + C = new /obj/structure/closet/crate/secure/owned(A, paying_account) + C.name = "[crate_name] - Purchased by [paying_account.account_holder]" + else + C = new crate_type(A) + C.name = crate_name if(access) C.req_access = list(access) if(access_any) C.req_one_access = access_any fill(C) - return C /datum/supply_pack/proc/fill(obj/structure/closet/crate/C) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index f7d251f32d..1fbf93a914 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -900,7 +900,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Ghosts of Others:[button_name]
" dat += "
" + dat += "FPS:[clientfps]
" + + dat += "Income Updates:[(chat_toggles & CHAT_BANKCARD) ? "Allowed" : "Muted"]
" + dat += "
" + dat += "Parallax (Fancy Space):" switch (parallax) if (PARALLAX_LOW) diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 8f7156863d..2670e1bcf4 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -250,6 +250,16 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, listen_ooc)() /datum/verbs/menu/Settings/listen_ooc/Get_checked(client/C) return C.prefs.chat_toggles & CHAT_OOC +TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, listen_bank_card)() + set name = "Show/Hide Income Updates" + set category = "Preferences" + set desc = "Show or hide updates to your income" + usr.client.prefs.chat_toggles ^= CHAT_BANKCARD + usr.client.prefs.save_preferences() + to_chat(usr, "You will [(usr.client.prefs.chat_toggles & CHAT_BANKCARD) ? "now" : "no longer"] be notified when you get paid.") + SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Income Notifications", "[(usr.client.prefs.chat_toggles & CHAT_BANKCARD) ? "Enabled" : "Disabled"]")) +/datum/verbs/menu/Settings/listen_bank_card/Get_checked(client/C) + return C.prefs.chat_toggles & CHAT_BANKCARD GLOBAL_LIST_INIT(ghost_forms, list("ghost","ghostking","ghostian2","skeleghost","ghost_red","ghost_black", \ "ghost_blue","ghost_yellow","ghost_green","ghost_pink", \ diff --git a/code/modules/clothing/ears/_ears.dm b/code/modules/clothing/ears/_ears.dm index 1c31e19202..39d23c0107 100644 --- a/code/modules/clothing/ears/_ears.dm +++ b/code/modules/clothing/ears/_ears.dm @@ -6,6 +6,7 @@ throwforce = 0 slot_flags = ITEM_SLOT_EARS resistance_flags = NONE + custom_price = 250 /obj/item/clothing/ears/earmuffs name = "earmuffs" @@ -30,6 +31,7 @@ slot_flags = ITEM_SLOT_EARS | ITEM_SLOT_HEAD | ITEM_SLOT_NECK //Fluff item, put it whereever you want! actions_types = list(/datum/action/item_action/toggle_headphones) var/headphones_on = FALSE + custom_price = 125 /obj/item/clothing/ears/headphones/Initialize() . = ..() diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 77f06a8a74..63521c9b75 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -10,6 +10,8 @@ permeability_coefficient = 0.05 resistance_flags = NONE var/can_be_cut = 1 + custom_price = 1200 + custom_premium_price = 1200 /obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap desc = "These gloves are cheap knockoffs of the coveted ones - no way this can end badly." diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index a37dc8b638..948f14a960 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -10,6 +10,7 @@ cold_protection = HANDS min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT strip_mod = 0.9 + custom_price = 75 /obj/item/clothing/gloves/fingerless/pugilist name = "armwraps" diff --git a/code/modules/clothing/head/beanie.dm b/code/modules/clothing/head/beanie.dm index 4117e88811..79f8931889 100644 --- a/code/modules/clothing/head/beanie.dm +++ b/code/modules/clothing/head/beanie.dm @@ -5,6 +5,7 @@ name = "white beanie" desc = "A stylish beanie. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their heads." icon_state = "beanie" //Default white + custom_price = 60 /obj/item/clothing/head/beanie/black name = "black beanie" diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 9ad05efb7a..987faf8fbb 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -58,6 +58,7 @@ desc = "A reliable, blue tinted helmet reminding you that you still owe that engineer a beer." icon_state = "blueshift" item_state = "blueshift" + custom_premium_price = 750 /obj/item/clothing/head/helmet/riot name = "riot helmet" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 2cb043ba88..8627887492 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -129,6 +129,7 @@ dog_fashion = /datum/dog_fashion/head/pirate /obj/item/clothing/head/pirate/captain + name = "pirate captain hat" icon_state = "hgpiratecap" item_state = "hgpiratecap" diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 402ea37f21..3052d7af8e 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -22,6 +22,7 @@ icon_state = "bluetie" item_state = "" //no inhands w_class = WEIGHT_CLASS_SMALL + custom_price = 60 /obj/item/clothing/neck/tie/blue name = "blue tie" @@ -87,6 +88,7 @@ /obj/item/clothing/neck/scarf //Default white color, same functionality as beanies. name = "white scarf" icon_state = "scarf" + custom_price = 60 desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks." dog_fashion = /datum/dog_fashion/head @@ -251,6 +253,40 @@ icon = 'icons/obj/clothing/neck.dmi' icon_state = "bling" +/obj/item/clothing/neck/necklace/dope/merchant + desc = "Don't ask how it works, the proof is in the holochips!" + /// scales the amount received in case an admin wants to emulate taxes/fees. + var/profit_scaling = 1 + /// toggles between sell (TRUE) and get price post-fees (FALSE) + var/selling = FALSE + +/obj/item/clothing/neck/necklace/dope/merchant/attack_self(mob/user) + . = ..() + selling = !selling + to_chat(user, "[src] has been set to [selling ? "'Sell'" : "'Get Price'"] mode.") + +/obj/item/clothing/neck/necklace/dope/merchant/afterattack(obj/item/I, mob/user, proximity) + . = ..() + if(!proximity) + return + var/datum/export_report/ex = export_item_and_contents(I, allowed_categories = (ALL), dry_run=TRUE) + var/price = 0 + for(var/x in ex.total_amount) + price += ex.total_value[x] + + if(price) + var/true_price = round(price*profit_scaling) + to_chat(user, "[selling ? "Sold" : "Getting the price of"] [I], value: [true_price] credits[I.contents.len ? " (exportable contents included)" : ""].[profit_scaling < 1 && selling ? "[round(price-true_price)] credit\s taken as processing fee\s." : ""]") + if(selling) + new /obj/item/holochip(get_turf(user),true_price) + for(var/i in ex.exported_atoms_ref) + var/atom/movable/AM = i + if(QDELETED(AM)) + continue + qdel(AM) + else + to_chat(user, "There is no export value for [I] or any items within it.") + ////////////////////////////////// //VERY SUPER BADASS NECKERCHIEFS// ////////////////////////////////// diff --git a/code/modules/clothing/outfits/vr.dm b/code/modules/clothing/outfits/vr.dm index ee350e3891..669c03be2c 100644 --- a/code/modules/clothing/outfits/vr.dm +++ b/code/modules/clothing/outfits/vr.dm @@ -3,15 +3,21 @@ uniform = /obj/item/clothing/under/color/random shoes = /obj/item/clothing/shoes/sneakers/black ears = /obj/item/radio/headset - id = /obj/item/card/id + id = /obj/item/card/id/locked_banking + var/starting_funds = 350 /datum/outfit/vr/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source) H.dna.species.before_equip_job(null, H) /datum/outfit/vr/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source) var/obj/item/card/id/id = H.wear_id - if (istype(id)) - id.access |= get_all_accesses() + if(!istype(id)) + return + id.access |= get_all_accesses() + if(id.registered_account) + id.registered_account.account_holder = "[H.real_name] (VR)" + if(starting_funds && id.bank_support == ID_LOCKED_BANK_ACCOUNT) //No payroll or ability to virtually transfer funds to an external account. + id.registered_account.adjust_money(starting_funds) /datum/outfit/vr/syndicate name = "Syndicate VR Operative - Basic" @@ -19,11 +25,12 @@ shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack - id = /obj/item/card/id/syndicate + id = /obj/item/card/id/syndicate/locked_banking belt = /obj/item/gun/ballistic/automatic/pistol l_pocket = /obj/item/paper/fluff/vr/fluke_ops backpack_contents = list(/obj/item/storage/box/syndie=1,\ /obj/item/kitchen/knife/combat/survival) + starting_funds = 0 //Should be operating, not shopping. /datum/outfit/vr/syndicate/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source) . = ..() diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index df0f03f614..8cadb84cef 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -1,5 +1,6 @@ /obj/item/clothing/shoes/sneakers dying_key = DYE_REGISTRY_SNEAKERS + custom_price = 50 /obj/item/clothing/shoes/sneakers/black name = "black shoes" diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 7a3ed902ea..d6d4b1af1e 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -71,6 +71,7 @@ equip_delay_other = 50 resistance_flags = NONE armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 75) + custom_price = 600 /obj/item/clothing/shoes/galoshes/dry name = "absorbent galoshes" @@ -371,6 +372,7 @@ /obj/item/clothing/shoes/cowboyboots name = "cowboy boots" desc = "A standard pair of brown cowboy boots." + custom_price = 60 //remember to replace these lame cosmetics with tg's YEEEEHAW counterparts. icon_state = "cowboyboots" /obj/item/clothing/shoes/cowboyboots/black diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index a19dfaa889..0df1b1e18c 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -47,6 +47,7 @@ desc = "A large, yet comfortable piece of armor, protecting you from some threats." icon_state = "blueshift" item_state = "blueshift" + custom_premium_price = 750 /obj/item/clothing/suit/armor/hos name = "armored greatcoat" diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index d475ca8100..4ff3a3f9de 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -86,6 +86,7 @@ icon_state = "overalls" item_state = "lb_suit" can_adjust = FALSE + custom_price = 60 /obj/item/clothing/under/misc/assistantformal name = "assistant's formal uniform" diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm index d0048326ff..11543ac675 100644 --- a/code/modules/clothing/under/pants.dm +++ b/code/modules/clothing/under/pants.dm @@ -3,6 +3,7 @@ body_parts_covered = GROIN|LEGS fitted = NO_FEMALE_UNIFORM can_adjust = FALSE + custom_price = 60 /obj/item/clothing/under/pants/classicjeans name = "classic jeans" @@ -13,6 +14,7 @@ name = "Must Hang jeans" desc = "Made in the finest space jeans factory this side of Alpha Centauri." icon_state = "jeansmustang" + custom_price = 180 /obj/item/clothing/under/pants/blackjeans name = "black jeans" diff --git a/code/modules/clothing/under/skirt_dress.dm b/code/modules/clothing/under/skirt_dress.dm index fa2c9eed71..94483f5804 100644 --- a/code/modules/clothing/under/skirt_dress.dm +++ b/code/modules/clothing/under/skirt_dress.dm @@ -15,6 +15,7 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE + custom_price = 60 /obj/item/clothing/under/dress/skirt/red name = "red skirt" @@ -24,6 +25,7 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE + custom_price = 60 /obj/item/clothing/under/dress/skirt/purple name = "purple skirt" @@ -33,6 +35,7 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE + custom_price = 60 /obj/item/clothing/under/dress/sundress name = "sundress" @@ -146,6 +149,7 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = TRUE alt_covers_chest = TRUE + custom_price = 60 /obj/item/clothing/under/dress/skirt/plaid/blue name = "blue plaid skirt" diff --git a/code/modules/economy/_economy.dm b/code/modules/economy/_economy.dm new file mode 100644 index 0000000000..9bafb62eae --- /dev/null +++ b/code/modules/economy/_economy.dm @@ -0,0 +1,2 @@ +/obj/item/proc/get_item_credit_value() + return \ No newline at end of file diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm new file mode 100644 index 0000000000..f9addc1f14 --- /dev/null +++ b/code/modules/economy/account.dm @@ -0,0 +1,118 @@ +#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/being_dumped = FALSE //pink levels are rising + var/withdrawDelay = 0 + +/datum/bank_account/New(newname, job) + if(add_to_accounts) + 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 ..() + +/datum/bank_account/proc/dumpeet() + being_dumped = TRUE + withdrawDelay = world.time + DUMPTIME + +/datum/bank_account/proc/_adjust_money(amt) + account_balance += amt + if(account_balance < 0) + account_balance = 0 + +/datum/bank_account/proc/has_money(amt) + return account_balance >= amt + +/datum/bank_account/proc/adjust_money(amt) + if((amt < 0 && has_money(-amt)) || amt > 0) + _adjust_money(amt) + return TRUE + return FALSE + +/datum/bank_account/proc/transfer_money(datum/bank_account/from, amount) + if(!transferable || !from.has_money(amount)) + return FALSE + adjust_money(amount) + from.adjust_money(-amount) + return TRUE + +/datum/bank_account/proc/payday(amt_of_paychecks, free = FALSE) + var/money_to_transfer = account_job.paycheck * amt_of_paychecks + if(free) + adjust_money(money_to_transfer) + else + var/datum/bank_account/D = SSeconomy.get_dep_account(account_job.paycheck_department) + if(D) + if(!transfer_money(D, money_to_transfer)) + bank_card_talk("ERROR: Payday aborted, departmental funds insufficient.") + return FALSE + else + bank_card_talk("Payday processed, account now holds [account_balance] cr.") + return TRUE + bank_card_talk("ERROR: Payday aborted, unable to contact departmental account.") + return FALSE + +/datum/bank_account/proc/bank_card_talk(message, force) + if(!message || !bank_cards.len) + return + for(var/obj/A in bank_cards) + var/icon_source = A + /* + if(istype(A, /obj/item/card/id)) + var/obj/item/card/id/id_card = A + if(id_card.uses_overlays) + icon_source = id_card.get_cached_flat_icon() + */ + var/mob/card_holder = recursive_loc_check(A, /mob) + if(ismob(card_holder)) //If on a mob + if(card_holder.client && !(card_holder.client.prefs.chat_toggles & CHAT_BANKCARD) && !force) + return + + card_holder.playsound_local(get_turf(card_holder), 'sound/machines/twobeep.ogg', 50, TRUE) + if(card_holder.can_hear()) + to_chat(card_holder, "[icon2html(icon_source, card_holder)] [message]") + else if(isturf(A.loc)) //If on the ground + for(var/mob/M in hearers(1,get_turf(A))) + if(M.client && !(M.client.prefs.chat_toggles & CHAT_BANKCARD) && !force) + return + playsound(A, 'sound/machines/twobeep.ogg', 50, TRUE) + A.audible_message("[icon2html(icon_source, hearers(A))] [message]", null, 1) + break + else + for(var/mob/M in A.loc) //If inside a container with other mobs (e.g. locker) + if(M.client && !(M.client.prefs.chat_toggles & CHAT_BANKCARD) && !force) + return + M.playsound_local(get_turf(M), 'sound/machines/twobeep.ogg', 50, TRUE) + if(M.can_hear()) + to_chat(M, "[icon2html(icon_source, M)] [message]") + +/datum/bank_account/department + account_holder = "Guild Credit Agency" + var/department_id = "REPLACE_ME" + add_to_accounts = FALSE + +/datum/bank_account/department/New(dep_id, budget) + department_id = dep_id + account_balance = budget + account_holder = SSeconomy.department_accounts[dep_id] + SSeconomy.generated_accounts += src + +/datum/bank_account/remote // Bank account not belonging to the local station + add_to_accounts = FALSE + +/datum/bank_account/remote/non_transferable + transferable = FALSE + +#undef DUMPTIME diff --git a/code/modules/economy/paystand.dm b/code/modules/economy/paystand.dm new file mode 100644 index 0000000000..f674bc230d --- /dev/null +++ b/code/modules/economy/paystand.dm @@ -0,0 +1,138 @@ +/obj/machinery/paystand + name = "unregistered pay stand" + desc = "See title." + icon = 'icons/obj/economy.dmi' + icon_state = "card_scanner" + density = TRUE + anchored = TRUE + var/locked = FALSE + var/obj/item/card/id/my_card + var/obj/item/assembly/signaler/signaler //attached signaler, let people attach signalers that get activated if the user's transaction limit is achieved. + var/signaler_threshold = 0 //signaler threshold amount + var/amount_deposited = 0 //keep track of the amount deposited over time so you can pay multiple times to reach the signaler threshold + var/force_fee = 0 //replaces the "pay whatever" functionality with a set amount when non-zero. + +/obj/machinery/paystand/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/card/id)) + if(W == my_card) + if(user.a_intent == INTENT_DISARM) + var/rename_msg = stripped_input(user, "Rename the Paystand:", "Paystand Naming", name) + if(!rename_msg || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return + name = rename_msg + return + else if(user.a_intent == INTENT_GRAB) + var/force_fee_input = input(user,"Set the fee!","Set a fee!",0) as num|null + if(isnull(force_fee_input) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return + force_fee = force_fee_input + return + locked = !locked + to_chat(user, "You [src.locked ? "lock" : "unlock"] the paystand, protecting the bolts from [anchored ? "loosening" : "tightening"].") + return + if(!my_card) + var/obj/item/card/id/assistant_mains_need_to_die = W + if(!assistant_mains_need_to_die.registered_account) + return + var/msg = stripped_input(user, "Name of pay stand:", "Paystand Naming", "[user]'s Awesome Paystand") + if(!msg) + return + name = msg + desc = "Owned by [assistant_mains_need_to_die.registered_account.account_holder], pays directly into [user.p_their()] account." + my_card = assistant_mains_need_to_die + to_chat(user, "You link the stand to your account.") + return + var/obj/item/card/id/vbucks = W + if(vbucks.registered_account) + var/momsdebitcard = 0 + if(!force_fee) + momsdebitcard = input(user, "How much would you like to deposit?", "Money Deposit") as null|num + else + momsdebitcard = force_fee + if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return + if(momsdebitcard < 1) + to_chat(user, "ERROR: Invalid amount designated.") + return + if(vbucks.registered_account.adjust_money(-momsdebitcard)) + purchase(vbucks.registered_account.account_holder, momsdebitcard) + to_chat(user, "Thanks for purchasing! The vendor has been informed.") + return + else + to_chat(user, "ERROR: Account has insufficient funds to make transaction.") + return + else + to_chat(user, "ERROR: No bank account assigned to identification card.") + return + if(istype(W, /obj/item/holochip)) + var/obj/item/holochip/H = W + var/cashmoney = input(user, "How much would you like to deposit?", "Money Deposit") as null|num + if(H.spend(cashmoney, FALSE)) + purchase(user, cashmoney) + to_chat(user, "Thanks for purchasing! The vendor has been informed.") + return + else + to_chat(user, "ERROR: Insufficient funds to make transaction.") + return + if(istype(W, /obj/item/stack/spacecash)) + to_chat(user, "What is this, the 2000s? We only take card here.") + return + if(istype(W, /obj/item/coin)) + to_chat(user, "What is this, the 1800s? We only take card here.") + return + if(istype(W, /obj/item/assembly/signaler)) + var/obj/item/assembly/signaler/S = W + if(S.secured) + to_chat(user, "The signaler needs to be in attachable mode to add it to the paystand!") + return + if(!my_card) + to_chat(user, "ERROR: No identification card has been assigned to this paystand yet!") + return + if(!signaler) + var/cash_limit = input(user, "Enter the minimum amount of cash needed to deposit before the signaler is activated.", "Signaler Activation Threshold") as null|num + if(cash_limit < 1) + to_chat(user, "ERROR: Invalid amount designated.") + return + if(cash_limit) + S.forceMove(src) + signaler = S + signaler_threshold = cash_limit + to_chat(user, "You attach the signaler to the paystand.") + desc += " A signaler appears to be attached to the scanner." + else + to_chat(user, "A signaler is already attached to this unit!") + + if(default_deconstruction_screwdriver(user, "card_scanner", "card_scanner", W)) + return + + else if(default_pry_open(W)) + return + + else if(default_unfasten_wrench(user, W)) + return + + else if(default_deconstruction_crowbar(W)) + return + else + return ..() + +/obj/machinery/paystand/proc/purchase(buyer, price) + my_card.registered_account.adjust_money(price) + my_card.registered_account.bank_card_talk("Purchase made at your vendor by [buyer] for [price] credits.") + amount_deposited = amount_deposited + price + if(signaler && amount_deposited >= signaler_threshold) + signaler.activate() + amount_deposited = 0 + +/obj/machinery/paystand/default_unfasten_wrench(mob/user, obj/item/I, time = 20) + if(locked) + to_chat(user, "The bolts on this paystand are currently covered!") + return FALSE + . = ..() + +/obj/machinery/paystand/examine(mob/user) + . = ..() + if(force_fee) + . += "This paystand forces a payment of [force_fee] credit\s per swipe instead of a variable amount." + if(user.get_active_held_item() == my_card) + . += "Paystands can be edited through swiping your card with different intents. Disarm allows editing the name while Grab changes payment functionality." diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 86ff1ed0da..0198dd445e 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -29,7 +29,9 @@ if(fake) return threat_message = new - payoff = round(SSshuttle.points * 0.80) + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + payoff = round(D.account_balance * 0.80) threat_message.title = "Business proposition" threat_message.content = "This is [ship_name]. Pay up [payoff] credits or you'll walk the plank." threat_message.possible_answers = list("We'll pay.","No way.") @@ -38,13 +40,14 @@ /datum/round_event/pirates/proc/answered() if(threat_message && threat_message.answered == 1) - if(SSshuttle.points >= payoff) - SSshuttle.points -= payoff - priority_announce("Thanks for the credits, landlubbers.",sender_override = ship_name) - paid_off = TRUE - return - else - priority_announce("Trying to cheat us? You'll regret this!",sender_override = ship_name) + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + if(D.adjust_money(-payoff)) + priority_announce("Thanks for the credits, landlubbers.",sender_override = ship_name) + paid_off = TRUE + return + else + priority_announce("Trying to cheat us? You'll regret this!",sender_override = ship_name) if(!shuttle_spawned) spawn_shuttle() @@ -101,9 +104,10 @@ /obj/machinery/shuttle_scrambler/process() if(active) if(is_station_level(z)) - var/siphoned = min(SSshuttle.points,siphon_per_tick) - SSshuttle.points -= siphoned - credits_stored += siphoned + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + var/siphoned = min(D.account_balance,siphon_per_tick) + D.adjust_money(-siphoned) interrupt_research() else return @@ -139,12 +143,7 @@ new /obj/effect/temp_visual/emp(get_turf(S)) /obj/machinery/shuttle_scrambler/proc/dump_loot(mob/user) - if(credits_stored < 200) - to_chat(user,"Not enough credits to retrieve.") - return - while(credits_stored >= 200) - new /obj/item/stack/spacecash/c200(drop_location()) - credits_stored -= 200 + new /obj/item/holochip(drop_location(), credits_stored) to_chat(user,"You retrieve the siphoned credits!") credits_stored = 0 @@ -456,3 +455,12 @@ /datum/export/pirate/cash/get_amount(obj/O) var/obj/item/stack/spacecash/C = O return ..() * C.amount * C.value + +/datum/export/pirate/holochip + cost = 1 + unit_name = "holochip" + export_types = list(/obj/item/holochip) + +/datum/export/pirate/holochip/get_cost(atom/movable/AM) + var/obj/item/holochip/H = AM + return H.credits diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index c585961604..bf9f25cb04 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -69,7 +69,9 @@ priority_announce(thanks_msg, "Cargo shuttle commandeered by CentCom.") dispatched = 1 - SSshuttle.points += bonus_points + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + if(D) + D.adjust_money(bonus_points) endWhen = activeFor + 1 SSshuttle.supply.mode = SHUTTLE_CALL diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 1592efb032..46600e9fee 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -147,7 +147,7 @@ return if (!(locate(/obj/structure/table) in src_location) || !(locate(/obj/structure/table) in over_location)) return - + //Are we an expert slider? var/datum/action/innate/D = get_action_of_type(user, /datum/action/innate/drink_fling) if(!D?.active) @@ -268,6 +268,7 @@ /obj/item/reagent_containers/food/drinks/ice name = "ice cup" desc = "Careful, cold ice, do not chew." + custom_price = 15 icon_state = "coffee" list_reagents = list(/datum/reagent/consumable/ice = 30) spillable = TRUE @@ -281,7 +282,7 @@ spillable = TRUE /obj/item/reagent_containers/food/drinks/mug/on_reagent_change(changetype) - cut_overlays() + cut_overlays() if(reagents.total_volume) var/mutable_appearance/MA = mutable_appearance(icon,"mugoverlay") MA.color = mix_color_from_reagents(reagents.reagent_list) @@ -302,6 +303,7 @@ list_reagents = list(/datum/reagent/consumable/hot_coco = 30, /datum/reagent/consumable/sugar = 5) foodtype = SUGAR resistance_flags = FREEZE_PROOF + custom_price = 120 /obj/item/reagent_containers/food/drinks/dry_ramen name = "cup ramen" @@ -310,6 +312,7 @@ list_reagents = list(/datum/reagent/consumable/dry_ramen = 30) foodtype = GRAIN isGlass = FALSE + custom_price = 95 /obj/item/reagent_containers/food/drinks/beer name = "space beer" @@ -317,6 +320,7 @@ icon_state = "beer" list_reagents = list(/datum/reagent/consumable/ethanol/beer = 30) foodtype = GRAIN | ALCOHOL + custom_price = 60 /obj/item/reagent_containers/food/drinks/beer/light name = "Carp Lite" @@ -417,6 +421,7 @@ custom_materials = list(/datum/material/iron=250) volume = 60 isGlass = FALSE + custom_price = 200 /obj/item/reagent_containers/food/drinks/flask/gold name = "captain's flask" @@ -447,6 +452,7 @@ reagent_flags = NONE spillable = FALSE isGlass = FALSE + custom_price = 45 /obj/item/reagent_containers/food/drinks/soda_cans/suicide_act(mob/living/carbon/user) user.visible_message("[user] is trying to eat \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 95b9f92873..21c3af442e 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -254,6 +254,7 @@ var/shortname = pickweight( list("T&T" = 1, "A&A" = 1, "Generic" = 1)) var/fullname + var/removals = GLOB.redacted_strings.Copy() switch(shortname) if("T&T") fullname = "Teal and Tealer" @@ -261,9 +262,6 @@ fullname = "Ash and Asher" if("Generic") fullname = "Nanotrasen Cheap Imitations" - var/removals = list("\[REDACTED\]", "\[EXPLETIVE DELETED\]", - "\[EXPUNGED\]", "\[INFORMATION ABOVE YOUR SECURITY CLEARANCE\]", - "\[MOVE ALONG CITIZEN\]", "\[NOTHING TO SEE HERE\]") var/chance = 50 if(prob(chance)) @@ -348,6 +346,7 @@ /obj/item/reagent_containers/food/drinks/bottle/applejack name = "Buckin' Bronco's Applejack" desc = "Kicks like a horse, tastes like an apple!" + custom_price = 100 icon_state = "applejack_bottle" list_reagents = list(/datum/reagent/consumable/ethanol/applejack = 100) foodtype = FRUIT @@ -358,6 +357,7 @@ /obj/item/reagent_containers/food/drinks/bottle/champagne name = "Eau d' Dandy Brut Champagne" desc = "Finely sourced from only the most pretentious French vineyards." + custom_premium_price = 250 icon_state = "champagne_bottle" list_reagents = list(/datum/reagent/consumable/ethanol/champagne = 100) @@ -376,6 +376,7 @@ /obj/item/reagent_containers/food/drinks/bottle/trappist name = "Mont de Requin Trappistes Bleu" desc = "Brewed in space-Belgium. Fancy!" + custom_premium_price = 170 icon_state = "trappistbottle" volume = 50 list_reagents = list(/datum/reagent/consumable/ethanol/trappist = 50) @@ -388,6 +389,7 @@ /obj/item/reagent_containers/food/drinks/bottle/orangejuice name = "orange juice" desc = "Full of vitamins and deliciousness!" + custom_price = 100 icon_state = "orangejuice" item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' @@ -399,6 +401,7 @@ /obj/item/reagent_containers/food/drinks/bottle/cream name = "milk cream" desc = "It's cream. Made from milk. What else did you think you'd find in there?" + custom_price = 100 icon_state = "cream" item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' @@ -410,6 +413,7 @@ /obj/item/reagent_containers/food/drinks/bottle/tomatojuice name = "tomato juice" desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness." + custom_price = 100 icon_state = "tomatojuice" item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' @@ -421,6 +425,7 @@ /obj/item/reagent_containers/food/drinks/bottle/limejuice name = "lime juice" desc = "Sweet-sour goodness." + custom_price = 100 icon_state = "limejuice" item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' @@ -454,6 +459,7 @@ /obj/item/reagent_containers/food/drinks/bottle/menthol name = "menthol" desc = "Tastes naturally minty, and imparts a very mild numbing sensation." + custom_price = 100 icon_state = "mentholbox" item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' @@ -464,6 +470,7 @@ /obj/item/reagent_containers/food/drinks/bottle/grenadine name = "Jester Grenadine" desc = "Contains 0% real cherries!" + custom_price = 100 icon_state = "grenadine" isGlass = TRUE list_reagents = list(/datum/reagent/consumable/grenadine = 100) diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index defc44ed51..5ebcec91b9 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -11,6 +11,7 @@ spillable = TRUE resistance_flags = ACID_PROOF obj_flags = UNIQUE_RENAME + custom_price = 25 /obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change(changetype) cut_overlays() @@ -46,6 +47,7 @@ possible_transfer_amounts = list() volume = 15 custom_materials = list(/datum/material/glass=100) + custom_price = 20 /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/on_reagent_change(changetype) cut_overlays() diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index 239dd433b0..a4d924bae4 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -41,6 +41,7 @@ filling_color = "#FFD700" tastes = list("salt" = 1, "crisps" = 1) foodtype = JUNKFOOD | FRIED + custom_price = 90 /obj/item/reagent_containers/food/snacks/no_raisin name = "4no raisins" @@ -68,6 +69,7 @@ junkiness = 25 filling_color = "#FFD700" foodtype = JUNKFOOD | GRAIN | SUGAR + custom_price = 30 /obj/item/reagent_containers/food/snacks/cheesiehonkers name = "cheesie honkers" @@ -79,6 +81,7 @@ filling_color = "#FFD700" tastes = list("cheese" = 5, "crisps" = 2) foodtype = JUNKFOOD | DAIRY | SUGAR + custom_price = 45 /obj/item/reagent_containers/food/snacks/syndicake name = "syndi-cakes" diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index ee441c21f7..88a953e310 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -56,6 +56,9 @@ //can be overridden by antag_rep.txt config var/antag_rep = 10 + var/paycheck = PAYCHECK_MINIMAL + var/paycheck_department = ACCOUNT_CIV + var/list/mind_traits // Traits added to the mind of the mob assigned this job var/list/blacklisted_quirks //list of quirk typepaths blacklisted. @@ -99,7 +102,13 @@ /datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE, datum/outfit/outfit_override = null, client/preference_source) 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) + bank_account.payday(STARTING_PAYCHECKS, TRUE) + 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) @@ -227,12 +236,18 @@ H.real_name = "[J.title] #[rand(10000, 99999)]" var/obj/item/card/id/C = H.wear_id - if(istype(C)) + if(istype(C) && C.bank_support) C.access = J.get_access() shuffle_inplace(C.access) // Shuffle access list to make NTNet passkeys less predictable C.registered_name = H.real_name C.assignment = J.title 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/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index c4fa213b61..91b3a3f581 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -14,6 +14,8 @@ Assistant minimal_access = list() //See /datum/job/assistant/get_access() outfit = /datum/outfit/job/assistant antag_rep = 7 + paycheck = PAYCHECK_ASSISTANT // Get a job. Job reassignment changes your paycheck now. Get over it. + paycheck_department = ACCOUNT_CIV display_order = JOB_DISPLAY_ORDER_ASSISTANT dresscodecompliant = FALSE threat = 0.2 diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index 019e50799e..0934507721 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -17,6 +17,8 @@ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_EMERGENCY_STORAGE, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_ENG display_order = JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN threat = 0.5 diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index 709c53d51d..e5cd015460 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -14,6 +14,8 @@ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV display_order = JOB_DISPLAY_ORDER_BARTENDER threat = 0.5 diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 4cf106ea99..65f3e7ca48 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -13,6 +13,8 @@ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV display_order = JOB_DISPLAY_ORDER_BOTANIST threat = 1.5 // lol powergame diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index d38a2a3ddf..3733658c33 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -15,11 +15,15 @@ exp_type = EXP_TYPE_COMMAND exp_type_department = EXP_TYPE_COMMAND + outfit = /datum/outfit/job/captain access = list() //See get_access() minimal_access = list() //See get_access() + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_SEC + mind_traits = list(TRAIT_CAPTAIN_METABOLISM, TRAIT_DISK_VERIFIER) display_order = JOB_DISPLAY_ORDER_CAPTAIN diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index d574482444..840af56a0e 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -14,6 +14,8 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_CAR display_order = JOB_DISPLAY_ORDER_CARGO_TECHNICIAN threat = 0.2 diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index cf9c5a6a3c..5f66519365 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -13,6 +13,8 @@ access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_CIV display_order = JOB_DISPLAY_ORDER_CHAPLAIN threat = 0.5 diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index 44b0e90ec8..9ffabd6a06 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -15,6 +15,8 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_MED display_order = JOB_DISPLAY_ORDER_CHEMIST threat = 1.5 diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index 0d70e872ac..b16b6ffa44 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -26,6 +26,8 @@ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA, ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT, ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_ENG display_order = JOB_DISPLAY_ORDER_CHIEF_ENGINEER blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/paraplegic, /datum/quirk/insanity) diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 8dd7fafab3..ce072d4641 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -24,6 +24,8 @@ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_MED display_order = JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index c65c062bce..7ad7148614 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -13,6 +13,8 @@ access = list(ACCESS_THEATRE) minimal_access = list(ACCESS_THEATRE) + paycheck = PAYCHECK_MINIMAL + paycheck_department = ACCOUNT_SRV mind_traits = list(TRAIT_CLOWN_MENTALITY) diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index 20969bf1d9..5a5916cb7e 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -14,6 +14,8 @@ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV display_order = JOB_DISPLAY_ORDER_COOK threat = 0.2 diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index d73d909f4f..4c588901c4 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -13,6 +13,8 @@ access = list(ACCESS_LIBRARY) minimal_access = list(ACCESS_LIBRARY, ACCESS_CONSTRUCTION, ACCESS_MINING_STATION) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_CIV display_order = JOB_DISPLAY_ORDER_CURATOR threat = 0.3 diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 55c13df7a2..e5afe7e1b3 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -17,6 +17,8 @@ access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_SEC mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index 2e8b18d772..6ab0f46c63 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -15,6 +15,8 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_MED display_order = JOB_DISPLAY_ORDER_GENETICIST threat = 1.5 diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index b1fe3471f1..8015c19c36 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -30,6 +30,8 @@ ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER, ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_SRV display_order = JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 3cf4fbb102..69ed63a514 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -27,6 +27,8 @@ ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_SEC display_order = JOB_DISPLAY_ORDER_HEAD_OF_SECURITY blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/insanity) diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 73028255be..2f6d6f0e32 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -13,6 +13,8 @@ access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV display_order = JOB_DISPLAY_ORDER_JANITOR threat = 0.2 diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index 3f80e44492..1a7499800b 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -14,6 +14,8 @@ access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_CIV mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 3eaa2ae10a..89a766762c 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -13,6 +13,8 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_MED display_order = JOB_DISPLAY_ORDER_MEDICAL_DOCTOR threat = 0.5 diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index 72a6ac8e13..4ba2489ab2 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -13,6 +13,8 @@ access = list(ACCESS_THEATRE) minimal_access = list(ACCESS_THEATRE) + paycheck = PAYCHECK_MINIMAL + paycheck_department = ACCOUNT_SRV display_order = JOB_DISPLAY_ORDER_MIME diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index df6e1431ae..a9703e3f9e 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -14,6 +14,8 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_MED display_order = JOB_DISPLAY_ORDER_PARAMEDIC diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 897defb0ea..4c6b8e064f 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -24,6 +24,8 @@ minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE, ACCESS_SEC_DOORS, ACCESS_HEADS) + paycheck = PAYCHECK_HARD //They can already buy stuff using cargo budget, don't give em a command-level paycheck. + paycheck_department = ACCOUNT_CAR display_order = JOB_DISPLAY_ORDER_QUARTERMASTER blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 15e5c64654..7128fbe2c7 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -28,6 +28,8 @@ ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK) + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_SCI display_order = JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index f9f1d20d3b..d77b2120a2 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -15,6 +15,8 @@ access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_XENOBIOLOGY, ACCESS_GENETICS) minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_SCI display_order = JOB_DISPLAY_ORDER_ROBOTICIST threat = 1 diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index 9809e7b4dc..476f740b9d 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -15,6 +15,8 @@ access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS) minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_SCI display_order = JOB_DISPLAY_ORDER_SCIENTIST threat = 1.2 diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index decb334423..bc6f6a94c7 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -17,6 +17,8 @@ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access() + paycheck = PAYCHECK_HARD + paycheck_department = ACCOUNT_SEC mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 9eb268895e..a09c4376fb 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -16,6 +16,8 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_HARD + paycheck_department = ACCOUNT_CAR display_order = JOB_DISPLAY_ORDER_SHAFT_MINER diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index 66ddc90e9b..83a175f240 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -17,6 +17,8 @@ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_ENG display_order = JOB_DISPLAY_ORDER_STATION_ENGINEER diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index 4ba65dff59..c965341054 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -15,6 +15,8 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_MED display_order = JOB_DISPLAY_ORDER_VIROLOGIST diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index 15d839ac48..5762731f62 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -18,6 +18,9 @@ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access() + paycheck = PAYCHECK_HARD + paycheck_department = ACCOUNT_SEC + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_WARDEN diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index 3e361179de..30bb74a927 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -55,11 +55,11 @@ SSmachines.setup_template_powernets(cables) SSair.setup_template_machinery(atmos_machines) -/datum/map_template/proc/load_new_z() +/datum/map_template/proc/load_new_z(list/traits = list(ZTRAIT_AWAY = TRUE)) var/x = round((world.maxx - width)/2) var/y = round((world.maxy - height)/2) - var/datum/space_level/level = SSmapping.add_new_zlevel(name, list(ZTRAIT_AWAY = TRUE)) + var/datum/space_level/level = SSmapping.add_new_zlevel(name, traits) var/datum/parsed_map/parsed = load_map(file(mappath), x, y, level.z_value, no_changeturf=(SSatoms.initialized == INITIALIZATION_INSSATOMS), placeOnTop=TRUE) var/list/bounds = parsed.bounds if(!bounds) @@ -121,6 +121,6 @@ //for your ever biggening badminnery kevinz000 //❤ - Cyberboss -/proc/load_new_z_level(var/file, var/name) +/proc/load_new_z_level(file, name, list/traits = list(ZTRAIT_AWAY = TRUE)) var/datum/map_template/template = new(file, name) - template.load_new_z() + template.load_new_z(traits) diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index fd5997d3c4..66f99ec40c 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -15,7 +15,7 @@ STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_items = 40 STR.max_combined_w_class = 40 - STR.can_hold = typecacheof(list(/obj/item/coin, /obj/item/stack/spacecash)) + STR.can_hold = typecacheof(list(/obj/item/coin, /obj/item/stack/spacecash, /obj/item/holochip)) /obj/item/storage/bag/money/vault/PopulateContents() new /obj/item/coin/silver(src) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 68c312b19c..b9e787b7d5 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -11,7 +11,7 @@ status_flags = CANSTUN|CANKNOCKDOWN|CANUNCONSCIOUS|CANPUSH|CANSTAGGER blocks_emissive = EMISSIVE_BLOCK_UNIQUE - + //Hair colour and style var/hair_color = "000" var/hair_style = "Bald" @@ -72,4 +72,5 @@ var/creamed = FALSE //to use with creampie overlays 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/account_id var/last_fire_update diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 7b3953e40e..7c256f5367 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -127,6 +127,17 @@ to_chat(src, "Your fingers don't fit in the trigger guard!") return FALSE +/mob/living/carbon/human/proc/get_bank_account() + RETURN_TYPE(/datum/bank_account) + var/datum/bank_account/account + var/obj/item/card/id/I = get_idcard() + + if(I && I.registered_account) + account = I.registered_account + return account + + 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/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index d3e7d7c395..473a7d4c98 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -698,9 +698,9 @@ /obj/item/toy/crayon/spraycan/borg, /obj/item/hand_labeler/borg, /obj/item/razor, + /obj/item/rsf, /obj/item/instrument/violin, /obj/item/instrument/guitar, - /obj/item/rsf/cyborg, /obj/item/reagent_containers/dropper, /obj/item/lighter, /obj/item/storage/bag/tray, diff --git a/code/modules/modular_computers/hardware/hard_drive.dm b/code/modules/modular_computers/hardware/hard_drive.dm index 285463bc0f..76463c6867 100644 --- a/code/modules/modular_computers/hardware/hard_drive.dm +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -157,6 +157,7 @@ max_capacity = 64 icon_state = "ssd_mini" w_class = WEIGHT_CLASS_TINY + custom_price = 150 /obj/item/computer_hardware/hard_drive/small/syndicate // Syndicate variant - very slight better desc = "An efficient SSD for portable devices developed by a rival organisation." diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index 2bed456c41..9e0e1c8014 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -244,12 +244,12 @@ visible_message("[user] inserts [c.value] credits into [src].") qdel(c) return - /*else if(istype(I, /obj/item/holochip)) + else if(istype(I, /obj/item/holochip)) var/obj/item/holochip/HC = I credits += HC.credits - visible_message("[user] inserts a $[HC.credits] holocredit chip into [src].") + visible_message("[user] inserts a [HC.credits] cr holocredit chip into [src].") qdel(HC) - return + return else if(istype(I, /obj/item/card/id)) if(state != 2) return @@ -260,8 +260,8 @@ say("Insufficient money on card to purchase!") return credits += target_credits - say("$[target_credits] has been desposited from your account.") - return */ //Goonconomy when + say("[target_credits] cr has been desposited from your account.") + return return ..() // Simplified payment processing, returns 1 on success. diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index b7b7bc36b7..0090856d83 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -15,6 +15,7 @@ flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_NECK custom_materials = list(/datum/material/iron = 50, /datum/material/glass = 150) + custom_price = 120 var/flash_enabled = TRUE var/state_on = "camera" var/state_off = "camera_off" diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 1b23b1bb5d..d29b0b62fd 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1350,7 +1350,7 @@ lighting = autoset(lighting, 0) environ = autoset(environ, 0) area.poweralert(0, src) - + else if(cell_percent < 15 && longtermpower < 0) // <15%, turn off lighting & equipment equipment = autoset(equipment, 2) lighting = autoset(lighting, 2) @@ -1579,4 +1579,5 @@ /obj/item/electronics/apc name = "power control module" icon_state = "power_mod" + custom_price = 50 desc = "Heavy-duty switching circuits for power control." diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 49848824e4..4eac585999 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -472,6 +472,7 @@ By design, d1 is the smallest direction and d2 is the highest /obj/item/stack/cable_coil name = "cable coil" + custom_price = 75 gender = NEUTER //That's a cable coil sounds better than that's some cable coils icon = 'icons/obj/power.dmi' icon_state = "coil" @@ -566,7 +567,7 @@ By design, d1 is the smallest direction and d2 is the highest return var/obj/item/restraints/handcuffs/cable/result = new(get_turf(user)) user.put_in_hands(result) - result.color = color + result.color = color to_chat(user, "You make some restraints out of cable") //add cables to the stack @@ -849,4 +850,4 @@ By design, d1 is the smallest direction and d2 is the highest . = ..() var/list/cable_colors = GLOB.cable_colors color = pick(cable_colors) - + diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 2e6ec57f77..f5a841ab42 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -62,7 +62,11 @@ loaded_tank.air_contents.gases[/datum/gas/oxygen] -= gasdrained loaded_tank.air_contents.gases[/datum/gas/carbon_dioxide] += gasdrained*2 GAS_GARBAGE_COLLECT(loaded_tank.air_contents.gases) - SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, stored_power*RAD_COLLECTOR_MINING_CONVERSION_RATE) + var/bitcoins_mined = stored_power*RAD_COLLECTOR_MINING_CONVERSION_RATE + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_ENG) + if(D) + D.adjust_money(bitcoins_mined) + SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, bitcoins_mined) last_push = stored_power stored_power = 0 diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index e29ffa865e..64d317b385 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -83,6 +83,9 @@ flick("coilhit", src) playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) tesla_zap(src, 5, power_produced, tesla_flags, shocked_targets) + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_ENG) + if(D) + D.adjust_money(min(power_produced, 1)) if(istype(linked_techweb)) linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 1)) // x4 coils = ~240/m point bonus for R&D addtimer(CALLBACK(src, .proc/reset_shocked), 10) @@ -118,6 +121,9 @@ flick("rpcoilhit", src) playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) tesla_zap(src, 5, power_produced, tesla_flags, shocked_things) + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_ENG) + if(D) + D.adjust_money(min(power_produced, 3)) if(istype(linked_techweb)) linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 3)) // x4 coils with a pulse per second or so = ~720/m point bonus for R&D addtimer(CALLBACK(src, .proc/reset_shocked), 10) diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 846637850b..b4c570dfc6 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -7,6 +7,7 @@ possible_transfer_amounts = list(1, 2, 3, 4, 5) volume = 5 reagent_flags = TRANSPARENT + custom_price = 75 /obj/item/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity) . = ..() diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 800d66969d..ab58510482 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -362,6 +362,7 @@ icon = 'icons/obj/drinks.dmi' icon_state = "smallbottle" item_state = "bottle" + custom_price = 30 list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard custom_materials = list(/datum/material/glass=0) volume = 50 diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 9555f5b64b..06db1d46ab 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -96,6 +96,8 @@ reagent_flags = DRAWABLE flags_1 = null list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/preservahyde = 3) + custom_price = 150 + custom_premium_price = 300 /obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index b8957775b1..fc4a95e58d 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -15,6 +15,7 @@ var/show_filling = TRUE custom_materials = list(/datum/material/iron=10, /datum/material/glass=20) reagent_flags = TRANSPARENT + custom_price = 150 /obj/item/reagent_containers/syringe/Initialize() . = ..() diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm index 30cd56c66a..eebeec2c78 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_tcomms_and_misc.dm @@ -256,3 +256,19 @@ materials = list(/datum/material/iron = 300, /datum/material/glass = 150) build_path = /obj/item/key/collar category = list("initial", "Misc") + +/datum/design/price_tagger + name = "Price Tagger" + id = "price_tagger" + build_type = AUTOLATHE + materials = list(/datum/material/iron = 1500, /datum/material/glass = 500) + build_path = /obj/item/price_tagger + category = list("initial", "Misc") + +/datum/design/custom_vendor_refill + name = "Custom Vendor Refill" + id = "custom_vendor_refill" + build_type = AUTOLATHE + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2000) + build_path = /obj/item/vending_refill/custom + category = list("initial", "Misc") \ No newline at end of file diff --git a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm index 6d63df7d4b..21c39ff0e0 100644 --- a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm +++ b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm @@ -107,6 +107,14 @@ departmental_flags = DEPARTMENTAL_FLAG_ALL category = list ("Medical Machinery") +/datum/design/board/paystand + name = "Machine Design (Pay Stand)" + desc = "The circuit board for a paystand." + id = "paystand" + build_path = /obj/item/circuitboard/machine/paystand + category = list ("Misc. Machinery") + departmental_flags = DEPARTMENTAL_FLAG_ALL + /datum/design/board/autoylathe name = "Machine Design (Autoylathe)" desc = "The circuit board for an autoylathe." diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index 388fa3785c..a505fefb91 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -199,6 +199,10 @@ researched_designs -= design.id return TRUE +/datum/techweb/proc/get_point_total(list/pointlist) + for(var/i in pointlist) + . += pointlist[i] + /datum/techweb/proc/can_afford(list/pointlist) for(var/i in pointlist) if(research_points[i] < pointlist[i]) @@ -227,6 +231,10 @@ for(var/id in node.design_ids) add_design_by_id(id) update_node_status(node) + if(!istype(src, /datum/techweb/admin)) + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_SCI) + if(D) + D.adjust_money(SSeconomy.techweb_bounty) return TRUE /datum/techweb/proc/unresearch_node_id(id) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index dafa119873..fd58dbd308 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -9,7 +9,7 @@ description = "NT default research technologies." // Default research tech, prevents bricking design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani", "desttagger", "handlabel", "packagewrap", - "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", + "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", "paystand", "space_heater", "beaker", "large_beaker", "bucket", "xlarge_beaker", "sec_beanbag", "sec_rshot", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38", "sec_38lethal", "rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass") diff --git a/code/modules/ruins/spaceruin_code/listeningstation.dm b/code/modules/ruins/spaceruin_code/listeningstation.dm index 8efeaaabff..e48a1c45d5 100644 --- a/code/modules/ruins/spaceruin_code/listeningstation.dm +++ b/code/modules/ruins/spaceruin_code/listeningstation.dm @@ -32,7 +32,7 @@ /obj/item/paper/fluff/ruins/listeningstation/receipt name = "receipt" - info = "1 x Stechkin pistol - $600
1 x silencer - $200
shipping charge - $4360
total - $5160" + info = "1 x Stechkin pistol - 600 cr
1 x silencer - 200 cr
shipping charge - 4360 cr
total - 5160 cr" /obj/item/paper/fluff/ruins/listeningstation/odd_report name = "odd report" diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index bdf6e8cc87..a4ef2dfde9 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -109,30 +109,46 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list( continue empty_turfs += T + var/datum/bank_account/cargo_budget = SSeconomy.get_dep_account(ACCOUNT_CAR) var/value = 0 var/purchases = 0 for(var/datum/supply_order/SO in SSshuttle.shoppinglist) if(!empty_turfs.len) break - if(SO.pack.cost > SSshuttle.points) - continue - SSshuttle.points -= SO.pack.cost + var/price = SO.pack.cost + var/datum/bank_account/D + if(SO.paying_account) //Someone paid out of pocket + D = SO.paying_account + price *= 1.1 //TODO make this customizable by the quartermaster + else + D = cargo_budget + if(D) + if(!D.adjust_money(-SO.pack.cost)) + if(SO.paying_account) + D.bank_card_talk("Cargo order #[SO.id] rejected due to lack of funds. Credits required: [price]") + continue + + if(SO.paying_account) + D.bank_card_talk("Cargo order #[SO.id] has shipped. [price] credits have been charged to your bank account.") + var/datum/bank_account/department/cargo = SSeconomy.get_dep_account(ACCOUNT_CAR) + cargo.adjust_money(price - SO.pack.cost) //Cargo gets the handling fee value += SO.pack.cost SSshuttle.shoppinglist -= SO SSshuttle.orderhistory += SO SO.generate(pick_n_take(empty_turfs)) SSblackbox.record_feedback("nested tally", "cargo_imports", 1, list("[SO.pack.cost]", "[SO.pack.name]")) - investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]) has shipped.", INVESTIGATE_CARGO) + investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]), paid by [D.account_holder] has shipped.", INVESTIGATE_CARGO) if(SO.pack.dangerous) - message_admins("\A [SO.pack.name] ordered by [ADMIN_LOOKUPFLW(SO.orderer_ckey)] has shipped.") + message_admins("\A [SO.pack.name] ordered by [ADMIN_LOOKUPFLW(SO.orderer_ckey)], paid by [D.account_holder] has shipped.") purchases++ - investigate_log("[purchases] orders in this shipment, worth [value] credits. [SSshuttle.points] credits left.", INVESTIGATE_CARGO) + investigate_log("[purchases] orders in this shipment, worth [value] credits. [cargo_budget.account_balance] credits left.", INVESTIGATE_CARGO) /obj/docking_port/mobile/supply/proc/sell() - var/presale_points = SSshuttle.points + var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + var/gain = 0 if(!GLOB.exports_list.len) // No exports list? Generate it! setupExports() @@ -164,14 +180,15 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list( continue msg += export_text + "\n" - SSshuttle.points += ex.total_value[E] + gain += ex.total_value[E] for(var/chem in ex.reagents_value) var/value = ex.reagents_value[chem] msg += "[value > 0 ? "+" : ""][value] credits: received [ex.reagents_volume[chem]]u of [chem].\n" - SSshuttle.points += value + gain += value + D.adjust_money(gain) msg = copytext_char(msg, 1, MAX_MESSAGE_LEN) SSshuttle.centcom_message = msg - investigate_log("Shuttle contents sold for [SSshuttle.points - presale_points] credits. Contents: [ex.exported_atoms || "none."] Message: [SSshuttle.centcom_message || "none."]", INVESTIGATE_CARGO) + investigate_log("Shuttle contents sold for [gain] credits. Contents: [ex.exported_atoms || "none."] Message: [SSshuttle.centcom_message || "none."]", INVESTIGATE_CARGO) diff --git a/code/modules/spells/spell_types/devil_boons.dm b/code/modules/spells/spell_types/devil_boons.dm index ab3e3cc27e..8ba106d77b 100644 --- a/code/modules/spells/spell_types/devil_boons.dm +++ b/code/modules/spells/spell_types/devil_boons.dm @@ -16,14 +16,14 @@ for(var/mob/living/carbon/C in targets) if(user.dropItemToGround(user.get_active_held_item())) var/obj/item = pick( - new /obj/item/coin/gold(user.loc), - new /obj/item/coin/diamond(user.loc), - new /obj/item/coin/silver(user.loc), - new /obj/item/clothing/accessory/medal/gold(user.loc), - new /obj/item/stack/sheet/mineral/gold(user.loc), - new /obj/item/stack/sheet/mineral/silver(user.loc), - new /obj/item/stack/sheet/mineral/diamond(user.loc), - new /obj/item/stack/spacecash/c1000(user.loc)) + new /obj/item/coin/gold(user.drop_location()), + new /obj/item/coin/diamond(user.drop_location()), + new /obj/item/coin/silver(user.drop_location()), + new /obj/item/clothing/accessory/medal/gold(user.drop_location()), + new /obj/item/stack/sheet/mineral/gold(user.drop_location()), + new /obj/item/stack/sheet/mineral/silver(user.drop_location()), + new /obj/item/stack/sheet/mineral/diamond(user.drop_location()), + new /obj/item/holochip(user.drop_location(), 1000)) C.put_in_hands(item) /obj/effect/proc_holder/spell/targeted/view_range diff --git a/code/modules/uplink/uplink_items/uplink_badass.dm b/code/modules/uplink/uplink_items/uplink_badass.dm index 681efea5b3..0be2071ba5 100644 --- a/code/modules/uplink/uplink_items/uplink_badass.dm +++ b/code/modules/uplink/uplink_items/uplink_badass.dm @@ -58,6 +58,7 @@ manufactured to pack a little bit more of a punch if your client needs some convincing." item = /obj/item/storage/secure/briefcase/syndie cost = 1 + restricted = TRUE /datum/uplink_item/badass/syndiecards name = "Syndicate Playing Cards" diff --git a/code/modules/uplink/uplink_items/uplink_bundles.dm b/code/modules/uplink/uplink_items/uplink_bundles.dm index 7d0e52947a..1a9dcbd0a6 100644 --- a/code/modules/uplink/uplink_items/uplink_bundles.dm +++ b/code/modules/uplink/uplink_items/uplink_bundles.dm @@ -40,6 +40,7 @@ cost = 20 player_minimum = 30 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + restricted = TRUE /datum/uplink_item/suits/infiltrator_bundle name = "Insidious Infiltration Gear Case" diff --git a/code/modules/uplink/uplink_items/uplink_devices.dm b/code/modules/uplink/uplink_items/uplink_devices.dm index 194281ded6..15437020a6 100644 --- a/code/modules/uplink/uplink_items/uplink_devices.dm +++ b/code/modules/uplink/uplink_items/uplink_devices.dm @@ -262,3 +262,13 @@ cost = 2 include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) restricted = TRUE + +/* for now +/datum/uplink_item/device_tools/suspiciousphone + name = "Protocol CRAB-17 Phone" + desc = "The Protocol CRAB-17 Phone, a phone borrowed from an unknown third party, it can be used to crash the space market, funneling the losses of the crew to your bank account.\ + The crew can move their funds to a new banking site though, unless they HODL, in which case they deserve it." + item = /obj/item/suspiciousphone + cost = 7 + restricted = TRUE +*/ diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 4f7502bb02..abbfa94f11 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -30,6 +30,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C var/amount = 0 ///How many we can store at maximum var/max_amount = 0 + ///Does the item have a custom price override + var/custom_price + ///Does the item have a custom premium price override + var/custom_premium_price /** * # vending machines @@ -50,6 +54,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C integrity_failure = 0.33 armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) circuit = /obj/item/circuitboard/machine/vendor + payment_department = ACCOUNT_SRV light_power = 0.5 light_range = MINIMUM_USEFUL_LIGHT_RANGE /// Is the machine active (No sales pitches if off)! @@ -120,7 +125,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C var/scan_id = TRUE ///Coins that we accept? var/obj/item/coin/coin + ///Bills we accept? + var/obj/item/stack/spacecash/bill ///Default price of items if not overridden + var/default_price = 25 + ///Default price of premium items if not overridden + var/extra_price = 50 /** * Is this item on station or not * @@ -142,7 +152,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C var/obj/item/vending_refill/refill_canister = null /// how many items have been inserted in a vendor - var/loaded_items + var/loaded_items = 0 ///Name of lighting mask for the vending machine var/light_mask @@ -178,6 +188,15 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C // so if slogantime is 10 minutes, it will say it at somewhere between 10 and 20 minutes after the machine is crated. last_slogan = world.time + rand(0, slogan_delay) power_change() + if(onstation_override) //overrides the checks if true. + onstation = TRUE + return + if(mapload && !is_station_level(z)) //check if it was initially created off station during mapload. + onstation = FALSE + if(circuit) + circuit.onstation = onstation //sync up the circuit so the pricing schema is carried over if it's reconstructed. + else if(circuit && (circuit.onstation != onstation)) //check if they're not the same to minimize the amount of edited values. + onstation = circuit.onstation //if it was constructed outside mapload, sync the vendor up with the circuit's var so you can't bypass price requirements by moving / reconstructing it off station. /obj/machinery/vending/Destroy() QDEL_NULL(wires) @@ -281,6 +300,7 @@ GLOBAL_LIST_EMPTY(vending_products) if(!start_empty) R.amount = amount R.max_amount = amount + R.custom_price = initial(temp.custom_price) recordlist += R /** * Refill a vending machine from a refill canister @@ -372,19 +392,7 @@ GLOBAL_LIST_EMPTY(vending_products) if(panel_open && is_wire_tool(I)) wires.interact(user) return - else if(istype(I, /obj/item/coin)) - if(coin) - to_chat(user, "[src] already has [coin] inserted") - return - if(!premium.len) - to_chat(user, "[src] doesn't have a coin slot.") - return - if(!user.transferItemToLoc(I, src)) - return - coin = I - to_chat(user, "You insert [I] into [src].") - return - else if(refill_canister && istype(I, refill_canister)) + if(refill_canister && istype(I, refill_canister)) if (!panel_open) to_chat(user, "You should probably unscrew the service panel first!") else if (stat & (BROKEN|NOPOWER)) @@ -439,7 +447,7 @@ GLOBAL_LIST_EMPTY(vending_products) vending_machine_input[format_text(I.name)] = 1 to_chat(user, "You insert [I] into [src]'s input compartment.") loaded_items++ - + /** * Is the passed in user allowed to load this vending machines compartments * @@ -520,11 +528,14 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/machinery/vending/ui_static_data(mob/user) . = list() + .["onstation"] = onstation + .["department"] = payment_department .["product_records"] = list() for (var/datum/data/vending_product/R in product_records) var/list/data = list( path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"), name = R.name, + price = R.custom_price || default_price, max_amount = R.max_amount, ref = REF(R) ) @@ -534,6 +545,7 @@ GLOBAL_LIST_EMPTY(vending_products) var/list/data = list( path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"), name = R.name, + price = R.custom_premium_price || extra_price, max_amount = R.max_amount, ref = REF(R), premium = TRUE @@ -544,6 +556,7 @@ GLOBAL_LIST_EMPTY(vending_products) var/list/data = list( path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"), name = R.name, + price = R.custom_price || default_price, max_amount = R.max_amount, ref = REF(R), premium = TRUE @@ -552,11 +565,25 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/machinery/vending/ui_data(mob/user) . = list() + var/mob/living/carbon/human/H + var/obj/item/card/id/C + if(ishuman(user)) + H = user + C = H.get_idcard(TRUE) + if(C?.registered_account) + .["user"] = list() + .["user"]["name"] = C.registered_account.account_holder + .["user"]["cash"] = C.registered_account.account_balance + if(C.registered_account.account_job) + .["user"]["job"] = C.registered_account.account_job.title + .["user"]["department"] = C.registered_account.account_job.paycheck_department + else + .["user"]["job"] = "No Job" + .["user"]["department"] = "No Department" .["stock"] = list() - for(var/datum/data/vending_product/R in product_records + coin_records + hidden_records) + for (var/datum/data/vending_product/R in product_records + coin_records + hidden_records) .["stock"][R.name] = R.amount .["extended_inventory"] = extended_inventory - .["coin"] = coin /obj/machinery/vending/ui_act(action, params) . = ..() @@ -570,74 +597,74 @@ GLOBAL_LIST_EMPTY(vending_products) if(panel_open) to_chat(usr, "The vending machine cannot dispense products while its service panel is open!") return - if((!allowed(usr)) && !(obj_flags & EMAGGED) && scan_id) //For SECURE VENDING MACHINES YEAH - to_chat(usr, "Access denied." ) - flick(icon_deny,src) - return vend_ready = FALSE //One thing at a time!! var/datum/data/vending_product/R = locate(params["ref"]) + var/list/record_to_check = product_records + coin_records + if(extended_inventory) + record_to_check = product_records + coin_records + hidden_records if(!R || !istype(R) || !R.product_path) vend_ready = TRUE return + var/price_to_use = default_price + if(R.custom_price) + price_to_use = R.custom_price if(R in hidden_records) if(!extended_inventory) vend_ready = TRUE return - else if(R in coin_records) - if(!(coin)) - to_chat(usr, "You need to a coin to get this item!") - vend_ready = TRUE - return - if(coin && coin.string_attached) - if(!prob(50)) - to_chat(usr, "You weren't able to pull [coin] out fast enough, the machine ate it, string and all!") - QDEL_NULL(coin) - return - if(!usr.CanReach(src)) - to_chat(usr, "You successfully pull [coin] out of [src] to the floor.") - coin = null - if(!usr.put_in_hands(coin)) - to_chat(usr, "You couldn't pull [coin] out because your hands are full!") - QDEL_NULL(coin) - to_chat(usr, "You successfully pull [coin] out before [src] could swallow it.") - coin = null - QDEL_NULL(coin) - else if(!(R in product_records)) + else if (!(R in record_to_check)) vend_ready = TRUE message_admins("Vending machine exploit attempted by [ADMIN_LOOKUPFLW(usr)]!") return - if(R.amount <= 0) - to_chat(usr, "Sold out.") + if (R.amount <= 0) + say("Sold out of [R.name].") + flick(icon_deny,src) vend_ready = TRUE return - else - R.amount-- - if(((last_reply + 200) <= world.time) && vend_reply) - speak(vend_reply) - last_reply = world.time + if(onstation && ishuman(usr)) + var/mob/living/carbon/human/H = usr + var/obj/item/card/id/C = H.get_idcard(TRUE) + + if(!C) + say("No card found.") + flick(icon_deny,src) + vend_ready = TRUE + return + else if (!C.registered_account) + say("No account found.") + flick(icon_deny,src) + vend_ready = TRUE + return + var/datum/bank_account/account = C.registered_account + if(account.account_job && account.account_job.paycheck_department == payment_department) + price_to_use = 0 + if(coin_records.Find(R) || hidden_records.Find(R)) + price_to_use = R.custom_premium_price ? R.custom_premium_price : extra_price + if(price_to_use && !account.adjust_money(-price_to_use)) + say("You do not possess the funds to purchase [R.name].") + flick(icon_deny,src) + vend_ready = TRUE + return + var/datum/bank_account/D = SSeconomy.get_dep_account(payment_department) + if(D) + D.adjust_money(price_to_use) + if(last_shopper != usr || purchase_message_cooldown < world.time) + say("Thank you for shopping with [src]!") + purchase_message_cooldown = world.time + 5 SECONDS + last_shopper = usr use_power(5) if(icon_vend) //Show the vending animation if needed flick(icon_vend,src) - var/vended = new R.product_path(get_turf(src)) + playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) + var/obj/item/vended = new R.product_path(get_turf(src)) + R.amount-- if(usr.CanReach(src) && usr.put_in_hands(vended)) to_chat(usr, "You take [R.name] out of the slot.") else to_chat(usr, "[capitalize(R.name)] falls onto the floor!") - - SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[type]", "[R.product_path]")) vend_ready = TRUE - return - if("takeoutcoin") - usr.put_in_hands(coin) - to_chat(usr, "You remove [coin] from [src].") - coin = null - return - - if("togglevoice") - if(panel_open) - shut_up = !shut_up - + /obj/machinery/vending/process() if(stat & (BROKEN|NOPOWER)) return PROCESS_KILL @@ -748,3 +775,196 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/machinery/vending/onTransitZ() return + +/obj/machinery/vending/custom + name = "Custom Vendor" + icon_state = "robotics" + icon_deny = "robotics-deny" + max_integrity = 400 + payment_department = NO_FREEBIES + refill_canister = /obj/item/vending_refill/custom + /// where the money is sent + var/datum/bank_account/private_a + /// max number of items that the custom vendor can hold + var/max_loaded_items = 20 + /// Base64 cache of custom icons. + var/list/base64_cache = list() + +/obj/machinery/vending/custom/compartmentLoadAccessCheck(mob/user) + . = FALSE + var/mob/living/carbon/human/H + var/obj/item/card/id/C + if(ishuman(user)) + H = user + C = H.get_idcard(FALSE) + if(C?.registered_account && C.registered_account == private_a) + return TRUE + +/obj/machinery/vending/custom/canLoadItem(obj/item/I, mob/user) + . = FALSE + if(loaded_items >= max_loaded_items) + say("There are too many items in stock.") + return + if(istype(I, /obj/item/stack)) + say("Loose items may cause problems, try use it inside wrapping paper.") + return + if(I.custom_price) + return TRUE + +/obj/machinery/vending/custom/ui_data(mob/user) + . = ..() + .["access"] = compartmentLoadAccessCheck(user) + .["vending_machine_input"] = list() + for (var/O in vending_machine_input) + if(vending_machine_input[O] > 0) + var/base64 + var/price = 0 + for(var/obj/T in contents) + if(T.name == O) + price = T.custom_price + if(!base64) + if(base64_cache[T.type]) + base64 = base64_cache[T.type] + else + base64 = icon2base64(icon(T.icon, T.icon_state)) + base64_cache[T.type] = base64 + break + var/list/data = list( + name = O, + price = price, + img = base64 + ) + .["vending_machine_input"] += list(data) + +/obj/machinery/vending/custom/ui_act(action, params) + . = ..() + if(.) + return + switch(action) + if("dispense") + . = TRUE + if(!vend_ready) + return + var/N = params["item"] + var/obj/S + vend_ready = FALSE + if(ishuman(usr)) + var/mob/living/carbon/human/H = usr + var/obj/item/card/id/C = H.get_idcard(TRUE) + + if(!C) + say("No card found.") + flick(icon_deny,src) + vend_ready = TRUE + return + else if (!C.registered_account) + say("No account found.") + flick(icon_deny,src) + vend_ready = TRUE + return + var/datum/bank_account/account = C.registered_account + for(var/obj/O in contents) + if(O.name == N) + S = O + break + if(S) + if(compartmentLoadAccessCheck(usr)) + vending_machine_input[N] = max(vending_machine_input[N] - 1, 0) + S.forceMove(drop_location()) + loaded_items-- + use_power(5) + vend_ready = TRUE + updateUsrDialog() + return + if(account.has_money(S.custom_price)) + account.adjust_money(-S.custom_price) + var/datum/bank_account/owner = private_a + if(owner) + owner.adjust_money(S.custom_price) + vending_machine_input[N] = max(vending_machine_input[N] - 1, 0) + S.forceMove(drop_location()) + loaded_items-- + use_power(5) + if(last_shopper != usr || purchase_message_cooldown < world.time) + say("Thank you for buying local and purchasing [S]!") + purchase_message_cooldown = world.time + 5 SECONDS + last_shopper = usr + vend_ready = TRUE + updateUsrDialog() + return + else + say("You do not possess the funds to purchase this.") + vend_ready = TRUE + +/obj/machinery/vending/custom/attackby(obj/item/I, mob/user, params) + if(!private_a) + var/mob/living/carbon/human/H + var/obj/item/card/id/C + if(ishuman(user)) + H = user + C = H.get_idcard(TRUE) + if(C?.registered_account) + private_a = C.registered_account + say("\The [src] has been linked to [C].") + + if(compartmentLoadAccessCheck(user)) + if(istype(I, /obj/item/pen)) + name = stripped_input(user,"Set name","Name", name, 20) + desc = stripped_input(user,"Set description","Description", desc, 60) + slogan_list += stripped_input(user,"Set slogan","Slogan","Epic", 60) + last_slogan = world.time + rand(0, slogan_delay) + return + + if(canLoadItem(I)) + loadingAttempt(I,user) + updateUsrDialog() + return + + if(panel_open && is_wire_tool(I)) + wires.interact(user) + return + + return ..() + +/obj/machinery/vending/custom/crowbar_act(mob/living/user, obj/item/I) + return FALSE + +/obj/machinery/vending/custom/Destroy() + unbuckle_all_mobs(TRUE) + var/turf/T = get_turf(src) + if(T) + for(var/obj/item/I in contents) + I.forceMove(T) + explosion(T, -1, 0, 3) + return ..() + +/obj/machinery/vending/custom/unbreakable + name = "Indestructible Vendor" + resistance_flags = INDESTRUCTIBLE + +/obj/item/vending_refill/custom + machine_name = "Custom Vendor" + icon_state = "refill_custom" + custom_premium_price = 100 + +/obj/item/price_tagger + name = "price tagger" + desc = "This tool is used to set a price for items used in custom vendors." + icon = 'icons/obj/device.dmi' + icon_state = "pricetagger" + custom_premium_price = 25 + ///the price of the item + var/price = 1 + +/obj/item/price_tagger/attack_self(mob/user) + price = max(1, round(input(user,"set price","price") as num|null, 1)) + to_chat(user, " The [src] will now give things a [price] cr tag.") + +/obj/item/price_tagger/afterattack(atom/target, mob/user, proximity) + . = ..() + if(!proximity) + return + if(isitem(target)) + var/obj/item/I = target + I.custom_price = price + to_chat(user, "You set the price of [I] to [price] cr.") diff --git a/code/modules/vending/assist.dm b/code/modules/vending/assist.dm index 5dafd3935c..b1b8519803 100644 --- a/code/modules/vending/assist.dm +++ b/code/modules/vending/assist.dm @@ -19,6 +19,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) refill_canister = /obj/item/vending_refill/assist resistance_flags = FIRE_PROOF + default_price = 125 + extra_price = 100 + payment_department = NO_FREEBIES /obj/item/vending_refill/assist icon_state = "refill_engi" \ No newline at end of file diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 2eaf24c493..d791ceedf1 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -138,12 +138,19 @@ /obj/item/clothing/head/christmashat = 3, /obj/item/clothing/head/christmashatg = 3, /obj/item/clothing/under/costume/drfreeze = 1) //End of Cit Changes + refill_canister = /obj/item/vending_refill/autodrobe + default_price = 180 + extra_price = 360 + payment_department = ACCOUNT_SRV /obj/machinery/vending/autodrobe/all_access desc = "A vending machine for costumes. This model appears to have no access restrictions." req_access = null +/obj/machinery/vending/autodrobe/canLoadItem(obj/item/I,mob/user) + return (I.type in products) + /obj/item/vending_refill/autodrobe machine_name = "AutoDrobe" icon_state = "refill_costume" diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 5a6380c322..4b73344c22 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -4,7 +4,7 @@ icon_state = "boozeomat" icon_deny = "boozeomat-deny" products = list(/obj/item/reagent_containers/food/drinks/drinkingglass = 30, - /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12, /obj/item/reagent_containers/food/drinks/bottle/gin = 5, /obj/item/reagent_containers/food/drinks/bottle/whiskey = 5, /obj/item/reagent_containers/food/drinks/bottle/tequila = 5, @@ -41,6 +41,9 @@ product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!" req_access = list(ACCESS_BAR) refill_canister = /obj/item/vending_refill/boozeomat + default_price = 120 + extra_price = 100 + payment_department = ACCOUNT_SRV /obj/machinery/vending/boozeomat/all_access desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. This model appears to have no access restrictions." diff --git a/code/modules/vending/cartridge.dm b/code/modules/vending/cartridge.dm index 35b1a1da7a..93fb3a0af8 100644 --- a/code/modules/vending/cartridge.dm +++ b/code/modules/vending/cartridge.dm @@ -16,6 +16,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) refill_canister = /obj/item/vending_refill/cart resistance_flags = FIRE_PROOF + default_price = 250 + extra_price = 500 + payment_department = ACCOUNT_SRV /obj/item/vending_refill/cart icon_state = "refill_pda" diff --git a/code/modules/vending/cigarette.dm b/code/modules/vending/cigarette.dm index f567c9765e..5895568158 100644 --- a/code/modules/vending/cigarette.dm +++ b/code/modules/vending/cigarette.dm @@ -20,6 +20,9 @@ /obj/item/storage/fancy/cigarettes/cigars/havana = 1, /obj/item/storage/fancy/cigarettes/cigars/cohiba = 1) refill_canister = /obj/item/vending_refill/cigarette + default_price = 75 + extra_price = 250 + payment_department = ACCOUNT_SRV /obj/machinery/vending/cigarette/syndicate products = list(/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 7, diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 521c1e0999..2155d0fe8b 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -173,6 +173,12 @@ /obj/item/clothing/suit/jacket/letterman_nanotrasen = 5, /obj/item/clothing/suit/hooded/wintercoat/polychromic = 5) refill_canister = /obj/item/vending_refill/clothing + default_price = 60 + extra_price = 120 + payment_department = NO_FREEBIES + +/obj/machinery/vending/clothing/canLoadItem(obj/item/I,mob/user) + return (I.type in products) /obj/item/vending_refill/clothing machine_name = "ClothesMate" diff --git a/code/modules/vending/coffee.dm b/code/modules/vending/coffee.dm index 355d037f99..f4a8b2503e 100644 --- a/code/modules/vending/coffee.dm +++ b/code/modules/vending/coffee.dm @@ -14,6 +14,9 @@ /obj/item/reagent_containers/food/condiment/sugar = 1) refill_canister = /obj/item/vending_refill/coffee + default_price = 45 + extra_price = 150 + payment_department = ACCOUNT_SRV /obj/item/vending_refill/coffee machine_name = "Solar's Best Hot Drinks" diff --git a/code/modules/vending/cola.dm b/code/modules/vending/cola.dm index 57cf315209..5bbd0c3d02 100644 --- a/code/modules/vending/cola.dm +++ b/code/modules/vending/cola.dm @@ -21,6 +21,9 @@ /obj/item/reagent_containers/food/drinks/soda_cans/grey_bull = 1, /obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy = 1) refill_canister = /obj/item/vending_refill/cola + default_price = 45 + extra_price = 200 + payment_department = ACCOUNT_SRV /obj/item/vending_refill/cola machine_name = "Robust Softdrinks" diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 8f257d07ec..2e574a50a1 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -29,6 +29,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) refill_canister = /obj/item/vending_refill/dinnerware resistance_flags = FIRE_PROOF + default_price = 50 + extra_price = 250 + payment_department = ACCOUNT_SRV /obj/item/vending_refill/dinnerware icon_state = "refill_cook" \ No newline at end of file diff --git a/code/modules/vending/engineering.dm b/code/modules/vending/engineering.dm index e067c094f6..20ca364277 100644 --- a/code/modules/vending/engineering.dm +++ b/code/modules/vending/engineering.dm @@ -29,3 +29,6 @@ /obj/item/stock_parts/manipulator = 5) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF + default_price = 450 + extra_price = 500 + payment_department = ACCOUNT_ENG diff --git a/code/modules/vending/engivend.dm b/code/modules/vending/engivend.dm index 15da7cab15..e5571d1d6a 100644 --- a/code/modules/vending/engivend.dm +++ b/code/modules/vending/engivend.dm @@ -30,6 +30,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) refill_canister = /obj/item/vending_refill/engivend resistance_flags = FIRE_PROOF + default_price = 450 + extra_price = 500 + payment_department = ACCOUNT_ENG /obj/item/vending_refill/engivend icon_state = "refill_engi" \ No newline at end of file diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index e663dca7ce..81c49eeb31 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -11,6 +11,9 @@ premium = list(/obj/item/melee/skateboard/pro = 3, /obj/item/melee/skateboard/hoverboard = 1) refill_canister = /obj/item/vending_refill/games + default_price = 50 + extra_price = 250 + payment_department = ACCOUNT_SRV /obj/item/vending_refill/games machine_name = "\improper Good Clean Fun" diff --git a/code/modules/vending/kinkmate.dm b/code/modules/vending/kinkmate.dm index acfeeddaa9..37f4e380ce 100644 --- a/code/modules/vending/kinkmate.dm +++ b/code/modules/vending/kinkmate.dm @@ -40,6 +40,9 @@ /obj/item/clothing/under/pants/chaps = 5 ) refill_canister = /obj/item/vending_refill/kink + default_price = 80 + extra_price = 250 + payment_department = NO_FREEBIES /obj/item/vending_refill/kink machine_name = "KinkMate" diff --git a/code/modules/vending/liberation.dm b/code/modules/vending/liberation.dm index affc1dfed7..c75d313c52 100644 --- a/code/modules/vending/liberation.dm +++ b/code/modules/vending/liberation.dm @@ -28,3 +28,6 @@ /obj/item/reagent_containers/food/snacks/burger/superbite = 3) //U S A armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF + default_price = 150 + extra_price = 500 + payment_department = ACCOUNT_SEC diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm index e2c97b32db..09cbd006d0 100644 --- a/code/modules/vending/liberation_toy.dm +++ b/code/modules/vending/liberation_toy.dm @@ -25,3 +25,6 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/donksoft + default_price = 150 + extra_price = 300 + payment_department = ACCOUNT_SRV diff --git a/code/modules/vending/magivend.dm b/code/modules/vending/magivend.dm index ab7670c453..525b9f1af2 100644 --- a/code/modules/vending/magivend.dm +++ b/code/modules/vending/magivend.dm @@ -16,3 +16,6 @@ contraband = list(/obj/item/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50, "magic" = 100) resistance_flags = FIRE_PROOF + default_price = 250 + extra_price = 500 + payment_department = ACCOUNT_SRV diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index d32af7de03..af8df11cc6 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -47,6 +47,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/medical + default_price = 250 + extra_price = 500 + payment_department = ACCOUNT_MED /obj/item/vending_refill/medical machine_name = "NanoMed Plus" diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm index a048d253c5..9d1885c769 100644 --- a/code/modules/vending/medical_wall.dm +++ b/code/modules/vending/medical_wall.dm @@ -18,6 +18,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/wallmed + default_price = 250 + extra_price = 500 + payment_department = ACCOUNT_MED /obj/item/vending_refill/wallmed machine_name = "NanoMed" diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm index 37ce00069c..4cc19d4df5 100644 --- a/code/modules/vending/megaseed.dm +++ b/code/modules/vending/megaseed.dm @@ -57,6 +57,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) refill_canister = /obj/item/vending_refill/hydroseeds resistance_flags = FIRE_PROOF + default_price = 100 + extra_price = 350 + payment_department = ACCOUNT_SRV /obj/item/vending_refill/hydroseeds icon_state = "refill_hydro" diff --git a/code/modules/vending/nutrimax.dm b/code/modules/vending/nutrimax.dm index 42b7848ac1..b55a39ff1e 100644 --- a/code/modules/vending/nutrimax.dm +++ b/code/modules/vending/nutrimax.dm @@ -19,6 +19,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) refill_canister = /obj/item/vending_refill/hydronutrients resistance_flags = FIRE_PROOF + default_price = 100 + extra_price = 250 + payment_department = ACCOUNT_SRV /obj/item/vending_refill/hydronutrients icon_state = "refill_hydro" diff --git a/code/modules/vending/plasmaresearch.dm b/code/modules/vending/plasmaresearch.dm index 40b709f5b5..412a9fb33c 100644 --- a/code/modules/vending/plasmaresearch.dm +++ b/code/modules/vending/plasmaresearch.dm @@ -11,3 +11,6 @@ /obj/item/assembly/prox_sensor = 6, /obj/item/assembly/igniter = 6) contraband = list(/obj/item/assembly/health = 3) + default_price = 400 + extra_price = 600 + payment_department = ACCOUNT_SCI diff --git a/code/modules/vending/robotics.dm b/code/modules/vending/robotics.dm index 852b7d65f0..ca07724460 100644 --- a/code/modules/vending/robotics.dm +++ b/code/modules/vending/robotics.dm @@ -21,3 +21,5 @@ /obj/item/crowbar = 5) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF + default_price = 600 + payment_department = ACCOUNT_SCI diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 09681def64..2fc1afa375 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -25,6 +25,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/security + default_price = 650 + extra_price = 700 + payment_department = ACCOUNT_SEC /obj/machinery/vending/security/pre_throw(obj/item/I) if(istype(I, /obj/item/grenade)) diff --git a/code/modules/vending/snack.dm b/code/modules/vending/snack.dm index 9dda649b24..aff02b019a 100644 --- a/code/modules/vending/snack.dm +++ b/code/modules/vending/snack.dm @@ -26,77 +26,15 @@ /obj/item/storage/box/donkpockets = 2) refill_canister = /obj/item/vending_refill/snack - var/chef_compartment_access = "28" //ACCESS_KITCHEN + canload_access_list = list(ACCESS_KITCHEN) + default_price = 60 + extra_price = 160 + payment_department = ACCOUNT_SRV + input_display_header = "Chef's Food Selection" /obj/item/vending_refill/snack machine_name = "Getmore Chocolate Corp" -/obj/machinery/vending/snack/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/reagent_containers/food/snacks)) - if(!compartment_access_check(user)) - return - var/obj/item/reagent_containers/food/snacks/S = W - if(!S.junkiness) - if(!iscompartmentfull(user)) - if(!user.transferItemToLoc(W, src)) - return - food_load(W) - to_chat(user, "You insert [W] into [src]'s chef compartment.") - else - to_chat(user, "[src]'s chef compartment does not accept junk food.") - - else if(istype(W, /obj/item/storage/bag/tray)) - if(!compartment_access_check(user)) - return - var/obj/item/storage/T = W - var/loaded = 0 - var/denied_items = 0 - for(var/obj/item/reagent_containers/food/snacks/S in T.contents) - if(iscompartmentfull(user)) - break - if(!S.junkiness) - SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src, TRUE) - food_load(S) - loaded++ - else - denied_items++ - if(denied_items) - to_chat(user, "[src] refuses some items.") - if(loaded) - to_chat(user, "You insert [loaded] dishes into [src]'s chef compartment.") - updateUsrDialog() - return - - else - return ..() - -/obj/machinery/vending/snack/Destroy() - for(var/obj/item/reagent_containers/food/snacks/S in contents) - S.forceMove(get_turf(src)) - return ..() - -/obj/machinery/vending/snack/proc/compartment_access_check(user) - req_access_txt = chef_compartment_access - if(!allowed(user) && !(obj_flags & EMAGGED) && scan_id) - to_chat(user, "[src]'s chef compartment blinks red: Access denied.") - req_access_txt = "0" - return 0 - req_access_txt = "0" - return 1 - -/obj/machinery/vending/snack/proc/iscompartmentfull(mob/user) - if(contents.len >= 30) // no more than 30 dishes can fit inside - to_chat(user, "[src]'s chef compartment is full.") - return 1 - return 0 - -/obj/machinery/vending/snack/proc/food_load(obj/item/reagent_containers/food/snacks/S) - if(dish_quants[S.name]) - dish_quants[S.name]++ - else - dish_quants[S.name] = 1 - sortList(dish_quants) - /obj/machinery/vending/snack/random name = "\improper Random Snackies" icon_state = "random_snack" diff --git a/code/modules/vending/sovietsoda.dm b/code/modules/vending/sovietsoda.dm index 39364d78da..d820794660 100644 --- a/code/modules/vending/sovietsoda.dm +++ b/code/modules/vending/sovietsoda.dm @@ -7,3 +7,6 @@ contraband = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola = 20) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF + default_price = 1 + extra_price = 1 + payment_department = NO_FREEBIES diff --git a/code/modules/vending/sovietvend.dm b/code/modules/vending/sovietvend.dm index c555362fb6..daf64d5f3e 100644 --- a/code/modules/vending/sovietvend.dm +++ b/code/modules/vending/sovietvend.dm @@ -23,6 +23,9 @@ premium = list() refill_canister = /obj/item/vending_refill/soviet + default_price = 1 + extra_price = 1 + payment_department = NO_FREEBIES /obj/item/vending_refill/soviet machine_name = "sovietvend" diff --git a/code/modules/vending/sustenance.dm b/code/modules/vending/sustenance.dm index 9783607a21..55e6b02e8e 100644 --- a/code/modules/vending/sustenance.dm +++ b/code/modules/vending/sustenance.dm @@ -14,6 +14,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) refill_canister = /obj/item/vending_refill/sustenance resistance_flags = FIRE_PROOF + default_price = 0 + extra_price = 0 + payment_department = NO_FREEBIES /obj/item/vending_refill/sustenance icon_state = "refill_cook" diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm index 08bb4615bb..a00dd17a9c 100644 --- a/code/modules/vending/toys.dm +++ b/code/modules/vending/toys.dm @@ -25,6 +25,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/donksoft + default_price = 150 + extra_price = 300 + payment_department = ACCOUNT_SRV /obj/item/vending_refill/donksoft machine_name = "Donksoft Toy Vendor" diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index acd58959f1..0da6a68583 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -1,6 +1,15 @@ /obj/item/vending_refill/wardrobe icon_state = "refill_clothes" +/obj/machinery/vending/wardrobe + default_price = 350 + extra_price = 400 + payment_department = NO_FREEBIES + input_display_header = "Returned Clothing" + +/obj/machinery/vending/wardrobe/canLoadItem(obj/item/I,mob/user) + return (I.type in products) + /obj/machinery/vending/wardrobe/sec_wardrobe name = "\improper SecDrobe" desc = "A vending machine for security and security-related clothing!" @@ -22,6 +31,7 @@ premium = list(/obj/item/clothing/under/rank/security/officer/formal = 5, /obj/item/clothing/head/beret/sec/navyofficer = 5) refill_canister = /obj/item/vending_refill/wardrobe/sec_wardrobe + payment_department = ACCOUNT_SEC /obj/item/vending_refill/wardrobe/sec_wardrobe machine_name = "SecDrobe" @@ -57,6 +67,7 @@ /obj/item/clothing/suit/apron/surgical = 5, /obj/item/clothing/mask/surgical = 5) refill_canister = /obj/item/vending_refill/wardrobe/medi_wardrobe + payment_department = ACCOUNT_MED /obj/item/vending_refill/wardrobe/medi_wardrobe machine_name = "MediDrobe" @@ -80,6 +91,7 @@ /obj/item/clothing/head/hardhat = 5, /obj/item/clothing/head/hardhat/weldhat = 3) refill_canister = /obj/item/vending_refill/wardrobe/engi_wardrobe + payment_department = ACCOUNT_ENG /obj/item/vending_refill/wardrobe/engi_wardrobe machine_name = "EngiDrobe" @@ -101,6 +113,7 @@ /obj/item/clothing/under/rank/engineering/atmospheric_technician/skirt = 5, /obj/item/clothing/shoes/sneakers/black = 5) refill_canister = /obj/item/vending_refill/wardrobe/atmos_wardrobe + payment_department = ACCOUNT_ENG /obj/item/vending_refill/wardrobe/atmos_wardrobe machine_name = "AtmosDrobe" @@ -119,6 +132,7 @@ /obj/item/clothing/head/soft = 5, /obj/item/radio/headset/headset_cargo = 3) refill_canister = /obj/item/vending_refill/wardrobe/cargo_wardrobe + payment_department = ACCOUNT_CAR /obj/item/vending_refill/wardrobe/cargo_wardrobe machine_name = "CargoDrobe" @@ -141,6 +155,7 @@ /obj/item/clothing/mask/bandana/skull = 2) contraband = list(/obj/item/clothing/suit/hooded/techpriest = 2) refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe + payment_department = ACCOUNT_SCI /obj/item/vending_refill/wardrobe/robo_wardrobe machine_name = "RoboDrobe" @@ -163,6 +178,7 @@ /obj/item/radio/headset/headset_sci = 4, /obj/item/clothing/mask/gas = 5) refill_canister = /obj/item/vending_refill/wardrobe/science_wardrobe + payment_department = ACCOUNT_SCI /obj/item/vending_refill/wardrobe/science_wardrobe machine_name = "SciDrobe" @@ -182,6 +198,7 @@ /obj/item/clothing/under/rank/civilian/hydroponics/skirt = 5, /obj/item/clothing/mask/bandana = 4) refill_canister = /obj/item/vending_refill/wardrobe/hydro_wardrobe + payment_department = ACCOUNT_SRV /obj/item/vending_refill/wardrobe/hydro_wardrobe machine_name = "HyDrobe" @@ -206,6 +223,7 @@ /obj/item/clothing/glasses/regular/jamjar = 1, /obj/item/storage/bag/books = 1) refill_canister = /obj/item/vending_refill/wardrobe/curator_wardrobe + payment_department = ACCOUNT_CIV /obj/item/vending_refill/wardrobe/curator_wardrobe machine_name = "CuraDrobe" @@ -234,6 +252,7 @@ /obj/item/clothing/neck/petcollar = 3, /obj/item/storage/belt/bandolier = 1) refill_canister = /obj/item/vending_refill/wardrobe/bar_wardrobe + payment_department = ACCOUNT_SRV /obj/item/vending_refill/wardrobe/bar_wardrobe machine_name = "BarDrobe" @@ -259,6 +278,7 @@ /obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2, /obj/item/book/granter/crafting_recipe/coldcooking = 2) refill_canister = /obj/item/vending_refill/wardrobe/chef_wardrobe + payment_department = ACCOUNT_SRV /obj/item/vending_refill/wardrobe/chef_wardrobe machine_name = "ChefDrobe" @@ -290,6 +310,7 @@ /obj/item/screwdriver = 2, /obj/item/stack/cable_coil/random = 4) refill_canister = /obj/item/vending_refill/wardrobe/jani_wardrobe + payment_department = ACCOUNT_SRV /obj/item/vending_refill/wardrobe/jani_wardrobe machine_name = "JaniDrobe" @@ -321,6 +342,7 @@ /obj/item/clothing/shoes/laceup = 3, /obj/item/clothing/accessory/lawyers_badge = 3) refill_canister = /obj/item/vending_refill/wardrobe/law_wardrobe + payment_department = ACCOUNT_CIV /obj/item/vending_refill/wardrobe/law_wardrobe machine_name = "LawDrobe" @@ -368,6 +390,7 @@ /obj/item/storage/bag/chemistry = 3, /obj/item/fermichem/pHbooklet = 3)//pH indicator) refill_canister = /obj/item/vending_refill/wardrobe/chem_wardrobe + payment_department = ACCOUNT_MED /obj/item/vending_refill/wardrobe/chem_wardrobe machine_name = "ChemDrobe" @@ -386,6 +409,7 @@ /obj/item/storage/backpack/genetics = 3, /obj/item/storage/backpack/satchel/gen = 3) refill_canister = /obj/item/vending_refill/wardrobe/gene_wardrobe + payment_department = ACCOUNT_MED /obj/item/vending_refill/wardrobe/gene_wardrobe machine_name = "GeneDrobe" @@ -406,6 +430,7 @@ /obj/item/storage/backpack/virology = 3, /obj/item/storage/backpack/satchel/vir = 3) refill_canister = /obj/item/vending_refill/wardrobe/viro_wardrobe + payment_department = ACCOUNT_MED /obj/item/vending_refill/wardrobe/viro_wardrobe machine_name = "ViroDrobe" @@ -436,6 +461,7 @@ /obj/item/clothing/glasses/sunglasses/gar/supergar = 1, /obj/item/clothing/gloves/color/captain = 1) refill_canister = /obj/item/vending_refill/wardrobe/cap_wardrobe + payment_department = ACCOUNT_CIV /obj/item/vending_refill/wardrobe/cap_wardrobe machine_name = "Captain's Wardrobe" diff --git a/code/modules/vending/youtool.dm b/code/modules/vending/youtool.dm index c027cea6e5..009621b85a 100644 --- a/code/modules/vending/youtool.dm +++ b/code/modules/vending/youtool.dm @@ -21,6 +21,9 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) refill_canister = /obj/item/vending_refill/tool resistance_flags = FIRE_PROOF + default_price = 125 + extra_price = 350 + payment_department = ACCOUNT_ENG /obj/item/vending_refill/tool icon_state = "refill_engi" \ No newline at end of file diff --git a/config/game_options.txt b/config/game_options.txt index 8c48ac6ede..51e68ac273 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -583,6 +583,9 @@ NIGHTSHIFT_TOGGLE_PUBLIC_REQUIRES_AUTH ## A cap on how many monkeys may be created via monkey cubes MONKEYCAP 64 +## Enable the capitalist agenda on your server. +ECONOMY + ## Uncomment to use TG-style combat #DISABLE_STAMBUFFER diff --git a/config/vr_config.txt b/config/vr_config.txt new file mode 100644 index 0000000000..8ca2334d5f --- /dev/null +++ b/config/vr_config.txt @@ -0,0 +1,13 @@ +#List the potential virtual reality Z-levels here. awaymissionconfig copypasta follows. + +#Maps must be the full path to them +#Maps should be 255x255 or smaller and be bounded. Falling off the edge of the map will result in undefined behavior. +#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START + +#!!IMPORTANT NOTES FOR HOSTING VR MAPS!!: +#Do NOT tick the maps during compile -- the game uses this list to decide which map to load. Ticking the maps will result in them ALL being loaded at once. +#DO tick the associated code file for the virtual reality levels you are enabling. Otherwise, the map will be trying to reference objects which do not exist, which will cause runtime errors! + +#_maps/RandomZLevels/VR/murderdome.dmm +#_maps/RandomZLevels/VR/snowdin_VR.dm +#_maps/RandomZLevels/VR/syndicate_trainer.dm \ No newline at end of file diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi index ecb66d0119b504f18f5309f07896199483565a1d..532324fcf44b6d70825d63746d2382a84c312c29 100644 GIT binary patch literal 23582 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∾L3`w(YM0%hRtZ`sFTbPx$a97mjOJK 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 R0o!1ZHdJ4uLftmv{{YB;Je>dl diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index c58fb5d9406cbabdeed2f34783af484385c4759f..a60620bfefc8bd4100be13b369d1a9843c194c47 100644 GIT binary patch delta 31993 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

`guvNUJQ^)1}A}cv~1HS=EQQ`Dq%%(SU&)DB& zQi%_zsGi(BzU-5)Jj#9JE?-Yd=e=f~es!M@Y06B8ph;axXr|24Y>%OXa|wb>Vl-w; zLRBMcj|jCZE_!?c(Ok+FAXafaVFehKT*d*{m1oK;zPM$>V_OhSWoh-?wws8OTC&mZ z=^67bfd8C4KeX9TrX?CmI|WjK%GDb zvIsA6{=$OB4J+oG6uy0uawoH*;`bV!Xh`tmjDxnij!}*wSxHk?>tk-#mz-A>|L@8j zeD{#{ykCSEKW=qP#<~#_F)up<#U&(MK-N|8%E_5tr3OcgMxg?+PuQ9O20j01puazq zqkdt$3@!BQd{Y8iB7k1~#dAOXmOL_`N52ig`~o|=bo{S8!C83Zub0w$4+e0u)1*Dw_JPtHH)9QQFx6?S!E@R>I{~?t8{1j+NW)V_R5JBO{G}V< z29$9Re1nd^MhwvRswb<&U(&N(1`VSAR~-&r?jj)A-<;8Y#4y1Kfu9?ix38ZmQn!Bb F-vGIY3331c delta 32210 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

-
NameDescriptionRewardCompletionStatus
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 @gHlzp$#A+MnKBEx7bEhpc{QJxHAx$I*@!R&9 zi>~}zesbCK;MU}nkD|2(_2b6IC{d+uJ-uRk#|em65*ck84q|uJk}6`yE*&v%6h>~c;NtwqNylB=d;wf?@rHEjq$Kf8GxI>VKxR-I5pY+@S9`P>fm z^!Q^FD1A5Xi2M`3ae|)S84JWl?<({)qmI?nrr$=eumExcNPPgjon81I7!Ss!3xR*u z-LUWq{K|EyxT)SzV126bTeM(NtC{keUZLf59(@Dm2wrZ)hLmFGVhr53Yd+&5k}vu* zT@Rxx6uu45wv9gl3%jJ>4d8QHS8yZ5{y3R zt|w^p3e%|MA>0|hHR18MNH)t4Kywn;`P|*X2rr@2ZJXYlb4u(>9Rwi#iK)p88}Hd< z8bLi(Rn;`B^6aNJ_-NQ_sTuK3PTZwzA0alasT%cvt?Ru#PPT@wVKvPgnms5GgavvZ z4>S#$Eje?2VdrTB1ljF{-)qu!G9I@t&0U)Py;d#L&3IY$_#F{l9PX%-5faUN-IH{q zS)VE>>Hc_32Na=A{i1!onSik76F%SCfhOhh`y2S!>{0}%2VLZ4lO9O0g%;Y^D=GqR z22$wBz*U=>(su6tBxaM4BLS{;Z`$CMTAq-sEhruW(6e>E%gf6_sc+Kl}HH z27mXlUkSfzs)*8XS4p6;BJ|hWshh^phS!am%VnQlX^6!gJ&gDviX;DuD&e=x*bW7i zpmIBUXX7=#y(oky)woU5tbqyIHe3BUX%AT(rAHPl#g59 z=6k2-cPBq{LGd2v(L&$5VjQf04P@6#(t{Q)F*iAJ6EqFg85C>Z-P28kPq8Lbw|7~H zstNcC35nuobxV65o_B;2wGGenQBtOo&FqD6NHy2(d_kGTNBV!JwS3i&Z`=Am1VqC07ZM}mV>-_c%ti0Op=)&r$RJj4FlhF8=v2l@c(uH&-{chv_*QK!jpZ^)$-Shgc33d1M zkbdPVt}`_@UEN9u+r1!ZU}%(qGQRZuIIZ#T^u;5qY3_*(RmwsMAdA2Y2>78TJVixC zkAmTo6DX}~$2Pq4oUe)VNsQ@5N-8TP7r^xyi{k6s%ZbY5|du4q$Z%;I#sxc>=^!s=x zpJPhlnNXOhF&#Dsw8REzru;*TTWJnOBGN?EVf$T4QeZ9t+SjLQV7O(D)MB#Q-!X@L zD>7Ya|Mx!f_oAoA!qBq9sygpdEpFX>%YC%%IG+a!@)h>EPtcC@LQLP$Yt-Z8150Yi z@crQ6eWFI!IcmK>ZMN3-XI`%bJ{WWufK;Gh`M9zsOQsmE%g!!aMy=$5@e2qHTr&xe z08_%IiWznzS%D|bJY3$bKXizZ-+5N}-{ecw9}Kz-+dOgo4#NGQ!wql$K(~4^K>|OL zkpH^XUaJY;eRQNB%Hal!-+X9?nVq73#8LB)?uXWK%_}<=S-(GaWq}E>?9}eTw`oU& zyuV8RPhCoN{&|K^O@Ja#d*Pjhz03PCy@Z@w{3`DDOzS;C`^vai#O!xpg&Z20v>ps* z-hWk?j-}q?%&u5HZ4UbT(!huYvYQ&Za86a#J3;hn00l|VIQd8glW9Q^ttGVmDrQn5 z7n^C8(mGR%b29TgCkIWyMur~Fub%J)y=~Sqy*K-R^Q(OSH)XaV=B=;|>dz`Z{C+SC zcO^>x*mXAOlv3$}?Hi_xRwhg8#`Av(KW4NvQrf+Jb3?9iYm!)`tkRx1;ykdplU04~ zhv#LySF>^u8>7ds^R>2#gSLAKFPsH5EL{efE&ZE!;HEFVIS8k)pohrOd+UTYQV1{Y z`Meh;Y|<9JCbEX9O=E5&t9*j;En+kBpbTkjhA3j5^4pAxK7GyvU5{eSzw_fn9mimd0h1~ zdhle}T*`;aU3kR#+3w9C!<-HjO=CU#Hqvv=R|$+ZEtPHy-)NXHw1|but#|K!(7uXK zuZ0N+IXe1K7T3CxrvCDE^LwQ@qe|5G(?TWEpup|zI>ICR0xpF0!P=@FN@5Fj$r?V$ z&(~b~FkY6uu|R21z6Rw9rFVoVs5Nd)9+u-|9^8=exI&AU{&~2*a_!#VS0rXB+nk$K zcd`zT{#}#Xue9@89b$r62N+OGyLsU(H~7 zlU#H9D zmvo5ZB*YM^xYQ@}DMkM67A&MR8cKO=*MBi3|3=e71zU;N8XPp~U{d5942}Fdp0%=@ z(ocDF=3 z-8jrn4XS)5^a3A6$8<|#tHQyK2(eG zHsGCE-i>W!o39{Q%)Zi||KC^ww6&ycLwwDes9F8S_#(k|6kZ*D>f}_gJd%4EnuroT zxUxYk^EDjyU-my}lqN&scSHmDuw9sDih=2T~E|pcByq$ zNmu?en~TDkaxiP>s{UG=jiREdi2EyRzq#O>#NtCi^n*#FvczD$7?EW4`NKHq48dyp zR&6W^bT0x#jFRwox>q>b7R8H562=hv^Gi#a#+5E(v_AU5uNDsI>FL>%>3(XZZ$JX* z%>_!w{1x&tX9ZjzwlCXnJM}PsjeN$ZCy{S?ER*jI5Y}mO&Az}jTG3Ljo9JF$K&1!? z>FZkdH(bw&he*8?tqqxkzTGWyruCwxX*)4`owv92fehV`y_(9i}dRq?t_O=J3 zn4lm{I90|Hpp|oSlERPbN)nlmHF)D*+-5E`zsw?58JqvU>4n&xQ;tx?>B@K?Qi4Hf z?CbW6i!~-w=Tl`XLT_&IVcBP5!mnS~b`lDP!yQX3cS!^GU;_DY1JZqY{L&}WoG_h3 z{z>zk=FYtCW%dDfXA)wIBB_|nY*?l9^V3f$Fe>ENfJlJvG2^K@M^sa=OMBCGzvCm@ zbj!&ezA_gHF8Sy?K?hyGj_X{y$f_?`dnWaXY4RJTu#8heXH$I7=@gn9dT_FQolCf7 zYS8Uzpp5lV4Na5gtp0PhAoOF@T^fX~9j-|Oh>Ky!d{w7~O(hs2>oFc~1@okR2^d(# zVTuNswL$9O_+*&u!S5Q9I~%xJ{b#|&GiHqP^J?pp$*+xF*TXY7_6GaVw1{!inK{_y z!^fq5I$MOG@&t9gJ78Rdka^!%UGZB-A5r5mR$R~L@ZY@S&hPkf$929aRZNqle0Ng0 z{_yN3!#RArP3na#&YQSYV5l1F;j~?TvuEuKj+d1quFA=}CICVaqfn#~*6dm2c2lKt zo=glx=w2Qv;n$>3oNfLdnbY8PesnZ(knaYa>OwsD@1nEAR7RcJR}E)+iNO8OWj5aL zq_%s_ytW3|tr;A-%J*8@@|e9gCYTbZMrL}g9Rqp)TpD_6{}gh(#YY_m`>*R`<%a|;`{7=)Tosfv&11#je41+lnNw2Yb74rp<_5%XjU zqozfz$FNUi(2e{ zQ*{6UG>?gum6&rMunJfsQTlW_~C?A(6x_K`1 zq~unG%+|OZFT4AcwGHr;Otk@9U{_)!3PB`6DS{iy0WeTpz zou(;u)#Ps7W5D=7uK#)I4xQcBI1NEu|R`#`YWAJj8+m>%5Ea>GI|sZpf?Qgxty!Y0lzs|Son#FiRtL*EKF@A zk}uNH1w}Fl%lujOl7Sk5utSOaT)WK{2X22DnTlqLlz(vfAspj#I@zTX3%TviKdhXk zv{QyKxIcy$Co0Js_$MP<;#HxbWLcwj>y#<;_rC~|?Q_(LvcJC%9zE!y(MMn>uE)&v zHQa@r(@K|)Zx$eItMAKLo(4`K@2qHRKlgVNd2VI36EL(#!E%YLao19ZBaPx#!*Wb? zG`&n}-y%r^XH(QvWwi2>Wx-=hw98rr$#r}P$Kgi%V1(;8w9APA6%9>$hHB)OKR)_+ zB0}A0JO49mH&+1LY4tde)no}BD&>*Da1vml5f_vP$A|+;92J$Yh57=+T}LKwuWq5R zvfKNZtqXI`YL=(%^Sj;)bYrpG=Wct@;ZI}q-!eU8@9i#!F2v)46}M3f*!z`1W8Bfb9XB_%Y~r-cys{O&c>E$OB; z)5BqdjT?3jR(4fNS}7jKDYe7KbXOc|Q?a$%p@+4*B$E~98z=<~3Z7Z@C!~tnj6I&& z>KpG2-rR7Vt~bjhn`QA|%-o)rOWx)|<86<*_6u;V?P({`eh(|Lr)x;!pz<1boq}-e z%LCbN_uhtj16-fS+M#;p)`!#7o{p5+%4?g|*=%{&dJkx0dF@xnYhavKW%tks(g$N* zMrAH$Q_2J$q6Zop=Pb@Mcu?HDb>k-(x-JMzo*{^1p)N<3v!zluL*{O$Wmv2wamp0AJrd}@Ibxip#8c%`INj`T`{Y6D*Lu~ z^u+bba+`@HL3;QY$1##B6>-$qhCT-8`f&N+RZ_2w<94ho<%J7$1(m5^ln?^0nF(lw zg4Zi=Y~LTny-6gi?=@6{OGKaZIc_Hnk*|9_l5YA4M!}d=SZ`+RivKkF(&Sdb1{9Ei zbK!Sm{;v_T>7{5-lOtOh+THyIrBm=n7w`R99-m0`di!T~OB&I& zV#S2%0Q9lgOGEMuhuz6*i6pUl`0Od`+3P){J;LOig;)m^K`<1IK;OpK*qX_qHA^W> zUW`}>>^DV-USVNz)mHkjiuj#>&vnGVm9|laOcm={xh5(?zWbGS*uQnD4|(tR#f97% z+I;?IX*QB<56p(FW%=1n2T5$9>S%*xHhdQo2X}Ethv@W5I~|BWzb>Rx8-F~~cG{_p zxPdwRNbb|!+5;t`GC%3r?~kRQCl>UQX5-&vz1aJ0uRhtpYo&;CG$G*)>osO$qNm+kdBoWj=%)Om zKk~QjsCwx7-@kTW@>QFN6+vRA^=1OHa6lqIFzUcSH@2{oXp!;j|xX(D&VQ&@-4dq$LsAq0hub!7-hr@7)V{W#4zSgy|p= zc$By9`7!w-ax!F}gVJs9vhdt?az6wO!2*p~-DDBOq(Xu1ug)pIA+&FZ(lf%cY?(7^ z?7zEi{&L4L>-hL37x{;FSSM&?yEeZuch*<`_1+cG|5deZA_83+Ub9dZ*joBAe@9!N z)8s*2S}?TpyLDWP_xN>Sm~*QVjTg`X)xRsCL;V+Ckhfb%+zC@?*qrC^pDz{PNbDRo zuVN`cW}Wr)hPCU1q8Z}Qj1Gv;DQck{wT-OXLkk|sd7-&uU|Iuq!agyVZPh zi#{?7)c!c$-5q~~_CIK|*`mcYY`C8Pm2FKjMznGX;^yJ0P9g7glCT2AVs?9!@G0Np zBu+4QIMG;r>9xuBq`O(Ur&9~qTZj$pu6&j3u+dvHWF=Yg>5u$a`=NUUT0QB!&8{pq zr2?2_);jp4>lV`6XD;206VI8qll+3o$_8E16@Q5*Z9QP+$Qf2wOxy6Y(!NOiSRY?4 z%p9$Jl7#4&*#H{G;_ls3eyc6%XSVU!nHcvcTMiP47&0mIr{WY4=vj4H<_s`<7ZIx$ zCMR1L6_Cq*dY-G*6NrUG0$Hq6$<}ztrVj4C5fm29;J9xX8$##&_K{ZNP-aHRt|+h+ z{+*k5NQ~@Cyi3iNLkoPb7Kc4nRY zqw*!n|4c7Rc4i2L(D8+YhTgHO{qY#;29fgrtd}3rW3r0>ebo{Ef3jBo-|U$oiuPz0 zzE$))x}*Q^L(B3a-L*c8eODsk0N{MSK`p}QqHhNvez6`pgE1{{gB%8C`4E`pDe{E0@Kz==2D7!O%vf$XV|S6=IDl)A8*X4*zx0N)@X4t^~0F=c@_X ztwa+hm8L1&T>Sj`54oI9)UOv}wvS6|b!c7o^VfWHf=qo)ed}8wEYMTTwgR&KH@!vVP+uHuVQYg`W^;_@hz|Xnw=?K?T6=h`@ zYCKGarGlKMpcm#$c1Jlo!@}3_JI2@s4ft1^g4`NX#Yfhdu(B zu^^u_hOa@_M`78e> zYDO{(#$w@R0lj*0quUZ86SdCREy0eEof!X7pG|rNYQB>ehDRTE*5r; zZ#!RPY!Fl~?el$kk2LK5fEG#yFSZbbu7MS-$#oWAC>D=n-=q6S_GI1jS1U2gacB}< zm|%n=ybB!YLORv*VF66Hlui?V^X5&#+8h+&G=u$P7?JOfU=8xt>I?bxK_HwvRMFkN zWcc;zW-Q6TT>s`ri3V8Q=yBwxb?I4&!Nxg1(|b2WL{GSR{{~Q87G`g5?NN!K2=z|> zQI&eyGU-3PRe>{i)@c*o3a%$?*WQ=g^p&PoT`Ef5ZVQ_}?rv51R-ew1mzQ6-)-Er@ ztUEe7cJSy^6TgH{-9btA%4B)|3o)CKyUZbg9jA-z9W8f+^*cXlFLB&c!2LZK9~;Za zDxeaE@o&0CMR=^OS5Fd2j*YGpb`@DFSMdqkm~3=DUg{xn2(+4KKu4_f?%;V|2<_iX z3Cz*lTtzNZQd~in|GG|Xwt=-|tQkRBZYtz^>@Vg|a-%g&Iw448_5<4x(7kIN_@*K% zdSbe^JGKZX@>|g0KWgdjbmt5r66uQ%5eP=ivR&EHo=WG+Q=Lz#Bo@;91|BsdHuaZm z=|!|W2}jycP#jr{BUrtULl$bCUX}ejISO6>B$+RTmRMz2e_irAz>!&Hh;TbBNitJ6 z+sWlwVr1XFZ+|~|Lak;glCy_#9sWT*S!N$RvkSR1QWBT;qXbS@ zvQg(psEfks^f&pBUkDb&3p+k}M)eDL&WFp|-;?D#ZR`@0%Oo#! zc6JWoahPOYWIu<52|db$XgCA6E1$D)bo}`Eu&LXazBoZib2>&%?!vrX&UhWJCCIX+ z3?3$lxpqHO@@qxK)ojhwpN5A@*}Xy)KftWY63T6wi+ETOE;ESAYg%P$sX4dM%Ta?6val}+?0;5?Z64qDjjagGD1KX zL&bzRNt5g~ zLW*in?$9g{AFpXh?dLAIul9+HBp$VY6ABfHTDCSs&O8wcvXc^UrSPB_>Jpxtp=Eim zQoVYt5zqAW&&XkOI~qqHgGtqEl<}$}L-uR6ukFR{bWXAzKW}jfD6y2RaJ_AbQM=qQ zQOt5S2560KHZ};;dANo^lV|q&YdSuE0-br^RDnkywT_r4;G`Zl+d!VCtPWplVH8im!%Ji|tPzck zjcT;5WlnidLqve0MC7?k;>o>)l%r(dcdEKCbDF%@=KKdY~Yb0CT}MQ5q}gy&0n)z#HY zULCBGX@!4H33up(S!%Ode`lVvU~=U4UCosR7IZ>gNlT5qaZQ^HwX%oJ#izb$O&=w{ z$Ww=2MJyoXwsnl{X7%@uw&)uBQf`*?g=`)DafE_a8Pb#=JraW~#tNi`wn&OU(?0g& z?+-z<7A;n%EoY<5n4b`BJMcXKH_XLXl8HxZt9{CAVwi(mDXY)S+$=Ox zx3Adl#pbS%vn~-mn{rj4O_Ib(5P_r}R*ZL6UFH|ro4m)p$$w~+6+F=?dpG@uT!5(W zw;&{7R8|JhqRuHt#7|Bd^~lSxNWHQ)45Sb0cGQ4z-JWpM-)7ZDuG?$r$eZ}On5*)K ziQnO-_T~}_^OEOZCh=DX@X7QWuJ0SlE6j(FP$l@&Je|4r=*!=~f2W|LDhta`CKl$T zBNCB+zOqEt#}YC0^=a~Uxpj8}8To7SGzUuQmp5!-OC(a<)nTI878osUBv1lLvpx>m zhDJ_sQ=}qso!p%ab1t_YK0N>6aX|a5-ilq{8VeQKix)2%Ekq^+d@FibK>tj@OOn+Q zK}msL6)NWxe*h^Fiu6kj>V_qbo7Q&BYv?ljxNWtz*bQ4u`L65lpQ;~K7@_3Y@2pFs zBe1A>ki@t`mbomdh3nTM8TZNasl&=%KMm!8&j6Wq7D^BLKKG#n2|+=>oyb6t&EC?I z>x(DXi_?`OZ`4OYo(I*Eh>_PJx@_oC>4+{d|zs;`kQ0*7KRh*9R_qzKZIJLI*D?vVi@2 z(0zl15#qjO^FGn=sbo+pQPc=Ia8DM7fFCm5nYz&vP;0^%>va`4Nu06afrkcrYmqUywf={{q+e2q+D-nBZI!e*7j@?Tyl0(a zM)~n}_@l?z?J9?a0dTX^BW zGYT?Gzht}nYX8S+g(cnf!gFLILl#kQ$t;bYV`dXRe*Cw~vI4Sw$ek*Ir)?jThPDu) z@NH68``ZpS!bFCc?R=oA<377YLeOP)`1kAqOnf@Jheq=;HwvuHefo6e!^e+r{I}{E zKz^yuEgRreA$+n#U`|9=V!O7#kFUi*ib_har$l`Amj{#U*qTA?*JZD|)??w3E=l?j z^1Cr53MXG?0|yf){poZKIJ(3ux9$o|f$iZ8f39m+VqH2b3x0Jr`J&__bm6V2t7#NO z`{O4n!j{d#tC)BxOuPTo5&3K78H_M(#`d*sTvPB39jC2M%^xq3f~-=|`OWv*O~LzfG=-V*GEkNr87 zRZvkz28be1f)yYGg@ANF7b1~@G`>ZsF>;J{7N7wnS5%VDn#~ke zZv$-fMvy5<$2~DI@w&M9Fz>dt4Q!JER1xS2VE@2(b%uQ3)`*K^=k$?t~*8JXY`7E&bsdec|0~K68-ueu#C#~Wff7c@RpipW9o>155V<*9CReclH^>v zLz0t?b0L|aj>OD95sLj_7_CwbjWwT2c`q@ocdkc|q}oCT3H%>8ri5LoXb^U5s1rT3 z1Dt8dFQ9OXPF}!R96l~~T8p^~uEP3caO+Auj)rL9KJXDy#u{xTwj>5p44)n$uXSlw z0lqgN5}0uWmwCVok8bkub$lxwA41wdpKyIoN^zjvcS)-exK}sbD;B8gMk!y-mN4K- zUMUH`c%gUQXT%S#l6<5H5O;_8C743}xT|FEWv2q)%EEO(;jNU% zzwCY$PIQ$vD%tB^gSoD5=)7wGOAETN>-_pfpVqT2V-x*b#+k9TJ{wP`QI6w6;R}U> z=3BR~sQ;bNW*`=@ik{arEvmaQzVx{Mh2K+}*bjbp|Hp>#C1b};o)TH$-<&&}AV6P^ zh39yoPL4Wh#oy-YL{%uS2hV`X+A@I5L))Kw!h`C*@bvO^goh!Tbe zfHd*o2*`jptc7wty`28?shp@QQBPY3Q6q0ibw*y^1?Vf~YNRAXLj;d&L!YQ!R@=}F zq!z&9H@4P3lPevu47_mYJwExJtmUhW5j)RpXAXbK?s$)}|6%vb?%r59Fo$h7n*3c0 z8-EWy1;cm-m^!H2r@hfBvn!5+gTR7r0P@A}>1S13+gi`lT4^mZ3X?ZM(1qi(8}d&H3IDc4 zr-_1QBg-xroPBTT`P=vJo%cU~qB76A)A+yKZW&^7qz}*L%?vRri~nMSw_5)9C;!Ke z1GA`PI_0|1LD+8O6$6+@FaLL5WiV;#fe@qF-0@B>O`P4~2IeYXCwIuPTtQH|a@76H zEO*8CN9Xwj)8{&}-<`cmtZJXHPZa&?SNLzU!{vGd?$8g9qf-uGCo9$qYqGfVgGilQ znv{o^UAJ6(cv8zqzH7#Nrtuo2sNC#q0N3oZ6quaWxBK6x;1VPOhp4HAJrrY%qWRWg z@%Rc^<`MrhBh15YHNRi(V^N3+AkdO@CzAtGrvTOP{M%?WQLWwWcTn8JQc-RrOguL) zJH2`WRV)Zgey}vkIF+~G;1i^j4v1!(qA#`CZ>c4$ds;6Lh;Q;Eh8)I0L&0r>tHcI% zW--z4I)H$sP`*&)Rl(htHwGqY4f3A+)6S$Ycg&T`WkZx5I<^5Nv)0ptwZM!*4Qo*7 zffX_ms77A*?N24P!ZjLJ1Jbxoip&!0fY+cE1nut-t!E5+OsqY3EA}>g`t;+C8#mle zQh?vP#HN=yCSU^KS=2P(UI!{RVu6E%uc4rn7M|0Duv{3H!){wZ!o(BM%$1r&y?;n# zJTVkT_3%w+)^C?f$`2wlbV-XN)iNiFhPm!=LLg!^rf4OROa!T(Qyp^-K4`je>xOc% z{KQVEQ7#&Ymp39L7Zu?Q>%N@xdq*~8_p zQ2Z6VF&FD=&6Kx_5{vH`;y4pPa<2VXcfqfRClb%e8!i-vZWRlYK%E2qBI9J(k zcRPIyVf#nHwpPbrk=C>_ZNPi&ZL=7Bw#OlL3P`=^Ix%C232m~o`^?;hJjPR301s~t8F{__`-PS$TG^`{LL z5c7K8(QjI{Kulp5KuQG|h zmz#IuJS)_V<2oV~d`fj#E_8S4AcKJR+dBkK;IflhA${?~INrCln>F1VuWY+VzvL;? znAiGlkwF0DKozHlB!ha$TLBihu7YE(BZdK4f5_Z`TkL9tPoHILj!sjS2+8{NAYPn7 z7{12qG(zg}-(dpL1H+$}a2VQR8n;TM;!S?-G*(h%x%qj1i`Csxee-W11iYxXSX8^| zaqLdtBllJ;K+vqtz^LwJ$)~uuV0-V;oS#3%kkuP4;~<9`1UZfu#RD$VxnN7#6xwdS z5V~u_x8PeAfU%^E9Je|h`D}19CiXa8=5pz!Y?7ei3!g4&g>V+)gv@J`<^HzU2II?H zEkpo?iz?T7s$%TPvuDq)cXm^g1p~}52wKZ-R*`^bjXfU=#E~9=W_u1|1Y_eS;BF$` zzWspTOD9AmB{7BvVosLQ>zNzZTN0n6xM3(s!nf#&&=Ggn_NZ$1nb&p@G+c_5J24>G zTvf}w$h-E!oYF$9&D1+yTbW{qwD4L`Czl$H0zcZw<}PWD9OcFBzFAb*@#sBy(v#6~ z43T1-(s9?jL`fh{dg0lw2j<}Ht`4%ZvLY_?X-){py8k16`t)f?-QUfd|FYrqI^Rw< z{aN+5Mzi^KF6?#SJ7)sAdbWTZFkL@YU&0bX=b=0B6*^p1kLDP`?3bpoz(2tVc2i#7 z3~KZg?j?7#zN7;N1n?vv-`6@sm}{i4ZFcwe(mO=Abb&Wl6i&hnabgWMg4~MHopF5m zi~7m$*<@=1QxX&5aNwC=E0mMyV|kn^qx)s8?Ls1dN+{AC#!!P`;8y+7U)_@i08Wz3 zl?@(nU_bA|8W+V;2@*8?k>X_n`J&Rsst&Z$S&d6DJvhF9QfxV_7G=>A4Dut_#cXzlzSg-5HZQankSM1T+w(XEu#qH;nDt-_Uj zy~1V~K*eLtw<+1*VaTBwTyHX625lSg#)vpi-Uj{XrL}q4VSew~#52z}UT_Y$TKDG4I`5 zkD|17vOXnVcuG=^Yp;o9^Bwe7i;%wppPWNMkn;XF$YM_lHN)^JnID39X~UaKv|)Pc z9rz=DMfaloSvn2iS2rmV20B)y2f$5~r=dElF_IGiP(;cB@nq3N#-De|4qt2*!YwkJ ztnTCzP63sjvbr4FD=SX{>gI|3;g`o&C{TWtFsc&y_fb);AdLY}<5Tzp@yxctiHTNN zF8)KSpV-tSMl`~7lgXa;TLwkj~(vPMlP zhZsK4o>*I3-*E`S0N>*cgZOLFJhHMZkcj8v+TTN#^#om z52>kzkBt@KN$ZTB;>(2*1E@bkG(Y<8Z57B$h# zb2>!&`+cUiO!kmmr}pkXT-BDjl1tNW4s?6)#-o;fqYH&U%;%;W({a05K?t*_RqF9Z zGPl%!4AkVjMID8m?$ExjuqJbFee-*hG)}3C{4uAjN0rxG2~UB%Fp|jREK~6vJ#($+ zMp;3o2;V-h8MEAbZo=PRK8ng}=Q3cgNX4%kNKj#GRIH9uT<&9(c}MfwE@Zqnn>m72 zbDPKA!GXYn0a9OVwl34{`6==Aj}LFIj>{b}%k@PA!$3UVp94k@%-Dn7rT_k#pVXv$li78iBVibMF>r#CK+E?m!Vn6iN4e$@f z^aE_UjMQk4rXqD^7gjVWUy+kMoY^ENZERqfWn-HiI*PRjT^zQoZl0YTwro3U`J1ws zJbNWNGW6T3edIJfx!=52pP0UQswlWBz{RDK%l`Qoz5f{f!)Puhyc+$|S0fo>45D7o zo+d@@?b$laM$&SFzDYpa1Ry*-pML#%_4x5)A(u7T=60eS2vUBU{-MGEfpx8Z;@X-i z=y%#nnRoB*Pfbnj|Ea`-{Y>D%tFWKt4JE(-tKxn4&iD^fF`u)noSdMoEz33x5?;}c z|6h|RYZZWZW~(_?#4mxnC#R+=&HBj?I?DB`L(@e(t4um^5759AoDc{H56|te?raBE zCRyXNPbCo9ufZB`>-0;1t#p30v9|8mb&LPv_FICRn;Yi>lI3$eG}O48EvZQRJWn`gTd-+%n*t-<80XIkz}7KWBe^lV*{ zj&+vf6rq{kym|BG%a=>EiNC)Xhg#Z7yz+9=-g;1emvaw6PM{!@jTK+-yzcLPIE|rIohkd-wC~zr;Lq$zpI|JN6%DK|m z(%8sAbVy2RhnBo6*IrOCP>yr=2j>18<8Y?ZdnWSo^2Ho54%<@`;AJ9_QTgNL#uC7J z*y3K47v(e<(6VdK6IbZM33*qncL<|)7*Us`2dv+pIL9Vn*NU|+Aalv;*d*2E?^#Av z&)jx2CJMFlYn1Uz-WGctPmM4upJHcY3XVo#^Wze3JD=B*Z`;SVwNqE*9zkm{iHV7R zC%yD8@36XHD2s5gAH&f77rZzHO8loMf=h#YdwU?yb7lYg`&J?!1L_?YuiMBK+G~k~ z^bt-xxFmU)Q=bZ7t@99T>AYpnAbqO6_Ln-A}-_36)LViSfJQFlUmza%DVW@@X?Fr#WMxZjp& z{QdiPa%N+5v(mJe!~%1D#g3@RYUATqGl2QQ$AAR z^pdoa^`~v^V?ZIk=jGuZ7EjOr(wdr?L8TiT8ro}7G?ib$P`sf0iCzBk7rUPD=}*OF zO_7Vuo)dsj(OD3^1>;(E8caaAxZd}K-?=%8fTXY-FemA~0?cR=POmaL*ZUfM(o?Jc z_+=SW`=BFAnIe={Vk9S98_#il8c`pdZi_ix?0sc9*iG0m>?z(;v9^7+nWl|X|9qR+ z?hleWv*oSJX2bPU1Bt&$WZVH63qLk->Q7F1;2+1;3(CqY0TG?!fAut}co-r%Q})i_ zod6W$mmqPf`8;(PhI;G+`~CgqRgfDA>VI0itBvu<-?sDUPe2|&?pk$z=5uBp1C}`S zOgBN`$w^|)bV_uy3pAGjK$^5JkgFD8-UAP>FW+mtYJ4(##q9dkDlRp1P_FywLqUn8 z7yQKgPY!;4c99tv9zmcej(0qvGi3$`@)tqN?eT*{%>kV|M$cRed^3t9(Br2Ji=+q3 zuJ2&|(ANu3(bo%pYCJ=h2b&Tc5`vlU>2I@22pUg-1iJ^?~WoA5U#xC>n*{6_Uq0) zLh8WF2_5y0{LFy4BjURy0S1>76nUf%jsEjKq&nEdAKC#uO^*(v%3|5UC(SVyS#rK& z@8d3F`$yOpz;(o`zM@Ic>uVaqWh^VGd5^c{EBE%JaR{x?`7g7%^~USvcx}#1%viHu zb(df##Ie}&Ou2BueMc1(AH(L$BN!+9sxCP|4}G;(XIqAR5KEYD*D~FBjv;o~<9K3F zH{`ZA$u(s80)arxby7US^@5kyf2m*cQRd?2*8cVD7Y$%LbW7jLrI(j&e`u^RmQ0K( z0uR6t(-i!;CzF}N?vLf<S>a0tMjRvVl7`cs-6k+hBQQerQ!xbnm@id(_s!%`z@ zWU3N8t??Ud)Qh(F{jR)jB|ZK1sL@WqfBXSel6PzXS0cnw}l3JM-@a}V032M6OH&>xRx%ghOgm-0si>CMmJE{AT5|fn4)0er?C%rqR0%f*(QiE!hYNJz;J{<=H%9%=}tt!qs?+7@4 zF{K2&F{3b4CAs}`n2%PxBMEx>^*t%IwQZ=P=++jbHP1KMWIWDX&CgeQLfv8im1}iW zXrCpf*zV4Z|7hkLYLC%{g=i{iVtqrxy9E?^jg5MPhX6!O{P{Dmoe3qEJX&h~Ip7@j zla`hiw7=Y*nX3?s>)cDLV@)XW`Da9%CpgWD>VZD82u*-ec7rppC?$hp7AK5AUI0qF^{nxRO`A_`>%Kb`tFj6xu5H**1s8^y5C0oQyB zv6!Q7^h3^Tf0?N!2T94XE8A~MSw>d2IiGnz~{7v_)vMF%% zMo2xV;gE)&&Os9Uq{M_ycd=_NmmG7{PdXOs|Lzr+6Vy!2&FP0yfXiCT3kp^)PuAUz zmc&eOEJrdN_QH`F>Uhb*?nOIMZDq&|QI~^+l&?+#UVXW<-%u?>gQx6-3x}N>AHOvJ zx;k=)k~GR8x0^>0i&vH(+o9c1lfzS9D0brc!TX$7FWA_Ea?+wOG3lWR{1t9*c4k*1 z)Qx=0<~ukTuZ=Jdhy0DU_Ts78(i{rEX~6KmR6{{O2@_lrn=g0N;kbLgaxl-Kf$!{7 zLofOl+B;YkV$9J<1PFldoTZ`CHo}?{N-Zrdp${8Gtud)IIY(-zP6Tau)hi=a5Q=BWJKoKX!E8Z@k$V%lxcR&(JE!b9^I0ft(ln z+wSh^Ky!)D+1gi;$GF$#jZ@z(U1F~`dN5UgDHcSp1muTxyCsZ>(teUB)l&GGYgIQ8 zs~wq7+$PN2aH9XcF?-FwVC4XX=3Bz{N`-&=o@Np9@$=gds>^B8{1!P9z4>)8vb8Om zkt=U(Y@AE@KutxZ`0CYo8L^$CBm2vj$-%+Fbn}PS$Tk8d2mfX2XLCr*Gc9zk|FysO zrE$AJ?blxP`ri)(@8%M|9NBM}{LF&Q6DMV2r)+I`qEJ1Ikg@g=qIl%ghkf`;)m--9 z)pD!_a7E-|LgzBzuSQ$y+d)EFtGOS!3?}V4jT>8=>pO>_=Jb@5d*$L;@bdPhvra-V z=g*%%uTL|vlLF5?_H{u5jth4+29|vWzw%6UO#lvpUB}q;g&0n5>5-kJd@-~pwp}8~ zwoQCt>)v~6wNw81nkm0qURmk)^ubwEwr`N<2g))scplA*c0Vqbp_xCFlTtt#K6_k` zBqYGaQ+w_p^t-d79HRupq_#R20|SHK)n*b8d4R&C4)`bYATm?jKLv2q!UH%Y04HJe zVFxn@R!%jgnYtm&g0lQ*?-ihxIG*1m9On2eRyqO=p=gBe6FR_{kkUQTm?V1tr{g^z z8{hH1I&~wQi{6#d_pj++Vp}`AWWWut0(_N;@H?y(x=;Q+m1JBKG5G6O*EklclfKrU zxzSgGshrlyKQY2u--ogYumy_X3BbSRx*fQ)@E2M-zVirLN{a2b7s%x#0Yo#`Y9u4= z<+`I&arS9JXl#!Zokt^#UANC|I?BH1k`tmqiCd@XdZS0-Zl+}z#$Gg5M2@!sK zw9F{IX&4=j$ALQ!qF)@BYG=8fd;8*074ZL`=0`a)EPfMkNTKUfPZPQWLmf7&ldfY= zVxgSG#Ka3tO>|A&d+*<6m&HU!lWh&BTH#)}Yp(ZwIyLzGI}Zz659nw>UO4TkrU$~o zMQxOfDsPJu-#{-bdEM41J<1k;@O(pnvE_2$-k@8gUqlWYJ_1WOtDm23bhR4wX9yJM z2K;+-e-;lm5LwzWs}^q_?_QpqA@4!Jo=^1j+X^69&{h}w0rUNwR8sN;uylZ68!`Sh zEH51?>c%SyZ`)ziGY-F>*BeF8O&4{mdbUK2Shf|-DI${k_wR?Q>S`d)SOGl$IXl>h z1U8MktU-GITRS0rL3$5HT*Prfi1)>dJN{#WMVM%Y7i=WaEO`tsEIF^Pu8ef*ip%jd zH8nf0wll%;-*PzF*w{4m^pq?u+2`w>2qn+tmJ5&)=w0<*kXg9L{j3K>L1Uk#Nbsee zJu!s^J-AEvTvCdXEb1RBd)!Q5-~moGFla?jHO*eLO6f+;oC{YKtDt9M#1lXQ#Lm^zxThwSd| zf|!JyC2?|0Wh=9ZRP zy1I&Q-q6CQOYuxPU^trG3T(%WI7_Z0Vv)jM3nA(Y&m-RVj=VV862}o-$jD!$!(Q2h zyd}3*djGULGLr)yaYVQf>i&Cp6^`8*A=$3Yff~mcU_)&J5t+%eQ?R| zOzp<2{d`hNE=|zE=+ttj4wEorRKC%0?S!3fUl_UZYI{dJ);pJ~0^Aq&>g5f_G9!&N zvlbn7p3sp3>iy;GS1k<Pr6X71DVF4iIfl1B+HFj8+LM{cBYEyt!%0O=*=Z6Lt4KW zwffj#GvK%jF8%idM@H-JibX~eE^n?6^1eUg{C0(RSM1e<1Qh9Zab1lyg5&naVk`ZT zU&mgzASlE!yH_R*x9NxQ2X|bN-FeO1ndl3Bdd@cViN|jK_wN;OZR+BH3mL%V4E*}_ z@X;f=iIJZ_S%AN&3qyL7xf+{;@sZ)95wK@Ua_cq6#@5Al&in3x;iK|h3I@Ti3)h%` z&Tc#E@M7)G z8f0s0>&E@DC^;@JuzNKtD@!s8({Z16uMljb?|@rwSQRl({|ToJNB{73!cSRwc>*AA z*{(z_Zv|pg@Y9aARDG2x`~pcU-B&0m2QJRR^^ zp%tR&kbzE1_cqzu=pwO3>*gEgFOG#_=QXD4HwG_0KAzM2lx9880{6&=CzIDAvdYKZ zD{eGs%Hm0CJYEY$N1SlOOx~!J`U>`;)FzrQUmI*0hlsF zafe0y> zqitUT4s!LK^Ke?3aAx!~gB0_0G#I-+MoHYGJxNk!#* zVPV8AXhRGK6u|;q)wivT;TPAd^Y*#=W#-+Ib&E{ z!tk~4aHFNshY!4qP3{wCooLp{g@vI8n`FQ9*jMoh3A;d^hg}RL1& z`~p?w*@0-CN4zW4GmY*KvyLdLXYI8zA1>bWVV5EyAyH}Twxy$^)6&!X3FsYQe2 z?oX&Ln^syQi&kmr=+>Nt_|_-1+j$}*qi9ELp4HgGB(4r`8L{hXYp;`6QqvfIdI}u1 zwWDJmuzN3)tg4S=wY|>royHdy77impC8f&;7C|>c=d#w2x15_z(mSQ-njXRLE79@c zn%3i@;Z{n@!g_U`4zy3ui2d8@LP+jf&r5XlW157htv!Ni6(ne|T&L1^j3TR%IAz`# zW<|fWViEM|(8>%H;0coZ9n(o`?z=~3y{v)O#z|iMYUJ2Ncj2rudj>~O91utr8ib}aBxT2 z;i~KlUmCu+>xnvTots|O8A`zNGF92qJ0YF7^+XI)3VL?0qOdHe@+8TMm9BWW*lcSX|G0Ex1(x1XH8 zf7Cw_Sz1%Eg;991|aF}^114Z&7JpHmu%pEbLifrBt)g82s>c8BfCO$QeZ_l^B9B0dnm$WV&D%z`M-bbAPxx0UB=z&Fp&|) zWO!fv??kmRtEvUA)^4yhKtUBcQbEbPR*0D|GbVpWvCelL4>)C^drD>ZvbS5THGu8F z1#B5fhu(|ml(wQxo8YlYiV&*eDVhO%gH}pm4Z4f^gub=?%Fss;OMDtn;q>5CeBv*? z{y!cNTE+4&RJxe2d`c5lYEb$tskfk0Hu3>pewWsZ)t!S_keG@y3YBD#e{**xN<1w(@(eu5LflXqGSUz-mx1 zFoAjX-h+nfhEks9u}N98xqzk8drZ!Z|MlhGg^e>D>i^yZ{p>d7g5JXPS5;C=%lS9F0Y9vVe>DZHh|ftR&GB&3vf>QzyC^RT`nE^*ae1h3TrtW^yT{64z)MSy zH*pM0Akv@=R{O*kcuR`%`hlv66j9)<-saYn*S*d3HP)s-XzJ5A+*E?v$ShH@3-32< zn^COVPY&}Pz1oZ&)Yl}IjPnOe6#%Ecd*>(D{alQl?E*4mGh!2CtUb}QL4!VnBIf&P zU{z*eI0L&=^vf3({p6?Dt|RiVp$(ht7R_jP>V{#bWcP}h^U{w=$&sG)+|!+hTZ!L{ z{qDTRZ$K;b{!)*0%KpPEk6J4}dJ~}KM;dF)8!urf!Lnuy(}nwbd@t&wh9gl_a5TlC ze{LA2JOK4AJ~>^+(u4dXq>T)OXpL;zj}bYFEWmi6;CZWGQ(Nj9o4o?7P$gruM@Ct? zga)d;%~6R`?N8p?mJF)!PapSp-^o$#5bx-X70c6=K!z)EWxs=g%DP(vIB!C_jTihx3Zi`iTGX0CZS!@V{k3aj?xUge#7Jz2w0eM}sO#b0}VIDkugXMPuyi&`dfLcQ!N0XESE} zft~uh^CNSjxO{rw0q)O+0CLj5rb`WQ>I)qgWIwsq|h}<$?>`l5*PPYLK3Vbe9i?ALlU+_hZ;9>2E7un5xOiQL70s%fA&z* zQ1haT>?i~VoLrPCo(6}LZux&laEtb_H|{TEE#U*DqJyr_s18lJqeF}s1HF?vs|{Am z!j(vcCoHLjB(Omh0)8tU%uSBh!4!5WU5+F`pweHBSqo#1XLlydA0|4k(sU3-G|-YW z{pn88tNv4I2kwrFN_1`y2C6J4MG!Z?Ilc}-W72l6O0ya9l5+uOy(h?=WhF#NjJhOV ziP#wfWXRgGojXBc+5LD~9gPReM7!xn&6pKIJ9fhEdA|=u-Pt@{Qd`;XXN0kpOdprs zhFc>a*J9cn+Ww!?`m)Jup;yM-KgBm_Rvr`K46B2 z-d1?t<6s4&q}=$RntR#%?0Mb6Ty}F?ex8*cMwkWi_-1MS5A~6Wn-*taFR6|hpS{fW zcNtd~7vK2p@+*>(R9$#Q3L#j|xk|s!?)I{v*hBmnS(tj5X?MV;bO4Da*kbA9$>>?qI$$PTtAx)={PH z)bLOWKQ;eDKdkx^(&xGJG#&{%wH_&boRAv`L@#mPV){zad>&#Y&vWwkxSoO=WOmyB zA$`56U{}5h<8W`K(YV?&!?^ZinZeVIX^VH>0aN5#Xd5bed*NTF#S1gGi_h)8^&{gL z9yI6f`r7(@eRL0b@zm&6$BQVdS}(CYB;i8SljpX`%0Ji`@dTj;CyFHVx$AcEk-TC| zzH;-6fYn+@>V;$V42Igh5-ty`>5}9H-mQ#qIEok8#7FS$c1fELW7rc^?Ulk?4E2w~ z2w+d+bLxr3uMfH-f0~=FehWD}oKBV1eh4{$D&c(d@hK{siz|bsN@y>)7RaOCXs1fT zrhzggd)5&$E{pZwBIO)#_e#qJL~u$;L8DEev+0Y;=w6IYYEz&Qyzodsq`Gc@;)kX9 zJ6p@^F8xyVXXD5=&dBE2=h&aOqQMeIs3TX@h106OXGr2+RD;n%+dT-hl-E>QJ=mi#i z``r`PhQ<}kC3UFr#dnqOd*Ih}y688gdBi)77>ita7gYL%)Q~wH`ewD zn%s7S?D9*|ybjJ@@aD-_txLZH4$*NlA?V0e5L!oI%mhmU8xETTd!so1A}F{>O9XsD zr7ua2KS+BTVRre-5yp$@9n-_9^Zs&v3gg(W+(P*5J|kL#HLJbt-$t$Fb6?HobGy$t zIovGImiq3o&!XG@3$^>FM#dCqgFf?G!&T_&&@BYdw5L_zqIxKUH;3+ajRcA4$?D?- zUYk7WP-11rr&p+R7od{z_wOLYwX-8IP2ArvI@1{hx^H^J1xSgM;4xb+R^Ry=?#%VH zE;@81a;CZ$`5c7pef<>D7K&9a-LhWPq>;-6X~ZH47YV)e)ZlQ#uM>-A{)jiF9>mhV z%%p6{9B?`ES9Qe{{z7BonocAwJZ(Uf*>1){!en4t@SC6$GstyoXf=f1Xr%*hu;6l{ zN>TB0vv(De;>g{onyk%7xar1~L~ksk@3GWK`+MK=XWt{yuUFs7l2;U`C9-fFm#70C zLr*j2JR~So&*UUB5cMf0Y@S`NCJ66%w}w9we#1TAlV1^!nl)>uVyU&66S3&;Wn-DI za=79)e{LEE2;kx?B9}M~BcpnPW#84ZzQYQzcFcZkK7BKi94&OBuQ)O6JLic5Wby-A z;4`{O$t9ANBSH@kdNHeZ>>!JA6*;ka^|bVSLC7bspM3S^WjUNAG{Y=oU&57LPOj(& zHE2QkXxbAobD2pU*GysrWaS2s_mg$M8GW}o<^5Lf^Lqon zo{y(i%3-_va{FnUkNYiSM4Hmxw-W~k0qg(J5_XhR353>q?B+TVX*Y9QGQzm#nkM_W4}75i8}d*u^J2JHiL^ zS!HW!dk23R60Z?hME%lwH#q7#u5znmg2?XGqUL)m0SVe#@c0DLRGVb$a5*az6sq)W zTl-KGrRE_ZRS?1;;1Z{HLGp?)?;MYiPs89r_ZWDW@KYCBoFKO#(!RbOrDx8JnSg2T+`081 z(`@?ZCG7L<3f2V@+CepEsc`;Em7reawT>(3X>Z71Oe5jQdAm)hWpMU46GhdPm=D~q z6&R9UQD0(poPguwXfhYyYGq7|BgQ$}-!jLZadv5JMBh6O`*rU~!u8{^>3`dPo2 zu`&ct)~)f9J|PNv?(#oD@1x6X!?mY3<6IgKis!$)lyhxpe$J?^&tfy{Jy#X~qFJxX zg*etiJWriUmJ*+3nk|J&FT?QnrWLCs?EBHDt{)AGDvD$_22?lkqR!BwxQ-@G2r!Ex z-=j4xL%)C(R~k9uD_)_SB>!5x;sWW@f64tg!kqs*umAtE4Dg@f-b`+@(yxRxe z8OfHCq+ID9x2>-t)h^nq_#Rs@0E&03L)88|8Nt)wkh>;KIro;ko|Ep*EQ--}16ro_ z;Osq)O!oHo#isdjRQ-nZr*vPz{&VuYTqFy*&xhh ze&{*^TJf{}@hwYAx6QBdT&ToZRRd6Q4Z;v`s>oMBFKs_|e)N^}n);{0`AlHF`!p@^ zsr3S5Z1POj%BFIXHM`f|Z(kAg%8ITc1rQ>-#S&l8~<@@2xH0(=0){=iZv%FKVwfz&g^?>#cfwCdvO2;h4V>~N~ z0>kS++$=hx%r{0PPe-t2k6)c%ivONrlZ{P&G^RuB^5SQ#@kL60O4hyGUm@>IzwI2| zxR%VA^Y@#rH5X(jXhQ5(K2;2Hp9S?FV~&Q?!bBJ*eFeLFsov`;X}!G5$`HGwPk_)| zsV+||9o9zSiWFaY=bX!&H*B#xWX#bQ)L*#=uP?u%A{!MXrn9?F&YZ(PPp7wc75Wck zxYm!nS!zQ#Fjt6oB=oA+38$a@jjrhDB&rqNgIn*o^Sx%pcT;UCa0^}s!`XC8ta<*P zTEX_NO;nzhkyWs|1r_J5A0>fra5t2XHJ5U5-D#3d*KW&m$$Q&n8z|UYk3B>JL^j};?qY*YbKaP(ebRcp$;dOd{e*;31H=~Pga2p+MMvkq9=GFU){-do<-pX4EB1$ z%9D>Lh>hCZh_j#^4G((a>BHKsQ<}3asO)$1e!wtF6}stI+wT_(t|Q*bnMZ%+qUb8k zf5vAGQAqQ304VgO?ts%Xh*VlZ(jl~1e&?mSx~V@#0(~|SFg)VwT@jc0N|9iP!M}3R ze?DQGX2tyHyygqm=VF}$vLdt7W51!sqNyF7R3E5yRTLO=2x@97bWidAAxAK9kTn1Gf4C(3-J+|&n}VTBs01|`u)z2S zz`D5N?%sX(@CIk7rp~(fB|ZZwDttUvpk(*|RapEV0Z56&@&}{Sw;wgFZ|7UCri&^Z z_2~d^ssGrFOuH&x%Sou-ulx1O^NuG5TMH^9=^I3;a|il z-!eQb1gkMTECt&#oQ+caAoJNJG$0T|eB}DLgmg&E=0U$@l~g~OKWZ#1twQ$JoqMyl zAq2Ndv69rr^_Y)Y;&8hFl$uqjVT|IAZ;EjNFe&EX!m$5)oS5`e88$@V=Rryvw8mgo zSOBNRsItT#-kn0Q3d7m7Q!!cR4oWph_SZEiz<2Mp>=1+w*|tSb>Ti4+6(Uag;eWX% z7F{%*>WX4*-vuYmn~s}OV5kE?dd#dASA#4fcph0Eb>>R05=2)WPNhLs{ZBT9q}XL zHkH{5bP{>!;v@eglnkx9vMMVNKTm-);1L2p3fjv~U=!c;hK*`>PTdBzZ99(Q@ z+w!2vYYy_-2YcIpQJZ0BFaObn(YiY*e#zR!eF)p_U}WPtK&icX+HL=K0-^n`JD~l` zE$;Fw+C*9yR^|66!6B{5kwPvj+GQ0L10Zd6^F$emf-shXwbg|oCfm&$88AM}{Q>@h zQ>P%hz#;jcLGaS$ty7SQ>%Z&Ee~>u0E2?z>e;i=`mM-TIUvC){tE`H`o-K?-{F@YD z$}&elfP(mm9nALfuI(km;Wprp1LMuI!N(D!K|n^9!3LM~|0~x|WCwp{ESJ9i|bHe7s z61{4I9lfvCRIggaB9iCp7 z4;KLec=Rpd0S$Wk7p1B{)FQmD&56M@`$#Xe)~SuQEpc{=Obx<+P=oJScM>5sSaCjF-!)Cq z<2f0taX`iQ?;H0(&^Ss-P0g|XJ>j^X`Xx-x1DL>z3z*1@8CKkVMZ~$G!jXTL)nYCC@r|NI_Py)ncy!>DSHL9X1}jmyXtS{k7a0?* z3#e$wg(W_R;|&cC`Yu*eXsF_PmE|gcvjC}J&9FYh@tJ1SmxY1hjTCjgFLrf>!pK;k%y3kr73 z)K3|2q>xKHkEsQVK_&BAy!w+AQxjs<3LLulJpJ_ewcpGq{0zifV|rRz|Foo}3m3lg zKr8>r0LfZRhJQ|=_%=nmKTK}D%vR^UvN%c>^|u&*{(=?RH+@tv;10{a13`5-(dmA| zmlnG-IkI^%=%kZ}^_L2#lM*At=^9y++Z%)c&!oo}Bl-oJ zKi!O#?XTZqG%%(-%NgFr=|ldXSBb4*m6*T(fdeOfzQAQayF{)uLX%L`4PHux)BaWT zyP@s?i%NxL3z&7Gfo*Gh&=W)l#M=O~=hlBiCCYrZM~}Fal$2fpM2g9(BY@!c%E6&@ zO+-~$c_MG@aTGwx0mwb3yvbeDGyt1NNQS>HEse*9HyEo5SN~=>h1kf z$H@B;2%zx4*3p4~4S_%)Gb(wWM@w^lNrOLH9f5+Z>hiAJW6SE~pdj3Tq#uAg1Q1_T z*r_9P@Jk^#CSr2*~F8l;owKdin<-F!rR;iO%B+}=gy|Pjh zHKRQ5SkK++gXprX*3{R3B`0?apsc1`&Dsl$PfQR$qWbraxm8v1`}_7F0&=FE+LG+- zz^0}qT^jDk0J{jp%gYOpTmas@^ig{aDt1H;dAMDo9`H4x=E9=rwSB z2vE>3Dtc9~_-tBFgQW@|t>~A%{=P^2*|OR(K#)Tn-~*F1?O0h^*`XTS+KlLLv-sdg zgIJ$8xQLP$)9*^9v$j&0&JxnuJzOMydN&ow%xw-Pfypdod@l|U+I`zdqYSUL2=s|{Q0Me~g7rRLErtE**03KMF{6?u6gM=a^7nMn?1UL0l#NZ` zo2BCm&0nlf^}p5ByyL;qU}7I+iwoGS`Za*fE4aD2*-GvVc?O%CR2Q;7G5Z?wd&tT8lJ z0`n~j($>)H2GB?VJ|;O>yyWa)UPp&I*mYKN#5;(R#6ckN2H`dMah+48?BEoDeeE6i zk$nL|m+IbbZz%{2glmXg9*5$L&L%q1jz9Nb*% z2*iuWrwo2T#6>)=k6&=F=VZOVbsFe=KsK}jMp8Ck-Y0{sexYXRw6#6_*#Z%zzMx2K z)6(QGzX!Z1$scuf)9}{r)d#GsA2oC3Z#3rpdlsN!=HHyeKS5L01DRYvYfI}P1gTeR z`=$rkE;_9GiOl~KkIOUrdi7}|JRiAe+a%ab+o&%XHh)P%O3KB<^P{Rt%MQZ~w0~() z1(^^9@k)-gL9AOTDF56Xe>p>(=m|BUdYg{{F`SyPIalfeUYFW`5CIZ9aUjX`M++}$ zW;vn&Y3$fYzIBU_HSO7ZTmV9tL_AceaDph=q!2g+)!871(S~Lk_AfrZRG<6-ZKbI_ zq8LTuk&=?)0Nh0u{0(7A3AZyi$Uz`=yw&$2e1VjUNM7DCB+ATQAQjhnnymK{pG9`# zZG%uAAonWjlyiZix8?r_F6957lP8^agB1A_g*z|rwm|+n-YRQp#m9g7@*SXZhn8{y zL6}RZt)D;Y+~V?hbz^(mj5pa$unW*`Za~xWTUwZwZDN_lfOfT+>4|ElqLa;yjZuIK z2dwAWDUT?i@NA8jUw^ehlmM%L^o{G{xM$50|QZy^i;%#)f)!b{2qa z*Udy7+#8Z8&^48)fI9b21A zN>l)j82-YRpykkAhuPohBC{3mKhoVMXjTP6#&A|9a>5m65*BW5(y;EpVatgvyvfPQ zo+2;J?Ee?U&8nxJQC<1|o$XeZLA@hONUQXAM|l6Ts|G-(y#NK<;u9Ta-w{5oAOhe& z(rQBF#fu5K0o1z^gL*afS@Hz@@Tn7eVXzAWP9GIuC4hcJoUtSP z`gx%JiA4qwkVh|GBmkT*Ks>0~RYni-Z-`$vc7jtQ9wcq`aDy#;3?LeY+i)~&r-OhV zL%^T|tOtb~#5!aY@z}p>S*=I!uY^mK9?@WrOX>)a6SI=DY@;(GaHJ@4Sqbhc6wtSK zH7ZtAR8Rt)nGDObJL)M}L6rF8_%Sk*TTdl{vknOf0i1)XswyGBOJ_1=cA^s?&zR;S zKyvo0>h0^-D{jIf=ugK%lr}w}b;_t-(;!#DUfr;QC2!ir0R}Lffl~$Q(c|t99Hl6QIanA?K76RsGB7B< zRGSzduPJ1{g^=ZMYx76(0&fG@@#o1ZrollEf@Kv6ynuG6A5bg?P~3HqgRxvfz_88v zG<~6~ze*mq1R7Y#8x-V<0q+55C6Lpkqy|z$x&XbM|2xHvcSZoT?m0QM4Q`Gb2?_}8 z@xBcKNXUTImA0|r0?^&u+#GcH{-J{aqd@AXt}bc7@6w=o^t5mAGimlM7LQ;*4n+@- zI?E?O=T;n#DrEs)kd?XlO+ORh1y;`5&-uZCwuvE2*U3S4B5A)nI`v(JW@|p=Wa1_r zAi%=`h5%1+-v9HQfl-GtI4hhRFSrBmBVJRg@y+|cc_ZiJBb=cf)f=?v*l$|tj6Ab> zZXy+qxAvF!E^ubTcEJT$%j((h^?=(}_l+YEUn-mlNXJLV3|nfCkB`F!*aF#z9}-ov z9;S3u0@(c^Pw9aaB~VupxM4;;{FkNr|Dd)1Zy))8Sn&Ue*Rd3D-a=!vM7KkL&UTQJ MoSJNzv`Nta0q6k}S^xk5 literal 13420 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 G2>u_=DsLMA diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 6ee7873469fbc9c252b1b2b433f7c630cd7537d9..c8834057f964c0c7fcce9e1241815a7d2be98788 100644 GIT binary patch delta 12314 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 GA^!&{P`J4O diff --git a/icons/obj/money_machine.dmi b/icons/obj/money_machine.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3e7fde761f5aecb33a1e9fc21bbe71374c4108e3 GIT binary patch literal 4676 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 delta 2248 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�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 literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 26bb4e2e5a..b769ec4a22 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -45,6 +45,7 @@ #include "code\__DEFINES\donator_groupings.dm" #include "code\__DEFINES\dye_keys.dm" #include "code\__DEFINES\dynamic.dm" +#include "code\__DEFINES\economy.dm" #include "code\__DEFINES\events.dm" #include "code\__DEFINES\exports.dm" #include "code\__DEFINES\fantasy_affixes.dm" @@ -260,6 +261,7 @@ #include "code\controllers\subsystem\dbcore.dm" #include "code\controllers\subsystem\dcs.dm" #include "code\controllers\subsystem\disease.dm" +#include "code\controllers\subsystem\economy.dm" #include "code\controllers\subsystem\events.dm" #include "code\controllers\subsystem\fail2topic.dm" #include "code\controllers\subsystem\fire_burning.dm" @@ -908,7 +910,9 @@ #include "code\game\objects\items\control_wand.dm" #include "code\game\objects\items\cosmetics.dm" #include "code\game\objects\items\courtroom.dm" +#include "code\game\objects\items\crab17.dm" #include "code\game\objects\items\crayons.dm" +#include "code\game\objects\items\credit_holochip.dm" #include "code\game\objects\items\debug_items.dm" #include "code\game\objects\items\defib.dm" #include "code\game\objects\items\dehy_carp.dm" @@ -1803,6 +1807,9 @@ #include "code\modules\detectivework\detective_work.dm" #include "code\modules\detectivework\evidence.dm" #include "code\modules\detectivework\scanner.dm" +#include "code\modules\economy\_economy.dm" +#include "code\modules\economy\account.dm" +#include "code\modules\economy\paystand.dm" #include "code\modules\emoji\emoji_parse.dm" #include "code\modules\error_handler\error_handler.dm" #include "code\modules\error_handler\error_viewer.dm" diff --git a/tgui-next/packages/tgui/interfaces/Cargo.js b/tgui-next/packages/tgui/interfaces/Cargo.js index 85ae19755e..b31a25c611 100644 --- a/tgui-next/packages/tgui/interfaces/Cargo.js +++ b/tgui-next/packages/tgui/interfaces/Cargo.js @@ -75,7 +75,17 @@ export const Cargo = props => { {() => (

+ buttons={( + + {cartButtons} +
)} @@ -137,11 +147,6 @@ const Catalog = props => {
{pack.name}: - {!!pack.small_item && ( - Small Item - )} - {!!pack.access && ( Restrictions Apply @@ -336,4 +341,4 @@ export const CargoExpress = props => { )} ); -}; +}; \ No newline at end of file diff --git a/tgui-next/packages/tgui/interfaces/Vending.js b/tgui-next/packages/tgui/interfaces/Vending.js index b6ffde015d..c96bae7c70 100644 --- a/tgui-next/packages/tgui/interfaces/Vending.js +++ b/tgui-next/packages/tgui/interfaces/Vending.js @@ -9,40 +9,54 @@ export const Vending = props => { const { ref } = config; let inventory; let custom = false; - const onstation = true; - if (data.extended_inventory && data.coin) { - inventory = [ - ...data.product_records, - ...data.hidden_records, - ...data.coin_records, - ]; + if (data.vending_machine_input) { + inventory = data.vending_machine_input; + custom = true; } else if (data.extended_inventory) { - inventory = [ - ...data.product_records, - ...data.hidden_records, - ]; - } else if (data.coin) { inventory = [ ...data.product_records, ...data.coin_records, + ...data.hidden_records, ]; } else { inventory = [ ...data.product_records, + ...data.coin_records, ]; } return ( - {data.coin && ( -
-