From 6857f4836e0722004372304a4e22ca314d524d78 Mon Sep 17 00:00:00 2001 From: WhereAmO <81683771+WhereAmO@users.noreply.github.com> Date: Sun, 8 Oct 2023 18:02:31 -0700 Subject: [PATCH] Ports Tarot Cards, for Thematics:tm: (#9978) * Uhh, adds tarot cards that don't build? * Fixes the issues Works now! Just need to change sprites and names and descriptions and vendor stuff and loadout stuff and probably other stuff. * Fixed runtime, added to vendors/loadout. * Oops * New Card Sprites, names, etc * Forgor to change this * I did a fucky wucky Fixes Syndicate Playing Cards, and something to do with embeds? * Fixed!!! Unum exists again and the checks should work now * Why am I like this * WHY DOES IT STILL WORK WITH TWO #END DMI's??? * Why do I never check anything Fixed issues, and now uploading a Big Testing Evidence Video shortly. --- beestation.dme | 5 +- code/game/objects/items/toys.dm | 180 +++++++++--------- .../modules/client/loadout/loadout_general.dm | 6 + code/modules/games/tarot.dm | 29 +++ code/modules/vending/games.dm | 1 + icons/obj/toy.dmi | Bin 34220 -> 39354 bytes 6 files changed, 126 insertions(+), 95 deletions(-) create mode 100644 code/modules/games/tarot.dm diff --git a/beestation.dme b/beestation.dme index fa0bba9705c75..fa0cc518924a6 100644 --- a/beestation.dme +++ b/beestation.dme @@ -458,8 +458,8 @@ #include "code\controllers\subsystem\zclear.dm" #include "code\controllers\subsystem\zcopy.dm" #include "code\controllers\subsystem\movement\ai_movement.dm" -#include "code\controllers\subsystem\movement\hyperspace_drift.dm" #include "code\controllers\subsystem\movement\conveyors.dm" +#include "code\controllers\subsystem\movement\hyperspace_drift.dm" #include "code\controllers\subsystem\movement\move_handler.dm" #include "code\controllers\subsystem\movement\movement.dm" #include "code\controllers\subsystem\movement\movement_types.dm" @@ -2577,6 +2577,7 @@ #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_soup.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm" #include "code\modules\games\cas.dm" +#include "code\modules\games\tarot.dm" #include "code\modules\games\unum.dm" #include "code\modules\holiday\easter.dm" #include "code\modules\holiday\holidays.dm" @@ -4070,8 +4071,8 @@ #include "code\modules\wiremod\components\string\tostring.dm" #include "code\modules\wiremod\components\utility\clock.dm" #include "code\modules\wiremod\components\utility\delay.dm" -#include "code\modules\wiremod\components\utility\iterator.dm" #include "code\modules\wiremod\components\utility\getter.dm" +#include "code\modules\wiremod\components\utility\iterator.dm" #include "code\modules\wiremod\components\utility\router.dm" #include "code\modules\wiremod\components\utility\setter.dm" #include "code\modules\wiremod\components\utility\typecast.dm" diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 41c3dd6466be3..8cc4eabe1585c 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -674,6 +674,8 @@ || A Deck of Cards for playing various games of chance || */ + + /obj/item/toy/cards resistance_flags = FLAMMABLE max_integrity = 50 @@ -690,7 +692,7 @@ /obj/item/toy/cards/suicide_act(mob/living/carbon/user) user.visible_message("[user] is slitting [user.p_their()] wrists with \the [src]! It looks like [user.p_they()] [user.p_have()] a crummy hand!") - playsound(src, 'sound/items/cardshuffle.ogg', 50, 1) + playsound(src, 'sound/items/cardshuffle.ogg', 50, TRUE) return BRUTELOSS /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 @@ -713,29 +715,15 @@ . = ..() populate_deck() +///Generates all the cards within the deck. /obj/item/toy/cards/deck/proc/populate_deck() 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" + for(var/suit in list("Hearts", "Spades", "Clubs", "Diamonds")) + cards += "Ace of [suit]" + for(var/i in 2 to 10) + cards += "[i] of [suit]" + for(var/person in list("Jack", "Queen", "King")) + cards += "[person] of [suit]" //ATTACK HAND IGNORING PARENT RETURN VALUE //ATTACK HAND NOT CALLING PARENT @@ -748,7 +736,7 @@ if(!(L.mobility_flags & MOBILITY_PICKUP)) return var/choice = null - if(!LAZYLEN(cards)) + if(cards.len == 0) 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) @@ -759,25 +747,29 @@ H.parentdeck = src var/O = src H.apply_card_vars(H,O) - cards.Cut(1,2) //Removes the top card from the list + popleft(cards) + H.pickup(user) user.put_in_hands(H) user.visible_message("[user] draws a card from the deck.", "You draw a card from the deck.") update_icon() - -/obj/item/toy/cards/deck/update_icon() - if(LAZYLEN(cards) > original_size/2) - icon_state = "deck_[deckstyle]_full" - else if(LAZYLEN(cards) > original_size/4) - icon_state = "deck_[deckstyle]_half" - else if(LAZYLEN(cards)) - icon_state = "deck_[deckstyle]_low" - else if(!LAZYLEN(cards)) - icon_state = "deck_[deckstyle]_empty" + return H + +/obj/item/toy/cards/deck/update_icon_state() + switch(cards.len) + if(27 to INFINITY) + icon_state = "deck_[deckstyle]_full" + if(11 to 27) + icon_state = "deck_[deckstyle]_half" + if(1 to 11) + icon_state = "deck_[deckstyle]_low" + else + icon_state = "deck_[deckstyle]_empty" + return ..() /obj/item/toy/cards/deck/attack_self(mob/user) if(cooldown < world.time - 50) cards = shuffle(cards) - playsound(src, 'sound/items/cardshuffle.ogg', 50, 1) + playsound(src, 'sound/items/cardshuffle.ogg', 50, TRUE) user.visible_message("[user] shuffles the deck.", "You shuffle the deck.") cooldown = world.time @@ -810,22 +802,22 @@ return ..() /obj/item/toy/cards/deck/MouseDrop(atom/over_object) - . = ..() - var/mob/living/M = usr - if(!istype(M) || !(M.mobility_flags & MOBILITY_PICKUP)) - return - if(Adjacent(usr)) - if(over_object == M && loc != M) - M.put_in_hands(src) - to_chat(usr, "You pick up the deck.") + . = ..() + var/mob/living/M = usr + if(!istype(M) || !(M.mobility_flags & MOBILITY_PICKUP)) + 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, /atom/movable/screen/inventory/hand)) - var/atom/movable/screen/inventory/hand/H = over_object - if(M.putItemFromInventoryInHandIfPossible(src, H.held_index)) - to_chat(usr, "You pick up the deck.") + else if(istype(over_object, /atom/movable/screen/inventory/hand)) + var/atom/movable/screen/inventory/hand/H = over_object + if(M.putItemFromInventoryInHandIfPossible(src, H.held_index)) + to_chat(usr, "You pick up the deck.") - else - to_chat(usr, "You can't reach it from here!") + else + to_chat(usr, "You can't reach it from here!") @@ -838,56 +830,43 @@ var/list/currenthand = list() var/choice = null - /obj/item/toy/cards/cardhand/attack_self(mob/user) - user.set_machine(src) + var/list/handradial = list() interact(user) -/obj/item/toy/cards/cardhand/ui_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_content(dat) - popup.open() - -/obj/item/toy/cards/cardhand/Topic(href, href_list) - if(..()) - return + handradial[t] = image(icon = src.icon, icon_state = "sc_[t]_[deckstyle]") + if(usr.stat || !ishuman(usr)) return var/mob/living/carbon/human/cardUser = usr if(!(cardUser.mobility_flags & MOBILITY_USE)) return var/O = src - if(href_list["pick"]) - if (cardUser.is_holding(src)) - var/choice = href_list["pick"] - if(!(choice in src.currenthand)) - log_href_exploit(usr) - return - var/obj/item/toy/cards/singlecard/C = new/obj/item/toy/cards/singlecard(cardUser.loc) - src.currenthand -= choice - C.parentdeck = src.parentdeck - C.cardname = choice - C.apply_card_vars(C,O) - cardUser.put_in_hands(C) - cardUser.visible_message("[cardUser] draws a card from [cardUser.p_their()] hand.", "You take the [C.cardname] from your hand.") - - interact(cardUser) - update_sprite() - if(src.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) - qdel(src) - cardUser.put_in_hands(N) - to_chat(cardUser, "You also take [currenthand[1]] and hold it.") - cardUser << browse(null, "window=cardhand") - return + var/choice = show_radial_menu(usr,src, handradial, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 36, require_near = TRUE) + if(!choice) + return FALSE + var/obj/item/toy/cards/singlecard/C = new/obj/item/toy/cards/singlecard(cardUser.loc) + currenthand -= choice + handradial -= choice + C.parentdeck = parentdeck + C.cardname = choice + C.apply_card_vars(C,O) + C.pickup(cardUser) + cardUser.put_in_hands(C) + cardUser.visible_message("[cardUser] draws a card from [cardUser.p_their()] hand.", "You take the [C.cardname] from your hand.") + + interact(cardUser) + update_sprite() + if(length(currenthand) == 1) + var/obj/item/toy/cards/singlecard/N = new/obj/item/toy/cards/singlecard(loc) + N.parentdeck = parentdeck + N.cardname = currenthand[1] + N.apply_card_vars(N,O) + qdel(src) + N.pickup(cardUser) + cardUser.put_in_hands(N) + to_chat(cardUser, "You also take [currenthand[1]] and hold it.") /obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params) if(istype(C)) @@ -914,6 +893,22 @@ newobj.card_attack_verb = sourceobj.card_attack_verb newobj.resistance_flags = sourceobj.resistance_flags +/** + * check_menu: Checks if we are allowed to interact with a radial menu + * + * Arguments: + * * user The mob interacting with a menu + */ +/obj/item/toy/cards/cardhand/proc/check_menu(mob/living/user) + if(!istype(user)) + return FALSE + if(user.incapacitated()) + return FALSE + return TRUE + +/** + * This proc updates the sprite for when you create a hand of cards + */ /obj/item/toy/cards/cardhand/proc/update_sprite() cut_overlays() var/overlay_cards = currenthand.len @@ -925,10 +920,10 @@ /obj/item/toy/cards/singlecard name = "card" - desc = "a card" + desc = "A playing card used to play card games like poker." icon = 'icons/obj/toy.dmi' icon_state = "singlecard_down_nanotrasen" - w_class = WEIGHT_CLASS_SMALL + w_class = WEIGHT_CLASS_TINY var/cardname = null var/flipped = 0 pixel_x = -5 @@ -983,6 +978,7 @@ to_chat(user, "You combine the [C.cardname] and the [src.cardname] into a hand.") qdel(C) qdel(src) + H.pickup(user) user.put_in_active_hand(H) else to_chat(user, "You can't mix cards from other decks!") @@ -1022,11 +1018,9 @@ 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." diff --git a/code/modules/client/loadout/loadout_general.dm b/code/modules/client/loadout/loadout_general.dm index 575e800f7636e..35aa804d73e00 100644 --- a/code/modules/client/loadout/loadout_general.dm +++ b/code/modules/client/loadout/loadout_general.dm @@ -16,6 +16,12 @@ path = /obj/item/toy/eightball cost = 500 +/datum/gear/misc/tarotdeck + display_name = "Tarot Deck" + description = "A full 78 card deck of Tarot Cards, no refunds on false predicitons." + path = /obj/item/toy/cards/deck/tarot + cost = 600 + /datum/gear/misc/antagtoken display_name = "Discount Antag Token" description = "Says \"Made in China\" on the back. Seems fishy." diff --git a/code/modules/games/tarot.dm b/code/modules/games/tarot.dm new file mode 100644 index 0000000000000..8be9bf1676e22 --- /dev/null +++ b/code/modules/games/tarot.dm @@ -0,0 +1,29 @@ +//Some silly tarot cards for predicting when the Clown will die. Ported from TG. https://github.com/tgstation/tgstation/pull/51318/ +/obj/item/toy/cards/deck/tarot + name = "Tarot Card Deck" + desc = "A full 78 card deck of Tarot Cards, no refunds on false predicitons." + icon = 'icons/obj/toy.dmi' + icon_state = "deck_tarot_full" + deckstyle = "tarot" + +/obj/item/toy/cards/deck/tarot/populate_deck() + for(var/suit in list("Cups", "Wands", "Swords", "Coins")) + for(var/i in 1 to 10) + cards += "[i] of [suit]" + for(var/person in list("Page", "Champion", "Queen", "King")) + cards += "[person] of [suit]" + for(var/trump in list("The Magician", "The High Priestess", "The Empress", "The Emperor", "The Hierophant", "The Lover", "The Chariot", "Justice", "The Hermit", "The Wheel of Fortune", "Strength", "The Hanged Man", "Death", "Temperance", "The Devil", "The Tower", "The Star", "The Moon", "The Sun", "Judgement", "The World", "The Fool")) + cards += "[trump]" + +/obj/item/toy/cards/deck/tarot/draw_card(mob/user) + . = ..() + if(prob(50)) + var/obj/item/toy/cards/singlecard/C = . + if(!C) + return FALSE + + var/matrix/M = matrix() + M.Turn(180) + C.transform = M + + diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index 428c611ec76fd..abe44ffc5eb06 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -10,6 +10,7 @@ /obj/item/toy/cards/deck/cas = 3, /obj/item/toy/cards/deck/cas/black = 3, /obj/item/toy/cards/deck/unum = 3, + /obj/item/toy/cards/deck/tarot = 3, /obj/item/hourglass = 2) contraband = list(/obj/item/dice/fudge = 9, /obj/item/instrument/musicalmoth = 1) diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index 65b5da4d125c6e000a7cf98a5a1a64e2d690601e..3ef7f3258cfd4a41186cbb3fb4e07a3ceef99c68 100644 GIT binary patch delta 17700 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 U{u=0ip#U#s-^!Fo8GiVG04S!{_W%F@ delta 12328 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 Sg#I4@P>@x9QzmU3_`d+y#wR@h