Commit Graph

31762 Commits

Author SHA1 Message Date
Hanmac
4aa68c3fa6 CardDamageMap: add extra Table class for storeing the damage dealt by Card to GameEntity, might extended with extra functions 2016-12-30 08:08:18 +00:00
Hanmac
71871686a4 ReplaceEffect: make it ready for getting other types like Card or Player 2016-12-30 08:03:31 +00:00
Agetian
03f5f1f42a - Somewhat better explanation for presenceCondition. 2016-12-30 05:47:35 +00:00
Agetian
8a9d80c10c - Check SpellAbility for Presence condition (fixes Dragon Presence cards like Draconic Roar, Dragonlord's Prerogative, Foul-Tongue Invocation and others). 2016-12-30 05:25:56 +00:00
Myrd
4ffa41f624 [Simulated AI] Stop recursing when we've found a winning move already. 2016-12-29 22:56:19 +00:00
Myrd
1c1de9a195 [Simulated AI] Fix transformed state with a test and commit part of my fix from my previous change.
I forgot to actually commit the validation and activatedPlayer setting part of my last change, so this change contains that too.
2016-12-29 22:42:37 +00:00
Myrd
0e9b327fd9 [Simulated AI] Fix memory leak caused by SAs making it into the wrong game's spabCache.
The problem was that during copying of SAs, the spabCache was not updated correctly due to the code being in the wrong order. A further problem was that activatingPlayer was not being correctly set on the new abilities, so you would end up referencing a Player from a different Game object from an SA that was in a spabCache, resulting in many previously-simulated Game objects being leaked through this reference chain.

This change fixes both of those problems and also adds a validation function that checks the contents of the spabCache at every game copy.
2016-12-29 22:31:18 +00:00
Myrd
6b968eeb08 Fix activating playing call in unit test. 2016-12-29 22:12:59 +00:00
Hanmac
b3ad32bc4f cards: update cards using ReplaceCount/Times.2, now they use Twice 2016-12-29 20:17:39 +00:00
Myrd
f2204c594a Remove dealtDamageToThisCombat field from Combat class.
Its contents were never used and it was actually causing a problem for simulated AI when the current Combat was copied into a simulated game - as it would contain references to tokens that were killed that were no longer in the game and thus caused a mapping exception.
2016-12-29 18:54:18 +00:00
Myrd
c3f30c6871 [Simulated AI] Make printing of the decision tree a bit better.
Also removes a print line from a test.
2016-12-29 18:22:31 +00:00
Agetian
1880fc6df1 - Removed unused imports. 2016-12-29 17:17:14 +00:00
Agetian
9b49b4ae95 - Removed the test code from QuestTournamentsScreen 2016-12-29 17:11:54 +00:00
Hanmac
0b087fc884 AbilityFactory: removed unneeded special cases 2016-12-29 16:15:26 +00:00
Agetian
256f539cb0 - Fixing additional abilities not working for Mana Clash, Fiery Gambit et al. (not created for Repeat/RepeatEach APIs) 2016-12-29 15:51:33 +00:00
Agetian
9b86aebaaa - Added Edit Deck and Leave Tournament buttons to quest draft tournament bracket screen in mobile Forge.
- Some more experiments with result injection (to be removed later).
2016-12-29 15:02:31 +00:00
Hanmac
2b4648c250 cards: update cards with ReplaceCount/Plus 2016-12-29 13:52:46 +00:00
Hanmac
ef87367ae6 cards: update cards with ReplaceCount/Twice using new ReplaceEffect 2016-12-29 13:45:46 +00:00
Hanmac
c32fbaa94d DamageAllEffect: fixed sourceLKI for Lifelink 2016-12-29 13:16:20 +00:00
Hanmac
21a34b8f3c commit GameEntity i forgot 2016-12-29 12:47:28 +00:00
Hanmac
f891446b8b Combat: fixed assigin damage more than once if damage got replaced 2016-12-29 12:43:36 +00:00
Hanmac
0426896c01 Refactor Damage/CombatDamage/Lifelink, now it works as it should with DamageRedirection/Prevention/Multiplication 2016-12-29 11:33:25 +00:00
Hanmac
068b9b4cc0 GameSimulatorTest: fixed warning for "Ajani, Mentor of Heroes" 2016-12-29 09:18:41 +00:00
Hanmac
c56c8af0bc LifeGain + LifeLost Effect: make AFLifeLost better. No warnings anymore for Gray Merchant of Asphodel 2016-12-29 09:16:55 +00:00
Agetian
3959d171dc - Imports fix. 2016-12-29 07:48:21 +00:00
Agetian
1b63d4f39c - Update quest draft tournament screen when leaving draft editing screen.
- Prevent NPE in quest draft tournament screen if the tournament hasn't started yet.
- Added some test code for testing AIvsAI match result injections (will be removed later).
2016-12-29 07:47:54 +00:00
Myrd
c67a809367 [Simulated AI] Get target candidates from the SA that requires targets, rather than the root one.
This makes sense correct target restrictions are used.
2016-12-29 06:44:14 +00:00
Myrd
1d1b94e757 [Simulated AI] Teach simulated AI how to choose card modes (e.g. on Charms and Commands).
Note: There's still a limitation in the simulated AI where it doesn't know what to do when multiple effects from an ability require targets. This can be addressed in the future to support things like Cryptic Command to both counter a spell and bounce a permanent.
2016-12-29 06:36:08 +00:00
Agetian
c8ad6fe56a - Code formatting. 2016-12-29 05:24:56 +00:00
Myrd
485623b631 Fix dev mode restoring game state with counters (e.g. planeswalker loyalty). 2016-12-28 21:32:29 +00:00
Myrd
010d958e33 [Simulated AI] I forgot to commit the marked damage test. 2016-12-28 21:31:44 +00:00
Hanmac
54b69e8040 Covenant of minds: move Cleanup to Choice for all choices 2016-12-28 18:57:26 +00:00
Agetian
e597f692e7 - Fixed Covenant of Minds (should not count as draw). 2016-12-28 18:25:00 +00:00
Agetian
823cb6c62a - Rudimentary implementation of quest draft tournament screen in mobile Forge (feel free to improve). 2016-12-28 17:27:26 +00:00
Hanmac
58db808532 cards: update some cards with GainLife replacement 2016-12-28 15:10:11 +00:00
Hanmac
08a2b54e76 fixed Replacement Effects 2016-12-28 15:01:33 +00:00
Hanmac
3629be1a38 Card & Player: update replaceDamage to use new Replacement Effect (not finished yet) 2016-12-28 14:30:52 +00:00
Hanmac
a8fcc7c464 new ReplacementEffect now handles if it got replaced with something else. 2016-12-28 14:14:41 +00:00
Hanmac
ad8fab8b3f cards: do Corpsejack Menace as ReplaceEffect too 2016-12-28 10:28:06 +00:00
Agetian
c11c3d5fd1 - Some code tidying in forge-gui-mobile-dev. 2016-12-28 05:26:52 +00:00
Agetian
392066d915 - Only use HiDPI in forge-gui-mobile-dev when running in full screen mode. 2016-12-28 05:25:22 +00:00
Myrd
4b13094945 Remove debug print lines. 2016-12-27 20:24:47 +00:00
Myrd
0cd378b442 [Simulated AI] Fix a bug in my previous changes.
resetTargets() needs to be called before tgt.getAllCandidates() so that the currently-set target is also considered.
2016-12-27 20:24:18 +00:00
Myrd
2a6ab7ec26 [Simulated AI] Introduce an optimization that skips evaluating a target for a spell/ability if it's the same as a different target that was already evaluated (e.g. when there's lots of tokens on the field and AI is evaluating removal). 2016-12-27 20:10:59 +00:00
Myrd
8f64ad3638 [Simulated AI] Fix game copy error caused by marked damage not being copied.
Since marked damage affects attack/block decisions and this is used for scoring, it resulted in a different score being computed in the sub game, triggering a copy error.

Adds a test.

Also fixes creature power evaluation copy paste error.
2016-12-27 19:11:18 +00:00
Agetian
7f05f08efc - Change a replace call to a put call to satisfy Android SDK demands (fixes Android Forge compilation). 2016-12-27 19:11:11 +00:00
Agetian
a2cca4cb5a - Do not crash when an unsupported card is found in a quest save, instead warn about it in the log and do not include the card in the pool (which eventually removes it from the save file).
- Might need to do something about CNS Conspiracies and other substandard cards enering the quest pool (e.g. from reward booster packs), which tended to "corrupt" the quest save by introducing cards into the pool which can't be loaded later (and used to crash).
2016-12-27 19:09:32 +00:00
Agetian
e707613ff0 - Fixed Scourge of the Throne 2016-12-27 17:57:43 +00:00
Myrd
1e95e14d6a Lazy-load cards in GameSimulatorTest to make it exec faster. 2016-12-27 17:56:11 +00:00
Myrd
d64774dba0 Fix commander casting which I broke in r32823.
Revert to the original implementation of adding the ability to the Game cache in clone(), but now update this in setHostCard() if the new card comes from a different Game object.
2016-12-27 17:24:59 +00:00