diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index d2195542e43..4da2014f6c9 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -14725,7 +14725,7 @@
/area/maintenance/gambling_den)
"aRl" = (
/obj/structure/table/wood,
-/obj/item/toy/cards/deck/syndicate,
+/obj/item/deck/cards/syndicate,
/turf/simulated/floor/plasteel/grimy,
/area/maintenance/gambling_den)
"aRm" = (
@@ -93702,7 +93702,7 @@
"qpZ" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table,
-/obj/item/toy/cards/deck,
+/obj/item/deck/cards,
/turf/simulated/floor/plating,
/area/maintenance/fore)
"qqh" = (
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 98cfc42b0db..c60071fba8b 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -7197,7 +7197,7 @@
/area/security/permabrig)
"aFQ" = (
/obj/structure/table,
-/obj/item/toy/cards/deck,
+/obj/item/deck/cards,
/obj/item/storage/fancy/cigarettes/cigpack_robust{
pixel_x = -4;
pixel_y = 6
@@ -8667,7 +8667,7 @@
"aJF" = (
/obj/structure/disposalpipe/segment,
/obj/structure/table,
-/obj/item/toy/cards/deck,
+/obj/item/deck/cards,
/turf/simulated/floor/plasteel,
/area/crew_quarters/dorms)
"aJG" = (
@@ -10982,7 +10982,7 @@
/area/quartermaster/storage)
"aPF" = (
/obj/structure/table/wood/poker,
-/obj/item/toy/cards/deck{
+/obj/item/deck/cards{
pixel_y = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -28186,7 +28186,7 @@
})
"bEA" = (
/obj/structure/table/wood/poker,
-/obj/item/toy/cards/deck{
+/obj/item/deck/cards{
pixel_y = 4
},
/turf/simulated/floor/wood,
@@ -33664,7 +33664,7 @@
/turf/simulated/floor/carpet,
/area/security/vacantoffice)
"bUF" = (
-/obj/item/toy/cards/deck,
+/obj/item/deck/cards,
/obj/structure/table/wood,
/turf/simulated/floor/carpet,
/area/security/vacantoffice)
@@ -35466,7 +35466,7 @@
/turf/simulated/floor/plasteel,
/area/maintenance/starboard)
"bZe" = (
-/obj/item/toy/cards/deck,
+/obj/item/deck/cards,
/obj/structure/table/wood,
/obj/structure/cable/yellow{
d1 = 1;
@@ -45895,7 +45895,7 @@
/area/medical/morgue)
"cEl" = (
/obj/structure/table/wood/poker,
-/obj/item/toy/cards/deck,
+/obj/item/deck/cards,
/turf/simulated/floor/wood,
/area/maintenance/apmaint)
"cEm" = (
@@ -49046,7 +49046,7 @@
"cOE" = (
/obj/structure/table/wood/poker,
/obj/effect/decal/cleanable/dirt,
-/obj/item/toy/cards/deck,
+/obj/item/deck/cards,
/turf/simulated/floor/wood,
/area/maintenance/apmaint)
"cOF" = (
@@ -52097,7 +52097,7 @@
/area/space)
"cZq" = (
/obj/structure/table,
-/obj/item/toy/cards/deck{
+/obj/item/deck/cards{
pixel_y = 4
},
/turf/simulated/floor/plasteel{
@@ -59355,7 +59355,7 @@
/area/security/permabrig)
"gcI" = (
/obj/structure/table,
-/obj/item/toy/cards/deck,
+/obj/item/deck/cards,
/turf/simulated/floor/plasteel,
/area/security/permabrig)
"gdb" = (
@@ -73055,7 +73055,7 @@
/area/crew_quarters/hor)
"mWI" = (
/obj/structure/table/wood/poker,
-/obj/item/toy/cards/deck{
+/obj/item/deck/cards{
pixel_y = 4
},
/obj/structure/disposalpipe/segment{
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
index 7f57802983f..7b32afcd4dd 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
@@ -153,7 +153,7 @@
"aC" = (
/obj/structure/table,
/obj/effect/decal/cleanable/dirt,
-/obj/item/toy/cards/deck,
+/obj/item/deck/cards,
/obj/item/folder/blue,
/obj/item/pen,
/turf/simulated/floor/plasteel,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
index c22d7924dcf..02fa2b034f5 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
@@ -6699,7 +6699,7 @@
})
"oP" = (
/obj/structure/table/wood,
-/obj/item/toy/cards/deck/black,
+/obj/item/deck/cards/black,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
icon_state = "bar"
diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm
index 7a429eab07e..24d3086bbec 100644
--- a/_maps/map_files/generic/centcomm.dmm
+++ b/_maps/map_files/generic/centcomm.dmm
@@ -4201,7 +4201,7 @@
pixel_x = 5;
pixel_y = -2
},
-/obj/item/toy/cards/deck/syndicate{
+/obj/item/deck/cards/syndicate{
pixel_x = -6;
pixel_y = 6
},
@@ -5018,7 +5018,7 @@
/area/admin)
"rs" = (
/obj/structure/table/wood/poker,
-/obj/item/toy/cards/deck/black,
+/obj/item/deck/cards/black,
/obj/item/lighter/zippo/nt_rep,
/turf/simulated/floor/transparent/glass,
/area/tdome/tdomeobserve)
@@ -6565,7 +6565,7 @@
"wV" = (
/obj/structure/table,
/obj/machinery/recharger,
-/obj/item/toy/cards/deck/syndicate/black,
+/obj/item/deck/cards/syndicate/black,
/turf/simulated/floor/plasteel/dark,
/area/admin)
"wW" = (
@@ -6891,7 +6891,7 @@
/area/admin)
"Ad" = (
/obj/structure/table/wood,
-/obj/item/toy/cards/deck/syndicate,
+/obj/item/deck/cards/syndicate,
/turf/simulated/floor/wood,
/area/admin)
"Ae" = (
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 0a1fd85a665..4fe01b8eeda 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -1651,7 +1651,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, making them lethal weapons both when wielded as a blade and when thrown. \
You can also play card games with them."
reference = "SPC"
- item = /obj/item/toy/cards/deck/syndicate
+ item = /obj/item/deck/cards/syndicate
cost = 1
excludefrom = list(/datum/game_mode/nuclear)
surplus = 40
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 7b9c001a0d4..7e373b2657f 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -1141,7 +1141,7 @@
/obj/item/ammo_box/foambox/riot = 20,
/obj/item/toy/katana = 10,
/obj/item/twohanded/dualsaber/toy = 5,
- /obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item
+ /obj/item/deck/cards/syndicate = 10) //Gambling and it hurts, making it a +18 item
armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
resistance_flags = FIRE_PROOF
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index 8c4a5644ee2..28fef776889 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -154,7 +154,7 @@
/obj/item/storage/box/syndie_kit/space = 2,
/obj/item/multitool/ai_detect = 2,
/obj/item/implanter/storage = 1,
- /obj/item/toy/cards/deck/syndicate = 2,
+ /obj/item/deck/cards/syndicate = 2,
/obj/item/storage/secure/briefcase/syndie = 2,
/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 2,
/obj/item/storage/pill_bottle/fakedeath = 2,
diff --git a/code/game/objects/effects/spawners/random_spawners.dm b/code/game/objects/effects/spawners/random_spawners.dm
index 3966def5f56..0d5234b4748 100644
--- a/code/game/objects/effects/spawners/random_spawners.dm
+++ b/code/game/objects/effects/spawners/random_spawners.dm
@@ -222,7 +222,7 @@
result = list(/datum/nothing = 13,
/obj/item/storage/toolbox/syndicate = 1,
/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 1,
- /obj/item/toy/cards/deck/syndicate = 1,
+ /obj/item/deck/cards/syndicate = 1,
/obj/item/storage/secure/briefcase/syndie = 1,
/obj/item/toy/syndicateballoon = 1,
/obj/item/soap/syndie = 1,
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 0a2ec776278..a1d7ba04b2d 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -310,373 +310,6 @@
new /obj/item/toy/snappop/phoenix(get_turf(src))
qdel(src)
-/*
-|| A Deck of Cards for playing various games of chance ||
-*/
-
-
-
-/obj/item/toy/cards
- resistance_flags = FLAMMABLE
- max_integrity = 50
- var/parentdeck = null
- var/deckstyle = "nanotrasen"
- var/card_hitsound = null
- var/card_force = 0
- var/card_throwforce = 0
- var/card_throw_speed = 4
- var/card_throw_range = 20
- var/list/card_attack_verb = list("attacked")
-
-/obj/item/toy/cards/New()
- ..()
-
-/obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj) // Applies variables for supporting multiple types of card deck
- if(!istype(sourceobj))
- return
-
-/obj/item/toy/cards/deck
- name = "deck of cards"
- desc = "A deck of space-grade playing cards."
- icon = 'icons/obj/toy.dmi'
- deckstyle = "nanotrasen"
- icon_state = "deck_nanotrasen_full"
- w_class = WEIGHT_CLASS_SMALL
- var/cooldown = 0
- var/list/cards = list()
-
-/obj/item/toy/cards/deck/New()
- ..()
- icon_state = "deck_[deckstyle]_full"
- for(var/i in 2 to 10)
- cards += "[i] of Hearts"
- cards += "[i] of Spades"
- cards += "[i] of Clubs"
- cards += "[i] of Diamonds"
- cards += "King of Hearts"
- cards += "King of Spades"
- cards += "King of Clubs"
- cards += "King of Diamonds"
- cards += "Queen of Hearts"
- cards += "Queen of Spades"
- cards += "Queen of Clubs"
- cards += "Queen of Diamonds"
- cards += "Jack of Hearts"
- cards += "Jack of Spades"
- cards += "Jack of Clubs"
- cards += "Jack of Diamonds"
- cards += "Ace of Hearts"
- cards += "Ace of Spades"
- cards += "Ace of Clubs"
- cards += "Ace of Diamonds"
-
-/obj/item/toy/cards/deck/attack_hand(mob/user as mob)
- var/choice = null
- if(cards.len == 0)
- icon_state = "deck_[deckstyle]_empty"
- to_chat(user, "There are no more cards to draw.")
- return
- var/obj/item/toy/cards/singlecard/H = new/obj/item/toy/cards/singlecard(user.loc)
- choice = cards[1]
- H.cardname = choice
- H.parentdeck = src
- var/O = src
- H.apply_card_vars(H,O)
- cards -= choice
- H.pickup(user)
- user.put_in_active_hand(H)
- visible_message("[user] draws a card from the deck.", "You draw a card from the deck.")
- update_icon()
-
-/obj/item/toy/cards/deck/attack_self(mob/user as mob)
- if(cooldown < world.time - 50)
- cards = shuffle(cards)
- playsound(user, 'sound/items/cardshuffle.ogg', 50, 1)
- user.visible_message("[user] shuffles the deck.", "You shuffle the deck.")
- cooldown = world.time
-
-/obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
- ..()
- if(istype(C))
- if(C.parentdeck == src)
- if(!user.unEquip(C))
- to_chat(user, "The card is stuck to your hand, you can't add it to the deck!")
- return
- cards += C.cardname
- user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.")
- qdel(C)
- else
- to_chat(user, "You can't mix cards from other decks.")
- update_icon()
-
-
-/obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, params)
- ..()
- if(istype(C))
- if(C.parentdeck == src)
- if(!user.unEquip(C))
- to_chat(user, "The hand of cards is stuck to your hand, you can't add it to the deck!")
- return
- cards += C.currenthand
- user.visible_message("[user] puts [user.p_their()] hand of cards in the deck.", "You put the hand of cards in the deck.")
- qdel(C)
- else
- to_chat(user, "You can't mix cards from other decks.")
- update_icon()
-
-/obj/item/toy/cards/deck/MouseDrop(atom/over_object)
- var/mob/M = usr
- if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
- return
- if(Adjacent(usr))
- if(over_object == M && loc != M)
- M.put_in_hands(src)
- to_chat(usr, "You pick up the deck.")
-
- else if(istype(over_object, /obj/screen))
- switch(over_object.name)
- if("l_hand")
- if(!remove_item_from_storage(M))
- M.unEquip(src)
- M.put_in_l_hand(src)
- to_chat(usr, "You pick up the deck.")
- if("r_hand")
- if(!remove_item_from_storage(M))
- M.unEquip(src)
- M.put_in_r_hand(src)
- to_chat(usr, "You pick up the deck.")
- else
- to_chat(usr, "You can't reach it from here.")
-
-/obj/item/toy/cards/deck/update_icon()
- switch(cards.len)
- if(0)
- icon_state = "deck_[deckstyle]_empty"
- if(1 to 10)
- icon_state = "deck_[deckstyle]_low"
- if(11 to 26)
- icon_state = "deck_[deckstyle]_half"
- else
- icon_state = "deck_[deckstyle]_full"
-
-/obj/item/toy/cards/cardhand
- name = "hand of cards"
- desc = "A number of cards not in a deck, customarily held in ones hand."
- icon = 'icons/obj/toy.dmi'
- icon_state = "nanotrasen_hand2"
- w_class = WEIGHT_CLASS_TINY
- var/list/currenthand = list()
- var/choice = null
-
-
-/obj/item/toy/cards/cardhand/attack_self(mob/user as mob)
- user.set_machine(src)
- interact(user)
-
-/obj/item/toy/cards/cardhand/interact(mob/user)
- var/dat = "You have:
"
- for(var/t in currenthand)
- dat += "A [t].
"
- dat += "Which card will you remove next?"
- var/datum/browser/popup = new(user, "cardhand", "Hand of Cards", 400, 240)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
- popup.set_content(dat)
- popup.open()
-
-
-/obj/item/toy/cards/cardhand/Topic(href, href_list)
- if(..())
- return
- if(usr.stat || !ishuman(usr) || !usr.canmove)
- return
- var/mob/living/carbon/human/cardUser = usr
- var/O = src
- if(href_list["pick"])
- if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src)
- var/choice = href_list["pick"]
- var/obj/item/toy/cards/singlecard/C = new/obj/item/toy/cards/singlecard(cardUser.loc)
- currenthand -= choice
- C.parentdeck = src.parentdeck
- C.cardname = choice
- C.apply_card_vars(C,O)
- C.pickup(cardUser)
- cardUser.put_in_any_hand_if_possible(C)
- cardUser.visible_message("[cardUser] draws a card from [cardUser.p_their()] hand.", "You take the [C.cardname] from your hand.")
-
- interact(cardUser)
- update_icon()
- if(currenthand.len == 1)
- var/obj/item/toy/cards/singlecard/N = new/obj/item/toy/cards/singlecard(src.loc)
- N.parentdeck = src.parentdeck
- N.cardname = src.currenthand[1]
- N.apply_card_vars(N,O)
- cardUser.unEquip(src)
- N.pickup(cardUser)
- cardUser.put_in_any_hand_if_possible(N)
- to_chat(cardUser, "You also take [currenthand[1]] and hold it.")
- cardUser << browse(null, "window=cardhand")
- qdel(src)
- return
-
-/obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
- if(istype(C))
- if(C.parentdeck == parentdeck)
- currenthand += C.cardname
- user.unEquip(C)
- user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [C.cardname] to your hand.")
- interact(user)
- update_icon()
- qdel(C)
- else
- to_chat(user, "You can't mix cards from other decks.")
-
-/obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
- ..()
- newobj.deckstyle = sourceobj.deckstyle
- newobj.icon_state = "[deckstyle]_hand2" // Another dumb hack, without this the hand is invisible (or has the default deckstyle) until another card is added.
- newobj.card_hitsound = sourceobj.card_hitsound
- newobj.card_force = sourceobj.card_force
- newobj.card_throwforce = sourceobj.card_throwforce
- newobj.card_throw_speed = sourceobj.card_throw_speed
- newobj.card_throw_range = sourceobj.card_throw_range
- newobj.card_attack_verb = sourceobj.card_attack_verb
- newobj.resistance_flags = sourceobj.resistance_flags
-
-
-/obj/item/toy/cards/singlecard
- name = "card"
- desc = "a card"
- icon = 'icons/obj/toy.dmi'
- icon_state = "singlecard_nanotrasen_down"
- w_class = WEIGHT_CLASS_TINY
- var/cardname = null
- var/flipped = 0
- pixel_x = -5
-
-
-/obj/item/toy/cards/singlecard/examine(mob/user)
- . = ..()
- if(get_dist(user, src) <= 0)
- if(ishuman(user))
- var/mob/living/carbon/human/cardUser = user
- if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src)
- cardUser.visible_message("[cardUser] checks [cardUser.p_their()] card.", "The card reads: [src.cardname]")
- else
- . += "You need to have the card in your hand to check it."
-
-
-/obj/item/toy/cards/singlecard/verb/Flip()
- set name = "Flip Card"
- set category = "Object"
- set src in range(1)
- if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
- return
- if(!flipped)
- flipped = 1
- if(cardname)
- icon_state = "sc_[cardname]_[deckstyle]"
- name = cardname
- else
- icon_state = "sc_Ace of Spades_[deckstyle]"
- name = "What Card"
- pixel_x = 5
- else
- flipped = 0
- icon_state = "singlecard_down_[deckstyle]"
- name = "card"
- pixel_x = -5
-
-/obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
- if(istype(I, /obj/item/toy/cards/singlecard/))
- var/obj/item/toy/cards/singlecard/C = I
- if(C.parentdeck == parentdeck)
- var/obj/item/toy/cards/cardhand/H = new/obj/item/toy/cards/cardhand(user.loc)
- H.currenthand += C.cardname
- H.currenthand += cardname
- H.parentdeck = C.parentdeck
- H.apply_card_vars(H,C)
- user.unEquip(C)
- H.pickup(user)
- user.put_in_active_hand(H)
- to_chat(user, "You combine the [C.cardname] and the [cardname] into a hand.")
- qdel(C)
- qdel(src)
- else
- to_chat(user, "You can't mix cards from other decks.")
-
- if(istype(I, /obj/item/toy/cards/cardhand/))
- var/obj/item/toy/cards/cardhand/H = I
- if(H.parentdeck == parentdeck)
- H.currenthand += cardname
- user.unEquip(src)
- user.visible_message("[user] adds a card to [user.p_their()] hand.", "You add the [cardname] to your hand.")
- H.interact(user)
- H.update_icon()
- qdel(src)
- else
- to_chat(user, "You can't mix cards from other decks.")
-
-/obj/item/toy/cards/cardhand/update_icon()
- switch(currenthand.len)
- if(0 to 1)
- return
- if(2)
- icon_state = "[deckstyle]_hand2"
- if(3)
- icon_state = "[deckstyle]_hand3"
- if(4)
- icon_state = "[deckstyle]_hand4"
- else
- icon_state = "[deckstyle]_hand5"
-
-
-/obj/item/toy/cards/singlecard/attack_self(mob/user)
- if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
- return
- Flip()
-
-/obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newobj,obj/item/toy/cards/sourceobj)
- ..()
- newobj.deckstyle = sourceobj.deckstyle
- newobj.icon_state = "singlecard_down_[deckstyle]" // Without this the card is invisible until flipped. It's an ugly hack, but it works.
- newobj.card_hitsound = sourceobj.card_hitsound
- newobj.hitsound = newobj.card_hitsound
- newobj.card_force = sourceobj.card_force
- newobj.force = newobj.card_force
- newobj.card_throwforce = sourceobj.card_throwforce
- newobj.throwforce = newobj.card_throwforce
- newobj.card_throw_speed = sourceobj.card_throw_speed
- newobj.throw_speed = newobj.card_throw_speed
- newobj.card_throw_range = sourceobj.card_throw_range
- newobj.throw_range = newobj.card_throw_range
- newobj.card_attack_verb = sourceobj.card_attack_verb
- newobj.attack_verb = newobj.card_attack_verb
-
-
-/*
-|| Syndicate playing cards, for pretending you're Gambit and playing poker for the nuke disk. ||
-*/
-
-/obj/item/toy/cards/deck/syndicate
- name = "suspicious looking deck of cards"
- desc = "A deck of space-grade playing cards. They seem unusually rigid."
- deckstyle = "syndicate"
- card_hitsound = 'sound/weapons/bladeslice.ogg'
- card_force = 5
- card_throwforce = 10
- card_throw_speed = 3
- card_throw_range = 20
- card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut")
- resistance_flags = NONE
-
-/*
-|| Custom card decks ||
-*/
-/obj/item/toy/cards/deck/black
- deckstyle = "black"
-
-/obj/item/toy/cards/deck/syndicate/black
- deckstyle = "black"
/obj/item/toy/nuke
name = "\improper Nuclear Fission Explosive toy"
diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm
index ba96fc54aba..0fe0e010739 100644
--- a/code/game/objects/items/weapons/gift_wrappaper.dm
+++ b/code/game/objects/items/weapons/gift_wrappaper.dm
@@ -89,6 +89,8 @@
/obj/random/carp_plushie,
/obj/random/plushie,
/obj/random/figure,
+ /obj/item/deck/cards,
+ /obj/item/deck/cards/tiny,
/obj/item/toy/minimeteor,
/obj/item/toy/redbutton,
/obj/item/toy/figure/owl,
@@ -104,7 +106,6 @@
/obj/item/toy/flash,
/obj/item/toy/minigibber,
/obj/item/toy/nuke,
- /obj/item/toy/cards/deck,
/obj/item/toy/AI,
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/storage/box/fakesyndiesuit,
diff --git a/code/modules/arcade/prize_datums.dm b/code/modules/arcade/prize_datums.dm
index 8be89339134..1eec72019d1 100644
--- a/code/modules/arcade/prize_datums.dm
+++ b/code/modules/arcade/prize_datums.dm
@@ -81,6 +81,18 @@ GLOBAL_DATUM_INIT(global_prizes, /datum/prizes, new())
typepath = /obj/item/deck/cards
cost = 25
+/datum/prize_item/tiny_cards
+ name = "Deck of Tiny Cards"
+ desc = "Anyone fancy a tiny game of 52-card Pickup?"
+ typepath = /obj/item/deck/cards/tiny
+ cost = 25
+
+/datum/prize_item/double_tiny_cards
+ name = "Double Deck of Tiny Cards"
+ desc = "Anyone fancy a tiny game of 108-card Pickup?"
+ typepath = /obj/item/deck/cards/tiny/doublecards
+ cost = 50
+
/datum/prize_item/crayons
name = "Box of Crayons"
desc = "A six-pack of crayons, just like back in kindergarten."
diff --git a/code/modules/client/preference/loadout/loadout_general.dm b/code/modules/client/preference/loadout/loadout_general.dm
index 2355ccfd5bd..9e9b1dec44f 100644
--- a/code/modules/client/preference/loadout/loadout_general.dm
+++ b/code/modules/client/preference/loadout/loadout_general.dm
@@ -108,7 +108,7 @@
/datum/gear/doublecards
display_name = "Double deck of standard cards"
- path = /obj/item/deck/doublecards
+ path = /obj/item/deck/cards/doublecards
/datum/gear/tarot
display_name = "Deck of tarot cards"
diff --git a/code/modules/games/52card.dm b/code/modules/games/52card.dm
index 036df3dd0c3..dae75a924a1 100644
--- a/code/modules/games/52card.dm
+++ b/code/modules/games/52card.dm
@@ -6,45 +6,83 @@
/obj/item/deck/cards
name = "deck of cards"
desc = "A simple deck of playing cards."
- icon_state = "deck"
+ icon_state = "deck_nanotrasen_full"
+ card_style = "nanotrasen"
-/obj/item/deck/cards/New()
- ..()
- for(var/suit in list("spades","clubs","diamonds","hearts"))
+/obj/item/deck/cards/build_deck()
+ for(var/suit in list("Spades","Clubs","Diamonds","Hearts"))
+ var/card_appearance
var/colour
- if(suit == "spades" || suit == "clubs")
- colour = "black_"
- else
- colour = "red_"
-
- for(var/number in list("ace","two","three","four","five","six","seven","eight","nine","ten"))
- cards += new /datum/playingcard("[number] of [suit]", "[colour]num")
-
- for(var/number in list("jack","queen","king"))
- cards += new /datum/playingcard("[number] of [suit]", "[colour]col")
-
- for(var/i = 0, i<2, i++)
- cards += new /datum/playingcard("joker", "joker")
-
-/obj/item/deck/doublecards
- name = "double deck of cards"
- desc = "A simple deck of playing cards. Multiplied by two. Does not necessarily come with twice the fun."
- icon_state = "doubledeck"
-
-/obj/item/deck/doublecards/New()
- ..()
- for(var/f = 0, f<2, f++)
- for(var/suit in list("spades","clubs","diamonds","hearts"))
-
- var/colour
- if(suit == "spades" || suit == "clubs")
- colour = "black_"
+ var/rank
+ if(simple_deck)
+ if(suit in list("Spades","Clubs"))
+ colour = "black"
else
- colour = "red_"
- for(var/number in list("ace","two","three","four","five","six","seven","eight","nine","ten",))
- cards += new /datum/playingcard("[number] of [suit]", "[colour]num")
- for(var/number in list("jack","queen","king"))
- cards += new /datum/playingcard("[number] of [suit]", "[colour]col")
+ colour = "red"
+ for(var/number in list("Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"))
+ if(simple_deck)
+ if(number in list("Jack","Queen","King"))
+ rank = "col"
+ else
+ rank = "num"
+ card_appearance = "sc_[colour]_[rank]_[card_style]"
+ else
+ card_appearance = "sc_[number] of [suit]_[card_style]"
+ cards += new /datum/playingcard("[number] of [suit]", card_appearance, "singlecard_down_[card_style]")
- for(var/i = 0, i<2, i++)
- cards += new /datum/playingcard("joker", "joker")
+ for(var/jokers in 1 to 2)
+ cards += new /datum/playingcard("Joker", "sc_Joker_[card_style]", "singlecard_down_[card_style]")
+
+/obj/item/deck/cards/update_icon()
+ if(!length(cards))
+ icon_state = "deck_[card_style]_empty"
+ return
+ var/percent = round((length(cards) / deck_total) * 100) // Rounding due to switch freaking out
+ switch(percent)
+ if(0 to 20)
+ icon_state = "deck_[deck_style ? "[deck_style]_" : ""][card_style]_low"
+ if(21 to 50)
+ icon_state = "deck_[deck_style ? "[deck_style]_" : ""][card_style]_half"
+ else
+ icon_state = "deck_[deck_style ? "[deck_style]_" : ""][card_style]_full"
+
+/obj/item/deck/cards/doublecards
+ name = "double deck of cards"
+ icon_state = "deck_double_nanotrasen_full"
+ desc = "A simple deck of playing cards. Multiplied by two. Does not necessarily come with twice the fun."
+ deck_size = 2
+ deck_style = "double"
+
+/obj/item/deck/cards/syndicate
+ name = "suspicious looking deck of cards"
+ desc = "A deck of space-grade playing cards. They seem unusually rigid."
+ icon_state = "deck_syndicate_full"
+ card_style = "syndicate"
+ card_hitsound = 'sound/weapons/bladeslice.ogg'
+ card_force = 5
+ card_throwforce = 10
+ card_throw_speed = 3
+ card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut")
+ card_resistance_flags = NONE
+
+/obj/item/deck/cards/black
+ card_style = "black"
+
+/obj/item/deck/cards/syndicate/black
+ card_style = "black"
+
+/obj/item/deck/cards/tiny
+ name = "deck of tiny cards"
+ desc = "A simple deck of tiny playing cards."
+ icon_state = "deck"
+ card_style = "simple"
+ simple_deck = TRUE
+
+/obj/item/deck/cards/tiny/update_icon()
+ return
+
+/obj/item/deck/cards/tiny/doublecards
+ name = "double deck of tiny cards"
+ desc = "A simple deck of tiny playing cards. Multiplied by two. Does not necessarily come with twice the fun."
+ icon_state = "doubledeck"
+ deck_size = 2
diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm
index 599eef5b2f0..e8b08ccb402 100644
--- a/code/modules/games/cards.dm
+++ b/code/modules/games/cards.dm
@@ -17,11 +17,46 @@
icon = 'icons/obj/playing_cards.dmi'
actions_types = list(/datum/action/item_action/draw_card, /datum/action/item_action/deal_card, /datum/action/item_action/deal_card_multi, /datum/action/item_action/shuffle)
var/list/cards = list()
- var/cooldown = 0 // to prevent spam shuffle
+ /// To prevent spam shuffle
+ var/cooldown = 0
+ /// Decks default to a single pack, setting it higher will multiply them by that number
+ var/deck_size = 1
+ /// The total number of cards. Set on init after the deck is fully built
+ var/deck_total = 0
+ /// Styling for the cards, if they have multiple sets of sprites
+ var/card_style = null
+ /// Styling for the deck, it they has multiple sets of sprites
+ var/deck_style = null
+ /// For decks without a full set of sprites
+ var/simple_deck = FALSE
throw_speed = 3
throw_range = 10
throwforce = 0
force = 0
+ /// Inherited card hit sound
+ var/card_hitsound
+ /// Inherited card force
+ var/card_force = 0
+ /// Inherited card throw force
+ var/card_throwforce = 0
+ /// Inherited card throw speed
+ var/card_throw_speed = 4
+ /// Inherited card throw range
+ var/card_throw_range = 20
+ /// Inherited card verbs
+ var/card_attack_verb
+ /// Inherited card resistance
+ var/card_resistance_flags = FLAMMABLE
+
+/obj/item/deck/Initialize(mapload)
+ . = ..()
+ for(var/deck in 1 to deck_size)
+ build_deck()
+ deck_total = length(cards)
+ update_icon()
+
+/obj/item/deck/proc/build_deck()
+ return
/obj/item/deck/attackby(obj/O as obj, mob/user as mob)
if(istype(O,/obj/item/cardhand))
@@ -31,6 +66,7 @@
cards += P
qdel(H)
to_chat(user,"You place your cards on the bottom of [src].")
+ update_icon()
return
else
to_chat(user,"You can't mix cards from different decks!")
@@ -40,7 +76,7 @@
/obj/item/deck/examine(mob/user)
. = ..()
- . +="It contains [cards.len ? cards.len : "no"] cards"
+ . +="It contains [length(cards) ? length(cards) : "no"] cards"
/obj/item/deck/attack_hand(mob/user as mob)
draw_card(user)
@@ -104,15 +140,15 @@
if(user.incapacitated() || !Adjacent(user))
return
- if(!cards.len)
+ if(!length(cards))
to_chat(user,"There are no cards in the deck.")
return
var/obj/item/cardhand/H = M.is_in_hands(/obj/item/cardhand)
- if(H && !(H.parentdeck == src))
+ if(H && (H.parentdeck != src))
to_chat(user,"You can't mix cards from different decks!")
return
- if(H && ((1 + H.cards.len) > H.maxcardlen))
+ if(H && length(H.cards) >= H.maxcardlen)
to_chat(user,"You can't hold that many cards in one hand!")
return
@@ -123,10 +159,12 @@
var/datum/playingcard/P = cards[1]
H.cards += P
cards -= P
+ update_icon()
H.parentdeck = src
+ H.update_values()
H.update_icon()
- user.visible_message("[user] draws a card.","You draws a card.")
- to_chat(user,"It's [P].")
+ user.visible_message("[user] draws a card.","You draw a card.")
+ to_chat(user,"It's the [P].")
/obj/item/deck/verb/deal_card()
@@ -138,7 +176,7 @@
if(usr.incapacitated() || !Adjacent(usr))
return
- if(!cards.len)
+ if(!length(cards))
to_chat(usr,"There are no cards in the deck.")
return
@@ -163,7 +201,7 @@
if(usr.incapacitated() || !Adjacent(usr))
return
- if(!cards.len)
+ if(!length(cards))
to_chat(usr,"There are no cards in the deck.")
return
@@ -171,7 +209,7 @@
for(var/mob/living/player in viewers(3))
if(!player.incapacitated())
players += player
- var/maxcards = max(min(cards.len,10),1)
+ var/maxcards = clamp(length(cards), 1, 10)
var/dcard = input("How many card(s) do you wish to deal? You may deal up to [maxcards] cards.") as num
if(dcard > maxcards)
return
@@ -186,7 +224,9 @@
for(var/i in 1 to dcard)
H.cards += cards[1]
cards -= cards[1]
+ update_icon()
H.parentdeck = src
+ H.update_values()
H.concealed = TRUE
H.update_icon()
if(user == target)
@@ -267,19 +307,31 @@
icon = 'icons/obj/playing_cards.dmi'
icon_state = "empty"
w_class = WEIGHT_CLASS_TINY
- throw_speed = 4
- throw_range = 20
- throwforce = 0
- force = 0
var/maxcardlen = 20
actions_types = list(/datum/action/item_action/remove_card, /datum/action/item_action/discard)
var/concealed = FALSE
var/list/cards = list()
+ /// Tracked direction, which is used when updating the hand's appearance instead of messing with the local dir
+ var/direction = NORTH
var/parentdeck = null
+ /// The player's picked card they want to take out. Stored in the hand so it can be passed onto the verb
+ var/pickedcard = null
-/obj/item/cardhand/attackby(obj/O as obj, mob/user as mob)
- if(cards.len == 1 && istype(O, /obj/item/pen))
+/obj/item/cardhand/proc/update_values()
+ if(!parentdeck)
+ return
+ var/obj/item/deck/D = parentdeck
+ hitsound = D.card_hitsound
+ force = D.card_force
+ throwforce = D.card_throwforce
+ throw_speed = D.card_throw_speed
+ throw_range = D.card_throw_range
+ attack_verb = D.card_attack_verb
+ resistance_flags = D.card_resistance_flags
+
+/obj/item/cardhand/attackby(obj/O, mob/user)
+ if(length(cards) == 1 && istype(O, /obj/item/pen))
var/datum/playingcard/P = cards[1]
if(P.name != "Blank Card")
to_chat(user,"You cannot write on that card.")
@@ -292,13 +344,13 @@
update_icon()
else if(istype(O,/obj/item/cardhand))
var/obj/item/cardhand/H = O
- if((H.cards.len + cards.len) > maxcardlen)
+ if((length(H.cards) + length(cards)) > maxcardlen)
to_chat(user,"You can't hold that many cards in one hand!")
return
- if(H.parentdeck == src.parentdeck)
+ if(H.parentdeck == parentdeck)
for(var/datum/playingcard/P in cards)
H.cards += P
- H.concealed = src.concealed
+ H.concealed = concealed
qdel(src)
H.update_icon()
return
@@ -307,14 +359,47 @@
return
..()
-/obj/item/cardhand/attack_self(mob/user as mob)
+/obj/item/cardhand/attack_self(mob/user)
+ if(length(cards) == 1)
+ turn_hand(user)
+ return
+ user.set_machine(src)
+ interact(user)
+
+/obj/item/cardhand/proc/turn_hand(mob/user)
concealed = !concealed
update_icon()
user.visible_message("[user] [concealed ? "conceals" : "reveals"] their hand.")
+/obj/item/cardhand/interact(mob/user)
+ var/dat = "You have:
"
+ for(var/t in cards)
+ dat += "The [t]
"
+ dat += "Which card will you remove next?
"
+ dat += "Turn the hand over"
+ var/datum/browser/popup = new(user, "cardhand", "Hand of Cards", 400, 240)
+ popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
+ popup.set_content(dat)
+ popup.open()
+
+/obj/item/cardhand/Topic(href, href_list)
+ if(..())
+ return
+ if(usr.stat || !ishuman(usr))
+ return
+ var/mob/living/carbon/human/cardUser = usr
+ if(href_list["pick"])
+ if(href_list["pick"] == "Turn")
+ turn_hand(usr)
+ else
+ if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src)
+ pickedcard = href_list["pick"]
+ Removecard()
+ cardUser << browse(null, "window=cardhand")
+
/obj/item/cardhand/examine(mob/user)
. = ..()
- if((!concealed) && cards.len)
+ if(!concealed && length(cards))
. +="It contains:"
for(var/datum/playingcard/P in cards)
. +="the [P.name]."
@@ -360,33 +445,40 @@
var/pickablecards = list()
for(var/datum/playingcard/P in cards)
pickablecards[P.name] = P
- var/pickedcard = input("Which card do you want to remove from the hand?") as null|anything in pickablecards
+ if(!pickedcard)
+ pickedcard = input("Which card do you want to remove from the hand?") as null|anything in pickablecards
+ if(!pickedcard)
+ return
if(QDELETED(src))
return
var/datum/playingcard/card = pickablecards[pickedcard]
+ user.visible_message("[user] draws a card from [user.p_their()] hand.", "You take the [pickedcard] from your hand.")
+ pickedcard = null
var/obj/item/cardhand/H = new(get_turf(src))
user.put_in_hands(H)
H.cards += card
cards -= card
H.parentdeck = parentdeck
+ H.update_values()
H.concealed = concealed
H.update_icon()
-
- if(!cards.len)
+ if(!length(cards))
qdel(src)
return
update_icon()
-/obj/item/cardhand/verb/discard(mob/user as mob)
+/obj/item/cardhand/verb/discard()
set category = "Object"
set name = "Discard"
set desc = "Place (a) card(s) from your hand in front of you."
- var/maxcards = min(cards.len,5)
+ var/mob/living/carbon/user = usr
+
+ var/maxcards = min(length(cards), 5)
var/discards = input("How many cards do you want to discard? You may discard up to [maxcards] card(s)") as num
if(discards > maxcards)
return
@@ -402,57 +494,60 @@
var/datum/playingcard/card = to_discard[discarding]
to_discard.Cut()
- var/obj/item/cardhand/H = new(get_turf(src))
+ var/obj/item/cardhand/H = new type(get_turf(src))
H.cards += card
cards -= card
H.concealed = FALSE
H.parentdeck = parentdeck
+ H.update_values()
+ H.direction = user.dir
H.update_icon()
- if(cards.len)
+ if(length(cards))
update_icon()
- if(H.cards.len)
+ if(length(H.cards))
user.visible_message("[user] plays the [discarding].", "You play the [discarding].")
H.loc = get_step(user, user.dir)
- if(!cards.len)
+ if(!length(cards))
qdel(src)
-/obj/item/cardhand/update_icon(direction = 0)
+/obj/item/cardhand/update_icon()
- if(!cards.len)
+ if(!length(cards))
return
- else if(cards.len > 1)
+ else if(length(cards) > 1)
name = "hand of cards"
desc = "Some playing cards."
else
name = "a playing card"
desc = "A playing card."
- overlays.Cut()
-
- if(cards.len == 1)
- var/datum/playingcard/P = cards[1]
- var/image/I = new(icon, (concealed ? "[P.back_icon]" : "[P.card_icon]") )
- I.pixel_x += (-5+rand(10))
- I.pixel_y += (-5+rand(10))
- overlays += I
- return
-
- var/offset = FLOOR(20/cards.len + 1, 1)
+ cut_overlays()
var/matrix/M = matrix()
- if(direction)
- switch(direction)
- if(NORTH)
- M.Translate( 0, 0)
- if(SOUTH)
- M.Translate( 0, 4)
- if(WEST)
- M.Turn(90)
- M.Translate( 3, 0)
- if(EAST)
- M.Turn(90)
- M.Translate(-2, 0)
+ switch(direction)
+ if(NORTH)
+ M.Translate( 0, 0)
+ if(SOUTH)
+ M.Turn(180)
+ M.Translate( 0, 4)
+ if(WEST)
+ M.Turn(-90)
+ M.Translate( 3, 0)
+ if(EAST)
+ M.Turn(90)
+ M.Translate(-2, 0)
+
+ if(length(cards) == 1)
+ var/datum/playingcard/P = cards[1]
+ var/image/I = new(icon, (concealed ? "[P.back_icon]" : "[P.card_icon]") )
+ I.transform = M
+ I.pixel_x += (-5+rand(10))
+ I.pixel_y += (-5+rand(10))
+ add_overlay(I)
+ return
+
+ var/offset = FLOOR(20/length(cards) + 1, 1)
var/i = 0
for(var/datum/playingcard/P in cards)
var/image/I = new(icon, (concealed ? "[P.back_icon]" : "[P.card_icon]") )
@@ -467,16 +562,15 @@
else
I.pixel_x = -7+(offset*i)
I.transform = M
- overlays += I
+ add_overlay(I)
i++
-/obj/item/cardhand/dropped(mob/user as mob)
+/obj/item/cardhand/dropped(mob/user)
..()
- if(locate(/obj/structure/table, loc))
- update_icon(user.dir)
- else
- update_icon()
+ direction = user.dir
+ update_icon()
/obj/item/cardhand/pickup(mob/user as mob)
. = ..()
+ direction = NORTH
update_icon()
diff --git a/code/modules/games/tarot.dm b/code/modules/games/tarot.dm
index d5fdac7efd6..b176bbd78be 100644
--- a/code/modules/games/tarot.dm
+++ b/code/modules/games/tarot.dm
@@ -6,9 +6,7 @@
desc = "For all your occult needs!"
icon_state = "deck_tarot"
-/obj/item/deck/tarot/New()
- ..()
-
+/obj/item/deck/tarot/build_deck()
for(var/tarotname in list("Fool","Magician","High Priestess","Empress","Emperor","Hierophant","Lovers","Chariot","Strength","Hermit","Wheel of Fortune","Justice","Hanged Man","Death","Temperance","Devil","Tower","Star","Moon","Sun","Judgement","World"))
cards += new /datum/playingcard("[tarotname]", "tarot_major", "card_back_tarot")
for(var/suit in list("wands","pentacles","cups","swords"))
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index dd374e4c8c2..1cda3ab0af6 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -31,65 +31,65 @@
. = ..()
prize_list = list()
prize_list["Gear"] = list(
- EQUIPMENT("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800),
- EQUIPMENT("Explorer's Webbing", /obj/item/storage/belt/mining, 500),
- EQUIPMENT("Fulton Beacon", /obj/item/fulton_core, 400),
- EQUIPMENT("Mining Conscription Kit", /obj/item/storage/backpack/duffel/mining_conscript, 1500),
- EQUIPMENT("Jetpack Upgrade", /obj/item/tank/jetpack/suit, 2000),
- EQUIPMENT("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
- EQUIPMENT("Lazarus Capsule", /obj/item/mobcapsule, 800),
- EQUIPMENT("Lazarus Capsule belt", /obj/item/storage/belt/lazarus, 200),
- EQUIPMENT("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000),
- EQUIPMENT("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600),
+ EQUIPMENT("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800),
+ EQUIPMENT("Explorer's Webbing", /obj/item/storage/belt/mining, 500),
+ EQUIPMENT("Fulton Beacon", /obj/item/fulton_core, 400),
+ EQUIPMENT("Mining Conscription Kit", /obj/item/storage/backpack/duffel/mining_conscript, 1500),
+ EQUIPMENT("Jetpack Upgrade", /obj/item/tank/jetpack/suit, 2000),
+ EQUIPMENT("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
+ EQUIPMENT("Lazarus Capsule", /obj/item/mobcapsule, 800),
+ EQUIPMENT("Lazarus Capsule belt", /obj/item/storage/belt/lazarus, 200),
+ EQUIPMENT("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000),
+ EQUIPMENT("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600),
)
prize_list["Consumables"] = list(
- EQUIPMENT("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 100),
- EQUIPMENT("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600),
- EQUIPMENT("Fulton Pack", /obj/item/extraction_pack, 1000),
- EQUIPMENT("Jaunter", /obj/item/wormhole_jaunter, 750),
- EQUIPMENT("Lazarus Injector", /obj/item/lazarus_injector, 1000),
- EQUIPMENT("Point Transfer Card", /obj/item/card/mining_point_card, 500),
- EQUIPMENT("Shelter Capsule", /obj/item/survivalcapsule, 400),
- EQUIPMENT("Stabilizing Serum", /obj/item/hivelordstabilizer, 400),
- EQUIPMENT("Survival Medipen", /obj/item/reagent_containers/hypospray/autoinjector/survival, 500),
+ EQUIPMENT("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 100),
+ EQUIPMENT("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600),
+ EQUIPMENT("Fulton Pack", /obj/item/extraction_pack, 1000),
+ EQUIPMENT("Jaunter", /obj/item/wormhole_jaunter, 750),
+ EQUIPMENT("Lazarus Injector", /obj/item/lazarus_injector, 1000),
+ EQUIPMENT("Point Transfer Card", /obj/item/card/mining_point_card, 500),
+ EQUIPMENT("Shelter Capsule", /obj/item/survivalcapsule, 400),
+ EQUIPMENT("Stabilizing Serum", /obj/item/hivelordstabilizer, 400),
+ EQUIPMENT("Survival Medipen", /obj/item/reagent_containers/hypospray/autoinjector/survival, 500),
)
prize_list["Kinetic Accelerator"] = list(
- EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750),
- EQUIPMENT("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150),
- EQUIPMENT("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000),
- EQUIPMENT("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000),
- EQUIPMENT("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
- EQUIPMENT("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300),
- EQUIPMENT("KA Minebot Passthrough", /obj/item/borg/upgrade/modkit/minebot_passthrough, 100),
- EQUIPMENT("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
- EQUIPMENT("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250),
- EQUIPMENT("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 100),
+ EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750),
+ EQUIPMENT("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150),
+ EQUIPMENT("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000),
+ EQUIPMENT("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000),
+ EQUIPMENT("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
+ EQUIPMENT("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300),
+ EQUIPMENT("KA Minebot Passthrough", /obj/item/borg/upgrade/modkit/minebot_passthrough, 100),
+ EQUIPMENT("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
+ EQUIPMENT("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250),
+ EQUIPMENT("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 100),
)
prize_list["Digging Tools"] = list(
- EQUIPMENT("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000),
- EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750),
- EQUIPMENT("Kinetic Crusher", /obj/item/twohanded/kinetic_crusher, 750),
- EQUIPMENT("Resonator", /obj/item/resonator, 800),
- EQUIPMENT("Silver Pickaxe", /obj/item/pickaxe/silver, 1000),
- EQUIPMENT("Super Resonator", /obj/item/resonator/upgraded, 2500),
+ EQUIPMENT("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000),
+ EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750),
+ EQUIPMENT("Kinetic Crusher", /obj/item/twohanded/kinetic_crusher, 750),
+ EQUIPMENT("Resonator", /obj/item/resonator, 800),
+ EQUIPMENT("Silver Pickaxe", /obj/item/pickaxe/silver, 1000),
+ EQUIPMENT("Super Resonator", /obj/item/resonator/upgraded, 2500),
)
prize_list["Minebot"] = list(
- EQUIPMENT("Nanotrasen Minebot", /obj/item/mining_drone_cube, 800),
- EQUIPMENT("Minebot AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000),
- EQUIPMENT("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400),
- EQUIPMENT("Minebot Cooldown Upgrade", /obj/item/borg/upgrade/modkit/cooldown/minebot, 600),
- EQUIPMENT("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400),
+ EQUIPMENT("Nanotrasen Minebot", /obj/item/mining_drone_cube, 800),
+ EQUIPMENT("Minebot AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000),
+ EQUIPMENT("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400),
+ EQUIPMENT("Minebot Cooldown Upgrade", /obj/item/borg/upgrade/modkit/cooldown/minebot, 600),
+ EQUIPMENT("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400),
)
prize_list["Miscellaneous"] = list(
- EQUIPMENT("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 100),
- EQUIPMENT("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300),
- EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
- EQUIPMENT("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 500),
- EQUIPMENT("Laser Pointer", /obj/item/laser_pointer, 300),
- EQUIPMENT("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000),
- EQUIPMENT("Soap", /obj/item/soap/nanotrasen, 200),
- EQUIPMENT("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
- EQUIPMENT("Whiskey", /obj/item/reagent_containers/food/drinks/bottle/whiskey, 100),
+ EQUIPMENT("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 100),
+ EQUIPMENT("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300),
+ EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
+ EQUIPMENT("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 500),
+ EQUIPMENT("Laser Pointer", /obj/item/laser_pointer, 300),
+ EQUIPMENT("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000),
+ EQUIPMENT("Soap", /obj/item/soap/nanotrasen, 200),
+ EQUIPMENT("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
+ EQUIPMENT("Whiskey", /obj/item/reagent_containers/food/drinks/bottle/whiskey, 100),
)
prize_list["Extra"] = list() // Used in child vendors
@@ -291,15 +291,15 @@
. = ..()
desc += "\nIt seems a few selections have been added."
prize_list["Extra"] += list(
- EQUIPMENT("Extra ID", /obj/item/card/id/golem, 250),
- EQUIPMENT("Science Backpack", /obj/item/storage/backpack/science, 250),
- EQUIPMENT("Full Toolbelt", /obj/item/storage/belt/utility/full/multitool, 250),
- EQUIPMENT("Monkey Cube", /obj/item/reagent_containers/food/snacks/monkeycube, 250),
- EQUIPMENT("Royal Cape of the Liberator", /obj/item/bedsheet/rd/royal_cape, 500),
- EQUIPMENT("Grey Slime Extract", /obj/item/slime_extract/grey, 1000),
- EQUIPMENT("KA Trigger Modification Kit", /obj/item/borg/upgrade/modkit/trigger_guard, 1000),
- EQUIPMENT("Shuttle Console Board", /obj/item/circuitboard/shuttle/golem_ship, 2000),
- EQUIPMENT("The Liberator's Legacy", /obj/item/storage/box/rndboards, 2000),
+ EQUIPMENT("Extra ID", /obj/item/card/id/golem, 250),
+ EQUIPMENT("Science Backpack", /obj/item/storage/backpack/science, 250),
+ EQUIPMENT("Full Toolbelt", /obj/item/storage/belt/utility/full/multitool, 250),
+ EQUIPMENT("Monkey Cube", /obj/item/reagent_containers/food/snacks/monkeycube, 250),
+ EQUIPMENT("Royal Cape of the Liberator", /obj/item/bedsheet/rd/royal_cape, 500),
+ EQUIPMENT("Grey Slime Extract", /obj/item/slime_extract/grey, 1000),
+ EQUIPMENT("KA Trigger Modification Kit", /obj/item/borg/upgrade/modkit/trigger_guard, 1000),
+ EQUIPMENT("Shuttle Console Board", /obj/item/circuitboard/shuttle/golem_ship, 2000),
+ EQUIPMENT("The Liberator's Legacy", /obj/item/storage/box/rndboards, 2000),
)
/**********************Mining Equiment Vendor (Gulag)**************************/
@@ -322,25 +322,25 @@
. = ..()
prize_list = list()
prize_list["Scum"] += list(
- EQUIPMENT("Trauma Kit", /obj/item/stack/medical/bruise_pack/advanced, 150),
- EQUIPMENT("Whisky", /obj/item/reagent_containers/food/drinks/bottle/whiskey, 100),
- EQUIPMENT("Beer", /obj/item/reagent_containers/food/drinks/cans/beer, 50),
- EQUIPMENT("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 250),
- EQUIPMENT("Cigarettes", /obj/item/storage/fancy/cigarettes, 100),
- EQUIPMENT("Medical Marijuana", /obj/item/storage/fancy/cigarettes/cigpack_med, 250),
- EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
- EQUIPMENT("Box of matches", /obj/item/storage/box/matches, 50),
- EQUIPMENT("Cheeseburger", /obj/item/reagent_containers/food/snacks/cheeseburger, 150),
- EQUIPMENT("Big Burger", /obj/item/reagent_containers/food/snacks/bigbiteburger, 250),
- EQUIPMENT("Recycled Prisoner", /obj/item/reagent_containers/food/snacks/soylentgreen, 500),
- EQUIPMENT("Crayons", /obj/item/storage/fancy/crayons, 350),
- EQUIPMENT("Plushie", /obj/random/plushie, 750),
- EQUIPMENT("Dnd set", /obj/item/storage/box/characters, 500),
- EQUIPMENT("Dice set", /obj/item/storage/box/dice, 250),
- EQUIPMENT("Cards", /obj/item/toy/cards/deck, 150),
- EQUIPMENT("Guitar", /obj/item/instrument/guitar, 750),
- EQUIPMENT("Synthesizer", /obj/item/instrument/piano_synth, 1500),
- EQUIPMENT("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000)
+ EQUIPMENT("Trauma Kit", /obj/item/stack/medical/bruise_pack/advanced, 150),
+ EQUIPMENT("Whisky", /obj/item/reagent_containers/food/drinks/bottle/whiskey, 100),
+ EQUIPMENT("Beer", /obj/item/reagent_containers/food/drinks/cans/beer, 50),
+ EQUIPMENT("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 250),
+ EQUIPMENT("Cigarettes", /obj/item/storage/fancy/cigarettes, 100),
+ EQUIPMENT("Medical Marijuana", /obj/item/storage/fancy/cigarettes/cigpack_med, 250),
+ EQUIPMENT("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
+ EQUIPMENT("Box of matches", /obj/item/storage/box/matches, 50),
+ EQUIPMENT("Cheeseburger", /obj/item/reagent_containers/food/snacks/cheeseburger, 150),
+ EQUIPMENT("Big Burger", /obj/item/reagent_containers/food/snacks/bigbiteburger, 250),
+ EQUIPMENT("Recycled Prisoner", /obj/item/reagent_containers/food/snacks/soylentgreen, 500),
+ EQUIPMENT("Crayons", /obj/item/storage/fancy/crayons, 350),
+ EQUIPMENT("Plushie", /obj/random/plushie, 750),
+ EQUIPMENT("Dnd set", /obj/item/storage/box/characters, 500),
+ EQUIPMENT("Dice set", /obj/item/storage/box/dice, 250),
+ EQUIPMENT("Cards", /obj/item/deck/cards, 150),
+ EQUIPMENT("Guitar", /obj/item/instrument/guitar, 750),
+ EQUIPMENT("Synthesizer", /obj/item/instrument/piano_synth, 1500),
+ EQUIPMENT("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000)
)
/**********************Mining Equipment Datum**************************/
diff --git a/icons/obj/playing_cards.dmi b/icons/obj/playing_cards.dmi
index 315e4335979..468e6af9d00 100644
Binary files a/icons/obj/playing_cards.dmi and b/icons/obj/playing_cards.dmi differ
diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi
index d05bddad6be..ae428087cc1 100644
Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ