Giter Club home page Giter Club logo

forge's People

Contributors

agetian avatar cctv-1 avatar churrufli avatar dracontes avatar fulgur14 avatar hanmac avatar hythonia avatar jamincollins avatar jjayers99 avatar johnwilliams77 avatar kevlahnota avatar klaxnek avatar leriomaggio avatar magpie514 avatar mikes-nz avatar misha-colbourne avatar mousep avatar northmoc avatar paulsnoops avatar pduran5 avatar pfirpfel avatar schnautzr avatar seravysensei avatar simisays avatar squee1968 avatar swordshinehjy avatar t-w-o-s-a-t avatar tehdiplomat avatar tool4ever avatar truefufleaderg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

forge's Issues

Henzie "Toolbox" Torre

Toolbox from Streets Commander Set grants Spells Blitz on the Stack, but only if their mana value is >= 4

Problems:

  • It is not a zone allow
  • it bypasses Jailer which would remove the ability in the graveyard
  • it is especially problematic for cards that has X in their ManaCost because it might stop you from casting when X is too low.

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

make LandAbility work for ValidSA

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

CLB: Venture into Undercity

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.

AI:RemoveDeck:Monocolored or DeckNeeds$Multicolor

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

AI + Ward or similar Spell Counter Trigger

Example:

  • AI uses Damage Spell against my Sedgemoor Witch with Ward—Pay 3 life.
  • Now the first Ward Trigger goes on the Stack.
  • AI thinks that this is threatening and cast second Damage Spell because AI can.
  • Now second Ward Trigger goes on the Stack.
  • AI doesn't has another damage Spell and pays for the second Ward Trigger.
  • My Creature dies.
  • Now on the stack are the first damage spell (which would fizzle) and the first Ward Trigger (which does nothing)
  • AI still does pay for the first Ward trigger even if it shouldn't.

Now AI need some extra Logic

  • Before casting the First Spell it needs to check if it can pay the Ward cost. i noticed that sometimes it tries to cast something while not be able to pay for Ward.
  • Then it needs to notice that the first Ward trigger isn't threatening, that it can still pay the cost. (or that the Spell can't be countered)
  • If the Spell somehow would fizzle, don't pay for the Ward trigger (as in my example above)

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

Column owned in spell shop

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)

owned_not_owned

Is it possible to

  • either add a setting in preferences if owned should check for card name or for card id (I assume its coded this way?)
  • or maybe there could be a new a column in the table (disabled by default) which shows the owned by name

I'd be happy if this could be implemented either way

Kind regards
Stefan

Refactor Aura Spells + Enchant Keyword

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)

Count$DifferentManaValue

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)

Shield Counter Replacement Effects

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

CLB: Taking the Initiative

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.)

Abilities with some unpayable costs must still be allowed to be put on the stack

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.:

grafik

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.

Card changes in Detail Panel Priority

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)

Additional context
Here i provide screenshots
example1

Even clear in this one
example2

CLB: Choose Background + Background Type

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

android build

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 needs to be Removed in the Future

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"

AI - Cards with BeforeCombat trigger often should be played in Main1

image

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

SNC: "When it connives this way" triggers

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.

Update cards checking for color words without oracle

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

Equip planeswalker Rules Update

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

Improve PumpAll : ValidCards$ This,That

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)

NSC: Lagrella, the Magpie

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.

  • I Don't know if that counts as ETB trigger for cards that shutdown ETB Triggers like Hushbringer.
  • Even if they are ETB Trigger, they shouldn't be affected by Panharmonicon effects, because these shouldn't apply to DelayedTrigger
  • Either way it should probably be done in untilHostLeavesPlayCommand, But can't use cause there.

Animate and Pump Effects should use StaticLayer

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

Draw X and Lose X life where X is set

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.