Bug Reports (snapshot builds)
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Re: Bug Reports (snapshot builds)
by Marek14 » 28 Dec 2016, 18:08
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)
by fmartel » 28 Dec 2016, 18:17
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)
- fmartel
- Posts: 281
- Joined: 31 Dec 2013, 19:27
- Location: Québec City
- Has thanked: 8 times
- Been thanked: 4 times
Re: Bug Reports (snapshot builds)
by Agetian » 28 Dec 2016, 18:25
I think I fixed this (implemented it as a ChangeZone instead of as Draw).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.
- Agetian
- Agetian
- Programmer
- Posts: 3473
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 562 times
Re: Bug Reports (snapshot builds)
by Agetian » 28 Dec 2016, 18:30
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.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)
- Agetian
- Agetian
- Programmer
- Posts: 3473
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 562 times
Re: Bug Reports (snapshot builds)
by Agetian » 28 Dec 2016, 18:51
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?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.
- Agetian
- Agetian
- Programmer
- Posts: 3473
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 562 times
Re: Bug Reports (snapshot builds)
by fmartel » 28 Dec 2016, 18:51
You're really quick, or I'm really slow typing !Agetian wrote: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?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.
- Agetian
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.
- fmartel
- Posts: 281
- Joined: 31 Dec 2013, 19:27
- Location: Québec City
- Has thanked: 8 times
- Been thanked: 4 times
Re: Bug Reports (snapshot builds)
by Hanmac » 28 Dec 2016, 19:06
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)
i fixed that with r32846.
(thats why Agetian doesn't get this bugs anymore)
Re: Bug Reports (snapshot builds)
by Hanmac » 29 Dec 2016, 11:40
i did massive changes with Damage/CombatDamage/Lifelink can you test it out?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
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.
Last edited by Hanmac on 29 Dec 2016, 12:46, edited 1 time in total.
Re: Bug Reports (snapshot builds)
by Agetian » 29 Dec 2016, 12:28
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:
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
- Programmer
- Posts: 3473
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 562 times
Re: Bug Reports (snapshot builds)
by Marek14 » 29 Dec 2016, 12:42
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.
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.
Last edited by Marek14 on 29 Dec 2016, 12:51, edited 2 times in total.
Re: Bug Reports (snapshot builds)
by Hanmac » 29 Dec 2016, 12:48
fixed i forgot GameEntityAgetian 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:- Agetian
- 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
Re: Bug Reports (snapshot builds)
by Agetian » 29 Dec 2016, 12:59
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
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
- Agetian
- Programmer
- Posts: 3473
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 562 times
Re: Bug Reports (snapshot builds)
by Hanmac » 29 Dec 2016, 13:20
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)
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)
by Agetian » 29 Dec 2016, 13:25
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
Marek made a report a few posts above related to damage too, may be related to the recent changes or not.
- Agetian
- Agetian
- Programmer
- Posts: 3473
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 562 times
Re: Bug Reports (snapshot builds)
by Hanmac » 29 Dec 2016, 13:49
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)
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)
Who is online
Users browsing this forum: No registered users and 15 guests