mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 03:22:00 -08:00
[AFR] Implemented Guild Thief
This commit is contained in:
parent
01a30ca8b5
commit
48c2633eda
4 changed files with 77 additions and 8 deletions
|
|
@ -1,9 +1,11 @@
|
|||
package mage.abilities;
|
||||
|
||||
import mage.MageIdentifier;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.costs.Cost;
|
||||
import mage.abilities.costs.CostAdjuster;
|
||||
import mage.abilities.costs.Costs;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCost;
|
||||
import mage.abilities.costs.mana.ManaCosts;
|
||||
import mage.abilities.effects.Effect;
|
||||
|
|
@ -25,8 +27,6 @@ import java.io.Serializable;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import mage.MageIdentifier;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
|
||||
/**
|
||||
* Practically everything in the game is started from an Ability. This interface
|
||||
|
|
@ -87,7 +87,7 @@ public interface Ability extends Controllable, Serializable {
|
|||
|
||||
/**
|
||||
* Gets the id of the object which put this ability in motion.
|
||||
*
|
||||
* <p>
|
||||
* WARNING, MageSingleton abilities contains dirty data here, so you can't use sourceId with it
|
||||
*
|
||||
* @return The {@link java.util.UUID} of the object this ability is
|
||||
|
|
@ -363,10 +363,11 @@ public interface Ability extends Controllable, Serializable {
|
|||
* @return
|
||||
*/
|
||||
boolean hasSourceObjectAbility(Game game, MageObject source, GameEvent event);
|
||||
|
||||
|
||||
/**
|
||||
* Returns true if the ability has a tap itself in their costs
|
||||
* @return
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
default boolean hasTapCost() {
|
||||
for (Cost cost : this.getCosts()) {
|
||||
|
|
@ -465,6 +466,8 @@ public interface Ability extends Controllable, Serializable {
|
|||
*/
|
||||
Ability setAbilityWord(AbilityWord abilityWord);
|
||||
|
||||
Ability setFlavorWord(String flavorWord);
|
||||
|
||||
/**
|
||||
* Creates the message about the ability casting/triggering/activating to
|
||||
* post in the game log before the ability resolves.
|
||||
|
|
@ -550,8 +553,8 @@ public interface Ability extends Controllable, Serializable {
|
|||
* @return
|
||||
*/
|
||||
boolean isSameInstance(Ability ability);
|
||||
|
||||
MageIdentifier getIdentifier();
|
||||
|
||||
MageIdentifier getIdentifier();
|
||||
|
||||
AbilityImpl setIdentifier(MageIdentifier mageIdentifier);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ public abstract class AbilityImpl implements Ability {
|
|||
protected Zone zone;
|
||||
protected String name;
|
||||
protected AbilityWord abilityWord;
|
||||
protected String flavorWord;
|
||||
protected boolean usesStack = true;
|
||||
protected boolean ruleAtTheTop = false;
|
||||
protected boolean ruleVisible = true;
|
||||
|
|
@ -117,6 +118,7 @@ public abstract class AbilityImpl implements Ability {
|
|||
this.ruleAdditionalCostsVisible = ability.ruleAdditionalCostsVisible;
|
||||
this.worksFaceDown = ability.worksFaceDown;
|
||||
this.abilityWord = ability.abilityWord;
|
||||
this.flavorWord = ability.flavorWord;
|
||||
this.sourceObjectZoneChangeCounter = ability.sourceObjectZoneChangeCounter;
|
||||
this.canFizzle = ability.canFizzle;
|
||||
this.targetAdjuster = ability.targetAdjuster;
|
||||
|
|
@ -800,8 +802,16 @@ public abstract class AbilityImpl implements Ability {
|
|||
} else {
|
||||
rule = ruleStart;
|
||||
}
|
||||
String prefix;
|
||||
if (abilityWord != null) {
|
||||
rule = "<i>" + abilityWord + "</i> — " + Character.toUpperCase(rule.charAt(0)) + rule.substring(1);
|
||||
prefix = abilityWord.formatWord();
|
||||
} else if (flavorWord != null) {
|
||||
prefix = "<i>" + flavorWord + "</i> — ";
|
||||
} else {
|
||||
prefix = null;
|
||||
}
|
||||
if (prefix != null) {
|
||||
rule = prefix + CardUtil.getTextWithFirstCharUpperCase(rule);
|
||||
}
|
||||
if (appendToRule != null) {
|
||||
rule = rule.concat(appendToRule);
|
||||
|
|
@ -1062,6 +1072,11 @@ public abstract class AbilityImpl implements Ability {
|
|||
return this;
|
||||
}
|
||||
|
||||
public Ability setFlavorWord(String flavorWord) {
|
||||
this.flavorWord = flavorWord;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGameLogMessage(Game game) {
|
||||
if (game.isSimulation()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue