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 Djebb » 01 Jan 2017, 18:53
Yo !
This happens anytime i attack with an Identity Thief
This happens anytime i attack with an Identity Thief
- Code: Select all
Description: [describe what you were doing when the crash occurred]
[spoiler=ClassCastException][code]
Forge Version: 1.5.58-SNAPSHOT-r32843
Operating System: Windows 10 10.0 amd64
Java Version: 1.8.0_111 Oracle Corporation
java.lang.ClassCastException: forge.game.ability.AbilityApiBased cannot be cast to forge.game.spellability.AbilitySub
at forge.game.ability.AbilityFactory.getSubAbility(AbilityFactory.java:415)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:237)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:144)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:127)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:139)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:131)
at forge.game.trigger.TriggerHandler.runSingleTrigger(TriggerHandler.java:553)
at forge.game.trigger.TriggerHandler.runNonStaticTriggersForPlayer(TriggerHandler.java:416)
at forge.game.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:358)
at forge.game.trigger.TriggerHandler.runWaitingTriggers(TriggerHandler.java:307)
at forge.game.zone.MagicStack.unfreezeStack(MagicStack.java:163)
at forge.game.phase.PhaseHandler.onPhaseBegin(PhaseHandler.java:268)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:977)
at forge.game.GameAction.startGame(GameAction.java:1456)
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)
Last edited by Djebb on 01 Jan 2017, 22:09, edited 1 time in total.
Re: Bug Reports (snapshot builds)
by Nekoatl » 01 Jan 2017, 20:31
Description: This happens when a sliver is played while Mesmeric Sliver is on the battlefield.
- RuntimeException | Open
- Code: Select all
Forge Version: 1.5.58-SNAPSHOT-r32716
Operating System: Windows 10 10.0 amd64
Java Version: 1.8.0_101 Oracle Corporation
java.lang.RuntimeException: AbilityFactory : getAbility -- Manaweft Sliver has no SVar: ChooseP
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:137)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:131)
at forge.game.trigger.TriggerHandler.runSingleTrigger(TriggerHandler.java:553)
at forge.game.trigger.TriggerHandler.runNonStaticTriggersForPlayer(TriggerHandler.java:416)
at forge.game.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:358)
at forge.game.trigger.TriggerHandler.runWaitingTriggers(TriggerHandler.java:307)
at forge.game.zone.MagicStack.unfreezeStack(MagicStack.java:163)
at forge.game.zone.MagicStack.finishResolving(MagicStack.java:543)
at forge.game.zone.MagicStack.resolveStack(MagicStack.java:521)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:980)
at forge.game.GameAction.startGame(GameAction.java:1451)
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)
by Marek14 » 01 Jan 2017, 22:08
Shrine of the Forsaken Gods has a typo in its second ability (the cost is listed twice).
Re: Bug Reports (snapshot builds)
by Djebb » 01 Jan 2017, 22:10
nice !Hanmac wrote:@Djebb: fixed in r32921.
Re: Bug Reports (snapshot builds)
by Agetian » 02 Jan 2017, 04:58
Fixed (r32930).Nekoatl wrote:Description: This happens when a sliver is played while Mesmeric Sliver is on the battlefield.
- RuntimeException | Open
- Code: Select all
Forge Version: 1.5.58-SNAPSHOT-r32716
Operating System: Windows 10 10.0 amd64
Java Version: 1.8.0_101 Oracle Corporation
java.lang.RuntimeException: AbilityFactory : getAbility -- Manaweft Sliver has no SVar: ChooseP
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:137)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:131)
at forge.game.trigger.TriggerHandler.runSingleTrigger(TriggerHandler.java:553)
at forge.game.trigger.TriggerHandler.runNonStaticTriggersForPlayer(TriggerHandler.java:416)
at forge.game.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:358)
at forge.game.trigger.TriggerHandler.runWaitingTriggers(TriggerHandler.java:307)
at forge.game.zone.MagicStack.unfreezeStack(MagicStack.java:163)
at forge.game.zone.MagicStack.finishResolving(MagicStack.java:543)
at forge.game.zone.MagicStack.resolveStack(MagicStack.java:521)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:980)
at forge.game.GameAction.startGame(GameAction.java:1451)
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: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Bug Reports (snapshot builds)
by Agetian » 02 Jan 2017, 05:00
Fixed (r32931).Marek14 wrote:Shrine of the Forsaken Gods has a typo in its second ability (the cost is listed twice).
- Agetian
- Agetian
- Programmer
- Posts: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Bug Reports (snapshot builds)
by Devilman06 » 02 Jan 2017, 20:14
There seems to be an Issue with planechase in relation to commander. It doesn't use the custom planechase decks and instead opts for a random deck everytime. When you choose the decks then choose the planechase deck it blanks out the opponents deck every time.
- Devilman06
- Posts: 127
- Joined: 29 Jan 2010, 03:59
- Has thanked: 1 time
- Been thanked: 2 times
Re: Bug Reports (snapshot builds)
by sugus » 03 Jan 2017, 01:35
This happens when 'Faerie Artisans' ability is put on the stack:
- Code: Select all
Description: [describe what you were doing when the crash occurred]
[spoiler=NullPointerException][code]
Forge Version: 1.5.58-SNAPSHOT-r32816
Operating System: Windows 8.1 6.3 x86
Java Version: 1.8.0_31 Oracle Corporation
java.lang.NullPointerException
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:236)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:144)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:127)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:139)
at forge.game.ability.AbilityFactory.getSubAbility(AbilityFactory.java:415)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:229)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:144)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:127)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:139)
at forge.game.ability.AbilityFactory.getAbility(AbilityFactory.java:131)
at forge.game.trigger.TriggerHandler.runSingleTrigger(TriggerHandler.java:553)
at forge.game.trigger.TriggerHandler.runNonStaticTriggersForPlayer(TriggerHandler.java:416)
at forge.game.trigger.TriggerHandler.runWaitingTrigger(TriggerHandler.java:362)
at forge.game.trigger.TriggerHandler.runWaitingTriggers(TriggerHandler.java:307)
at forge.game.zone.MagicStack.unfreezeStack(MagicStack.java:163)
at forge.game.zone.MagicStack.finishResolving(MagicStack.java:543)
at forge.game.zone.MagicStack.resolveStack(MagicStack.java:521)
at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:980)
at forge.game.GameAction.startGame(GameAction.java:1456)
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)
Re: Bug Reports (snapshot builds)
by Agetian » 03 Jan 2017, 06:28
Hm, this is an odd card. It crashes because of a typo and AB/DB thing (AB$ with Cost 0 needs to be changed to DB$), but even if that is corrected, the card still works incorrectly, and in a big way - basically it exiles every single card on the battlefield, completely wiping it. I took at look at the code and it looks like the way it's trying to do it (via ChangeZoneAll and Imprinted) does not work since that returns all the cards instead of only the imprinted ones as expected by the script (no idea if that's intentional in that ChangeZoneAll code path, btw). How should we best rewrite this card? :/ Can using Imprint be avoided in this script?
Here's a script that does not crash but it wipes the entire battlefield in one big swoosh:
- Code: Select all
Name:Faerie Artisans
ManaCost:3 U
Types:Creature Faerie Artificer
PT:2/2
K:Flying
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonToken+OppCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigImprint | TriggerDescription$Whenever a nontoken creature enters the battlefield under an opponent's control, create a token that's a copy of that creature except that it's an artifact in addition to its other types. Then exile all other tokens created with Faerie Artisans.
SVar:TrigImprint:DB$ Pump | ImprintCards$ Remembered | SubAbility$ DBCopy
SVar:DBCopy:DB$ CopyPermanent | Defined$ TriggeredCard | Controller$ You | AddTypes$ Artifact | RememberCopied$ True | SubAbility$ DBChangeZoneAll
SVar:DBChangeZoneAll:DB$ ChangeZoneAll | Origin$ Battlefield | Destination$ Exile | ChangeType$ Imprinted
DeckHas:Ability$Token
SVar:Picture:http://www.wizards.com/global/images/magic/general/faerie_artisans.jpg
Oracle:Flying\nWhenever a nontoken creature enters the battlefield under an opponent's control, create a token that's a copy of that creature except that it's an artifact in addition to its other types. Then exile all other tokens created with Faerie Artisans.
- Agetian
- Programmer
- Posts: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Bug Reports (snapshot builds)
by friarsol » 03 Jan 2017, 14:21
I think ChangeType goes through the "Valid" path not the "Defined" path. So it would need to be Card.IsImprinted (or whatever the appropriate name is).Agetian wrote:Hm, this is an odd card. It crashes because of a typo and AB/DB thing (AB$ with Cost 0 needs to be changed to DB$), but even if that is corrected, the card still works incorrectly, and in a big way - basically it exiles every single card on the battlefield, completely wiping it. I took at look at the code and it looks like the way it's trying to do it (via ChangeZoneAll and Imprinted) does not work since that returns all the cards instead of only the imprinted ones as expected by the script (no idea if that's intentional in that ChangeZoneAll code path, btw). How should we best rewrite this card? :/ Can using Imprint be avoided in this script?
Here's a script that does not crash but it wipes the entire battlefield in one big swoosh:- Agetian
- Code: Select all
Name:Faerie Artisans
ManaCost:3 U
Types:Creature Faerie Artificer
PT:2/2
K:Flying
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonToken+OppCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigImprint | TriggerDescription$Whenever a nontoken creature enters the battlefield under an opponent's control, create a token that's a copy of that creature except that it's an artifact in addition to its other types. Then exile all other tokens created with Faerie Artisans.
SVar:TrigImprint:DB$ Pump | ImprintCards$ Remembered | SubAbility$ DBCopy
SVar:DBCopy:DB$ CopyPermanent | Defined$ TriggeredCard | Controller$ You | AddTypes$ Artifact | RememberCopied$ True | SubAbility$ DBChangeZoneAll
SVar:DBChangeZoneAll:DB$ ChangeZoneAll | Origin$ Battlefield | Destination$ Exile | ChangeType$ Imprinted
DeckHas:Ability$Token
SVar:Picture:http://www.wizards.com/global/images/magic/general/faerie_artisans.jpg
Oracle:Flying\nWhenever a nontoken creature enters the battlefield under an opponent's control, create a token that's a copy of that creature except that it's an artifact in addition to its other types. Then exile all other tokens created with Faerie Artisans.
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by Agetian » 03 Jan 2017, 14:33
Thanks, Sol! That did the trick!
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3472
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 561 times
Re: Bug Reports (snapshot builds)
by Marek14 » 03 Jan 2017, 18:59
I still notice some odd failures to play AI suspend cards, but in addition, the ability of Curse of the Cabal doesn't trigger.
Re: Bug Reports (snapshot builds)
by stormcat » 05 Jan 2017, 05:39
:r32968
Mulligan's rule in multiplayer game has not applied to the commander game.(rule 103.4c)
Mulligan's rule in multiplayer game has not applied to the commander game.(rule 103.4c)
Re: Bug Reports (snapshot builds)
by pfps » 05 Jan 2017, 19:10
Ordering of Simultaneous Abilities
Revision: 32943
[I put an initial report on this problem in the beta list, but I've been
working on it from the current SVN so I guess reporting here is best.]
The ordering of simultaneous abilities isn't working correctly. The problem
is that these abilities are represented by their toString() values, which
are insufficient to distinguish between abilities whose odering matters.
For example, Evolve abilities all have the same toString() value, but it is
often best to evolve Renegade Krasis last, and all Amulet of Vigor untap
abilities have the same toString() value, but sometimes the untaps should be
done in a particular order. With the recent addition of automatic ordering
there is no way to reorder these abilities so this has changed from an
annoyance to a bug.
I have made some changes to fix the problem:
0/ Add the ability to see the card of the trigger of a wrapped ability in
a dual list box. This doesn't do anything to fix the problem, but is a nice
addition to the desktop gui, I think. It is a small self-contained change
to forge-gui-desktop/src/main/java/forge/gui/DualListBox.java
1/ Use the stack description as the toString() of a wrapped ability. This
adds in most of the relevant information. I have made this change in
forge-game/src/main/java/forge/game/trigger/WrappedAbility.java
without lifting the final status of toString() higher up. It might be
better to change the status of toString() to allow a nicer change.
2/ Augment the stack description with the toString() of the host card if the
stack description doesn't include it already and the stack description
includes 'this' as a word. This is to fix evolve, which has text
"Evolve (Whenever a creature enters the battlefield under your control, if
that creature has greater power or toughness than this creature, put a +1/+1
counter on this creature.)". Perhaps a better solution would be to modify
all these abilities to include CARDNAME, but that would require looking at
all the card descriptions.
3/ Use the toString() of a card as the replacement for CARDNAME and
EFFECTSOURCE instead of the name of the card, to distinguish between
different cards with the same name. I have made this change in
forge-game/src/main/java/forge/game/trigger/Trigger.java
These changes are overkill in that abilities that do the same thing can end
up looking different but a real solution would require a major amount
of work.
I can commit these changes if it is felt that they are reasonable.
Revision: 32943
[I put an initial report on this problem in the beta list, but I've been
working on it from the current SVN so I guess reporting here is best.]
The ordering of simultaneous abilities isn't working correctly. The problem
is that these abilities are represented by their toString() values, which
are insufficient to distinguish between abilities whose odering matters.
For example, Evolve abilities all have the same toString() value, but it is
often best to evolve Renegade Krasis last, and all Amulet of Vigor untap
abilities have the same toString() value, but sometimes the untaps should be
done in a particular order. With the recent addition of automatic ordering
there is no way to reorder these abilities so this has changed from an
annoyance to a bug.
I have made some changes to fix the problem:
0/ Add the ability to see the card of the trigger of a wrapped ability in
a dual list box. This doesn't do anything to fix the problem, but is a nice
addition to the desktop gui, I think. It is a small self-contained change
to forge-gui-desktop/src/main/java/forge/gui/DualListBox.java
1/ Use the stack description as the toString() of a wrapped ability. This
adds in most of the relevant information. I have made this change in
forge-game/src/main/java/forge/game/trigger/WrappedAbility.java
without lifting the final status of toString() higher up. It might be
better to change the status of toString() to allow a nicer change.
2/ Augment the stack description with the toString() of the host card if the
stack description doesn't include it already and the stack description
includes 'this' as a word. This is to fix evolve, which has text
"Evolve (Whenever a creature enters the battlefield under your control, if
that creature has greater power or toughness than this creature, put a +1/+1
counter on this creature.)". Perhaps a better solution would be to modify
all these abilities to include CARDNAME, but that would require looking at
all the card descriptions.
3/ Use the toString() of a card as the replacement for CARDNAME and
EFFECTSOURCE instead of the name of the card, to distinguish between
different cards with the same name. I have made this change in
forge-game/src/main/java/forge/game/trigger/Trigger.java
These changes are overkill in that abilities that do the same thing can end
up looking different but a real solution would require a major amount
of work.
I can commit these changes if it is felt that they are reasonable.
Who is online
Users browsing this forum: No registered users and 99 guests