-
Notifications
You must be signed in to change notification settings - Fork 806
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
[MKC] Implement Redemption Arc #11842
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
package mage.cards.r; | ||
|
||
import java.util.UUID; | ||
|
||
import mage.abilities.Ability; | ||
import mage.abilities.common.SimpleActivatedAbility; | ||
import mage.abilities.common.SimpleStaticAbility; | ||
import mage.abilities.costs.mana.ManaCostsImpl; | ||
import mage.abilities.effects.Effect; | ||
import mage.abilities.effects.common.ExileAttachedEffect; | ||
import mage.abilities.effects.common.combat.GoadAttachedEffect; | ||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; | ||
import mage.abilities.keyword.IndestructibleAbility; | ||
import mage.constants.*; | ||
import mage.target.common.TargetCreaturePermanent; | ||
import mage.abilities.effects.common.AttachEffect; | ||
import mage.target.TargetPermanent; | ||
import mage.abilities.keyword.EnchantAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
|
||
/** | ||
* | ||
* @author jimga150 | ||
*/ | ||
public final class RedemptionArc extends CardImpl { | ||
|
||
public RedemptionArc(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}"); | ||
|
||
this.subtype.add(SubType.AURA); | ||
|
||
// Enchant creature | ||
TargetPermanent auraTarget = new TargetCreaturePermanent(); | ||
this.getSpellAbility().addTarget(auraTarget); | ||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); | ||
this.addAbility(new EnchantAbility(auraTarget)); | ||
|
||
// Enchanted creature has indestructible and is goaded. | ||
Effect effect = new GainAbilityAttachedEffect(IndestructibleAbility.getInstance(), | ||
AttachmentType.AURA, Duration.WhileOnBattlefield); | ||
effect.setText("Enchanted creature has indestructible"); | ||
effect.setOutcome(Outcome.Benefit); | ||
|
||
Effect effect2 = new GoadAttachedEffect(); | ||
effect2.setOutcome(Outcome.Benefit); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not sure about setting outcomes but only affects AI There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To be honest, i dont fully understand how the value proposition of a play is made in terms of the AI. i should have set the goaded thing to detriment by my judgement (in a general case), but setting one effect to benefit and the other to detriment on the same card seems like a strange thing to hand the computer. Is there a place this is documented? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If ability has multiple effects or different outcomes then you can use AI uses outcomes in few places like battle score calculation, targets selections, yes/no choices, etc. Basic logic:
Also it used in some AI optimizations like activation of "put to battlefield" abilities before combat: |
||
|
||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect); | ||
ability.addEffect(effect2); | ||
this.addAbility(ability); | ||
|
||
// {1}{W}: Exile enchanted creature. | ||
this.addAbility(new SimpleActivatedAbility(new ExileAttachedEffect(), new ManaCostsImpl<>("{1}{W}"))); | ||
} | ||
|
||
private RedemptionArc(final RedemptionArc card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public RedemptionArc copy() { | ||
return new RedemptionArc(this); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hm, is this not the generated text?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah, i did not catch that.