* no need to specify mana cost, just add cost
* handle all mana costs through addcost method only
* eliminate another constructor
* more constructor cleanup
1a. Make `costs`, `manaCosts`, and `manaCostsToPay` private in `AbilityImpl` with access through getters/setters
1b. fix cost adjuster for imprinted cards affected by the above
2a. Lazy instantiation for rarely used `data` field in `TargetPointerImpl`
3a. Pre-allocate certain array sizes in `Modes` and `CostsImpl`
4a. Make `manaTemplate` private in `BasicManaEffect`, copy when passing outside the class
4b. Don't copy `manaTemplate` in copy constructor since it doesn't change
4c. Add comments explaining copy usage for `manaTemplate`
4d. Remove redundant variable assignment and make fields final
---------
Co-authored-by: xenohedron <xenohedron@users.noreply.github.com>
* apply regex to change public copy constructors to protected
* cleanup code using now protected constructors
* fix manaBuilder weird casting of Mana into ConditionalMana
* replaced blocking/blocked by predicates
* added test for knight of dusk (currently fails)
* added source parameter to filters and everything else that needs it
* some changes to various predicates
* test fix
* small changes to filter code
* merge fix
* fixed a test failure
* small change to Karn, Scion of Urza
* removed sourceId from filter methods and other similar places
* added new getobject method to fix some test failures
* a few more fixes
* fixed merge conflicts
* merge fix
* refactor all instances of getRule in triggered abilities using new getTriggerPrefix method
* updated triggered ability rules generation
* renamed method
* fixed a test failure
* some more refactoring
* simplified some instances of ability word usage
* removed and renamed SubTypeList
* updated subtype test
* refactored Changeling to be an ability that actually does something
* moved isAllCreatureTypes into SubTypes class
* renamed copyTo method to copyFrom
* added removeAllCreatureTypes where usable
* replaced some subtype methods
* replaced some more subtype methods
* replaced subtype mass add/remove methods
* updated more subtype methods
* fixed some errors
* made common shared creature type predicate
* refactored another card involving subtypes
* Added usage of object attribute in subTypes's write operations;
* Refactor: use same param styles in subtype methods
* Refactor: simplified usage of copy appliers;
* Refactor: fixed code usage in CopyApplier
Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
* updated Changelings to use setIsAllCreatureTypes
* updated Dr Julius Jumblemorph and Mistform Ultimus to not use changeling
* added test for Mistform Ultimus
* updated effects which give all creature types to controlled creatures
* updated effects which give all creature types to targeted creatures
* Update LoseAllCreatureTypesTargetEffect.java
* updated effects which give all creature types to attached creatures
* Update EgoErasure.java
* added another test for changelings
* updated two tokens I left out before
* updated hasSubtype
* updated shareCreatureTypes
* fixed an incorrect test
* cleaned up some cards which check for shared creature types
* added new changeling test
* fixed issue with shareCreatureTypes
* fixed a text issue
* added new tests for subtype effects
* various individual card fixes and cleanups
* fixed and updated various effects
* many more fixes
* a few more fixes
* added test for One with the Stars
* added changeling verify test
* updated effects which add additional subtypes
* more miscellaneous fixes
* added additional test
* some fixes for card type checks
* updated methods for adding types to make it easier to avoid duplicates and illegal additions
* small test update
* fixed a recursive loop issue
* fixed another error
* fixed it for real this time
* streamlined type removal process
* streamlined subtype set generation
"b" + "r" now changed to 'b' + 'w'. It's more straight-forward, and may cause perfomance improvements - character primitives allocation is faster and less expensive than string creation.