diff --git a/code/game/objects/items/toys/fake_coin.dm b/code/game/objects/items/toys/fake_coin.dm new file mode 100644 index 0000000000..df75ae5125 --- /dev/null +++ b/code/game/objects/items/toys/fake_coin.dm @@ -0,0 +1,117 @@ +/*****************************Coin********************************/ +// fake "toy" version that allows people to have them as trinkets +// without letting them easily get stuff from vending machines + +/obj/item/fake_coin + icon = 'icons/obj/coins.dmi' + name = "Coin" + desc = "A simple coin you can flip. The weight doesn't seem quite right..." + description_fluff = "This isn't a real coin; you can't use it on vending machines." + icon_state = "coin" + randpixel = 8 + force = 0.0 + throwforce = 0.0 + w_class = ITEMSIZE_TINY + slot_flags = SLOT_EARS + var/sides = 2 + drop_sound = 'sound/items/drop/ring.ogg' + pickup_sound = 'sound/items/pickup/ring.ogg' + +/obj/item/fake_coin/Initialize(mapload) + . = ..() + randpixel_xy() + +/obj/item/fake_coin/gold + name = MAT_GOLD + " coin" + desc = "A shiny " + MAT_GOLD + " coin. Just like in the old movies with pirates!" + icon_state = "coin_gold" + +/obj/item/fake_coin/silver + name = MAT_SILVER + " coin" + desc = "A shiny " + MAT_SILVER + " coin. You can almost see your reflection in it. Unless you're a vampire." + icon_state = "coin_silver" + +/obj/item/fake_coin/copper + name = MAT_COPPER + " coin" + desc = "A sturdy " + MAT_COPPER + " coin. The preferred tender of people who like to make other people count a lot." + icon_state = "coin_copper" + +/obj/item/fake_coin/diamond + name = MAT_DIAMOND + " coin" + desc = "A coin made of solid " + MAT_DIAMOND + ". Carbon, really, but who's counting?" // me, I'm counting + icon_state = "coin_diamond" + +/obj/item/fake_coin/graphite + name = MAT_GRAPHITE + " coin" + desc = "A small pressed plaque of " + MAT_GRAPHITE + ". This seems... impractical. Maybe you could use it as a pencil in a pinch?" + icon_state = "coin_graphite" + +/obj/item/fake_coin/iron + name = MAT_IRON + " coin" + desc = "A dull " + MAT_IRON + " coin. Not that it's boring, it's just a bit plain." + icon_state = "coin_iron" + +/obj/item/fake_coin/steel + name = MAT_STEEL + " coin" + desc = "A plain " + MAT_STEEL + " coin. You'd think they'd make more coins out of this, considering how plentiful it is." + icon_state = "coin_steel" + +/obj/item/fake_coin/durasteel + name = MAT_DURASTEEL + " coin" + desc = "A shiny " + MAT_DURASTEEL + " coin. Keep it in your breast pocket, maybe it'll stop a bullet someday." + icon_state = "coin_durasteel" + +/obj/item/fake_coin/plasteel + name = MAT_PLASTEEL + " coin" + desc = "Someone made a coin out of " + MAT_PLASTEEL + ". Now why would they do that?" + icon_state = "coin_plasteel" + +/obj/item/fake_coin/titanium + name = MAT_TITANIUM + " coin" + desc = "A shiny " + MAT_TITANIUM + " coin with some commemorative markings." + icon_state = "coin_titanium" + +/obj/item/fake_coin/lead + name = MAT_LEAD + " coin" + desc = "A heavy coin indeed. Shame it's worthless as anything other than a paperweight." + icon_state = "coin_lead" + +/obj/item/fake_coin/phoron + name = "solid " + MAT_PHORON + " coin" + desc = "Solid " + MAT_PHORON + ", pressed into a coin and laminated for safety. Go ahead, lick it." + icon_state = "coin_phoron" + +/obj/item/fake_coin/uranium + name = MAT_URANIUM + " coin" + desc = "A " + MAT_URANIUM + " coin. You probably don't want to store this in your pants pocket..." + icon_state = "coin_uranium" + +/obj/item/fake_coin/platinum + name = MAT_PLATINUM + " coin" + desc = "A shiny " + MAT_PLATINUM + " coin. Truth is, the game was rigged from the start." + icon_state = "coin_platinum" + +/obj/item/fake_coin/morphium + name = MAT_MORPHIUM + " coin" + desc = "Solid " + MAT_MORPHIUM + ", made into a coin. Extravagant is putting it lightly." + icon_state = "coin_morphium" + +/obj/item/fake_coin/aluminium + name = MAT_ALUMINIUM + " coin" + desc = "Someone decided to make a coin out of" + MAT_ALUMINIUM + ". Now your wallet can be lighter than ever." + icon_state = "coin_aluminium" + +/obj/item/fake_coin/verdantium + name = MAT_VERDANTIUM + " coin" + desc = "Shiny green " + MAT_VERDANTIUM + ", pressed into a coin. It almost seems to glimmer under starlight." + icon_state = "coin_verdantium" + +/obj/item/fake_coin/attack_self(mob/user as mob) + var/result = rand(1, sides) + var/comment = "" + if(result == 1) + comment = "tails" + else if(result == 2) + comment = "heads" + user.visible_message(span_notice("[user] has thrown \the [src]. It lands on [comment]!"), \ + span_notice("You throw \the [src]. It lands on [comment]!")) diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 44e85abeff..2a003ac29c 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -655,12 +655,16 @@ icon_state = "rup" /obj/random/coin/item_to_spawn() - return pick(prob(5);/obj/item/coin/silver, + return pick(prob(7);/obj/item/coin/copper, + prob(5);/obj/item/coin/silver, + prob(5);/obj/item/coin/steel, prob(3);/obj/item/coin/iron, prob(4);/obj/item/coin/gold, + prob(3);/obj/item/coin/titanium, prob(3);/obj/item/coin/phoron, prob(1);/obj/item/coin/uranium, prob(2);/obj/item/coin/platinum, + prob(2);/obj/item/coin/lead, prob(1);/obj/item/coin/diamond) //VOREStation Add Start diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm index de9a69226f..83d30b92c6 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general.dm @@ -30,6 +30,33 @@ display_name = "deck of cards" path = /obj/item/deck/cards +/datum/gear/fake_coin + display_name = "coin selection" + description = "A small piece of metal often exchanged for goods and services, but no longer considered legal tender in most jurisdictions. Doesn't look like it'll go in the coin slot of vending machines." + path = /obj/item/fake_coin/silver + +/datum/gear/fake_coin/New() + ..() + var/cointype = list() + cointype["gold"] = /obj/item/fake_coin/gold + cointype["silver"] = /obj/item/fake_coin/silver + cointype["copper"] = /obj/item/fake_coin/copper + cointype["diamond"] = /obj/item/fake_coin/diamond + cointype["graphite"] = /obj/item/fake_coin/graphite + cointype["iron"] = /obj/item/fake_coin/iron + cointype["steel"] = /obj/item/fake_coin/steel + cointype["durasteel"] = /obj/item/fake_coin/durasteel + cointype["plasteel"] = /obj/item/fake_coin/plasteel + cointype["titanium"] = /obj/item/fake_coin/titanium + cointype["lead"] = /obj/item/fake_coin/lead + cointype["phoron"] = /obj/item/fake_coin/phoron + cointype["uranium"] = /obj/item/fake_coin/uranium + cointype["platinum"] = /obj/item/fake_coin/platinum + cointype["morphium"] = /obj/item/fake_coin/morphium + cointype["aluminium"] = /obj/item/fake_coin/aluminium + cointype["verdantium"] = /obj/item/fake_coin/verdantium + gear_tweaks += new/datum/gear_tweak/path(cointype) + /datum/gear/tarot display_name = "deck of tarot cards" path = /obj/item/deck/tarot diff --git a/code/modules/economy/coins.dm b/code/modules/economy/coins.dm index 1d29b16061..36690bd59c 100644 --- a/code/modules/economy/coins.dm +++ b/code/modules/economy/coins.dm @@ -1,7 +1,7 @@ /*****************************Coin********************************/ /obj/item/coin - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/coins.dmi' name = "Coin" desc = "A simple coin you can flip." icon_state = "coin" @@ -15,56 +15,109 @@ drop_sound = 'sound/items/drop/ring.ogg' pickup_sound = 'sound/items/pickup/ring.ogg' -/obj/item/coin/New() +/obj/item/coin/Initialize(mapload) + . = ..() randpixel_xy() /obj/item/coin/gold - name = "gold coin" + name = MAT_GOLD + " coin" + desc = "A shiny " + MAT_GOLD + " coin. Just like in the old movies with pirates!" icon_state = "coin_gold" matter = list(MAT_GOLD = 250) /obj/item/coin/silver - name = "silver coin" + name = MAT_SILVER + " coin" + desc = "A shiny " + MAT_SILVER + " coin. You can almost see your reflection in it. Unless you're a vampire." icon_state = "coin_silver" matter = list(MAT_SILVER = 250) +/obj/item/coin/copper + name = MAT_COPPER + " coin" + desc = "A sturdy " + MAT_COPPER + " coin. The preferred tender of people who like to make other people count a lot." + icon_state = "coin_copper" + matter = list(MAT_COPPER = 250) + /obj/item/coin/diamond - name = "diamond coin" + name = MAT_DIAMOND + " coin" + desc = "A coin made of solid " + MAT_DIAMOND + ". Carbon, really, but who's counting?" // me, I'm counting icon_state = "coin_diamond" matter = list(MAT_DIAMOND = 250) +/obj/item/coin/graphite + name = MAT_GRAPHITE + " coin" + desc = "A small pressed plaque of " + MAT_GRAPHITE + ". This seems... impractical. Maybe you could use it as a pencil in a pinch?" + icon_state = "coin_graphite" + matter = list(MAT_GRAPHITE = 250) + /obj/item/coin/iron - name = "iron coin" + name = MAT_IRON + " coin" + desc = "A dull " + MAT_IRON + " coin. Not that it's boring, it's just a bit plain." icon_state = "coin_iron" matter = list(MAT_IRON = 250) +/obj/item/coin/steel + name = MAT_STEEL + " coin" + desc = "A plain " + MAT_STEEL + " coin. You'd think they'd make more coins out of this, considering how plentiful it is." + icon_state = "coin_steel" + matter = list(MAT_STEEL = 250) + +/obj/item/coin/durasteel + name = MAT_DURASTEEL + " coin" + desc = "A shiny " + MAT_DURASTEEL + " coin. Keep it in your breast pocket, maybe it'll stop a bullet someday." + icon_state = "coin_durasteel" + matter = list(MAT_DURASTEEL = 250) + +/obj/item/coin/plasteel + name = MAT_PLASTEEL + " coin" + desc = "Someone made a coin out of " + MAT_PLASTEEL + ". Now why would they do that?" + icon_state = "coin_plasteel" + matter = list(MAT_PLASTEEL = 250) + +/obj/item/coin/titanium + name = MAT_TITANIUM + " coin" + desc = "A shiny " + MAT_TITANIUM + " coin with some commemorative markings." + icon_state = "coin_titanium" + matter = list(MAT_TITANIUM = 250) + +/obj/item/coin/lead + name = MAT_LEAD + " coin" + desc = "A heavy coin indeed. Shame it's worthless as anything other than a paperweight." + icon_state = "coin_lead" + matter = list(MAT_LEAD = 250) + /obj/item/coin/phoron - name = "solid phoron coin" + name = "solid " + MAT_PHORON + " coin" + desc = "Solid " + MAT_PHORON + ", pressed into a coin and laminated for safety. Go ahead, lick it." icon_state = "coin_phoron" matter = list(MAT_PHORON = 250) /obj/item/coin/uranium - name = "uranium coin" + name = MAT_URANIUM + " coin" + desc = "A " + MAT_URANIUM + " coin. You probably don't want to store this in your pants pocket..." icon_state = "coin_uranium" matter = list(MAT_URANIUM = 250) /obj/item/coin/platinum - name = "platinum coin" - icon_state = "coin_adamantine" + name = MAT_PLATINUM + " coin" + desc = "A shiny " + MAT_PLATINUM + " coin. Truth is, the game was rigged from the start." + icon_state = "coin_platinum" matter = list(MAT_GOLD = 250) /obj/item/coin/morphium - name = "morphium coin" + name = MAT_MORPHIUM + " coin" + desc = "Solid " + MAT_MORPHIUM + ", made into a coin. Extravagant is putting it lightly." icon_state = "coin_morphium" matter = list(MAT_MORPHIUM = 250) /obj/item/coin/aluminium - name = "aluminium coin" + name = MAT_ALUMINIUM + " coin" + desc = "Someone decided to make a coin out of" + MAT_ALUMINIUM + ". Now your wallet can be lighter than ever." icon_state = "coin_aluminium" matter = list(MAT_ALUMINIUM = 250) /obj/item/coin/verdantium - name = "verdantium coin" + name = MAT_VERDANTIUM + " coin" + desc = "Shiny green " + MAT_VERDANTIUM + ", pressed into a coin. It almost seems to glimmer under starlight." icon_state = "coin_verdantium" matter = list(MAT_VERDANTIUM = 250) diff --git a/code/modules/economy/mint.dm b/code/modules/economy/mint.dm index ecbc957a68..fc20a5eb49 100644 --- a/code/modules/economy/mint.dm +++ b/code/modules/economy/mint.dm @@ -1,39 +1,28 @@ /**********************Mint**************************/ /obj/machinery/mineral/mint - name = "Coin press" - desc = "A relatively crude hand-operated coin press that turns sheets (or ingots, as the case may be) of materials into fresh coins. They're probably not going to be considered legal tender in most polities, but you might fool a vending machine with one..?

It looks like it'll accept silver, gold, diamond, iron, solid phoron, and uranium." + name = "coin press" + desc = "A relatively crude hand-operated coin press that turns sheets (or ingots, as the case may be) of materials into fresh coins. They're probably not going to be considered legal tender in most polities, but you might fool a vending machine with one..?" icon = 'icons/obj/stationobjs.dmi' icon_state = "coinpress0" density = TRUE anchored = TRUE var/coinsToProduce = 6 //how many coins do we make per sheet? a sheet is 2000 units whilst a coin is 250, and some material should be lost in the process - var/list/validMats = list(MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_IRON, MAT_PHORON, MAT_URANIUM) //what's valid stuff to make coins out of? /obj/machinery/mineral/mint/attackby(obj/item/stack/material/M, mob/user) - if(M.default_type in validMats) + if(!anchored) + user.visible_message(span_warning("\The [src] must be properly secured to operate!")) + return + if(!M.coin_type) + user.visible_message(span_notice("You can't make coins out of that.")) + return + else if(M.coin_type) user.visible_message("[user] starts to feed a sheet of [M.default_type] into \the [src].") while(M.amount > 0) icon_state = "coinpress1" if(do_after(user, 2 SECONDS, src)) M.amount-- - if(M.default_type == MAT_SILVER) - while(coinsToProduce-- > 0) - new /obj/item/coin/silver(user.loc) - else if(M.default_type == MAT_GOLD) - while(coinsToProduce-- > 0) - new /obj/item/coin/gold(user.loc) - else if(M.default_type == MAT_DIAMOND) - while(coinsToProduce-- > 0) - new /obj/item/coin/diamond(user.loc) - else if(M.default_type == MAT_IRON) - while(coinsToProduce-- > 0) - new /obj/item/coin/iron(user.loc) - else if(M.default_type == MAT_PHORON) - while(coinsToProduce-- > 0) - new /obj/item/coin/phoron(user.loc) - else if(M.default_type == MAT_URANIUM) - while(coinsToProduce-- > 0) - new /obj/item/coin/uranium(user.loc) + while(coinsToProduce-- > 0) + new M.coin_type(user.loc) src.visible_message(span_notice("\The [src] rattles and dispenses several [M.default_type] coins!")) coinsToProduce = initial(coinsToProduce) if(M.amount == 0) @@ -45,5 +34,3 @@ to_chat(user,span_warning("\The [src] is hand-operated and requires your full attention!")) icon_state = "coinpress0" break - else - src.visible_message(span_notice("\The [src] doesn't look like it'll accept that material.")) diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm index 9d8afd4251..79446f2f5f 100644 --- a/code/modules/economy/vending.dm +++ b/code/modules/economy/vending.dm @@ -231,6 +231,9 @@ GLOBAL_LIST_EMPTY(vending_products) if(panel_open) attack_hand(user) return + else if(istype(W, /obj/item/fake_coin) && has_premium) + to_chat(user, span_notice("\The [W] doesn't fit into the coin slot on \the [src].")) + return else if(istype(W, /obj/item/coin) && has_premium) user.drop_item() W.forceMove(src) diff --git a/code/modules/materials/sheets/_sheets.dm b/code/modules/materials/sheets/_sheets.dm index 0c7386bc32..9d9a548ede 100644 --- a/code/modules/materials/sheets/_sheets.dm +++ b/code/modules/materials/sheets/_sheets.dm @@ -16,6 +16,7 @@ var/default_type = MAT_STEEL var/datum/material/material + var/coin_type = null var/perunit = SHEET_MATERIAL_AMOUNT var/apply_colour //temp pending icon rewrite drop_sound = 'sound/items/drop/axe.ogg' diff --git a/code/modules/materials/sheets/gems.dm b/code/modules/materials/sheets/gems.dm index 2b2c49d3b6..a71135f000 100644 --- a/code/modules/materials/sheets/gems.dm +++ b/code/modules/materials/sheets/gems.dm @@ -5,6 +5,7 @@ no_variants = FALSE drop_sound = 'sound/items/drop/glass.ogg' pickup_sound = 'sound/items/pickup/glass.ogg' + coin_type = /obj/item/coin/phoron /obj/item/stack/material/diamond name = MAT_DIAMOND @@ -12,6 +13,7 @@ default_type = MAT_DIAMOND drop_sound = 'sound/items/drop/glass.ogg' pickup_sound = 'sound/items/pickup/glass.ogg' + coin_type = /obj/item/coin/diamond /obj/item/stack/material/painite name = MAT_PAINITE @@ -53,6 +55,7 @@ default_type = MAT_VERDANTIUM no_variants = FALSE apply_colour = TRUE + coin_type = /obj/item/coin/verdantium /obj/item/stack/material/morphium name = MAT_MORPHIUM @@ -61,6 +64,7 @@ default_type = MAT_MORPHIUM no_variants = FALSE apply_colour = TRUE + coin_type = /obj/item/coin/morphium /obj/item/stack/material/glamour name = MAT_GLAMOUR diff --git a/code/modules/materials/sheets/metals/metal.dm b/code/modules/materials/sheets/metals/metal.dm index b80408d871..cb7cd3126b 100644 --- a/code/modules/materials/sheets/metals/metal.dm +++ b/code/modules/materials/sheets/metals/metal.dm @@ -4,6 +4,7 @@ default_type = MAT_STEEL no_variants = FALSE apply_colour = TRUE + coin_type = /obj/item/coin/steel /obj/item/stack/material/plasteel name = MAT_PLASTEEL @@ -11,6 +12,7 @@ default_type = MAT_PLASTEEL no_variants = FALSE apply_colour = TRUE + coin_type = /obj/item/coin/plasteel /obj/item/stack/material/plasteel/rebar name = MAT_PLASTEELREBAR @@ -32,6 +34,7 @@ default_type = MAT_DURASTEEL no_variants = FALSE apply_colour = TRUE + coin_type = /obj/item/coin/durasteel /obj/item/stack/material/titanium name = MAT_TITANIUM @@ -40,6 +43,7 @@ item_state = "sheet-silver" default_type = MAT_TITANIUM no_variants = FALSE + coin_type = /obj/item/coin/titanium /obj/item/stack/material/iron name = MAT_IRON @@ -47,6 +51,7 @@ default_type = MAT_IRON apply_colour = 1 no_variants = FALSE + coin_type = /obj/item/coin/iron /obj/item/stack/material/lead name = MAT_LEAD @@ -54,6 +59,7 @@ default_type = MAT_LEAD apply_colour = 1 no_variants = FALSE + coin_type = /obj/item/coin/lead /obj/item/stack/material/gold name = MAT_GOLD @@ -61,6 +67,7 @@ default_type = MAT_GOLD no_variants = FALSE apply_colour = TRUE + coin_type = /obj/item/coin/gold /obj/item/stack/material/silver name = MAT_SILVER @@ -68,6 +75,7 @@ default_type = MAT_SILVER no_variants = FALSE apply_colour = TRUE + coin_type = /obj/item/coin/silver //Valuable resource, cargo can sell it. /obj/item/stack/material/platinum @@ -76,12 +84,14 @@ default_type = MAT_PLATINUM no_variants = FALSE apply_colour = TRUE + coin_type = /obj/item/coin/platinum /obj/item/stack/material/uranium name = MAT_URANIUM icon_state = "sheet-uranium" default_type = MAT_URANIUM no_variants = FALSE + coin_type = /obj/item/coin/uranium //Extremely valuable to Research. /obj/item/stack/material/mhydrogen @@ -119,6 +129,7 @@ default_type = MAT_GRAPHITE apply_colour = 1 no_variants = FALSE + coin_type = /obj/item/coin/graphite /obj/item/stack/material/bronze name = MAT_BRONZE @@ -143,6 +154,7 @@ default_type = MAT_COPPER apply_colour = 1 no_variants = FALSE + coin_type = /obj/item/coin/copper /obj/item/stack/material/aluminium name = MAT_ALUMINIUM @@ -151,3 +163,4 @@ default_type = MAT_ALUMINIUM apply_colour = 1 no_variants = FALSE + coin_type = /obj/item/coin/aluminium diff --git a/icons/obj/coins.dmi b/icons/obj/coins.dmi new file mode 100644 index 0000000000..7eedcd9746 Binary files /dev/null and b/icons/obj/coins.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index a7598b39a5..a7e0199f9d 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 970d3dc0eb..23e0684355 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1432,6 +1432,7 @@ #include "code\game\objects\items\stacks\tiles\fifty_spawner_tiles.dm" #include "code\game\objects\items\stacks\tiles\tile_types.dm" #include "code\game\objects\items\toys\balls_vr.dm" +#include "code\game\objects\items\toys\fake_coin.dm" #include "code\game\objects\items\toys\godfigures.dm" #include "code\game\objects\items\toys\mech_toys.dm" #include "code\game\objects\items\toys\target_toy.dm"