melvinzhang
|
7d292be16c
|
rename regex group from group2 to tpgroup
|
2017-08-26 13:16:50 +08:00 |
melvinzhang
|
510eea9de8
|
pass event ref as ref of MagicStackGetChoicesEvent, fixes #1274
it is used by some target pickers, eg RN deals damage equal to RN's
power
|
2017-08-26 10:08:56 +08:00 |
melvinzhang
|
7f9916b912
|
use correct target picker when RN fights
|
2017-08-26 10:06:05 +08:00 |
melvinzhang
|
f5dfb91ded
|
FlipCoin has no choice, therefore it doesn't need a picker
|
2017-08-26 09:04:59 +08:00 |
melvinzhang
|
732229d463
|
only return picker for group 'choice', use default picker for 'tpchoice', fixes #1273
|
2017-08-26 08:57:51 +08:00 |
melvinzhang
|
a202d87f56
|
add missing override annotation
|
2017-08-26 08:48:13 +08:00 |
melvinzhang
|
ae7fc3d801
|
rename regex group from choice2 to tpchoice
|
2017-08-26 08:28:55 +08:00 |
melvinzhang
|
6117331d98
|
extend regex for LeavesReturnExile
|
2017-08-25 14:34:32 +08:00 |
melvinzhang
|
3225c9220c
|
add filter: creature blocked by SN
|
2017-08-25 13:47:43 +08:00 |
melvinzhang
|
210fbbea4b
|
add ability: At end of combat, <effect>
|
2017-08-25 13:38:06 +08:00 |
melvinzhang
|
91ded87055
|
add filter: creature blocking or blocked by SN
|
2017-08-25 13:27:36 +08:00 |
melvinzhang
|
a74c63b465
|
add amount: RN's power, closes #416
|
2017-08-25 09:45:39 +08:00 |
melvinzhang
|
ad0c7545c6
|
add ability: Whenever SN blocks or becomes becomes blocked by one or more <permanents>, <effect>
|
2017-08-24 12:39:25 +08:00 |
melvinzhang
|
b17ef4efd3
|
fix crash due to action expecting ref permanent, it should be ref permanent list
|
2017-08-23 10:54:12 +08:00 |
melvinzhang
|
ae1962b30e
|
fix missing source file MagicBecomesChosenBasicLand.java
|
2017-08-23 10:36:17 +08:00 |
melvinzhang
|
eb64c3fb50
|
add effect: <permanent> becomes the basic land type of your choice until end of turn
|
2017-08-23 10:19:18 +08:00 |
melvinzhang
|
05dbb2b33f
|
override isLegal instead of storing done field
|
2017-08-23 10:14:49 +08:00 |
melvinzhang
|
c37a660fc8
|
replace groovy code with card script
|
2017-08-22 10:47:20 +08:00 |
melvinzhang
|
7607a621f4
|
allow 'the exiled cards' in FlickerEndStep rule
|
2017-08-22 10:18:44 +08:00 |
melvinzhang
|
75ce5c168c
|
allow PERMANENTS to select those which 'target player/opponent controls'
|
2017-08-22 10:00:03 +08:00 |
melvinzhang
|
718b931c05
|
handle effect with costs using enum
|
2017-08-21 16:36:25 +08:00 |
melvinzhang
|
e5fa047f89
|
move code that does not use game/event outside of MagicSourceEvent
|
2017-08-21 11:22:27 +08:00 |
melvinzhang
|
b25a85300c
|
handle effect of the form '<cost>. If you can't, <effect>'
|
2017-08-21 10:55:03 +08:00 |
melvinzhang
|
f9ae9ebf2f
|
add filter 'instant or sorcery spell that targets you'
|
2017-08-20 21:47:41 +08:00 |
melvinzhang
|
ae9adf8a3c
|
rename parameter from target to item to avoid confusion with target of item
|
2017-08-20 21:47:41 +08:00 |
melvinzhang
|
0a8f37f409
|
add filter 'spell that targets you or a permament you control'
|
2017-08-20 21:47:40 +08:00 |
melvinzhang
|
4cb165248c
|
add filter 'spell that targets an enchantment'
|
2017-08-20 21:47:40 +08:00 |
melvinzhang
|
1b9e47f0a6
|
add filter 'spell that targets you'
|
2017-08-20 21:31:37 +08:00 |
melvinzhang
|
2427730048
|
add filter 'spell that targets a creature'
|
2017-08-20 21:26:25 +08:00 |
melvinzhang
|
a09b6136c8
|
add filter 'spell that targets a creature you control'
|
2017-08-20 21:24:01 +08:00 |
melvinzhang
|
204d336132
|
add filter 'spell that targets a permanent you control'
|
2017-08-20 21:20:32 +08:00 |
melvinzhang
|
08fe11444f
|
add filter 'instant or Aura spell that targets a permanent you control'
|
2017-08-20 21:17:04 +08:00 |
melvinzhang
|
eae203d0d6
|
allow 'other' in ExileCards cost
|
2017-08-20 21:08:16 +08:00 |
melvinzhang
|
fe23e2700a
|
entering as copy should not create a stack item, fixes #991
|
2017-08-20 17:33:35 +08:00 |
melvinzhang
|
7f798cfc65
|
add copy method to subclass of MagicEvent with private state
|
2017-08-20 12:15:53 +08:00 |
melvinzhang
|
3c50b951b4
|
add isLegal check to SetBlockerAction and other actions, fixes #1156
|
2017-08-20 11:13:35 +08:00 |
melvinzhang
|
0d7032bdc1
|
handle non optional cost and effect
|
2017-08-18 13:13:40 +08:00 |
melvinzhang
|
8694d56bc7
|
use SN so that name becomes clickable link in log
|
2017-08-18 12:59:02 +08:00 |
melvinzhang
|
a8d09415a7
|
add cost: Put a card an opponent owns from exile into that player's graveyard
|
2017-08-17 15:21:14 +08:00 |
melvinzhang
|
db20a4ab93
|
generalize regex for Goad and Detain
|
2017-08-17 10:41:58 +08:00 |
melvinzhang
|
cfc0774dec
|
add condition 'SN is in the command zone or on the battlefield'
|
2017-08-17 10:41:58 +08:00 |
melvinzhang
|
5a71340ce7
|
add filter 'Vampire or Wizard creature card'
|
2017-08-17 10:41:57 +08:00 |
melvinzhang
|
0872c1b9a3
|
remove unused condition, choice, and filter
|
2017-08-16 23:44:45 +08:00 |
melvinzhang
|
23f9a02519
|
track which static applied to a permanent, for #202
|
2017-08-16 23:25:58 +08:00 |
melvinzhang
|
f6eb1df9ec
|
change timing for LoseAbilityBecomes to Removal and name to Polymorph
|
2017-08-16 13:24:15 +08:00 |
melvinzhang
|
eb6f3e0fab
|
add effect 'until end of turn, <permanent> loses all abilities and has base power and toughness x/y'
|
2017-08-16 13:20:35 +08:00 |
melvinzhang
|
749c7c9900
|
allow 'that are still ...' for becomes
|
2017-08-16 12:33:45 +08:00 |
melvinzhang
|
b93f47def0
|
allow plural for types and addition to regex
|
2017-08-16 12:29:57 +08:00 |
melvinzhang
|
cedb9ec4b3
|
move regex constants into PermanentSpecParser
|
2017-08-16 12:18:20 +08:00 |
melvinzhang
|
2bba5e99fb
|
allow 'whenever' for state trigger
|
2017-08-15 20:01:30 +08:00 |
melvinzhang
|
bfe5474d3f
|
support effect 'remove all <type> counters from <permanents>'
|
2017-08-15 18:40:37 +08:00 |
melvinzhang
|
3ee83bbf51
|
support "that player's graveyard" in effect
|
2017-08-15 13:16:45 +08:00 |
melvinzhang
|
769d0f7eff
|
generalize TapParalyze to 'that <thing>'
|
2017-08-15 12:55:20 +08:00 |
melvinzhang
|
655b767200
|
add MagicPlayerTriggerEvent that works with 'that player controls' in effect
|
2017-08-15 12:45:31 +08:00 |
melvinzhang
|
4b1bcc4a17
|
merge the rules for 'deals damge' and 'deals combat damage'
|
2017-08-15 11:40:52 +08:00 |
melvinzhang
|
326617fa03
|
split large discard into groups of 3 to avoid running out of memory, for #721
|
2017-08-14 16:31:00 +08:00 |
melvinzhang
|
8d037d0152
|
ensure pending triggers go on the stack in APNAP order, fixes #423
|
2017-08-13 17:47:54 +08:00 |
melvinzhang
|
0747672928
|
add filter 'creature that has a -1/-1 counter on it'
|
2017-08-13 10:38:56 +08:00 |
melvinzhang
|
5b9d80ddfd
|
use 'PN' instead of 'you' in event description
|
2017-08-11 20:17:42 +08:00 |
melvinzhang
|
aae330dd2d
|
use MagicETBEvent instead of trigger for 'SN enters tapped', fixes #750
|
2017-08-11 15:32:11 +08:00 |
melvinzhang
|
09bb897c62
|
include equipments/auras in permanent state, for #815
previous method of including permanent in equipment/aura state could not
distinguish between two aura on one permanent or on separate permanents
|
2017-08-09 22:27:01 +08:00 |
melvinzhang
|
19a2a2bc4e
|
allow both 'cast' and 'play' in CastFreeSpell
|
2017-08-09 20:41:54 +08:00 |
melvinzhang
|
8487002425
|
add bounce picker for enchant
|
2017-08-09 20:25:05 +08:00 |
melvinzhang
|
e3831bc7d1
|
merge conditions for gain/lost life
|
2017-08-09 18:00:04 +08:00 |
melvinzhang
|
3b6ca41646
|
split GlobalPreventDamageToTarget into high priority ProtectionShield and low priority PreventDamageShield, fixes #153
|
2017-08-08 21:50:34 +08:00 |
melvinzhang
|
fb053f09e2
|
remove setDefaultHandAct, move adding of hand activation into loadAbilities
|
2017-08-08 17:39:35 +08:00 |
melvinzhang
|
a84088394e
|
add method to get starting life of player
|
2017-08-08 13:40:27 +08:00 |
melvinzhang
|
f68adc62b2
|
delegate isArtificial and isHuman to subclass so that parent class does not know about subclasses
|
2017-08-08 13:05:35 +08:00 |
melvinzhang
|
42191ad01c
|
use boolean to track whether trigger/static was added by action
|
2017-08-08 11:37:39 +08:00 |
melvinzhang
|
98c28b1f85
|
move logic for default cast action into MagicCardDefinition
|
2017-08-08 09:42:44 +08:00 |
melvinzhang
|
d29d24d626
|
casting without paying mana cost should be affected by cost modifications
|
2017-08-08 09:37:25 +08:00 |
melvinzhang
|
53a6b939ef
|
use present tense for log message, for #351
|
2017-08-07 15:08:03 +08:00 |
melvinzhang
|
aa376dfc0f
|
add message on counters left, make playing the card a separate trigger as required by the rules, for #351
|
2017-08-07 15:03:07 +08:00 |
melvinzhang
|
4438101f4d
|
remove comment that casting of creature spell with suspend is not implemented, for #351
|
2017-08-07 13:34:44 +08:00 |
melvinzhang
|
86210e9c66
|
grant haste to permanent cast with suspend as long as they are under control player who cast it, for #351
|
2017-08-07 12:09:49 +08:00 |
melvinzhang
|
08481ebc32
|
store fromLocation and toLocation in a MagicTuple
|
2017-08-07 11:59:25 +08:00 |
melvinzhang
|
5bee5d65fd
|
check all costs when casting
|
2017-08-07 11:46:38 +08:00 |
melvinzhang
|
69044b530f
|
support effect 'exile sn with three time counters on it'
|
2017-08-07 11:27:30 +08:00 |
melvinzhang
|
14e94e787e
|
add Suspend trigger for non-creature cards, for #351
|
2017-08-07 11:13:21 +08:00 |
melvinzhang
|
af7ec09115
|
support effect '<permanent> has base power and toughness p/t until end of tunr'
|
2017-08-05 20:19:18 +08:00 |
melvinzhang
|
95f21145e7
|
allow 'base power and toughness p/t' syntax
|
2017-08-05 19:56:11 +08:00 |
melvinzhang
|
b90d9e8321
|
allow 'legendary' in Becomes effect
|
2017-08-05 19:40:58 +08:00 |
melvinzhang
|
4683828832
|
support nested ability between ‘' in ability list
|
2017-08-05 19:13:29 +08:00 |
melvinzhang
|
0a19d38ee8
|
replace groovy code with card script
|
2017-08-05 19:13:29 +08:00 |
melvinzhang
|
be6837044c
|
add effect 'you get an emblem with <abilities>'
|
2017-08-05 19:13:29 +08:00 |
melvinzhang
|
2b11fa2af1
|
infer generic type from declaration
|
2017-08-04 12:26:12 +08:00 |
melvinzhang
|
d5de4a7c33
|
allow static ability to be stored in MagicAbilityList
|
2017-08-04 12:26:12 +08:00 |
melvinzhang
|
845f9fa349
|
merge PumpX into Pump, WeakenX into Weaken
|
2017-08-04 12:26:12 +08:00 |
melvinzhang
|
e8afd417cd
|
add ARG.EACH and method to convert each text to MagicAmount
|
2017-08-04 10:44:02 +08:00 |
melvinzhang
|
0af029a532
|
allow X in DrainLifeAlt
|
2017-08-03 13:10:17 +08:00 |
melvinzhang
|
62715a378d
|
allow multiplier in DrainLife
|
2017-08-03 13:03:19 +08:00 |
melvinzhang
|
373b3aaf6c
|
allow 'where X is' in LoseLife
|
2017-08-03 12:23:44 +08:00 |
melvinzhang
|
ef127bcf83
|
allow X in DrawLosePlayers
|
2017-08-03 09:45:40 +08:00 |
melvinzhang
|
23cc972e33
|
allow 'where X is' in Draw
|
2017-08-03 09:45:04 +08:00 |
melvinzhang
|
ec5f99dc7a
|
merge valid condition into single expression
|
2017-08-01 20:24:33 +08:00 |
melvinzhang
|
54cbaf0bca
|
prevent cyclic references by ensuring stack item is valid target for another stack item that is later, fixes #1223
|
2017-08-01 20:09:09 +08:00 |
melvinzhang
|
c60c30f6a3
|
fix changed target not triggering when targeted
|
2017-08-01 20:07:55 +08:00 |
melvinzhang
|
a8af80fc9f
|
extend Exert effect to multiple permanents
|
2017-07-31 22:18:37 +08:00 |
melvinzhang
|
7432026357
|
fix duration of trigger not copied when making a copy of MagicPermanentTrigger
|
2017-07-31 09:16:00 +08:00 |
melvinzhang
|
f332eebeae
|
reset score before performing action to ensure we are computing score of block
|
2017-07-30 22:31:18 +08:00 |
melvinzhang
|
1d9e23b9aa
|
remove extra space before 'pay' in description of CumulativeUpkeepTrigger
|
2017-07-30 21:25:39 +08:00 |
melvinzhang
|
1ceec54539
|
remove turnTriggers, track whether triggers ends at end of turn in MagicPermanentTrigger
|
2017-07-30 21:11:39 +08:00 |
melvinzhang
|
ac42c8acc4
|
make skipping phases in AI game model optional and disabled by default, for #815
|
2017-07-29 21:39:58 +08:00 |
melvinzhang
|
69d0e98654
|
add custom getStateId to commonly used MagicStatic
|
2017-07-29 21:33:12 +08:00 |
melvinzhang
|
2932f6ee70
|
pass MagicPermanentAction in MagicEvent
|
2017-07-29 09:33:31 +08:00 |
melvinzhang
|
0cfbac301b
|
fix compiler error by casting long to int
|
2017-07-29 08:46:48 +08:00 |
melvinzhang
|
f3e695eb38
|
move getStateId from MagicCopyable back to MagicObject
|
2017-07-29 08:32:47 +08:00 |
melvinzhang
|
3a3b2254be
|
revert change to MagicObjectImpl.getStateId
|
2017-07-28 22:46:23 +08:00 |
melvinzhang
|
cc8b98f641
|
add custom getStateId method for result with state
|
2017-07-28 20:53:05 +08:00 |
melvinzhang
|
53d65af043
|
add comment on why these classes need to implement MagicCopyable
|
2017-07-28 20:25:02 +08:00 |
melvinzhang
|
83bd9bc930
|
fix for result on stack not copyable
|
2017-07-28 19:59:36 +08:00 |
melvinzhang
|
39fb84fa3a
|
pass amount and counterType in MagicEvent
|
2017-07-28 17:03:40 +08:00 |
melvinzhang
|
eafc98097a
|
simplify groovy with MagicTuple
|
2017-07-28 16:05:39 +08:00 |
melvinzhang
|
22e8239d71
|
fix crash where tuple expected but int found
|
2017-07-28 16:05:20 +08:00 |
melvinzhang
|
3e092912ef
|
replace dynamic action with static action
|
2017-07-28 15:26:11 +08:00 |
melvinzhang
|
4514ee109f
|
replace annonymous inner class with lambda
|
2017-07-28 15:26:08 +08:00 |
melvinzhang
|
3f750aef0c
|
pass MagicChainEventFactory and MagicSourceEvent in MagicEvent
|
2017-07-28 14:31:14 +08:00 |
melvinzhang
|
1c525c7a5e
|
pass trigger in MagicEvent
|
2017-07-28 14:12:30 +08:00 |
melvinzhang
|
68d838410b
|
pass damage.getAmount() and damage.isCombat in MagicEvent
|
2017-07-28 14:07:25 +08:00 |
melvinzhang
|
032d51b4a9
|
use MagicObjectImpl.getStateId for MagicCopyable as it uses getId() for MagicPlayer
|
2017-07-28 13:52:11 +08:00 |
melvinzhang
|
9e689eb9e9
|
pass MagicCounterType in MagicEvent
|
2017-07-28 12:47:32 +08:00 |
melvinzhang
|
4d9bafc91e
|
pass MagicManaCost in MagicEvent
|
2017-07-28 12:45:01 +08:00 |
melvinzhang
|
a4be557011
|
pass MagicCounterType in MagicEvent
|
2017-07-28 12:44:58 +08:00 |
melvinzhang
|
58a2e0395c
|
pass MagicCounterType in MagicEvent
|
2017-07-28 12:44:53 +08:00 |
melvinzhang
|
c78b63ad49
|
pass MagicLocationType in MagicEvent
|
2017-07-28 12:44:44 +08:00 |
melvinzhang
|
aad955d2a8
|
pass MagicCounterType in MagicEvent
|
2017-07-28 12:44:29 +08:00 |
melvinzhang
|
ffaa096dd1
|
remove MagicIntger, add method to retrieve MagicTuple
|
2017-07-28 12:34:20 +08:00 |
melvinzhang
|
ca1c47e758
|
store int, MagicCounterType in MagicTuple
|
2017-07-28 12:32:16 +08:00 |
melvinzhang
|
f4d08ae7de
|
made action static and provide copy method
|
2017-07-28 11:46:21 +08:00 |
melvinzhang
|
fa979274ff
|
made action static and provide copy method
|
2017-07-28 11:41:39 +08:00 |
melvinzhang
|
b431baa790
|
move getStateId into MagicCopyable, remove MagicCopyable from MagicPayManaCostResult
|
2017-07-28 11:34:12 +08:00 |
melvinzhang
|
6a73b1a480
|
remove MagicCopyable from classes which do not need to be copied
|
2017-07-28 11:03:54 +08:00 |
melvinzhang
|
919dcd10fd
|
use putOnStack method instead of storing MagicPermanentActivation in event
|
2017-07-28 11:03:16 +08:00 |
melvinzhang
|
522292a9c5
|
made action static and provide copy method
|
2017-07-28 10:45:23 +08:00 |
melvinzhang
|
fab647ac3a
|
made action static and provide copy method
|
2017-07-28 10:13:35 +08:00 |
melvinzhang
|
9403832514
|
made action static and provide copy method
|
2017-07-28 10:01:59 +08:00 |
melvinzhang
|
772d05901e
|
made action static and provide copy method
|
2017-07-28 09:57:53 +08:00 |
melvinzhang
|
5f02bc7990
|
subclass of MagicEvent with members should implement copy method, fixed MagicRepeatedCostEvent
|
2017-07-28 09:57:25 +08:00 |
melvinzhang
|
005a36ed33
|
replace lambda with method in class
|
2017-07-28 09:51:56 +08:00 |
melvinzhang
|
3df71aa281
|
include isCost when copying MagicEvent
|
2017-07-27 13:42:37 +08:00 |
melvinzhang
|
1c12b11582
|
fix crash by passing source to filter
|
2017-07-27 11:33:27 +08:00 |
melvinzhang
|
1a0874fd3e
|
fix crash by reverting back to dynamically created MagicEventAction
|
2017-07-27 10:55:38 +08:00 |
melvinzhang
|
a35828b817
|
merge MagicRepeatedPermanentsEvent and MagicRepeatedCardsEvent into MagicRepeatedCostEvent
|
2017-07-27 10:24:57 +08:00 |
melvinzhang
|
eb925c1922
|
add MagicGame.addNextCostEvent to be used when cost event are generated from a cost event
|
2017-07-26 16:30:12 +08:00 |
melvinzhang
|
c71e3dde29
|
track player for 'does not untap turing your next untap step', closes #1106
|
2017-07-26 13:41:02 +08:00 |
melvinzhang
|
84bae03f04
|
add Willbreaker
|
2017-07-24 21:48:47 +08:00 |
melvinzhang
|
4cc04eec7b
|
allow 'another' in exile card cost
|
2017-07-24 21:45:03 +08:00 |
melvinzhang
|
9a146a85b9
|
add effect 'gain control of <permanents> for as long sa you control SN'
|
2017-07-24 17:41:05 +08:00 |
melvinzhang
|
168b0e95ff
|
support effect: <permanents> becomes the color of your choice until end of turn.
|
2017-07-24 13:44:59 +08:00 |
melvinzhang
|
ee127ae5b5
|
move mana cost payment to just before casting card, fixes #1218
|
2017-07-24 10:01:46 +08:00 |