From 82dcb53cb90f4bf54744ab329ef26c124fba3006 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Sat, 8 Oct 2011 12:46:34 +0400 Subject: [PATCH] Target refactoring. Fixed Issue 273. --- .../java/mage/player/ai/ComputerPlayer.java | 6 +++--- .../src/mage/player/human/HumanPlayer.java | 10 +++++----- Mage.Server/plugins/mage-deck-constructed.jar | Bin 7051 -> 7074 bytes Mage.Server/plugins/mage-deck-limited.jar | Bin 2403 -> 2422 bytes Mage.Server/plugins/mage-game-freeforall.jar | Bin 5300 -> 5320 bytes .../plugins/mage-game-twoplayerduel.jar | Bin 4903 -> 4923 bytes Mage.Server/plugins/mage-player-ai-ma.jar | Bin 43046 -> 43066 bytes Mage.Server/plugins/mage-player-ai.jar | Bin 53214 -> 53259 bytes Mage.Server/plugins/mage-player-aiminimax.jar | Bin 40180 -> 40201 bytes Mage.Server/plugins/mage-player-human.jar | Bin 13079 -> 13113 bytes .../plugins/mage-tournament-booster-draft.jar | Bin 5756 -> 5779 bytes .../plugins/mage-tournament-sealed.jar | Bin 5056 -> 5077 bytes .../mage/sets/innistrad/BackFromTheBrink.java | 2 +- .../mage/sets/innistrad/CivilizedScholar.java | 2 +- .../mage/sets/innistrad/DivineReckoning.java | 2 +- .../sets/innistrad/GarrukTheVeilCursed.java | 2 +- .../src/mage/sets/innistrad/HarvestPyre.java | 2 +- .../sets/innistrad/StitchersApprentice.java | 2 +- .../mage/sets/innistrad/TributeToHunger.java | 2 +- .../mage/sets/magic2011/PhylacteryLich.java | 2 +- .../sets/magic2012/QuicksilverAmulet.java | 2 +- .../src/mage/sets/magic2012/Smallpox.java | 2 +- .../sets/morningtide/PreeminentCaptain.java | 4 ++-- .../riseoftheeldrazi/ConsumingVapors.java | 2 +- .../sets/scarsofmirrodin/AuriokReplica.java | 2 +- .../mage/sets/scarsofmirrodin/GlintHawk.java | 2 +- .../sets/scarsofmirrodin/PsychicMiasma.java | 2 +- .../sets/shardsofalara/ClarionUltimatum.java | 2 +- .../mage/sets/zendikar/EldraziMonument.java | 2 +- .../sets/zendikar/QuestForTheHolyRelic.java | 2 +- .../mage/sets/zendikar/WarrenInstigator.java | 2 +- .../abilities/common/CopyPermanentEffect.java | 2 +- .../costs/common/DiscardTargetCost.java | 2 +- .../costs/common/ExileFromGraveCost.java | 2 +- .../costs/common/ReturnToHandTargetCost.java | 2 +- .../costs/common/SacrificeTargetCost.java | 4 ++-- .../abilities/costs/common/TapTargetCost.java | 2 +- .../costs/common/TapVariableTargetCost.java | 2 +- .../PlaneswalkerRedirectionEffect.java | 2 +- .../common/ExileFromZoneTargetEffect.java | 2 +- .../effects/common/SacrificeAllEffect.java | 2 +- .../effects/common/SacrificeEffect.java | 2 +- .../common/counter/ProliferateEffect.java | 2 +- .../abilities/keyword/AnnihilatorAbility.java | 2 +- Mage/src/mage/game/GameImpl.java | 2 +- Mage/src/mage/players/Player.java | 4 ++-- Mage/src/mage/players/PlayerImpl.java | 4 ++-- Mage/src/mage/target/Target.java | 2 +- Mage/src/mage/target/TargetImpl.java | 4 ++-- Mage/src/mage/target/TargetPermanent.java | 12 ++++++++++-- Mage/src/mage/target/Targets.java | 4 ++-- .../target/common/TargetCardInLibrary.java | 2 +- 52 files changed, 63 insertions(+), 55 deletions(-) diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java index e497730677b..7833d64c71b 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java @@ -138,12 +138,12 @@ public class ComputerPlayer> extends PlayerImpl i } @Override - public boolean choose(Outcome outcome, Target target, Game game) { - return choose(outcome, target, game, null); + public boolean choose(Outcome outcome, Target target, UUID sourceId, Game game) { + return choose(outcome, target, sourceId, game, null); } @Override - public boolean choose(Outcome outcome, Target target, Game game, Map options) { + public boolean choose(Outcome outcome, Target target, UUID sourceId, Game game, Map options) { if (log.isDebugEnabled()) log.debug("chooseTarget: " + outcome.toString() + ":" + target.toString()); UUID opponentId = game.getOpponents(playerId).iterator().next(); diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index 7061782f75d..1f62e486a64 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -207,19 +207,19 @@ public class HumanPlayer extends PlayerImpl { } @Override - public boolean choose(Outcome outcome, Target target, Game game) { - return choose(outcome, target, game, null); + public boolean choose(Outcome outcome, Target target, UUID sourceId, Game game) { + return choose(outcome, target, sourceId, game, null); } @Override - public boolean choose(Outcome outcome, Target target, Game game, Map options) { + public boolean choose(Outcome outcome, Target target, UUID sourceId, Game game, Map options) { game.getState().setPriorityPlayerId(getId()); while (!abort) { game.fireSelectTargetEvent(playerId, target.getMessage(), target.possibleTargets(null, playerId, game), target.isRequired(), options); waitForResponse(); if (response.getUUID() != null) { if (target instanceof TargetPermanent) { - if (((TargetPermanent)target).canTarget(playerId, response.getUUID(), null, game)) { + if (((TargetPermanent)target).canTarget(playerId, response.getUUID(), sourceId, game, false)) { target.add(response.getUUID(), game); if(target.doneChosing()){ return true; @@ -575,7 +575,7 @@ public class HumanPlayer extends PlayerImpl { while (remainingDamage > 0) { Target target = new TargetCreatureOrPlayer(); if (singleTargetName != null) target.setTargetName(singleTargetName); - choose(Outcome.Damage, target, game); + choose(Outcome.Damage, target, sourceId, game); if (targets.isEmpty() || targets.contains(target.getFirstTarget())) { int damageAmount = getAmount(0, remainingDamage, "Select amount", game); Permanent permanent = game.getPermanent(target.getFirstTarget()); diff --git a/Mage.Server/plugins/mage-deck-constructed.jar b/Mage.Server/plugins/mage-deck-constructed.jar index 54befdbed1bad6b7e30746ccc6f9cb294e6859a0..c9ea57658f7288126a946dab6816cbdcee44a33c 100644 GIT binary patch delta 1340 zcmeA+Uu4c3;LXg!#Q*}Q6FnyKs_>pl^sxVT_3iySpwPsLb{Tf!YB4v863@5Fihql{ zQMmDA(&eLV+|qhxu{X*$GA`0`y{@e)ow9W1JjXo~4fVzK#TihIJgvYCGWne7g-kYka`y*j*<*feYGdYEpK2pB!Rq#pbSLDtxhT{(RT^ z(ih(&S1v31S@?8QkZb4RNBZ-p<*D2ka<8yl9O3>XD5q=BwY-%wx7oFpil65X;#g@@b1s{rL4gx zc(zSHY~Gsibb8uGlWvn!vsjO{doNeta`&ET+3xd-TS6LIn-^v_B>v%8dN3cB0y#j5 z+J0F!%l_iYIbxpm8@ZYd1Q;&ZPN=siFjHB$#kF8nfK>}$-9gj1W|7H7^P1}OuWjG+ z%yXthtJ)74fr900LX8(4u;#j9ZE=66_jB2nLWcagm$TI4o=>XI&U>~h^wFlj@xk#H zGg*Z*TXjB*FAm`mz18?=eeIMzT=^TrqUHv8Gct)V!}1rS$7C~c6Vx0wxm?^7oTk@{ zOPgE==DFO&^i+LReIE9p{0RdP(?C1{hPRHtCjS$c1REeFA-z@P*(6-X~>oXa+O0h@|8x`w*mlJcv}3=Cat3=9$| z8ayY1_mQe1_p5yH6fEzB-Oxf>XnpcJT!Twq)rS-2a+NNemDo@ zrzBwp24B|@M_o@pH~rkiveZ1h0fKN6NOS*WLn%lQL`z9BzjZtcC{#VsE<@FCrlqAoUDvvBFS8Q` z#VuZsp~-><7Ot^rt_eJoWE;pX%}Wjouo% zPXz33&(5x#C8@79wT2<@kMl(CzjdYgK06m~NigL&0pyj#$lHBsn37cS0pdit+!g(oTwS2;b)CUg8z@bh(NfYtRM}r7D*y zzF@W6hIs;alvH=HhBkBMebPEwq-u$+1@ss4xZVUbHe8ds`4`*>NFJFKDisrkk~fjZUC_7)sr@e<(VnAa#5a^axA zt;MG|PuFjo?$K>?eusJZojs|_w}0Kx{bcj;!cU9okL!J8=HJt?`LX{*UBiv#8TX&3 zPknm$+NDiFGV6?5nSyMOMt$t?J2)?Hm)+bYuPzu`7_FSyQTFGKPW`mwb@R7oWlfh3 z*XuSqT^MoaY3ggYZ)*!%t{eB2y67F%^VUwCe(L4V151B2?XjG-*}=qTX@bngzxAs; z{ws7YHcx)G>9D$!W9xw|+^ej;xu^IjufV z%zLv(^ODGfnjIxoPPgC2CU5_(<#SSKL%{`;Zvn@81K#{)gQZ6fP)fFc%62)Z1ek=& zf!GF|Wa^~(>Uq!Z_T}GL*FDoxyuvLm{NncYuhILS z`OReE?)~u3@xa_oVZIM|{G$$3e%QBp`n!Ur+aH+n=U&cIk5oUm*EGHOiWX=7>Et(& zlYS;CtqnN!(y|X>k}0Xl*+?olz$y$Sq!~FU`%0)Q zfUMwuQY2Eq2+T&n?4$y>f`MU4<0Y2K?5t{&cS-PoGUeox64Fd9Y?F7gslbIKC8Ze+ zCYwsCgB8R}N;6sWOfKM&)J8Z8Y^A*c=Yz|sKug4dmdK)5vU2hPNgZ(BelID>{Qtk_ zWNs-rFkeSXlI8#ZGU3S&g{5>527=2alz`EL8z{i=|Nk101|uz45OXkKloxR2AW!}P dDK`KXAM8kWU`a73nj*!(n(CzG*wn>AG5~6l--7@E diff --git a/Mage.Server/plugins/mage-deck-limited.jar b/Mage.Server/plugins/mage-deck-limited.jar index a3b294a68b076b50ec4b33421b2c6241754ff358..ede5de8cc7bc60df72da407dfccbff38f7d97cfd 100644 GIT binary patch delta 1052 zcmaDX^i7C2z?+$civa{qCwffeRpC9A=wbiw>f8HuK%t2f?K14d)naZGC7y4U75^4@ zqj2NLq{~O!xTW>XVsDghWL%`>dR<#pI%Vn1d5(J~8tRMdi!-1ac~OBGWbzkP5Vcu` zaVH~)G5H3Q7MNybHU`ty%&wff7a7^_b{1>=F}ai3r#@Bs;OAgTo=IyjzbELdL+1luRrzR)#+E8uU%z(JjvvM;7X2K z29=b){Q5T^OuGX26rDL6xUsL+LgvE5=BH~P|KR$6Gxz%lj}t31^ySOP4#g$n{Lp1K|Sfo=PwgaY`d5Fa+{^*!E2oLx2+Pxk3TwS z?S5(j(>%uIJXan(ll^n2S$X}v|DPqD+ONYsg_W_dnr^Hf%NQoKsV_k+lrms5Wqn!MVogy-C*C(W;eV&+cT^y1PLP4N<~ zQ(dBJY41K%zIOYz*7wJC?!HnNtsnF1pKjgq*y6tYjwx|lcYb|;+Qm18@0Q@--!X#w zl`@-lCp@ccPuKG-5D%Gtv&8eenv+tt`pfI**I#_jQvQ1THZdPX(;3y>?*Dx1ZrkpE@qF*}_CHHdNWv_(*2@Pxc6{_~{trtr9H2yK|NP&^?}ZGLFR?n+ z^Pb(vb;v+~;lf{q{{!6z4A6t4{v$i8X+y;R5aRj-ov0 zj#9ta{vLUF_k5=J+Q1L&0p5&EBFwN1!RRr0GMfo%mY95n%@mwsdDx{Tt^+ekZen_> zKB_*C$@c8hjK3yFvr8&~d^GWc6iYiJ14A(r1A{myuR+0*MkU6{+KiHu*Ru0~&D;aj zc5m_xb~!NbCy>WIIhsRyvH=G~-kw96(Ge(ODG$#pKx1FAGB6mz%mmU)8ash%bSFRH o5C&Th2~eQ*KsgH(br)DC$8hKX6|zj`V&j_Z%PGJ%oeiV{02@HRsQ>@~ delta 1041 zcmew+^jL^Dz?+$civa|jSE^6sRpE77scxTB*0nYpDAYL7E`_$iMKlnLVl4sJ|3#D(?W_;>heQjEcin`|F|FxT*V9=hK<9o}2q> zZR9R~ocnm~;~!lAZ{@y!b99nRPqwo~Yp6imw_|SB71|nxJ|DQB94h8vuXkyG-Tp(- zO?~d#AnnBZ#2HhRnjfiaZ~lgxc^0M6MwDxHv#_N9Ad6{4R-F)VMfe1 zV-E2-&F`Fg{<8X_S5Fo`afR(sIM<1=A^FVT<5mPnk={u~(=dEpuJsa}_;?pjxUcSxI zx#r%I-}3Q`{5jvv`(M5#f$QbLd)77QEj0ICT^(89v}jG--$k)E|84NB5`Xo~dqE3} zwMoVtwy;C%{iXh}!qN-}D9zcg`fq%>fD@S7ih zfgYyLfIhb37=Zt6%&srYdH9S6|HO;XiJv=Fyt@YeD9 zf8HuK%t2f?K14d)naZGC7y4U75^4@ zqj2NLq{~O!xTW>XVsDghWL%`>dR<#pI%Vn1d5(J~8tRMdi!-1ac~OBGWbzkP5Vcu` zF@+t>Xy%y81ZGHc`+*sgb9l8t0+VO*8iVQcydE687a7?L?y-%WEYIguAKQJ~K%iz_ zeJe-p)~DY6+gPp#XlS;2R~KBrwB32?b-Vc7lOAQ07T>9V9~Jaxt`JwSqN?@DVrd`h{V#Xo0DW4=mysoqi6k|!~3jDP-qb^am1=00~# z(vk!16IM*&6tQ>6T+-n?wWDu?-sU7O7unhT%qd=GSEsAEwJk`IbotWq#nR_$<*AC^ z2YkVQtOKe8{^edwvB+~_|M>61y}U3E$ z*PlCBZ=7=ek@~V*Ma%uA#Uc(&QOec4G)*a@dq$Gli@lp>a)u}f3D~gPzS!41zq(+_ z_1E_2+#8+a#HK_`4GbU7s+2Yq&#K^=z-Bx7NOWeD2NM z^>=$0q_A3;XGlp`pGY#-`1X$pmcBSZN!Gr+rf*g8 zeWUGxqr@q`RQCM}m)CII>eCVa_WiSLylFw2;#0}__B~sQ*@AnQ{FotfSF|?c&q_|l z#}$Vk>|x)$xn|m==yd&WJZhdl_q{KUR=L?L)U0^%sq17p$^I4Ww|2a1-Kl?Rt@aH2 z0B=Sn5oTEKVf2`6FKB|Ae|qf)&mYV0i0z9mvZ~Oi$HEHO*u4Ye8wt zUogq^#9U+*5U*!lo6x4u&cI;6&%huBH4Nu$zadm&A5F3J{?X6oda>>wmId7hBC z0>~}wURU;uGBGebWM*KHL(!(l4OZyD&83az8Waxzt%CxP2Z|;u2+M)(auk+kn$J7A zQ9x>Pg)k4;E|@|PtqbRXv|R-$)Yn1S!@&T{?QB5DeFTP*30wonPYQfM4aRyExjD#s Z;7I_ewhV}^QS?+yP7v{9a}fjy0swGD%zgj> delta 1206 zcmX@1xkZyVz?+$civa{&R;o|rRpE7BscxTB*0nYpDAYL7ET+&fJn)>GJ*VMK!6Pw(YBT zt(VJt_aW)ro{$%lIQgWHm)3tg<|qBbttf0+P>jR#d8Z8;!sGA%{%&XaGDBF2^aa#GOZ^Zil#X@Sf`vwT;-E|%$tRO#-qE9 zs~ju0M^1gPgHiTqyLYMg+sWIXlsdd#D9m$d9e?`N2g0Wh-qvo|8zR3c=VU{1{fGNJ zHz$9XxN=!c`If{+Rv*pnnorG^#;kcdD@pCeo((evMHG|-Y*=ky?Q5UURB`lpSQ*}FX)U3URZy>=Y8m8m%wwIE_`;M=ikY3b#cM8<{a-2FeNRBJn{9>u;2bUn6Yd#>{j<^XR- zCJ|Xo8w?CQlJG1*hvXg3=O4fLSRwF+EiuUE6;_X~yT1rG+FFK;Fr^HlaFNh3ewWIINg$pu0@U^DB5q?yV%fI?!EcXM!0-U}5z0~F@t1`Gce z5{m&D2{Qsj15Jej0fx7Z@w^NSzOEsTx}JV+`nic^sd?zGL(wb&)5`$T+%vgQSRL$? z*}~F{hk!ik$^9atItc%9Fkob6xCsmlOB#9kCV%ABpX?+e4E8!WCV>jdfY=&EVX6RF N;Sv!!HUmMB3;<f8HuK%t2f?K14d)naZGC7y4U75^4@ zqj2NLq{~O!xTW>XVsDghWL%`>dR<#pI%Vn1d5(J~8tRMdi!-1ac~OBGWbzkP5Vcu` zaW5;Fafi*13Cz&toCIb}KE$mB5}5p++Zar%@_2LZUSwqdVcx|a&dHTL{`IVv*W6mx z@i8QK)|H%zxBRMC+Y~#$Jg_ZCSjhM9``tJAR9Zp;Rps71e*C-8;<}^O)C#t=L%Feq ze^bAu^u!1RUFQ8T!|T*M1+i5MtLJ+c$*LC`6`wg8Hr;l2?(H3a6DmKe>{Qx6eS3Mu z#$|ygw=SG>P=~{L&&CU4`$T(Y1%2SYRNwksLaf8=djH8}q5M+2(*~?{i8HP#wZ9VA z=+!imR#kP6I6ozX(R}9Jhy?+QCf@(dV|>I^S3$KpV_+~VbqI5OOMEvE_pEb@iT?S=LaG=e=TU0yT|)rV#fRbmBvTq zDrZi}Uv)V1Y+s3VQuUKml|{luF^?IOW`C6ZmwD>dhxZv5HQ3CT9%6BNYqU1P>(~Q_ z>F>h(y-HsgRwQY?Pe@PSx&6!%ujHk39?x8n8oBWPou~DmFUg)XKdw2$U*nqa%m=SG zWlWiS`toPyshd`xJ5XoqYZ4-wAailOzwxB-phflSM{L%A==9=>Y5Zk0Q}3mmuF9vp z1#<89yUh>2^#1;>D1){=3)yO7i=zI%IJUXEd(on5b|38}vUl$6V`e`3d++vb^Dp7fE1pgBGz~N++0?B#@BT~q z)U-6c`2AnzWTa1o$RxrH&rXw<@SC9Kr^!$GO~Hv3woGBYqJ!c+n2C5?|JzZWn78@9~iYiJ};%}Evp200Wp#+*RIL??#`ih~`PCn(Ky zf_w5sZsE!E1i8RMtARpaxhFs5lj28r@kgMPHV;tBXtIM4j{-c~0&V&Ybhys}C1+uN=2MGcI25sG? delta 1207 zcmdn3wp@)jz?+$civa{&R;o|rRpE7BscxTB*0nYpDAYL7Ew$A<*w)0urrN-Qw zYAUmS-7nwBsnX(eaf!{5=W_S^5AWm?TKbf`Kss-A&DgDCE_LNP2rQGRXHzQm z3%@`8%d8_R^D3VuWp~ZHYr>m(&+?v4-})EppWd~NTN4q&kv#K(0rw$+e4U==_bTbz zCOm2?s()zN#=Pk4*W^DElh>Y1)0}o7UP5i^nFW71ZzXhIN%edoc+FV!vO>-)KE4xM z*Id1>bChdIlBG&XKab3^+>L2>ly{)jPZRg}zesz* z(p+-i-5~M-_iBZzj3=v7tS@XgowD4uK;+--MCQt0he~GG7uJ7CY_yEow&AQ;(zXlB zy;pE=UGkv!dD;Sp6om@LX9+EG_jn&n%*g*=lBOj4$x8A5m6pr1WM7&+c{kzu#E!TV zh5hUu(#vLlSgCjF@cQJGwU&3pq_{oydiOr#lx=2?{poL;b#?La2c0Xe*sHBq?@d(; zmC}AHdp>n(m(bs5`t$3jzw_8@=)!c$Ftu$@gciZ!y0@<@B@^ta-N%w3f&_W$2!9F%y)WBTB= z(}qvcyXU=)7J2&CIzf8nokwZ!WF<7_-mlIsKi@QstDwYSOR4>|PuWx0>O~k~Ns9xN zH0@WVbiOE={EE-Jej``2fdIn=+X?j+1!gfVVFGtpUJ3~4lj8r4xdYvvV3yhwUk7PsXWbAUG^lL#|3n=k#*b z6hK~g)cCbth>3yWD>DOwB1}J!Ueb7;4XjX7PztPYnZ?)8NT9-#EDQ{CC<+xgfeID0 z@i~Yet^wqrt&`^o%7GoUUr?Iq5%*+49vMxfP(bsI0g7gc$%;bu^6=~obkT2C1_pDu q8j#b|fNG211_wnI^Oln-dN)a3s{W^7ZzP6Plo{Jk*% diff --git a/Mage.Server/plugins/mage-player-ai-ma.jar b/Mage.Server/plugins/mage-player-ai-ma.jar index 5ee78e87c6f84089812d5a594248e8f67c00b152..1fcec9495fec2b5cd2a4f5e1ac38042e7ab2a8b9 100644 GIT binary patch delta 1703 zcmZ8ie>7BS7`}67MlqB#LnC+0Aft9LW{l{E3}=tZ3}M%vc13H{5F1m|B+|^R-LSFJ z^x5rb3G*}Cp_O!2bYjbPvIZp$IUCNRvZ>LrWp&ivxr*%l=X=ldKJRni?|bj_U40LH zwFkC~7UBsukmczXZCBZO*ma4v^WXGM4k=Jbr3&5`O!bWKmx{XcT&OR1_aCgEO6qOT zCn4;Bg#IJ-I5jKGdMZAwy3ziR9`BzD2ZyR?zrMD%k)}2`T{`5v9MK$^RcWA zIk+)+1sd>8;-@JEFa)uP;JM5Z(ACt2vji24k=V;V#$$oZ<}eovo^EE%Bdht>=om7P zFiF6I+estKu%I^0-v$dtWfSwMJK2X|OEV4Ijy2CK6P1aM7-wIpn24o%$||uGke1JP zT3ODsFhE~<7`a*P$DcEb5fa*HtrY}uA;2(rD-TH0*;(oP8)FlS208Y}>Xdob^2SkN z$rXaheqCOx&MyAq^klTS-EhIj`u0I`$K0zrX8V^11?y-tZO+A+ncJFe$ht9}=CiDI zBvG*O+|L3Z4m;dPa4+mxo3HJf8Xt5XQaiQtZpG7VB?GVL=#xWVJPbN1F?av-=N6i` zGW=#<&39G%R~>gN|J;c*6fR(~+a0AN%zUDH_9a*G{hhYG4Gtc|q#N4O)m{otdWd^t z3^}MZPVav91gnum8jX8)k0lJn{os*e9qi^(@VHQ7T?@tInO9S;CU1J+&`j%yJRrHg zIX35slRV@(CH_cRtLL*9%RQL^#EswFR7xFd&pd*ot>z*_f}$!3FH&ZUhgI@TJ48+FtZnf*2NXi)%kCq>j zux{;)XlX7sc~uwmzc!zl{_0kdV(03n-ctFvGeH}y-`YzkX**dLUv%=5!;kH08~T*C z-&O_%=1<(40E*%*hk!s_lZCs|bmL4d(jQpxq#|m=eR7S%u5-^X%cHtp<*;>u#^Hb8 zrY42Sx>(z$-##jwVVvgVP?C3N&U7-3@!yPZ`l+sl9=AQ&xW{as6Has6CTEpG((k7v z=T{6#Lklk&|GwK&9bH&K{Y`V)G%7nU$J!PqTLsEjx@UZSci8v64VGJ+ z#dl-dwn>4aGA?b0cZ@lT9mDx0n&W@T&%fU9QncAFGlt{G@gE&y34K^yo!t%Vdw3?^ zUtYI!lHG(l4+lHo z7wil|s{EJw8RS;2w|wTHsS0s2p$<ieeo?kqx`bn~gHn$K zd*I#)yyJ*c|4-wiDhm&JA+m=iLt}ul+Kpj38iRUA?gi9QG$I5s7B~>3&CLbZtJ#?Q z%+&~-N&q6Y8(^y`SlNu9Q#g!=pc1sqb4i&$NK~(PwMgr{8ixY75Hy<#K^{vuM{Q6s zSJ0;>WBLe*$$v5%>^j5wpc|m3Qx#T*cEhW9WZDFg-qEfh zx&qMjw%7;ZrAOfVWf+{Or(s>8BZjleL2fw(T-0M%DQM9nI31uHkPrIA{v1mN&06Tw sGU!2+ztMW(>I8`fM|e$z<>CYy1I2pL9M{o=yb?>m=jm2qRTi2509OHm>;M1& delta 1740 zcmZ`(2~bm46#e;$glslKP)cG*FhFDxBTGP($XFaU(Z&&5HqjPALB%4B$dWRk3{)fd z0tgLT0ud@87I8tgP!L+N!BRy_twIr_Who3Tw4GvKJ~lSvG&4W%zWdL)+kfY^44|q3 zl(sVfPaq?@-?m!Yd>W7DQ)?@VOUkW}g|3WzuNeE}9P5MC9v;QXIrMvs@XNBeJhKBQ zjb^r~TEkkykT-lt%pc?6;R1*_TRaR01UNfvjlenT)+Q`X|MOjN1zCDmH;vcX5g@DRg*pjSxftI^|5T{h|qoEhR~YbBEW{(;7Ouvf4vtRl^juE5V=Jco08a*zWj6-HGOA zYwn|)JAZ%TS;)GRBsU>b(i^4H@qX4_zOSrs$C==fN{6gJ+*9i8nmcdsJZRhZa`$@XI{LM zKDM?YkK!b7pidsL9L+Xg9q1O|jkd23^e?_LN*pxeiJ8`FeBDQOisBmat;Q`4QT4$e zlF2nZkAPoEGc1LDyY*Exo+i_ly;wbXPgRq^7pmLRBr!w&z1qzuKYv=PA-G-9thpe2 z$QUy=xwHFfL>XnvyK@pDZe~-ORZC7%NXubw{{uf~tqZylR%s*c$=oBA33}eUO?cKn zH#_xINhAifEe5GmQ%WOwesE4hl}O*qY~e)iR~AX zAB{K{xg?NEeu-;Qos8iYyPi|eA1znDLz;T!0oAsIS@ZM&lxr1(-zTxWniq6k;u0;S{V=W%0nc?PcnB=7}S2V zGt_!2?NeX1@S%^ouX7-;=#oQojk~i*^I(f6Od~6@Z{v4d?R4&O>)?kw2?d)AitMk{ z@SGh5Hwk<#g)u`Q-2vU`C1P4lST>CdkjS-ksG!!)voec?gkYHm#2nHO5 zD@TV}*kJC5;t}NBTNo}8a1~ros4&Iat5Y!1Xfkwhzzc;5*2f}rJ@JGtOW?SP1pE|B zbt*eXsp)J4;rYPFAT3pdfu%}QOI_#FTWg)J5fH=?&X;8X><67ndo0J4l8I{tzLulj?!G<3KNc h4KxAQFPdVVVFH4n1o*fcfMd(`;FUFOBSD4k?LR7UVxs^6 diff --git a/Mage.Server/plugins/mage-player-ai.jar b/Mage.Server/plugins/mage-player-ai.jar index 6025a99a36a8259eb84541564220f74c69868d09..3065f749840d11d6612d4bb0df6c302c1e21a985 100644 GIT binary patch delta 21649 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 diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar index 046bec50811e74d97048e2e86594319ca7314a2f..10bf7b430938d1c202dcb130c1b2068b0e5dd639 100644 GIT binary patch delta 1608 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 diff --git a/Mage.Server/plugins/mage-player-human.jar b/Mage.Server/plugins/mage-player-human.jar index e508df5b877813a7b193e985f65b737797cdfa75..32180e3e7226dc785c46a57245abb190ebb9a7e9 100644 GIT binary patch delta 10760 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 a|K=D^Sq>iIKX%lAsx>SWR0{KdR{syj{gpZZ diff --git a/Mage.Server/plugins/mage-tournament-booster-draft.jar b/Mage.Server/plugins/mage-tournament-booster-draft.jar index e7895ec84415d75b69e950524da8ee56ac93bf84..eb6b7cc1c6e310a8848f48756e5abec4c451e381 100644 GIT binary patch delta 1238 zcmeyPGg+56z?+$civa}ACwffeRpC9C=wbiw>f8HuK%t2f?K14d)naZGC7y4U75^4@ zqj2NLq{~O!xTW>XVsDghWL%`>dR<#pI%Vn1d5(J~8tRMdi!-1ac~OBGWbzkn5Vcu} zv5E=In9uwh!kEjpfE6s_!1JCF#F%Wvrv;|t`HaEzRK5Vt-HVLu&rftK;h6l6&$B)@ z`?i5d?Y#O{&g!jC(o&@les$JtcHAs_t9P$xXjn}7HWihdo|1px@7^YII$kpI0sG4r zFY09GuU44owZ|aqkaK8J?ba$Yw>*P&9)~TICS6ExYdQ7t?swgNE{0v<({@_ESd{+$ zd-az87d~DqtZA&z&42$e$#qdvwzEa*Y6YH$^~c=GKdfDFM5Jl{L_M3MFB(?ttm%Z zZf>jkakW{Q^Zx(BYfgNX(E`OQ@29f5YyG;xS2^1wD|PNQ3x{24G41}Pfqeg`vK4CV z))Y|@cx8IEORa*dYS$L~x}a6A#~++YI(PosolhAHT&FIp_lo=<9C&gO%lDh7moJq* zxxH;>gucc#;gt_|E3FSTU;6oTqt{Ezv1NT=>ZsHbQ z`~J-8NhM8_qdv0-cr!AIFaxs_8zetXRunQp%}|q*giOJSdX|v1#C4#m+{E-$eYifT zwzERgjK3zo6p{xk>zL%s>q$ zlMf3kD1budg`I<=A5c*_Hv@w?Ocjt`(zuunsL*)weKxkqHX=M=3%y08ncR55!m~xh zSXtH{kk_bfPefrfxeCTF-|AU_05RuBtg(-Z;;0sy`i+R*?2 delta 1278 zcmbQN`$va2z?+$civa}OR;o|rRpE7AscxTB*0nYpDAYL7E6R^jW-&1^oMHvq zGdYpRWb#d6(aoGJOPIjwHn1&V1v7$q-ZO$taOKki(?xv7V0r~#0O#9aCHsw4<=5FK zGxB@ZM`zzQkf@zk-^y9N^-0>@)(1ZmryN{xlPmZ5y)G^7bym?rlO8SU`S-nc+mqeK zhZOiPUi_JN{CV&M4c+;YTOV%JY5BRQYExLQfu8447NxEW>TOHTeLUN*yU)e2E4*)~ zrPRHR{O!zEd$KEDTkJcqf7|u#0uhrsxRW~<GjHa)8GU(OwS14&Dhlqihwdxsv0L<=bKNh$2SVFxS-M%@J&EHE zVp9I4v~;6SeCDRj^`E^A`2YGY=(ed<+vRs#?r!PaC7zPsG@a)geX*4GJIi-($ATVB zH6t~R^fZG2_WfTTcpTbZzh~^!-F zPkQnTQN{X#qWpr?qLR$iV%`%Qxta|G7%tdOsJAFEd(xuBq35b0YZUpSW^HKcnz{)uo;-^Ey3gVh+s0Nl>mFI9C4~)YN>$~X-gQs0YcspE=d{-G zZ*!_H%7mSIBfC=9xc2R-64$?zoVnM=tl8K7=9rbn*=Kj<`2)NenM9c3`E0UI7~M z9D8waCL;sGTcDBFD8?D{fE8{M5d-TzEh5dRI{CSX99SEYN(KoyM}Xn2V-VluMm`x{ z)Ufdrm1gPyNk{>sP8P*a@Dc#%0Dd+G1{=6(AV1xPX)@r1r-aFhVxmkof>6^GCl`xJ Ku?Y!*v;hF5`O~`q diff --git a/Mage.Server/plugins/mage-tournament-sealed.jar b/Mage.Server/plugins/mage-tournament-sealed.jar index 723cd3dde0f6b3082a32ec12c53d78e46e9f0338..1cd65bc9e8cfaec9d7785de3ed68b377288c318f 100644 GIT binary patch delta 1223 zcmX@0epQ_}z?+$civa{KBzjEbRpC9K=wbiw>f8HuK%t2f?K14d)naZGC7y4U75^4@ zqj2NLq{~O!xTW>XVsDghWL%`>dR<#pI%Vn1d5(J~8tRMdi!-1ac~OBGWbzkn5Vcu} zv78Can8W-T!kEP7!3-9;%lU{A#F%`DTMJCT=Qak@sytpCyB8VRv)(W^nOx4}Qtz96 z$3Vp9`u;;Yd!vfBE!6FP9jqy`DOVx$h3<+?*8;P=ohI#-_WD;nU-#$j=xI&--!i_q z<=gl>F4|I)cBO6kCV^*{pPh`_dU%J5sc?se(|n0ZR>!yB|NcYjsKz~uXYW!f&fCfL zzxc84Y3}16T>tOfzjN@|B$pToZ(6cZ(7WVFk*3}R?(>FG3ai%3KRzxo z*JqojBhx$sAFr7kA2nt&3uQ*D9u!`auC-|9hRoj=nRZT_`fJwG1r1)4HnWtUIG}jz z6Z1l`1GWK+te0gkTYP)bsfBl0`meS7Zk^tDk^PI^!LJ2E5l8M?Hib4;M`k*DB{Ya> zMr^y%;P)cGp6OTRFQ1a&4ZllHpZ&Hi!a{_5chcJ=XYP9zWyeH>C55LL8^2oE9?w?r z=+$U%_-MS<1){z|xx4Flq>shHkPnS{5HQskPUR3|s{^JeWQ)-_{u`H?c z>|Mq=ubDY^XT7cUD(B@7ltS$e>78G7`phct;^i?OE7IJXCG_V0_0DN8=0v)GdGGD|hu_oVL)XmbvT-|>%(Pyx^UN~u zUF{qv*GR6E{~o`npYz@R|J%1F@cne){n5xBRFi#d^UfY6>ll_}=ieRpQ22iG+xM)x zqRr=K9`ya;c+xje>JKY0aY=v^EC(pT+6%8T&ngC{)CwTBo!r18SLN?>cGoT6!m!>;RVq{=A4^(W5qVO>%&{W;Y z9|gt07I6tlGo9d`e34stvXu}Q*b*e=3=(h-$Uk4XCpYp)O|BDyIIwOtu$>I2M|GpCOE;Y#z*Dkq?}Y z7{O|N-mJ~o^k~;+RmGEjr(V?G->On?t<3XDKvwqd;_8}pO)gp=kF4PI4?X$y_}RsV zMeT*IQpW@*w%8e|g!JX_fBVt2D{xQYnY*6iw!bTE7Cn|eef!u)(SJMl?`&=s?c`d= z`*2EblR=Acy>;$GX~#}Ymi-QTHpe$OT#2zi!f$BxGG}rV%b!CAD_xGAlK07+;E_9( z#ec&*&CaAdOUe=(V>+YiP6h=yh@OmWvQBv*klMw(knMnNz#{8qQp*s_Ia^a7X}wh)RIq} zo_;em?dsB!S&pt>>;klWM7&m@V?_``I6H z<;jUlPjSw(=P20}aoJW%`TYZTi2^5kMW>E%37bWx>aWXnjjGLeb(=<>-l(6cH|wt3 z%(aSZU(b%)nwoL({^^BI(%x^CFSk!Ntq<^KWD;S9=M($MOZkmabIRnW{HEaaD=Q!^ zaRiumaud^2_0jZA4iJ!Ld_FlxKpw2LPe7VUlyUNZPTk2j1Vq3>?}0-7%wVC{%%YS1 z1bM*1v4YY}t!!Z7<$^+Bp*=vM3!Fe9^T`525LNO*(u`XtTMNm76~qWhGd<#-EXX6H zh3a@vW`_ZN7=uB8;jNeJ_W^ly}3`-hQVT$E+ f5Z*+JC!pdAAht!(w1p39gY@LB!cuGv{2*BX7R0zb diff --git a/Mage.Sets/src/mage/sets/innistrad/BackFromTheBrink.java b/Mage.Sets/src/mage/sets/innistrad/BackFromTheBrink.java index e4d9e328ed6..af2c366afb8 100644 --- a/Mage.Sets/src/mage/sets/innistrad/BackFromTheBrink.java +++ b/Mage.Sets/src/mage/sets/innistrad/BackFromTheBrink.java @@ -127,7 +127,7 @@ class BackFromTheBrinkCost extends CostImpl { @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) { - if (targets.choose(Outcome.Exile, controllerId, game)) { + if (targets.choose(Outcome.Exile, controllerId, sourceId, game)) { Player player = game.getPlayer(controllerId); if (player != null) { Card card = player.getGraveyard().get(targets.getFirstTarget(), game); diff --git a/Mage.Sets/src/mage/sets/innistrad/CivilizedScholar.java b/Mage.Sets/src/mage/sets/innistrad/CivilizedScholar.java index ba995b3dc4e..72abff22811 100644 --- a/Mage.Sets/src/mage/sets/innistrad/CivilizedScholar.java +++ b/Mage.Sets/src/mage/sets/innistrad/CivilizedScholar.java @@ -102,7 +102,7 @@ class CivilizedScholarEffect extends OneShotEffect { if (player != null) { player.drawCards(1, game); TargetDiscard target = new TargetDiscard(player.getId()); - player.choose(Constants.Outcome.Discard, target, game); + player.choose(Constants.Outcome.Discard, target, source.getSourceId(), game); Card card = player.getHand().get(target.getFirstTarget(), game); if (card != null) { player.discard(card, source, game); diff --git a/Mage.Sets/src/mage/sets/innistrad/DivineReckoning.java b/Mage.Sets/src/mage/sets/innistrad/DivineReckoning.java index 60a09f2ac97..b29f666fc9d 100644 --- a/Mage.Sets/src/mage/sets/innistrad/DivineReckoning.java +++ b/Mage.Sets/src/mage/sets/innistrad/DivineReckoning.java @@ -102,7 +102,7 @@ class DivineReckoningEffect extends OneShotEffect { Target target = new TargetControlledPermanent(1, 1, filter, false); if (target.canChoose(player.getId(), game)) { while (!target.isChosen() && target.canChoose(player.getId(), game)) { - player.choose(Constants.Outcome.Benefit, target, game); + player.choose(Constants.Outcome.Benefit, target, source.getSourceId(), game); } Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { diff --git a/Mage.Sets/src/mage/sets/innistrad/GarrukTheVeilCursed.java b/Mage.Sets/src/mage/sets/innistrad/GarrukTheVeilCursed.java index 0590b466dfb..9bfe038a0e5 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GarrukTheVeilCursed.java +++ b/Mage.Sets/src/mage/sets/innistrad/GarrukTheVeilCursed.java @@ -163,7 +163,7 @@ class GarrukTheVeilCursedEffect extends OneShotEffect boolean sacrificed = false; if (target.canChoose(player.getId(), game)) { while (!target.isChosen() && target.canChoose(player.getId(), game)) { - player.choose(Constants.Outcome.Sacrifice, target, game); + player.choose(Constants.Outcome.Sacrifice, target, source.getSourceId(), game); } for (int idx = 0; idx < target.getTargets().size(); idx++) { diff --git a/Mage.Sets/src/mage/sets/innistrad/HarvestPyre.java b/Mage.Sets/src/mage/sets/innistrad/HarvestPyre.java index 0c3bdc20d79..13c24961af7 100644 --- a/Mage.Sets/src/mage/sets/innistrad/HarvestPyre.java +++ b/Mage.Sets/src/mage/sets/innistrad/HarvestPyre.java @@ -102,7 +102,7 @@ class HarvestPyreCost extends CostImpl implements VariableCost Player player = game.getPlayer(controllerId); while (true) { target.clearChosen(); - if (target.choose(Outcome.Exile, controllerId, game)) { + if (target.choose(Outcome.Exile, controllerId, sourceId, game)) { Card card = player.getGraveyard().get(target.getFirstTarget(), game); if (card != null) { player.getGraveyard().remove(card); diff --git a/Mage.Sets/src/mage/sets/innistrad/StitchersApprentice.java b/Mage.Sets/src/mage/sets/innistrad/StitchersApprentice.java index 9a86d190324..2ef8488a6bb 100644 --- a/Mage.Sets/src/mage/sets/innistrad/StitchersApprentice.java +++ b/Mage.Sets/src/mage/sets/innistrad/StitchersApprentice.java @@ -100,7 +100,7 @@ class StitchersApprenticeEffect extends OneShotEffect if (player != null) { Target target = new TargetControlledPermanent(new FilterControlledCreaturePermanent()); - if (target.canChoose(player.getId(), game) && player.choose(Outcome.Sacrifice, target, game)) { + if (target.canChoose(player.getId(), game) && player.choose(Outcome.Sacrifice, target, source.getSourceId(), game)) { Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { return permanent.sacrifice(source.getSourceId(), game); diff --git a/Mage.Sets/src/mage/sets/innistrad/TributeToHunger.java b/Mage.Sets/src/mage/sets/innistrad/TributeToHunger.java index fb3a3bcd71f..c9e201c3472 100644 --- a/Mage.Sets/src/mage/sets/innistrad/TributeToHunger.java +++ b/Mage.Sets/src/mage/sets/innistrad/TributeToHunger.java @@ -96,7 +96,7 @@ class TributeToHungerEffect extends OneShotEffect { TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, false); if (target.canChoose(player.getId(), game)) { - player.choose(Outcome.Sacrifice, target, game); + player.choose(Outcome.Sacrifice, target, source.getSourceId(), game); Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { diff --git a/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java b/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java index 6e7473505d9..342586c07cd 100644 --- a/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java +++ b/Mage.Sets/src/mage/sets/magic2011/PhylacteryLich.java @@ -136,7 +136,7 @@ class PhylacteryLichEffect extends OneShotEffect { TargetControlledPermanent target = new TargetControlledPermanent(filter); if (target.canChoose(source.getControllerId(), game)) { target.setRequired(true); - if (player.choose(Outcome.Neutral, target, game)) { + if (player.choose(Outcome.Neutral, target, source.getSourceId(), game)) { Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { permanent.addCounters(new Counter("phylactery"), game); diff --git a/Mage.Sets/src/mage/sets/magic2012/QuicksilverAmulet.java b/Mage.Sets/src/mage/sets/magic2012/QuicksilverAmulet.java index b193990a609..f244d8be54a 100644 --- a/Mage.Sets/src/mage/sets/magic2012/QuicksilverAmulet.java +++ b/Mage.Sets/src/mage/sets/magic2012/QuicksilverAmulet.java @@ -98,7 +98,7 @@ class PutCreatureOnBattlefieldEffect extends OneShotEffect { Target target = new TargetControlledPermanent(1, 1, filter, false); if (target.canChoose(player.getId(), game)) { while (!target.isChosen() && target.canChoose(player.getId(), game)) { - player.choose(Constants.Outcome.Sacrifice, target, game); + player.choose(Constants.Outcome.Sacrifice, target, source.getSourceId(), game); } for ( int idx = 0; idx < target.getTargets().size(); idx++) { diff --git a/Mage.Sets/src/mage/sets/morningtide/PreeminentCaptain.java b/Mage.Sets/src/mage/sets/morningtide/PreeminentCaptain.java index 4a380c57e2c..a057f63a378 100644 --- a/Mage.Sets/src/mage/sets/morningtide/PreeminentCaptain.java +++ b/Mage.Sets/src/mage/sets/morningtide/PreeminentCaptain.java @@ -96,7 +96,7 @@ class PreeminentCaptainEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); TargetCardInHand target = new TargetCardInHand(new FilterSoldierCard()); - if (target.choose(getOutcome(), player.getId(), game)) { + if (target.choose(getOutcome(), player.getId(), source.getSourceId(), game)) { if (target.getTargets().size() > 0) { UUID cardId = target.getFirstTarget(); Card card = player.getHand().get(cardId, game); @@ -108,7 +108,7 @@ class PreeminentCaptainEffect extends OneShotEffect { permanent.setTapped(true); TargetDefender def = new TargetDefender(game .getCombat().getDefenders(), player.getId()); - if (def.choose(getOutcome(), player.getId(), game)) { + if (def.choose(getOutcome(), player.getId(), source.getSourceId(), game)) { // TODO -> If only one option, don't ask, as for // normal attacking. if (def.getTargets().size() > 0) { diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumingVapors.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumingVapors.java index b310b85a4e8..c4639920b66 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumingVapors.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ConsumingVapors.java @@ -95,7 +95,7 @@ class ConsumingVaporsEffect extends OneShotEffect { //A spell or ability could have removed the only legal target this player //had, if thats the case this ability should fizzle. if (target.canChoose(player.getId(), game)) { - player.choose(Outcome.Sacrifice, target, game); + player.choose(Outcome.Sacrifice, target, source.getSourceId(), game); Permanent permanent = game.getPermanent(target.getFirstTarget()); if ( permanent != null ) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/AuriokReplica.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/AuriokReplica.java index c527ba8639d..b2b888b49b9 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/AuriokReplica.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/AuriokReplica.java @@ -100,7 +100,7 @@ class AuriokReplicaEffect extends PreventionEffectImpl { @Override public void init(Ability source, Game game) { - this.target.choose(Outcome.PreventDamage, source.getControllerId(), game); + this.target.choose(Outcome.PreventDamage, source.getControllerId(), source.getSourceId(), game); } @Override diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GlintHawk.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GlintHawk.java index a2eabbd51d1..bb039b43f0c 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GlintHawk.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GlintHawk.java @@ -100,7 +100,7 @@ class GlintHawkEffect extends OneShotEffect { TargetPermanent target = new TargetPermanent(1, 1, filter, false); if (target.canChoose(player.getId(), game)) { - player.choose(Outcome.Sacrifice, target, game); + player.choose(Outcome.Sacrifice, target, source.getSourceId(), game); Permanent permanent = game.getPermanent(target.getFirstTarget()); if ( permanent != null ) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/PsychicMiasma.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/PsychicMiasma.java index aaae3e32271..1e019d09499 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/PsychicMiasma.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/PsychicMiasma.java @@ -85,7 +85,7 @@ class PsychicMiasmaEffect1 extends OneShotEffect { Player player = game.getPlayer(targetPointer.getFirst(source)); if (player != null) { TargetDiscard target = new TargetDiscard(player.getId()); - player.choose(Outcome.Discard, target, game); + player.choose(Outcome.Discard, target, source.getSourceId(), game); Card card = player.getHand().get(target.getFirstTarget(), game); if (card != null) { player.discard(card, source, game); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/ClarionUltimatum.java b/Mage.Sets/src/mage/sets/shardsofalara/ClarionUltimatum.java index af97cdc3471..38ed8e7f453 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/ClarionUltimatum.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/ClarionUltimatum.java @@ -100,7 +100,7 @@ class ClarionUltimatumEffect extends OneShotEffect { TargetControlledPermanent permanentsTarget = new TargetControlledPermanent(Math.min(permanentsCount, 5)); permanentsTarget.setRequired(true); - player.choose(Outcome.Benefit, permanentsTarget, game); + player.choose(Outcome.Benefit, permanentsTarget, source.getSourceId(), game); List chosenCards = new ArrayList(); List namesFiltered = new ArrayList(); diff --git a/Mage.Sets/src/mage/sets/zendikar/EldraziMonument.java b/Mage.Sets/src/mage/sets/zendikar/EldraziMonument.java index 4490f38bc65..3b09520dff2 100644 --- a/Mage.Sets/src/mage/sets/zendikar/EldraziMonument.java +++ b/Mage.Sets/src/mage/sets/zendikar/EldraziMonument.java @@ -99,7 +99,7 @@ class EldraziMonumentEffect extends OneShotEffect { target.setRequired(true); Player player = game.getPlayer(source.getControllerId()); if (target.canChoose(source.getControllerId(), game)) { - player.choose(this.outcome, target, game); + player.choose(this.outcome, target, source.getSourceId(), game); Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { return permanent.sacrifice(source.getSourceId(), game); diff --git a/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java b/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java index 8fff27ec67f..a0eb4eeed7f 100644 --- a/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java +++ b/Mage.Sets/src/mage/sets/zendikar/QuestForTheHolyRelic.java @@ -116,7 +116,7 @@ class QuestForTheHolyRelicEffect extends OneShotEffect { FilterCreatureCard filter = new FilterCreatureCard("Goblin creature card from your hand"); filter.getSubtype().add("Goblin"); TargetCardInHand target = new TargetCardInHand(filter); - if (player.choose(Outcome.PutCreatureInPlay, target, game)) { + if (player.choose(Outcome.PutCreatureInPlay, target, source.getSourceId(), game)) { Card card = game.getCard(target.getFirstTarget()); if (card != null) { player.removeFromHand(card, game); diff --git a/Mage/src/mage/abilities/common/CopyPermanentEffect.java b/Mage/src/mage/abilities/common/CopyPermanentEffect.java index 5e85af15732..f66432ba9d3 100644 --- a/Mage/src/mage/abilities/common/CopyPermanentEffect.java +++ b/Mage/src/mage/abilities/common/CopyPermanentEffect.java @@ -69,7 +69,7 @@ public class CopyPermanentEffect extends OneShotEffect { if (player != null) { Target target = new TargetPermanent(filter); if (target.canChoose(source.getControllerId(), game)) { - player.choose(Outcome.Copy, target, game); + player.choose(Outcome.Copy, target, source.getSourceId(), game); Permanent perm = game.getPermanent(target.getFirstTarget()); if (perm != null) { perm = perm.copy(); diff --git a/Mage/src/mage/abilities/costs/common/DiscardTargetCost.java b/Mage/src/mage/abilities/costs/common/DiscardTargetCost.java index e5de532af4d..5b9ad27e9e6 100644 --- a/Mage/src/mage/abilities/costs/common/DiscardTargetCost.java +++ b/Mage/src/mage/abilities/costs/common/DiscardTargetCost.java @@ -54,7 +54,7 @@ public class DiscardTargetCost extends CostImpl { @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) { - if (targets.choose(Outcome.Discard, controllerId, game)) { + if (targets.choose(Outcome.Discard, controllerId, sourceId, game)) { Player player = game.getPlayer(controllerId); for (UUID targetId: targets.get(0).getTargets()) { Card card = player.getHand().get(targetId, game); diff --git a/Mage/src/mage/abilities/costs/common/ExileFromGraveCost.java b/Mage/src/mage/abilities/costs/common/ExileFromGraveCost.java index fbced62e571..a1be6a7b785 100644 --- a/Mage/src/mage/abilities/costs/common/ExileFromGraveCost.java +++ b/Mage/src/mage/abilities/costs/common/ExileFromGraveCost.java @@ -64,7 +64,7 @@ public class ExileFromGraveCost extends CostImpl { @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) { - if (targets.choose(Outcome.Exile, controllerId, game)) { + if (targets.choose(Outcome.Exile, controllerId, sourceId, game)) { Player player = game.getPlayer(controllerId); for (UUID targetId: targets.get(0).getTargets()) { Card card = player.getGraveyard().get(targetId, game); diff --git a/Mage/src/mage/abilities/costs/common/ReturnToHandTargetCost.java b/Mage/src/mage/abilities/costs/common/ReturnToHandTargetCost.java index c6d33ac8125..5d62c9176cf 100644 --- a/Mage/src/mage/abilities/costs/common/ReturnToHandTargetCost.java +++ b/Mage/src/mage/abilities/costs/common/ReturnToHandTargetCost.java @@ -58,7 +58,7 @@ public class ReturnToHandTargetCost extends CostImpl { @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) { - if (targets.choose(Outcome.ReturnToHand, controllerId, game)) { + if (targets.choose(Outcome.ReturnToHand, controllerId, sourceId, game)) { for (UUID targetId: targets.get(0).getTargets()) { Permanent permanent = game.getPermanent(targetId); if (permanent == null) diff --git a/Mage/src/mage/abilities/costs/common/SacrificeTargetCost.java b/Mage/src/mage/abilities/costs/common/SacrificeTargetCost.java index 657057049a6..7d95a81591b 100644 --- a/Mage/src/mage/abilities/costs/common/SacrificeTargetCost.java +++ b/Mage/src/mage/abilities/costs/common/SacrificeTargetCost.java @@ -60,7 +60,7 @@ public class SacrificeTargetCost extends CostImpl { @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) { - if (targets.choose(Outcome.Sacrifice, controllerId, game)) { + if (targets.choose(Outcome.Sacrifice, controllerId, sourceId, game)) { for (UUID targetId: targets.get(0).getTargets()) { Permanent permanent = game.getPermanent(targetId); if (permanent == null) @@ -74,7 +74,7 @@ public class SacrificeTargetCost extends CostImpl { @Override public boolean canPay(UUID sourceId, UUID controllerId, Game game) { - return targets.canChoose(controllerId, game); + return targets.canChoose(sourceId, controllerId, game); } @Override diff --git a/Mage/src/mage/abilities/costs/common/TapTargetCost.java b/Mage/src/mage/abilities/costs/common/TapTargetCost.java index f81a8cca550..b337555d7ee 100644 --- a/Mage/src/mage/abilities/costs/common/TapTargetCost.java +++ b/Mage/src/mage/abilities/costs/common/TapTargetCost.java @@ -57,7 +57,7 @@ public class TapTargetCost extends CostImpl { @Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) { - if (target.choose(Outcome.Tap, controllerId, game)) { + if (target.choose(Outcome.Tap, controllerId, sourceId, game)) { for (UUID targetId: (List)target.getTargets()) { Permanent permanent = game.getPermanent(targetId); if (permanent == null) diff --git a/Mage/src/mage/abilities/costs/common/TapVariableTargetCost.java b/Mage/src/mage/abilities/costs/common/TapVariableTargetCost.java index 891387850c9..032db72b471 100644 --- a/Mage/src/mage/abilities/costs/common/TapVariableTargetCost.java +++ b/Mage/src/mage/abilities/costs/common/TapVariableTargetCost.java @@ -68,7 +68,7 @@ public class TapVariableTargetCost extends CostImpl imple amountPaid = 0; while (true) { target.clearChosen(); - if (target.choose(Outcome.Tap, controllerId, game)) { + if (target.choose(Outcome.Tap, controllerId, sourceId, game)) { Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null && permanent.tap(game)) { amountPaid++; diff --git a/Mage/src/mage/abilities/effects/PlaneswalkerRedirectionEffect.java b/Mage/src/mage/abilities/effects/PlaneswalkerRedirectionEffect.java index 2906b732301..d77df1541a3 100644 --- a/Mage/src/mage/abilities/effects/PlaneswalkerRedirectionEffect.java +++ b/Mage/src/mage/abilities/effects/PlaneswalkerRedirectionEffect.java @@ -79,7 +79,7 @@ public class PlaneswalkerRedirectionEffect extends RedirectionEffect { TargetControlledPermanent target = new TargetControlledPermanent(numTargets, numTargets, filter, false); if (target.canChoose(player.getId(), game)) { while (!target.isChosen()) { - player.choose(Outcome.Sacrifice, target, game); + player.choose(Outcome.Sacrifice, target, source.getSourceId(), game); } perms.addAll(target.getTargets()); } diff --git a/Mage/src/mage/abilities/effects/common/SacrificeEffect.java b/Mage/src/mage/abilities/effects/common/SacrificeEffect.java index b73401e7444..19ea2f924c9 100644 --- a/Mage/src/mage/abilities/effects/common/SacrificeEffect.java +++ b/Mage/src/mage/abilities/effects/common/SacrificeEffect.java @@ -82,7 +82,7 @@ public class SacrificeEffect extends OneShotEffect{ if (target.canChoose(player.getId(), game)) { boolean abilityApplied = false; while (!target.isChosen() && target.canChoose(player.getId(), game)) { - player.choose(Outcome.Sacrifice, target, game); + player.choose(Outcome.Sacrifice, target, source.getSourceId(), game); } for ( int idx = 0; idx < target.getTargets().size(); idx++) { diff --git a/Mage/src/mage/abilities/effects/common/counter/ProliferateEffect.java b/Mage/src/mage/abilities/effects/common/counter/ProliferateEffect.java index 139d6e469d9..973aa83f582 100644 --- a/Mage/src/mage/abilities/effects/common/counter/ProliferateEffect.java +++ b/Mage/src/mage/abilities/effects/common/counter/ProliferateEffect.java @@ -68,7 +68,7 @@ public class ProliferateEffect extends OneShotEffect { Map options = new HashMap(); options.put("UI.right.btn.text", "Done"); while (target.canChoose(controller.getId(), game)) { - if (!controller.choose(Outcome.Benefit, target, game, options)) { + if (!controller.choose(Outcome.Benefit, target, source.getSourceId(), game, options)) { break; } } diff --git a/Mage/src/mage/abilities/keyword/AnnihilatorAbility.java b/Mage/src/mage/abilities/keyword/AnnihilatorAbility.java index bcba496b6c7..dac578fae05 100644 --- a/Mage/src/mage/abilities/keyword/AnnihilatorAbility.java +++ b/Mage/src/mage/abilities/keyword/AnnihilatorAbility.java @@ -121,7 +121,7 @@ class AnnihilatorEffect extends OneShotEffect { if (target.canChoose(player.getId(), game)) { boolean abilityApplied = false; while (!target.isChosen() && target.canChoose(player.getId(), game)) { - player.choose(Outcome.Sacrifice, target, game); + player.choose(Outcome.Sacrifice, target, source.getSourceId(), game); } for ( int idx = 0; idx < target.getTargets().size(); idx++) { diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 3f55c7b50da..74277b6b5ea 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -404,7 +404,7 @@ public abstract class GameImpl> implements Game, Serializa else { choosingPlayer = this.getPlayer(choosingPlayerId); } - if (choosingPlayer.choose(Outcome.Benefit, targetPlayer, this)) { + if (choosingPlayer.choose(Outcome.Benefit, targetPlayer, null, this)) { startingPlayerId = ((List)targetPlayer.getTargets()).get(0); fireInformEvent(state.getPlayer(startingPlayerId).getName() + " will start"); } diff --git a/Mage/src/mage/players/Player.java b/Mage/src/mage/players/Player.java index d51ae96f70c..df7c5fbcba4 100644 --- a/Mage/src/mage/players/Player.java +++ b/Mage/src/mage/players/Player.java @@ -206,8 +206,8 @@ public interface Player extends MageItem, Copyable { public void setResponseInteger(Integer data); public abstract void priority(Game game); - public abstract boolean choose(Outcome outcome, Target target, Game game); - public abstract boolean choose(Outcome outcome, Target target, Game game, Map options); + public abstract boolean choose(Outcome outcome, Target target, UUID sourceId, Game game); + public abstract boolean choose(Outcome outcome, Target target, UUID sourceId, Game game, Map options); public abstract boolean choose(Outcome outcome, Cards cards, TargetCard target, Game game); public abstract boolean chooseTarget(Outcome outcome, Target target, Ability source, Game game); public abstract boolean chooseTarget(Outcome outcome, Cards cards, TargetCard target, Ability source, Game game); diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index 70c36d44c7e..8fe09176d9c 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -408,7 +408,7 @@ public abstract class PlayerImpl> implements Player, Ser if (hand.size() == 0) break; TargetDiscard target = new TargetDiscard(playerId); - choose(Outcome.Discard, target, game); + choose(Outcome.Discard, target, source.getSourceId(), game); Card card = hand.get(target.getFirstTarget(), game); if (card != null && discard(card, source, game)) { numDiscarded++; @@ -1093,7 +1093,7 @@ public abstract class PlayerImpl> implements Player, Ser newTarget = new TargetCardInLibrary(library.count(target.getFilter(), game), target.getMaxNumberOfTargets(), target.getFilter()); else newTarget = target; - if (newTarget.choose(Outcome.Neutral, playerId, game)) { + if (newTarget.choose(Outcome.Neutral, playerId, null, game)) { game.fireEvent(GameEvent.getEvent(GameEvent.EventType.LIBRARY_SEARCHED, playerId, playerId)); return true; } diff --git a/Mage/src/mage/target/Target.java b/Mage/src/mage/target/Target.java index 182fec71b01..a9161f51817 100644 --- a/Mage/src/mage/target/Target.java +++ b/Mage/src/mage/target/Target.java @@ -63,7 +63,7 @@ public interface Target extends Serializable { //methods for non-targets public boolean canChoose(UUID sourceControllerId, Game game); public Set possibleTargets(UUID sourceControllerId, Game game); - public boolean choose(Outcome outcome, UUID playerId, Game game); + public boolean choose(Outcome outcome, UUID playerId, UUID sourceId, Game game); public void add(UUID id, Game game); public void remove(UUID targetId); diff --git a/Mage/src/mage/target/TargetImpl.java b/Mage/src/mage/target/TargetImpl.java index 929108b975b..7be4c286734 100644 --- a/Mage/src/mage/target/TargetImpl.java +++ b/Mage/src/mage/target/TargetImpl.java @@ -212,11 +212,11 @@ public abstract class TargetImpl> implements Target { } @Override - public boolean choose(Outcome outcome, UUID playerId, Game game) { + public boolean choose(Outcome outcome, UUID playerId, UUID sourceId, Game game) { Player player = game.getPlayer(playerId); while (!isChosen() && !doneChosing()) { chosen = targets.size() >= minNumberOfTargets; - if (!player.choose(outcome, this, game)) { + if (!player.choose(outcome, this, sourceId, game)) { return chosen; } chosen = targets.size() >= minNumberOfTargets; diff --git a/Mage/src/mage/target/TargetPermanent.java b/Mage/src/mage/target/TargetPermanent.java index 1ed8cc4f9c7..05240165472 100644 --- a/Mage/src/mage/target/TargetPermanent.java +++ b/Mage/src/mage/target/TargetPermanent.java @@ -94,6 +94,14 @@ public class TargetPermanent> extends TargetObject< return false; } + public boolean canTarget(UUID controllerId, UUID id, UUID sourceId, Game game, boolean flag) { + Permanent permanent = game.getPermanent(id); + if (permanent != null) { + return filter.match(permanent, sourceId, controllerId, game); + } + return false; + } + @Override public FilterPermanent getFilter() { return this.filter; @@ -115,7 +123,7 @@ public class TargetPermanent> extends TargetObject< return true; int count = 0; MageObject targetSource = game.getObject(sourceId); - for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, game)) { + for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, sourceId, game)) { if (!targets.containsKey(permanent.getId()) && permanent.canBeTargetedBy(targetSource)) { count++; if (count >= remainingTargets) @@ -155,7 +163,7 @@ public class TargetPermanent> extends TargetObject< public Set possibleTargets(UUID sourceId, UUID sourceControllerId, Game game) { Set possibleTargets = new HashSet(); MageObject targetSource = game.getObject(sourceId); - for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, game)) { + for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, sourceId, game)) { if (!targets.containsKey(permanent.getId()) && permanent.canBeTargetedBy(targetSource)) { possibleTargets.add(permanent.getId()); } diff --git a/Mage/src/mage/target/Targets.java b/Mage/src/mage/target/Targets.java index ffca850b57c..72e98e2ce5f 100644 --- a/Mage/src/mage/target/Targets.java +++ b/Mage/src/mage/target/Targets.java @@ -72,13 +72,13 @@ public class Targets extends ArrayList { return true; } - public boolean choose(Outcome outcome, UUID playerId, Game game) { + public boolean choose(Outcome outcome, UUID playerId, UUID sourceId, Game game) { if (this.size() > 0) { if (!canChoose(playerId, game)) return false; while (!isChosen()) { Target target = this.getUnchosen().get(0); - if (!target.choose(outcome, playerId, game)) + if (!target.choose(outcome, playerId, sourceId, game)) return false; } } diff --git a/Mage/src/mage/target/common/TargetCardInLibrary.java b/Mage/src/mage/target/common/TargetCardInLibrary.java index 11f43a78501..b7833529db4 100644 --- a/Mage/src/mage/target/common/TargetCardInLibrary.java +++ b/Mage/src/mage/target/common/TargetCardInLibrary.java @@ -66,7 +66,7 @@ public class TargetCardInLibrary extends TargetCard { } @Override - public boolean choose(Outcome outcome, UUID playerId, Game game) { + public boolean choose(Outcome outcome, UUID playerId, UUID sourceId, Game game) { Player player = game.getPlayer(playerId); while (!isChosen() && !doneChosing()) { chosen = targets.size() >= minNumberOfTargets;