Batch 10 complete. Here's the summary:
Engine change: Added Effect::AddCountersSelf { counter_type, count } variant + add_counters_self() constructor + match arm in execute_effects. Unlike AddCounters (which falls back to source only when targets are empty), AddCountersSelf always applies counters to the source permanent regardless of other targets. This enables compound effects where one part targets self and another targets a chosen creature.
Cards fixed (1):
- Warren Torchmaster (ECL) —
Effect::Custom(...) → add_counters_self("-1/-1", 1) + gain_keyword_eot("haste") with TargetSpec::Creature + .set_optional(). Matches the Java implementation's BlightCost(1) + ReflexiveTriggeredAbility pattern.
- Dream Seizer was already fixed in Batch 3 (noted in queue as already done).
Test added: add_counters_self_with_separate_target — verifies that in a compound effect, AddCountersSelf puts -1/-1 on the source while GainKeywordUntilEndOfTurn grants haste to the target, with neither effect bleeding to the wrong permanent.
All 255 tests passing.