feature updates

This commit is contained in:
2026-02-02 16:28:53 -05:00
parent bf9aa3fa23
commit 44c06530ac
83 changed files with 282641 additions and 11251 deletions

108
PLAN.md Normal file
View File

@@ -0,0 +1,108 @@
# Plan: Improve Low Confidence Ability Parsing
## Current State
- 1,008 abilities have LOW confidence (14.9% of total)
- All have "No effects parsed" - the parser didn't match any pattern
## Pattern Categories to Fix
### Priority 1: High Count Patterns (700+ abilities)
#### 1.1 "Cannot be X" (148 abilities)
Examples:
- "Lann cannot be blocked by a Forward with a power greater than his"
- "Terra cannot be chosen by opponent's Summons"
- "Zidane cannot be blocked by a Forward of cost 4 or more"
**Effect Type:** `BLOCK_IMMUNITY` or `SELECTION_IMMUNITY`
**Fields needed:** condition (power comparison, cost comparison), from (opponent summons, etc.)
#### 1.2 "IF conditional" (186 abilities)
Examples:
- "If this Forward blocks or is blocked by a Forward without First Strike, this Forward deals damage first"
- "If Shantotto is on the field, it gains Elements of Fire, Ice, Wind..."
- "If a Forward forming a party with Knight is dealt damage, the damage becomes 0 instead"
**Effect Type:** `CONDITIONAL_FIELD_EFFECT`
**Fields needed:** condition, effect (nested)
#### 1.3 "Cost modification" (102 abilities)
Examples:
- "The cost required for your opponent to cast Summons increases by 1"
- "The cost required to play Lightning is reduced by 1 for each [Category (XIII)] Forward"
- "This Character can attack or use abilities the turn it enters the field" (Haste-like)
**Effect Type:** `COST_MODIFIER`
**Fields needed:** target_cards (filter), amount (static or dynamic), applies_to (self/opponent)
#### 1.4 "Your opponent X" (86 abilities)
Examples:
- "Your opponent may play 1 Character Card from his/her hand"
- "Summons or abilities of your opponent must choose Cecil if possible"
- "Kimahri gains Elements of all the Characters your opponent controls"
**Effect Type:** Various - `OPPONENT_ACTION`, `TAUNT`, `GAIN_ELEMENTS`
#### 1.5 "Cannot X" (45 abilities)
Examples:
- "Lann cannot block a Forward with a power greater than his"
- "Naji cannot attack"
- "You cannot play Hooded Man while already in control of either Character"
**Effect Type:** `RESTRICTION`
**Fields needed:** restriction_type (ATTACK, BLOCK, PLAY), condition
### Priority 2: Medium Count Patterns (70+ abilities)
#### 2.1 "Replacement effect" (32 abilities)
Examples:
- "the next damage dealt to you becomes 0 instead"
- "reduce the damage by 2000 instead"
**Effect Type:** `DAMAGE_REPLACEMENT` or `DAMAGE_PREVENTION`
#### 2.2 "When trigger (embedded)" (28 abilities)
These have triggers embedded in FIELD abilities
#### 2.3 "Each X" (23 abilities)
Examples:
- "each Forward you control gains +1000 power"
- "each time a card is put into your Break Zone"
### Priority 3: Low Count Patterns
#### 3.1 "Return X" (17 abilities) - May already be partially handled
#### 3.2 "You may X" (15 abilities)
#### 3.3 "Gains ability text" (7 abilities)
#### 3.4 "All X you control" (4 abilities)
#### 3.5 "Other" (311 abilities) - Need further categorization
## Implementation Plan
### Phase 1: Add FIELD ability patterns for common types
1. Add patterns for "cannot be blocked by X"
2. Add patterns for "cannot be chosen by X"
3. Add patterns for "cannot attack/block" (self restriction)
4. Add patterns for cost modification (increase/reduce for specific cards)
### Phase 2: Add conditional wrapper support
1. Parse "If X, then Y" structure
2. Support nested effects inside conditionals
3. Handle "gains X until end of turn" with ability text
### Phase 3: Add opponent interaction patterns
1. "opponent must choose X if possible" (taunt)
2. "opponent may X" (optional opponent actions)
3. "gains elements of opponent's cards"
### Phase 4: Add replacement effects
1. "damage becomes 0 instead"
2. "reduce damage by X instead"
### Phase 5: Review remaining "other" category
- Further categorize the 311 remaining
- Add patterns for common sub-groups
## Expected Outcome
- Target: Reduce LOW confidence from 1,008 to <300
- This would bring HIGH confidence from 79.4% to ~90%