* update SacrificeAttachmentCost to work with canPaySacrificeCost
* update SacrificeXTargetCost to use canPaySacrificeCost
* update SacrificeXManaValueCost to use canPaySacrificeCost and getMaxValue
* update Phyrexian Dreadnought to use canPaySacrificeCost
* enable testNahiriSacrificePrevented test
* Fix Angel of Jubilation and Yasharn, Implacable Earth
* canPaySacrificeCost filter was not checking if the source ability was a spell or activated ability
* Create common CantPayLifeOrSacrificeEffect
* add some docs for CantPayLifeOrSacrificeEffect
* change player pay life restrictions and remove player sacrifice cost filter
* pay life cost restriction is now an enum set so multiple effects apply together
* sacrifice cost filter was removed and replaced with PAY_SACRIFICE_COST event
* convert CantPayLifeEffect to CantPayLifeOrSacrificeAbility
* Changed to combine life restriction and sacrifice cost restriction
* update bargain ability cost adjustors using canPay
* fix Thran Portal
* Effect was incorrectly adjusting the cost of mana abilities on itself.
* Fixed ability adding type to itself during ETB
* Add additional tests
* update PayLifeCostRestrictions to be mutually exclusive
Fixes the trigger firing for all attacking creatures, not just equipped
ones.
Restores the equipped predicate removed in commit db193bd4 (#13707) and
adds tests to prevent future regressions.
- refactor: simplified target implementation from a dozen canTarget, canChoose and possibleTargets methods to canTarget/possibleTargets only (part of #13638, #13766);
- refactor: fixed wrong target implementations in many cards (example: TargetCardInHand for opponent's hand, close#6210);
- AI: now human, AI and test players -- all use possibleTargets logic in most use cases instead filters or custom validation;
- AI: improved AI sims support for multiple targets abilities;
- AI: improved AI stability, freezes and targets errors in some use cases;
- now game logs will show stack ability on push and on resolve (before any choices);
- now game logs will show used choices made by cast/activate, setChoice, setMode and addTarget commands (not work for AI tests, part of #13832);
- improved choice logic for modes and yes/not dialogs (now it's use a more strictly checks, use TestPlayer.MODE_SKIP to stop mode selection);
- improved error logs and testable dialogs menu in cheat mode;
* add foretell tests
* rework foretell events and watcher
* refactor: not static inner classes
* refactor: move becomes foretold code from Ethereal Valkyrie to ForetellAbility
* add watcher for edge cases
* fix Ethereal Valkyrie to not leak face down card name in log
* fix some access modifiers
* refactor: make copy-pasted code common