Page 397 of 487

Re: Bug Reports (snapshot builds)

PostPosted: 28 Dec 2016, 18:08
by Marek14
Covenant of Minds is implemented incorrectly. If the opponent lets you put the three revealed cards into your hand, it should not count as drawing.

Re: Bug Reports (snapshot builds)

PostPosted: 28 Dec 2016, 18:17
by fmartel
Description: [Before starting a game of commander, I was shuffling the random commander decks]

NullPointerException | Open
Code: Select all
Forge Version:    1.5.58-SNAPSHOT-r32845
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_25 Oracle Corporation

java.lang.NullPointerException
   at forge.game.replacement.ReplaceGainLife.canReplace(ReplaceGainLife.java:46)
   at forge.game.replacement.ReplacementHandler.run(ReplacementHandler.java:123)
   at forge.game.replacement.ReplacementHandler.run(ReplacementHandler.java:83)
   at forge.game.player.Player.doDraw(Player.java:1332)
   at forge.game.player.Player.drawCards(Player.java:1311)
   at forge.game.GameAction.startGame(GameAction.java:1430)
   at forge.game.Match.startGame(Match.java:95)
   at forge.match.HostedMatch$2.run(HostedMatch.java:220)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)

Re: Bug Reports (snapshot builds)

PostPosted: 28 Dec 2016, 18:25
by Agetian
Marek14 wrote:Covenant of Minds is implemented incorrectly. If the opponent lets you put the three revealed cards into your hand, it should not count as drawing.
I think I fixed this (implemented it as a ChangeZone instead of as Draw).

- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 28 Dec 2016, 18:30
by Agetian
fmartel wrote:Description: [Before starting a game of commander, I was shuffling the random commander decks]

NullPointerException | Open
Code: Select all
Forge Version:    1.5.58-SNAPSHOT-r32845
Operating System: Windows 7 6.1 amd64
Java Version:     1.8.0_25 Oracle Corporation

java.lang.NullPointerException
   at forge.game.replacement.ReplaceGainLife.canReplace(ReplaceGainLife.java:46)
   at forge.game.replacement.ReplacementHandler.run(ReplacementHandler.java:123)
   at forge.game.replacement.ReplacementHandler.run(ReplacementHandler.java:83)
   at forge.game.player.Player.doDraw(Player.java:1332)
   at forge.game.player.Player.drawCards(Player.java:1311)
   at forge.game.GameAction.startGame(GameAction.java:1430)
   at forge.game.Match.startGame(Match.java:95)
   at forge.match.HostedMatch$2.run(HostedMatch.java:220)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
Hmm this is an issue with the new replacement effect code, I've taken a look but I'm not sure I fully understand the issue, so I think it would be nice if Hanmac checks it out when he has time. :)

- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 28 Dec 2016, 18:51
by Agetian
fmartel wrote:with -r32845, in commander, I notice something NOT happening. I have Primal Vigor, Awakening Zone, Angelic Accord OTB, I play Grove of the Guardian and don't receive 2x 8/8 Elemental Token, same goes for the angel and Eldrazi spawn. everything else plays properly, (Angelic Accord [giving me an angel for gaining 4 life], Elemental Bond [Draw], Trostani [life gain])
Edit : The same issue happens with Parallel Lives. It doesnt double the token under my control.
This is odd, I just tried these cases and they worked correctly for me, the tokens are definitely produced in twos (from all the cards mentioned). :/ Were there any other cards on the battlefield that could possibly have affected this?

- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 28 Dec 2016, 18:51
by fmartel
Agetian wrote:
fmartel wrote:with -r32845, in commander, I notice something NOT happening. I have Primal Vigor, Awakening Zone, Angelic Accord OTB, I play Grove of the Guardian and don't receive 2x 8/8 Elemental Token, same goes for the angel and Eldrazi spawn. everything else plays properly, (Angelic Accord [giving me an angel for gaining 4 life], Elemental Bond [Draw], Trostani [life gain])
Edit : The same issue happens with Parallel Lives. It doesnt double the token under my control.
This is odd, I just tried these cases and they worked correctly for me, the tokens are definitely produced in twos (from all the cards mentioned). :/ Were there any other cards on the battlefield that could possibly have affected this?

- Agetian
You're really quick, or I'm really slow typing ! :D

I have the same issue on another game. I have Parallel Lives OTB, I attack AI1 with Brimaz, King of Oreskos and get only 1 Cat Soldier....


Edit : please, have a look to the attachment.
Capture.PNG
A look at tthe Battlefeild

Re: Bug Reports (snapshot builds)

PostPosted: 28 Dec 2016, 19:06
by Hanmac
hm the ReplaceEffect => DoubleToken should work again, i broke something while reworking it.
i fixed that with r32846.
(thats why Agetian doesn't get this bugs anymore)

Re: Bug Reports (snapshot builds)

PostPosted: 29 Dec 2016, 11:40
by Hanmac
Agetian wrote:Well, sadly I can't figure out what to do with Lifelink when the combat damage is replaced via ReplaceDamage.
The thing is, it's currently quite broken and even acts differently (and inconsistently) when the damage is dealt to a permanent or to a player. To wit:

* If a lifelink creature deals damage to a player while Gisela, Blade of Goldnight is in play, then double damage is dealt to the player, but no life gain happens at all (the damage is treated at 0 in Combat::dealAssignedDamage).

* If a lifelink creature deals damage to a permanent (creature) while Gisela, Blade of Goldnight is in play, then double damage is dealt to the creature, the life gain happens as well, but only as if the damage dealt was not double (for example, Baneslayer Angel would deal 10 damage to the creature, and the player would gain 5 life from lifelink).

Not sure how to best approach fixing this without breaking other stuff. :/

- Agetian
i did massive changes with Damage/CombatDamage/Lifelink can you test it out?

tested it with Furnace of Rath and Rhox Faithmender.
attacking causes me to gain 1 * 2 * 2 Life. (not tested but Ajani's Pridemate should only trigger once)

that works without other changes to the ReplacementEffects (no cards need to be changed but it can be done)

Edit: not perfect yet, but i am fixing it.

Edit: is fixed now.

Furnace of Rath and Rhox Faithmender blocked by Razorgrass Screen.
Rhox Faithmender deals 1 * 2 damage to Razorgrass Screen (2/lifelink)
Razorgrass Screen deals 2 * 2 damage to Rhox Faithmender (4)
then you gain 2 * 2 life because of lifelink.

Re: Bug Reports (snapshot builds)

PostPosted: 29 Dec 2016, 12:28
by Agetian
Thanks a lot! :) Sure thing, I'll be happy to test it out, I'll keep this post updated for further test results.

For the time being, however, I'm unable to launch it since I'm getting a lot of compilation errors:
Code: Select all
-------------------------------------------------------------
forge/game/card/Card.java:[86,8] forge.game.card.Card is not abstract and does not override abstract method addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
forge/game/card/Card.java:[6177,22] addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.card.Card cannot override addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
  return type int is not compatible with boolean
forge/game/card/Card.java:[6176,5] method does not override or implement a method from a supertype
forge/game/player/Player.java:[79,8] forge.game.player.Player is not abstract and does not override abstract method addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
forge/game/player/Player.java:[537,22] addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.player.Player cannot override addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
  return type int is not compatible with boolean
forge/game/player/Player.java:[536,5] method does not override or implement a method from a supertype
forge/game/cost/CostDamage.java:[63,34] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DetachedCardEffect.java:[7,8] addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.card.Card cannot override addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
  return type int is not compatible with boolean
forge/game/ability/effects/DamageAllEffect.java:[82,41] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageAllEffect.java:[92,47] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageDealEffect.java:[144,27] bad operand types for binary operator '+'
  first type:  int
  second type: boolean
forge/game/ability/effects/DamageDealEffect.java:[165,70] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageDealEffect.java:[178,54] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageDealEffect.java:[190,70] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageDealEffect.java:[201,54] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageEachEffect.java:[83,35] bad operand types for binary operator '+'
  first type:  int
  second type: boolean
forge/game/ability/effects/DamageEachEffect.java:[89,35] bad operand types for binary operator '+'
  first type:  int
  second type: boolean
forge/game/ability/effects/DamageEachEffect.java:[105,50] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageEachEffect.java:[122,39] bad operand types for binary operator '+'
  first type:  int
  second type: boolean
forge/game/ability/effects/FightEffect.java:[112,43] incompatible types: boolean cannot be converted to int
20 errors
- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 29 Dec 2016, 12:42
by Marek14
I played Mana Clash, got heads for opponent and tails for myself, took 1 damage, and then the effect ended. Mana Clash should continue until both players get heads.

Fiery Gambit doesn't work for me (no coin flips appear). I had Krark's Thumb and cast Fiery Gambit vie Eye of the Storm.

EDIT: Next attempt to cast Fiery Gambit worked, except that when I guessed tails and both Krark's Thumb flips were heads, I won the flip anyway.

EDIT2: I just can't get Fiery Gambit to deal any damage, no matter how I win or lose the flips. Also, the effect doesn't stop after I lose the flip, I still can flip more coins, which is wrong.

Re: Bug Reports (snapshot builds)

PostPosted: 29 Dec 2016, 12:48
by Hanmac
Agetian wrote:Thanks a lot! :) Sure thing, I'll be happy to test it out, I'll keep this post updated for further test results.

For the time being, however, I'm unable to launch it since I'm getting a lot of compilation errors:
Code: Select all
-------------------------------------------------------------
forge/game/card/Card.java:[86,8] forge.game.card.Card is not abstract and does not override abstract method addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
forge/game/card/Card.java:[6177,22] addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.card.Card cannot override addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
  return type int is not compatible with boolean
forge/game/card/Card.java:[6176,5] method does not override or implement a method from a supertype
forge/game/player/Player.java:[79,8] forge.game.player.Player is not abstract and does not override abstract method addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
forge/game/player/Player.java:[537,22] addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.player.Player cannot override addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
  return type int is not compatible with boolean
forge/game/player/Player.java:[536,5] method does not override or implement a method from a supertype
forge/game/cost/CostDamage.java:[63,34] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DetachedCardEffect.java:[7,8] addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.card.Card cannot override addDamageAfterPrevention(int,forge.game.card.Card,boolean) in forge.game.GameEntity
  return type int is not compatible with boolean
forge/game/ability/effects/DamageAllEffect.java:[82,41] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageAllEffect.java:[92,47] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageDealEffect.java:[144,27] bad operand types for binary operator '+'
  first type:  int
  second type: boolean
forge/game/ability/effects/DamageDealEffect.java:[165,70] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageDealEffect.java:[178,54] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageDealEffect.java:[190,70] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageDealEffect.java:[201,54] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageEachEffect.java:[83,35] bad operand types for binary operator '+'
  first type:  int
  second type: boolean
forge/game/ability/effects/DamageEachEffect.java:[89,35] bad operand types for binary operator '+'
  first type:  int
  second type: boolean
forge/game/ability/effects/DamageEachEffect.java:[105,50] incompatible types: boolean cannot be converted to int
forge/game/ability/effects/DamageEachEffect.java:[122,39] bad operand types for binary operator '+'
  first type:  int
  second type: boolean
forge/game/ability/effects/FightEffect.java:[112,43] incompatible types: boolean cannot be converted to int
20 errors
- Agetian
fixed i forgot GameEntity :?

Re: Bug Reports (snapshot builds)

PostPosted: 29 Dec 2016, 12:59
by Agetian
Okie doke, let's get testing :)

For starters, I tried the scenario where Kalitas, Traitor of Ghet would deal damage to a number of creatures on the battlefield in the presence of Ajani's Pridemate via Chandra's Ignition. However, no life gain happened at all in that case and Ajani's Pridemate did not trigger either.

Gisela, Blade of Goldnight + Kalitas, Traitor of Ghet worked correctly, I gained 6 life (double the amount), and Ajani's Pridemate triggered in response to the life gain event as well.

- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 29 Dec 2016, 13:20
by Hanmac
for the Kalitas, Traitor of Ghet + Chandra's Ignition + Ajani's Pridemate i fixed it. (was wrong sourceLKI)

what does not yet work is if you add Gisela, Blade of Goldnight too.
For that damage multiplicators need to be rewritten with with my new Replacement Effect (does not work yet for DamageRedirection)

Re: Bug Reports (snapshot builds)

PostPosted: 29 Dec 2016, 13:25
by Agetian
I can confirm the interaction works now (and Ajani's Pridemate triggered only once, which is good). :)
Marek made a report a few posts above related to damage too, may be related to the recent changes or not.

- Agetian

Re: Bug Reports (snapshot builds)

PostPosted: 29 Dec 2016, 13:49
by Hanmac
updated cards with "ReplaceCount$DamageAmount/Twice"

that does fix
Kalitas, Traitor of Ghet + Chandra's Ignition + Ajani's Pridemate + Gisela, Blade of Goldnight

(does still not work yet for other redirection)