forked from External/mage
Implement Prototype ability (#11249)
Prototype is a SpellAbilityType, for which alternate costs are permitted. It has a continuous effect that applies on the battlefield as well as a method to modify the spell on the stack. Permanents have an isPrototyped flag that copy effects can check explicitly (same brittle method as transformed permanents use; reworking copy effects to streamline them is a separate scope). Many test cases have been added to confirm functionality (thanks to Zerris for additional test suggestions). --------- Co-authored-by: Susucre <34709007+Susucre@users.noreply.github.com> Co-authored-by: Evan Kranzler <theelk801@gmail.com> Co-authored-by: xenohedron <xenohedron@users.noreply.github.com>
This commit is contained in:
parent
ac20483b73
commit
5e095afdb0
23 changed files with 946 additions and 17 deletions
|
|
@ -1978,6 +1978,14 @@ public abstract class GameImpl implements Game {
|
|||
if (copyFromPermanent.isTransformed()) {
|
||||
TransformAbility.transformPermanent(newBluePrint, newBluePrint.getSecondCardFace(), this, source);
|
||||
}
|
||||
if (copyFromPermanent.isPrototyped()) {
|
||||
Abilities<Ability> abilities = copyFromPermanent.getAbilities();
|
||||
for (Ability ability : abilities){
|
||||
if (ability instanceof PrototypeAbility) {
|
||||
((PrototypeAbility) ability).prototypePermanent(newBluePrint, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (applier != null) {
|
||||
applier.apply(this, newBluePrint, source, copyToPermanentId);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue