mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 15:08:02 +01:00
Part 1 of economy rework: Spacecash refactor - See commit for full changelog.
* Implements stacking and stack overlays * Simplified tiers of cash (1,10,100,500,1000, may remove 500) * Simplified API (dispense_cash, count_cash) Conflicts: code/modules/admin/admin_verbs.dm code/modules/admin/verbs/debug.dm code/modules/economy/ATM.dm
This commit is contained in:
+1
-1
@@ -570,6 +570,7 @@
|
||||
#include "code\game\objects\items\weapons\AI_modules.dm"
|
||||
#include "code\game\objects\items\weapons\alien_specific.dm"
|
||||
#include "code\game\objects\items\weapons\cards_ids.dm"
|
||||
#include "code\game\objects\items\weapons\cash.dm"
|
||||
#include "code\game\objects\items\weapons\cigs_lighters.dm"
|
||||
#include "code\game\objects\items\weapons\clown_items.dm"
|
||||
#include "code\game\objects\items\weapons\cosmetics.dm"
|
||||
@@ -861,7 +862,6 @@
|
||||
#include "code\modules\economy\Accounts.dm"
|
||||
#include "code\modules\economy\Accounts_DB.dm"
|
||||
#include "code\modules\economy\ATM.dm"
|
||||
#include "code\modules\economy\cash.dm"
|
||||
#include "code\modules\economy\economy_misc.dm"
|
||||
#include "code\modules\economy\EFTPOS.dm"
|
||||
#include "code\modules\economy\Events.dm"
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
var/global/list/moneytypes=list(
|
||||
/obj/item/weapon/spacecash/c1000 = 1000,
|
||||
/obj/item/weapon/spacecash/c500 = 500, // Might get rid of this.
|
||||
/obj/item/weapon/spacecash/c100 = 100,
|
||||
/obj/item/weapon/spacecash/c10 = 10,
|
||||
/obj/item/weapon/spacecash = 1,
|
||||
)
|
||||
|
||||
/obj/item/weapon/spacecash
|
||||
name = "credit chip"
|
||||
desc = "Money money money."
|
||||
gender = PLURAL
|
||||
icon = 'icons/obj/money.dmi'
|
||||
icon_state = "cash1"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
force = 1.0
|
||||
throwforce = 1.0
|
||||
throw_speed = 1
|
||||
throw_range = 2
|
||||
w_class = 1.0
|
||||
var/access = list()
|
||||
access = access_crate_cash
|
||||
var/worth = 1 // Per chip
|
||||
var/amount = 1 // number of chips
|
||||
var/stack_color = "#4E054F"
|
||||
|
||||
/obj/item/weapon/spacecash/New(var/new_loc,var/new_amount=1)
|
||||
loc = new_loc
|
||||
name = "[worth] credit chip"
|
||||
amount = new_amount
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/spacecash/examine()
|
||||
if(amount>1)
|
||||
usr << "\icon[src] This is a stack of [amount] [src]s."
|
||||
else
|
||||
usr << "\icon[src] This is \a [src]s."
|
||||
usr << "It's worth [worth*amount] credits."
|
||||
|
||||
/obj/item/weapon/spacecash/update_icon()
|
||||
icon_state = "cash[worth]"
|
||||
// Up to 100 items per stack.
|
||||
overlays = 0
|
||||
var/stacksize=round(amount/25)
|
||||
pixel_x=rand(-7,7)
|
||||
pixel_y=rand(-14,14)
|
||||
if(stacksize)
|
||||
// 0 = single
|
||||
// 1 = 1/4 stack
|
||||
// 2 = 1/2 stack
|
||||
// 3 = 3/4 stack
|
||||
// 4 = full stack
|
||||
var/image/stack = image(icon,icon_state="cashstack[stacksize]")
|
||||
stack.color=stack_color
|
||||
overlays += stack
|
||||
|
||||
/obj/item/weapon/spacecash/c10
|
||||
icon_state = "cash10"
|
||||
worth = 10
|
||||
stack_color = "#663200"
|
||||
|
||||
/obj/item/weapon/spacecash/c100
|
||||
icon_state = "cash100"
|
||||
worth = 100
|
||||
stack_color = "#663200"
|
||||
|
||||
/obj/item/weapon/spacecash/c500
|
||||
icon_state = "cash500"
|
||||
worth = 500
|
||||
stack_color = "#663200"
|
||||
|
||||
/obj/item/weapon/spacecash/c1000
|
||||
icon_state = "cash1000"
|
||||
worth = 1000
|
||||
stack_color = "#333333"
|
||||
|
||||
/proc/dispense_cash(var/amount, var/loc)
|
||||
for(var/cashtype in moneytypes)
|
||||
var/slice = moneytypes[cashtype]
|
||||
var/dispense_count = Floor(amount/slice)
|
||||
amount = amount % slice
|
||||
while(dispense_count>0)
|
||||
var/dispense_this_time = min(dispense_count,100)
|
||||
if(dispense_this_time > 0)
|
||||
new cashtype(loc,dispense_this_time)
|
||||
dispense_count -= dispense_this_time
|
||||
|
||||
/proc/count_cash(var/list/cash)
|
||||
. = 0
|
||||
for(var/obj/item/weapon/spacecash/C in cash)
|
||||
. += C.amount * C.worth
|
||||
@@ -74,10 +74,18 @@
|
||||
|
||||
/obj/item/weapon/storage/wallet/random/New()
|
||||
..()
|
||||
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/item1_type = pick(/obj/item/weapon/spacecash,
|
||||
/obj/item/weapon/spacecash/c10,
|
||||
/obj/item/weapon/spacecash/c100,
|
||||
/obj/item/weapon/spacecash/c500,
|
||||
/obj/item/weapon/spacecash/c1000)
|
||||
var/item2_type
|
||||
if(prob(50))
|
||||
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)
|
||||
item2_type = pick(/obj/item/weapon/spacecash,
|
||||
/obj/item/weapon/spacecash/c10,
|
||||
/obj/item/weapon/spacecash/c100,
|
||||
/obj/item/weapon/spacecash/c500,
|
||||
/obj/item/weapon/spacecash/c1000)
|
||||
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)
|
||||
|
||||
@@ -99,12 +99,7 @@
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
for(var/i = 0, i < 3, i++)
|
||||
new /obj/item/weapon/spacecash/c1000(src)
|
||||
for(var/i = 0, i < 5, i++)
|
||||
new /obj/item/weapon/spacecash/c500(src)
|
||||
for(var/i = 0, i < 6, i++)
|
||||
new /obj/item/weapon/spacecash/c200(src)
|
||||
dispense_cash(6700,src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -95,6 +95,7 @@ var/list/admin_verbs_fun = list(
|
||||
/client/proc/toggle_random_events,
|
||||
/client/proc/set_ooc,
|
||||
/client/proc/editappear,
|
||||
/client/proc/gib_money // /vg/
|
||||
)
|
||||
var/list/admin_verbs_spawn = list(
|
||||
/datum/admins/proc/spawn_atom, /*allows us to spawn instances*/
|
||||
|
||||
@@ -1087,3 +1087,12 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
log_admin("[key_name(src)] has toggled [M.key]'s [blockname] block [state]!")
|
||||
else
|
||||
alert("Invalid mob")
|
||||
|
||||
/client/proc/gib_money()
|
||||
set category = "Fun"
|
||||
set name = "Dispense Money"
|
||||
set desc = "Honk"
|
||||
|
||||
var/response = input(src,"How much moneys?") as num
|
||||
if( response < 1) return
|
||||
dispense_cash(response, mob.loc)
|
||||
|
||||
@@ -72,7 +72,7 @@ log transactions
|
||||
//short out the machine, shoot sparks, spew money!
|
||||
emagged = 1
|
||||
spark_system.start()
|
||||
spawn_money(rand(100,500),src.loc)
|
||||
dispense_cash(rand(100,500),src.loc)
|
||||
//we don't want to grief people by locking their id in an emagged ATM
|
||||
release_held_id(user)
|
||||
|
||||
@@ -309,7 +309,7 @@ log transactions
|
||||
|
||||
//remove the money
|
||||
authenticated_account.money -= amount
|
||||
spawn_money(amount,src.loc)
|
||||
dispense_cash(amount,src.loc)
|
||||
|
||||
//create an entry in the account transaction log
|
||||
var/datum/transaction/T = new()
|
||||
@@ -365,6 +365,11 @@ log transactions
|
||||
|
||||
src.attack_hand(usr)
|
||||
|
||||
//create the most effective combination of notes to make up the requested amount
|
||||
/obj/machinery/atm/proc/withdraw_arbitrary_sum(var/arbitrary_sum)
|
||||
dispense_cash(arbitrary_sum,get_turf(src))
|
||||
|
||||
|
||||
//stolen wholesale and then edited a bit from newscasters, which are awesome and by Agouri
|
||||
/obj/machinery/atm/proc/scan_user(mob/living/carbon/human/human_user as mob)
|
||||
if(!authenticated_account)
|
||||
|
||||
@@ -64,11 +64,3 @@
|
||||
desc = "It's worth 1000 credits."
|
||||
worth = 1000
|
||||
|
||||
proc/spawn_money(var/sum, spawnloc)
|
||||
var/cash_type
|
||||
for(var/i in list(1000,500,200,100,50,20,10,1))
|
||||
cash_type = text2path("/obj/item/weapon/spacecash/c[i]")
|
||||
while(sum >= i)
|
||||
sum -= i
|
||||
new cash_type(spawnloc)
|
||||
return
|
||||
@@ -44,8 +44,7 @@
|
||||
return "\[NO TAGS\]"
|
||||
var/str=""
|
||||
if(artist!="")
|
||||
str += "[artist]"
|
||||
str += " - "
|
||||
str += "[artist] - "
|
||||
if(title!="")
|
||||
str += "\"[title]\""
|
||||
else
|
||||
|
||||
@@ -1089,23 +1089,7 @@
|
||||
icon_state = "spawner"
|
||||
potency = 10
|
||||
New()
|
||||
switch(rand(1,100))//(potency) //It wants to use the default potency instead of the new, so it was always 10. Will try to come back to this later - Cheridan
|
||||
if(0 to 10)
|
||||
new/obj/item/weapon/spacecash/(src.loc)
|
||||
if(11 to 20)
|
||||
new/obj/item/weapon/spacecash/c10(src.loc)
|
||||
if(21 to 30)
|
||||
new/obj/item/weapon/spacecash/c20(src.loc)
|
||||
if(31 to 40)
|
||||
new/obj/item/weapon/spacecash/c50(src.loc)
|
||||
if(41 to 50)
|
||||
new/obj/item/weapon/spacecash/c100(src.loc)
|
||||
if(51 to 60)
|
||||
new/obj/item/weapon/spacecash/c200(src.loc)
|
||||
if(61 to 80)
|
||||
new/obj/item/weapon/spacecash/c500(src.loc)
|
||||
else
|
||||
new/obj/item/weapon/spacecash/c1000(src.loc)
|
||||
dispense_cash(rand(1,100)*10,src.loc)//(potency) //It wants to use the default potency instead of the new, so it was always 10. Will try to come back to this later - Cheridan
|
||||
spawn(5) //Workaround to keep harvesting from working weirdly.
|
||||
del(src)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user