mint machine

This commit is contained in:
Fox McCloud
2018-04-23 15:44:29 -04:00
parent eafd57487c
commit 7c8299d443
9 changed files with 82 additions and 285 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
/*****************************Coin********************************/
/obj/item/coin
icon = 'icons/obj/items.dmi'
icon = 'icons/obj/economy.dmi'
name = "coin"
icon_state = "coin__heads"
flags = CONDUCT
+69 -174
View File
@@ -2,208 +2,103 @@
/obj/machinery/mineral/mint
name = "Coin press"
icon = 'icons/obj/stationobjs.dmi'
name = "coin press"
icon = 'icons/obj/economy.dmi'
icon_state = "coinpress0"
density = 1
anchored = 1.0
var/amt_silver = 0 //amount of silver
var/amt_gold = 0 //amount of gold
var/amt_diamond = 0
var/amt_iron = 0
var/amt_plasma = 0
var/amt_uranium = 0
var/amt_clown = 0
var/amt_mime = 0
density = TRUE
anchored = TRUE
var/newCoins = 0 //how many coins the machine made in it's last load
var/processing = 0
var/chosen = "metal" //which material will be used to make coins
var/processing = FALSE
var/chosen = MAT_METAL //which material will be used to make coins
var/coinsToProduce = 10
speed_process = 1
speed_process = TRUE
/obj/machinery/mineral/mint/New()
..()
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM, MAT_TRANQUILLITE), MINERAL_MATERIAL_AMOUNT * 50)
/obj/machinery/mineral/mint/process()
var/turf/T = get_step(src,input_dir)
if(T)
for(var/obj/item/stack/sheet/O in T)
if(istype(O, /obj/item/stack/sheet/mineral/gold))
amt_gold += 100 * O.amount
qdel(O)
if(istype(O, /obj/item/stack/sheet/mineral/silver))
amt_silver += 100 * O.amount
qdel(O)
if(istype(O, /obj/item/stack/sheet/mineral/diamond))
amt_diamond += 100 * O.amount
qdel(O)
if(istype(O, /obj/item/stack/sheet/mineral/plasma))
amt_plasma += 100 * O.amount
qdel(O)
if(istype(O, /obj/item/stack/sheet/mineral/uranium))
amt_uranium += 100 * O.amount
qdel(O)
if(istype(O, /obj/item/stack/sheet/metal))
amt_iron += 100 * O.amount
qdel(O)
if(istype(O, /obj/item/stack/sheet/mineral/bananium))
amt_clown += 100 * O.amount
qdel(O)
if(istype(O, /obj/item/stack/sheet/mineral/tranquillite))
amt_mime += 100 * O.amount
qdel(O)
var/turf/T = get_step(src, input_dir)
if(!T)
return
GET_COMPONENT(materials, /datum/component/material_container)
for(var/obj/item/stack/sheet/O in T)
materials.insert_stack(O, O.amount)
/obj/machinery/mineral/mint/attack_hand(user as mob)
/obj/machinery/mineral/mint/attack_hand(mob/user)
if(..())
return
var/dat = "<b>Coin Press</b><br>"
dat += text("<br><font color='#ffcc00'><b>Gold inserted: </b>[amt_gold]</font> ")
if(chosen == "gold")
dat += text("chosen")
else
dat += text("<A href='?src=[UID()];choose=gold'>Choose</A>")
dat += text("<br><font color='#888888'><b>Silver inserted: </b>[amt_silver]</font> ")
if(chosen == "silver")
dat += text("chosen")
else
dat += text("<A href='?src=[UID()];choose=silver'>Choose</A>")
dat += text("<br><font color='#555555'><b>Iron inserted: </b>[amt_iron]</font> ")
if(chosen == "metal")
dat += text("chosen")
else
dat += text("<A href='?src=[UID()];choose=metal'>Choose</A>")
dat += text("<br><font color='#8888FF'><b>Diamond inserted: </b>[amt_diamond]</font> ")
if(chosen == "diamond")
dat += text("chosen")
else
dat += text("<A href='?src=[UID()];choose=diamond'>Choose</A>")
dat += text("<br><font color='#FF8800'><b>Plasma inserted: </b>[amt_plasma]</font> ")
if(chosen == "plasma")
dat += text("chosen")
else
dat += text("<A href='?src=[UID()];choose=plasma'>Choose</A>")
dat += text("<br><font color='#008800'><b>Uranium inserted: </b>[amt_uranium]</font> ")
if(chosen == "uranium")
dat += text("chosen")
else
dat += text("<A href='?src=[UID()];choose=uranium'>Choose</A>")
if(amt_clown > 0)
dat += text("<br><font color='#AAAA00'><b>Bananium inserted: </b>[amt_clown]</font> ")
if(chosen == "clown")
dat += text("chosen")
GET_COMPONENT(materials, /datum/component/material_container)
for(var/mat_id in materials.materials)
var/datum/material/M = materials.materials[mat_id]
if(!M.amount && chosen != mat_id)
continue
dat += "<br><b>[M.name] amount:</b> [M.amount] cm<sup>3</sup> "
if(chosen == mat_id)
dat += "<b>Chosen</b>"
else
dat += text("<A href='?src=[UID()];choose=clown'>Choose</A>")
if(amt_mime > 0)
dat += text("<br><font color='#666666'><b>Tranquillite inserted: </b>[amt_mime]</font> ")
if(chosen == "mime")
dat += text("chosen")
else
dat += text("<A href='?src=[UID()];choose=mime'>Choose</A>")
dat += "<A href='?src=[UID()];choose=[mat_id]'>Choose</A>"
dat += text("<br><br>Will produce [coinsToProduce] [chosen] coins if enough materials are available.<br>")
//dat += text("The dial which controls the number of conins to produce seems to be stuck. A technician has already been dispatched to fix this.")
dat += text("<A href='?src=[UID()];chooseAmt=-10'>-10</A> ")
dat += text("<A href='?src=[UID()];chooseAmt=-5'>-5</A> ")
dat += text("<A href='?src=[UID()];chooseAmt=-1'>-1</A> ")
dat += text("<A href='?src=[UID()];chooseAmt=1'>+1</A> ")
dat += text("<A href='?src=[UID()];chooseAmt=5'>+5</A> ")
dat += text("<A href='?src=[UID()];chooseAmt=10'>+10</A> ")
var/datum/material/M = materials.materials[chosen]
dat += text("<br><br>In total this machine produced <font color='green'><b>[newCoins]</b></font> coins.")
dat += text("<br><A href='?src=[UID()];makeCoins=[1]'>Make coins</A>")
user << browse("[dat]", "window=mint")
dat += "<br><br>Will produce [coinsToProduce] [lowertext(M.name)] coins if enough materials are available.<br>"
dat += "<A href='?src=[UID()];chooseAmt=-10'>-10</A> "
dat += "<A href='?src=[UID()];chooseAmt=-5'>-5</A> "
dat += "<A href='?src=[UID()];chooseAmt=-1'>-1</A> "
dat += "<A href='?src=[UID()];chooseAmt=1'>+1</A> "
dat += "<A href='?src=[UID()];chooseAmt=5'>+5</A> "
dat += "<A href='?src=[UID()];chooseAmt=10'>+10</A> "
dat += "<br><br>In total this machine produced <font color='green'><b>[newCoins]</b></font> coins."
dat += "<br><A href='?src=[UID()];makeCoins=[1]'>Make coins</A>"
user << browse(dat, "window=mint")
/obj/machinery/mineral/mint/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
if(processing==1)
add_fingerprint(usr)
if(processing == 1)
to_chat(usr, "<span class='notice'>The machine is processing.</span>")
return
GET_COMPONENT(materials, /datum/component/material_container)
if(href_list["choose"])
chosen = href_list["choose"]
if(materials.materials[href_list["choose"]])
chosen = href_list["choose"]
if(href_list["chooseAmt"])
coinsToProduce = Clamp(coinsToProduce + text2num(href_list["chooseAmt"]), 0, 1000)
if(href_list["makeCoins"])
var/temp_coins = coinsToProduce
processing = 1;
processing = TRUE
icon_state = "coinpress1"
switch(chosen)
if("metal")
while(amt_iron > 0 && coinsToProduce > 0)
create_coins(/obj/item/coin/iron)
amt_iron -= 20
coinsToProduce--
newCoins++
src.updateUsrDialog()
sleep(5)
if("gold")
while(amt_gold > 0 && coinsToProduce > 0)
create_coins(/obj/item/coin/gold)
amt_gold -= 20
coinsToProduce--
newCoins++
src.updateUsrDialog()
sleep(5)
if("silver")
while(amt_silver > 0 && coinsToProduce > 0)
create_coins(/obj/item/coin/silver)
amt_silver -= 20
coinsToProduce--
newCoins++
src.updateUsrDialog()
sleep(5)
if("diamond")
while(amt_diamond > 0 && coinsToProduce > 0)
create_coins(/obj/item/coin/diamond)
amt_diamond -= 20
coinsToProduce--
newCoins++
src.updateUsrDialog()
sleep(5)
if("plasma")
while(amt_plasma > 0 && coinsToProduce > 0)
create_coins(/obj/item/coin/plasma)
amt_plasma -= 20
coinsToProduce--
newCoins++
src.updateUsrDialog()
sleep(5)
if("uranium")
while(amt_uranium > 0 && coinsToProduce > 0)
create_coins(/obj/item/coin/uranium)
amt_uranium -= 20
coinsToProduce--
newCoins++
src.updateUsrDialog()
sleep(5)
if("clown")
while(amt_clown > 0 && coinsToProduce > 0)
create_coins(/obj/item/coin/clown)
amt_clown -= 20
coinsToProduce--
newCoins++
src.updateUsrDialog()
sleep(5)
if("mime")
while(amt_mime > 0 && coinsToProduce > 0)
create_coins(/obj/item/coin/mime)
amt_mime -= 20
coinsToProduce--
newCoins++
src.updateUsrDialog()
sleep(5)
icon_state = "coinpress0"
processing = 0
coinsToProduce = temp_coins
src.updateUsrDialog()
return
var/coin_mat = MINERAL_MATERIAL_AMOUNT * 0.2
var/datum/material/M = materials.materials[chosen]
if(!M || !M.coin_type)
updateUsrDialog()
return
/obj/machinery/mineral/mint/proc/create_coins(var/P)
while(coinsToProduce > 0 && materials.use_amount_type(coin_mat, chosen))
create_coins(M.coin_type)
coinsToProduce--
newCoins++
updateUsrDialog()
sleep(5)
icon_state = "coinpress0"
processing = FALSE
coinsToProduce = temp_coins
updateUsrDialog()
/obj/machinery/mineral/mint/proc/create_coins(P)
var/turf/T = get_step(src,output_dir)
if(T)
var/obj/item/O = new P(src)
var/obj/item/moneybag/M = locate(/obj/item/moneybag/, T)
var/obj/item/storage/bag/money/M = locate(/obj/item/storage/bag/money, T)
if(!M)
M = new /obj/item/moneybag(src)
M = new /obj/item/storage/bag/money(src)
unload_mineral(M)
O.loc = M
O.forceMove(M)
+10 -108
View File
@@ -1,117 +1,19 @@
/*****************************Money bag********************************/
/obj/item/moneybag
icon = 'icons/obj/storage.dmi'
name = "Money bag"
/obj/item/storage/bag/money
name = "money bag"
icon_state = "moneybag"
flags = CONDUCT
force = 10.0
force = 10
throwforce = 0
burn_state = FLAMMABLE
burntime = 20
max_integrity = 100
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL
storage_slots = 40
max_combined_w_class = 40
can_hold = list(/obj/item/coin, /obj/item/stack/spacecash)
/obj/item/moneybag/attack_hand(user as mob)
var/amt_gold = 0
var/amt_silver = 0
var/amt_diamond = 0
var/amt_iron = 0
var/amt_plasma = 0
var/amt_uranium = 0
var/amt_clown = 0
var/amt_mime = 0
var/amt_adamantine = 0
for(var/obj/item/coin/C in contents)
if(istype(C,/obj/item/coin/diamond))
amt_diamond++
if(istype(C,/obj/item/coin/plasma))
amt_plasma++
if(istype(C,/obj/item/coin/iron))
amt_iron++
if(istype(C,/obj/item/coin/silver))
amt_silver++
if(istype(C,/obj/item/coin/gold))
amt_gold++
if(istype(C,/obj/item/coin/uranium))
amt_uranium++
if(istype(C,/obj/item/coin/clown))
amt_clown++
if(istype(C,/obj/item/coin/mime))
amt_mime++
if(istype(C,/obj/item/coin/adamantine))
amt_adamantine++
var/dat = text("<b>The contents of the moneybag reveal...</b><br>")
if(amt_gold)
dat += text("Gold coins: [amt_gold] <A href='?src=[UID()];remove=gold'>Remove one</A><br>")
if(amt_silver)
dat += text("Silver coins: [amt_silver] <A href='?src=[UID()];remove=silver'>Remove one</A><br>")
if(amt_iron)
dat += text("Metal coins: [amt_iron] <A href='?src=[UID()];remove=iron'>Remove one</A><br>")
if(amt_diamond)
dat += text("Diamond coins: [amt_diamond] <A href='?src=[UID()];remove=diamond'>Remove one</A><br>")
if(amt_plasma)
dat += text("Plasma coins: [amt_plasma] <A href='?src=[UID()];remove=plasma'>Remove one</A><br>")
if(amt_uranium)
dat += text("Uranium coins: [amt_uranium] <A href='?src=[UID()];remove=uranium'>Remove one</A><br>")
if(amt_clown)
dat += text("Bananium coins: [amt_clown] <A href='?src=[UID()];remove=clown'>Remove one</A><br>")
if(amt_mime)
dat += text("Tranquillite coins: [amt_mime] <A href='?src=[UID()];remove=mime'>Remove one</A><br>")
if(amt_adamantine)
dat += text("Adamantine coins: [amt_adamantine] <A href='?src=[UID()];remove=adamantine'>Remove one</A><br>")
user << browse("[dat]", "window=moneybag")
/obj/item/moneybag/attackby(obj/item/W as obj, mob/user as mob, params)
..()
if(istype(W, /obj/item/coin))
var/obj/item/coin/C = W
if(!user.drop_item())
return
to_chat(user, "<span class='notice'>You add the [C.name] into the bag.</span>")
contents += C
if(istype(W, /obj/item/moneybag))
var/obj/item/moneybag/C = W
for(var/obj/O in C.contents)
contents += O;
to_chat(user, "<span class='notice'>You empty the [C.name] into the bag.</span>")
return
/obj/item/moneybag/Topic(href, href_list)
if(..())
return
usr.set_machine(src)
src.add_fingerprint(usr)
if(href_list["remove"])
var/obj/item/coin/COIN
switch(href_list["remove"])
if("gold")
COIN = locate(/obj/item/coin/gold,src.contents)
if("silver")
COIN = locate(/obj/item/coin/silver,src.contents)
if("iron")
COIN = locate(/obj/item/coin/iron,src.contents)
if("diamond")
COIN = locate(/obj/item/coin/diamond,src.contents)
if("plasma")
COIN = locate(/obj/item/coin/plasma,src.contents)
if("uranium")
COIN = locate(/obj/item/coin/uranium,src.contents)
if("clown")
COIN = locate(/obj/item/coin/clown,src.contents)
if("mime")
COIN = locate(/obj/item/coin/mime,src.contents)
if("adamantine")
COIN = locate(/obj/item/coin/adamantine,src.contents)
if(!COIN)
return
COIN.loc = src.loc
return
/obj/item/moneybag/vault
/obj/item/moneybag/vault/New()
/obj/item/storage/bag/money/vault/New()
..()
new /obj/item/coin/silver(src)
new /obj/item/coin/silver(src)
@@ -119,4 +21,4 @@
new /obj/item/coin/silver(src)
new /obj/item/coin/gold(src)
new /obj/item/coin/gold(src)
new /obj/item/coin/adamantine(src)
new /obj/item/coin/adamantine(src)