Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ICE] Implement Kjeldoran Guard #11184

Merged
merged 5 commits into from
Sep 24, 2023
Merged

Conversation

Susucre
Copy link
Contributor

@Susucre Susucre commented Sep 19, 2023

Modified slightly the existing PR from #8593

@github-actions
Copy link

Kjeldoran Guard - (Gatherer) (Scryfall) (EDHREC)

{1}{W}
Creature — Human Soldier
1/1
{T}: Target creature gets +1/+1 until end of turn. When that creature leaves the battlefield this turn, sacrifice Kjeldoran Guard. Activate only during combat and only if defending player controls no snow lands.

Copy link
Contributor

@xenohedron xenohedron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please clean up copy constructors, access modifiers, etc.

for consistent style, use separate lines for statements between braces, rather than all on one line

Mage.Sets/src/mage/cards/k/KjeldoranGuard.java Outdated Show resolved Hide resolved
game.addEffect(buffEffect, source);

// When that creature leaves the battlefield this turn, sacrifice Kjeldoran Guard.
game.addDelayedTriggeredAbility(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please test- if you flicker Kjeldoran Guard, shouldn't have to sacrifice it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh right that should be using MOR

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually that was already correct. SacrificeSourceEffect does sacrifice source.getSourceObjectIfItStillExists(game), so the Kjeldoran Guard with a different zcc will not get sacrificed (there still will be a trigger, although it does nothing).

I did replace the UUID of the target to a MOR, but that should not really matter with

  • target being still valid means that it has not leave on resolve
  • the DelayedTrigger being set with triggerOnce=true.

Copy link
Contributor Author

@Susucre Susucre Sep 19, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh nevermind, there is indeed an issue if you blink the Guard in response to tapping it.
Will rework with a MOR based SacrificeTargetEffect

@Susucre
Copy link
Contributor Author

Susucre commented Sep 19, 2023

please clean up copy constructors, access modifiers, etc.

for consistent style, use separate lines for statements between braces, rather than all on one line

Sure I'll do a cleaning pass. Not used to taking over someone else WIP.

@Susucre
Copy link
Contributor Author

Susucre commented Sep 19, 2023

Uhm and on re reading it, the condition is not right, the ability should only be usable if the defending player controls no snow land, currently it is only usable if the defending player controls a snow land.

private KjeldoranGuard(final KjeldoranGuard card) { super(card); }

@Override
public Card copy() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Covariant return

this.addAbility(ability);
}

private KjeldoranGuard(final KjeldoranGuard card) { super(card); }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Style

super(Outcome.BoostCreature);
staticText = "Target creature gets +1/+1 until end of turn."
+ "When that creature leaves the battlefield this turn, sacrifice {this}."
+ "Activate only during combat and only if defending player controls no snow lands.";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the activation restriction should be part of the effect text

KjeldoranGuardEffect() {
super(Outcome.BoostCreature);
staticText = "Target creature gets +1/+1 until end of turn."
+ "When that creature leaves the battlefield this turn, sacrifice {this}."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Miss space

Mage.Sets/src/mage/cards/k/KjeldoranGuard.java Outdated Show resolved Hide resolved
}

@Override
public String getRule() { return "sacrifice {this}"; }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, this doesn't feel quite right but not sure why, can you check the delayed trigger displays with correct text on the stack?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure we are displaying the trigger when those delayed trigger happens, is that was you feel is not right?

image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will capitalize

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah ideally the trigger phrase should be part of it (but for sure lots of these have wrong text all over the codebase). So not required to fix, just a nice to have.

Also it doesn't get automatically capitalized which is a separate bug.

Copy link
Contributor Author

@Susucre Susucre Sep 19, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can replace it with "When that creature leaves the battlefield, sacrifice Kjeldoran Guard"?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be "When that creature leaves the battlefield this turn, sacrifice {this}."

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just for a discussion point, got a comment from theelk801 last month that reflexive triggers can have their trigger left out. #10866 (comment)
So is that the line? Delayed should have trigger text but not reflexive ones? Or should that be a standalone dev discussion outside of that poor Ice Age common implementation.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good question - my initial reaction is I disagree but I should double check how it works.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's more important to have clarity on delayed, the reflexive at least occur in close proximity to their source

@xenohedron xenohedron merged commit b624da7 into magefree:master Sep 24, 2023
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants