efd-trading-card-base/CLAUDE.md
Cal Corum 44fd044541 Optimize CLAUDE.md from 240 to 63 lines
Remove detailed reflection patterns (belong in code comments), project status
tracking, completed features list, and implementation approach docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 08:31:10 -06:00

63 lines
2.5 KiB
Markdown

# EfD Trading Card Mod
Unity mod for Escape from Duckov adding a customizable trading card system with storage.
## Commands
```bash
dotnet build TradingCardMod.csproj # Build (debug)
dotnet build TradingCardMod.csproj -c Release # Build (release)
dotnet test TradingCardMod.Tests.csproj # Run tests
./deploy.sh # Build + deploy to game
./deploy.sh --release # Deploy release build
./remove.sh # Remove mod from game
```
**Before building**: Update `DuckovPath` in `TradingCardMod.csproj` (line 10) to your game path.
## Project Skills
- `/build` — Build and deploy locally for testing
- `/deploy` — Build Release and stage for Steam Workshop upload
## Architecture
- **Clone + Reflection**: Clone game items as templates (base ID 135), set private fields via reflection
- **Custom tags**: Clone existing ScriptableObject tags. Parent tag pattern for slot filtering (Unity requireTags uses AND logic)
- **TypeIDs**: 100000+ range to avoid game/mod conflicts
- **Cost struct reflection**: Cost is a value type — must box before reflection, then unbox (see `DisassemblyHelper.cs`)
### Key Classes
| Class | Role |
|-------|------|
| `ModBehaviour` | Entry point, card set loading/cleanup |
| `Patches` | Harmony runtime method patches |
| `CardParser` | Pipe-separated card file parser (pure C#, fully tested) |
| `PackUsageBehavior` | Card pack opening with gacha-style rarity weights |
| `StorageHelper` | Multi-tag slot filtering for hierarchical storage |
| `DisassemblyHelper` | Runtime disassembly formulas via reflection |
### Dependencies
- **HarmonyLoadMod** (Workshop 3589088839): Required — provides Harmony 2.4.1
- **ModConfig** (Workshop 3592433938): Optional — enhances card descriptions in inventory
## Card Sets
Cards defined in `CardSets/{SetName}/cards.txt`:
```
CardName | SetName | SetNumber | ImageFile | Rarity | Weight | Value | Description (optional)
```
Images in `CardSets/{SetName}/images/`. Prefix folder with `_` to disable loading.
## Storage System
- **Binder Sheet** (9 slots): Holds trading cards only
- **Card Binder** (12 slots): Holds cards OR binder sheets (nested storage)
## Dev Notes
- Target: .NET Standard 2.1, C# 8.0
- Logging: `Debug.Log()` with `[TradingCardMod]` prefix
- Log file: `/mnt/NV2/SteamLibrary/steamapps/compatdata/3167020/pfx/drive_c/users/steamuser/AppData/LocalLow/TeamSoda/Duckov/Player.log`
- Research: `.claude/scratchpad/decompiled/`, `.claude/scratchpad/item-system-analysis.md`