Porting Goofconomy & co.
This commit is contained in:
@@ -154,6 +154,7 @@ RLD
|
||||
icon_state = "rcd"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
|
||||
custom_price = 1700
|
||||
max_matter = 160
|
||||
item_flags = NO_MAT_REDEMPTION | NOBLUDGEON
|
||||
has_ammobar = TRUE
|
||||
|
||||
@@ -41,24 +41,21 @@ RSF
|
||||
/obj/item/rsf/attack_self(mob/user)
|
||||
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
switch(mode)
|
||||
if(5)
|
||||
mode = 1
|
||||
to_chat(user, "Changed dispensing mode to 'Drinking Glass'")
|
||||
if(1)
|
||||
mode = 2
|
||||
to_chat(user, "Changed dispensing mode to 'Drinking Glass'")
|
||||
to_chat(user, "Changed dispensing mode to 'Paper'")
|
||||
if(2)
|
||||
mode = 3
|
||||
to_chat(user, "Changed dispensing mode to 'Paper'")
|
||||
to_chat(user, "Changed dispensing mode to 'Pen'")
|
||||
if(3)
|
||||
mode = 4
|
||||
to_chat(user, "Changed dispensing mode to 'Pen'")
|
||||
to_chat(user, "Changed dispensing mode to 'Dice Pack'")
|
||||
if(4)
|
||||
mode = 5
|
||||
to_chat(user, "Changed dispensing mode to 'Dice Pack'")
|
||||
if(5)
|
||||
mode = 6
|
||||
to_chat(user, "Changed dispensing mode to 'Cigarette'")
|
||||
if(6)
|
||||
mode = 1
|
||||
to_chat(user, "Changed dispensing mode to 'Dosh'")
|
||||
// Change mode
|
||||
|
||||
/obj/item/rsf/afterattack(atom/A, mob/user, proximity)
|
||||
@@ -81,26 +78,22 @@ RSF
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
switch(mode)
|
||||
if(1)
|
||||
to_chat(user, "Dispensing Dosh...")
|
||||
new /obj/item/stack/spacecash/c10(T)
|
||||
use_matter(200, user)
|
||||
if(2)
|
||||
to_chat(user, "Dispensing Drinking Glass...")
|
||||
new /obj/item/reagent_containers/food/drinks/drinkingglass(T)
|
||||
use_matter(20, user)
|
||||
if(3)
|
||||
if(2)
|
||||
to_chat(user, "Dispensing Paper Sheet...")
|
||||
new /obj/item/paper(T)
|
||||
use_matter(10, user)
|
||||
if(4)
|
||||
if(3)
|
||||
to_chat(user, "Dispensing Pen...")
|
||||
new /obj/item/pen(T)
|
||||
use_matter(50, user)
|
||||
if(5)
|
||||
if(4)
|
||||
to_chat(user, "Dispensing Dice Pack...")
|
||||
new /obj/item/storage/pill_bottle/dice(T)
|
||||
use_matter(200, user)
|
||||
if(6)
|
||||
if(5)
|
||||
to_chat(user, "Dispensing Cigarette...")
|
||||
new /obj/item/clothing/mask/cigarette(T)
|
||||
use_matter(10, user)
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
* FINGERPRINT CARD
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* DATA CARDS - Used for the IC data card reader
|
||||
*/
|
||||
@@ -173,13 +171,19 @@
|
||||
var/registered_name = null // The name registered_name on the card
|
||||
var/assignment = null
|
||||
var/access_txt // mapping aid
|
||||
|
||||
|
||||
var/bank_support = ID_FREE_BANK_ACCOUNT
|
||||
var/datum/bank_account/registered_account
|
||||
var/obj/machinery/paystand/my_store
|
||||
|
||||
/obj/item/card/id/Initialize(mapload)
|
||||
. = ..()
|
||||
if(mapload && access_txt)
|
||||
access = text2access(access_txt)
|
||||
var/turf/T = get_turf(src)
|
||||
if(bank_support == ID_FREE_BANK_ACCOUNT && is_vr_level(T.z)) //economy is quite exploitable on VR in so many ways.
|
||||
bank_support = ID_NO_BANK_ACCOUNT
|
||||
else if(bank_support == ID_LOCKED_BANK_ACCOUNT)
|
||||
registered_account = new /datum/bank_account/remote/non_transferable(pick(GLOB.redacted_strings))
|
||||
|
||||
/obj/item/card/id/vv_edit_var(var_name, var_value)
|
||||
. = ..()
|
||||
@@ -193,12 +197,150 @@
|
||||
user.visible_message("<span class='notice'>[user] shows you: [icon2html(src, viewers(user))] [src.name].</span>", \
|
||||
"<span class='notice'>You show \the [src.name].</span>")
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/card/id/attackby(obj/item/W, mob/user, params)
|
||||
if(!bank_support)
|
||||
return ..()
|
||||
if(istype(W, /obj/item/holochip))
|
||||
insert_money(W, user)
|
||||
else if(istype(W, /obj/item/stack/spacecash) || istype(W, /obj/item/coin))
|
||||
insert_money(W, user, TRUE)
|
||||
else if(istype(W, /obj/item/storage/bag/money))
|
||||
var/obj/item/storage/bag/money/money_bag = W
|
||||
var/list/money_contained = money_bag.contents
|
||||
var/money_added = mass_insert_money(money_contained, user)
|
||||
if (money_added)
|
||||
to_chat(user, "<span class='notice'>You stuff the contents into the card! They disappear in a puff of bluespace smoke, adding [money_added] worth of credits to the linked account.</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/card/id/proc/insert_money(obj/item/I, mob/user, physical_currency)
|
||||
var/cash_money = I.get_item_credit_value()
|
||||
if(!cash_money)
|
||||
to_chat(user, "<span class='warning'>[I] doesn't seem to be worth anything!</span>")
|
||||
return
|
||||
|
||||
if(!registered_account)
|
||||
to_chat(user, "<span class='warning'>[src] doesn't have a linked account to deposit [I] into!</span>")
|
||||
return
|
||||
|
||||
registered_account.adjust_money(cash_money)
|
||||
if(physical_currency)
|
||||
to_chat(user, "<span class='notice'>You stuff [I] into [src]. It disappears in a small puff of bluespace smoke, adding [cash_money] credits to the linked account.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You insert [I] into [src], adding [cash_money] credits to the linked account.</span>")
|
||||
|
||||
to_chat(user, "<span class='notice'>The linked account now reports a balance of [registered_account.account_balance] cr.</span>")
|
||||
qdel(I)
|
||||
|
||||
/obj/item/card/id/proc/mass_insert_money(list/money, mob/user)
|
||||
if (!money || !money.len)
|
||||
return FALSE
|
||||
|
||||
var/total = 0
|
||||
|
||||
for (var/obj/item/physical_money in money)
|
||||
var/cash_money = physical_money.get_item_credit_value()
|
||||
|
||||
total += cash_money
|
||||
|
||||
registered_account.adjust_money(cash_money)
|
||||
|
||||
QDEL_LIST(money)
|
||||
|
||||
return total
|
||||
|
||||
/obj/item/card/id/proc/alt_click_can_use_id(mob/living/user)
|
||||
if(!isliving(user))
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
|
||||
return TRUE
|
||||
|
||||
// Returns true if new account was set.
|
||||
/obj/item/card/id/proc/set_new_account(mob/living/user)
|
||||
if(bank_support != ID_FREE_BANK_ACCOUNT)
|
||||
to_chat(user, "<span class='warning'>This ID has no modular banking support whatsover, must be an older model...</span>")
|
||||
return
|
||||
. = FALSE
|
||||
var/datum/bank_account/old_account = registered_account
|
||||
|
||||
var/new_bank_id = input(user, "Enter your account ID number.", "Account Reclamation", 111111) as num | null
|
||||
|
||||
if (isnull(new_bank_id))
|
||||
return
|
||||
|
||||
if(!alt_click_can_use_id(user))
|
||||
return
|
||||
if(!new_bank_id || new_bank_id < 111111 || new_bank_id > 999999)
|
||||
to_chat(user, "<span class='warning'>The account ID number needs to be between 111111 and 999999.</span>")
|
||||
return
|
||||
if (registered_account && registered_account.account_id == new_bank_id)
|
||||
to_chat(user, "<span class='warning'>The account ID was already assigned to this card.</span>")
|
||||
return
|
||||
|
||||
for(var/A in SSeconomy.bank_accounts)
|
||||
var/datum/bank_account/B = A
|
||||
if(B.account_id == new_bank_id)
|
||||
if (old_account)
|
||||
old_account.bank_cards -= src
|
||||
|
||||
B.bank_cards += src
|
||||
registered_account = B
|
||||
to_chat(user, "<span class='notice'>The provided account has been linked to this ID card.</span>")
|
||||
|
||||
return TRUE
|
||||
|
||||
to_chat(user, "<span class='warning'>The account ID number provided is invalid.</span>")
|
||||
return
|
||||
|
||||
/obj/item/card/id/AltClick(mob/living/user)
|
||||
. = ..()
|
||||
if(!bank_support || !alt_click_can_use_id(user))
|
||||
return
|
||||
|
||||
if(!registered_account)
|
||||
set_new_account(user)
|
||||
return
|
||||
|
||||
if (world.time < registered_account.withdrawDelay)
|
||||
registered_account.bank_card_talk("<span class='warning'>ERROR: UNABLE TO LOGIN DUE TO SCHEDULED MAINTENANCE. MAINTENANCE IS SCHEDULED TO COMPLETE IN [(registered_account.withdrawDelay - world.time)/10] SECONDS.</span>", TRUE)
|
||||
return
|
||||
|
||||
var/amount_to_remove = FLOOR(input(user, "How much do you want to withdraw? Current Balance: [registered_account.account_balance]", "Withdraw Funds", 5) as num|null, 1)
|
||||
|
||||
if(!amount_to_remove || amount_to_remove < 0)
|
||||
return
|
||||
if(!alt_click_can_use_id(user))
|
||||
return
|
||||
if(registered_account.adjust_money(-amount_to_remove))
|
||||
var/obj/item/holochip/holochip = new (user.drop_location(), amount_to_remove)
|
||||
user.put_in_hands(holochip)
|
||||
to_chat(user, "<span class='notice'>You withdraw [amount_to_remove] credits into a holochip.</span>")
|
||||
return
|
||||
else
|
||||
var/difference = amount_to_remove - registered_account.account_balance
|
||||
registered_account.bank_card_talk("<span class='warning'>ERROR: The linked account requires [difference] more credit\s to perform that withdrawal.</span>", TRUE)
|
||||
|
||||
/obj/item/card/id/examine(mob/user)
|
||||
. = ..()
|
||||
if(mining_points)
|
||||
. += "There's [mining_points] mining equipment redemption point\s loaded onto this card."
|
||||
if(!bank_support || (bank_support == ID_LOCKED_BANK_ACCOUNT && !registered_account))
|
||||
. += "This ID has no banking support whatsover, must be an older model..."
|
||||
else if(registered_account)
|
||||
. += "The account linked to the ID belongs to '[registered_account.account_holder]' and reports a balance of [registered_account.account_balance] cr."
|
||||
if(registered_account.account_job)
|
||||
var/datum/bank_account/D = SSeconomy.get_dep_account(registered_account.account_job.paycheck_department)
|
||||
if(D)
|
||||
. += "The [D.account_holder] reports a balance of [D.account_balance] cr."
|
||||
. += "<span class='info'>Alt-Click the ID to pull money from the linked account in the form of holochips.</span>"
|
||||
. += "<span class='info'>You can insert credits into the linked account by pressing holochips, cash, or coins against the ID.</span>"
|
||||
if(registered_account.account_holder == user.real_name)
|
||||
. += "<span class='boldnotice'>If you lose this ID card, you can reclaim your account by Alt-Clicking a blank ID card while holding it and entering your account ID number.</span>"
|
||||
else
|
||||
. += "<span class='info'>There is no registered account linked to this card. Alt-Click to add one.</span>"
|
||||
|
||||
/obj/item/card/id/GetAccess()
|
||||
return access
|
||||
@@ -278,7 +420,11 @@ update_label("John Doe", "Clowny")
|
||||
else
|
||||
return ..()
|
||||
|
||||
var/popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset")
|
||||
var/popup_input
|
||||
if(bank_support == ID_FREE_BANK_ACCOUNT)
|
||||
popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset", "Change Account ID")
|
||||
else
|
||||
popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset")
|
||||
if(user.incapacitated())
|
||||
return
|
||||
if(popup_input == "Forge/Reset" && !forged)
|
||||
@@ -302,6 +448,18 @@ update_label("John Doe", "Clowny")
|
||||
forged = TRUE
|
||||
to_chat(user, "<span class='notice'>You successfully forge the ID card.</span>")
|
||||
log_game("[key_name(user)] has forged \the [initial(name)] with name \"[registered_name]\" and occupation \"[assignment]\".")
|
||||
|
||||
// First time use automatically sets the account id to the user.
|
||||
if (first_use && !registered_account)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/accountowner = user
|
||||
|
||||
for(var/bank_account in SSeconomy.bank_accounts)
|
||||
var/datum/bank_account/account = bank_account
|
||||
if(account.account_id == accountowner.account_id)
|
||||
account.bank_cards += src
|
||||
registered_account = account
|
||||
to_chat(user, "<span class='notice'>Your account number has been automatically assigned.</span>")
|
||||
return
|
||||
else if (popup_input == "Forge/Reset" && forged)
|
||||
registered_name = initial(registered_name)
|
||||
@@ -311,6 +469,9 @@ update_label("John Doe", "Clowny")
|
||||
forged = FALSE
|
||||
to_chat(user, "<span class='notice'>You successfully reset the ID card.</span>")
|
||||
return
|
||||
else if (popup_input == "Change Account ID")
|
||||
set_new_account(user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/card/id/syndicate/anyone
|
||||
@@ -327,6 +488,15 @@ update_label("John Doe", "Clowny")
|
||||
assignment = "Syndicate Overlord"
|
||||
access = list(ACCESS_SYNDICATE)
|
||||
|
||||
/obj/item/card/id/no_banking
|
||||
bank_support = ID_NO_BANK_ACCOUNT
|
||||
|
||||
/obj/item/card/id/locked_banking
|
||||
bank_support = ID_LOCKED_BANK_ACCOUNT
|
||||
|
||||
/obj/item/card/id/syndicate/locked_banking
|
||||
bank_support = ID_LOCKED_BANK_ACCOUNT
|
||||
|
||||
/obj/item/card/id/captains_spare
|
||||
name = "captain's spare ID"
|
||||
desc = "The spare ID of the High Lord himself."
|
||||
@@ -396,6 +566,17 @@ update_label("John Doe", "Clowny")
|
||||
access = get_all_accesses()+get_ert_access("sec")-ACCESS_CHANGE_IDS
|
||||
. = ..()
|
||||
|
||||
/obj/item/card/id/debug
|
||||
name = "\improper Debug ID"
|
||||
desc = "A debug ID card. Has ALL the all access, you really shouldn't have this."
|
||||
icon_state = "centcom"
|
||||
assignment = "Jannie"
|
||||
|
||||
/obj/item/card/id/debug/Initialize()
|
||||
access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access()
|
||||
registered_account = SSeconomy.get_dep_account(ACCOUNT_CAR)
|
||||
. = ..()
|
||||
|
||||
/obj/item/card/id/prisoner
|
||||
name = "prisoner ID card"
|
||||
desc = "You are a number, you are not a free man."
|
||||
@@ -514,6 +695,34 @@ update_label("John Doe", "Clowny")
|
||||
desc = "A special ID card that allows access to APC terminals."
|
||||
access = list(ACCESS_ENGINE_EQUIP)
|
||||
|
||||
/obj/item/card/id/departmental_budget
|
||||
name = "departmental card (FUCK)"
|
||||
desc = "Provides access to the departmental budget."
|
||||
var/department_ID = ACCOUNT_CIV
|
||||
var/department_name = ACCOUNT_CIV_NAME
|
||||
|
||||
/obj/item/card/id/departmental_budget/Initialize()
|
||||
. = ..()
|
||||
var/datum/bank_account/B = SSeconomy.get_dep_account(department_ID)
|
||||
if(B)
|
||||
registered_account = B
|
||||
if(!B.bank_cards.Find(src))
|
||||
B.bank_cards += src
|
||||
name = "departmental card ([department_name])"
|
||||
desc = "Provides access to the [department_name]."
|
||||
SSeconomy.dep_cards += src
|
||||
|
||||
/obj/item/card/id/departmental_budget/Destroy()
|
||||
SSeconomy.dep_cards -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/card/id/departmental_budget/update_label()
|
||||
return
|
||||
|
||||
/obj/item/card/id/departmental_budget/car
|
||||
department_ID = ACCOUNT_CAR
|
||||
department_name = ACCOUNT_CAR_NAME
|
||||
|
||||
//Polychromatic Knight Badge
|
||||
|
||||
/obj/item/card/id/knight
|
||||
@@ -577,4 +786,3 @@ update_label("John Doe", "Clowny")
|
||||
/obj/item/card/id/debug/Initialize()
|
||||
access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access()
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -506,6 +506,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
resistance_flags = FIRE_PROOF
|
||||
light_color = LIGHT_COLOR_FIRE
|
||||
grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/oil = 5)
|
||||
custom_price = 55
|
||||
|
||||
/obj/item/lighter/Initialize()
|
||||
. = ..()
|
||||
@@ -710,7 +711,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
item_state = "black_vape"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/chem_volume = 100
|
||||
var/vapetime = FALSE //this so it won't puff out clouds every tick
|
||||
var/vapetime = FALSE //this so it won't puff out clouds every tick
|
||||
var/screw = FALSE // kinky
|
||||
var/super = FALSE //for the fattest vapes dude.
|
||||
|
||||
|
||||
@@ -229,10 +229,11 @@
|
||||
def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial)
|
||||
|
||||
/obj/item/circuitboard/machine/vendor
|
||||
name = "Booze-O-Mat Vendor (Machine Board)"
|
||||
name = "Custom Vendor (Machine Board)"
|
||||
desc = "You can turn the \"brand selection\" dial using a screwdriver."
|
||||
build_path = /obj/machinery/vending/boozeomat
|
||||
req_components = list(/obj/item/vending_refill/boozeomat = 1)
|
||||
custom_premium_price = 100
|
||||
build_path = /obj/machinery/vending/custom
|
||||
req_components = list(/obj/item/vending_refill/custom = 1)
|
||||
|
||||
var/static/list/vending_names_paths = list(
|
||||
/obj/machinery/vending/boozeomat = "Booze-O-Mat",
|
||||
@@ -269,7 +270,8 @@
|
||||
/obj/machinery/vending/wardrobe/viro_wardrobe = "ViroDrobe",
|
||||
/obj/machinery/vending/clothing = "ClothesMate",
|
||||
/obj/machinery/vending/medical = "NanoMed Plus",
|
||||
/obj/machinery/vending/wallmed = "NanoMed")
|
||||
/obj/machinery/vending/wallmed = "NanoMed",
|
||||
/obj/machinery/vending/custom = "Custom Vendor")
|
||||
|
||||
/obj/item/circuitboard/machine/vendor/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
@@ -1019,6 +1021,11 @@
|
||||
build_path = /obj/machinery/ore_silo
|
||||
req_components = list()
|
||||
|
||||
/obj/item/circuitboard/machine/paystand
|
||||
name = "Pay Stand (Machine Board)"
|
||||
build_path = /obj/machinery/paystand
|
||||
req_components = list()
|
||||
|
||||
/obj/item/circuitboard/machine/autobottler
|
||||
name = "Auto-Bottler (Machine Board)"
|
||||
build_path = /obj/machinery/rnd/production/protolathe/department/autobottler //Manips make you print things cheaper, even chems
|
||||
|
||||
@@ -0,0 +1,229 @@
|
||||
/obj/item/suspiciousphone
|
||||
name = "suspicious phone"
|
||||
desc = "This device raises pink levels to unknown highs."
|
||||
icon = 'icons/obj/items_and_weapons.dmi'
|
||||
icon_state = "suspiciousphone"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
attack_verb = list("dumped")
|
||||
var/dumped = FALSE
|
||||
|
||||
/obj/item/suspiciousphone/attack_self(mob/user)
|
||||
if(!ishuman(user))
|
||||
to_chat(user, "<span class='warning'>This device is too advanced for you!</span>")
|
||||
return
|
||||
if(dumped)
|
||||
to_chat(user, "<span class='warning'>You already activated Protocol CRAB-17.</span>")
|
||||
return FALSE
|
||||
if(alert(user, "Are you sure you want to crash this market with no survivors?", "Protocol CRAB-17", "Yes", "No") == "Yes")
|
||||
if(dumped || QDELETED(src)) //Prevents fuckers from cheesing alert
|
||||
return FALSE
|
||||
var/turf/targetturf = get_safe_random_station_turf()
|
||||
if (!targetturf)
|
||||
return FALSE
|
||||
new /obj/effect/dumpeetTarget(targetturf, user)
|
||||
dumped = TRUE
|
||||
|
||||
/obj/structure/checkoutmachine
|
||||
name = "\improper Nanotrasen Space-Coin Market"
|
||||
desc = "This is good for spacecoin because"
|
||||
icon = 'icons/obj/money_machine.dmi'
|
||||
icon_state = "bogdanoff"
|
||||
layer = LARGE_MOB_LAYER
|
||||
armor = list("melee" = 80, "bullet" = 30, "laser" = 30, "energy" = 60, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80)
|
||||
density = TRUE
|
||||
pixel_z = -8
|
||||
max_integrity = 5000
|
||||
var/list/accounts_to_rob
|
||||
var/mob/living/carbon/human/bogdanoff
|
||||
var/canwalk = FALSE
|
||||
|
||||
/obj/structure/checkoutmachine/examine(mob/living/user)
|
||||
. = ..()
|
||||
. += "<span class='info'>It's integrated integrity meter reads: <b>HEALTH: [obj_integrity]</b>.</span>"
|
||||
|
||||
/obj/structure/checkoutmachine/proc/check_if_finished()
|
||||
for(var/i in accounts_to_rob)
|
||||
var/datum/bank_account/B = i
|
||||
if (B.being_dumped)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/checkoutmachine/attackby(obj/item/W, mob/user, params)
|
||||
if(check_if_finished())
|
||||
qdel(src)
|
||||
return
|
||||
if(istype(W, /obj/item/card/id))
|
||||
var/obj/item/card/id/card = W
|
||||
if(!card.registered_account)
|
||||
to_chat(user, "<span class='warning'>This card does not have a registered account!</span>")
|
||||
return
|
||||
if(!card.registered_account.being_dumped)
|
||||
to_chat(user, "<span class='warning'>It appears that your funds are safe from draining!</span>")
|
||||
return
|
||||
if(do_after(user, 40, target = src))
|
||||
if(!card.registered_account.being_dumped)
|
||||
return
|
||||
to_chat(user, "<span class='warning'>You quickly cash out your funds to a more secure banking location. Funds are safu.</span>") // This is a reference and not a typo
|
||||
card.registered_account.being_dumped = FALSE
|
||||
card.registered_account.withdrawDelay = 0
|
||||
if(check_if_finished())
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/checkoutmachine/Initialize(mapload, mob/living/user)
|
||||
. = ..()
|
||||
bogdanoff = user
|
||||
add_overlay("flaps")
|
||||
add_overlay("hatch")
|
||||
add_overlay("legs_retracted")
|
||||
addtimer(CALLBACK(src, .proc/startUp), 50)
|
||||
QDEL_IN(src, 8 MINUTES) //Self destruct after 8 min
|
||||
|
||||
|
||||
/obj/structure/checkoutmachine/proc/startUp() //very VERY snowflake code that adds a neat animation when the pod lands.
|
||||
start_dumping() //The machine doesnt move during this time, giving people close by a small window to grab their funds before it starts running around
|
||||
sleep(10)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
playsound(src, 'sound/machines/click.ogg', 15, TRUE, -3)
|
||||
cut_overlay("flaps")
|
||||
sleep(10)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
playsound(src, 'sound/machines/click.ogg', 15, TRUE, -3)
|
||||
cut_overlay("hatch")
|
||||
sleep(30)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
playsound(src,'sound/machines/twobeep.ogg',50,FALSE)
|
||||
var/mutable_appearance/hologram = mutable_appearance(icon, "hologram")
|
||||
hologram.pixel_y = 16
|
||||
add_overlay(hologram)
|
||||
var/mutable_appearance/holosign = mutable_appearance(icon, "holosign")
|
||||
holosign.pixel_y = 16
|
||||
add_overlay(holosign)
|
||||
add_overlay("legs_extending")
|
||||
cut_overlay("legs_retracted")
|
||||
pixel_z += 4
|
||||
sleep(5)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
add_overlay("legs_extended")
|
||||
cut_overlay("legs_extending")
|
||||
pixel_z += 4
|
||||
sleep(20)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
add_overlay("screen_lines")
|
||||
sleep(5)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
cut_overlay("screen_lines")
|
||||
sleep(5)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
add_overlay("screen_lines")
|
||||
add_overlay("screen")
|
||||
sleep(5)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
playsound(src,'sound/machines/triple_beep.ogg',50,FALSE)
|
||||
add_overlay("text")
|
||||
sleep(10)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
add_overlay("legs")
|
||||
cut_overlay("legs_extended")
|
||||
cut_overlay("screen")
|
||||
add_overlay("screen")
|
||||
cut_overlay("screen_lines")
|
||||
add_overlay("screen_lines")
|
||||
cut_overlay("text")
|
||||
add_overlay("text")
|
||||
canwalk = TRUE
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
|
||||
/obj/structure/checkoutmachine/Destroy()
|
||||
stop_dumping()
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
priority_announce("The credit deposit machine at [get_area(src)] has been destroyed. Station funds have stopped draining!", sender_override = "CRAB-17 Protocol")
|
||||
explosion(src, 0,0,1, flame_range = 2)
|
||||
return ..()
|
||||
|
||||
/obj/structure/checkoutmachine/proc/start_dumping()
|
||||
accounts_to_rob = SSeconomy.bank_accounts.Copy()
|
||||
accounts_to_rob -= bogdanoff.get_bank_account()
|
||||
for(var/i in accounts_to_rob)
|
||||
var/datum/bank_account/B = i
|
||||
B.dumpeet()
|
||||
dump()
|
||||
|
||||
/obj/structure/checkoutmachine/proc/dump()
|
||||
var/percentage_lost = (rand(5, 15) / 100)
|
||||
for(var/i in accounts_to_rob)
|
||||
var/datum/bank_account/B = i
|
||||
if(!B.being_dumped)
|
||||
continue
|
||||
var/amount = B.account_balance * percentage_lost
|
||||
var/datum/bank_account/account = bogdanoff.get_bank_account()
|
||||
if (account) // get_bank_account() may return FALSE
|
||||
account.transfer_money(B, amount)
|
||||
B.bank_card_talk("You have lost [percentage_lost * 100]% of your funds! A spacecoin credit deposit machine is located at: [get_area(src)].")
|
||||
addtimer(CALLBACK(src, .proc/dump), 150) //Drain every 15 seconds
|
||||
|
||||
/obj/structure/checkoutmachine/process()
|
||||
var/anydir = pick(GLOB.cardinals)
|
||||
if(Process_Spacemove(anydir))
|
||||
Move(get_step(src, anydir), anydir)
|
||||
|
||||
/obj/structure/checkoutmachine/proc/stop_dumping()
|
||||
for(var/i in accounts_to_rob)
|
||||
var/datum/bank_account/B = i
|
||||
B.being_dumped = FALSE
|
||||
|
||||
/obj/effect/dumpeetFall //Falling pod
|
||||
name = ""
|
||||
icon = 'icons/obj/money_machine_64.dmi'
|
||||
pixel_z = 300
|
||||
desc = "Get out of the way!"
|
||||
layer = FLY_LAYER//that wasnt flying, that was falling with style!
|
||||
icon_state = "missile_blur"
|
||||
|
||||
/obj/effect/dumpeetTarget
|
||||
name = "Landing Zone Indicator"
|
||||
desc = "A holographic projection designating the landing zone of something. It's probably best to stand back."
|
||||
icon = 'icons/mob/actions/actions_items.dmi'
|
||||
icon_state = "sniper_zoom"
|
||||
layer = PROJECTILE_HIT_THRESHHOLD_LAYER
|
||||
light_range = 2
|
||||
var/obj/effect/dumpeetFall/DF
|
||||
var/obj/structure/checkoutmachine/dump
|
||||
var/mob/living/carbon/human/bogdanoff
|
||||
|
||||
/obj/effect/ex_act()
|
||||
return
|
||||
|
||||
/obj/effect/dumpeetTarget/Initialize(mapload, user)
|
||||
. = ..()
|
||||
bogdanoff = user
|
||||
addtimer(CALLBACK(src, .proc/startLaunch), 100)
|
||||
sound_to_playing_players('sound/items/dump_it.ogg', 20)
|
||||
deadchat_broadcast("<span class='game deadsay'>Protocol CRAB-17 has been activated. A space-coin market has been launched at the station!</span>", turf_target = get_turf(src))
|
||||
|
||||
/obj/effect/dumpeetTarget/proc/startLaunch()
|
||||
DF = new /obj/effect/dumpeetFall(drop_location())
|
||||
dump = new /obj/structure/checkoutmachine(null, bogdanoff)
|
||||
priority_announce("The spacecoin bubble has popped! Get to the credit deposit machine at [get_area(src)] and cash out before you lose all of your funds!", sender_override = "CRAB-17 Protocol")
|
||||
animate(DF, pixel_z = -8, time = 5, , easing = LINEAR_EASING)
|
||||
playsound(src, 'sound/weapons/mortar_whistle.ogg', 70, TRUE, 6)
|
||||
addtimer(CALLBACK(src, .proc/endLaunch), 5, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
|
||||
|
||||
|
||||
|
||||
/obj/effect/dumpeetTarget/proc/endLaunch()
|
||||
QDEL_NULL(DF) //Delete the falling machine effect, because at this point its animation is over. We dont use temp_visual because we want to manually delete it as soon as the pod appears
|
||||
playsound(src, "explosion", 80, TRUE)
|
||||
dump.forceMove(get_turf(src))
|
||||
qdel(src) //The target's purpose is complete. It can rest easy now
|
||||
@@ -0,0 +1,107 @@
|
||||
/obj/item/holochip
|
||||
name = "credit holochip"
|
||||
desc = "A hard-light chip encoded with an amount of credits. It is a modern replacement for physical money that can be directly converted to virtual currency and viceversa. Keep away from magnets."
|
||||
icon = 'icons/obj/economy.dmi'
|
||||
icon_state = "holochip"
|
||||
throwforce = 0
|
||||
force = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/credits = 0
|
||||
|
||||
/obj/item/holochip/Initialize(mapload, amount)
|
||||
. = ..()
|
||||
credits = amount
|
||||
update_icon()
|
||||
|
||||
/obj/item/holochip/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>It's loaded with [credits] credit[( credits > 1 ) ? "s" : ""]</span>\n"+\
|
||||
"<span class='notice'>Alt-Click to split.</span>"
|
||||
|
||||
/obj/item/holochip/get_item_credit_value()
|
||||
return credits
|
||||
|
||||
/obj/item/holochip/update_icon()
|
||||
name = "\improper [credits] credit holochip"
|
||||
var/rounded_credits = credits
|
||||
switch(credits)
|
||||
if(1 to 999)
|
||||
icon_state = "holochip"
|
||||
if(1000 to 999999)
|
||||
icon_state = "holochip_kilo"
|
||||
rounded_credits = round(rounded_credits * 0.001)
|
||||
if(1000000 to 999999999)
|
||||
icon_state = "holochip_mega"
|
||||
rounded_credits = round(rounded_credits * 0.000001)
|
||||
if(1000000000 to INFINITY)
|
||||
icon_state = "holochip_giga"
|
||||
rounded_credits = round(rounded_credits * 0.000000001)
|
||||
var/overlay_color = "#914792"
|
||||
switch(rounded_credits)
|
||||
if(0 to 4)
|
||||
overlay_color = "#8E2E38"
|
||||
if(5 to 9)
|
||||
overlay_color = "#914792"
|
||||
if(10 to 19)
|
||||
overlay_color = "#BF5E0A"
|
||||
if(20 to 49)
|
||||
overlay_color = "#358F34"
|
||||
if(50 to 99)
|
||||
overlay_color = "#676767"
|
||||
if(100 to 199)
|
||||
overlay_color = "#009D9B"
|
||||
if(200 to 499)
|
||||
overlay_color = "#0153C1"
|
||||
if(500 to INFINITY)
|
||||
overlay_color = "#2C2C2C"
|
||||
cut_overlays()
|
||||
var/mutable_appearance/holochip_overlay = mutable_appearance('icons/obj/economy.dmi', "[icon_state]-color")
|
||||
holochip_overlay.color = overlay_color
|
||||
add_overlay(holochip_overlay)
|
||||
|
||||
/obj/item/holochip/proc/spend(amount, pay_anyway = FALSE)
|
||||
if(credits >= amount)
|
||||
credits -= amount
|
||||
if(credits == 0)
|
||||
qdel(src)
|
||||
update_icon()
|
||||
return amount
|
||||
else if(pay_anyway)
|
||||
qdel(src)
|
||||
return credits
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/holochip/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/holochip))
|
||||
var/obj/item/holochip/H = I
|
||||
credits += H.credits
|
||||
to_chat(user, "<span class='notice'>You insert the credits into [src].</span>")
|
||||
update_icon()
|
||||
qdel(H)
|
||||
|
||||
/obj/item/holochip/AltClick(mob/user)
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
||||
return
|
||||
var/split_amount = round(input(user,"How many credits do you want to extract from the holochip?") as null|num)
|
||||
if(split_amount == null || split_amount <= 0 || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
||||
return
|
||||
else
|
||||
var/new_credits = spend(split_amount, TRUE)
|
||||
var/obj/item/holochip/H = new(user ? user : drop_location(), new_credits)
|
||||
if(user)
|
||||
if(!user.put_in_hands(H))
|
||||
H.forceMove(user.drop_location())
|
||||
add_fingerprint(user)
|
||||
H.add_fingerprint(user)
|
||||
to_chat(user, "<span class='notice'>You extract [split_amount] credits into a new holochip.</span>")
|
||||
|
||||
/obj/item/holochip/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
var/wipe_chance = 60 / severity
|
||||
if(prob(wipe_chance))
|
||||
visible_message("<span class='warning'>[src] fizzles and disappears!</span>")
|
||||
qdel(src) //rip cash
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/item/flashlight
|
||||
name = "flashlight"
|
||||
desc = "A hand-held emergency light."
|
||||
custom_price = 100
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "flashlight"
|
||||
item_state = "flashlight"
|
||||
@@ -422,6 +423,7 @@
|
||||
/obj/item/flashlight/glowstick
|
||||
name = "glowstick"
|
||||
desc = "A military-grade glowstick."
|
||||
custom_price = 50
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
brightness_on = 4
|
||||
color = LIGHT_COLOR_GREEN
|
||||
|
||||
@@ -11,6 +11,7 @@ SLIME SCANNER
|
||||
/obj/item/t_scanner
|
||||
name = "\improper T-ray scanner"
|
||||
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
|
||||
custom_price = 150
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "t-ray0"
|
||||
var/on = FALSE
|
||||
@@ -79,6 +80,7 @@ SLIME SCANNER
|
||||
var/mode = 1
|
||||
var/scanmode = 0
|
||||
var/advanced = FALSE
|
||||
custom_price = 300
|
||||
|
||||
/obj/item/healthanalyzer/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!</span>")
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "scanner"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
custom_price = 1750
|
||||
|
||||
/obj/item/sensor_device/attack_self(mob/user)
|
||||
GLOB.crewmonitor.show(user,src) //Proc already exists, just had to call it
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
sharpness = IS_SHARP_ACCURATE
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
var/bayonet = FALSE //Can this be attached to a gun?
|
||||
custom_price = 250
|
||||
|
||||
/obj/item/kitchen/knife/Initialize()
|
||||
. = ..()
|
||||
@@ -107,6 +108,7 @@
|
||||
custom_materials = list(/datum/material/iron=18000)
|
||||
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
custom_price = 600
|
||||
|
||||
/obj/item/kitchen/knife/combat
|
||||
name = "combat knife"
|
||||
@@ -174,6 +176,7 @@
|
||||
throw_range = 7
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
|
||||
custom_price = 200
|
||||
|
||||
/obj/item/kitchen/rollingpin/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins flattening [user.p_their()] head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
name = "crew pinpointer"
|
||||
desc = "A handheld tracking device that points to crew suit sensors."
|
||||
icon_state = "pinpointer_crew"
|
||||
custom_price = 1000
|
||||
var/has_owner = FALSE
|
||||
var/pinpointer_owner = null
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
singular_name = "bill"
|
||||
icon = 'icons/obj/economy.dmi'
|
||||
icon_state = "spacecash"
|
||||
amount = 1
|
||||
amount = INFINITY
|
||||
max_amount = 20
|
||||
throwforce = 0
|
||||
throw_speed = 2
|
||||
|
||||
@@ -93,6 +93,7 @@
|
||||
var/stop_bleeding = 1800
|
||||
var/heal_brute = 5
|
||||
self_delay = 10
|
||||
custom_price = 100
|
||||
|
||||
/obj/item/stack/medical/gauze/heal(mob/living/M, mob/user)
|
||||
if(ishuman(M))
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
icon_state = "utilitybelt"
|
||||
item_state = "utility"
|
||||
content_overlays = TRUE
|
||||
custom_premium_price = 300
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE //because this is easier than trying to have showers wash all contents.
|
||||
|
||||
/obj/item/storage/belt/utility/ComponentInitialize()
|
||||
@@ -709,6 +710,7 @@
|
||||
icon_state = "fannypack_leather"
|
||||
item_state = "fannypack_leather"
|
||||
dying_key = DYE_REGISTRY_FANNYPACK
|
||||
custom_price = 100
|
||||
|
||||
/obj/item/storage/belt/fannypack/ComponentInitialize()
|
||||
. = ..()
|
||||
|
||||
@@ -622,6 +622,7 @@
|
||||
item_state = "zippo"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
custom_price = 20
|
||||
|
||||
/obj/item/storage/box/matches/ComponentInitialize()
|
||||
. = ..()
|
||||
|
||||
@@ -136,6 +136,7 @@
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
icon_type = "cigarette"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette
|
||||
custom_price = 75
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -276,6 +277,7 @@
|
||||
icon_state = "cig_paper_pack"
|
||||
icon_type = "rolling paper"
|
||||
spawn_type = /obj/item/rollingpaper
|
||||
custom_price = 25
|
||||
|
||||
/obj/item/storage/fancy/rollingpapers/ComponentInitialize()
|
||||
. = ..()
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
STR.cant_hold = typecacheof(list(/obj/item/screwdriver/power))
|
||||
STR.can_hold = typecacheof(list(
|
||||
/obj/item/stack/spacecash,
|
||||
/obj/item/holochip,
|
||||
/obj/item/card,
|
||||
/obj/item/clothing/mask/cigarette,
|
||||
/obj/item/flashlight/pen,
|
||||
@@ -101,17 +102,5 @@
|
||||
icon_state = "random_wallet"
|
||||
|
||||
/obj/item/storage/wallet/random/PopulateContents()
|
||||
var/item1_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500)
|
||||
var/item2_type
|
||||
if(prob(50))
|
||||
item2_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500)
|
||||
var/item3_type = pick( /obj/item/coin/silver, /obj/item/coin/silver, /obj/item/coin/gold, /obj/item/coin/iron, /obj/item/coin/iron, /obj/item/coin/iron )
|
||||
|
||||
spawn(2)
|
||||
if(item1_type)
|
||||
new item1_type(src)
|
||||
if(item2_type)
|
||||
new item2_type(src)
|
||||
if(item3_type)
|
||||
new item3_type(src)
|
||||
update_icon()
|
||||
new /obj/item/holochip(src, rand(5,30))
|
||||
icon_state = "wallet"
|
||||
|
||||
@@ -145,6 +145,7 @@
|
||||
desc = "A janitorial watertank backpack with nozzle to clean dirt and graffiti."
|
||||
icon_state = "waterbackpackjani"
|
||||
item_state = "waterbackpackjani"
|
||||
custom_price = 1200
|
||||
|
||||
/obj/item/watertank/janitor/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -525,6 +525,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
icon_state = "skateboard2"
|
||||
item_state = "skateboard2"
|
||||
board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro
|
||||
custom_premium_price = 500
|
||||
|
||||
/obj/item/melee/skateboard/hoverboard
|
||||
name = "hoverboard"
|
||||
@@ -532,6 +533,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
icon_state = "hoverboard_red"
|
||||
item_state = "hoverboard_red"
|
||||
board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard
|
||||
custom_premium_price = 2015
|
||||
|
||||
/obj/item/melee/skateboard/hoverboard/admin
|
||||
name = "\improper Board Of Directors"
|
||||
|
||||
@@ -74,4 +74,43 @@
|
||||
/obj/structure/closet/crate/secure/medical
|
||||
desc = "A secure medical crate."
|
||||
name = "medical crate"
|
||||
icon_state = "medical_secure_crate"
|
||||
icon_state = "medical_secure_crate"
|
||||
|
||||
/obj/structure/closet/crate/secure/owned
|
||||
name = "private crate"
|
||||
desc = "A crate cover designed to only open for who purchased its contents."
|
||||
icon_state = "privatecrate"
|
||||
var/datum/bank_account/buyer_account
|
||||
var/privacy_lock = TRUE
|
||||
|
||||
/obj/structure/closet/crate/secure/owned/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user, "<span class='notice'>It's locked with a privacy lock, and can only be unlocked by the buyer's ID.</span>")
|
||||
|
||||
/obj/structure/closet/crate/secure/owned/Initialize(mapload, datum/bank_account/_buyer_account)
|
||||
. = ..()
|
||||
buyer_account = _buyer_account
|
||||
|
||||
/obj/structure/closet/crate/secure/owned/togglelock(mob/living/user, silent)
|
||||
if(privacy_lock)
|
||||
if(!broken)
|
||||
var/obj/item/card/id/id_card = user.get_idcard(TRUE)
|
||||
if(id_card)
|
||||
if(id_card.registered_account)
|
||||
if(id_card.registered_account == buyer_account)
|
||||
if(iscarbon(user))
|
||||
add_fingerprint(user)
|
||||
locked = !locked
|
||||
user.visible_message("<span class='notice'>[user] unlocks [src]'s privacy lock.</span>",
|
||||
"<span class='notice'>You unlock [src]'s privacy lock.</span>")
|
||||
privacy_lock = FALSE
|
||||
update_icon()
|
||||
else if(!silent)
|
||||
to_chat(user, "<span class='notice'>Bank account does not match with buyer!</span>")
|
||||
else if(!silent)
|
||||
to_chat(user, "<span class='notice'>No linked bank account detected!</span>")
|
||||
else if(!silent)
|
||||
to_chat(user, "<span class='notice'>No ID detected!</span>")
|
||||
else if(!silent)
|
||||
to_chat(user, "<span class='warning'>[src] is broken!</span>")
|
||||
else ..()
|
||||
|
||||
@@ -689,7 +689,7 @@
|
||||
name = "ID, jumpsuit and shoes"
|
||||
uniform = /obj/item/clothing/under/color/random
|
||||
shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
id = /obj/item/card/id
|
||||
id = /obj/item/card/id/no_banking
|
||||
r_hand = /obj/item/storage/box/syndie_kit/chameleon/ghostcafe
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user