diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 19651f9989..561979e6e4 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -255,31 +255,16 @@ usr << "\icon[cashmoney] That is not enough money." return 0 - if(istype(cashmoney, /obj/item/weapon/spacecash/bundle)) - // Bundles can just have money subtracted, and will work + if(istype(cashmoney, /obj/item/weapon/spacecash)) visible_message("\The [usr] inserts some cash into \the [src].") - var/obj/item/weapon/spacecash/bundle/cashmoney_bundle = cashmoney - cashmoney_bundle.worth -= currently_vending.price + cashmoney.worth -= currently_vending.price - if(cashmoney_bundle.worth <= 0) - usr.drop_from_inventory(cashmoney_bundle) - qdel(cashmoney_bundle) + if(cashmoney.worth <= 0) + usr.drop_from_inventory(cashmoney) + qdel(cashmoney) else - cashmoney_bundle.update_icon() - else - // Bills (banknotes) cannot really have worth different than face value, - // so we have to eat the bill and spit out change in a bundle - // This is really dirty, but there's no superclass for all bills, so we - // just assume that all spacecash that's not something else is a bill - - visible_message("\The [usr] inserts a bill into \the [src].") - var/left = cashmoney.worth - currently_vending.price - usr.drop_from_inventory(cashmoney) - qdel(cashmoney) - - if(left) - spawn_money(left, src.loc, user) + cashmoney.update_icon() // Vending machines have no idea who paid with cash credit_purchase("(cash)") diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index a01722f9e9..5b46e990f0 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -245,15 +245,15 @@ /obj/item/weapon/storage/secure/briefcase/money/New() ..() - new /obj/item/weapon/spacecash/bundle/c1000(src) - new /obj/item/weapon/spacecash/bundle/c1000(src) - new /obj/item/weapon/spacecash/bundle/c1000(src) - new /obj/item/weapon/spacecash/bundle/c1000(src) - new /obj/item/weapon/spacecash/bundle/c1000(src) - new /obj/item/weapon/spacecash/bundle/c1000(src) - new /obj/item/weapon/spacecash/bundle/c1000(src) - new /obj/item/weapon/spacecash/bundle/c1000(src) - new /obj/item/weapon/spacecash/bundle/c1000(src) - new /obj/item/weapon/spacecash/bundle/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index e9ef52fc11..9b4f9271a2 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -75,10 +75,10 @@ /obj/item/weapon/storage/wallet/random/New() ..() - var/item1_type = pick( /obj/item/weapon/spacecash/bundle/c10,/obj/item/weapon/spacecash/bundle/c100,/obj/item/weapon/spacecash/bundle/c1000,/obj/item/weapon/spacecash/bundle/c20,/obj/item/weapon/spacecash/bundle/c200,/obj/item/weapon/spacecash/bundle/c50, /obj/item/weapon/spacecash/bundle/c500) + var/item1_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500) var/item2_type if(prob(50)) - item2_type = pick( /obj/item/weapon/spacecash/bundle/c10,/obj/item/weapon/spacecash/bundle/c100,/obj/item/weapon/spacecash/bundle/c1000,/obj/item/weapon/spacecash/bundle/c20,/obj/item/weapon/spacecash/bundle/c200,/obj/item/weapon/spacecash/bundle/c50, /obj/item/weapon/spacecash/bundle/c500) + item2_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500) var/item3_type = pick( /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron ) spawn(2) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index f7d50ad028..0722b5b077 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -85,9 +85,9 @@ New() ..() for(var/i = 0, i < 3, i++) - new /obj/item/weapon/spacecash/bundle/c1000(src) + new /obj/item/weapon/spacecash/c1000(src) for(var/i = 0, i < 5, i++) - new /obj/item/weapon/spacecash/bundle/c500(src) + new /obj/item/weapon/spacecash/c500(src) for(var/i = 0, i < 6, i++) - new /obj/item/weapon/spacecash/bundle/c200(src) + new /obj/item/weapon/spacecash/c200(src) return diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 94f13c9a1b..3db3cfbca6 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -607,7 +607,7 @@ for(var/obj/item/briefcase_item in sec_briefcase) qdel(briefcase_item) for(var/i=3, i>0, i--) - sec_briefcase.contents += new /obj/item/weapon/spacecash/bundle/c1000 + sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000 sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba sec_briefcase.contents += new /obj/item/ammo_magazine/a357 diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm index 8f694611d2..d40772a530 100644 --- a/code/modules/economy/cash.dm +++ b/code/modules/economy/cash.dm @@ -20,33 +20,24 @@ if(istype(W, /obj/item/weapon/spacecash)) if(istype(W, /obj/item/weapon/spacecash/ewallet)) return 0 - var/obj/item/weapon/spacecash/bundle/bundle - if(!istype(W, /obj/item/weapon/spacecash/bundle)) - var/obj/item/weapon/spacecash/cash = W - user.drop_from_inventory(cash) - bundle = new (src.loc) - bundle.worth += cash.worth - qdel(cash) - else //is bundle - bundle = W - bundle.worth += src.worth - bundle.update_icon() + var/obj/item/weapon/spacecash/SC = W + SC.worth += src.worth + SC.update_icon() if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/h_user = user h_user.drop_from_inventory(src) - h_user.drop_from_inventory(bundle) - h_user.put_in_hands(bundle) - user << "You add [src.worth] Thalers worth of money to the bundles.
It holds [bundle.worth] Thalers now.
" + h_user.drop_from_inventory(SC) + h_user.put_in_hands(SC) + user << "You combine the Thalers to a bundle of [SC.worth] Thalers." qdel(src) -/obj/item/weapon/spacecash/bundle - name = "pile of thalers" - icon_state = "" - desc = "They are worth 0 Thalers." - worth = 0 - -/obj/item/weapon/spacecash/bundle/update_icon() +/obj/item/weapon/spacecash/update_icon() overlays.Cut() + name = "[worth] Thaler\s" + if(worth in list(1000,500,200,100,50,20,10,1)) + icon_state = "spacecash[worth]" + desc = "It's worth [worth] Thalers." + return var/sum = src.worth var/num = 0 for(var/i in list(1000,500,200,100,50,20,10,1)) @@ -68,7 +59,7 @@ src.overlays += banknote src.desc = "They are worth [worth] Thalers." -/obj/item/weapon/spacecash/bundle/attack_self() +/obj/item/weapon/spacecash/attack_self() var/amount = input(usr, "How many Thalers do you want to take? (0 to [src.worth])", "Take Money", 20) as num amount = round(Clamp(amount, 0, src.worth)) if(amount==0) return 0 @@ -78,77 +69,71 @@ if(!worth) usr.drop_from_inventory(src) if(amount in list(1000,500,200,100,50,20,1)) - var/cashtype = text2path("/obj/item/weapon/spacecash/bundle/c[amount]") + var/cashtype = text2path("/obj/item/weapon/spacecash/c[amount]") var/obj/cash = new cashtype (usr.loc) usr.put_in_hands(cash) else - var/obj/item/weapon/spacecash/bundle/bundle = new (usr.loc) - bundle.worth = amount - bundle.update_icon() - usr.put_in_hands(bundle) + var/obj/item/weapon/spacecash/SC = new (usr.loc) + SC.worth = amount + SC.update_icon() + usr.put_in_hands(SC) if(!worth) qdel(src) -/obj/item/weapon/spacecash/bundle/c1 +/obj/item/weapon/spacecash/c1 name = "1 Thaler" icon_state = "spacecash1" desc = "It's worth 1 credit." worth = 1 -/obj/item/weapon/spacecash/bundle/c10 +/obj/item/weapon/spacecash/c10 name = "10 Thaler" icon_state = "spacecash10" desc = "It's worth 10 Thalers." worth = 10 -/obj/item/weapon/spacecash/bundle/c20 +/obj/item/weapon/spacecash/c20 name = "20 Thaler" icon_state = "spacecash20" desc = "It's worth 20 Thalers." worth = 20 -/obj/item/weapon/spacecash/bundle/c50 +/obj/item/weapon/spacecash/c50 name = "50 Thaler" icon_state = "spacecash50" desc = "It's worth 50 Thalers." worth = 50 -/obj/item/weapon/spacecash/bundle/c100 +/obj/item/weapon/spacecash/c100 name = "100 Thaler" icon_state = "spacecash100" desc = "It's worth 100 Thalers." worth = 100 -/obj/item/weapon/spacecash/bundle/c200 +/obj/item/weapon/spacecash/c200 name = "200 Thaler" icon_state = "spacecash200" desc = "It's worth 200 Thalers." worth = 200 -/obj/item/weapon/spacecash/bundle/c500 +/obj/item/weapon/spacecash/c500 name = "500 Thaler" icon_state = "spacecash500" desc = "It's worth 500 Thalers." worth = 500 -/obj/item/weapon/spacecash/bundle/c1000 +/obj/item/weapon/spacecash/c1000 name = "1000 Thaler" icon_state = "spacecash1000" desc = "It's worth 1000 Thalers." worth = 1000 proc/spawn_money(var/sum, spawnloc, mob/living/carbon/human/human_user as mob) - if(sum in list(1000,500,200,100,50,20,10,1)) - var/cash_type = text2path("/obj/item/weapon/spacecash/bundle/c[sum]") - var/obj/cash = new cash_type (usr.loc) - if(ishuman(human_user) && !human_user.get_active_hand()) - human_user.put_in_hands(cash) - else - var/obj/item/weapon/spacecash/bundle/bundle = new (spawnloc) - bundle.worth = sum - bundle.update_icon() - if (ishuman(human_user) && !human_user.get_active_hand()) - human_user.put_in_hands(bundle) + var/obj/item/weapon/spacecash/SC = new (spawnloc) + SC.worth = sum + SC.update_icon() + if (ishuman(human_user) && !human_user.get_active_hand()) + human_user.put_in_hands(SC) return /obj/item/weapon/spacecash/ewallet @@ -156,6 +141,9 @@ proc/spawn_money(var/sum, spawnloc, mob/living/carbon/human/human_user as mob) icon_state = "efundcard" desc = "A card that holds an amount of money." var/owner_name = "" //So the ATM can set it so the EFTPOS can put a valid name on transactions. + attack_self() return //Don't act + attackby() return //like actual + update_icon() return //space cash /obj/item/weapon/spacecash/ewallet/examine(mob/user) ..(user) diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm new file mode 100644 index 0000000000..d2f0f9dbdf --- /dev/null +++ b/code/modules/economy/cash_register.dm @@ -0,0 +1,474 @@ +/obj/machinery/cash_register + name = "cash register" + desc = "Swipe your ID card to make purchases electronically." + icon = 'icons/obj/stationobjs.dmi' + icon_state = "register_idle" + flags = NOBLUDGEON + req_access = list(access_heads) + anchored = 1 + + var/locked = 1 + var/cash_locked = 1 + var/cash_open = 0 + var/machine_id = "" + var/transaction_amount = 0 // cumulatd amount of money to pay in a single purchase + var/transaction_purpose = null // text that gets used in ATM transaction logs + var/list/transaction_logs = list() // list of strings using html code to visualise data + var/list/item_list = list() // entities and according + var/list/price_list = list() // prices for each purchase + var/manipulating = 0 + + var/cash_stored = 0 + var/obj/item/confirm_item + var/datum/money_account/linked_account + + +// Claim machine ID +/obj/machinery/cash_register/New() + machine_id = "[station_name()] RETAIL #[num_financial_terminals++]" + cash_stored = rand(10, 70)*10 + + +/obj/machinery/cash_register/examine(mob/user as mob) + ..(user) + if(cash_open) + if(cash_stored) + user << "It holds [cash_stored] Thaler\s of money." + else + user << "It's completely empty." + + +/obj/machinery/cash_register/attack_hand(mob/user as mob) + if(cash_open) + if(cash_stored) + spawn_money(cash_stored, loc, user) + cash_stored = 0 + overlays -= "register_cash" + else + open_cash_box() + // Reset if necessary + else if(transaction_amount) + reset_memory() + user << "You reset the machine's memory." + else + custom_interface(user) + + +/obj/machinery/cash_register/AltClick(mob/user) + if(Adjacent(user)) + open_cash_box() + + +/obj/machinery/cash_register/proc/custom_interface(mob/user as mob) + var/dat = "

Retail Scanner

" + if (locked) + dat += "Unlock
" + dat += "Linked account: [linked_account ? linked_account.owner_name : "None"]
" + dat += "[cash_locked? "Unlock" : "Lock"] Cash Box | " + else + dat += "Lock
" + dat += "Linked account: [linked_account ? linked_account.owner_name : "None"]
" + dat += "[cash_locked? "Unlock" : "Lock"] Cash Box | " + dat += "Custom Order
" + for(var/i=1, i<=transaction_logs.len, i++) + dat += "[transaction_logs[i]]
" + + if(transaction_logs.len) + dat += locked ? "
" : "Reset Log
" + dat += "
" + dat += "Device ID: [machine_id]" + user << browse(dat, "window=retail;size=350x500") + + +/obj/machinery/cash_register/Topic(var/href, var/href_list) + if(href_list["choice"]) + switch(href_list["choice"]) + if("toggle_lock") + if(allowed(usr)) + locked = !locked + else + usr << "\icon[src]Insufficient access." + if("toggle_cash_lock") + cash_locked = !cash_locked + if("link_account") + var/attempt_account_num = input("Enter account number", "New account number") as num + var/attempt_pin = input("Enter PIN", "Account PIN") as num + linked_account = attempt_account_access(attempt_account_num, attempt_pin, 1) + if(linked_account) + if(linked_account.suspended) + linked_account = null + src.visible_message("\icon[src]Account has been suspended.") + else + usr << "\icon[src]Account not found." + if("custom_order") + var/t_purpose = sanitize(input("Enter purpose", "New purpose") as text) + if (!t_purpose || !Adjacent(usr)) return + transaction_purpose = t_purpose + item_list += t_purpose + var/t_amount = input("Enter price", "New price") as num + if (!t_amount || !Adjacent(usr)) return + transaction_amount += t_amount + price_list += t_amount + playsound(src, 'sound/machines/twobeep.ogg', 25) + src.visible_message("\icon[src][transaction_purpose]: [transaction_amount] Thaler\s.") + if("reset_log") + transaction_logs.Cut() + usr << "\icon[src]Transaction log reset." + custom_interface(usr) + + + +/obj/machinery/cash_register/attackby(obj/O as obj, user as mob) + // Check for a method of paying (ID, PDA, e-wallet, cash, ect.) + var/obj/item/weapon/card/id/I = O.GetID() + if(I) + scan_card(I, O) + else if (istype(O, /obj/item/weapon/spacecash/ewallet)) + var/obj/item/weapon/spacecash/ewallet/E = O + scan_wallet(E) + else if (istype(O, /obj/item/weapon/spacecash)) + var/obj/item/weapon/spacecash/SC = O + if(cash_open) + user << "You neatly sort the cash into the box." + cash_stored += SC.worth + overlays |= "register_cash" + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.drop_from_inventory(SC) + qdel(SC) + else + scan_cash(SC) + else if(istype(O, /obj/item/weapon/card/emag)) + return ..() + else if(istype(O, /obj/item/weapon/wrench)) + var/obj/item/weapon/wrench/W = O + toggle_anchors(W, user) + // Not paying: Look up price and add it to transaction_amount + else + scan_item_price(O) + + +/obj/machinery/cash_register/MouseDrop_T(atom/dropping, mob/user) + if(Adjacent(dropping) && Adjacent(user) && !user.stat) + attackby(dropping, user) + + +/obj/machinery/cash_register/proc/confirm(obj/item/I) + if(confirm_item == I) + return 1 + else + confirm_item = I + src.visible_message("\icon[src]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") + playsound(src, 'sound/machines/twobeep.ogg', 25) + return 0 + + +/obj/machinery/cash_register/proc/scan_card(obj/item/weapon/card/id/I, obj/item/ID_container) + if (!transaction_amount) + return + + if(!confirm(I)) + return + + if (!linked_account) + usr.visible_message("\icon[src]Unable to connect to linked account.") + return + + if (cash_open) + playsound(src, 'sound/machines/buzz-sigh.ogg', 25) + usr << "\icon[src]The cash box is open." + return + + // Access account for transaction + if(check_account()) + var/datum/money_account/D = get_account(I.associated_account_number) + var/attempt_pin = "" + if(D && D.security_level) + attempt_pin = input("Enter PIN", "Transaction") as num + D = null + D = attempt_account_access(I.associated_account_number, attempt_pin, 2) + + if(!D) + src.visible_message("\icon[src]Unable to access account. Check security settings and try again.") + else + if(D.suspended) + src.visible_message("\icon[src]Your account has been suspended.") + else + if(transaction_amount > D.money) + src.visible_message("\icon[src]Not enough funds.") + else + // Transfer the money + D.money -= transaction_amount + linked_account.money += transaction_amount + + // Create log entry in client's account + var/datum/transaction/T = new() + T.target_name = "[linked_account.owner_name]" + T.purpose = transaction_purpose + T.amount = "([transaction_amount])" + T.source_terminal = machine_id + T.date = current_date_string + T.time = worldtime2text() + D.transaction_log.Add(T) + + // Create log entry in owner's account + T = new() + T.target_name = D.owner_name + T.purpose = transaction_purpose + T.amount = "[transaction_amount]" + T.source_terminal = machine_id + T.date = current_date_string + T.time = worldtime2text() + linked_account.transaction_log.Add(T) + + // Save log + add_transaction_log(I.registered_name ? I.registered_name : "n/A", "ID Card", transaction_amount) + + // Confirm and reset + transaction_complete() + + +/obj/machinery/cash_register/proc/scan_wallet(obj/item/weapon/spacecash/ewallet/E) + if (!transaction_amount) + return + + if(!confirm(E)) + return + + if (cash_open) + playsound(src, 'sound/machines/buzz-sigh.ogg', 25) + usr << "\icon[src]The cash box is open." + return + + // Access account for transaction + if(check_account()) + if(transaction_amount > E.worth) + src.visible_message("\icon[src]Not enough funds.") + else + // Transfer the money + E.worth -= transaction_amount + linked_account.money += transaction_amount + + // Create log entry in owner's account + var/datum/transaction/T = new() + T.target_name = E.owner_name + T.purpose = transaction_purpose + T.amount = "[transaction_amount]" + T.source_terminal = machine_id + T.date = current_date_string + T.time = worldtime2text() + linked_account.transaction_log.Add(T) + + // Save log + add_transaction_log(E.owner_name, "E-Wallet", transaction_amount) + + // Confirm and reset + transaction_complete() + + +/obj/machinery/cash_register/proc/scan_cash(obj/item/weapon/spacecash/SC) + if (!transaction_amount) + return + + if(!confirm(SC)) + return + + if (cash_open) + playsound(src, 'sound/machines/buzz-sigh.ogg', 25) + usr << "\icon[src]The cash box is open." + return + + // Access account for transaction + if(check_account()) + if(transaction_amount > SC.worth) + src.visible_message("\icon[src]Not enough money.") + else + // Insert cash into magical slot + SC.worth -= transaction_amount + SC.update_icon() + if(!SC.worth) + if(ishuman(SC.loc)) + var/mob/living/carbon/human/H = SC.loc + H.drop_from_inventory(SC) + qdel(SC) + cash_stored += transaction_amount + + // Save log + add_transaction_log("n/A", "Cash", transaction_amount) + + // Confirm and reset + transaction_complete() + + +/obj/machinery/cash_register/proc/scan_item_price(obj/O) + if(!istype(O)) return + if (cash_open) + playsound(src, 'sound/machines/buzz-sigh.ogg', 25) + usr << "\icon[src]The cash box is open." + return + + // First check if item has a valid price + var/price = O.get_item_cost() + if(isnull(price)) + src.visible_message("\icon[src]Unable to find item in database.") + return + // Call out item cost + src.visible_message("\icon[src]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") + // Note the transaction purpose for later use + if(transaction_purpose) + transaction_purpose += "
" + transaction_purpose += "[O]: [price] Thaler\s" + transaction_amount += price + item_list += "[O]" + price_list += "[price] þ" + // Animation and sound + playsound(src, 'sound/machines/twobeep.ogg', 25) + // Reset confirmation + confirm_item = null + + +/obj/machinery/cash_register/proc/add_transaction_log(var/c_name, var/p_method, var/t_amount) + var/dat = {" + + + + + + + +
Transaction #[transaction_logs.len+1]
Customer[c_name]
Pay Method[p_method]
Station Time[worldtime2text()]
+ + "} + for(var/i=1, i<=item_list.len, i++) + dat += "" + dat += "" + dat += "
[item_list[i]][price_list[i]]
Total Amount: [transaction_amount] þ
" + + transaction_logs += dat + + +/obj/machinery/cash_register/proc/check_account() + if (!linked_account) + usr.visible_message("\icon[src]Unable to connect to linked account.") + return 0 + + if(linked_account.suspended) + src.visible_message("\icon[src]Connected account has been suspended.") + return 0 + return 1 + + +/obj/machinery/cash_register/proc/transaction_complete() + /// Visible confirmation + playsound(src, 'sound/machines/chime.ogg', 25) + src.visible_message("\icon[src]Transaction complete.") + flick("register_approve", src) + reset_memory() + +/obj/machinery/cash_register/proc/reset_memory() + transaction_amount = null + transaction_purpose = "" + item_list.Cut() + price_list.Cut() + confirm_item = null + + +/obj/machinery/cash_register/verb/open_cash_box() + set category = "Object" + set name = "Open Cash Box" + set desc = "Open/closes the register's cash box." + set src in view(1) + + if(usr.stat) return + + if(cash_locked) + usr << "The cash box is locked." + else if(cash_open) + cash_open = 0 + overlays -= "register_approve" + overlays -= "register_open" + overlays -= "register_cash" + else + cash_open = 1 + overlays += "register_approve" + overlays += "register_open" + if(cash_stored) + overlays += "register_cash" + + +/obj/machinery/cash_register/proc/toggle_anchors(obj/item/weapon/wrench/W, mob/user) + if(manipulating) return + manipulating = 1 + if(!anchored) + user.visible_message("\The [user] begins securing \the [src] to the floor.", + "You begin securing \the [src] to the floor.") + else + user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", + "You begin unsecuring \the [src] from the floor.") + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + if(!do_after(user, 20)) + manipulating = 0 + return + if(!anchored) + user.visible_message("\The [user] has secured \the [src] to the floor.", + "You have secured \the [src] to the floor.") + else + user.visible_message("\The [user] has unsecured \the [src] from the floor.", + "You have unsecured \the [src] from the floor.") + anchored = !anchored + manipulating = 0 + return + + + +/obj/machinery/cash_register/emag_act(var/remaining_charges, var/mob/user) + if(!emagged) + src.visible_message("The [src]'s cash box springs open as [user] swipes the card through the scanner!") + playsound(src, "sparks", 50, 1) + req_access = list() + emagged = 1 + locked = 0 + cash_locked = 0 + open_cash_box() + +//--Premades--// + +/obj/machinery/cash_register/command + New() + linked_account = department_accounts["Command"] + ..() + /obj/machinery/cash_register/medical + + New() + linked_account = department_accounts["Medical"] + ..() + +/obj/machinery/cash_register/engineering + New() + linked_account = department_accounts["Engineering"] + ..() + +/obj/machinery/cash_register/science + New() + linked_account = department_accounts["Science"] + ..() + +/obj/machinery/cash_register/security + New() + linked_account = department_accounts["Security"] + ..() + +/obj/machinery/cash_register/cargo + New() + linked_account = department_accounts["Cargo"] + ..() + +/obj/machinery/cash_register/civilian + New() + linked_account = department_accounts["Civilian"] + ..() \ No newline at end of file diff --git a/code/modules/economy/price_list.dm b/code/modules/economy/price_list.dm new file mode 100644 index 0000000000..8ce9257357 --- /dev/null +++ b/code/modules/economy/price_list.dm @@ -0,0 +1,811 @@ +// For convenience and easier comparing and maintaining of item prices, +// all these will be defined here and sorted in different sections. + +// The item price in thalers. atom/movable so we can also assign a price to animals and other things. +/atom/movable/var/price_tag = null + +// The proc that is called when the price is being asked for. Use this to refer to another object if necessary. +/atom/movable/proc/get_item_cost() + return price_tag + + +//***************// +//---Beverages---// +//***************// + +/datum/reagent/var/price_tag = null + + +// Juices, soda and similar // + +/datum/reagent/drink/juice + price_tag = 2 + +/datum/reagent/toxin/poisonberryjuice + price_tag = 2 + +/datum/reagent/drink/milk + price_tag = 2 + +/datum/reagent/drink/soda + price_tag = 2 + +/datum/reagent/drink/doctor_delight + price_tag = 2 + +/datum/reagent/drink/nothing + price_tag = 2 + +/datum/reagent/drink/milkshake + price_tag = 2 + + +// Beer // + +/datum/reagent/drink/ethanol/ale + price_tag = 2 + +/datum/reagent/drink/ethanol/beer + price_tag = 2 + + + +// Hot Drinks // + +/datum/reagent/drink/rewriter + price_tag = 3 + +/datum/reagent/drink/tea + price_tag = 3 + +/datum/reagent/drink/coffee + price_tag = 3 + +/datum/reagent/drink/hot_coco + price_tag = 3 + + +// Spirituous liquors // + +/datum/reagent/drink/ethanol/irish_cream + price_tag = 5 + +/datum/reagent/drink/ethanol/absinthe + price_tag = 5 + +/datum/reagent/drink/ethanol/bluecuracao + price_tag = 5 + +/datum/reagent/drink/ethanol/deadrum + price_tag = 5 + +/datum/reagent/drink/ethanol/gin + price_tag = 5 + +/datum/reagent/drink/ethanol/coffee/kahlua + price_tag = 5 + +/datum/reagent/drink/ethanol/melonliquor + price_tag = 5 + +/datum/reagent/drink/ethanol/rum + price_tag = 5 + +/datum/reagent/drink/ethanol/tequilla + price_tag = 5 + +/datum/reagent/drink/ethanol/thirteenloko + price_tag = 5 + +/datum/reagent/drink/ethanol/vodka + price_tag = 5 + +/datum/reagent/drink/ethanol/whiskey + price_tag = 5 + + +// Wines // + +/datum/reagent/drink/ethanol/wine + price_tag = 8 + +/datum/reagent/drink/ethanol/cognac + price_tag = 8 + +/datum/reagent/drink/ethanol/sake + price_tag = 8 + +/datum/reagent/drink/ethanol/vermouth + price_tag = 8 + +/datum/reagent/drink/ethanol/pwine + price_tag = 8 + + +// Cocktails // + +/datum/reagent/drink/ethanol/acid_spit + price_tag = 4 + +/datum/reagent/drink/ethanol/alliescocktail + price_tag = 4 + +/datum/reagent/drink/ethanol/aloe + price_tag = 4 + +/datum/reagent/drink/ethanol/amasec + price_tag = 4 + +/datum/reagent/drink/ethanol/andalusia + price_tag = 4 + +/datum/reagent/drink/ethanol/antifreeze + price_tag = 4 + +/datum/reagent/drink/ethanol/atomicbomb + price_tag = 4 + +/datum/reagent/drink/ethanol/coffee/b52 + price_tag = 4 + +/datum/reagent/drink/ethanol/bahama_mama + price_tag = 4 + +/datum/reagent/drink/ethanol/barefoot + price_tag = 4 + +/datum/reagent/drink/ethanol/beepsky_smash + price_tag = 4 + +/datum/reagent/drink/ethanol/bilk + price_tag = 4 + +/datum/reagent/drink/ethanol/black_russian + price_tag = 4 + +/datum/reagent/drink/ethanol/bloody_mary + price_tag = 4 + +/datum/reagent/drink/ethanol/booger + price_tag = 4 + +/datum/reagent/drink/ethanol/brave_bull + price_tag = 4 + +/datum/reagent/drink/ethanol/changeling_sting + price_tag = 4 + +/datum/reagent/drink/ethanol/martini + price_tag = 4 + +/datum/reagent/drink/ethanol/cuba_libre + price_tag = 4 + +/datum/reagent/drink/ethanol/demonsblood + price_tag = 4 + +/datum/reagent/drink/ethanol/devilskiss + price_tag = 4 + +/datum/reagent/drink/ethanol/driestmartini + price_tag = 4 + +/datum/reagent/drink/ethanol/ginfizz + price_tag = 4 + +/datum/reagent/drink/ethanol/grog + price_tag = 4 + +/datum/reagent/drink/ethanol/erikasurprise + price_tag = 4 + +/datum/reagent/drink/ethanol/gargleblaster + price_tag = 4 + +/datum/reagent/drink/ethanol/gintonic + price_tag = 4 + +/datum/reagent/drink/ethanol/goldschlager + price_tag = 4 + +/datum/reagent/drink/ethanol/hippies_delight + price_tag = 4 + +/datum/reagent/drink/ethanol/hooch + price_tag = 4 + +/datum/reagent/drink/ethanol/iced_beer + price_tag = 4 + +/datum/reagent/drink/ethanol/irishcarbomb + price_tag = 4 + +/datum/reagent/drink/ethanol/coffee/irishcoffee + price_tag = 4 + +/datum/reagent/drink/ethanol/longislandicedtea + price_tag = 4 + +/datum/reagent/drink/ethanol/manhattan + price_tag = 4 + +/datum/reagent/drink/ethanol/manhattan_proj + price_tag = 4 + +/datum/reagent/drink/ethanol/manly_dorf + price_tag = 4 + +/datum/reagent/drink/ethanol/margarita + price_tag = 4 + +/datum/reagent/drink/ethanol/mead + price_tag = 4 + +/datum/reagent/drink/ethanol/moonshine + price_tag = 4 + +/datum/reagent/drink/ethanol/neurotoxin + price_tag = 4 + +/datum/reagent/drink/ethanol/patron + price_tag = 4 + +/datum/reagent/drink/ethanol/red_mead + price_tag = 4 + +/datum/reagent/drink/ethanol/sbiten + price_tag = 4 + +/datum/reagent/drink/ethanol/screwdrivercocktail + price_tag = 4 + +/datum/reagent/drink/ethanol/silencer + price_tag = 4 + +/datum/reagent/drink/ethanol/singulo + price_tag = 4 + +/datum/reagent/drink/ethanol/snowwhite + price_tag = 4 + +/datum/reagent/drink/ethanol/suidream + price_tag = 4 + +/datum/reagent/drink/ethanol/syndicatebomb + price_tag = 4 + +/datum/reagent/drink/ethanol/tequillasunrise + price_tag = 4 + +/datum/reagent/drink/ethanol/threemileisland + price_tag = 4 + +/datum/reagent/drink/ethanol/toxins_special + price_tag = 4 + +/datum/reagent/drink/ethanol/vodkamartini + price_tag = 4 + +/datum/reagent/drink/ethanol/vodkatonic + price_tag = 4 + +/datum/reagent/drink/ethanol/white_russian + price_tag = 4 + +/datum/reagent/drink/ethanol/whiskey_cola + price_tag = 4 + +/datum/reagent/drink/ethanol/whiskeysoda + price_tag = 4 + +/datum/reagent/drink/ethanol/specialwhiskey + price_tag = 4 + + +// Cocktails without alcohol // + +/datum/reagent/drink/ethanol/bananahonk + price_tag = 3 + + +// From the machine // + +/obj/item/weapon/reagent_containers/food/drinks/cans/cola + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/drinks/cans/starkist + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/drinks/cans/space_up + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice + price_tag = 1 + + +//***************// +//---Foodstuff---// +//***************// + + +// Snacks // + +/obj/item/weapon/reagent_containers/food/snacks/candy + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sosjerky + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/tastybread + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/no_raisin + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks + price_tag = 4 + +/obj/item/weapon/reagent_containers/food/snacks/chips + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/drinks/dry_ramen + price_tag = 5 + + +// Burger // + +/obj/item/weapon/reagent_containers/food/snacks/brainburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/ghostburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/human/burger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/monkeyburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fishburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tofuburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/roburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/roburgerbig + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/xenoburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/clownburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/mimeburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/spellburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/jellyburger + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger + price_tag = 4 + +/obj/item/weapon/reagent_containers/food/snacks/superbiteburger + price_tag = 8 + + +// Sandwiches // + +/obj/item/weapon/reagent_containers/food/snacks/sandwich + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/grilledcheese + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich + price_tag = 3 + + +// Cookies and Candies // + +/obj/item/weapon/reagent_containers/food/snacks/cookie + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/chocolatebar + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/chocolateegg + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/candy_corn + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/donut + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/donut/chaos + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/popcorn + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/fortunecookie + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/candiedapple + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/chawanmushi + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cracker + price_tag = 1 + + +// Full meals // + +/obj/item/weapon/reagent_containers/food/snacks/friedegg + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/tofurkey + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/carpmeat + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/fishfingers + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/omelette + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/waffles + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/eggplantparm + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/soylentgreen + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/soylenviridians + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/wingfangchu + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/kabob + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/monkeykabob + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/tofukabob + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/cubancarp + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/fries + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/spagetti + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/cheesyfries + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/enchiladas + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/fishandchips + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/stew + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/boiledrice + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/ricepudding + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/pastatomato + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/spesslaw + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/carrotfries + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/appletart + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/margheritaslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/ + + +// Baked Goods // + +/obj/item/weapon/reagent_containers/food/snacks/poppypretzel + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/baguette + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/twobread + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/breadslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice + price_tag = 1 + + +// Soups // + +/obj/item/weapon/reagent_containers/food/snacks/meatballsoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/slimesoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/bloodsoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/clownstears + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/nettlesoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/mysterysoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/wishsoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/hotchili + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/coldchili + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/tomatosoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/milosoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/snacks/beetsoup + price_tag = 3 + + +// Pies // + +/obj/item/weapon/reagent_containers/food/snacks/pie + price_tag = 4 + +/obj/item/weapon/reagent_containers/food/snacks/meatpie + price_tag = 4 + +/obj/item/weapon/reagent_containers/food/snacks/tofupie + price_tag = 4 + +/obj/item/weapon/reagent_containers/food/snacks/plump_pie + price_tag = 4 + +/obj/item/weapon/reagent_containers/food/snacks/xemeatpie + price_tag = 4 + +/obj/item/weapon/reagent_containers/food/snacks/applepie + price_tag = 4 + +/obj/item/weapon/reagent_containers/food/snacks/cherrypie + price_tag = 4 + + +// Cakes // + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/braincakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/limecakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/applecakeslice + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie + price_tag = 5 + +/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice + price_tag = 1 + + +// Misc // + +/obj/item/weapon/reagent_containers/food/snacks/boiledegg + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket + price_tag = 1 + +/obj/item/weapon/reagent_containers/food/snacks/sausage + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/muffin + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tossedsalad + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/validsalad + price_tag = 2 + +/obj/item/weapon/reagent_containers/food/snacks/dionaroast + price_tag = 25 + +/obj/item/pizzabox + get_item_cost() + return get_item_cost(pizza) \ No newline at end of file diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm new file mode 100644 index 0000000000..84503099c0 --- /dev/null +++ b/code/modules/economy/retail_scanner.dm @@ -0,0 +1,350 @@ +/obj/item/device/retail_scanner + name = "retail scanner" + desc = "Swipe your ID card to make purchases electronically." + icon = 'icons/obj/device.dmi' + icon_state = "retail_idle" + flags = NOBLUDGEON + req_access = list(access_heads) + + var/locked = 1 + var/emagged = 0 + var/machine_id = "" + var/transaction_amount = 0 // cumulatd amount of money to pay in a single purchase + var/transaction_purpose = null // text that gets used in ATM transaction logs + var/list/transaction_logs = list() // list of strings using html code to visualise data + var/list/item_list = list() // entities and according + var/list/price_list = list() // prices for each purchase + + var/obj/item/confirm_item + var/datum/money_account/linked_account + + +// Claim machine ID +/obj/item/device/retail_scanner/New() + machine_id = "[station_name()] RETAIL #[num_financial_terminals++]" + if(locate(/obj/structure/table) in loc) + pixel_y = 3 + + +// Always face the user when put on a table +/obj/item/device/retail_scanner/afterattack(atom/movable/AM, mob/user, proximity) + if(!proximity) return + if(istype(AM, /obj/structure/table)) + src.pixel_y = 3 // Shift it up slightly to look better on table + src.dir = get_dir(src, user) + else + scan_item_price(AM) + +// Reset dir when picked back up +/obj/item/device/retail_scanner/pickup(mob/user) + src.dir = SOUTH + src.pixel_y = 0 + + +/obj/item/device/retail_scanner/attack_self(mob/user as mob) + // Reset if necessary + if(transaction_amount) + reset_memory() + user << "You reset the device." + else + custom_interface(user) + + +/obj/item/device/retail_scanner/AltClick(var/mob/user) + if(Adjacent(user)) + custom_interface(user) + + +/obj/item/device/retail_scanner/proc/custom_interface(mob/user as mob) + var/dat = "

Retail Scanner

" + if (locked) + dat += "Unlock
" + dat += "Linked account: [linked_account ? linked_account.owner_name : "None"]
" + else + dat += "Lock
" + dat += "Linked account: [linked_account ? linked_account.owner_name : "None"]
" + dat += "Custom Order
" + for(var/i=1, i<=transaction_logs.len, i++) + dat += "[transaction_logs[i]]
" + + if(transaction_logs.len) + dat += locked ? "
" : "Reset Log
" + dat += "
" + dat += "Device ID: [machine_id]" + user << browse(dat, "window=retail;size=350x500") + + +/obj/item/device/retail_scanner/Topic(var/href, var/href_list) + if(href_list["choice"]) + switch(href_list["choice"]) + if("toggle_lock") + if(allowed(usr)) + locked = !locked + else + usr << "\icon[src]Insufficient access." + if("link_account") + var/attempt_account_num = input("Enter account number", "New account number") as num + var/attempt_pin = input("Enter PIN", "Account PIN") as num + linked_account = attempt_account_access(attempt_account_num, attempt_pin, 1) + if(linked_account) + if(linked_account.suspended) + linked_account = null + src.visible_message("\icon[src]Account has been suspended.") + else + usr << "\icon[src]Account not found." + if("custom_order") + var/t_purpose = sanitize(input("Enter purpose", "New purpose") as text) + if (!t_purpose || !Adjacent(usr)) return + transaction_purpose = t_purpose + item_list += t_purpose + var/t_amount = input("Enter price", "New price") as num + if (!t_amount || !Adjacent(usr)) return + transaction_amount += t_amount + price_list += t_amount + playsound(src, 'sound/machines/twobeep.ogg', 25) + src.visible_message("\icon[src][transaction_purpose]: [transaction_amount] Thaler\s.") + if("reset_log") + transaction_logs.Cut() + usr << "\icon[src]Transaction log reset." + custom_interface(usr) + + + +/obj/item/device/retail_scanner/attackby(obj/O as obj, user as mob) + // Check for a method of paying (ID, PDA, e-wallet, cash, ect.) + var/obj/item/weapon/card/id/I = O.GetID() + if(I) + scan_card(I, O) + else if (istype(O, /obj/item/weapon/spacecash/ewallet)) + var/obj/item/weapon/spacecash/ewallet/E = O + scan_wallet(E) + else if (istype(O, /obj/item/weapon/spacecash)) + usr << "This device does not accept cash." + + else if(istype(O, /obj/item/weapon/card/emag)) + return ..() + // Not paying: Look up price and add it to transaction_amount + else + scan_item_price(O) + + +/obj/item/device/retail_scanner/proc/confirm(var/obj/item/I) + if(confirm_item == I) + return 1 + else + confirm_item = I + src.visible_message("\icon[src]Total price: [transaction_amount] Thaler\s. Swipe again to confirm.") + playsound(src, 'sound/machines/twobeep.ogg', 25) + return 0 + + +/obj/item/device/retail_scanner/proc/scan_card(var/obj/item/weapon/card/id/I, var/obj/item/ID_container) + if (!transaction_amount) + return + + if(!confirm(I)) + return + + if (!linked_account) + usr.visible_message("\icon[src]Unable to connect to linked account.") + return + + // Access account for transaction + if(check_account()) + var/datum/money_account/D = get_account(I.associated_account_number) + var/attempt_pin = "" + if(D && D.security_level) + attempt_pin = input("Enter PIN", "Transaction") as num + D = null + D = attempt_account_access(I.associated_account_number, attempt_pin, 2) + + if(!D) + src.visible_message("\icon[src]Unable to access account. Check security settings and try again.") + else + if(D.suspended) + src.visible_message("\icon[src]Your account has been suspended.") + else + if(transaction_amount > D.money) + src.visible_message("\icon[src]Not enough funds.") + else + // Transfer the money + D.money -= transaction_amount + linked_account.money += transaction_amount + + // Create log entry in client's account + var/datum/transaction/T = new() + T.target_name = "[linked_account.owner_name]" + T.purpose = transaction_purpose + T.amount = "([transaction_amount])" + T.source_terminal = machine_id + T.date = current_date_string + T.time = worldtime2text() + D.transaction_log.Add(T) + + // Create log entry in owner's account + T = new() + T.target_name = D.owner_name + T.purpose = transaction_purpose + T.amount = "[transaction_amount]" + T.source_terminal = machine_id + T.date = current_date_string + T.time = worldtime2text() + linked_account.transaction_log.Add(T) + + // Save log + add_transaction_log(I.registered_name ? I.registered_name : "n/A", "ID Card", transaction_amount) + + // Confirm and reset + transaction_complete() + + +/obj/item/device/retail_scanner/proc/scan_wallet(var/obj/item/weapon/spacecash/ewallet/E) + if (!transaction_amount) + return + + if(!confirm(E)) + return + + // Access account for transaction + if(check_account()) + if(transaction_amount > E.worth) + src.visible_message("\icon[src]Not enough funds.") + else + // Transfer the money + E.worth -= transaction_amount + linked_account.money += transaction_amount + + // Create log entry in owner's account + var/datum/transaction/T = new() + T.target_name = E.owner_name + T.purpose = transaction_purpose + T.amount = "[transaction_amount]" + T.source_terminal = machine_id + T.date = current_date_string + T.time = worldtime2text() + linked_account.transaction_log.Add(T) + + // Save log + add_transaction_log(E.owner_name, "E-Wallet", transaction_amount) + + // Confirm and reset + transaction_complete() + + +/obj/item/device/retail_scanner/proc/scan_item_price(var/obj/O) + if(!istype(O)) return + // First check if item has a valid price + var/price = O.get_item_cost() + if(isnull(price)) + src.visible_message("\icon[src]Unable to find item in database.") + return + // Call out item cost + src.visible_message("\icon[src]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].") + // Note the transaction purpose for later use + if(transaction_purpose) + transaction_purpose += "
" + transaction_purpose += "[O]: [price] Thaler\s" + transaction_amount += price + item_list += "[O]" + price_list += "[price] þ" + // Animation and sound + flick("retail_scan", src) + playsound(src, 'sound/machines/twobeep.ogg', 25) + // Reset confirmation + confirm_item = null + + +/obj/item/device/retail_scanner/proc/add_transaction_log(var/c_name, var/p_method, var/t_amount) + var/dat = {" + + + + + + + +
Transaction #[transaction_logs.len+1]
Customer[c_name]
Pay Method[p_method]
Station Time[worldtime2text()]
+ + "} + for(var/i=1, i<=item_list.len, i++) + dat += "" + dat += "" + dat += "
[item_list[i]][price_list[i]]
Total Amount: [transaction_amount] þ
" + + transaction_logs += dat + + +/obj/item/device/retail_scanner/proc/check_account() + if (!linked_account) + usr.visible_message("\icon[src]Unable to connect to linked account.") + return 0 + + if(linked_account.suspended) + src.visible_message("\icon[src]Connected account has been suspended.") + return 0 + return 1 + + +/obj/item/device/retail_scanner/proc/transaction_complete() + /// Visible confirmation + playsound(src, 'sound/machines/chime.ogg', 25) + src.visible_message("\icon[src]Transaction complete.") + flick("retail_approve", src) + reset_memory() + +/obj/item/device/retail_scanner/proc/reset_memory() + transaction_amount = null + transaction_purpose = "" + item_list.Cut() + price_list.Cut() + confirm_item = null + + +/obj/item/device/retail_scanner/emag_act(var/remaining_charges, var/mob/user) + if(!emagged) + user << "You stealthily swipe the cryptographic sequencer through \the [src]." + playsound(src, "sparks", 50, 1) + req_access = list() + emagged = 1 + +//--Premades--// + +/obj/item/device/retail_scanner/command + New() + linked_account = department_accounts["Command"] + ..() + /obj/item/device/retail_scanner/medical + + New() + linked_account = department_accounts["Medical"] + ..() + +/obj/item/device/retail_scanner/engineering + New() + linked_account = department_accounts["Engineering"] + ..() + +/obj/item/device/retail_scanner/science + New() + linked_account = department_accounts["Science"] + ..() + +/obj/item/device/retail_scanner/security + New() + linked_account = department_accounts["Security"] + ..() + +/obj/item/device/retail_scanner/cargo + New() + linked_account = department_accounts["Cargo"] + ..() + +/obj/item/device/retail_scanner/civilian + New() + linked_account = department_accounts["Civilian"] + ..() \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 498dcbed10..47d03e5974 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -345,7 +345,7 @@ // Juices -/datum/reagent/drink/banana +/datum/reagent/drink/juice/banana name = "Banana Juice" id = "banana" description = "The raw essence of a banana." @@ -355,7 +355,7 @@ glass_name = "glass of banana juice" glass_desc = "The raw essence of a banana. HONK!" -/datum/reagent/drink/berryjuice +/datum/reagent/drink/juice/berry name = "Berry Juice" id = "berryjuice" description = "A delicious blend of several different kinds of berries." @@ -365,7 +365,7 @@ glass_name = "glass of berry juice" glass_desc = "Berry juice. Or maybe it's jam. Who cares?" -/datum/reagent/drink/carrotjuice +/datum/reagent/drink/juice/carrot name = "Carrot juice" id = "carrotjuice" description = "It is just like a carrot but without crunching." @@ -375,11 +375,11 @@ glass_name = "glass of carrot juice" glass_desc = "It is just like a carrot but without crunching." -/datum/reagent/drink/carrotjuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/datum/reagent/drink/juice/carrot/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) ..() M.reagents.add_reagent("imidazoline", removed * 0.2) -/datum/reagent/drink/grapejuice +/datum/reagent/drink/juice/ name = "Grape Juice" id = "grapejuice" description = "It's grrrrrape!" @@ -389,7 +389,7 @@ glass_name = "glass of grape juice" glass_desc = "It's grrrrrape!" -/datum/reagent/drink/lemonjuice +/datum/reagent/drink/juice/lemon name = "Lemon Juice" id = "lemonjuice" description = "This juice is VERY sour." @@ -399,7 +399,7 @@ glass_name = "glass of lemon juice" glass_desc = "Sour..." -/datum/reagent/drink/limejuice +/datum/reagent/drink/juice/lime name = "Lime Juice" id = "limejuice" description = "The sweet-sour juice of limes." @@ -409,13 +409,13 @@ glass_name = "glass of lime juice" glass_desc = "A glass of sweet-sour lime juice" -/datum/reagent/drink/limejuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/datum/reagent/drink/juice/lime/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) ..() if(alien == IS_DIONA) return M.adjustToxLoss(-0.5 * removed) -/datum/reagent/drink/orangejuice +/datum/reagent/drink/juice/orange name = "Orange juice" id = "orangejuice" description = "Both delicious AND rich in Vitamin C, what more do you need?" @@ -442,7 +442,7 @@ glass_name = "glass of poison berry juice" glass_desc = "A glass of deadly juice." -/datum/reagent/drink/potato_juice +/datum/reagent/drink/juice/potato name = "Potato Juice" id = "potato" description = "Juice of the potato. Bleh." @@ -453,7 +453,7 @@ glass_name = "glass of potato juice" glass_desc = "Juice from a potato. Bleh." -/datum/reagent/drink/tomatojuice +/datum/reagent/drink/juice/tomato name = "Tomato Juice" id = "tomatojuice" description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" @@ -463,13 +463,13 @@ glass_name = "glass of tomato juice" glass_desc = "Are you sure this is tomato juice?" -/datum/reagent/drink/tomatojuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/datum/reagent/drink/juice/tomato/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) ..() if(alien == IS_DIONA) return M.heal_organ_damage(0, 0.5 * removed) -/datum/reagent/drink/watermelonjuice +/datum/reagent/drink/juice/watermelon name = "Watermelon Juice" id = "watermelonjuice" description = "Delicious juice made from watermelon." @@ -674,7 +674,7 @@ cup_name = "cup of hot chocolate" cup_desc = "Made with love! And cocoa beans." -/datum/reagent/drink/sodawater +/datum/reagent/drink/soda/sodawater name = "Soda Water" id = "sodawater" description = "A can of club soda. Why not make a scotch and soda?" @@ -687,7 +687,7 @@ glass_name = "glass of soda water" glass_desc = "Soda water. Why not make a scotch and soda?" -/datum/reagent/drink/grapesoda +/datum/reagent/drink/soda/grapesoda name = "Grape Soda" id = "grapesoda" description = "Grapes made into a fine drank." @@ -698,7 +698,7 @@ glass_name = "glass of grape soda" glass_desc = "Looks like a delicious drink!" -/datum/reagent/drink/tonic +/datum/reagent/drink/soda/tonic name = "Tonic Water" id = "tonic" description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." @@ -712,7 +712,7 @@ glass_name = "glass of tonic water" glass_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." -/datum/reagent/drink/lemonade +/datum/reagent/drink/soda/lemonade name = "Lemonade" description = "Oh the nostalgia..." id = "lemonade" @@ -723,7 +723,7 @@ glass_name = "glass of lemonade" glass_desc = "Oh the nostalgia..." -/datum/reagent/drink/kiraspecial +/datum/reagent/drink/soda/kiraspecial name = "Kira Special" description = "Long live the guy who everyone had mistaken for a girl. Baka!" id = "kiraspecial" @@ -735,7 +735,7 @@ glass_desc = "Long live the guy who everyone had mistaken for a girl. Baka!" glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/drink/brownstar +/datum/reagent/drink/soda/brownstar name = "Brown Star" description = "It's not what it sounds like..." id = "brownstar" @@ -774,7 +774,7 @@ ..() M.make_jittery(5) -/datum/reagent/drink/nuka_cola +/datum/reagent/drink/soda/nuka_cola name = "Nuka Cola" id = "nuka_cola" description = "Cola, cola never changes." @@ -806,7 +806,7 @@ glass_desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks." glass_center_of_mass = list("x"=17, "y"=6) -/datum/reagent/drink/space_cola +/datum/reagent/drink/soda/space_cola name = "Space Cola" id = "cola" description = "A refreshing beverage." @@ -819,7 +819,7 @@ glass_name = "glass of Space Cola" glass_desc = "A glass of refreshing Space Cola" -/datum/reagent/drink/spacemountainwind +/datum/reagent/drink/soda/spacemountainwind name = "Mountain Wind" id = "spacemountainwind" description = "Blows right through you like a space wind." @@ -832,7 +832,7 @@ glass_name = "glass of Space Mountain Wind" glass_desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind." -/datum/reagent/drink/dr_gibb +/datum/reagent/drink/soda/dr_gibb name = "Dr. Gibb" id = "dr_gibb" description = "A delicious blend of 42 different flavours" @@ -844,7 +844,7 @@ glass_name = "glass of Dr. Gibb" glass_desc = "Dr. Gibb. Not as dangerous as the name might imply." -/datum/reagent/drink/space_up +/datum/reagent/drink/soda/space_up name = "Space-Up" id = "space_up" description = "Tastes like a hull breach in your mouth." @@ -855,7 +855,7 @@ glass_name = "glass of Space-up" glass_desc = "Space-up. It helps keep your cool." -/datum/reagent/drink/lemon_lime +/datum/reagent/drink/soda/lemon_lime name = "Lemon Lime" description = "A tangy substance made of 0.5% natural citrus!" id = "lemon_lime" @@ -1124,7 +1124,7 @@ glass_desc = "A glass of sake." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/ethanol/tequilla +/datum/reagent/ethanol/tequila name = "Tequila" id = "tequilla" description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?" @@ -1132,7 +1132,7 @@ strength = 25 glass_icon_state = "tequillaglass" - glass_name = "glass of Tequilla" + glass_name = "glass of Tequila" glass_desc = "Now all that's missing is the weird colored shades!" glass_center_of_mass = list("x"=16, "y"=12) @@ -1893,7 +1893,7 @@ strength = 25 glass_icon_state = "tequillasunriseglass" - glass_name = "glass of Tequilla Sunrise" + glass_name = "glass of Tequila Sunrise" glass_desc = "Oh great, now you feel nostalgic about sunrises back on Terra..." /datum/reagent/ethanol/threemileisland diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index 072a21f777..63a467dcfd 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -39,6 +39,11 @@ center_of_mass = R.glass_center_of_mass else center_of_mass = list("x"=16, "y"=10) + + if(R.price_tag) + price_tag = R.price_tag + else + price_tag = null else icon_state = "glass_empty" name = "glass" @@ -78,6 +83,11 @@ else center_of_mass = list("x"=16, "y"=16) + if(R.price_tag) + price_tag = R.price_tag + else + price_tag = null + else icon_state = "cup_empty" name = "coffee cup" diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index dfade93ae9..dfa384488e 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index a9998cd624..225705ab65 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/maps/polaris-1.dmm b/maps/polaris-1.dmm index 91d28db88f..6776622f16 100644 --- a/maps/polaris-1.dmm +++ b/maps/polaris-1.dmm @@ -502,7 +502,7 @@ "ajH" = (/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "ajI" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access = list(11,13)},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/solar/auxstarboard) "ajJ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/invisible,/obj/item/clothing/under/suit_jacket/red,/obj/machinery/light,/obj/item/weapon/barcodescanner,/turf/simulated/floor/carpet,/area/library) -"ajK" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/camera,/obj/item/device/eftpos{eftpos_name = "Library EFTPOS scanner"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/turf/simulated/floor/carpet,/area/library) +"ajK" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/obj/item/device/retail_scanner/civilian{tag = "icon-retail_idle (NORTH)"; icon_state = "retail_idle"; dir = 1},/obj/item/device/camera,/turf/simulated/floor/carpet,/area/library) "ajL" = (/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library) "ajM" = (/obj/machinery/librarycomp{pixel_y = 0},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/library) "ajN" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/wood,/area/library) @@ -1392,7 +1392,7 @@ "aAN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/security_equiptment_storage) "aAO" = (/obj/machinery/computer/prisoner,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden) "aAP" = (/obj/structure/filingcabinet/chestdrawer,/obj/effect/floor_decal/industrial/outline/grey,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/tiled/dark,/area/security/warden) -"aAQ" = (/obj/structure/table/reinforced,/obj/item/device/eftpos{eftpos_name = "Brig EFTPOS scanner"},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/network/security{c_tag = "SEC - Warden's Office"},/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/weapon/wrench,/turf/simulated/floor/tiled/dark,/area/security/warden) +"aAQ" = (/obj/structure/table/reinforced,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/network/security{c_tag = "SEC - Warden's Office"},/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/weapon/wrench,/obj/item/device/retail_scanner/security,/turf/simulated/floor/tiled/dark,/area/security/warden) "aAR" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 14; pixel_y = 24},/obj/machinery/photocopier,/turf/simulated/floor/tiled/dark,/area/security/warden) "aAS" = (/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Warden's Office"},/turf/simulated/floor/tiled/dark,/area/security/warden) "aAT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/dark,/area/security/warden) @@ -2887,7 +2887,7 @@ "bdA" = (/obj/machinery/door/airlock/glass_medical{name = "Staff Room"; req_access = list(5)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bdB" = (/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/grass,/area/hydroponics/garden) "bdC" = (/obj/effect/floor_decal/corner/green{dir = 5},/turf/simulated/floor/tiled,/area/hydroponics/garden) -"bdD" = (/obj/structure/table/marble,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 8; id = "coffeeshop"; layer = 3.1; name = "Cafe Shutters"},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) +"bdD" = (/obj/structure/table/marble,/obj/machinery/door/firedoor/border_only,/obj/machinery/cash_register/civilian{tag = "icon-register_idle (EAST)"; icon_state = "register_idle"; dir = 4},/obj/machinery/door/blast/shutters{dir = 8; id = "coffeeshop"; layer = 3.1; name = "Cafe Shutters"},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "bdE" = (/obj/structure/table/marble,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 8; pixel_y = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 0; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 8; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = 0; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -8; pixel_y = 4},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop) "bdF" = (/obj/structure/cable/green,/obj/structure/flora/pottedplant,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/effect/floor_decal/corner/brown/full,/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop) "bdG" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop) @@ -4752,7 +4752,7 @@ "bNt" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bNu" = (/obj/structure/closet/secure_closet/hop2,/obj/effect/floor_decal/corner/blue{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop) "bNv" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/blue,/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) -"bNw" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/device/eftpos{eftpos_name = "HoP EFTPOS scanner"},/obj/item/weapon/stamp/hop,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) +"bNw" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/stamp/hop,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bNx" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bNy" = (/obj/effect/floor_decal/corner/blue,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop) "bNz" = (/obj/effect/floor_decal/corner/blue{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/bridge_hallway) @@ -4969,7 +4969,7 @@ "bRC" = (/obj/machinery/door/airlock{name = "Private Restroom"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain) "bRD" = (/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain) "bRE" = (/obj/structure/toilet{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/captain) -"bRF" = (/obj/structure/closet/chefcloset,/obj/item/device/eftpos{eftpos_name = "Kitchen EFTPOS scanner"},/obj/item/glass_jar,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"bRF" = (/obj/structure/closet/chefcloset,/obj/item/glass_jar,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/device/retail_scanner/civilian,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bRG" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bRH" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/light,/obj/machinery/button/remote/blast_door{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -1; pixel_y = -24; req_access = list(28)},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bRI" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) @@ -5064,7 +5064,7 @@ "bTt" = (/obj/machinery/chemical_dispenser/full,/obj/structure/table/reinforced,/turf/simulated/floor/tiled/white,/area/medical/chemistry) "bTu" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor/tiled/white,/area/medical/chemistry) "bTv" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/tiled/white,/area/medical/chemistry) -"bTw" = (/obj/structure/table/woodentable,/obj/item/weapon/melee/chainofcommand,/obj/item/device/eftpos{eftpos_name = "Captain EFTPOS scanner"},/obj/machinery/button/remote/airlock{desc = "A remote control switch for the Starboard Bridge Doors."; id = "sbridgedoor"; name = "Starboard Bridge Door Control"; pixel_x = 4; pixel_y = -6},/obj/machinery/button/remote/airlock{desc = "A remote control switch for the captain's office."; id = "captaindoor"; name = "Captain's Office Door Control"; pixel_x = 4; pixel_y = 6},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bTw" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cash_register/civilian{tag = "icon-register_idle (NORTH)"; icon_state = "register_idle"; dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/cafeteria) "bTx" = (/obj/structure/closet/secure_closet/medical1,/obj/item/weapon/storage/box/pillbottles,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/chemistry) "bTy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/chemistry) "bTz" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/paleblue{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/patient_wing) @@ -5300,7 +5300,7 @@ "bXV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bXW" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bXX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/bridge/meeting_room) -"bXY" = (/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/obj/item/device/eftpos{eftpos_name = "Bridge EFTPOS scanner"},/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/bridge/meeting_room) +"bXY" = (/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/retail_scanner/command{tag = "icon-retail_idle (EAST)"; icon_state = "retail_idle"; dir = 4},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bXZ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bYa" = (/obj/structure/bed/chair/comfy/black{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/bridge/meeting_room) "bYb" = (/obj/item/weapon/folder/red,/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/bridge/meeting_room) @@ -6268,7 +6268,7 @@ "cqB" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_three) "cqC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/medbay_aft) "cqD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/medbay_aft) -"cqE" = (/obj/structure/table/standard,/obj/item/weapon/folder/yellow,/obj/item/device/eftpos{eftpos_name = "Cargo Bay EFTPOS scanner"},/obj/effect/floor_decal/corner/brown{dir = 9},/obj/machinery/firealarm{dir = 8; pixel_x = -26},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/office) +"cqE" = (/obj/structure/table/woodentable,/obj/item/weapon/melee/chainofcommand,/obj/machinery/button/remote/airlock{desc = "A remote control switch for the Starboard Bridge Doors."; id = "sbridgedoor"; name = "Starboard Bridge Door Control"; pixel_x = 4; pixel_y = -6},/obj/machinery/button/remote/airlock{desc = "A remote control switch for the captain's office."; id = "captaindoor"; name = "Captain's Office Door Control"; pixel_x = 4; pixel_y = 6},/turf/simulated/floor/wood,/area/crew_quarters/captain) "cqF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/quartermaster/office) "cqG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/quartermaster/office) "cqH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/quartermaster/office) @@ -6417,7 +6417,7 @@ "ctu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/docking_hallway) "ctv" = (/obj/structure/table/standard,/obj/item/weapon/tape_roll,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/obj/effect/floor_decal/corner/brown/full,/turf/simulated/floor/tiled,/area/quartermaster/office) "ctw" = (/obj/structure/table/standard,/obj/item/weapon/hand_labeler,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled,/area/quartermaster/office) -"ctx" = (/obj/structure/table/standard,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/obj/effect/floor_decal/corner/brown{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/quartermaster/office) +"ctx" = (/obj/structure/table/standard,/obj/item/weapon/folder/yellow,/obj/effect/floor_decal/corner/brown{dir = 9},/obj/machinery/firealarm{dir = 8; pixel_x = -26},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/office) "cty" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/quartermaster/office) "ctz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/wood,/area/crew_quarters/bar) "ctA" = (/obj/effect/floor_decal/corner/brown{dir = 10},/obj/machinery/status_display/supply_display{pixel_y = -32},/turf/simulated/floor/tiled,/area/quartermaster/foyer) @@ -6795,7 +6795,7 @@ "cAI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "cAJ" = (/obj/structure/closet,/obj/item/weapon/storage/backpack/dufflebag,/turf/simulated/floor/tiled,/area/quartermaster/qm) "cAK" = (/obj/structure/closet/secure_closet/quartermaster,/turf/simulated/floor/tiled,/area/quartermaster/qm) -"cAL" = (/obj/structure/table/standard,/obj/item/weapon/coin/silver{pixel_x = -3; pixel_y = 3},/obj/item/weapon/coin/silver,/obj/item/device/eftpos{eftpos_name = "Quartermaster EFTPOS scanner"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light,/turf/simulated/floor/tiled,/area/quartermaster/qm) +"cAL" = (/obj/structure/table/standard,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = -12; pixel_y = -24},/obj/effect/floor_decal/corner/brown{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/item/device/retail_scanner/civilian{tag = "icon-retail_idle (NORTH)"; icon_state = "retail_idle"; dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/office) "cAM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cAN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/apmaint) "cAO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/apmaint) @@ -7385,7 +7385,7 @@ "cMa" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/light{dir = 1},/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge) "cMb" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge) "cMc" = (/obj/machinery/lapvend,/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge) -"cMd" = (/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/device/eftpos{eftpos_name = "Bar EFTPOS scanner"},/obj/item/glass_jar,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/wood,/area/crew_quarters/bar) +"cMd" = (/obj/structure/table/standard,/obj/item/weapon/coin/silver{pixel_x = -3; pixel_y = 3},/obj/item/weapon/coin/silver,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light,/turf/simulated/floor/tiled,/area/quartermaster/qm) "cMe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "cMf" = (/obj/structure/reagent_dispensers/beerkeg,/obj/machinery/camera/network/civilian{c_tag = "CIV - Bar Storage"; dir = 2},/turf/simulated/floor/wood,/area/crew_quarters/bar) "cMg" = (/obj/machinery/button/remote/blast_door{id = "bar"; name = "Bar Shutters"; pixel_x = -26; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -36; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/lino,/area/crew_quarters/bar) @@ -9724,6 +9724,8 @@ "dEZ" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/corner/blue{dir = 5},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard) "dFa" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/button/remote/blast_door{id = "first_aid_station"; name = "Security Shutters"; pixel_y = 25},/obj/effect/floor_decal/corner/blue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard) "dFb" = (/obj/structure/table/reinforced,/obj/effect/floor_decal/corner/blue/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "First-Aid Station"; req_access = list(5)},/obj/machinery/door/blast/shutters{dir = 4; id = "first_aid_station"; layer = 3.1; name = "Security Shutters"},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Medical Emergency Phone"},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard) +"dFc" = (/obj/structure/table/reinforced,/obj/machinery/cash_register/civilian{tag = "icon-register_idle (WEST)"; icon_state = "register_idle"; dir = 8},/obj/machinery/door/blast/shutters{dir = 4; id = "bar"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor/lino,/area/crew_quarters/bar) +"dFd" = (/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/glass_jar,/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/item/device/retail_scanner/civilian,/obj/item/device/retail_scanner/civilian,/turf/simulated/floor/wood,/area/crew_quarters/bar) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9885,8 +9887,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczaczacAaczaczacOacAaadaadaadaadaaaaaaaaaaadaadaadacOaadaaaaahaahaahbNgbQFbQGbQHbQHbQIbNgahyahyahyaahaahbtHbQJbQKbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQMbQNbQObQPbQQbQRbQSbQTbQUbQVbQWbQXbQYbQZbyfbJRbRabRbbRcbRdbRebGYbRfbRgbRhbNpbNpcGQbRgcIgbRlcNkbGYahyahybKdbecbcnbRmbRnbRobRpbRqbRrbRsbRtbRubRvbRwbFubRxbPvbRybNCbRzbRAbRBbRBbRCbRDbREbNCaahaZdaZHbEgbRFbRGbFJbRHbRIbFJbFJbFJbFJbRJbEgbupbTlbTkbRNbRObRPbRObRPbvEbRTbRUbRUbRVbRWbetaUvbvFaToahybMkbRYbRZbSabNWbSbbScbSdbSebSfbSgbShbSibMpbvIbKSbSkbQfbSlbSmbKWbKWbKWbKWbKWbSnbSobSpbSpbSpbSpbSpbSqbSrbSqbSqbSqbSqbSqbSsbStbSubSvbSwbSwbSwbLdbLdbSxbSycNtbSxbLdbLdaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbOLbSAbQGbQHbQHbSBbOLbORahyahyaahaahbtHbSCbIibSDbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbSEbSEbSFbSGbSEbSHbSIbSJbSKbSLbSMbSNbSObSPbSLbSLbSLbSLbSLbSLbSQbSRbSQbSSbSSbSQbSTbSQbSUbSQbGYahyahybKdbecbcnbSVbbobbobFubFubFubFubFubFubSWbFubFubSXbSYbSZbNCbTabTbbTcbTdbNCbTebTfbNCaahaZdaZHbEgbFLbvJbEgbEgbThbTibTibTibTibEgbEgbTjbTkbTlbTmbTnbTkbTlbTkbTobTpaUvaUvaUvaUvbTqbTrbTsaToahybMkbGxbTubTvbTubTtbScbTxbTybVhbTAbTBbTCbTDbTEbKSbTFbTGbTHbTIbTJbTKbTLbTMbTNbTObTPbTQbTRbTSbTTbSpbTUbTVbTWbTXbTYbTZbSqbUabUbbSubUcbUdbUebSuaahaahbSxbUfbUgbSxaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbLkbNebNfbNgbUhbNgbNfbNebLkahyahyaahaahbtHbtHbIibtHbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbUibUjbUkbUlbSEbUmbUnbUnbUobUpbUqbUrbUsbUtbUubUvbUwbUxbSLbUybUzbUAbUBbUBbUybUzbUybUCbUDbUEahyahybKdbecbcnaZzbUFahybUGbUHbUIbUJbUKbULbULbUMbUGbUNbUObUPbNCbNCbUQbNCbNCbNCbNCbNCbNCaahaZdaZHbURbvMbUTbUUbUVbUWbUWbUWbUWbUWbYobUYbTkbTlbUZbVabVbbVcbTkbTlbVdbVeaUvaUvbVfbVgbdvaUvbvPaToahybMkbVibVjbVkbVlbVmbVnbVobVpbVqbVrbVsbMpbKNbKNbKSbKSbKSbKSbKSbTJbVtbVubVvbVwbVxbVybVzbVAbVBbVCbSpbVDbVEbVFbVGbVGbVHbSqbVIbVJbSubVKbVLbVMbSuaahaahbSxbVNcAhbSxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbLkbLlbVPbVQbVRbVSbVTbLmbLkahyaahaahaahaahbtHbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbVUbVVbVWbVXbVYbVZbWabWbbWcbWdbWebWfbWgbWhbWibWibWjbWkbSLbWlbWmbWlbWnbUBbWlbWmbWlbUCbUDbUEahyahybKdbWobcnaZzbamahybWpbWqbULbWrbWsbWsbWtbWubUGbWvbWwbUPbWxbWybWzbWAbWBbWCbWDbWEbNCaahaZdbWFbWGbWHbWIbWJclZbWLbWKbWKbWKbWLbWKbWJbTlbTkbWNdBObVabWPbTlbTkbWQbURbPObPPaTobHCblDbHCaToaToahybMkbWRbWSbMkbWRbWSbMkbMkbMkbWTbWUbWVbWWbKNaahaahaahaahaahaahbTJbWXbWYbWZbTNbXabXbbTQbXcbXdbXebSpbXfbXgbXhbXibXjbXkbSqbXlbXmbXnbXobXpbSubSuaahaahbSxbXqbXrbSxbSxaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahahyahybXsbXtbXubXvbXsahyahyahyaahaahaahaahbtHbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbXwbXxbXybXzbXAbXBbXCbXDbXEbXFbXGbXHbXIbXJbXKbXLbXMbXNbSLbXObUBbUBbXPbXQbXRbXRbXRbXSbXTbUEahyahybXUbXVbhqbXWbamahybXXbXYbXZbYabYbbYcbYdbYebYfbYgbYhbYibYjbYjbYkbTwbYmbYnbYnbvRbNCaahaZdbYpbURbYqbTkbTlbWJbYrbWJbYrbWJbYrbWJbYsbTkbTlbUZbYtbVbbVcbTkbTldBPbURahyahyaTobYvbetbYwaToahyahyahyahyahyahyahyahyahyahybKNbKNbYxbYybKNbKNaahaahaahaahaahaahbTJbTJbTJbTJbTJbYzbYAbSpbSpbSpbSpbSpbSqbSqbSqbSqbSqbSqbSqbYBbYCbSubSubSubSuaahaahaahbSxbYDbVObYEbSxaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbLkbLlbVPbVQbVRbVSbVTbLmbLkahyaahaahaahaahbtHbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbVUbVVbVWbVXbVYbVZbWabWbbWcbWdbWebWfbWgbWhbWibWibWjbWkbSLbWlbWmbWlbWnbUBbWlbWmbWlbUCbUDbUEahyahybKdbWobcnaZzbamahybWpbWqbULbWrbWsbWsbWtbWubUGbWvbWwbUPbWxbWybWzbWAbWBbWCbWDbWEbNCaahaZdbWFbWGbWHbWIbWJclZbWLbWKbTwbWKbWLbWKbWJbTlbTkbWNdBObVabWPbTlbTkbWQbURbPObPPaTobHCblDbHCaToaToahybMkbWRbWSbMkbWRbWSbMkbMkbMkbWTbWUbWVbWWbKNaahaahaahaahaahaahbTJbWXbWYbWZbTNbXabXbbTQbXcbXdbXebSpbXfbXgbXhbXibXjbXkbSqbXlbXmbXnbXobXpbSubSuaahaahbSxbXqbXrbSxbSxaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahahyahybXsbXtbXubXvbXsahyahyahyaahaahaahaahbtHbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbXwbXxbXybXzbXAbXBbXCbXDbXEbXFbXGbXHbXIbXJbXKbXLbXMbXNbSLbXObUBbUBbXPbXQbXRbXRbXRbXSbXTbUEahyahybXUbXVbhqbXWbamahybXXbXYbXZbYabYbbYcbYdbYebYfbYgbYhbYibYjbYjbYkcqEbYmbYnbYnbvRbNCaahaZdbYpbURbYqbTkbTlbWJbYrbWJbYrbWJbYrbWJbYsbTkbTlbUZbYtbVbbVcbTkbTldBPbURahyahyaTobYvbetbYwaToahyahyahyahyahyahyahyahyahyahybKNbKNbYxbYybKNbKNaahaahaahaahaahaahbTJbTJbTJbTJbTJbYzbYAbSpbSpbSpbSpbSpbSqbSqbSqbSqbSqbSqbSqbYBbYCbSubSubSubSuaahaahaahbSxbYDbVObYEbSxaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahybYFbYGbYHbYIbYFahyahyahyaahaahaahaahbtHbYJbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbYKbYLbYMbYNbYObYPbXMbYQbYRbYSbYTbYUbYRbYQbXMbXMbXMbYVbSLbWlbWmbWlbYWbUBbWlbWmbWlbYXbYYbUEbYZbZabeebecbDMbZbbamahybZcbZdbZebZfbZgbZhbZibZjbUGbWvbZkbZlbZmbZnbZobZpbZqbZrbZsbZtbNCaahaZdbYpbURcaAbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkbTlbZvbTjbZwbTlbTkbTjbZybZxahybJeaUvbetaUvbJeahyahyahyahyahyahyahyahyahyahyahybZzbZAbZBbZzaahaahaahaahaahaahaahbZCbZDbZEbZFbZGbTObTPbZHbZIbZJbZKbZLaahaahaahaahaahaahbZMbZNbZObZPbZQbZMaahaahaahaahbSxbZRbZSbZTbSxaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahybZUbZVbZWbZUbZUahyahyaahaahaahaahaahbZXbZYbZXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbZZcaacabcacbSEcadcaecaecaecafcagcahcaicaecaecaecajcakbSLbUybUybUybUBbUBbUybUybUybYXcalcamcanbecbecbecbcnaZzbamahycaocapbZecaqcarcarcasbULbUGbWvcatcaucavcavcawcaxcaybYnbYncazbNCaahaZdcaBaZdccebTkbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkbTlbTkcaCcaDcaEcaFcaGcaHcaIahyahybrGaUvbetcaJbrGahyahyahyahyahyahyahyahyahyahyahycaKcaLcaMcaNaahaahaahaahaahaahaahbZCcaOcaPcaQcaRcaScaTcaUcaVcaWcaXbZLaahaahaahaahaahaahbZMcaYcaZcbacbbbZMaahaahaahaahcbccbdcbecbfcbcaahahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahycbgcbhcbicbjcbgahyahyaahaahaahaahaahbZXbZYbZXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEcbkcblcbmcbnbSEbNZcbpcbqcbrcbscbtcbucbvcbwcbxcbycbzcbAbSLcbBcbCbUBbUBbUBbUBcbDbUBcbEcbFcamcancbGcbHbecbcnaZzcbIahybUGcbJcbKcbLcbMbULcbNbUGcbOcbPcbQcbObNCcbRcbScbTcbUcbVcbWcbXbNCaahaZdbYpaZdcDsbTlbTkbYsbTmbTnbTkbTlbTkcbZbTmbTlbTkbTlccabTnccbbTlbTkdBQcaIahyahybrGccdbgJaUvbrGahyahyahyahyahyahyahyahyahyahyahyccBccfccgcaNaahaahaahaahaahaahaahbZCcchcciccjbZGcckcclbZHccmccnccobZLaahaahaahaahaahaahbZMbZNbZMbZMbZMbZMaahaahaahaahcbcccpccqccrccscctccuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9905,22 +9907,22 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjaahaahcjgcnUckXcnVcnWcnXcnYcnZcoacobcoacoccoocoecleclecofchYbRKchYaahaahaahaahaahaahaahaahaahcmjcogcohcoicllcojcokcolcnlcomcllaahaahbZXconcjubZXaahaahaahaahaahahycowckFckFcopcoqckIckIcorckIckIcoscjzahydEOdEOdERdEOdEOcotcimbcnbeccoAbboclmckLckMciFclmckMciFcovcoGcoxcoycozcoScoxcoBcovciFclmckLckMciFcoCckicoDcmBcoEciFclmckLckMciFciFclmckLckMczAclmckLckMciFciFdCQckMciFclmckLckMciFcoFckickicfRcoXciFciFaahaahaahaahaahaahaahaahaahaahaahaahaahbZMbZMcoHcoIcoJcoJcoJcoJcoJcoJcoJcoJcoKcoLcoLcoLcoMcoNcoObZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbLjaahaahcjgcoPckncoQcmacoRcpqcoTcoUcoVcoacoWcpPcoYcoZcpacpbchYcpcchYaahaahaahaahaahaahaahaahaahcmjcpdcohcpecllcpfcpgcphcpicokcllaahaahcpjbZXcpkbZXcpjaahaahaahaahahyahyahyahycjzcplcpmcpncpocppcpTcprcjzahyahyahyahyahybbobbocpscptcmzbbobboahyahyahyahyahyahycovcNHcpvcpwcpxcpycpzcpAcpBcNIcovahyahyahyciFciFcpDcpEckjciFciFahyahyahyczZcDncDncDncEvcEvcEvcEVcEVcEWczZahyahyahyahyahyahyciFciFcjIcjIcjKciFciFaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMcpFcpGcpHbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMcpIcoMcpJbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahcjgcpKcpLcpMcpNcpOcqecpQcoacpRcoacpSchYcqzcpUcqzcpVcpWchZchYcpXcpXcpXcpXcpXcpXcpXcpXcpXcmjcmjcpYcmjcllcllcpZcqacllcpZcllcpXcpjcpjcqbcqccqdcpjcpjcpjcpjcpjcrIcqfcqfcqgcjzcjzcjzcjzcqhcjzcjzcjzcjzcrIcqfcqfcqfcqgcpjcqicqjcqkcqlcqmcpjcpjahyahyahyahyahycovcqncqocqpcqqcqrcqscrJcpBcqucovahyahyahyahycqvcqwcqxcqycqvahyahyahyahyczZcFecEVcEVcEvcEvcEVcEVcEVcIFczZahyahyahyahyahyahyahycrNckicqAcqBciFaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMcqCcgnbZMbZMaahaahaahaahaahaahaahaahaahaahaahbZMbZMcgncqDbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahcjgcqEckncqFcqGcqHcqIcqJcqJcqKcqLcqMcqNcqOcqOcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqYcqYcqOcqZcracqYcrbcrccqYcqYcqOcrdcrecrfcrgcrhcricrjcrkcrlcrmcrncrocrpcrqcrrcrscrtcrucrucrvcrucricrwcrxcrycrzcrAcrBcrAcrCcrAcrDcrAcrzcrAcrEcrFcrGcrucrHcrRahyahyahyahyahycrWcqtcrKcrLcrLcrMcrLcrLcpBcqtcrWahyahyahyahycsKcrOcrPcqycsKahyahyahyahycIHcJacJacEVcEVcEVcEVcEVcEVcJKcrQcrQcrQcsLcrScrTcrUcrQcrQctccsNctccrQcrQcrQcrQaahaahaahaahaahaahaahcrXcrXcrXcrXcrXbZMcrYcrZcrZcrZcrZcrZaahaahaahaahaahaahaahcsacsacsacsacsacsbbZMcsccsccsccsccscaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahcjgctxckncqFcqGcqHcqIcqJcqJcqKcqLcqMcqNcqOcqOcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqYcqYcqOcqZcracqYcrbcrccqYcqYcqOcrdcrecrfcrgcrhcricrjcrkcrlcrmcrncrocrpcrqcrrcrscrtcrucrucrvcrucricrwcrxcrycrzcrAcrBcrAcrCcrAcrDcrAcrzcrAcrEcrFcrGcrucrHcrRahyahyahyahyahycrWcqtcrKcrLcrLcrMcrLcrLcpBcqtcrWahyahyahyahycsKcrOcrPcqycsKahyahyahyahycIHcJacJacEVcEVcEVcEVcEVcEVcJKcrQcrQcrQcsLcrScrTcrUcrQcrQctccsNctccrQcrQcrQcrQaahaahaahaahaahaahaahcrXcrXcrXcrXcrXbZMcrYcrZcrZcrZcrZcrZaahaahaahaahaahaahaahcsacsacsacsacsacsbbZMcsccsccsccsccscaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahcjgcsdcknckncsecsfcsgcshcshcsicshcsjcskcslcsmcsncsncsncsocspcsqcsrcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsucsvcswcsxcsycswcswcsvcswcswcswcszcsAcsBcrucrucrucricrucsCcswcsDcswcsEcswcswcswcsFcswcsvcswcsGcsHcsIcrucsJcsRahyahyahyahyahyctmcqtcrKcrLcsMcsMcsMcrLcpBcqtctmahyahyahyctucsOcrOcsPcsQcumcsSahyahyahycMYcJacJacNfcEVcEVcEVcEVcEVcrQcrQcwtctdcsXcwtcwvcsXcsYcwwctbcsYctbctecxOcwxcrQcrQaahaahcrXcrXcrXcrXcrXctfctgcthcrXctictjcrZctkctlcurcrZcrZcrZcrZcrZcsacsacsacsactnctoctpcsactqctrcscctscttcuTcsccsccsccsccscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaabLjbLjcjgctvctwctxctycmacjgbRMctActBctCctDctEctFctGctHcrfcrfcrfctIctJctKcrfctLctMctNcrfctFctOcrfcrfctPctQctRctSctTctQctQctUctVctWcrocrpctXctYctZcuacubcuacuacuacuacuccudcuacuacuacubcuecufcuacubcuacugcuacuhcuicuacuacubcuacujcrucukcruculcuYahyahyahyahyahyctmcuncuocrLcsMcupcsMcrLcuqcunctmahyahyahycvacqycrOcrPcqycqycvaahyahyahycMYcPocJacPvcJacQdcEVcEVcEVcrQcxScsYcwrcwscwscwscwscwscwsczmczlczoczncPbcPbcBjcrQaahaahcrXcuucuvcuucrXcuwcuxcuKcrXcuzcuAcrZcuNcuCcuDcrZcuEcuFcuEcrZcuGcuHcuGcsacuIcuJcvzcsacuLcuMcsccwEcuOcuPcsccuQcuRcuQcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaabLjbLjcjgctvctwcALctycmacjgbRMctActBctCctDctEctFctGctHcrfcrfcrfctIctJctKcrfctLctMctNcrfctFctOcrfcrfctPctQctRctSctTctQctQctUctVctWcrocrpctXctYctZcuacubcuacuacuacuacuccudcuacuacuacubcuecufcuacubcuacugcuacuhcuicuacuacubcuacujcrucukcruculcuYahyahyahyahyahyctmcuncuocrLcsMcupcsMcrLcuqcunctmahyahyahycvacqycrOcrPcqycqycvaahyahyahycMYcPocJacPvcJacQdcEVcEVcEVcrQcxScsYcwrcwscwscwscwscwscwsczmczlczoczncPbcPbcBjcrQaahaahcrXcuucuvcuucrXcuwcuxcuKcrXcuzcuAcrZcuNcuCcuDcrZcuEcuFcuEcrZcuGcuHcuGcsacuIcuJcvzcsacuLcuMcsccwEcuOcuPcsccuQcuRcuQcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadcuScuScvgcuUcuScuVcuWcuScuScuScuXcvocuZcuXcvrcvbcuXcvccvdcvecvfcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpjcvNcvhcrFcvicvjcpjcrIcqfcqfcqfcqfcqfcqfcqfcqgcpjbRRcvlcqdcpjcrIcqfcqgcpjcrIcqfcqgcpjcvmcrucrucrGcvncpjcpjahyahyahyahyahycwjcvpcuocrLcrLcrLcrLcrLcuqcvqcwjahyahyahycqvcwqcrOcrPcqycvscqvahyahyahycRUcWQcJacJacJacJacEVcEVcWRcrQcBkcsYcsYcsYcvucvucvucvucvuctbcDpcwzcsYcsYcsYcducrQaahaahcrXcvwcvxcvwcrXcrXcvycrXcrXcwFcwGcrZcrZcvBcrZcrZcvCcvDcvCcrZcvEcvFcvEcsacsacvGcsacsacvHcvIcsccsccvJcsccsccvKcvLcvKcscaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxfcvOcvPcvQcvRcvScvTcvUcvVcvWcvXcvYcvZcwacwbcwccuXcpXcpXcpXcpXcpXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcpjcwdcwecwfcwgcwdcpjahyahyahyahyahyahyahyahyahycpjcwhcwicwhcpjahyahyahyahyahyahyahycxAcqicqicqicwkcqicxAahyahyahyahyahyahycovcuncwlcwmcwncwocuncuncuqcwpcovahyahyahycsKcqycrOcrPcqycqycsKahyahyahyczZcZMcJacJadcEdcLcDncEVcEVcrQcvucvucsYcsYcBicDqdBUcxPbdUctbcxRcsYcFdcFdcFdcFdcrQaahaahcrXcwBcwCcwDcwDcwDcwJcwHcwLcwKcwUcwTcwXcwVcwMcwNcwMcwOcwPcrZcwQcwRcwScwScwScyacyecybcyqcyfcwYcwZcxacxbcxccxbcxdcxecscaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxNcxgcxgcxgcxgcvScvTcxhcxhcxicuXcxjcxkcxlcxmcxncuXcxocxpcxqcxraahaahaahaahaahcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxscxtcxucxvcxwcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcxxcxycwhahyahyahyahyahyahyahyahycxzcyBcxBczkcxDcyBcxzahyahyahyahyahyahycovcovcxEcxFcxGcxHcxIcxJcxKcovcovahyahyahycumcsScxLcxMcqyctucsOahyahyahyczZczZdcYdcEdcEdcEcJacDnddacrQcEFcxPcsYcsYcxQcxQcxQcxQcxQctbcxRcsYcFdcFdcFdcFbcrQaahaahcrXcxVcxWcxXcxYcxZcytcyrcrXcyccydcrZcAkcyucygcyhcyicyjcykcrZcylcymcyncyocypcAqcAucsacyscAxcBocBncyvcywcyxcyycyzcyAcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczTcyCcyDcyEcyFcxgcxgcvScyGcyHcyIcyJcyKcyLcyMcyNcyOcyPcuXcxqcxqcxqcxrcxrcxrcxrcxrcxrcxrcyQcyRcyScyScyScyScyScyScyScyScyScyScyScyTcyScyUcyVcyWcyXcyYcyVcyZczaczbczaczaczaczaczaczaczaczaczaczccwhahyahyahyahyahycxzcxzcxzcxzczdczebTgczgczhcxzcxzcxzcxzahyahyahyahycovcovcovcziczjczicovcovcovahyahyahyahyahycvacrOcrPcqycvaahyahyahyahyahyczZczZczZczZddeczZczZczZcrQcxQcxQcDocwycwycwycFccHvcHrcJzcHxcsYcFdcFdcFdcFdcrQaahaahcrXcrXcrXcrXcrXcrXcBqcrXcrXczpcuAcrZcrZcBrcrZcrZcrZcrZcrZcrZcsacsacsacsacsacBucsacsacuLcBvcsccsccsccsccsccsccsccsccscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczrczsczrczscztczuczvczwczxczyczzcxgcArczBczCczDczEcuXcuXczFczGczGczGczGczGczGczGczGczGczGczHcxqcxrcxrcxrcxrcxrczIczIczJcxrcOHczKcxqcxrczLczMczNczOczPcwhczQczQddgddmddkczQczQcwhcwhcwhcwhczRcwhahyahyahyahyahycxzczSczScABczUczVczWczXczYcAIcAacAacxzaahahyahyahyahyaahaahczicAbcziaahaahaahahyahyahyahyahycqvcAccAdcAecqvahyahyahyahyahyahyahyahycBgcQzcBgahyaahcrQcJNcxTcKMcxTcxTcFacFacKNcxTcxTcMecDrcFdcFdcFdcmYcrQaahaahaahaahaahaahcAicAjcBxcAlcAicAmcAncAocApcCccBbcAoaahaahaahaahaahaahaahcAscAtcClcAvcAscAwcCmcAycAzcAAcBAcAyaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcAEcAFcxgcxgcvScvTcAGczzcAHcBTcAJcAKcALbWMcuXcxqcANcxqcxqcxrcxrcxrcxrcxrcxrcxrcxrcAOcxrcxraahaahaahcxrcAPcAPcAPcxrcxrcxrcxrcwdcwdcAQcARcAScwdcwdcwhcwhcwhcwhcwhczQcwhcwhaahaahcwhczRcwhaahahyahyahyahycxzcATczecAUcAVczeczeczgcAWcAXczecAYcxzaahahyahyaahaahaahaahczicAZcziaahaahaahcBacCScBccBacqvcqvcBdcBecBfcqvcBgcBgcBgcBgcBgahyahyahycBgcQzcBgaahaahcrQcvucvucMXcGzcGAcGAcGAcNJcGAcGzcNMcsYcNVcNVcNWcNXcrQaahaahcAicAicAicAicAicBmcDycDxcAiczpcBpcAocDDcDCcBscAocAocAocAocAocAscAscAscAscBtcDMcDNcAscBwcBvcAycFkcBycBzcAycAycAycAycAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcEBcyCcBBcBCcxgcxgcxgcBDcvTcAGczzcBEcuXcvrcvbcuXcuXcuXcxrcANcBFcxrcxraahaahaahaahaahaahcxrcBGcBHcxraahaahaahcBIcBIcBJcBIcBIaahaahaahaahcwdcBKcxucxvcwdaahaahaahaahaahcwhczQcwhaahaahaahcwhczRcwhaahaahaahahyahycxzcxzcxzcxzcBLcBMcBNcBOcbocxzcxzcxzcxzaahaahaahaahaahaahaahczicAbczicziczicBacBacBQcBRcBacBScEIcrOcrPcqycBUcBgcBVcBWcBXcBgcBgahyahycBgcQzcBgaTWaahcrQcNRcxPcMXcGzcHscHtcHucNUcHwcGzcNMcsYcPccPccPccOVcrQaahaahcAicBZcCacCbcAicAicFlcAicAicCdcvAcAocFmcCecAocAocCfcCgcChcAocCicCjcCkcAscAscFncAscAscvHcFycAycAycCncAycAycCocCpcCqcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcAEcAFcxgcxgcvScvTcAGczzcAHcBTcAJcAKcMdbWMcuXcxqcANcxqcxqcxrcxrcxrcxrcxrcxrcxrcxrcAOcxrcxraahaahaahcxrcAPcAPcAPcxrcxrcxrcxrcwdcwdcAQcARcAScwdcwdcwhcwhcwhcwhcwhczQcwhcwhaahaahcwhczRcwhaahahyahyahyahycxzcATczecAUcAVczeczeczgcAWcAXczecAYcxzaahahyahyaahaahaahaahczicAZcziaahaahaahcBacCScBccBacqvcqvcBdcBecBfcqvcBgcBgcBgcBgcBgahyahyahycBgcQzcBgaahaahcrQcvucvucMXcGzcGAcGAcGAcNJcGAcGzcNMcsYcNVcNVcNWcNXcrQaahaahcAicAicAicAicAicBmcDycDxcAiczpcBpcAocDDcDCcBscAocAocAocAocAocAscAscAscAscBtcDMcDNcAscBwcBvcAycFkcBycBzcAycAycAycAycAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcEBcyCcBBcBCcxgcxgcxgcBDcvTcAGczzcBEcuXcvrcvbcuXcuXcuXcxrcANcBFcxrcxraahaahaahaahaahaahcxrcBGcBHcxraahaahaahcBIcBIcBJcBIcBIaahaahaahaahcwdcBKcxucxvcwdaahaahaahaahaahcwhczQcwhaahaahaahcwhczRcwhaahaahaahahyahycxzcxzcxzcxzcBLcBMcBNcBOcbocxzcxzcxzcxzaahaahaahaahaahaahaahczicAbczicziczicBacBacBQcBRcBacBScEIcrOcrPcqycBUcBgcBVcBWcBXcBgcBgahyahycBgcQzcBgaTWaahcrQcNRcxPcMXcGzcHscHtcHucNUdFccGzcNMcsYcPccPccPccOVcrQaahaahcAicBZcCacCbcAicAicFlcAicAicCdcvAcAocFmcCecAocAocCfcCgcChcAocCicCjcCkcAscAscFncAscAscvHcFycAycAycCncAycAycCocCpcCqcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcCrcyFcxgcxgcvScvTcAGczzcCscCtcCucCvcCwcCxcCycCzcCAcxrcxraahaahaahaahaahaahaahcxrcCBcCCcxrcxraahaahcBIcCDcCEcCFcBIcCGcCGcCGaahcwdcCHcCIcCJcCKcCKcCKcCKcCKcCKcCKcCLcCKcCKaahahycwhczRcwhaahaahaahaahahycxzcCMcCNcABcCOczVcCPcCQcCRcEKcCTcCUcxzaahaahaahaahaahaahaahczicCVcCWcCXcCXcCYcCZcDacDbcDccDdcDecDfcDgcDhcDicBgcDjcDkcDlcDmcBgcBgcBgcBgcQzcQzcBgcBgcrQclXcxQcMXcGzcHscHtcIGcOYcHwcGzcNMcsYcQHcQHcOZcPacrQaahaahcAicDtcDucDvcDwcDvcFAcFzcDzcDAcwIcDBcHFcHAcDEcDFcDEcDGcDHcAocDIcDJcDKcDLcDKcHGcHKcDOcwWcHNcDPcDQcDRcDScDTcDScDUcDVcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcDWcDXcDWcDYcDZcEacEbcEccEdcEeczzcEfcCtcEgcEhcEicEjcEkcCtcxrcxraahaahaahaahaahaahaahaahcxrcElcEmcxqcxraahaahcBIcCDcCEcCFcBIcEncEocCGcCGcwdcEpcEqcErcCKcEscEtcEuddpcEwcEwcEwcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcATczecEycAVczecEzczgcEAcFHczeczecxzaahaahaahaahaahaahaahczicECcEDcEEcEDcBackacEGcEHcFXcEJcGfcELcEMcENcEOcEPcEQcERcERcEScETcEUcEUcQeddrcEXcQfcEYcEZcxTcxTcQgcQhcHscJLcJMcQFcHwcGzcNMcQIcQGcQGcQGcQGcQGaahaahcAicFfcFgcFhcFicFjcIKcIJcAicyccydcAocIPcILcFocFpcFqcFrcFscAocFtcFucFvcFwcFxcIQcIRcAscyscAxcKacJRcFBcFCcFDcFEcFFcFGcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcGjcFIcFJcFKcDZcxgcxgcvScFLcyHcFMcFNcFOcFPcFQcFRcFScFTcCtaahaahaahaahaahaahaahaahaahaahcxrcElcFUcxqcxraahaahcBIcFVcCEcCFcBIcFWcGpcFYcFZcwdcGacGbcGccCKcGdcGecEwcEwcEwcEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcxzcxzcxzcGqczecGgcGhcOIcGBczecGkcxzaahaahaahaahaahaahaahczicECcGlcziczicBacGmcGncGocGScEJcHccGrcrPcqycGscBgcGtcGucGvcGwcBgcBgcBgcGxcXdcERcERddqcrQcrQcrQcrQcrQcKJcKKcKLdhfcHwcGzcNMcQGcQGdkBdkBdlCcQGaahaahcAicAicAicAicAicAicKbcAicAiczpcuAcAocAocFmcAocAocAocAocAocAocAscAscAscAscAscKScAscAscuLcBvcAycAycAycAycAycAycAycAycAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacHHcGCcGDcGEcGEcGFcGGcGGcGGcGGcGHcGIcGIcGJcGKcGLcCtbkQbkQahyahyahybkQbkQaahaahaahcxrcGMcGNcxrcxraahaahcBIcGOcGPcOJcBIcGRcHRcCGcCGcwdcGTcCIcGUcGVcGWcGWcGWcGXcGXcGXcGXcGYcCKahyahycwhczRcwhaahaahaahaahaahcxzcGZczecABcHaczVcCPcCQcHbcHSczecGkcxzaahaahaahaahaahaahaahczicAbczicziaahcBacHdcHedmEcHgcHfcHccHicHjcHkcHlcHmcHncHocHmcHpcHmaahcBgcBgcHqcGxcGxdnjcOUdBSdBTcMfcrQcrQcMgcMhdhfcHwcGzdBVdDhdDgdDjdDidDkcQGaahaahaahaahaahaahcHycHzcKTcHBcHycHCcHDcHEcKXcKWcIzcHEaahaahaahaahaahaahaahcHIcHJcLgcHLcHIcHMcLhcHOcHPcHQcJtcHOaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacJwcGCcDXcHTcDXcHUcHVcxgcxgcHWcCtcHXcGKcHYcHZcIacCtbkQcIbcIccIccIccIcbkQaahaahaahcxrcIdcIecxraahaahaahcBIcCDcIfcOScBIcIhcIicIjcIkcwdcIlcImcIncCKcGecIocGecEwcGecEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcIpczecIqcAVcIrcIscItcAWcIuczecGkcxzaahaahaahaahaahaahaahczicAbcziaahaahcBacIvcIwcHhcFXcIycKDcrOcrPcIAcDicHmcIBcICcIDcIEcHmaahaahcBgcHqcBgcOTdDlcNKcNTcNLcNNctzcNOcNPcNQdDmcNScNTdDncQGdDodDqdDpdDrcQGaahaahcHycHycHycHycHycIIcMpcMocHyczpcuAcHEcMqcIMcINcHEcHEcHEcHEcHEcHIcHIcHIcHIcIOcMrcMscHIcuLcBvcHOcMtcIScITcHOcHOcHOcHOcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcvMcvMcvMcvMcvMaadaadaadcuScuScuScuScuScuScuScIUcIVcIWcIXcIYcIZddOcJbcCtcCtahycIccJccJdcJccIcahyahyaahcJecJecJfcJgcJeaahaahaahcBIcCDcJhcJicJjcJkcJlcJmcJmcwdcJncJocJpcCKcJqcGecEwcEwcEwcEwcJrcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcJsczecMLcJuczVcJvczXczYcNgczeczecxzaahaahaahaahaahaahaahczicAbcziaahaahcBacJxcJycIxcGScJAcJBcJCcJDcJEcJFcHmcJGcJHcJIcJJcHmaahaahcBgcGycBgcBgcBgcrQcMdcsYcOWcOXcrQcHtdDscOYdDtcsYdDucQGdDvcQGdDwcQGcQGaahaahcHycJOcJPcJQcHycHycMucHycHycJScvAcHEcMvcJTcHEcHEcJUcJVcJWcHEcJXcJYcJZcHIcHIcMwcHIcHIcvHcMxcHOcHOcKccHOcHOcKdcKecKfcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcvMcvMcvMcvMcvMaadaadaadcuScuScuScuScuScuScuScIUcIVcIWcIXcIYcIZddOcJbcCtcCtahycIccJccJdcJccIcahyahyaahcJecJecJfcJgcJeaahaahaahcBIcCDcJhcJicJjcJkcJlcJmcJmcwdcJncJocJpcCKcJqcGecEwcEwcEwcEwcJrcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcJsczecMLcJuczVcJvczXczYcNgczeczecxzaahaahaahaahaahaahaahczicAbcziaahaahcBacJxcJycIxcGScJAcJBcJCcJDcJEcJFcHmcJGcJHcJIcJJcHmaahaahcBgcGycBgcBgcBgcrQdFdcsYcOWcOXcrQcHtdDscOYdDtcsYdDucQGdDvcQGdDwcQGcQGaahaahcHycJOcJPcJQcHycHycMucHycHycJScvAcHEcMvcJTcHEcHEcJUcJVcJWcHEcJXcJYcJZcHIcHIcMwcHIcHIcvHcMxcHOcHOcKccHOcHOcKdcKecKfcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadbkQaahaahaahaahaahcuScuScuScuScCtcCtcCtcCtcCtcCtaahahycIccJccJccJccIcahyahyaahcJecKgcKhcKicJecKjcKjcKjcBIcBIcKkcKlcBIcKmcKncKocKpcKqcKrcKscKtcKqcKucGedeccKvcEwcKwcKwcKwcCKahyahycwhczRcwhaahaahaahaahaahcxzcKxczecHScKyczecKzczgcKAcHScKBcKBcxzaahaahaahaahaahaahaahczicAbcziaahcKCcKCcNYcKEcKFcKCcKCcKCcKGcKHcKIcKCcKCcKCcKCcKCcKCcKCcKCaahcBgcHqcBgaahaahcrQcrQcQAcQBcQCcrQcQDcQEdDydDxcsYcsYcQGdDzcQGdDAcQGaahaahaahcHycKOcKPcKQcKRcKQcMzcMycKUcDAcwIcKVcMBcMAcKYcKZcKYcLacLbcHEcLccLdcLecLfcLecMCcMDcLicwWcHNcLjcLkcLlcLmcLncLmcLocLpcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccLqcLrcLscIcahyaahaahcJecLtcLucLvcJecLwcLxcLycLzcBIcLAcBIcCGcCGcLBcCGcLCcKqcLDcLEcLFcKqcLGcLGcLGcLGcLGcLGcLGcLGahyahyahycwhczRcwhcziaahaahaahaahcxzcxzcxzcxzcLHcLIcLJcLKcLLcxzcxzcxzcxzaahaahaahaahaahaahcziczicAbczicKCcKCcLMcLNcLOcLPcLQcLRcLScLTcLUcLVcLWcLXcLYcLZcMacMbcMccKCcKCcBgcHqcBgahyaahaahcrQcrQcrQcrQcrQcrQcrQcrQcrQdDCdDBcQGcQGcQGcQGcQGaahaahaahcHycMicMjcMkcMlcMmcMndBWcHycyccydcHEdBYdBXdCadBZdCcdCbdCedCddCgdCfdCidChdCkdCjdClcHIcysdCmdCodCncMEcMFcMGcMHcMIcMJcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQcIccMKcNZcMMcIcbkQcMNcMNcMNcMNcMPcMOcKjcMQcMRcMScMTcMUcMVcMWdDDcoucMZcNacMUcNbcNccNdcNecrVcOpcNhcNicNjcQncLGcNlcLGcLGahyahycwhcNmcNncziczicziczicziczicNocNpcxzcNqcxzcNrcxzcNqcxzcEDcEDcziczicziczicziczicziczicUqcXxcUucKCcNucLPcLPcNvcNwcNwcNxcNycNzcNAcNBcNCcNDcNEcNEcNEcNFcLPcNGcKCcZgdDEcBgahyahyaahaahaahaahaahaahaahaahcWudDFdbMdbMdDGcWuaahaahaahaahaahaahcHycHycHycHycHycHycHycHycHyczpcuAcHEcHEcHEcHEcHEcHEcHEcHEcHEcHIcHIcHIcHIcHIcHIcHIcHIcuLczqcHOcHOcHOcHOcHOcHOcHOcHOcHOaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/polaris-2.dmm b/maps/polaris-2.dmm index 2056e569d5..ea00669202 100644 --- a/maps/polaris-2.dmm +++ b/maps/polaris-2.dmm @@ -2342,7 +2342,7 @@ "Tb" = (/obj/structure/table/woodentable,/obj/item/device/megaphone,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "Tc" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donut,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "Td" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chawanmushi,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"Te" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash/bundle/c1,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"Te" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/cash_register/civilian{tag = "icon-register_idle (WEST)"; icon_state = "register_idle"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) "Tf" = (/obj/item/weapon/book/manual/robotics_cyborgs,/obj/structure/table/glass,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) "Tg" = (/obj/item/robot_parts/head,/obj/structure/table/glass,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) "Th" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) @@ -2382,6 +2382,8 @@ "TP" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) "TQ" = (/obj/machinery/computer/arcade/battle,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "TR" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"TS" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/cash_register/civilian,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"TT" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash/c1,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) (1,1,1) = {" aaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoalahajapaqarasatauavawaxayaaabacadaeafagahaaaiajakalamanaoagafajacadahakazaAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaAaBaCaDaEaFaGaHaIaJazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaQaQaQaQaQaQaQaQaQaQaQaQaQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaR @@ -2515,7 +2517,7 @@ aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaP aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbvHmTaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwPzhzixgxexfxexfzjwPzkzlzmzmzmyIyUyVznyIyYyYyYyYzozpyYyYyYyYyYsdxjxjxjxjxjxjsdvKvKvJvKvKvKvKvKvKvKvKzqsdsdsdsdsdsdsdsdsdyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjmj aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbvHvHvHvHvHwvmTmTmTmTmTmTmTmTmTmTmTaPvGwbwbwbwPxexfzrxfxexfySzswPztxexexexeyIyVyVyVzuyYyYzvyYzozpyYzwzxzyyYsdsdvJvJvJvJsdsdvKvKzzvKvKvKvKzAzBzCvKvKsdvKvKvKvKvKvKzDsdyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmj aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvHmTaPaPzEzFzGzEzFzFzHzIzJzFzKzLmTmTvHzMwbwbwPxfxezNxexfTQzOzPwPzQxexAxexeyIyVyVzRyIzSyYzTyYzozpyYzwzxzyyYyIvKvKvKvKvKvKvKvKvKvJvKvKvKvKzCzCzDvKvKzUvKzVvKvKzVvKzCsdyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvGaPaPzEzWzXzYzZAaAbAaAaAaAbAcAdvGvGvGwbwbwbwPzrzNxgxgxgxgxgxgwPAeAfxexeAgyIAhyVzRyIzSyYyYyYzozpyYzwRpzyyYyIvKvKvKvKvKvKvKvKvKvJAiyNvKvKvKvKvKAjvKsdzcAkAlzCAmvKzqsdyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmj +aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvGaPaPzEzWzXzYzZAaAbAaAaAaAbAcAdvGvGvGwbwbwbwPzrzNxgxgxgxgxgxgwPAeAfxexeAgyIAhyVzRyIzSyYyYyYTezpyYzwRpzyyYyIvKvKvKvKvKvKvKvKvKvJAiyNvKvKvKvKvKAjvKsdzcAkAlzCAmvKzqsdyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmj aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvGaPaPAnAoApAoAqAoAoAoAoAoAoAoArAsxxAswbwbwbwPxfxexfxexfxexfxexfAeAeAtAeAeyIyIyIyIyIzozozozozozpyYzwRBzyyYyIvJvJAuvJvJsdwdvKvKsdAvyNvKvKvKvKvKsdsdsdsdvJvJvJvJvJsdsdAwAwsdvKvKsdaPaPaPaPAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmj aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHmTmTmTaPaPaPaPaPaPaPaPaPaPaPmTmTmTvHwbwbwbvGaPaPAyAzAAABzZACADACACACADAEAFvGvGvGwbwbwbwPxexfxexfxexfxexfxexfxexfxeAGAHyIyYyYyYzpzpzpzpzpyYyYyYyYyYyYyIAIAJvKAKALsdAMANAOAwAwBkAwsdvJAPvJsdAQAQAQARASATAUAVAQAQAQAwwdvKvKsdaPaPaPAxAxAWAWAWAWAWAWAXAXAXAWAWAWAWAXAXAXAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmj aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGaPaPmTaPaPaPaPaPaPaPaPaPaPaPmTaPaPvGwbwbwbvHmTaPaPAyzFAZAyzFzFzHzIzJzFBaBbmTmTvHwbwbwbwPxfxexfySAGySAGySxfxexfxexfySBcyIBdyYyYyYyYyYyYyYyYyYyYyYyYBdyIvKvKvKvKvKsdvKvKvKEaAQAQBlsdvKvKvKsdAQAQAQARBeBfBgAVAQAQAQAwvKvKvKsdaPaPaPAxAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPBhaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmj @@ -2544,7 +2546,7 @@ aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGaPaPmT aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHmTmTmTaPaPaPaPaPaPaPaPaPaPaPmTmTmTvHwbwbwbvHmTmTmTGdFIGkGdGFGGGHGdGfFIGdmTmTmTvHwbwbwbEyEMEMEMGIEMGJEMEMGJEMGKEMEMEMGLEyFtFtFKGMGNFNFtFtFKGOGPFNFtFtFbaPaPAwGaGbAQAQCWAQAQGbGcAwaPaPFhGQGRGRGRGRGQGQGQGQGSGTGTGTGUAxAWAWFxBJAWFxAxAxAWAWAWAWAWAWGVGVGVAWAWAWAWGVGVGVAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPFRFIGkGWGXGYGZGWGfFIFRaPaPaPvHwbwbwbEyEMEMEMEMEMEMEMEMEMEMEMEMEMEMHaEyFtFtFtFtFtFtFtFtFtFtFtFtFtFtFbaPaPAwGaGbAQAQCWAQAQGbGcAwaPaPFhGQGQGQGQGQGQGQGQGQGQGQGQGQGQAxAWAWAWAWAWAWAxAxAxAYAYAYAxAYAYAYAxAYAYAYAxAYAYAYAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPFjFyGeGkHbGXHcGZHbGfGlFEFnaPaPvHwbwbwbEyEMEMEMEMEMEMEMEMEMEMEMEMEMEMGLEyFtFtFtFtFtFtHdHdHdHdHdHdHdHdFbaPaPHeHeHeHfHfHgHfHfHeHeHeaPaPFhHhFhHiFhHjFhGQGQFhHkFhHlFhHmAxAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvGvGvGHnHoFIGkHpFRHqFRHrGfFIHoHnvGvGvGwbwbwbEyEMEMEMEMEMEMEMEMEMEMEMEMEMEMHaEyHsHtHtFtFtHuHvHvHvHvHvHvHvHvFbaPaPHeHwHxHfHxHxHxHfHxHwHeaPaPFhHyFhHyFhHyFhGQGQFhHyFhHyFhHyAxAWAWGVGVGVGVAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP +aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvGvGvGHnHoFIGkHpFRHqFRHrGfFIHoHnvGvGvGwbwbwbEyEMEMEMEMEMEMEMEMEMEMEMEMEMEMHaEyHsHtHtFtFtHuHvHvHvTSHvHvHvHvFbaPaPHeHwHxHfHxHxHxHfHxHwHeaPaPFhHyFhHyFhHyFhGQGQFhHyFhHyFhHyAxAWAWGVGVGVGVAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbHzxxHzHAFIFIFIHBHCFIFIHBFIFIFIHAHzxxHzwbwbwbEyEAEMEMEAEAEAEMEMHDFVEMEMHEHFHGEyHHHIHJFtFtHuHKHLHLHLHLHLHLHLFbaPaPHeHxHMHNHxHxHxHNHOHxHeaPaPFhFhFhFhFhFhFhGQGQFhFhFhFhFhFhAxAWAWAXAXAXAXAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbHzxxHzHPFIFIFIFIFIFIFIFIFIFIFIHPHzxxHzwbwbwbEyEOEMEMEMHQHREMEMENEyEMEMEyEyEyEyHSHTHUFtFtHuHLHLHLHLHLHLHLHLFbaPaPHeHfHxHfHxHxHxHfHxHfHeaPaPFhHVGQHVGQHVGSGQGQHWHVGQHVGQHVAxAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvGvGvGHnHXFIGkGWGfFIGkGWGfFIHYHnvGvGvGwbwbwbEyEOEMEMEMEMEMEMEMHZEyEMEMIaIaIaEyIbIcIdFtFtHLHLHLIeIfIhIgHLHLFbaPaPHeHxHxHxHxHxHxHxHxHxHeaPaPFhGQGQGQGQGQGQGQGQGQGQGQGQGQGQAxBDAWAWAWAWAYAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP @@ -2631,7 +2633,7 @@ aRmjmjmjmjmjaPaPaPaPmjmjaPaPaPaPaPaPaPaPREQaRFRFRFRFRFQaRHaPaPaPaPaPaPaPaPaPaPmd aRmjmjmjmjmjaPaPaPaPmjmjmjaPaPaPaPaPaPaPaPRERURURURURURHaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKSNSOSPSQRKSRSSSTSRSUSVSWSWSVRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aRmjmjmjmjmjaPaPaPaPmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKSNSXSYSQRKSZSZSZSZTaSaSaSaSaRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aRmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKSNTbTcSQRKSZSZSZSZSZSZSZSZSZRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKSNTdTeSQRKSZSZSZSZSZSZTfTgThRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP +aRmjmjmjaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKSNTdTTSQRKSZSZSZSZSZSZTfTgThRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aRmjmjmjaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKRKRKRKRKRKSZSZSZSZSZSZSZSZSZRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aRmjmjmjaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCTiTjTjTkTjTjTjTkTjTjTjTkTjTjTlRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP aRmjaPaPaPaPaPaPaPaPaPaPmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCTmTnTnSUToTpToSUTqTqTrSUTsTtRSRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP diff --git a/polaris.dme b/polaris.dme index d29063995c..6b4c234095 100644 --- a/polaris.dme +++ b/polaris.dme @@ -5,6 +5,72 @@ // END_INTERNALS // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "html" +#define FILE_DIR "html/images" +#define FILE_DIR "icons" +#define FILE_DIR "icons/48x48" +#define FILE_DIR "icons/atmos" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/mob/human_races" +#define FILE_DIR "icons/mob/human_races/cyberlimbs" +#define FILE_DIR "icons/mob/human_races/masks" +#define FILE_DIR "icons/mob/human_races/monkeys" +#define FILE_DIR "icons/mob/human_races/subspecies" +#define FILE_DIR "icons/mob/human_races/xenos" +#define FILE_DIR "icons/mob/items" +#define FILE_DIR "icons/mob/screen" +#define FILE_DIR "icons/mob/species" +#define FILE_DIR "icons/mob/species/seromi" +#define FILE_DIR "icons/mob/species/skrell" +#define FILE_DIR "icons/mob/species/tajaran" +#define FILE_DIR "icons/mob/species/unathi" +#define FILE_DIR "icons/mob/species/vox" +#define FILE_DIR "icons/NTOS" +#define FILE_DIR "icons/NTOS/battery_icons" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/clothing/species" +#define FILE_DIR "icons/obj/clothing/species/seromi" +#define FILE_DIR "icons/obj/clothing/species/skrell" +#define FILE_DIR "icons/obj/clothing/species/tajaran" +#define FILE_DIR "icons/obj/clothing/species/unathi" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/flora" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/pipes" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/spideros_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/turf/flooring" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "maps" +#define FILE_DIR "maps/overmap" +#define FILE_DIR "maps/overmap/bearcat" +#define FILE_DIR "nano" +#define FILE_DIR "nano/images" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/effects/turret" +#define FILE_DIR "sound/effects/wind" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/music" +#define FILE_DIR "sound/piano" +#define FILE_DIR "sound/violin" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/voice/Serithi" +#define FILE_DIR "sound/weapons" // END_FILE_DIR // BEGIN_PREFERENCES #define DEBUG @@ -1099,10 +1165,13 @@ #include "code\modules\economy\Accounts_DB.dm" #include "code\modules\economy\ATM.dm" #include "code\modules\economy\cash.dm" +#include "code\modules\economy\cash_register.dm" #include "code\modules\economy\economy_misc.dm" #include "code\modules\economy\EFTPOS.dm" #include "code\modules\economy\Events.dm" #include "code\modules\economy\Events_Mundane.dm" +#include "code\modules\economy\price_list.dm" +#include "code\modules\economy\retail_scanner.dm" #include "code\modules\economy\TradeDestinations.dm" #include "code\modules\events\apc_damage.dm" #include "code\modules\events\blob.dm"