Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Makes playing cards playable -- significantly reworks card interactions #26585

Merged
merged 45 commits into from
Nov 29, 2024

Conversation

lewcc
Copy link
Contributor

@lewcc lewcc commented Aug 24, 2024

What Does This PR Do

Heavily reworks card interactions. I've been re-working most of their interactions to facilitate actually being able to play the game efficiently. As such, there has been a lot of QoL improvements.

I'll list out most of them here.

Keybinds and Usage

The way you've historically interacted with card decks was a careful system of guessing and checking which interactions worked. I've tried to streamline the interactions to make usage a lot easier. Most of these controls should be visible on examine (or extended examine).

Left-Clicking a deck with or without a card in hand will try to draw a card.
Alt-Clicking a deck will try to place a card in the deck.
Drag your card-hand to the deck to return it.
Alt-clicking a card hand in your hands will pull up the old interface, if you had muscle memory for it somehow.

The same general vibes apply for other card hands.
Alt-clicking a card hand with another in your hands will let you insert a card into the other hand.
Clicking a card hand with another in your hands will let you draw a card from it.
Click-Dragging a deck to another will merge them.
You can also click-drag an adjacent deck to you to draw a card from it without picking it up. This will let you draw cards face-down.

In-hand radial view

When clicking on a card in your hand or alt-clicking the deck to play a card, you get a popup radial menu that shows you all of the cards in your hand to pick from.

saUTuQAx

Playing Flourish

When you play or draw a card in harm intent, it'll do a little flourish, similar to using a tarot card. This should hopefully allow players to make it obvious what they're drawing, depending on the context.
qwwmDxPC
(sorry for the freezing gif, it hit a breakpoint)

Playing from Range

I feel like the best games of cards are played over a table that's just slightly too large. In ss13, I think you just sometimes need the space, especially if you have your deck on the table in front of you.

Playing card decks, when placed on a table, will allow anyone within one tile of any connected table. As long as the tables are contiguous, you can make a huge card table!

VVlYSFpA.mp4

The cards in this aren't visible in-game, but if you're standing on one of them, it lets you interact with it. You can see if a card deck can be played to from your current tile by examining it.

You can also throw cards onto the top of the deck, if you're feeling spicy. If you're in throw mode and have a deck in hand, any cards thrown at you will enter your deck.

Deck splitting

Decks can now be split into many sub-decks that can all interplay with one another. These decks can also be renamed with a pen, so you can label your separate discard pile, which can then be merged back into the main deck. Any cards that came from the main deck can also be used in any number of sub-decks.

Deck-flipping (Unum Only)

You can now flip unum decks to show a card on the top. It'll update as cards are played to and from the top of the deck, so you can easily see what the last played card looked like.

GATTRsrL

Since we don't yet have stacked unum-like deck sprites for any other card decks, this only works for unum. This is something I'd like to bring to other card decks, though.

Why It's Good For The Game

If you're trying to play a game in a game, it really shouldn't be close to how inconvenient cards currently are. I hope that I can lower the barrier of complexity so people might actually want to just whip out a game of unum without having to deal with the weird annoying deck mechanics that previously existed.

I also hope people have fun with this! I love to play some card games during chill rounds and I hope this makes that easier down the line.

Images of changes

See above.

Testing

Quite a bit. I've verified that the interactions should work properly, and hopefully improve the card experience. In particular, I've tested a few different ways to make sure you can't play cards from where you shouldn't be able to.


Declaration

  • I confirm that I either do not require pre-approval for this PR, or I have obtained such approval and have included a screenshot to demonstrate this below.

image


Changelog

🆑
tweak: Playing cards and decks have a whole new set of controls and interactions! Examine them to learn more.
tweak: Playing or drawing a card in harm intent now makes a bright, tarot-like flourish.
tweak: Playing cards now use a radial menu by default to select a card to draw or play. Alt-click for the classic interface.
tweak: Card-hands can be fully returned to a deck by dragging them.
tweak: Unum decks can be flipped over by alt-clicking them in hand, exposing the card on top.
tweak: Card decks can now be split into two, with all cards and decks being able to interplay.
tweak: You can now play or draw cards from a distance. Examine a deck to see if you're in-range!
/:cl:

@lewcc
Copy link
Contributor Author

lewcc commented Aug 24, 2024

I really want to see this test-merged before it goes in so I can get some playtesting and feels for the controls.

var/atom/movable/atom_parent = parent

// if we don't have a parent, just treat it normally
if(!isturf(atom_parent.loc) || !locate(/obj/structure/table) in get_turf(parent))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wait im dumb

@ParadiseSS13-Bot ParadiseSS13-Bot added the -Status: Awaiting type assignment This PR is waiting for its type to be assigned internally label Aug 24, 2024
@BiancaWilkson BiancaWilkson added Feature This PR is a new addition to the game Tweak This PR tweaks something ingame labels Aug 24, 2024
@github-actions github-actions bot added the Merge Conflict This PR is merge conflicted label Aug 24, 2024
@github-actions github-actions bot removed the Merge Conflict This PR is merge conflicted label Aug 24, 2024
@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting approval This PR is waiting for approval internally and removed -Status: Awaiting type assignment This PR is waiting for its type to be assigned internally labels Aug 24, 2024
@ParadiseSS13-Bot ParadiseSS13-Bot removed the -Status: Awaiting approval This PR is waiting for approval internally label Aug 24, 2024
@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting merge This PR is ready for merge and removed -Status: Awaiting review This PR is awaiting review from the review team labels Nov 20, 2024
code/datums/components/proximity_monitor.dm Outdated Show resolved Hide resolved
code/datums/components/proximity_monitor.dm Show resolved Hide resolved
code/game/gamemodes/wizard/magic_tarot.dm Outdated Show resolved Hide resolved
code/game/gamemodes/wizard/magic_tarot.dm Outdated Show resolved Hide resolved
Co-authored-by: DGamerL <[email protected]>
Signed-off-by: Luc <[email protected]>
@Burzah Burzah added this pull request to the merge queue Nov 21, 2024
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Nov 21, 2024
@Burzah Burzah added this pull request to the merge queue Nov 21, 2024
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Nov 21, 2024
@Burzah Burzah added this pull request to the merge queue Nov 28, 2024
github-merge-queue bot pushed a commit that referenced this pull request Nov 28, 2024
…ns (#26585)

* Basic card interactions

* initial interactions sorted

* nails down some interactions, radial menu

* Some more qol and keybind changes

* improves card interactions

* Unum decks can be flipped, showing the top card

* Decks can now be split and recombined

* minor tweaks to multi-deck stuff

* Clean up a bunch of interactions

* more cleanups

* more cleanups and documentation

* remote attacking looks pretty good

* minor cleanups

* ci

* parser errs

* Remove some debug things, re-add signal after merge

* Adds a whole bunch more qol.

* Improves examine messages

* ci

* concealed cards will now show properly in radial

* Fixes some weird proximity monitor and control issues

* Address reviews, clean up examine a bit more

* radial fixes

* remove todos

* Apply suggestions from code review

Co-authored-by: Burzah <[email protected]>
Signed-off-by: Luc <[email protected]>

* better documentation, adds label of who did what

* b etter grammar

* augh

* missing icon state

* Update code/game/gamemodes/wizard/magic_tarot.dm

Co-authored-by: Burzah <[email protected]>
Signed-off-by: Luc <[email protected]>

* Apply suggestions from code review

Co-authored-by: DGamerL <[email protected]>
Signed-off-by: Luc <[email protected]>

* Add sleep on proximity monitor setup to hopefully avoid mapload issues

* been writing too much c lately

---------

Signed-off-by: Luc <[email protected]>
Co-authored-by: Burzah <[email protected]>
Co-authored-by: DGamerL <[email protected]>
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Nov 28, 2024
@DGamerL DGamerL added this pull request to the merge queue Nov 29, 2024
@DGamerL DGamerL removed this pull request from the merge queue due to a manual request Nov 29, 2024
@DGamerL DGamerL added this pull request to the merge queue Nov 29, 2024
Merged via the queue into ParadiseSS13:master with commit 8da12bc Nov 29, 2024
12 checks passed
Legendaxe added a commit to ss220club/Paradise-SS220 that referenced this pull request Dec 3, 2024
## Что этот PR делает
Мергес апстрим.

> [!IMPORTANT]
> Надо обновить конфиг и применить:
> - SQL/updates/62-63.sql
> - tools/pr_sql/27268/snake_case_typepaths.py
> - tools/pr_sql/_220/1677/snake_case_typepaths.py

> [!NOTE]
> Вики:
> - Ревайвер имплант.
> - Спрайты кресел, стульев.
> - Борги роверы.
> - Красильщик декалей.
> - Плата вендора NT Merch.

## Changelog

:cl: ParadiseSS13
add: Красильщик декалей - новый режим модульного красильщика,
позволяющий наносить напольные знаки и разметку.
add: Игральные карты были переработаны и стали удобнее. Подробности
[тут](ParadiseSS13#26585).
add: Рингтон ПДА теперь является настройкой персонажа.
add: При телепортации гостом в руину теперь отображается ее имя и
описание.
imageadd: Респрайт некоторых стульев и кресел.
imageadd: Борг Rover получил сервисную и медицинскую комплектации.
soundadd: Добавлен звуковой эффект нескольким датчикам, испускающим
сигналы.
tweak: Имплант Reviver теперь может лечить после смерти и воскрешать.
tweak: Увеличен технологический уровень импланта Reviver.
tweak: Улучшенное кибернетическое сердце лучше лечит при крите и
запускает сердце.
tweak: Надежда Пандоры теперь лечит лучше.
tweak: Шахтерский резонатор теперь вызывает резонирующую волну после
взрыва. Улучшенная версия может размещать ловушки.
tweak: Костюмы плазмаменов теперь можно покрасить.
tweak: Спецодежда отделов добавлена в лодаут.
tweak: Интерфейс ИИ стал удобнее и лучше масштабируется.
tweak: Все мосты на Лаваленде теперь расположены над лавой.
tweak: Плата автомата NT Merch добавлена в Circuit Imprinter.
fix: Автомат NT Merch теперь можно открутить и двигать.
fix: Плащи теперь можно поместить в чехлы для одежды.
fix: Режим бога теперь допускает еще меньше урона.
fix: Покрашенные вещи теперь корректно меняют внешний вид и описание.
fix: Комбинезоны теперь повышают устойчивость к вирусам.
fix: Общение через разум улья теперь учитывает настройки рунчата.
fix: Записи в Crew monitor больше не должны дублироваться.
fix: Пончики с бунго теперь можно приготовить.
fix: Исправлено отсутствие пола под ложными стенами в космическом
мотеле.
fix: Больше нельзя изменить направление деревянного телевизора
мультитулом, сдвинув его спрайт на тайл.
fix: Тайлы астероидов больше нельзя открутить отверткой.
fix: Устройства МОДов больше не падают на землю при неудачной попытке их
развернуть.
/:cl:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-Status: Awaiting merge This PR is ready for merge Feature This PR is a new addition to the game Tweak This PR tweaks something ingame
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants