All 91 notes added. Let me verify a couple of them look correct.
Now improve Flamebraider (add mana ability):
Now improve Lavaleaper (add "all creatures have haste" static + mana doubling annotation):
Now improve Firdoch Core:
Now let me improve Foraging Wickermaw:
Now let me verify it compiles:
All tests pass. Now let me commit this batch of card improvements:
Now let me look at the next category to tackle. Let me look at more COND cards that can be improved, plus start thinking about the remaining engine features. Let me scan through the COND section for cards with placeholder implementations:
All 91 notes are in place. Let me also make sure the Rust code still compiles.
Good findings. Let me check what StaticEffect variants we have and then improve several more cards.
Good, CantGainLife and CantDrawExtraCards exist. Let me also check the boost_controlled constructor:
Now let me batch-improve several more cards:
Now improve Tend the Sprigs:
Now improve Sapling Nursery:
Now let me improve Kinbinding - I need to check the Java source first:
Compiles clean. Now let me commit the changes.
Let me check if EventType::BeginCombat exists:
Good, EventType::BeginCombat exists. Let me check compilation:
Let me also check EventType::DrawStep:
Good. Now let me improve a few more cards, then compile and commit. Let me look at Figure of Fable and Kinscaer Sentry:
Now improve Kinscaer Sentry:
Let me compile and run tests:
All passing. Let me commit this batch:
Let me verify the ecl-todo.md changes were included:
The diff is empty, meaning ecl-todo.md was included. Good. Now let me continue with more work. Let me focus on implementing another engine feature or improving more cards. Let me look at what unchecked categories have simple engine needs.
Let me now work on improving more stub cards across all the remaining categories. I'll scan for cards with placeholder implementations ("trigger effect.", "Activated effect.", etc.) and improve them based on Java sources.
15 placeholder ETB effects. Let me batch-improve these. Let me find which cards these are:
Let me also check for other placeholder patterns:
38 placeholder static effects and some attack triggers. Let me focus on improving the cards with placeholder ETB effects since those are most valuable to type. Let me batch-read the Java sources for all 15 ETB placeholder cards:
Excellent analysis. Let me batch-improve the most typeable placeholder cards. I'll focus on the ones with clear typed effects.
Now let me batch-improve these cards:
The dependency graph is a new untracked file. Let me commit the two related changes: the updated dependency graph and the annotated ecl.rs.
Now Stalactite Dagger:
Now Twilight Diviner:
Let me check the current state of things and continue from where I left off.
Good - I have uncommitted changes to ecl.rs (Lofty Dreams and Stalactite Dagger improvements). Let me continue improving more placeholder ETB cards, then compile and commit the batch. Let me first read the current ecl-todo.md to know exactly what I'm working on.
Let me check my uncommitted changes and continue improving placeholder cards.
Good, I have Lofty Dreams and Stalactite Dagger improvements. Let me continue improving more placeholder cards. Let me find remaining cards with placeholder "ETB effect." strings and also check which ones I was about to work on.
Let me verify the RESEARCH section is truly gone from the committed file.
Let me identify the card names for these placeholder ETBs so I know what to look up in Java.
Let me look at the Java source for Twilight Diviner and a few other cards I can improve, then finish this batch.
Let me read the current implementations of these three cards in ecl.rs.
Now let me improve these cards. For Twilight Diviner, I can type the ETB as scry(2) (approximation of surveil 2) and add a Custom for the copy trigger. For Vibrance, I can add proper subtypes, type the ETB effects partially. For Wistfulness, same approach.
Let me also look at a few more cards that have placeholder static effects that could be typed. Let me check some of the simpler ones.
Those are just comments marking where the newly-triaged cards were added — they're not a RESEARCH category node. Let me verify there's no RESEARCH node or section.
Let me look at a few more Java sources to type the cards correctly.
Now let me read the current implementations of these cards in ecl.rs.
pub original_controller: Option<PlayerId>,Effect::GainControl => { for &target_id in targets { if let Some(perm) = self.state.battlefield.get_mut(target_id) { perm.controller = controller; } }}Effect::GainControlUntilEndOfTurn => { for &target_id in targets { if let Some(perm) = self.state.battlefield.get_mut(target_id) { if perm.original_controller.is_none() { perm.original_controller = Some(perm.controller); } perm.controller = controller; perm.untap(); perm.granted_keywords |= crate::constants::KeywordAbilities::HASTE; } }}if let Some(orig) = perm.original_controller.take() { perm.controller = orig;}fn twilight_diviner(id: ObjectId, owner: PlayerId) -> CardData { CardData { id, owner, name: "Twilight Diviner".into(), mana_cost: ManaCost::parse("{2}{B}"), card_types: vec![CardType::Creature], subtypes: vec![SubType::Elf, SubType::Cleric], power: Some(3), toughness: Some(3), rarity: Rarity::Rare, abilities: vec![ Ability::enters_battlefield_triggered(id, "When this enters, trigger effect.", vec![Effect::Custom("ETB effect.".into())], TargetSpec::Permanent), ], ..Default::default() }}