**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>
178 lines
5.9 KiB
Markdown
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.
|