card-forge / forge Goto Github PK
View Code? Open in Web Editor NEWAn unofficial rules engine for the world's greatest card game.
License: GNU General Public License v3.0
An unofficial rules engine for the world's greatest card game.
License: GNU General Public License v3.0
Toolbox from Streets Commander Set grants Spells Blitz on the Stack, but only if their mana value is >= 4
Problems:
So again we need to check what the object would be on the stack, adding a check with that the ManaValue needs to be 4+ and then stop and revert the cast if X < 4
other alternative costs also may function while on the stack like Dash? but they shouldn't be affected by this
i really need to make LandAbility work for ValidSA
Originally posted by @Hanmac in #162 (comment)
This would be great for streamlining Ziatora's Envoy
==
LandAbility should probably be created by CardFactory when reading the CardFace in a similar way how Spell Permanent is created.
this might cleanup other mayPlay stuff
If Enchant Keyword is updated, Spell Permanent would needs to be updated for Auras too
Venture Effect needs to be extended to set a Specific Dungeon (Undercity). Going into that Dungeon is part of #252
And this Dungeon can't be get into unless specific defined.
SetState needs to have FaceDownSetType
like ChangeZoneEffect
has, with that Horror Type can be set
Is your feature request related to a problem? Please describe.
All cards that benefit from multicolored spells currently use AI:RemoveDeck:All
or :Random
Describe the solution you'd like
AI:RemoveDeck:Monocolored
Describe alternatives you've considered
Leave everything as is
Additional context
n/a
Example:
Ward—Pay 3 life.
Now AI need some extra Logic
For Would Fizzle, Magic Stack or similar should have a check method that checks if one of the targets would be invalid without altering the Targets. This is important for Checking when the target gains hexproof but loses it again before the spell resolves
When I am in the spell shop I can see on the left side in the column "owned", if I already have the card. BUT this only checks, if I got the card form the same expansion, it does not check by name (which would be helpful for me)
Is it possible to
I'd be happy if this could be implemented either way
Kind regards
Stefan
Rules wise Aura Spells should just check for their Enchant Keywords and these should handle the "can be attached" part.
The Corner cases: having an Aura become the copy of Old-Growth Troll
, when it dies it returns as real Aura and it is gaining enchant Forest
. now with two Enchant keywords, both needs to be respected.
if that's cleaned up, the Aura Spell can be created by CardFactory like other Spell Permanent are.
The AI Logic can't be part of the Aura Spell anymore and should probably be either part of the keyword, or be part of an extra SVar.
cleanup other uses for FirstAttachSpell
The cleaned up enchant keyword needs to respect Tallowisp
that explicit looks for enchant creature
, not enchant creature you control
Rules:
15.1b Aura spells are always targeted. An Aura’s target is specified by its enchant keyword ability (see rule 702.5, “Enchant”)
702.5c If an Aura has multiple instances of enchant, all of them apply. The Aura’s target must follow the restrictions from all the instances of enchant. The Aura can enchant only objects or players that match all of its enchant abilities.
An Aura without enchant keyword would be unattached too. (and sent to the graveyard)
Ruling for Immovable Rod
If you target an Aura with Immovable Rod's last ability, it will lose its enchant ability and be put into its owner's graveyard because it can't legally enchant anything. An Equipment that loses its abilities loses its equip ability, so you won't be able to move it that way, but it will stay attached to the creature it's equipping, if any. (2021-07-23)
I think it might be worth it to wire this up with handlePaid
instead if there's another $ so you can just use
Count$ValidGraveyard Card.YouOwn+nonLand$DifferentCMC
That could provide some nice cleanup potential in other places too :)
Originally posted by @tool4ever in #24 (comment)
122.1c A shield counter on a permanent creates one replacement effect and one prevention effect that protect the permanent. These effects are “If this permanent would be destroyed as the result of an effect, instead remove a shield counter from it” and “If damage would be dealt to this permanent, prevent that damage and remove a shield counter from it.” See rule 614, “Replacement Effects,” and rule 615, “Prevention Effects.”
But Jess said: https://twitter.com/Hanmac10/status/1518659638312554502
No, they are not abilities of the permanent, and those effects will still apply if the permanent loses its abilities.
meaning i need to find a way to add them as Effect that is somehow connected to the card.
That is especially important if the player somehow left the game, and they wasn't the owner of the card.
and if possible i don't want to pollute the CommandZone with Effect objects
The ReplaceDestroy needs to check if it was by an Effect. This excludes Destroy by State Based Action.
Example:
So if Unpreventable damage is dealt to a creature with 2 or more shield counters,
then the Damage ReplacementEffect would kick in and still remove the Counter. (see Polukranos, Unchained or Phantom Cards)
Then if the creature has lethal damage, the State Based Action would kill the creature while it still has shield counter on them.
(need to ask Judges)
EDIT:
One idea is to hijack the getReplacements method and add them after the Ability Layer removed the other abilities
The initiative is similar to the Monarch as a Marker to be passed around.
Whenever one or more creatures a player controls deals combat damage to you, that player takes the initiative.
Trigger similar to Monarch
Whenever you take initiative and at the beginning of your upkeep, "venture into Undercity" #254
(If you’re in a dungeon, advance to the next room. If you’re not, enter Undercity. You can take the initaitve even if you already have it.)
Activating mana abilities is done before paying costs when activating an ability. This means that if you control a creature which can be tapped for mana, such as Avacyn's Pilgrim, you may both tap it for mana and untap it to pay costs for Halo Fountain's activated abilities.
Currently Forge will not let you activate the ability without a tapped creature though, so you're forced to tap for mana first.
This matters because there might be triggers related to it that will then be on the stack before your ability, e.g.:
But you should be able to reach the opposite order as well if you so desire.
Another related example is Bond of Agony:
if you're at 1 life Forge will not let you choose X > 1. But maybe you want to cast it for X=2 because you can pay that part with The Great Henge.
Is your feature request related to a problem? Please describe.
When a card is changed with a new temporal ability or a perpetual effect this change should appear on the very top of card detail panel, not in the middle or on the bottom. Most people already know what cards do but to keep trap of the ``new effects´´ on a specific card will make it much easier if it was on top. Also for most cards the card detail panel is redundant in providing the same info the card picture already does.
Describe the solution you'd like
The new effects should go to the top of the card detail panel, before keywords like flying, vigilance (its clear in the picture i upload)
Describe alternatives you've considered
Again the newest effect should go on top, so it can be read fast and easy, without the need to scroll down and ofc remember the effect you have. (Specially almost impossible if there 2 or + new effects on a card)
From what is leaked, Background works as similar to Partner in a way like Oath Breaker.
You can have a Legendary with "Choose a Background" as Commander
and a Legendary Enchantment - Background as second Commander
from what it looks like, the choice isn't flexible, but done like Partner Commander while Deck Building
GUI wise the CanBeCommander checks needs to be extended to allow for secondary choices.
Meaning you need to first choose a Commander with "Choose a Background", then you need to choose the Background card
After tags 1.6.49
,I can‘t build forge-gui-android
. error message:
[INFO] --- android-maven-plugin:4.6.0:d8 (default-d8) @ forge-gui-android ---
[INFO] Convert classes to Dex : /home/CCTV-1/forge/forge-gui-android/target
[INFO] Error: Unable to access jarfile /home/CCTV-1/Android/Sdk/build-tools/26.0.1/lib/d8.jar
have undocumented changes for android build requirement?
etbCounter currently makes problems with CardTextChanges because the value for X is not affected by it but it should.
Example: Ulasht, the Hate Seed
In the work of changing ETB Keywords into a Form that used "ReplacementResult.Updated" instead of using ETBInternal,
it will be much cleaner to use normal replacement Effects instead of using a Keyword
This is part of the Cleanup of CardFactoryUtil to remove everything what isn't a "real Keyword"
For Ascendant Acolyte, can you check what happens if multiple creatures enter the battlefield with it?
because its a RE, it should not count the creatures that enter the battlefield with it.
in theory, Valid might already check if it was called from a RE
Originally posted by @Hanmac in #203 (comment)
100+ cards seem to have phase triggers for BeforeCombat
A quick peek through the ones starting with "A" shows probably less than half have the PlayMain1 tag including many that would almost certainly want it. On the other hand, certain cards like Battering Ram wouldn't benefit from that tag... unless something else gave it haste, which starts getting pretty fussy.
Might be an issue of just a good once over of all cards with that trigger, or it might be better to add more AI code?
@Agetian thought you might find this interesting
Rules manager confirmed that even if the trigger source dies, these triggers resolve.
So the question is - is there some way they can fail to trigger? Or should we just use ImmediateTrigger as scripted below.
Waiting for rules to polish these off.
cards like Opal Titan
needs to be rewritten so they don't use Color Words in their effect because their oracle doesn't use them.
that causes them to be affected by Card Text Changes when they should not
maybe some investigation if there are more cards like this
702.6e “Equip planeswalker” is a variant of the equip ability. “Equip planeswalker [cost]” means “[Cost]: Attach this permanent to target planeswalker you control as though that planeswalker were a creature. Activate only as a sorcery.”
That means attaching to Planeswalker by any other means like any other Equip Ability shouldn't work.
That means that the whole attachToEntity
+ canEquip
checks should check for the SpellAbility
, and support null in case of StateBasedAction
Specifically looking for ValidCards$ Self,Targeted or similar on Ballroom Brawlers
Can you try
ValidCards$ Card.Self,Targeted.Self
?
:kekw: the NPE was because of a typo in the "SVar"
However, I fixed it and while it doesn't crash the game - it still doesn't work, it only adds the keyword to itself. I also tried different variations, with and without Self, even with remember pump.
Originally posted by @dennisvlahos in #28 (comment)
Multiple AI classes use PhaseHandler.getNextTurn()
to determine which player comes after to use an ability safely at EOT.
However this does not take replacements into account so misplays could happen.
Cast Blessed Wine and control Sphinx of the Second Sun.
You get the additional draw on the same turn.
When Lagrella, the Magpie enters the battlefield, exile any number of other target creatures controlled by different players until Lagrella leaves the battlefield. When an exiled card enters the battlefield under your control this way, put two +1/+1 counters on it.
"This way" refers to cards entering the battlefield as a result of Lagrella leaving the battlefield.
The last part of Lagrella's ability is a delayed triggered ability that is set up as its enters-the-battlefield ability resolves. It will trigger when Lagrella leaves the battlefield even if it's somehow lost its abilities or become a copy of something else.
AI:RemoveDeck:Opponents_LT2
??
looking at Kros, Defense Contractor
@Agetian @tool4ever thought you might have thoughts here
for Continuous Effects happening in the right order or maybe be affected by dependency, Animate and Pump might need to use Static Abilities
this might also be needed when talking about linked abilities
If possible, it would be ugly if they would appear as Effects in the Command Zone
Cards like Corpse Augur with:
When Corpse Augur dies, you draw X cards and you lose X life, where X is the number of creature cards in target player’s graveyard.
or cards like Champion of Dusk:
When Champion of Dusk enters the battlefield, you draw X cards and you lose X life, where X is the number of Vampires you control.
are a bit problematic because the X should only be calculated once when the Trigger/Ability starts resolving.
meaning Draw Replacement Effects shouldn't affect the value X later on.
maybe we could use LastState might not work for the Die Trigger? @Northmoc @tool4ever can you test that?
a change might be problematic for AI to understand that.
I'm still waiting for the confirmation from Jess. https://twitter.com/Hanmac10/status/1522124991277551618
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.