Skip to content

Initial Cards

wzyyy7777 edited this page Aug 30, 2026 · 2 revisions

Initial Cards

Sprint 1 starter set for Team 6 (Feature #5). These six cards ship in source/core/assets/configs/cards.json and are used to exercise the full load → validate → register → retrieve path.

Related pages:

Sprint Grouping → CardType Mapping

Member5 deliverables describe the set as 2 Attack / 2 Defence / 2 Utility. The data model uses Slay the Spire-style CardType values (ATTACK, SKILL, POWER, STATUS, CURSE). Mapping used for the initial set:

Sprint group Count Card IDs CardType Typical effects
Attack 2 strike, poison_dagger ATTACK DAMAGE (+ optional POISON)
Defence 2 defend, bandage SKILL BLOCK, HEAL
Utility 2 expose, inner_focus SKILL / POWER VULNERABLE, STRENGTH

Card category stays separate from effects: a card's type does not restrict which effect types it may carry.

The Six Cards

ID Name Cost Type Rarity Target Effects Texture
strike Strike 1 ATTACK COMMON SINGLE_ENEMY DAMAGE 6 images/cards/strike.png
poison_dagger Poison Dagger 1 ATTACK UNCOMMON SINGLE_ENEMY DAMAGE 4; POISON 3 for 3 turns images/cards/poison_dagger.png
defend Defend 1 SKILL COMMON SELF BLOCK 5 images/cards/defend.png
bandage Bandage 1 SKILL COMMON SELF HEAL 6 images/cards/bandage.png
expose Expose 1 SKILL UNCOMMON ALL_ENEMIES VULNERABLE 2 for 2 turns images/cards/expose.png
inner_focus Inner Focus 2 POWER RARE SELF STRENGTH 2 (rest of combat) images/cards/inner_focus.png

Descriptions and texture paths are temporary placeholders where final art/copy is not ready yet.

Testing Procedure

Automated end-to-end

From the source/ directory:

./gradlew core:test --tests 'com.csse3200.game.cards.CardsEndToEndTest'

CardsEndToEndTest covers:

  1. Load the real configs/cards.json through CardConfigLoader
  2. Register all loaded configs into CardLibrary
  3. Retrieve all six cards by ID
  4. Assert key fields for Attack / Defence / Utility groups
  5. Confirm unknown IDs return Optional.empty()

Also run the full card suite before merging:

./gradlew core:test --tests 'com.csse3200.game.cards.*'

Manual smoke check (optional)

List<CardConfig> cards = CardConfigLoader.loadCards();
CardLibrary library = new CardLibrary(cards);

library.getCard("strike").orElseThrow();
library.getAllCards().size(); // expect 6
library.getCard("nonexistent").isEmpty(); // expect true

Known Limitations

  • Only six cards are defined for Sprint 1 integration and testing.
  • Texture files under images/cards/ may not exist yet; paths are reserved for later asset work.
  • Descriptions are temporary and may change with design / Team 5 combat balancing.
  • The set includes only one POWER card (inner_focus). STATUS and CURSE have no initial representatives.
  • Runtime card entities (hand, draw pile, play resolution) are outside this page; ownership is coordinated with Team 5.
  • Energy, damage, and status-effect semantics must stay compatible with Team 7 player/status representations.

Regression Checklist (before merge to main)

  • configs/cards.json still contains exactly these six unique IDs
  • ./gradlew core:test passes, including CardsEndToEndTest
  • Card Library API docs still match public method names (getCard, getAllCards)
  • Cross-team notes for Team 5 / Team 7 are recorded on Feature #5 or linked issues

Table of Contents

Home

Game Engine

Getting Started

Entities and Components

Service Locator

Loading Resources

Logging

Unit Testing

Debug Terminal

Input Handling

UI

Animations

Audio

AI

Physics

Game Screens and Areas

Terrain

Concurrency & Threading

Settings

Encounters
Tutorials and Contextual Help (Team 2)
Cards (Team 6)
Story (Team 6)
Level design, battle system, turn order, spawn (Team 3)
Cards, Save/Load & Bestiary (Team 5)
Rewards and Battle Settlement (Team 7)

Troubleshooting

MacOS Setup Guide

Clone this wiki locally