efd-trading-card-base/README.md
Cal Corum 1050d4f018 Add hierarchical storage system, card set exclusion, and weight adjustments
**Storage System Improvements:**
- Renamed "Card Binder" → "Binder Sheet" (9 slots, weight 0.1)
- Renamed "Card Box" → "Card Binder" (12 slots, weight 1.5)
- Implemented nested storage: Binder Sheets can be stored in Card Binders
- Created new "BinderSheet" tag for hierarchical filtering
- Updated StorageHelper to support multi-tag slot filtering

**Card Set Management:**
- Added folder prefix exclusion: folders starting with `_` are skipped
- Skipped sets are logged and counted
- ModConfig displays disabled card sets count

**Technical Changes:**
- TagHelper: Added GetOrCreateBinderSheetTag() method
- StorageHelper: Modified CreateCardStorage() to accept List<Tag>
- ModBehaviour: Added _skippedSetsCount field and exclusion logic
- Updated documentation (CLAUDE.md, README.md)

**Why:**
- Hierarchical storage provides better organization for large collections
- Lighter weights make storage items more practical
- Folder exclusion enables easy management of WIP/seasonal content
- Multi-tag filtering creates flexible storage systems

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:22:43 -06:00

178 lines
5.9 KiB
Markdown

# Trading Card Mod for Escape from Duckov
A customizable trading card system that lets you add your own card sets to the game.
## Features
- **Custom Card Sets** - Create your own trading cards with custom artwork and stats
- **Card Packs** - Open randomized card packs with gacha-style rarity distribution
- **Hierarchical Storage System** - Organize your collection with:
- **Binder Sheets** (9 slots, lightweight) - Hold individual cards
- **Card Binders** (12 slots) - Hold cards OR binder sheets for nested storage
- **Card Set Management** - Disable card sets by prefixing folder names with `_`
- **User-Friendly Format** - Define cards using simple pipe-separated text files
- **ModConfig Integration** - Enhanced card info display and mod statistics (optional)
- **No Programming Required** - Add new card sets without writing any code
## Requirements
**Required Mod Dependency:**
- [HarmonyLib (HarmonyLoadMod)](https://steamcommunity.com/sharedfiles/filedetails/?id=3589088839) - Subscribe on Steam Workshop
This mod requires the HarmonyLoadMod to be installed. It provides the Harmony library that many mods share to avoid version conflicts.
**Optional Mod Dependency:**
- [ModConfig](https://steamcommunity.com/sharedfiles/filedetails/?id=3592433938) - Subscribe on Steam Workshop
ModConfig is optional but recommended. When installed, it:
- Adds card set information (set name, card number, rarity) to item descriptions in your inventory
- Displays mod statistics including total cards loaded, packs available, and disabled card sets
## Installation
1. Subscribe to [HarmonyLib](https://steamcommunity.com/sharedfiles/filedetails/?id=3589088839) on Steam Workshop
2. (Optional) Subscribe to [ModConfig](https://steamcommunity.com/sharedfiles/filedetails/?id=3592433938) for enhanced card descriptions
3. Build the mod (see Development section)
4. Copy the `TradingCardMod` folder to your game's `Duckov_Data/Mods` directory
5. Launch the game and enable the mods in the Mods menu (HarmonyLib is required, ModConfig is optional)
## Adding Card Sets
### Creating a New Card Set
1. Create a new folder in `CardSets/` with your set name (e.g., `CardSets/MyCards/`)
2. Create a `cards.txt` file in your folder
3. Create an `images/` subfolder for card artwork
### Card Definition Format
Cards are defined in `cards.txt` using pipe-separated values:
```
CardName | SetName | SetNumber | ImageFile | Rarity | Weight | Value | Description (optional)
```
Example:
```
Blue Dragon | Fantasy Set | 001 | blue_dragon.png | Ultra Rare | 0.05 | 500| A majestic dragon with scales of sapphire blue.
Fire Sprite | Fantasy Set | 002 | fire_sprite.png | Rare | 0.05 | 100
```
### Field Descriptions
| Field | Description | Example |
|-------|-------------|---------|
| CardName | Display name of the card | "Blue Dragon" |
| SetName | Name of the collection | "Fantasy Set" |
| SetNumber | Number for sorting (as integer) | 001 |
| ImageFile | Image filename in images/ folder | "blue_dragon.png" |
| Rarity | Card rarity tier | Common, Uncommon, Rare, Ultra Rare |
| Weight | Physical weight in game units | 0.05 |
| Value | In-game currency value | 500 |
| Description | Optional flavor text for the card | "A majestic dragon..." |
### Image Requirements
- Place images in your cardset's `images/` subfolder
- Recommended format: PNG
### Comments
Lines starting with `#` are treated as comments and ignored:
```
# This is a comment
# CardName | SetName | SetNumber | ImageFile | Rarity | Weight | Value
Blue Dragon | Fantasy Set | 001 | blue_dragon.png | Ultra Rare | 0.01 | 500
```
## Disabling Card Sets
To temporarily disable a card set without deleting it, prefix the folder name with an underscore `_`:
```
CardSets/
├── MyActiveSet/ # This set will load
├── _MyTestSet/ # This set will be skipped
└── _SeasonalCards/ # This set will be skipped
```
Disabled sets are:
- Skipped during mod initialization
- Logged in the game console for reference
- Counted and displayed in ModConfig (if installed)
This is useful for:
- Work-in-progress card sets
- Seasonal or event-specific content
- Testing different configurations
## Folder Structure
```
TradingCardMod/
├── TradingCardMod.dll
├── info.ini
├── preview.png
├── CardSets/
│ ├── ExampleSet/
│ │ ├── cards.txt
│ │ └── images/
│ │ └── (card images here)
│ └── YourCustomSet/
│ ├── cards.txt
│ └── images/
└── README.md
```
## Development
### Requirements
- .NET SDK (for .NET Standard 2.1)
- Escape from Duckov installed
### Building
1. Update `DuckovPath` in `TradingCardMod.csproj` to point to your game installation
2. Build the project:
```bash
dotnet build
```
3. The compiled DLL will be in `bin/Debug/netstandard2.1/`
### Linux Steam Paths
Common Steam library locations on Linux:
- `~/.steam/steam/steamapps/common/Escape from Duckov`
- `~/.local/share/Steam/steamapps/common/Escape from Duckov`
### Testing
1. Copy the build output to `Duckov_Data/Mods/TradingCardMod/`
2. Launch the game through Steam
3. Enable the mod in the Mods menu
4. Check the game's log for `[TradingCardMod]` messages
## Troubleshooting
### "CardSets directory not found"
The mod will create this directory automatically. Add your card sets there.
### Cards not appearing
- Check that `cards.txt` follows the exact format (7 pipe-separated fields)
- Ensure image files exist in the `images/` subfolder
- Check the game log for parsing errors
### Build errors
- Verify `DuckovPath` in the .csproj points to your actual game installation
- Ensure you have .NET SDK installed with `dotnet --version`
## License
This mod is provided as-is for personal use. Do not distribute copyrighted card artwork.
## Credits
Built using the official Duckov modding framework and building on the awesome work of the AdditionalCollectibles mod.