mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
Merge pull request #2467 from Northmoc/stackDesc
More (hopefully better) StackDesc tweaks
This commit is contained in:
@@ -1251,6 +1251,13 @@ public class AbilityUtils {
|
||||
else if (defined.startsWith("NextPlayerToYour")) {
|
||||
Direction dir = defined.substring(16).equals("Left") ? Direction.Left : Direction.Right;
|
||||
players.add(game.getNextPlayerAfter(player, dir));
|
||||
} else if (defined.startsWith("NextOpponentToYour")) {
|
||||
Direction dir = defined.substring(18).equals("Left") ? Direction.Left : Direction.Right;
|
||||
Player next = game.getNextPlayerAfter(player, dir);
|
||||
while (!next.isOpponentOf(player)) {
|
||||
next = game.getNextPlayerAfter(next, dir);
|
||||
}
|
||||
players.add(next);
|
||||
}
|
||||
else {
|
||||
// will be filtered below
|
||||
|
||||
@@ -6,7 +6,6 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import forge.util.lang.LangEnglish;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
@@ -82,7 +81,7 @@ public abstract class SpellAbilityEffect {
|
||||
String stackDesc = params.get("StackDescription");
|
||||
if (stackDesc != null) {
|
||||
String[] reps = null;
|
||||
if (stackDesc.startsWith("REP") && Lang.getInstance() instanceof LangEnglish) {
|
||||
if (stackDesc.startsWith("REP")) {
|
||||
reps = stackDesc.substring(4).split(" & ");
|
||||
stackDesc = "SpellDescription";
|
||||
}
|
||||
@@ -97,7 +96,9 @@ public abstract class SpellAbilityEffect {
|
||||
if (reps != null) {
|
||||
for (String s : reps) {
|
||||
String[] rep = s.split("_",2);
|
||||
spellDesc = spellDesc.replaceFirst(rep[0], rep[1]);
|
||||
if (spellDesc.contains(rep[0])) {
|
||||
spellDesc = spellDesc.replaceFirst(rep[0], rep[1]);
|
||||
}
|
||||
}
|
||||
tokenizeString(sa, sb, spellDesc);
|
||||
} else {
|
||||
|
||||
@@ -10,12 +10,14 @@ import forge.game.GameEntityCounterTable;
|
||||
import forge.game.ability.AbilityKey;
|
||||
import forge.game.ability.AbilityUtils;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardCollection;
|
||||
import forge.game.card.CardDamageMap;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.replacement.ReplacementType;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.trigger.TriggerType;
|
||||
import forge.util.CardTranslation;
|
||||
import forge.util.Lang;
|
||||
import forge.util.Localizer;
|
||||
|
||||
public class FightEffect extends DamageBaseEffect {
|
||||
@@ -30,10 +32,17 @@ public class FightEffect extends DamageBaseEffect {
|
||||
List<Card> fighters = getFighters(sa);
|
||||
|
||||
if (fighters.size() > 1) {
|
||||
sb.append(fighters.get(0)).append(" fights ").append(fighters.get(1));
|
||||
sb.append(fighters.get(0)).append(" fights ").append(fighters.get(1)).append(".");
|
||||
}
|
||||
else if (fighters.size() == 1) {
|
||||
sb.append(fighters.get(0)).append(" fights unknown");
|
||||
sb.append(fighters.get(0)).append(" fights.");
|
||||
}
|
||||
if (sa.hasParam("ReplaceDyingDefined")) {
|
||||
CardCollection cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("ReplaceDyingDefined"), sa);
|
||||
if (!cards.isEmpty()) {
|
||||
sb.append(" If ").append(Lang.joinHomogenous(cards, null, "or"));
|
||||
sb.append(" would die this turn, exile it instead.");
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
@@ -117,8 +126,9 @@ public class FightEffect extends DamageBaseEffect {
|
||||
if (defined.size() > 1 && fighter1 == null) {
|
||||
fighter1 = defined.get(0);
|
||||
fighter2 = defined.get(1);
|
||||
} else {
|
||||
fighter2 = defined.get(0);
|
||||
} else { // template often Defined$ ParentTarget vs. Targeted - this yields good StackDesc order
|
||||
fighter2 = fighter1;
|
||||
fighter1 = defined.get(0);
|
||||
}
|
||||
}
|
||||
} else if (tgts.size() > 1) {
|
||||
|
||||
Reference in New Issue
Block a user