Commit Graph

6452 Commits (master)

Author SHA1 Message Date
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