forked from External/mage
Implementing Daybound/Nightbound mechanic (#8200)
* adding initial day/night support in game state * remove card exclusion for testing * added functional implementation to abilities from main branch * functionally implemented NightCondition * updated DayNightHint * added support for nightbound entering transformed at night * [MID] Implemented Unnatural Moonrise * [MID] Implemented The Celestus * added some docs * changed access for state day/night methods * added transformation to day/night switch * re-added unfinished filter, removed day/night cards * fixed some errors with transforming * added hints to all day/night cards * added transformation prevention plus a test * added Immerwolf test * [MID] Implemented Tovolar, Dire Overlord / Tovolar, The Midnight Scourge * refactored some cards to not use isTransformable * removed transformable parameter * simplified some transform code * fixed null pointer exception * removed unnecessary canTransform method * fixed a small error * reworked implementation of rule 701.28f * small change in transform logic * fixed failiing test * fixed verify failure * small merge change * added support for day/night switching based on spells cast * [MID] Implemented Curse of Leeches / Leeching Lurkers * moved day/night handling to untap step * added tests for cards which set day and trigger from a change * [MID] Implemented Ludevic, Necrogenius / Olag, Ludevic's Hubris * added support for creatures transforming to match day/night when necessary * fixed verify failures * fixed another verify failure * remove temporary verify skip * added transform message * removed unnecessary transform message * [MID] Implemented Angelic Enforcer / Enduring Angel * updated DayNightHint with more information * fixed verify failure * merge fix * fixed Startled Awake / Persistent Nightmare / Moonmist interaction * added another test for Moonmist * merge fix * merge fix * [MID] Implemented Baneblade Scoundrel / Baneclaw Marauder * merge fix * [MID] various text fixes * [MID] a few more text fixes * Merge fix * Improved transform game logs (hints, source), fixed day/night logs, fixed miss game param (due code style); * fixed a test failure * Merge fix Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
This commit is contained in:
parent
6d4e5672c3
commit
30afb11cd2
305 changed files with 2174 additions and 1064 deletions
|
|
@ -80,6 +80,7 @@ public abstract class AbilityImpl implements Ability {
|
|||
protected Outcome customOutcome = null; // uses for AI decisions instead effects
|
||||
protected MageIdentifier identifier; // used to identify specific ability (e.g. to match with corresponding watcher)
|
||||
protected String appendToRule = null;
|
||||
protected int sourcePermanentTransformCount = 0;
|
||||
|
||||
public AbilityImpl(AbilityType abilityType, Zone zone) {
|
||||
this.id = UUID.randomUUID();
|
||||
|
|
@ -135,6 +136,7 @@ public abstract class AbilityImpl implements Ability {
|
|||
this.identifier = ability.identifier;
|
||||
this.activated = ability.activated;
|
||||
this.appendToRule = ability.appendToRule;
|
||||
this.sourcePermanentTransformCount = ability.sourcePermanentTransformCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -246,6 +248,7 @@ public abstract class AbilityImpl implements Ability {
|
|||
if (getSourceObjectZoneChangeCounter() == 0) {
|
||||
setSourceObjectZoneChangeCounter(game.getState().getZoneChangeCounter(getSourceId()));
|
||||
}
|
||||
setSourcePermanentTransformCount(game);
|
||||
|
||||
/* 20130201 - 601.2b
|
||||
* If the player wishes to splice any cards onto the spell (see rule 702.45), he
|
||||
|
|
@ -1292,6 +1295,24 @@ public abstract class AbilityImpl implements Ability {
|
|||
return sourceObjectZoneChangeCounter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSourcePermanentTransformCount(Game game) {
|
||||
Permanent permanent = getSourcePermanentOrLKI(game);
|
||||
if (permanent != null) {
|
||||
this.sourcePermanentTransformCount = permanent.getTransformCount();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTransformCount(Permanent permanent, Game game) {
|
||||
if (permanent == null
|
||||
|| !permanent.getId().equals(sourceId)
|
||||
|| permanent.getZoneChangeCounter(game) != sourceObjectZoneChangeCounter) {
|
||||
return true;
|
||||
}
|
||||
return permanent.getTransformCount() == sourcePermanentTransformCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canFizzle() {
|
||||
return canFizzle;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue