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