It is currently 23 Apr 2024, 07:35
   
Text Size

Forge Beta Release: 11-02-2016 ver 1.5.57

Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Marek14 » 17 Dec 2016, 10:01

Agetian wrote:I'm not sure (rule-wise) if "exile" cards should be rewritten this way or not: if you attempt to cast e.g. Exile on a creature and it is then bounced back to hand in response, should the second clause ("...you gain life equal to...") fire? I assume yes (since it's worded in a similar fashion), but I'd like to double-check. If you can take a look at the commit (r32720), it'd be nice.
Well, in this case, Exile would be countered because it's target is illegal.

Basically, for this to matter for exile cards, the exile effect itself would have to be replaced with something else, and I think the only thing that does this at the moment is when you replace exiling commander with move to command zone. If Exile works with that, no change is necessary.
Marek14
Tester
 
Posts: 2761
Joined: 07 Jun 2008, 07:54
Has thanked: 0 time
Been thanked: 297 times

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby GallantCrow » 19 Dec 2016, 14:33

-With Gisela, Blade of Goldnight in play, Baneslayer Angel's lifelink doesn't work (any lifelink I guess).
-Hive Mind will only create one copy of an instant or sorcery in a 4-player game.
-Casting Clone Legion in a 4-player game somehow gave me copies of all creatures on the battlefield.
-Twist Allegiance also gave me control of all creatures in a 4-player game.
-If you cast a spell without paying its mana cost, you should be able to pay the kicker cost.
-I'm not sure if they just got lucky, but 3 opponents didn't sacrifice a single permanent when I cast Whims of the Fates.
-When the AI cast Sylvan Primordial in a 4-player game, it selected two noncreature permaments controlled by the same player. I guess that's not right.
-Sometimes Wild Evocation does not work properly, for instance, the AI player revealed Chandra's Ignition and had legal targets for it, but for some reason didn't cast it.
-Spells with X in its cost where X is determined by its target (e.g. Detonate), when cast without paying its mana cost, should still have 0 for X and not be allowed to cast when there are no legal targets. Currently you can pick any target and X will be set accordingly.
-It seems that when a Commander would be auctioned off via Thieves' Auction, the game just hangs idenfinitely (it says 'Waiting for opponent...').
GallantCrow
 
Posts: 9
Joined: 26 Jul 2016, 15:35
Has thanked: 0 time
Been thanked: 0 time

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby GallantCrow » 19 Dec 2016, 15:07

Description: AI tried to Maze of Ith an attacking creature with Grip of Chaos on the battlefield.

NullPointerException | Open
Code: Select all
Forge Version:    1.5.56-r-1
Operating System: Windows 10 10.0 x86
Java Version:     1.8.0_73 Oracle Corporation

java.lang.NullPointerException
   at forge.game.ability.effects.ChangeTargetsEffect.resolve(ChangeTargetsEffect.java:96)
   at forge.game.ability.AbilityApiBased.resolve(AbilityApiBased.java:60)
   at forge.game.ability.AbilityUtils.resolveApiAbility(AbilityUtils.java:1296)
   at forge.game.ability.AbilityUtils.resolve(AbilityUtils.java:1277)
   at forge.ai.ComputerUtil.playNoStack(ComputerUtil.java:288)
   at forge.ai.PlayerControllerAi.playSpellAbilityNoStack(PlayerControllerAi.java:314)
   at forge.game.trigger.WrappedAbility.resolve(WrappedAbility.java:444)
   at forge.game.ability.AbilityUtils.resolveApiAbility(AbilityUtils.java:1296)
   at forge.game.ability.AbilityUtils.resolve(AbilityUtils.java:1277)
   at forge.game.zone.MagicStack.resolveStack(MagicStack.java:521)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:978)
   at forge.game.GameAction.startGame(GameAction.java:1463)
   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)
GallantCrow
 
Posts: 9
Joined: 26 Jul 2016, 15:35
Has thanked: 0 time
Been thanked: 0 time

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Agetian » 19 Dec 2016, 17:30

GallantCrow wrote:Description: AI tried to Maze of Ith an attacking creature with Grip of Chaos on the battlefield.

NullPointerException | Open
Code: Select all
Forge Version:    1.5.56-r-1
Operating System: Windows 10 10.0 x86
Java Version:     1.8.0_73 Oracle Corporation

java.lang.NullPointerException
   at forge.game.ability.effects.ChangeTargetsEffect.resolve(ChangeTargetsEffect.java:96)
   at forge.game.ability.AbilityApiBased.resolve(AbilityApiBased.java:60)
   at forge.game.ability.AbilityUtils.resolveApiAbility(AbilityUtils.java:1296)
   at forge.game.ability.AbilityUtils.resolve(AbilityUtils.java:1277)
   at forge.ai.ComputerUtil.playNoStack(ComputerUtil.java:288)
   at forge.ai.PlayerControllerAi.playSpellAbilityNoStack(PlayerControllerAi.java:314)
   at forge.game.trigger.WrappedAbility.resolve(WrappedAbility.java:444)
   at forge.game.ability.AbilityUtils.resolveApiAbility(AbilityUtils.java:1296)
   at forge.game.ability.AbilityUtils.resolve(AbilityUtils.java:1277)
   at forge.game.zone.MagicStack.resolveStack(MagicStack.java:521)
   at forge.game.phase.PhaseHandler.startFirstTurn(PhaseHandler.java:978)
   at forge.game.GameAction.startGame(GameAction.java:1463)
   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)
This is fixed (r32744).

- Agetian
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Hexmage » 29 Dec 2016, 14:31

The version says itself that it's ver.1.5.58 Snapshot when I go to Forge-> Help->About Forge, but I couldn't find the thread on that version. Anyways, I played Foul-Tongue and I didn't have any dragon in hand neither in play and I still got the 4 life extra for free
Thanks ;)
Hexmage
 
Posts: 15
Joined: 02 Jun 2015, 11:41
Has thanked: 5 times
Been thanked: 1 time

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Xitax » 30 Dec 2016, 22:24

Mastery of the Unseen is letting me turn manifested creatures face up for too cheap or free.
Xitax
 
Posts: 918
Joined: 16 May 2010, 17:19
Has thanked: 183 times
Been thanked: 133 times

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby pfps » 30 Dec 2016, 22:50

There have been a couple of posts on trigger ordering in the version of
Forge. Here is my experience that appears to show this bug.

With an Amulet of Vigor on battlefield I played Simic Growth Chamber,
expecting to be able to order the two effects (untap, bounce) this causes.
However, they were both put on the stack, with the untap under the bounce.
This makes it impossible to harvest mana from the land before bouncing it, a
common tactic.

I'm also seeing similar problems with Evolve triggers.

peter
pfps
 
Posts: 53
Joined: 09 Jan 2015, 14:34
Has thanked: 0 time
Been thanked: 7 times

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Xitax » 02 Jan 2017, 02:51

Master's Editions renders have recently been created, so I created booster images.

Can somebody help me (I don't use MTGO) what the booster content is so I can make edition files? I assume the cards are legal only in the formats where the paper cards are legal, i.e. Vintage.
Xitax
 
Posts: 918
Joined: 16 May 2010, 17:19
Has thanked: 183 times
Been thanked: 133 times

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Agetian » 02 Jan 2017, 05:00

Xitax wrote:Master's Editions renders have recently been created, so I created booster images.

Can somebody help me (I don't use MTGO) what the booster content is so I can make edition files? I assume the cards are legal only in the formats where the paper cards are legal, i.e. Vintage.
Here are the old Masters Editions edition files that somebody created a long time ago, they should contain definitions for boosters as well. Note that these files have not been updated for current Forge, it would be nice if you could look through them and update as/if necessary. :)

- Agetian
Attachments
masters_edition_defs.tar.gz
(13.17 KiB) Downloaded 181 times
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Xyx » 02 Jan 2017, 12:59

I surged Fall of the Titans and paid for it with (among other things) Pyromancer's Goggles. The copy resolved without doing anything.
User avatar
Xyx
Tester
 
Posts: 524
Joined: 23 Feb 2014, 23:01
Has thanked: 38 times
Been thanked: 32 times

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby pfps » 03 Jan 2017, 00:30

Fixing ordering of triggers

There are a couple of problems with triggers. Both of the problems are
related to insufficient information being presented or considered when
processing triggers.

The first problem, and one that has been around for a long time, is that
when triggers are displayed to the user for ordering they don't have all the
information about the trigger. For example, the trigger for Amulet of Vigor
doesn't display which permanent is going to be untapped. This doesn't
affect how the game is played but the player has to know how the list of
displayed triggers is determined to know which trigger is for which
permanent.

The second problem, which is newer, is that triggers are considered to be
equivalent for ordering if they display the same. This means that if there
are several Evolve triggers they will all be considered to be the same even
though they are from different creatures and thus may have different
follow-on effects. This affects how the game plays. It also affects the
default trigger order.

A temporary solution is to augment the trigger description with the host
permanent and also with the permanent that initiated the trigger, if any and
if different from the host permanent. It is not sufficient to just use
their names, as there can be multiple permanents with the same name, so
instead their name and id (toString) has to be used. This is, I think,
sufficient to distinguish triggers but is definitely more than necessary
because some triggers don't use this information and other triggers already
have some of this information in the description.


The real solution is to have a way of creating a data structure that has
just the information needed to distinguish different triggers (and maybe
other effects). The problem is that descriptions are currently not adequate
for this purpose. First, using card names is not adequate. Second, some
trigger descriptions don't even have replacements for host card name or the
triggering card name. For example, the description of the trigger
associated with Amulet of Vigour is "Whenever a permanent enters the
battlefield tapped and under your control, untap it." This description
doesn't record which permanent is being untapped. Similarly the reminder
text for 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.)" doesn't record the host card.


I have implemented the temporary solution by modifying Trigger.toString() as
follows:

public final String toString() {
if (this.mapParams.containsKey("TriggerDescription") && !this.isSuppressed()) {

StringBuilder sb = new StringBuilder();
String desc = this.mapParams.get("TriggerDescription");
sb.append(getHostCard().toString()); /*pfps*/
sb.append(": "); /*pfps*/
Card tCard = (Card) runParams.get("Card");/*pfps*/
if ( tCard != null && tCard != getHostCard() ) { /*pfps*/
sb.append(tCard.toString()); /*pfps*/
sb.append(": "); /*pfps*/
}/*pfps*/
/* desc = desc.replace("CARDNAME", getHostCard().getName()); pfps */
desc = desc.replace("CARDNAME", getHostCard().toString()); /*pfps*/
if (getHostCard().getEffectSource() != null) {
/* desc = desc.replace("EFFECTSOURCE", getHostCard().getEffectSource().getName()); pfps */
desc = desc.replace("EFFECTSOURCE", getHostCard().getEffectSource().toString()); /*pfps*/

}
sb.append(desc);
if (!this.triggerRemembered.isEmpty()) {
sb.append(" (").append(this.triggerRemembered).append(")");
}
return sb.toString();
} else {
return "";
}
}

I think that this fixes the problems and does not introduce any new ones,
although it does make some unnecessary distinctions and adds redundant
information in some places.
pfps
 
Posts: 53
Joined: 09 Jan 2015, 14:34
Has thanked: 0 time
Been thanked: 7 times

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Feruk » 04 Jan 2017, 02:00

Okay, so I've got a crash on both the latest snapshot, as well as 1.5.56, replicated on both. Whenever the card Burst Lightning from MM2 is selected (and presumably also when it's added to a draft deck by the AI - hence why the draft mode for MM2 crashes frequently, regardless of which card is being selected). I've tried deleting images, in case there's an issue with the images, but that's not fixing anything. It also looks like removing Burst Lightning from the MM2 card list, and indeed deleting the entire flipping card, don't fix the issue. Further testing shows that any card with kicker or multikicker is affected by the bug. Guess that's the bug; there's something wrong with kicker handling.

Cards known to be affected:
Burst Lightning;
Comet Storm;
Quag Vampires.

3 different cards across multiple sets, I'm gonna call this a bug with Kicker and multikicker. My bughunting ends here.

Description: Any time I try to view a card with kicker or multikicker in a deckbuilder, or an AI selects a card with one of those abilities in a draft.

ArrayIndexOutOfBoundsException | Open
Code: Select all
Forge Version:    1.5.58-SNAPSHOT-r-1
Operating System: Windows 8.1 6.3 x86
Java Version:     1.8.0_51 Oracle Corporation

java.lang.ArrayIndexOutOfBoundsException: 1
   at forge.game.card.Card.keywordsToText(Card.java:1416)
   at forge.game.card.Card.getAbilityText(Card.java:1664)
   at forge.game.card.CardView$CardStateView.updateAbilityText(CardView.java:1005)
   at forge.game.card.CardView$CardStateView.updateKeywords(CardView.java:1016)
   at forge.game.card.Card.addIntrinsicKeyword(Card.java:3291)
   at forge.game.card.CardFactory.readCardFace(CardFactory.java:443)
   at forge.game.card.CardFactory.readCard(CardFactory.java:406)
   at forge.game.card.CardFactory.getCard(CardFactory.java:254)
   at forge.game.card.CardFactory.getCard(CardFactory.java:249)
   at forge.game.card.Card.fromPaperCard(Card.java:6887)
   at forge.game.card.Card.getCardForUi(Card.java:6895)
   at forge.game.card.CardView.getCardForUi(CardView.java:40)
   at forge.screens.match.controllers.CDetailPicture.showItem(CDetailPicture.java:58)
   at forge.screens.deckeditor.CDeckEditorUI.setCard(CDeckEditorUI.java:83)
   at forge.screens.deckeditor.CDeckEditorUI$7.valueChanged(CDeckEditorUI.java:253)
   at forge.itemmanager.views.ItemView.onSelectionChange(ItemView.java:278)
   at forge.itemmanager.views.ItemListView$ItemTableModel$1.valueChanged(ItemListView.java:620)
   at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
   at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
   at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
   at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
   at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)
   at javax.swing.DefaultListSelectionModel.setSelectionInterval(Unknown Source)
   at javax.swing.JTable.setRowSelectionInterval(Unknown Source)
   at forge.itemmanager.views.ItemListView.onSetSelectedIndex(ItemListView.java:299)
   at forge.itemmanager.views.ItemView.setSelectedIndex(ItemView.java:239)
   at forge.itemmanager.views.ItemView.setSelectedIndex(ItemView.java:226)
   at forge.itemmanager.views.ItemView$IncrementalSearch.findNextMatch(ItemView.java:363)
   at forge.itemmanager.views.ItemView$IncrementalSearch.keyTyped(ItemView.java:491)
   at java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
   at java.awt.Component.processKeyEvent(Unknown Source)
   at javax.swing.JComponent.processKeyEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
   at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
   at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
   at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
   at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Window.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.awt.EventQueue.access$500(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)
Feruk
 
Posts: 6
Joined: 26 Jun 2013, 08:40
Has thanked: 0 time
Been thanked: 0 time

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Agetian » 04 Jan 2017, 04:51

@ Feruk: By the latest snapshot, do you mean the beta snapshot downloaded from this thread or a "nightly" build? 1.5.56 is a rather old release, this thread is for 1.5.57 Beta and reports associated with that release, while if you're on the latest "nightly" build snapshot, then bug reports for builds like that should be published in a different thread (there's a separate thread in Developer's Corner).

That being said, I can't reproduce this in the current dev build anymore, so it must be fixed upstream already. Tried with all the cards you named.

- Agetian
Agetian
Programmer
 
Posts: 3472
Joined: 14 Mar 2011, 05:58
Has thanked: 677 times
Been thanked: 561 times

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby Feruk » 04 Jan 2017, 15:44

Agetian wrote:@ Feruk: By the latest snapshot, do you mean the beta snapshot downloaded from this thread or a "nightly" build? 1.5.56 is a rather old release, this thread is for 1.5.57 Beta and reports associated with that release, while if you're on the latest "nightly" build snapshot, then bug reports for builds like that should be published in a different thread (there's a separate thread in Developer's Corner).

That being said, I can't reproduce this in the current dev build anymore, so it must be fixed upstream already. Tried with all the cards you named.

- Agetian
Hmm, since the build linked to in the OP of this thread is 1.5.58 snapshot, where would I go about getting the build for 1.5.57? I presumed that the bug reports would go in the thread I downloaded the build from. Sorry for that.

Looking like it's something screwed up on that laptop, actually (now I've DLed forge on a different machine to check it is 5.58 linked to on here) - I can't seem to replicate this on other machines. Stupid old dodgy laptop - guess I'll clear out forge and try a fresh start on it. Sorry for wasting your time with this!
Feruk
 
Posts: 6
Joined: 26 Jun 2013, 08:40
Has thanked: 0 time
Been thanked: 0 time

Re: Forge Beta Release: 11-02-2016 ver 1.5.57

Postby friarsol » 04 Jan 2017, 16:08

Feruk wrote:Hmm, since the build linked to in the OP of this thread is 1.5.58 snapshot, where would I go about getting the build for 1.5.57? I presumed that the bug reports would go in the thread I downloaded the build from. Sorry for that.
This version (1.5.57) thinks it's a 1.5.58 snapshot because we had a hotfix after the initial release came out to fix a crippling bug. Hopefully we'll have the new 1.5.58 release out soon.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

PreviousNext

Return to Forge

Who is online

Users browsing this forum: No registered users and 57 guests


Who is online

In total there are 57 users online :: 0 registered, 0 hidden and 57 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 57 guests

Login Form