Commit graph

62 commits

Author SHA1 Message Date
Oleg Agafonov
133e4fe425
other: reworked target selection: (#13638)
- WIP: AI and multi targets, human and X=0 use cases, human and impossible targets use cases;
- improved stability and shared logic (related to #13606, #11134, #11666, continue from a53eb66b58, close #13617, close #13613);
- improved test logs and debug info to show more target info on errors;
- improved test framework to support multiple addTarget calls;
- improved test framework to find bad commands order for targets (related to #11666);
- fixed game freezes on auto-choice usages with disconnected or under control players (related to #11285);
- gui, game: fixed that player doesn't mark avatar as selected/green in "up to" targeting;
- gui, game: fixed small font in some popup messages on big screens (related to #969);
- gui, game: added min targets info for target selection dialog;
- for devs: added new cheat option to call and test any game dialog (define own dialogs, targets, etc in HumanDialogsTester);
- for devs: now tests require complete an any or up to target selection by addTarget + TestPlayer.TARGET_SKIP or setChoice + TestPlayer.CHOICE_SKIP (if not all max/possible targets used);
- for devs: added detail targets info for activate/trigger/cast, can be useful to debug unit tests, auto-choose or AI (see DebugUtil.GAME_SHOW_CHOOSE_TARGET_LOGS)
2025-05-16 13:55:54 +04:00
Oleg Agafonov
a53eb66b58 other: reworked target selection (now it use same logic and methods in all places), fixed AI and selection freezes in some use cases (related to #13606, #11285) 2025-05-07 17:34:36 +04:00
Oleg Agafonov
00dc6f4742 refactor: removed useless getNumberOfTargets from Target (replaced with getMinNumberOfTargets) 2025-05-07 02:55:02 +04:00
Oleg Agafonov
f17cbbe72b AI: improved performance and fixed crashes on use cases with too much target options like "deals 5 damage divided as you choose" (related to #11285):
* added DebugUtil.AI_ENABLE_DEBUG_MODE for better IDE's debugging AI code;
 * it's a target amount optimizations;
 * it's use a grouping of possible targets due same static and dynamic stats (name, abilities, rules, damage, etc);
 * instead of going through all possible combinations, AI uses only meaningful targets from particular groups;
2025-02-06 17:40:22 +04:00
Cameron Merkel
73b63d14ad
TargetAmount refactors (#13128)
* Add minimum and maximum target counts as parameters for TargetAmount and its subclasses; update/add several rules comments (and one actual text) for clarity; remove unused imports

* Get amount+description from target instead of parameters for DistributeCountersEffect and DamageMultiEffect; additions to TargetImpl.getDescription to accommodate

* Create separate method to check if "any number" phrasing should be used, override it in TargetAmount

* Check instanceof TargetAmount before casting

* Add new constructors to chain off of for TargetCreaturePermanentAmount & TargetCreatureOrPlaneswalkerAmount

* Fix text for Storm the Seedcore

* Use Integer.MAX_VALUE instead of 0 to represent no maximum targets

* Add comment about getUseAnyNumber()

* Use amount-only constructors in some TargetAmount subclasses, add clarifying documentation

* Fix a few calls

* Require more specific filters
2024-12-17 19:23:18 -05:00
xenohedron
5070f8bef7
Fix auto-choose targets for activated abilities and spells (#13036)
* rework Armory Automaton

* remove redundant "setRequired(false)" from effects that separate into piles

* replace setRequired(false) with minTargets 0

* remove setRequired(false) where minTargets already 0

* remove setRequired(false) where preceded by chooseUse

* Revert "Player auto-choose respects required targets (#10557)"

This reverts commit fb8424556e.
2024-10-26 20:23:50 -04:00
PurpleCrowbar
8d249aa691
Improve attachment to permanent logic; implement [PIP] Codsworth, Handy Helper (#12098)
* [PIP] Implement Codsworth, Handy Helper

* Fix Codsworth and Halvar

* Write tests for attachments

* Fix auras going to graveyard when attaching to illegal targets

* Fix Captured by the Consulate interaction

* Fix failing tests, add additional test

* Add source name to log message

* Implement requested changes

* Revert removed null check

* Remove filter check, clean up code

* Add additional test

* Fix failing roles test

* Account for all current attachment edge cases

* Implement rule 303.4g

* Apply requested changes
2024-08-24 01:03:33 -04:00
ssk97
00770646f8
Create generic "Gains your choice of ability" effect, add [ACR] Assassin Initiate (#12619)
Create generic GainsChoiceOfAbilitiesEffect, covers both Target and Source cases.

Adds Assassin Initiate
2024-08-22 13:34:40 -07:00
ssk97
4c8f60e3a2
[PIP] Rampaging Yao Guai, Wild Wasteland, Synth Infiltrator, Paladin Elizabeth Taggerdy (#12613)
* Rampaging Yao Guai

* Wild Wasteland

* Synth Infiltrator

* Paladin Elizabeth Taggerdy

* Fix not including target count if name contains X value

* Fix missing {this}
2024-07-30 00:40:38 -04:00
xenohedron
fdd244786b refactor: improve method name (related to 86fa9278) 2024-06-13 00:43:51 -04:00
Susucre
86fa92788e improve target naming for Getaway Glamer 2024-06-09 18:05:01 +02:00
Susucre
754b382e78
implement [MH3] Nethergoyf, refactor targets usages by game param (#12267) 2024-05-21 13:34:38 +02:00
xenohedron
88b6f4036f text fixes 2024-05-21 01:12:57 -04:00
Susucre
85cad4ff1e
cleanup AbilityType for easier check that an ability is an activated ability (#12153)
* cleanup AbilityType

* further cleanup

* cleanup instanceof

* tweak formatting

* rework Rex

* fix mistake in PlayerImpl

* cleanup 'instanceof' for 'ActivatedManaAbilityImpl'
2024-05-03 22:13:34 -04:00
Oleg Agafonov
b746a601f2 docs: added additional comments for #11933 2024-03-12 11:13:43 +04:00
Oleg Agafonov
a4daad1f92 docs: added additional comments and todos for "choose new targets" code 2023-09-16 10:19:23 +04:00
Oleg Agafonov
4b3a19b4d5 refactor: improved target usage, replaced setNotTarget by withNotTarget 2023-09-07 05:35:54 +04:00
Susucre
a9870b6ff8
text fixes [WOE] etc. (#11035)
* Fix Callous Sell Sword text

* simple text fixes

* fix some target texts
2023-08-26 19:34:49 -04:00
xenohedron
3886075dac
Update common effect class text generation (A-C) (#10651) 2023-07-21 22:55:47 -04:00
xenohedron
f944408252 fix text: BecomesColorTargetEffect 2023-07-19 20:26:20 -04:00
Alexander Novotny
fb8424556e
Player auto-choose respects required targets (#10557)
* Player auto-choose respects required targets
2023-07-04 07:02:46 +04:00
Oleg Agafonov
e8ffe90d41 Fixed test, fixed some code warnings 2023-02-25 15:21:48 +04:00
Alex W. Jackson
76fcfafc8b Add common effect class for "Its controller searches..." (Path to Exile, etc) Fixes #9654 2022-10-15 21:27:55 -04:00
Alex W. Jackson
dc33531792 Fix #4368 2022-09-12 06:56:07 -04:00
Alex W. Jackson
addfd5166e Add new methods to Target and TargetPointer to help generate card rules text. Currently only used by ExileUntilSourceLeavesEffect 2022-09-04 05:15:12 -04:00
Alex Vasile
2aa17d6153 Autotarget disabled for search effects. Closes #9254. 2022-07-12 21:23:04 -04:00
Alex Vasile
7ca7e10d80 Fix NPE in tryToAutoChoose when auto-choose is set to "Most" 2022-07-09 18:02:32 -04:00
Alex Vasile
96f6fbefc8
GUI: Autochoose targets if choice can be made (#9206) 2022-07-08 21:58:42 -04:00
Evan Kranzler
1899fa0def [CLB] Implemented Balor 2022-06-06 19:49:42 -04:00
DeepCrimson
0c8ef41012
Fix spelling of doneChoosing() (#9002) 2022-05-25 22:25:15 -06:00
Evan Kranzler
80e11b2052
(WIP) Replacing blocking/blocked by predicates (#8729)
* 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
2022-03-23 18:45:02 -04:00
Jeff Wadsworth
77845bd1df Fixed #8286. 2021-09-20 15:54:52 -05:00
Evan Kranzler
f7340a946e text fixes 2021-04-22 08:41:54 -04:00
Daniel Bomar
600cac6fc7
[READY FOR REVIEW] Implement a "multi-amount" dialog (#7528)
* Implemented chooseTargetAmount and new GUI dialog (distribute damage, distribute mana)
* Added tests and AI support;
* Test framework: added aliases support in TargetAmount dialogs;

Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
2021-04-17 14:28:01 +04:00
Oleg Agafonov
db239a1055 Refactor: replaced sourceId by source and introduced source param in some methods; 2020-12-12 20:23:19 +04:00
Daniel Bomar
6b508ecacc Targeting interface now says "Select up to one..." when the target is optional (bug #7046). 2020-10-24 20:38:46 -05:00
Oleg Agafonov
2eeefd91ef Added additional test for prevent damage effects, improved 3358e2da80 (#6915) 2020-08-06 21:16:59 +04:00
htrajan
ca29e61b1d
[M21] actually fix Enthralling Hold (#6746) 2020-06-29 12:41:46 +04:00
Oleg Agafonov
50c46e39a3 Improved game logs: added target hints, fixed spaces in target amount; 2020-06-26 10:59:22 +04:00
jeffwadsworth
a20bc6c414 - Fixed some text issues related to Bug 6675. Not closed because it keep growing... 2020-06-25 16:45:38 -05:00
Ingmar Goudt
ae7919cd07 program towards Interface rather than implementations 2020-02-10 10:40:06 +01:00
dilnu
b6af571779 Only fire one Targetted event per target
This specifically addresses changing the target of a spell or ability on the stack.
Fixes https://github.com/magefree/mage/issues/6158
2020-02-02 19:40:25 -05:00
Oleg Agafonov
0885a01849 Fixed that TargetCard ignore filter in some calls 2019-12-16 02:55:13 +04:00
Oleg Agafonov
688a3fa516 * Fixed AI game freeze on random targets selection (#5023); 2019-04-14 18:52:09 +04:00
Oleg Agafonov
904660e624 Fixed freeze while disconnects on choose target and card in library dialogs; 2019-03-10 16:04:25 +04:00
Oleg Agafonov
b432b4b431 Fixed freeze and npe error while disconnects on choose target dialog; 2019-03-10 15:53:53 +04:00
Oleg Agafonov
ff5839860e Improved target messages for users: added extra hints;
Applied Biomancy - added target's choose hints;
2019-01-21 12:53:02 +04:00
Ingmar Goudt
f04d7c9b03 remove redundant null checks before instanceof 2018-09-17 21:09:42 +02:00
GrayedFox
3953f3dbdd
remove all MIT copyright notices from files 2018-06-02 17:59:49 +02:00
Evan Kranzler
474048bcbc fixed implementation of Confusion in the Ranks 2017-10-17 14:02:47 -04:00