From 3f9d2ab16aabea9f0d49e4c5c198b72da5378dfe Mon Sep 17 00:00:00 2001 From: DanielJamesCox Date: Mon, 17 May 2021 23:10:41 -0400 Subject: [PATCH] Mahjong Tiles (#808) * mahjong tiles tiles for mahjong tiles specifically made for mahjong mahjong's tiles * modularized mahjong tiles in whitesands code rather than tgstation * Revert "mahjong tiles" This reverts commit ec135b606d8ad7882d891b56ad8a9c25921bdf52. * modularized mahjong tiles pt 2 responding to comments left by shadowtail * modularized mahjong tiles pt 3 fixing failure to include modular files in build and finishing with requested changes * Actually putting mahjong in the game Adds the mahjong wall to the games vendor, 2 sets. * second review edits removes superfluous objects/items/toys declaration removes suicide verb clarifies abstract declaration for mahjong items simplifies and corrects wording * oh shit i forgot tiles go clack added sounds for mahjong as well as a name and description for the parent object for mahjong items Co-authored-by: Flikr --- code/modules/vending/games.dm | 1 + tgstation.dme | 1 + whitesands/code/game/objects/items/toys.dm | 299 +++++++++++++++++++++ whitesands/icons/obj/toy.dmi | Bin 0 -> 3392 bytes whitesands/sound/items/mahjongclack.ogg | Bin 0 -> 10618 bytes whitesands/sound/items/mahjongshuffle.ogg | Bin 0 -> 23789 bytes 6 files changed, 301 insertions(+) create mode 100644 whitesands/code/game/objects/items/toys.dm create mode 100644 whitesands/icons/obj/toy.dmi create mode 100644 whitesands/sound/items/mahjongclack.ogg create mode 100644 whitesands/sound/items/mahjongshuffle.ogg diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index 42fecd00d3d..4f738853f1a 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -9,6 +9,7 @@ /obj/item/toy/cards/deck/cas/black = 3, /obj/item/toy/cards/deck/kotahi = 3, /obj/item/toy/cards/deck/tarot = 3, + /obj/item/toy/mahjong/wall = 2, //WS Edit -- adds mahjong deck to game vendor /obj/item/hourglass = 2, /obj/item/instrument/piano_synth/headphones = 4, /obj/item/camera = 3) diff --git a/tgstation.dme b/tgstation.dme index d7538fa26d8..517197bdcfe 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3279,6 +3279,7 @@ #include "whitesands\code\game\objects\items\manuals.dm" #include "whitesands\code\game\objects\items\pinpointer.dm" #include "whitesands\code\game\objects\items\shuttle_creator.dm" +#include "whitesands\code\game\objects\items\toys.dm" #include "whitesands\code\game\objects\items\circuitboards\computer_circuitboards.dm" #include "whitesands\code\game\objects\items\circuitboards\deepcore.dm" #include "whitesands\code\game\objects\items\circuitboards\machine_circuitboards.dm" diff --git a/whitesands/code/game/objects/items/toys.dm b/whitesands/code/game/objects/items/toys.dm new file mode 100644 index 00000000000..7ec684c416a --- /dev/null +++ b/whitesands/code/game/objects/items/toys.dm @@ -0,0 +1,299 @@ +/* Toys! + * Contains + * Mahjong Tiles + */ + +/* +|| A Deck of Mahjong tiles for playing exactly one game of chance || +*/ + +//Abstract to hold generic values for mahjong-related items +/obj/item/toy/mahjong + name = "abstract mahjong" + desc = "please do not spawn me" + max_integrity = 50 + var/parentdeck = null + var/card_hitsound = "whitesands/sound/items/mahjongclack.ogg" + var/card_force = 0 + var/card_throwforce = 5 + var/list/card_attack_verb = list("clacked") + +/obj/item/toy/mahjong/proc/apply_card_vars(obj/item/toy/mahjong/newobj, obj/item/toy/mahjong/sourceobj) // Applies variables for supporting multiple types of card deck + if(!istype(sourceobj)) + return + +/obj/item/toy/mahjong/wall + name = "mahjong wall" + desc = "A set of self-shuffling mahjong tiles." + icon = 'whitesands/icons/obj/toy.dmi' + icon_state = "mahjong_wall" + w_class = WEIGHT_CLASS_NORMAL + var/cooldown = 0 + var/obj/machinery/computer/holodeck/holo = null // Holodeck mahjong should not be infinite + var/list/tiles = list() + +/obj/item/toy/mahjong/wall/Initialize() + . = ..() + populate_wall() + +///Generates all the tiles within the wall. +/obj/item/toy/mahjong/wall/proc/populate_wall() + for(var/suit in list("pin", "man", "sou")) + tiles += "red 5-[suit]" + for(var/i in 1 to 9) + for(var/c = 0;c<3;c++) + tiles += "[i]-[suit]" + if(i != 5) + tiles += "[i]-[suit]" + for(var/honor in list("ton","nan","sha","pei","haku","hatsu","chun")) + for(var/c = 0;c<4;c++) + tiles += honor + +//ATTACK HAND IGNORING PARENT RETURN VALUE +/obj/item/toy/mahjong/wall/attack_hand(mob/living/user) + draw_card(user) + +/obj/item/toy/mahjong/wall/proc/draw_card(mob/living/user) + var/mob/living/L = user + if(!(L.mobility_flags & MOBILITY_PICKUP)) + return + var/choice = null + if(tiles.len == 0) + to_chat(user, "There are no more tiles to draw!") + return + var/obj/item/toy/mahjong/singletile/H = new/obj/item/toy/mahjong/singletile(user.loc) + if(holo) + holo.spawned += H // track them leaving the holodeck + choice = tiles[1] + H.cardname = choice + H.parentdeck = src + var/O = src + H.apply_card_vars(H,O) + src.tiles.Cut(1,2) + H.pickup(user) + user.put_in_hands(H) + user.visible_message("[user] draws a tile from the wall.", "You draw a tile from the wall.") + update_icon() + return H + +/obj/item/toy/mahjong/wall/attack_self(mob/user) + if(cooldown < world.time - 50) + tiles = shuffle(tiles) + playsound(src, 'whitesands/sound/items/mahjongshuffle.ogg', 50, TRUE) + user.visible_message("[user] shuffles the wall.", "You shuffle the wall.") + cooldown = world.time + +/obj/item/toy/mahjong/wall/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/toy/mahjong/singletile)) + var/obj/item/toy/mahjong/singletile/SC = I + if(SC.parentdeck == src) + if(!user.temporarilyRemoveItemFromInventory(SC)) + to_chat(user, "The tile is stuck to your hand, you can't add them to the deck!") + return + tiles += SC.cardname + user.visible_message("[user] adds a tile to the end of the wall.","You add the tile to the end of the wall.") + qdel(SC) + else + to_chat(user, "You can't mix tiles from other walls!") + update_icon() + else if(istype(I, /obj/item/toy/mahjong/tilegroup)) + var/obj/item/toy/mahjong/tilegroup/CH = I + if(CH.parentdeck == src) + if(!user.temporarilyRemoveItemFromInventory(CH)) + to_chat(user, "The tiles are stuck to your hand, you can't add it to the deck!") + return + tiles += CH.currentgroup + user.visible_message("[user] puts [user.p_their()] group of tiles in the wall.", "You put the group of tiles in the wall.") + qdel(CH) + else + to_chat(user, "You can't mix tiles from other walls!") + update_icon() + else + return ..() + +/obj/item/toy/mahjong/wall/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 wall.") + + else if(istype(over_object, /obj/screen/inventory/hand)) + var/obj/screen/inventory/hand/H = over_object + if(M.putItemFromInventoryInHandIfPossible(src, H.held_index)) + to_chat(usr, "You pick up the wall.") + + else + to_chat(usr, "You can't reach it from here!") + + + +/obj/item/toy/mahjong/tilegroup + name = "tile group" + desc = "A number of mahjong tiles." + icon = 'whitesands/icons/obj/toy.dmi' + icon_state = "none" + w_class = WEIGHT_CLASS_TINY + var/list/currentgroup = list() + var/choice = null + +/obj/item/toy/mahjong/tilegroup/attack_self(mob/user) + user.set_machine(src) + interact(user) + + +/obj/item/toy/mahjong/tilegroup/ui_interact(mob/user) + . = ..() + var/dat = "You have:
" + for(var/t in currentgroup) + dat += "A [t].
" + dat += "Which tile will you remove?" + var/datum/browser/popup = new(user, "tilegroup", "Group of tiles", 400, 240) + popup.set_content(dat) + popup.open() + +/obj/item/toy/mahjong/tilegroup/Topic(href, href_list) + if(..()) + return + 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"] + var/obj/item/toy/mahjong/singletile/C = new/obj/item/toy/mahjong/singletile(cardUser.loc) + src.currentgroup -= choice + C.parentdeck = src.parentdeck + C.cardname = choice + C.apply_card_vars(C,O) + C.pickup(cardUser) + cardUser.put_in_hands(C) + cardUser.visible_message("[cardUser] draws a tile from [cardUser.p_their()] group.", "You take the [C.cardname] from your group.") + + interact(cardUser) + update_sprite() + if(src.currentgroup.len == 1) + var/obj/item/toy/mahjong/singletile/N = new/obj/item/toy/mahjong/singletile(src.loc) + N.parentdeck = src.parentdeck + N.cardname = src.currentgroup[1] + N.apply_card_vars(N,O) + qdel(src) + N.pickup(cardUser) + cardUser.put_in_hands(N) + to_chat(cardUser, "You also take [currentgroup[1]] and hold it.") + cardUser << browse(null, "window=tilegroup") + return + +/obj/item/toy/mahjong/tilegroup/attackby(obj/item/toy/mahjong/singletile/C, mob/living/user, params) + if(istype(C)) + if(C.parentdeck == src.parentdeck) + src.currentgroup += C.cardname + playsound(src, src.card_hitsound, 50, TRUE) + user.visible_message("[user] adds a tile to [user.p_their()] group.", "You add the [C.cardname] to your group.") + qdel(C) + interact(user) + update_sprite(src) + else + to_chat(user, "You can't mix tiles from other walls!") + else + return ..() + +/obj/item/toy/mahjong/tilegroup/apply_card_vars(obj/item/toy/mahjong/newobj,obj/item/toy/mahjong/sourceobj) + ..() + update_sprite() + newobj.card_hitsound = sourceobj.card_hitsound + newobj.card_force = sourceobj.card_force + newobj.card_throwforce = sourceobj.card_throwforce + newobj.card_attack_verb = sourceobj.card_attack_verb + newobj.resistance_flags = sourceobj.resistance_flags + +/** + * This proc updates the sprite for when you create a hand of tiles + */ +/obj/item/toy/mahjong/tilegroup/proc/update_sprite() + cut_overlays() + var/overlay_mahjong = currentgroup.len + //establish k, which is the remainder of i and 6, pix_x, which is k * 5 and one to the right, and pix_y, which is 7 down for every 6 in i + //then add an overlay for the tile at pix_x and pix_y + for(var/i = 1; i <= overlay_mahjong; i++) + var/x = i + var/k = (i-1)%6 + var/pix_x = 1+(k*5) + var/pix_y = 0 + while(x > 6) + x -= 6 + pix_y -= 7 + var/tile_overlay = image(icon=src.icon,icon_state="mini [currentgroup[i]]",pixel_x=pix_x,pixel_y=pix_y) + add_overlay(tile_overlay) + +/obj/item/toy/mahjong/singletile + name = "mahjong tile" + desc = "A tile used to play mahjong. Made of hard plastic." + icon = 'whitesands/icons/obj/toy.dmi' + icon_state = "haku" + w_class = WEIGHT_CLASS_TINY + var/cardname = "haku" + pixel_x = -5 + +/obj/item/toy/mahjong/singletile/Initialize() + . = ..() + icon_state = "[cardname]" + +/obj/item/toy/mahjong/singletile/examine(mob/user) + . = ..() + if(ishuman(user)) + var/mob/living/carbon/human/cardUser = user + if(cardUser.is_holding(src)) + cardUser.visible_message("[cardUser] checks [cardUser.p_their()] card.", "The card reads: [cardname].") + else + . += "You need to have the card in your hand to check it!" + +/obj/item/toy/mahjong/singletile/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/toy/mahjong/singletile/)) + var/obj/item/toy/mahjong/singletile/C = I + if(C.parentdeck == src.parentdeck) + playsound(src, src.card_hitsound, 50, TRUE) + var/obj/item/toy/mahjong/tilegroup/H = new/obj/item/toy/mahjong/tilegroup(user.loc) + H.currentgroup += C.cardname + H.currentgroup += src.cardname + H.parentdeck = C.parentdeck + H.apply_card_vars(H,C) + 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 tiles from other walls!") + + if(istype(I, /obj/item/toy/mahjong/tilegroup/)) + var/obj/item/toy/mahjong/tilegroup/H = I + if(H.parentdeck == parentdeck) + playsound(src, src.card_hitsound, 50, TRUE) + H.currentgroup += cardname + user.visible_message("[user] adds a tile to [user.p_their()] group.", "You add the [cardname] to your group.") + qdel(src) + H.interact(user) + H.update_sprite() + else + to_chat(user, "You can't mix tiles from other walls!") + else + return ..() + +/obj/item/toy/mahjong/singletile/apply_card_vars(obj/item/toy/mahjong/singletile/newobj,obj/item/toy/mahjong/sourceobj) + ..() + newobj.icon_state = newobj.cardname + 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_attack_verb = sourceobj.card_attack_verb + newobj.attack_verb = newobj.card_attack_verb diff --git a/whitesands/icons/obj/toy.dmi b/whitesands/icons/obj/toy.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d31c047a1f51f576de0c4d55792a21b955ad5a3a GIT binary patch literal 3392 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 Qin6<1r`z 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 H@PPjVG|?d5 literal 0 HcmV?d00001 diff --git a/whitesands/sound/items/mahjongshuffle.ogg b/whitesands/sound/items/mahjongshuffle.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1f4033a09cf6be967dc5dea9be988595db8ec9c0 GIT binary patch literal 23789 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 literal 0 HcmV?d00001