Merge remote-tracking branch 'upstream/master' into XIRAA

This commit is contained in:
Simisays
2023-03-10 13:19:15 +01:00
68 changed files with 1225 additions and 175 deletions

View File

@@ -1090,7 +1090,6 @@ public class ChangeZoneAi extends SpellAbilityAi {
// Exile and bounce opponents stuff // Exile and bounce opponents stuff
if (destination.equals(ZoneType.Exile) || origin.contains(ZoneType.Battlefield)) { if (destination.equals(ZoneType.Exile) || origin.contains(ZoneType.Battlefield)) {
// don't rush bouncing stuff when not going to attack // don't rush bouncing stuff when not going to attack
if (!immediately && game.getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2) if (!immediately && game.getPhaseHandler().getPhase().isBefore(PhaseType.MAIN2)
&& game.getPhaseHandler().isPlayerTurn(ai) && game.getPhaseHandler().isPlayerTurn(ai)
@@ -1433,17 +1432,14 @@ public class ChangeZoneAi extends SpellAbilityAi {
final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination"));
final TargetRestrictions tgt = sa.getTargetRestrictions(); final TargetRestrictions tgt = sa.getTargetRestrictions();
CardCollection list = CardLists.getValidCards(ai.getGame().getCardsIn(tgt.getZone()), tgt.getValidTgts(), ai, source, sa); CardCollection list = new CardCollection(CardUtil.getValidCardsToTarget(tgt, sa));
list = CardLists.getTargetableCards(list, sa);
list.removeAll(sa.getTargets().getTargetCards());
if (list.isEmpty()) { if (list.isEmpty()) {
return false; return false;
} }
// target loop // target loop
while (sa.getTargets().size() < tgt.getMinTargets(sa.getHostCard(), sa)) { while (!sa.isMinTargetChosen()) {
// AI Targeting // AI Targeting
Card choice = null; Card choice = null;

View File

@@ -757,7 +757,7 @@ public class DamageDealAi extends DamageAiBase {
return false; return false;
} }
// TODO: Improve Damage, we shouldn't just target the player just because we can // TODO: Improve Damage, we shouldn't just target the player just because we can
if (sa.canTarget(enemy) && tcs.size() < tgt.getMaxTargets(source, sa)) { if (sa.canTarget(enemy) && sa.canAddMoreTarget()) {
if (((phase.is(PhaseType.END_OF_TURN) && phase.getNextTurn().equals(ai)) if (((phase.is(PhaseType.END_OF_TURN) && phase.getNextTurn().equals(ai))
|| (SpellAbilityAi.isSorcerySpeed(sa, ai) && phase.is(PhaseType.MAIN2)) || (SpellAbilityAi.isSorcerySpeed(sa, ai) && phase.is(PhaseType.MAIN2))
|| ("PingAfterAttack".equals(logic) && phase.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS) && phase.isPlayerTurn(ai)) || ("PingAfterAttack".equals(logic) && phase.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS) && phase.isPlayerTurn(ai))

View File

@@ -130,7 +130,7 @@ public class DamagePreventAi extends SpellAbilityAi {
ComputerUtilCard.sortByEvaluateCreature(combatants); ComputerUtilCard.sortByEvaluateCreature(combatants);
for (final Card c : combatants) { for (final Card c : combatants) {
if (ComputerUtilCombat.combatantWouldBeDestroyed(ai, c, combat) && tcs.size() < tgt.getMaxTargets(hostCard, sa)) { if (ComputerUtilCombat.combatantWouldBeDestroyed(ai, c, combat) && sa.canAddMoreTarget()) {
tcs.add(c); tcs.add(c);
chance = true; chance = true;
} }

View File

@@ -17,6 +17,7 @@ import forge.game.ability.AbilityUtils;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardCollection; import forge.game.card.CardCollection;
import forge.game.card.CardLists; import forge.game.card.CardLists;
import forge.game.card.CardUtil;
import forge.game.combat.Combat; import forge.game.combat.Combat;
import forge.game.cost.Cost; import forge.game.cost.Cost;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
@@ -24,7 +25,6 @@ import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions; import forge.game.spellability.TargetRestrictions;
import forge.game.zone.ZoneType;
public class DebuffAi extends SpellAbilityAi { public class DebuffAi extends SpellAbilityAi {
@@ -195,16 +195,13 @@ public class DebuffAi extends SpellAbilityAi {
*/ */
private boolean debuffMandatoryTarget(final Player ai, final SpellAbility sa, final boolean mandatory) { private boolean debuffMandatoryTarget(final Player ai, final SpellAbility sa, final boolean mandatory) {
final TargetRestrictions tgt = sa.getTargetRestrictions(); final TargetRestrictions tgt = sa.getTargetRestrictions();
CardCollection list = CardLists.getTargetableCards(ai.getGame().getCardsIn(ZoneType.Battlefield), sa); List<Card> list = CardUtil.getValidCardsToTarget(tgt, sa);
if (list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) { if (list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) {
sa.resetTargets(); sa.resetTargets();
return false; return false;
} }
// Remove anything that's already been targeted
list.removeAll(sa.getTargets().getTargetCards());
final CardCollection pref = CardLists.filterControlledBy(list, ai.getOpponents()); final CardCollection pref = CardLists.filterControlledBy(list, ai.getOpponents());
final CardCollection forced = CardLists.filterControlledBy(list, ai); final CardCollection forced = CardLists.filterControlledBy(list, ai);
final Card source = sa.getHostCard(); final Card source = sa.getHostCard();
@@ -219,7 +216,7 @@ public class DebuffAi extends SpellAbilityAi {
sa.getTargets().add(c); sa.getTargets().add(c);
} }
while (sa.getTargets().size() < tgt.getMinTargets(source, sa)) { while (!sa.isMinTargetChosen()) {
if (forced.isEmpty()) { if (forced.isEmpty()) {
break; break;
} }
@@ -237,13 +234,13 @@ public class DebuffAi extends SpellAbilityAi {
sa.getTargets().add(c); sa.getTargets().add(c);
} }
if (sa.getTargets().size() < tgt.getMinTargets(source, sa)) { if (!sa.isMinTargetChosen()) {
sa.resetTargets(); sa.resetTargets();
return false; return false;
} }
return true; return true;
} // pumpMandatoryTarget() }
@Override @Override
protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) {

View File

@@ -20,13 +20,13 @@ import forge.game.ability.effects.ProtectEffect;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardCollection; import forge.game.card.CardCollection;
import forge.game.card.CardLists; import forge.game.card.CardLists;
import forge.game.card.CardUtil;
import forge.game.combat.Combat; import forge.game.combat.Combat;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions; import forge.game.spellability.TargetRestrictions;
import forge.game.zone.ZoneType;
import forge.util.MyRandom; import forge.util.MyRandom;
public class ProtectAi extends SpellAbilityAi { public class ProtectAi extends SpellAbilityAi {
@@ -168,7 +168,10 @@ public class ProtectAi extends SpellAbilityAi {
@Override @Override
protected boolean checkApiLogic(final Player ai, final SpellAbility sa) { protected boolean checkApiLogic(final Player ai, final SpellAbility sa) {
if (!sa.usesTargeting()) { if (sa.usesTargeting()) {
return protectTgtAI(ai, sa, false);
}
final List<Card> cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); final List<Card> cards = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa);
if (cards.size() == 0) { if (cards.size() == 0) {
return false; return false;
@@ -182,9 +185,6 @@ public class ProtectAi extends SpellAbilityAi {
* control Card and Pump is a Curse, than maybe use? * control Card and Pump is a Curse, than maybe use?
* } * }
*/ */
} else {
return protectTgtAI(ai, sa, false);
}
return false; return false;
} }
@@ -256,21 +256,15 @@ public class ProtectAi extends SpellAbilityAi {
} // protectTgtAI() } // protectTgtAI()
private static boolean protectMandatoryTarget(final Player ai, final SpellAbility sa) { private static boolean protectMandatoryTarget(final Player ai, final SpellAbility sa) {
final Game game = ai.getGame();
final TargetRestrictions tgt = sa.getTargetRestrictions(); final TargetRestrictions tgt = sa.getTargetRestrictions();
CardCollection list = CardLists.getTargetableCards(game.getCardsIn(ZoneType.Battlefield), sa); final Card source = sa.getHostCard();
final List<Card> list = CardUtil.getValidCardsToTarget(tgt, sa);
if (list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) { if (list.size() < tgt.getMinTargets(source, sa)) {
sa.resetTargets(); sa.resetTargets();
return false; return false;
} }
// Remove anything that's already been targeted
for (final Card c : sa.getTargets().getTargetCards()) {
list.remove(c);
}
CardCollection pref = CardLists.filterControlledBy(list, ai); CardCollection pref = CardLists.filterControlledBy(list, ai);
pref = CardLists.filter(pref, new Predicate<Card>() { pref = CardLists.filter(pref, new Predicate<Card>() {
@Override @Override
@@ -286,7 +280,6 @@ public class ProtectAi extends SpellAbilityAi {
} }
}); });
final List<Card> forced = CardLists.filterControlledBy(list, ai); final List<Card> forced = CardLists.filterControlledBy(list, ai);
final Card source = sa.getHostCard();
while (sa.canAddMoreTarget()) { while (sa.canAddMoreTarget()) {
if (pref.isEmpty()) { if (pref.isEmpty()) {
@@ -308,13 +301,13 @@ public class ProtectAi extends SpellAbilityAi {
sa.getTargets().add(c); sa.getTargets().add(c);
} }
while (sa.getTargets().size() < tgt.getMinTargets(source, sa)) { while (!sa.isMinTargetChosen()) {
if (forced.isEmpty()) { if (forced.isEmpty()) {
break; break;
} }
Card c; Card c;
if (CardLists.getNotType(forced, "Creature").size() == 0) { if (CardLists.getNotType(forced, "Creature").isEmpty()) {
c = ComputerUtilCard.getWorstCreatureAI(forced); c = ComputerUtilCard.getWorstCreatureAI(forced);
} else { } else {
c = ComputerUtilCard.getCheapestPermanentAI(forced, sa, false); c = ComputerUtilCard.getCheapestPermanentAI(forced, sa, false);
@@ -323,7 +316,7 @@ public class ProtectAi extends SpellAbilityAi {
sa.getTargets().add(c); sa.getTargets().add(c);
} }
if (sa.getTargets().size() < tgt.getMinTargets(source, sa)) { if (!sa.isMinTargetChosen()) {
sa.resetTargets(); sa.resetTargets();
return false; return false;
} }

View File

@@ -616,23 +616,16 @@ public class PumpAi extends PumpAiBase {
} }
private boolean pumpMandatoryTarget(final Player ai, final SpellAbility sa) { private boolean pumpMandatoryTarget(final Player ai, final SpellAbility sa) {
final Game game = ai.getGame();
final TargetRestrictions tgt = sa.getTargetRestrictions(); final TargetRestrictions tgt = sa.getTargetRestrictions();
CardCollection list = CardLists.getTargetableCards(game.getCardsIn(ZoneType.Battlefield), sa); List<Card> list = CardUtil.getValidCardsToTarget(tgt, sa);
if (list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) { if (list.size() < tgt.getMinTargets(sa.getHostCard(), sa)) {
sa.resetTargets(); sa.resetTargets();
return false; return false;
} }
// Remove anything that's already been targeted
for (final Card c : sa.getTargets().getTargetCards()) {
list.remove(c);
}
CardCollection pref; CardCollection pref;
CardCollection forced; CardCollection forced;
final Card source = sa.getHostCard();
if (sa.isCurse()) { if (sa.isCurse()) {
pref = CardLists.filterControlledBy(list, ai.getOpponents()); pref = CardLists.filterControlledBy(list, ai.getOpponents());
@@ -652,7 +645,7 @@ public class PumpAi extends PumpAiBase {
sa.getTargets().add(c); sa.getTargets().add(c);
} }
while (sa.getTargets().size() < tgt.getMinTargets(source, sa)) { while (!sa.isMinTargetChosen()) {
if (forced.isEmpty()) { if (forced.isEmpty()) {
break; break;
} }
@@ -668,7 +661,7 @@ public class PumpAi extends PumpAiBase {
sa.getTargets().add(c); sa.getTargets().add(c);
} }
if (sa.getTargets().size() < tgt.getMinTargets(source, sa)) { if (!sa.isMinTargetChosen()) {
sa.resetTargets(); sa.resetTargets();
return false; return false;
} }

View File

@@ -97,13 +97,13 @@ public class SetStateAi extends SpellAbilityAi {
for (final Card c : list) { for (final Card c : list) {
if (shouldTransformCard(c, ai, ph) || "Always".equals(logic)) { if (shouldTransformCard(c, ai, ph) || "Always".equals(logic)) {
sa.getTargets().add(c); sa.getTargets().add(c);
if (sa.getTargets().size() == tgt.getMaxTargets(source, sa)) { if (sa.isMaxTargetChosen()) {
break; break;
} }
} }
} }
return sa.getTargets().size() >= tgt.getMinTargets(source, sa); return sa.isMinTargetChosen();
} }
} else if ("TurnFace".equals(mode)) { } else if ("TurnFace".equals(mode)) {
if (!sa.usesTargeting()) { if (!sa.usesTargeting()) {

View File

@@ -900,4 +900,17 @@ public class StaticData {
this.enableSmartCardArtSelection = isEnabled; this.enableSmartCardArtSelection = isEnabled;
} }
public boolean isRebalanced(String name)
{
if (!name.startsWith("A-")) {
return false;
}
for(PaperCard pc : this.getCommonCards().getAllCards(name)) {
CardEdition e = this.editions.get(pc.getEdition());
if (e != null && e.isRebalanced(name)) {
return true;
}
}
return false;
}
} }

View File

@@ -375,7 +375,8 @@ public final class CardEdition implements Comparable<CardEdition> {
public String getSheetReplaceCardFromSheet2() { return sheetReplaceCardFromSheet2; } public String getSheetReplaceCardFromSheet2() { return sheetReplaceCardFromSheet2; }
public String[] getChaosDraftThemes() { return chaosDraftThemes; } public String[] getChaosDraftThemes() { return chaosDraftThemes; }
public List<CardInSet> getCards() { return cardMap.get("cards"); } public List<CardInSet> getCards() { return cardMap.get(EditionSectionWithCollectorNumbers.CARDS.getName()); }
public List<CardInSet> getRebalancedCards() { return cardMap.get(EditionSectionWithCollectorNumbers.REBALANCED.getName()); }
public List<CardInSet> getAllCardsInSet() { public List<CardInSet> getAllCardsInSet() {
return cardsInSet; return cardsInSet;
} }
@@ -401,6 +402,15 @@ public final class CardEdition implements Comparable<CardEdition> {
return this.cardsInSetLookupMap.get(cardName); return this.cardsInSetLookupMap.get(cardName);
} }
public boolean isRebalanced(String cardName) {
for (CardInSet cis : getRebalancedCards()) {
if (cis.name.equals(cardName)) {
return true;
}
}
return false;
}
public boolean isModern() { return getDate().after(parseDate("2003-07-27")); } //8ED and above are modern except some promo cards and others public boolean isModern() { return getDate().after(parseDate("2003-07-27")); } //8ED and above are modern except some promo cards and others
public Map<String, Integer> getTokens() { return tokenNormalized; } public Map<String, Integer> getTokens() { return tokenNormalized; }
@@ -899,7 +909,7 @@ public final class CardEdition implements Comparable<CardEdition> {
} }
})); }));
Iterator<CardEdition> editionsIterator = editionsWithBasicLands.iterator(); Iterator<CardEdition> editionsIterator = editionsWithBasicLands.iterator();
List<CardEdition> selectedEditions = new ArrayList(); List<CardEdition> selectedEditions = new ArrayList<CardEdition>();
while (editionsIterator.hasNext()) while (editionsIterator.hasNext())
selectedEditions.add(editionsIterator.next()); selectedEditions.add(editionsIterator.next());
if (selectedEditions.isEmpty()) if (selectedEditions.isEmpty())

View File

@@ -223,6 +223,19 @@ public interface IPaperCard extends InventoryItem, Serializable {
public static final Predicate<PaperCard> IS_WHITE = Predicates.color(true, false, MagicColor.WHITE); public static final Predicate<PaperCard> IS_WHITE = Predicates.color(true, false, MagicColor.WHITE);
public static final Predicate<PaperCard> IS_COLORLESS = Predicates.color(true, true, MagicColor.COLORLESS); public static final Predicate<PaperCard> IS_COLORLESS = Predicates.color(true, true, MagicColor.COLORLESS);
public static final Predicate<PaperCard> IS_UNREBALANCED = new Predicate<PaperCard>() {
@Override
public boolean apply(PaperCard input) {
return input.isUnRebalanced();
}
};
public static final Predicate<PaperCard> IS_REBALANCED = new Predicate<PaperCard>() {
@Override
public boolean apply(PaperCard input) {
return input.isRebalanced();
}
};
} }
} }
@@ -246,4 +259,5 @@ public interface IPaperCard extends InventoryItem, Serializable {
String getCardRSpecImageKey(); String getCardRSpecImageKey();
String getCardGSpecImageKey(); String getCardGSpecImageKey();
public boolean isRebalanced();
} }

View File

@@ -51,7 +51,6 @@ public abstract class ItemPredicate {
*/ */
public static class Presets { public static class Presets {
/** The Item IsPack. */ /** The Item IsPack. */
@SuppressWarnings("unchecked")
public static final Predicate<InventoryItem> IS_PACK_OR_DECK = Predicates.or(IsBoosterPack, IsFatPack, IsTournamentPack, IsStarterDeck, IsPrebuiltDeck); public static final Predicate<InventoryItem> IS_PACK_OR_DECK = Predicates.or(IsBoosterPack, IsFatPack, IsTournamentPack, IsStarterDeck, IsPrebuiltDeck);
} }
} }

View File

@@ -418,4 +418,10 @@ public class PaperCard implements Comparable<IPaperCard>, InventoryItemFromSet,
public String getSortableName() { public String getSortableName() {
return sortableName; return sortableName;
} }
public boolean isUnRebalanced() {
return StaticData.instance().isRebalanced("A-" + name);
}
public boolean isRebalanced() {
return StaticData.instance().isRebalanced(name);
}
} }

View File

@@ -13,6 +13,7 @@ import forge.card.ColorSet;
import forge.util.MyRandom; import forge.util.MyRandom;
public class PaperToken implements InventoryItemFromSet, IPaperCard { public class PaperToken implements InventoryItemFromSet, IPaperCard {
private static final long serialVersionUID = 1L;
private String name; private String name;
private CardEdition edition; private CardEdition edition;
private ArrayList<String> imageFileName = new ArrayList<>(); private ArrayList<String> imageFileName = new ArrayList<>();
@@ -200,4 +201,7 @@ public class PaperToken implements InventoryItemFromSet, IPaperCard {
public String getImageKey(int artIndex) { public String getImageKey(int artIndex) {
return ImageKeys.TOKEN_PREFIX + imageFileName.get(artIndex).replace(" ", "_"); return ImageKeys.TOKEN_PREFIX + imageFileName.get(artIndex).replace(" ", "_");
} }
public boolean isRebalanced() {
return false;
}
} }

View File

@@ -596,6 +596,17 @@ public class BoosterGenerator {
Predicate<PaperCard> predicateRare = Predicates.and( setPred, IPaperCard.Predicates.Presets.IS_RARE, extraPred); Predicate<PaperCard> predicateRare = Predicates.and( setPred, IPaperCard.Predicates.Presets.IS_RARE, extraPred);
ps.addAll(Iterables.filter(src, predicateRare), 2); ps.addAll(Iterables.filter(src, predicateRare), 2);
} else if (mainCode.equalsIgnoreCase(BoosterSlots.UNCOMMON_RARE_MYTHIC)) {
// Extended version of RARE_MYTHIC, used for Alchemy slots
Predicate<PaperCard> predicateMythic = Predicates.and( setPred, IPaperCard.Predicates.Presets.IS_MYTHIC_RARE, extraPred);
ps.addAll(Iterables.filter(src, predicateMythic));
Predicate<PaperCard> predicateRare = Predicates.and( setPred, IPaperCard.Predicates.Presets.IS_RARE, extraPred);
ps.addAll(Iterables.filter(src, predicateRare), 2);
Predicate<PaperCard> predicateUncommon = Predicates.and( setPred, IPaperCard.Predicates.Presets.IS_UNCOMMON, extraPred);
ps.addAll(Iterables.filter(src, predicateUncommon), 4);
} else { } else {
throw new IllegalArgumentException("Booster generator: operator could not be parsed - " + mainCode); throw new IllegalArgumentException("Booster generator: operator could not be parsed - " + mainCode);
} }

View File

@@ -6,6 +6,7 @@ public class BoosterSlots {
public static final String COMMON = "Common"; public static final String COMMON = "Common";
public static final String UNCOMMON = "Uncommon"; public static final String UNCOMMON = "Uncommon";
public static final String UNCOMMON_RARE = "UncommonRare"; public static final String UNCOMMON_RARE = "UncommonRare";
public static final String UNCOMMON_RARE_MYTHIC = "UncommonRareMythic";
public static final String RARE = "Rare"; public static final String RARE = "Rare";
public static final String RARE_MYTHIC = "RareMythic"; public static final String RARE_MYTHIC = "RareMythic";
public static final String MYTHIC = "Mythic"; public static final String MYTHIC = "Mythic";

View File

@@ -139,6 +139,13 @@ public class GameFormat implements Comparable<GameFormat> {
} }
protected Predicate<PaperCard> buildFilter(boolean printed) { protected Predicate<PaperCard> buildFilter(boolean printed) {
Predicate<PaperCard> p = Predicates.not(IPaperCard.Predicates.names(this.getBannedCardNames())); Predicate<PaperCard> p = Predicates.not(IPaperCard.Predicates.names(this.getBannedCardNames()));
if (FormatSubType.ARENA.equals(this.getFormatSubType())) {
p = Predicates.and(p, Predicates.not(IPaperCard.Predicates.Presets.IS_UNREBALANCED));
} else {
p = Predicates.and(p, Predicates.not(IPaperCard.Predicates.Presets.IS_REBALANCED));
}
if (!this.getAllowedSetCodes().isEmpty()) { if (!this.getAllowedSetCodes().isEmpty()) {
p = Predicates.and(p, printed ? p = Predicates.and(p, printed ?
IPaperCard.Predicates.printedInSets(this.getAllowedSetCodes(), printed) : IPaperCard.Predicates.printedInSets(this.getAllowedSetCodes(), printed) :

View File

@@ -96,6 +96,13 @@ public class AbilityUtils {
final Game game = hostCard.getGame(); final Game game = hostCard.getGame();
Card c = null; Card c = null;
Player player = null;
if (sa instanceof SpellAbility) {
player = ((SpellAbility)sa).getActivatingPlayer();
}
if (player == null) {
player = hostCard.getController();
}
if (defined.equals("Self")) { if (defined.equals("Self")) {
c = hostCard; c = hostCard;
@@ -143,7 +150,7 @@ public class AbilityUtils {
} }
} }
} else if (defined.equals("TopOfGraveyard")) { } else if (defined.equals("TopOfGraveyard")) {
final CardCollectionView grave = hostCard.getController().getCardsIn(ZoneType.Graveyard); final CardCollectionView grave = player.getCardsIn(ZoneType.Graveyard);
if (grave.size() > 0) { if (grave.size() > 0) {
c = grave.getLast(); c = grave.getLast();
@@ -153,7 +160,7 @@ public class AbilityUtils {
} }
} }
else if (defined.endsWith("OfLibrary")) { else if (defined.endsWith("OfLibrary")) {
final CardCollectionView lib = hostCard.getController().getCardsIn(ZoneType.Library); final CardCollectionView lib = player.getCardsIn(ZoneType.Library);
int libSize = lib.size(); int libSize = lib.size();
if (libSize > 0) { // TopOfLibrary or BottomOfLibrary if (libSize > 0) { // TopOfLibrary or BottomOfLibrary
if (defined.startsWith("TopThird")) { if (defined.startsWith("TopThird")) {
@@ -354,7 +361,7 @@ public class AbilityUtils {
candidates = game.getCardsIn(ZoneType.smartValueOf(zone)); candidates = game.getCardsIn(ZoneType.smartValueOf(zone));
validDefined = s[1]; validDefined = s[1];
} }
cards.addAll(CardLists.getValidCards(candidates, validDefined, hostCard.getController(), hostCard, sa)); cards.addAll(CardLists.getValidCards(candidates, validDefined, player, hostCard, sa));
return cards; return cards;
} else if (defined.startsWith("ExiledWith")) { } else if (defined.startsWith("ExiledWith")) {
cards.addAll(hostCard.getExiledCards()); cards.addAll(hostCard.getExiledCards());
@@ -375,7 +382,7 @@ public class AbilityUtils {
for (int i = 0; i < valids.length; i++) { for (int i = 0; i < valids.length; i++) {
valids[i] = "Card." + valids[i]; valids[i] = "Card." + valids[i];
} }
cards = CardLists.getValidCards(cards, valids, hostCard.getController(), hostCard, sa); cards = CardLists.getValidCards(cards, valids, player, hostCard, sa);
} }
return cards; return cards;

View File

@@ -115,7 +115,7 @@ public class PumpAllEffect extends SpellAbilityEffect {
sb.append(desc); sb.append(desc);
return sb.toString(); return sb.toString();
} // pumpAllStackDescription() }
@Override @Override
public void resolve(final SpellAbility sa) { public void resolve(final SpellAbility sa) {

View File

@@ -415,10 +415,7 @@ public class PumpEffect extends SpellAbilityEffect {
final ZoneType pumpZone = sa.hasParam("PumpZone") ? ZoneType.smartValueOf(sa.getParam("PumpZone")) final ZoneType pumpZone = sa.hasParam("PumpZone") ? ZoneType.smartValueOf(sa.getParam("PumpZone"))
: ZoneType.Battlefield; : ZoneType.Battlefield;
final int size = tgtCards.size(); for (Card tgtC : tgtCards) {
for (int j = 0; j < size; j++) {
final Card tgtC = tgtCards.get(j);
// CR 702.26e // CR 702.26e
if (tgtC.isPhasedOut()) { if (tgtC.isPhasedOut()) {
continue; continue;

View File

@@ -32,14 +32,6 @@ public class RepeatEachEffect extends SpellAbilityEffect {
final SpellAbility repeat = sa.getAdditionalAbility("RepeatSubAbility"); final SpellAbility repeat = sa.getAdditionalAbility("RepeatSubAbility");
if (repeat != null && !repeat.getHostCard().equalsWithTimestamp(source)) {
// TODO: for some reason, the host card of the original additional SA is set to the cloned card when
// the ability is copied (e.g. Clone Legion + Swarm Intelligence). Couldn't figure out why this happens,
// so this hack is necessary for now to work around this issue.
System.out.println("Warning: RepeatSubAbility had the wrong host set (potentially after cloning the root SA or changing zones), attempting to correct...");
repeat.setHostCard(source);
}
final Player player = sa.getActivatingPlayer(); final Player player = sa.getActivatingPlayer();
final Game game = player.getGame(); final Game game = player.getGame();
if (sa.hasParam("Optional") && sa.hasParam("OptionPrompt") && //for now, OptionPrompt is needed if (sa.hasParam("Optional") && sa.hasParam("OptionPrompt") && //for now, OptionPrompt is needed
@@ -74,10 +66,6 @@ public class RepeatEachEffect extends SpellAbilityEffect {
} }
else if (sa.hasParam("DefinedCards")) { else if (sa.hasParam("DefinedCards")) {
repeatCards = AbilityUtils.getDefinedCards(source, sa.getParam("DefinedCards"), sa); repeatCards = AbilityUtils.getDefinedCards(source, sa.getParam("DefinedCards"), sa);
if (sa.hasParam("AdditionalRestriction")) { // lki cards might not be in game
repeatCards = CardLists.getValidCards(repeatCards,
sa.getParam("AdditionalRestriction"), source.getController(), source, sa);
}
} }
boolean loopOverCards = repeatCards != null && !repeatCards.isEmpty(); boolean loopOverCards = repeatCards != null && !repeatCards.isEmpty();
@@ -125,15 +113,12 @@ public class RepeatEachEffect extends SpellAbilityEffect {
// for a mixed list of target permanents and players, e.g. Soulfire Eruption // for a mixed list of target permanents and players, e.g. Soulfire Eruption
if (sa.hasParam("RepeatTargeted")) { if (sa.hasParam("RepeatTargeted")) {
final List <GameObject> tgts = getTargets(sa); for (final GameObject o : getTargets(sa)) {
if (tgts != null) {
for (final Object o : tgts) {
source.addRemembered(o); source.addRemembered(o);
AbilityUtils.resolve(repeat); AbilityUtils.resolve(repeat);
source.removeRemembered(o); source.removeRemembered(o);
} }
} }
}
if (sa.hasParam("RepeatTypesFrom")) { if (sa.hasParam("RepeatTypesFrom")) {
final Set<String> validTypes = new HashSet<>(); final Set<String> validTypes = new HashSet<>();

View File

@@ -26,17 +26,9 @@ public class RepeatEffect extends SpellAbilityEffect {
// setup subability to repeat // setup subability to repeat
SpellAbility repeat = sa.getAdditionalAbility("RepeatSubAbility"); SpellAbility repeat = sa.getAdditionalAbility("RepeatSubAbility");
if (repeat != null && !repeat.getHostCard().equals(source)) {
// TODO: for some reason, the host card of the original additional SA is set to the cloned card when
// the ability is copied (e.g. Clone Legion + Swarm Intelligence). Couldn't figure out why this happens,
// so this hack is necessary for now to work around this issue.
System.out.println("Warning: RepeatSubAbility had the wrong host set (potentially after cloning the root SA), attempting to correct...");
repeat.setHostCard(source);
}
Integer maxRepeat = null; Integer maxRepeat = null;
if (sa.hasParam("MaxRepeat")) { if (sa.hasParam("MaxRepeat")) {
maxRepeat = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("MaxRepeat"), sa); maxRepeat = AbilityUtils.calculateAmount(source, sa.getParam("MaxRepeat"), sa);
if (maxRepeat.intValue() == 0) return; // do nothing if maxRepeat is 0. the next loop will execute at least once if (maxRepeat.intValue() == 0) return; // do nothing if maxRepeat is 0. the next loop will execute at least once
} }
@@ -50,7 +42,7 @@ public class RepeatEffect extends SpellAbilityEffect {
// Helm of Obedience vs Graveyard to Library replacement effect // Helm of Obedience vs Graveyard to Library replacement effect
if (source.getName().equals("Helm of Obedience")) { if (source.getName().equals("Helm of Obedience")) {
StringBuilder infLoop = new StringBuilder(sa.getHostCard().toString()); StringBuilder infLoop = new StringBuilder(source.toString());
infLoop.append(" - To avoid an infinite loop, this repeat has been broken "); infLoop.append(" - To avoid an infinite loop, this repeat has been broken ");
infLoop.append(" and the game will now continue in the current state, ending the loop early. "); infLoop.append(" and the game will now continue in the current state, ending the loop early. ");
infLoop.append("Once Draws are available this probably should change to a Draw."); infLoop.append("Once Draws are available this probably should change to a Draw.");
@@ -84,7 +76,7 @@ public class RepeatEffect extends SpellAbilityEffect {
} else { } else {
list = game.getCardsIn(ZoneType.Battlefield); list = game.getCardsIn(ZoneType.Battlefield);
} }
list = CardLists.getValidCards(list, repeatPresent, sa.getActivatingPlayer(), sa.getHostCard(), sa); list = CardLists.getValidCards(list, repeatPresent, activator, sa.getHostCard(), sa);
final String rightString = repeatCompare.substring(2); final String rightString = repeatCompare.substring(2);
int right = AbilityUtils.calculateAmount(sa.getHostCard(), rightString, sa); int right = AbilityUtils.calculateAmount(sa.getHostCard(), rightString, sa);
@@ -114,7 +106,7 @@ public class RepeatEffect extends SpellAbilityEffect {
if (sa.hasParam("RepeatOptional")) { if (sa.hasParam("RepeatOptional")) {
Player decider = sa.hasParam("RepeatOptionalDecider") Player decider = sa.hasParam("RepeatOptionalDecider")
? AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("RepeatOptionalDecider"), sa).get(0) ? AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("RepeatOptionalDecider"), sa).get(0)
: sa.getActivatingPlayer(); : activator;
return decider.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantRepeatProcessAgain"), null); return decider.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantRepeatProcessAgain"), null);
} }

View File

@@ -63,6 +63,7 @@ public class MapActor extends Actor {
{ {
ParticleEffect effect = new ParticleEffect(); ParticleEffect effect = new ParticleEffect();
effect.load(Config.instance().getFile(path),Config.instance().getFile(path).parent()); effect.load(Config.instance().getFile(path),Config.instance().getFile(path).parent());
effect.setPosition(getCenterX(), getCenterY());
effects.add(new CurrentEffect(path, effect, offset, overlay)); effects.add(new CurrentEffect(path, effect, offset, overlay));
if(duration!=0)//ParticleEffect.setDuration uses an integer for some reason if(duration!=0)//ParticleEffect.setDuration uses an integer for some reason
{ {
@@ -147,16 +148,29 @@ public class MapActor extends Actor {
effect.effect.draw(batch); effect.effect.draw(batch);
} }
} }
float getCenterX() {
float scale = 1f;
if (this instanceof EnemySprite) {
scale = ((EnemySprite) this).getData().scale;
}
return getX()+(getWidth()*scale)/2;
}
float getCenterY() {
float scale = 1f;
if (this instanceof EnemySprite) {
scale = ((EnemySprite) this).getData().scale;
}
return getY()+(getHeight()*scale)/2;
}
@Override @Override
public void act(float delta) { public void act(float delta) {
super.act(delta); super.act(delta);
for(int i=0;i<effects.size;i++) for(int i=0;i<effects.size;i++)
{ {
CurrentEffect effect=effects.get(i); CurrentEffect effect=effects.get(i);
effect.effect.update(delta); effect.effect.update(delta);
effect.effect.setPosition(getX()+getHeight()/2+effect.offset.x,getY()+getWidth()/2+effect.offset.y); effect.effect.setPosition(getCenterX()+effect.offset.x,getCenterY()+effect.offset.y);
if(effect.effect.isComplete()) if(effect.effect.isComplete())
{ {
effects.removeIndex(i); effects.removeIndex(i);

View File

@@ -2,6 +2,7 @@ package forge.adventure.data;
import forge.adventure.util.*; import forge.adventure.util.*;
import forge.deck.Deck; import forge.deck.Deck;
import forge.util.Aggregates;
/** /**
* Data class that will be used to read Json configuration files * Data class that will be used to read Json configuration files
@@ -10,12 +11,14 @@ import forge.deck.Deck;
*/ */
public class EnemyData { public class EnemyData {
public String name; public String name;
public String nameOverride;
public String sprite; public String sprite;
public String[] deck; public String[] deck;
public boolean copyPlayerDeck = false; public boolean copyPlayerDeck = false;
public String ai; public String ai;
public boolean boss = false; public boolean boss = false;
public boolean flying = false; public boolean flying = false;
public boolean randomizeDeck = false;
public float spawnRate; public float spawnRate;
public float difficulty; public float difficulty;
public float speed; public float speed;
@@ -28,7 +31,9 @@ public class EnemyData {
public EnemyData nextEnemy; public EnemyData nextEnemy;
public int teamNumber = -1; public int teamNumber = -1;
public EnemyData() { } public EnemyData() {
}
public EnemyData(EnemyData enemyData) { public EnemyData(EnemyData enemyData) {
name = enemyData.name; name = enemyData.name;
sprite = enemyData.sprite; sprite = enemyData.sprite;
@@ -36,6 +41,7 @@ public class EnemyData {
ai = enemyData.ai; ai = enemyData.ai;
boss = enemyData.boss; boss = enemyData.boss;
flying = enemyData.flying; flying = enemyData.flying;
randomizeDeck = enemyData.randomizeDeck;
spawnRate = enemyData.spawnRate; spawnRate = enemyData.spawnRate;
copyPlayerDeck = enemyData.copyPlayerDeck; copyPlayerDeck = enemyData.copyPlayerDeck;
difficulty = enemyData.difficulty; difficulty = enemyData.difficulty;
@@ -46,6 +52,7 @@ public class EnemyData {
colors = enemyData.colors; colors = enemyData.colors;
teamNumber = enemyData.teamNumber; teamNumber = enemyData.teamNumber;
nextEnemy = enemyData.nextEnemy == null ? null : new EnemyData(enemyData.nextEnemy); nextEnemy = enemyData.nextEnemy == null ? null : new EnemyData(enemyData.nextEnemy);
nameOverride = enemyData.nameOverride == null ? "" : enemyData.nameOverride;
if (enemyData.scale == 0.0f) { if (enemyData.scale == 0.0f) {
scale = 1.0f; scale = 1.0f;
} }
@@ -59,6 +66,9 @@ public class EnemyData {
} }
public Deck generateDeck(boolean isFantasyMode, boolean useGeneticAI) { public Deck generateDeck(boolean isFantasyMode, boolean useGeneticAI) {
if (randomizeDeck) {
return CardUtil.getDeck(Aggregates.random(deck), true, isFantasyMode, colors, life > 13, life > 16 && useGeneticAI);
}
return CardUtil.getDeck(deck[Current.player().getEnemyDeckNumber(this.name, deck.length)], true, isFantasyMode, colors, life > 13, life > 16 && useGeneticAI); return CardUtil.getDeck(deck[Current.player().getEnemyDeckNumber(this.name, deck.length)], true, isFantasyMode, colors, life > 13, life > 16 && useGeneticAI);
} }
} }

View File

@@ -798,9 +798,7 @@ public class MapStage extends GameStage {
Current.player().win(); Current.player().win();
player.setAnimation(CharacterSprite.AnimationTypes.Attack); player.setAnimation(CharacterSprite.AnimationTypes.Attack);
float vx = currentMob.getData().scale == 1f ? 0f : -((currentMob.getWidth()*currentMob.getData().scale)/2); currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f);
float vy = currentMob.getData().scale == 1f ? 0f : -((currentMob.getHeight()*currentMob.getData().scale)/2);
currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f, true, new Vector2(vx, vy));
Timer.schedule(new Timer.Task() { Timer.schedule(new Timer.Task() {
@Override @Override
public void run() { public void run() {

View File

@@ -156,9 +156,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
if (playerIsWinner) { if (playerIsWinner) {
Current.player().win(); Current.player().win();
player.setAnimation(CharacterSprite.AnimationTypes.Attack); player.setAnimation(CharacterSprite.AnimationTypes.Attack);
float vx = currentMob.getData().scale == 1f ? 0f : -((currentMob.getWidth()*currentMob.getData().scale)/2); currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f);
float vy = currentMob.getData().scale == 1f ? 0f : -((currentMob.getHeight()*currentMob.getData().scale)/2);
currentMob.playEffect(Paths.EFFECT_BLOOD, 0.5f, true, new Vector2(vx, vy));
Timer.schedule(new Timer.Task() { Timer.schedule(new Timer.Task() {
@Override @Override
public void run() { public void run() {

View File

@@ -3,5 +3,6 @@ ManaCost:no cost
Types:Artifact Types:Artifact
S:Mode$ ReduceCost | ValidCard$ Card | ValidSpell$ Activated.Equip | Activator$ You | Amount$ 1 | EffectZone$ Command | Description$ Equip costs you pay cost {1} less. S:Mode$ ReduceCost | ValidCard$ Card | ValidSpell$ Activated.Equip | Activator$ You | Amount$ 1 | EffectZone$ Command | Description$ Equip costs you pay cost {1} less.
T:Mode$ AttackersDeclared | ValidAttackers$ Creature.modified+YouCtrl | TriggerZones$ Command | Execute$ TrigConjure | TriggerDescription$ Whenever a modified creature you control attacks, you may pay {M}{M}, if you do conjure a random card from Nahiri's Armory's Spellbook into your hand. T:Mode$ AttackersDeclared | ValidAttackers$ Creature.modified+YouCtrl | TriggerZones$ Command | Execute$ TrigConjure | TriggerDescription$ Whenever a modified creature you control attacks, you may pay {M}{M}, if you do conjure a random card from Nahiri's Armory's Spellbook into your hand.
SVar:TrigConjure:AB$ MakeCard | Cost$ PayShards<2> | Conjure$ True | AtRandom$ True | Zone$ Hand | Spellbook$ Stoneforge Mystic,Danitha; Benalia's Hope,Ardenn; Intrepid Archaeologist,Open the Armory,Stone Haven Outfitter,Argentum Armor,Sword of the Animist,Masterwork of Ingenuity,Kaldra Compleat,Armored Skyhunter,Lion Sash,Relic Seeker,Esper Sentinel,Forgeborn Phoenix,Foundry Beetle,Inchblade Companion,Komainu Battle Armor,Luxior; Giada's Gift,Mace of Disruption,Nettlecyst,Shadowspear,Seraphic Greatsword,Soulstealer Axe,Sword of Body and Mind,Sword of Fire and Ice,Junkyard Scrapper,Soulstealer AxeSword of Feast and Famine,Expedition Supplier,Foundry Beetle,Armory Automaton,Bladegraft Aspirant,Dancing Sword,Jor Kadeen; First Goldwarden,Akiri; Fearless Voyager,Acclaimed Contender,Embercleave,Puresteel Paladin,Champion of the Flame,Tiana; Ship's Caretaker,Reyav; Master Smith,Sigarda's Aid,Armored Skyhunter,Bruenor Battlehammer,Halvar; God of Battle,Wyleth; Soul of Steel,Koll; the Forgemaster,Valduk; Keeper of the Flame,Fervent Champion,Cloudsteel Kirin,Leonin Shikari,Balan; Wandering Knight,Kor Duelist,Leonin Abunas,Zamriel; Seraph of Steel,Auriok Steelshaper SVar:TrigConjure:AB$ MakeCard | Cost$ PayShards<2> | Conjure$ True | AtRandom$ True | Zone$ Hand | Spellbook$
Stoneforge Mystic,Danitha; Benalia's Hope,Ardenn; Intrepid Archaeologist,Open the Armory,Stone Haven Outfitter,Argentum Armor,Sword of the Animist,Masterwork of Ingenuity,Kaldra Compleat,Armored Skyhunter,Lion Sash,Relic Seeker,Esper Sentinel,Forgeborn Phoenix,Foundry Beetle,Inchblade Companion,Komainu Battle Armor,Luxior; Giada's Gift,Mace of Disruption,Nettlecyst,Shadowspear,Seraphic Greatsword,Soulstealer Axe,Sword of Body and Mind,Sword of Fire and Ice,Junkyard Scrapper,Soulstealer Axe,Sword of Feast and Famine,Expedition Supplier,Foundry Beetle,Armory Automaton,Bladegraft Aspirant,Dancing Sword,Jor Kadeen; First Goldwarden,Akiri; Fearless Voyager,Acclaimed Contender,Embercleave,Puresteel Paladin,Champion of the Flame,Tiana; Ship's Caretaker,Reyav; Master Smith,Sigarda's Aid,Armored Skyhunter,Bruenor Battlehammer,Halvar; God of Battle,Wyleth; Soul of Steel,Koll; the Forgemaster,Valduk; Keeper of the Flame,Fervent Champion,Cloudsteel Kirin,Leonin Shikari,Balan; Wandering Knight,Kor Duelist,Leonin Abunas,Zamriel; Seraph of Steel,Auriok Steelshaper
Oracle:Equip costs you pay cost {1} less.\nWhenever a modified creature you control attacks, you may pay {M}{M}, if you do conjure a random card from Nahiri's Armory's Spellbook into your hand. Oracle:Equip costs you pay cost {1} less.\nWhenever a modified creature you control attacks, you may pay {M}{M}, if you do conjure a random card from Nahiri's Armory's Spellbook into your hand.

View File

@@ -4,7 +4,7 @@ Types:Enchantment
S:Mode$ ReduceCost | ValidCard$ Card | ValidSpell$ Activated.Equip | Activator$ You | Amount$ 1 | EffectZone$ Command | Description$ Equip costs you pay cost {1} less. S:Mode$ ReduceCost | ValidCard$ Card | ValidSpell$ Activated.Equip | Activator$ You | Amount$ 1 | EffectZone$ Command | Description$ Equip costs you pay cost {1} less.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Secondary$ True | Execute $ TrigConjure | TriggerDescription$ At the beginning of your upkeep or when an equipped creature you control attacks, conjure a card from Nahiri's Spellbook into your hand. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Secondary$ True | Execute $ TrigConjure | TriggerDescription$ At the beginning of your upkeep or when an equipped creature you control attacks, conjure a card from Nahiri's Spellbook into your hand.
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl+equipped | TriggerZones$ Command | Execute$ TrigConjure | TriggerDescription$ At the beginning of your upkeep or when an equipped creature you control attacks, conjure a card from Nahiri's Spellbook into your hand. T:Mode$ Attacks | ValidCard$ Creature.YouCtrl+equipped | TriggerZones$ Command | Execute$ TrigConjure | TriggerDescription$ At the beginning of your upkeep or when an equipped creature you control attacks, conjure a card from Nahiri's Spellbook into your hand.
SVar:TrigConjure:DB$ MakeCard | Zone$ Hand | Conjure$ True | AtRandom$ True | Spellbook$ Stoneforge Mystic,Danitha; Benalia's Hope,Ardenn, Intrepid Archaeologist,Open the Armory,Stone Haven Outfitter,Argentum Armor,Sword of the Animist,Masterwork of Ingenuity,Kaldra Compleat,Armored Skyhunter,Lion Sash,Relic Seeker,Esper Sentinel,Forgeborn Phoenix,Foundry Beetle,Inchblade Companion,Komainu Battle Armor,Luxior;Giada's Gift,Mace of Disruption,Nettlecyst,Shadowspear,Seraphic Greatsword,Soulstealer Axe,Sword of Body and Mind,Sword of Fire and Ice,Junkyard Scrapper,Soulstealer Axe,Sword of Feast and Famine,Expedition Supplier,Foundry Beetle,Armory Automaton,Bladegraft Aspirant,Dancing Sword,Jor Kadeen; First Goldwarden,Akiri; Fearless Voyager,Acclaimed Contender,Embercleave,Puresteel Paladin,Champion of the Flame,Tiana; Ship's Caretaker,Reyav; Master Smith,Sigarda's Aid,Armored Skyhunter,Bruenor Battlehammer,Halvar; God of Battle,Wyleth; Soul of Steel,Koll; the Forgemaster,Valduk; Keeper of the Flame,Fervent Champion,Cloudsteel Kirin,Leonin Shikari,Balan, Wandering Knight,Kor Duelist,Leonin Abunas,Zamriel, Seraph of Steel,Auriok Steelshaper SVar:TrigConjure:DB$ MakeCard | Zone$ Hand | Conjure$ True | AtRandom$ True | Spellbook$ Stoneforge Mystic,Danitha; Benalia's Hope,Ardenn, Intrepid Archaeologist,Open the Armory,Stone Haven Outfitter,Argentum Armor,Sword of the Animist,Masterwork of Ingenuity,Kaldra Compleat,Armored Skyhunter,Lion Sash,Relic Seeker,Esper Sentinel,Forgeborn Phoenix,Foundry Beetle,Inchblade Companion,Komainu Battle Armor,Luxior;Giada's Gift,Mace of Disruption,Nettlecyst,Shadowspear,Seraphic Greatsword,Soulstealer Axe,Sword of Body and Mind,Sword of Fire and Ice,Junkyard Scrapper,Soulstealer Axe,Sword of Feast and Famine,Expedition Supplier,Foundry Beetle,Armory Automaton,Bladegraft Aspirant,Dancing Sword,Jor Kadeen; First Goldwarden,Akiri; Fearless Voyager,Acclaimed Contender,Embercleave,Puresteel Paladin,Champion of the Flame,Tiana; Ship's Caretaker,Reyav; Master Smith,Sigarda's Aid,Armored Skyhunter,Bruenor Battlehammer,Halvar; God of Battle,Wyleth; Soul of Steel,Koll; the Forgemaster,Valduk; Keeper of the Flame,Fervent Champion,Cloudsteel Kirin,Leonin Shikari,Balan; Wandering Knight,Kor Duelist,Leonin Abunas,Zamriel;Seraph of Steel,Auriok Steelshaper
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ At the beginning of your end step, create a 1/1 white Kor Soldier creature token T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ At the beginning of your end step, create a 1/1 white Kor Soldier creature token
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_kor_soldier SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_kor_soldier
Oracle:Equip costs you pay cost {1} less.\nAt the beginning of your upkeep or whenever an equipped creature you control attacks, conjure a card from Nahiri's Spellbook into your hand\nAt the beginning of your end step, create a 1/1 white Kor Soldier creature token. Oracle:Equip costs you pay cost {1} less.\nAt the beginning of your upkeep or whenever an equipped creature you control attacks, conjure a card from Nahiri's Spellbook into your hand\nAt the beginning of your end step, create a 1/1 white Kor Soldier creature token.

View File

@@ -0,0 +1,29 @@
[metadata]
Name=challenger_20_allied_fires
[Main]
2 Banishing Light|SCD|1
3 Deafening Clarion|GRN|1
2 Drawn from Dreams|NCC|1
2 Fae of Wishes|ELD|1
4 Fires of Invention|ELD|1
4 Interplanar Beacon|WAR|1
5 Island|MID|1
3 Kasmina, Enigmatic Mentor|WAR|1
1 Kenrith, the Returned King|ELD|1
2 Mountain|MID|1
4 Narset, Parter of Veils|SLD|1
4 Omen of the Sea|J21|1
2 Plains|MID|1
2 Saheeli, Sublime Artificer|SLD|1
3 Sarkhan the Masterless|SLD|1
1 Steam Vents|GRN|1
3 Swiftwater Cliffs|NEO|1
1 Temple of Enlightenment|VOC|1
1 Temple of Epiphany|NCC|1
1 Temple of Triumph|NCC|1
2 Time Wipe|DMC|1
3 Tranquil Cove|NEO|1
1 Ugin, the Ineffable|WAR|1
4 Wind-Scarred Crag|NEO|1
[Sideboard]

View File

@@ -0,0 +1,18 @@
[metadata]
Name=challenger_20_cavalcade_charge
[Main]
4 Bonecrusher Giant|ELD|1
3 Castle Embereth|ELD|1
4 Cavalcade of Calamity|RNA|1
3 Chandra, Acolyte of Flame|M20|1
1 Embercleave|ELD|1
4 Fervent Champion|ELD|1
4 Light Up the Stage|PLIST|1
18 Mountain|ELD|1
4 Rimrock Knight|ELD|1
4 Runaway Steam-Kin|GRN|1
4 Scorch Spitter|M20|1
3 Tin Street Dodger|RNA|1
4 Torbran, Thane of Red Fell|ELD|1
[Sideboard]

View File

@@ -0,0 +1,24 @@
[metadata]
Name=challenger_20_final_adventure
[Main]
2 Blacklance Paragon|ELD|1
2 Castle Locthwain|ELD|1
2 Disfigure|BRO|1
4 Edgewall Innkeeper|ELD|1
1 Fabled Passage|ELD|1
2 Find // Finality|C20|1
7 Forest|ELD|1
4 Foulmire Knight|ELD|1
3 Jungle Hollow|IKO|1
2 Knight of the Ebon Legion|M20|1
4 Lovestruck Beast|ELD|1
4 Lucky Clover|ELD|1
2 Midnight Reaper|SLD|1
2 Murderous Rider|ELD|1
4 Order of Midnight|ELD|1
4 Smitten Swordmaster|ELD|1
8 Swamp|ELD|1
2 Temple of Malady|M21|1
1 Vraska, Golgari Queen|GRN|1
[Sideboard]

View File

@@ -0,0 +1,23 @@
[metadata]
Name=challenger_20_flash_of_ferocity
[Main]
1 Brazen Borrower|ELD|1
4 Brineborn Cutthroat|M20|1
2 Castle Vantress|ELD|1
1 Fabled Passage|ELD|1
8 Forest|M20|1
4 Frilled Mystic|RNA|1
8 Island|M20|1
4 Nightpack Ambusher|M20|1
4 Opt|ELD|1
4 Quench|RNA|1
2 Sinister Sabotage|SCD|1
4 Spectral Sailor|M20|1
2 Temple of Mystery|M20|1
2 Thassa's Intervention|THB|1
3 Thornwood Falls|M20|1
2 Unsummon|M20|1
1 Wavebreak Hippocamp|THB|1
4 Wildborn Preserver|ELD|1
[Sideboard]

View File

@@ -0,0 +1,26 @@
[metadata]
Name=Challenger_21_Azorius_Control
[Main]
2 Archon of Sun's Grace|J22|1
2 Banishing Light|KHC|1
2 Behold the Multiverse|KHM|1
1 Doomskar|KHM|1
2 Dream Trawler|THB|1
3 Elspeth Conquers Death|THB|1
1 Emeria's Call|ZNR|1
2 Glass Casket|J21|1
8 Island|KHM|1
1 Negate|STA|1
3 Neutralize|J21|1
4 Omen of the Sea|J21|1
8 Plains|KHM|1
1 Saw It Coming|KHM|1
1 Shark Typhoon|SLC|1
2 Shatter the Sky|THB|1
2 Skyclave Cleric|ZNR|1
4 Temple of Enlightenment|VOC|1
4 The Birth of Meletis|THB|1
3 Thirst for Meaning|THB|1
4 Tranquil Cove|KHC|1
[Sideboard]

View File

@@ -0,0 +1,22 @@
[metadata]
Name=Challenger_21_Dimir_Rogue
[Main]
2 Blackbloom Rogue|ZNR|1
2 Bloodchief's Thirst|ZNR|1
4 Dismal Backwater|MB1|1
4 Drown in the Loch|ELD|1
2 Eliminate|M21|1
2 Heartless Act|IKO|1
8 Island|ELD|1
1 Malakir Rebirth|ZNR|1
4 Merfolk Windrobber|ZNR|1
3 Nighthawk Scavenger|ZNR|1
1 Rankle, Master of Pranks|ELD|1
4 Soaring Thought-Thief|ZNR|1
9 Swamp|ELD|1
4 Temple of Deceit|THB|1
4 Thieves' Guild Enforcer|M21|1
3 Vantress Gargoyle|ELD|1
3 Zareth San, the Trickster|ZNR|1
[Sideboard]

View File

@@ -0,0 +1,22 @@
[metadata]
Name=challenger_21_mono-green_stompy
[Main]
19 Forest|ELD|1
1 Garruk, Unleashed|M21|1
2 Gemrazer|IKO|1
3 Kazandu Mammoth|ZNR|1
4 Lovestruck Beast|ELD|1
3 Primal Might|M21|1
4 Ram Through|IKO|1
2 Scavenging Ooze|NCC|1
2 Snakeskin Veil|KHM|1
2 Stonecoil Serpent|ELD|1
3 Swarm Shambler|ZNR|1
2 Syr Faren, the Hengehammer|ELD|1
3 Thrashing Brontodon|M21|1
2 Turntimber Symbiosis|ZNR|1
2 Wildborn Preserver|ELD|1
4 Wildwood Tracker|ELD|1
2 Yorvo, Lord of Garenbrig|ELD|1
[Sideboard]

View File

@@ -0,0 +1,19 @@
[metadata]
Name=challenger_21_mono-red_aggro
[Main]
4 Akoum Hellhound|ZNR|1
4 Anax, Hardened in the Forge|PLIST|1
4 Bonecrusher Giant|PLIST|1
2 Castle Embereth|NCC|1
1 Embercleave|ELD|1
4 Fervent Champion|ELD|1
4 Kargan Intimidator|ZNR|1
16 Mountain|ZNR|1
4 Rimrock Knight|ELD|1
4 Roil Eruption|ZNR|1
2 Shatterskull Smashing|ZNR|1
4 Shock|STA|1
4 Spikefield Hazard|ZNR|1
3 Torbran, Thane of Red Fell|ELD|1
[Sideboard]

View File

@@ -0,0 +1,27 @@
[metadata]
Name=AI 22 Dimir Control
[Main]
2 Baleful Mastery|STX|1
3 Blood on the Snow|KHM|1
3 Crippling Fear|CLB|1
2 Evolving Wilds|MID|1
2 Field of Ruin|MID|1
3 Graveyard Trespasser|MID|1
2 Hall of Storm Giants|AFR|1
2 Hero's Downfall|VOW|1
1 Hullbreaker Horror|VOW|1
4 Ice Tunnel|KHM|1
1 Infernal Grasp|DBL|1
2 Iymrith, Desert Doom|AFR|1
2 Jwari Disruption|ZNR|1
1 March of Wretched Sorrow|NEO|1
4 Memory Deluge|MID|1
2 Parasitic Grasp|VOW|1
3 Power Word Kill|GDY|1
3 Saw It Coming|KHM|1
4 Shipwreck Marsh|MID|1
5 Snow-Covered Island|J22|1
7 Snow-Covered Swamp|KHM|1
2 Thirst for Discovery|VOW|1
[Sideboard]

View File

@@ -0,0 +1,27 @@
[metadata]
Name=AI 22 Gruul Stompy
[Main]
4 Abrade|SCD|1
4 Briarbridge Tracker|DBL|1
4 Forest|MID|1
3 Forest|MID|2
3 Forest|MID|3
1 Goldspan Dragon|KHM|1
2 Halana and Alena, Partners|DBL|1
4 Jaspera Sentinel|KHM|1
2 Lair of the Hydra|AFR|1
1 Light Up the Night|DBL|1
4 Magda, Brazen Outlaw|KHM|1
4 Mountain|MID|1
2 Mountain|MID|2
2 Mountain|MID|3
4 Ranger Class|AFR|1
4 Rockfall Vale|DBL|1
4 Snakeskin Veil|KHM|1
1 Thundering Rebuke|ZNR|1
2 Tovolar's Huntmaster|DBL|1
1 Tovolar, Dire Overlord|DBL|1
2 Twinshot Sniper|NEO|1
2 Ulvenwald Oddity|DBL|1
[Sideboard]

View File

@@ -0,0 +1,20 @@
[metadata]
Name=AI 22 Mono White Aggro
[Main]
4 Clarion Spirit|KHM|1
4 Codespell Cleric|J21|1
3 Elite Spellbinder|SLC|1
3 Faceless Haven|PPRO|1
2 Fateful Absence|MID|1
1 Intrepid Adversary|DBL|1
2 Kabira Takedown|ZNR|1
4 Luminarch Aspirant|NCC|1
4 Monk of the Open Hand|AFR|1
3 Paladin Class|AFR|1
2 Reidane, God of the Worthy|KHM|1
2 Skyclave Apparition|ZNR|1
20 Snow-Covered Plains|KHM|1
2 Thalia, Guardian of Thraben|DKA|1
4 Usher of the Fallen|KHM|1
[Sideboard]

View File

@@ -0,0 +1,29 @@
[metadata]
Name=AI 22 Rakdos Vampires
[Main]
2 Blightstep Pathway|KHM|1
4 Bloodfell Caves|SCD|1
4 Bloodtithe Harvester|VOW|1
2 Den of the Bugbear|AFR|1
2 Dominating Vampire|DBL|1
2 Florian, Voldaren Scion|DBL|1
1 Henrika Domnathi|DBL|1
4 Immersturm Predator|KHM|1
2 Infernal Grasp|DBL|1
1 Mountain|VOW|1
2 Mountain|VOW|2
3 Mountain|VOW|4
2 Mukotai Soulripper|NEO|1
2 Oni-Cult Anvil|BRC|1
2 Sokenzan Smelter|NEO|1
5 Swamp|VOW|1
1 Swamp|VOW|2
1 Swamp|VOW|4
2 Vampire Socialite|MID|1
1 Village Rites|J22|1
4 Voldaren Bloodcaster|VOW|1
4 Voldaren Epicure|VOW|1
3 Voldaren Estate|DBL|1
4 Voltage Surge|NEO|1
[Sideboard]

View File

@@ -7,12 +7,12 @@
<tileset firstgid="10113" source="../tileset/buildings.tsx"/> <tileset firstgid="10113" source="../tileset/buildings.tsx"/>
<layer id="1" name="Background" width="30" height="17"> <layer id="1" name="Background" width="30" height="17">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJy9lb9OwzAQhw+J2kUQBiQegwHRgVeAp6mgLEwdgYmpa2f+SOQN8gDMwNhn4AUQd4p/snOxHUdFnPSpapK7z+ezkn1LdMBUzCFT/xNPzDPzwrwW5twYovs9ogfmjrk2472rCdFnhFxOLP7aG/4viW29OYa84bNL21KyZ+hPZjjkOVY1Ul59bnNe+RV36v6YfvW5TeUiX9dJcbLj895s33sxJbqcdr2xvUr5Uvfg1dfD+V6Zfr9yvoTG7ePCdPM3fP3H5Syq7nyxbtRcRvqNnStZ65o8X5O21ofyxuaa6zEk551bzznnn1beJV64hSMb3/d34/tduTWsKe/93u32DWqXK7Vmpn1+pt6NG1dnbr0LdWP9l8SZOg+Yp36fwofaj2oG8kxD5V4d4r2t/HwRtfJiz/X3bhtvGHCH/cAphN+7Mfs85A0DXsy5of4shF8B8frL eJy9lTtOxDAQhgeJtRdBKJA4BgViC64Ap1nB0lBtCVRU227NQyI3yAGogXLPwAUQM4p/2ZnYjqNFjPQriu2Zz/NQsm+JDlgV65BV/5OeWM+sF9Zroc+NIbrfI3pg3bGuzXjuakL0GVHOJ2Z/zQ3fS2xbbk5D3PDs0rYqqRnykx4OcY5VjBRXz22OK09hp/bH5KvnNuULfx0npZMd7/dm+9yLKdHltMuN1SrFS+2Bq9fD/l6Zfr4yX6LG1XFhuv4bXv9xPouq21/cGzGXkXxjcyV3XZPX16SN9aG4sb7mcgyV486t1zn7n1aeJVyw5fyRjdf93fh8V+4Oa8pzv3e7eUO185VYM9Oen6lv48bFmVvPQtxY/iV2puYB/dTfU/AQ+9H2Z7Khcq424d5Wvr+wWnFRc/2/24YbGthhPmCKwv/dmDoPcUMDF31uqN8L0S8+a/oe
</data> </data>
</layer> </layer>
<layer id="2" name="Ground" width="30" height="17"> <layer id="2" name="Ground" width="30" height="17">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJytlL9OwzAQxq8tidNMFMRaGACxABJi4BE6ULpXwFPACyAUmBgrAc8AiDdAwBqJAcTKDO+AuE+OZcdxwDE96VMT1+ffxfdnElGQXc0QLbWJFtvN/LYK3iSQe9HVamIvAdyjmOg4LjOVNlKizdT/LJO7mxA9WPcG1h6vX/O9Zl0tFxt68/yO7ViyIOQrM3xfI/n+lZSZ0+AuiPJ5PaH/mxVVns0e0HS4tp+Ljdjmhft7fev7Ly5sJyrrW8i843m/Q3TA6rNOW0QnrDtRPeM37lrqd0+oaewfJrLmoDHX3a3wY8JwX2Aj5sOOXMs45jPWeau6/z2S+5WQ30ERf8+TCUMfrVvnL3OOVlirjlzZXMQ7J6SaGLifls8j855YzzU10g9k2VzkRhnmri3T0O9jay3ERomu4/uafr0Rko+ZhV7Jix66/Adf1TNqc+SYS64ZlRu9CzZ6Cgrhmvog/aueTeXWzFD7fHuojmsybS7ec4cP+E24P6PWfGc= eJytlMsuBEEUhs9ceqqnV4bYYoHYIBELjzALzF7wFLyASLOynATPgHgDwbYTC2JrzTuI86e60tWnq011ZU7yp29V9Z0+t3FEQXbTJVpqEy22m+3bynnjQO5Vv1ATewvgnvSITntlptFGQrSZ+J9lc3djoicRN7D2+f0txzXtF3KxoQ/P/9juaRaEfKXW3vdIP//EZeY0uPOqfN5AFd9mVJUn2UOaDlfuc7Hh25xy/69vfU/iwnaisn6VzjvuDztER6wF1nmL6Iz1oKpn/MddS/zihJrG+r1Y1xx0wHV3r/yYMMQLbPh83NHvUvb5gnXZqq7/jPR6I+R3mPs/8GTC0Efr4vxlztEKa9WRK8mFv7NKq4mB+y32PDPvhfVaUyPwM4QluciNMcxdKdvQ7zI+ITaKizp+rOnXO6X5mFnolSzvoevu5PPrzNQzanPkmEuuGZVZvQs2egoK4dr6ouJq7m1lYmaYdb49VMe1mZKL58yxB/wm3D9fB3xE
</data> </data>
</layer> </layer>
<layer id="3" name="Clutter" width="30" height="17"> <layer id="3" name="Clutter" width="30" height="17">
@@ -20,7 +20,7 @@
<property name="spriteLayer" type="bool" value="true"/> <property name="spriteLayer" type="bool" value="true"/>
</properties> </properties>
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJxjYGBgKOdloBuooJNdn1hoZ3YVHj9MYCXOjIXM5NtDSXzZI4VLCdScSizmVdMxTcAANn89YyDNLcSqhakrGQB/4gOv2MnXixx+rESkL3R7saUDUsFiPPZSK6yxhZEjEfmdXmUPDFASl5SYQy170QEbN4SmZ31BbH7GVyajA0rSIS6/w8SfUWAmstmkhDE56RoAwkMY7Q== eJxjYGBgKOdloBuooJNdn1hoZ3YVHj9MYCXOjIXM5NtDSXzZI4VLCdScSizmVdMxTcAANn89YyDNLcSqhakrGQB/4gOv2MnXixx+rESkL3R7saUDUsFiPPZSK6yxhZEjEfmdXmUPDGBzpy4jdcwhRz05diMDNm4ITc/6gtj8jK9MRgeUpENcfoeJP6PATGSzSQljctI1AJToGUk=
</data> </data>
</layer> </layer>
<objectgroup id="4" name="Objects"> <objectgroup id="4" name="Objects">

View File

@@ -148,6 +148,9 @@
&quot;Bear&quot;, &quot;Bear&quot;,
&quot;Centaur&quot;, &quot;Centaur&quot;,
&quot;Centaur Warrior&quot;, &quot;Centaur Warrior&quot;,
&quot;Challenger 20&quot;,
&quot;Challenger 21&quot;,
&quot;Challenger 22&quot;,
&quot;Dino&quot;, &quot;Dino&quot;,
&quot;Eldraine Faerie&quot;, &quot;Eldraine Faerie&quot;,
&quot;Elf&quot;, &quot;Elf&quot;,

View File

@@ -131,6 +131,9 @@
&quot;enemyPool&quot;:[ &quot;enemyPool&quot;:[
&quot;Bird&quot;, &quot;Bird&quot;,
&quot;Challenger 20&quot;,
&quot;Challenger 21&quot;,
&quot;Challenger 22&quot;,
&quot;Djinn&quot;, &quot;Djinn&quot;,
&quot;Elemental&quot;, &quot;Elemental&quot;,
&quot;Merfolk&quot;, &quot;Merfolk&quot;,

View File

@@ -124,6 +124,10 @@
&quot;Axgard Dwarf&quot;, &quot;Axgard Dwarf&quot;,
&quot;Berserker&quot;, &quot;Berserker&quot;,
&quot;Boggart&quot;, &quot;Boggart&quot;,
&quot;Challenger 1&quot;,
&quot;Challenger 2&quot;,
&quot;Challenger 3&quot;,
&quot;Challenger 4&quot;,
&quot;Cyclops&quot;, &quot;Cyclops&quot;,
&quot;Devil&quot;, &quot;Devil&quot;,
&quot;Dinosaur&quot;, &quot;Dinosaur&quot;,

View File

@@ -132,6 +132,9 @@
&quot;Archer&quot;, &quot;Archer&quot;,
&quot;Cat&quot;, &quot;Cat&quot;,
&quot;Cathar&quot;, &quot;Cathar&quot;,
&quot;Challenger 20&quot;,
&quot;Challenger 21&quot;,
&quot;Challenger 22&quot;,
&quot;Cleric&quot;, &quot;Cleric&quot;,
&quot;Dawnhart Witch&quot;, &quot;Dawnhart Witch&quot;,
&quot;Eldraine Knight&quot;, &quot;Eldraine Knight&quot;,

View File

@@ -60,6 +60,9 @@
&quot;Black Wiz1&quot;, &quot;Black Wiz1&quot;,
&quot;Black Wiz2&quot;, &quot;Black Wiz2&quot;,
&quot;Black Wiz3&quot;, &quot;Black Wiz3&quot;,
&quot;Challenger 20&quot;,
&quot;Challenger 21&quot;,
&quot;Challenger 22&quot;,
&quot;Dark Knight&quot;, &quot;Dark Knight&quot;,
&quot;Death Knight&quot;, &quot;Death Knight&quot;,
&quot;Demon&quot;, &quot;Demon&quot;,

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="60" height="61" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="183"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="60" height="61" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="184">
<properties> <properties>
<property name="canFailDungeon" type="bool" value="true"/> <property name="canFailDungeon" type="bool" value="true"/>
<property name="dungeonEffect">{ <property name="dungeonEffect">{
@@ -708,7 +708,7 @@
<object id="41" template="../../obj/enemy.tx" x="736" y="508.33"> <object id="41" template="../../obj/enemy.tx" x="736" y="508.33">
<properties> <properties>
<property name="effect">{ <property name="effect">{
&quot;startBattleWithCardInCommandZone&quot;: [ &quot;Chandra, Supreme Pyromancer&quot; ] &quot;startBattleWithCardInCommandZone&quot;: [ &quot;Fire of Kaladesh&quot; ]
}</property> }</property>
<property name="enemy" value="Chandra"/> <property name="enemy" value="Chandra"/>
<property name="ignoreDungeonEffect" type="bool" value="false"/> <property name="ignoreDungeonEffect" type="bool" value="false"/>
@@ -832,8 +832,6 @@
&quot;startBattleWithCard&quot;: [ &quot;Lightning Coils&quot; ] &quot;startBattleWithCard&quot;: [ &quot;Lightning Coils&quot; ]
}</property> }</property>
<property name="enemy" value="Lightning Elemental"/> <property name="enemy" value="Lightning Elemental"/>
<property name="threatRange" type="int" value="40"/>
<property name="waypoints" value="98,wait2,99,100,wait2,99"/>
<property name="reward">[ <property name="reward">[
{ {
&quot;type&quot;: &quot;item&quot;, &quot;type&quot;: &quot;item&quot;,
@@ -843,6 +841,8 @@
} }
] ]
</property> </property>
<property name="threatRange" type="int" value="40"/>
<property name="waypoints" value="98,wait2,99,100,wait2,99"/>
</properties> </properties>
</object> </object>
<object id="49" template="../../obj/enemy.tx" x="509.333" y="510.83"> <object id="49" template="../../obj/enemy.tx" x="509.333" y="510.83">
@@ -1511,6 +1511,26 @@
</properties> </properties>
</object> </object>
<object id="181" template="../../obj/treasure.tx" x="535.273" y="131.45"/> <object id="181" template="../../obj/treasure.tx" x="535.273" y="131.45"/>
<object id="183" template="../../obj/enemy.tx" x="67" y="940.5">
<properties>
<property name="effect">{
&quot;startBattleWithCardInCommandZone&quot;: [ &quot;Chandra, Supreme Pyromancer&quot; ]
}</property>
<property name="enemy" value="Chandra"/>
<property name="ignoreDungeonEffect" type="bool" value="false"/>
<property name="reward">[
{
&quot;type&quot;: &quot;item&quot;,
&quot;probability&quot;: 0.01,
&quot;count&quot;: 1,
&quot;itemName&quot;: &quot;Phoenix Charm&quot;
}
]
</property>
<property name="spawn.Easy" type="bool" value="false"/>
<property name="spawn.Normal" type="bool" value="true"/>
</properties>
</object>
</objectgroup> </objectgroup>
<objectgroup id="7" name="Waypoints"> <objectgroup id="7" name="Waypoints">
<object id="74" template="../../obj/waypoint.tx" x="501.5" y="770.5"/> <object id="74" template="../../obj/waypoint.tx" x="501.5" y="770.5"/>

View File

@@ -0,0 +1,328 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="60" height="61" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="225">
<properties>
<property name="canFailDungeon" type="bool" value="true"/>
<property name="dungeonEffect">{
&quot;startBattleWithCard&quot;: [ &quot;Hall of Flame&quot; ],
}</property>
<property name="respawnEnemies" type="bool" value="true"/>
</properties>
<tileset firstgid="1" source="../../tileset/main.tsx"/>
<tileset firstgid="10113" source="../../tileset/buildings.tsx"/>
<tileset firstgid="11905" source="../../tileset/buildings-nocollide.tsx"/>
<layer id="1" name="Tile Layer 1" width="60" height="61">
<data encoding="csv">
4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,
4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,
4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,
4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,4107,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,240,240,240,240,240,240,240,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,240,240,240,240,240,240,240,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,240,240,240,240,240,240,240,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,1352,1352,1824,240,1823,1826,1826,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,1984,1984,1985,240,1983,1984,1984,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,1984,1984,1985,240,1983,1984,1984,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,1984,1984,1985,240,1983,1984,1984,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,1984,1984,1985,240,1983,1984,1984,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2142,2142,1982,240,1981,2142,2142,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,240,240,240,240,240,240,240,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,240,240,240,240,240,240,240,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,6488,6489,6489,6489,6489,6490,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,6646,6647,6647,6647,6647,6648,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,6646,6647,6647,6647,6647,6648,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,6646,6647,6647,6647,6647,6648,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,6646,6647,6647,6647,6647,6648,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,6804,6805,6805,6805,6805,6806,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,
2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904,2904
</data>
</layer>
<layer id="3" name="Tile Layer 2" width="60" height="61">
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2946,2946,2946,2946,2946,2946,2946,2946,2471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2946,2946,2946,2946,2946,2946,2946,2946,2471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2314,2315,2946,2946,2946,2946,2313,2314,3105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,2473,2946,2946,2946,2946,2471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,3103,2315,2946,2946,2313,3105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,2945,2946,2946,2471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,3103,2315,2313,3105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,2945,2947,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,3103,3105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4355,4355,4355,4355,4355,4355,4355,4037,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,4194,4195,0,6014,5857,5857,6015,6014,5857,5857,6015,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,4194,4195,0,5700,5387,0,0,0,0,5544,5698,0,0,0,0,0,0,605,448,448,607,0,605,606,606,607,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4355,4355,4355,4355,4355,4355,4356,4194,4194,4194,4194,4194,4194,4038,4353,0,5700,7756,0,0,0,0,5544,5698,0,0,0,605,607,0,291,764,764,289,0,291,764,764,765,0,605,607,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,3568,4194,4194,4194,4194,4194,4194,4196,0,0,5700,5387,0,0,0,0,5544,5698,0,0,0,921,1074,606,449,764,764,447,606,449,764,764,447,606,1078,923,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,3568,4194,4194,4194,4194,4194,4038,4353,0,0,5700,5230,0,0,0,0,5544,5698,0,0,0,0,291,764,764,764,764,764,764,764,764,764,764,764,765,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,3568,4194,4194,4194,4194,4194,4195,0,0,0,5700,7755,0,5869,0,0,0,5698,0,0,0,0,291,764,764,764,764,764,764,764,764,764,764,764,765,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,3568,3568,4194,4194,4194,4038,4353,0,0,0,5700,0,0,0,0,0,0,5698,0,0,0,0,291,764,764,764,764,764,764,764,764,764,764,764,765,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,4194,4194,4194,4194,4194,4196,0,0,0,0,6172,5541,5541,5541,5541,5541,5541,6173,0,0,0,0,763,764,764,764,764,764,764,764,764,764,764,764,765,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,4194,4194,4194,4194,4194,4196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,921,922,132,132,132,132,132,132,132,132,132,132,923,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4351,4040,4194,4194,4194,4194,4194,4194,4194,4194,4194,4194,4196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,4194,4194,4194,4194,4196,1208,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1051,1210,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4351,4039,4040,4194,4194,4194,4194,4194,4194,4194,4038,4353,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4351,4039,4040,4194,4038,4039,4039,4039,4353,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4351,4352,4353,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
3057,3057,3057,3057,2739,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
2422,2422,2422,2422,2897,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
2422,2422,2422,2422,3056,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,3454,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
2422,2422,2422,2422,2422,2897,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
2741,0,3054,2742,2422,2897,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1523,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3454,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,2900,2422,2897,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,2900,2422,2897,0,0,0,4035,4036,4036,4036,4036,4036,4037,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,2900,2422,2897,0,0,0,4193,4194,4194,4194,4194,4194,4195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,3058,2422,2897,0,0,0,4193,4194,4194,4038,4039,4040,4195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,2900,2422,2422,2897,0,0,4035,4356,4194,4038,4353,0,4198,4195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,2900,2422,2422,2897,0,0,4193,4194,4194,4196,0,0,4198,4195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,2742,2422,2897,0,4035,4356,4194,4038,4353,0,0,4198,4195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5701,0,0,0,0,0,0,0,0,1365,
0,0,0,2895,2422,2897,0,4193,3882,4194,4195,0,0,0,4198,4195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,2895,2422,2897,0,4351,4040,4194,4195,0,0,0,4198,4195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,2895,2422,2897,0,0,4193,4194,4195,4035,4037,0,4198,4195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,2895,2422,2897,0,0,4193,4194,4354,4356,4354,4355,4356,4195,0,0,2271,2272,2273,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,2895,2422,2897,0,0,4351,4040,4194,4194,4194,4194,4038,4353,0,0,2429,2430,2431,0,0,2271,2272,2273,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,2895,2422,2897,0,0,0,0,4040,4194,4194,4038,4353,0,0,0,2587,2588,2589,0,0,2429,2430,2431,0,0,0,0,0,0,0,5701,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1365,
0,0,0,3053,3054,3055,0,0,0,0,4351,4352,4352,4353,0,0,0,4034,0,0,0,0,0,2587,2588,2589,0,0,0,0,0,1051,1051,1051,1051,1051,1051,1051,1051,1052,0,0,0,1050,1051,1051,1051,1051,1051,1051,1051,1051,1052,0,1050,1051,1051,1051,1051,1526,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4355,4355,4355,4355,4355,4355,4355,4037,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4194,4194,4195,0,0,0,0,0,0,0,0,0,2271,2272,2273,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,4035,4036,4036,4036,4036,4037,0,0,0,0,0,4034,0,2271,2272,2273,4193,4194,4194,4194,4194,4194,4194,4194,4195,0,0,0,0,0,0,0,0,0,2429,2430,2431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,4198,4194,4194,4194,4194,4354,0,0,0,0,0,0,0,2429,2430,2431,4193,4194,4194,4194,4194,4194,4194,4038,4353,0,0,0,0,0,0,0,0,0,2587,2588,2589,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,4198,4194,4194,4194,4194,4194,4354,4036,4037,0,0,0,0,2587,2588,2589,4193,4194,4194,4194,4194,4194,4194,4196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2271,2272,2273,0,0,0,
0,0,0,4351,4040,4194,4194,4194,4194,4194,4194,4195,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4038,4353,0,0,2271,2272,2273,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2429,2430,2431,0,0,0,
0,0,0,0,4351,4040,4194,4194,4194,4194,4194,4195,0,0,0,0,0,0,0,4193,4194,4194,4194,4194,4194,4195,0,0,0,2429,2430,2431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2587,2588,2589,0,0,0,
0,0,0,0,0,4351,4039,4039,4039,4039,4039,4353,0,2271,2272,2273,0,0,0,4351,4040,4194,4194,4194,4038,4353,0,0,0,2587,2588,2589,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,2429,2430,2431,0,0,0,0,4193,4194,4194,4038,4353,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,2587,2588,2589,0,0,0,0,4351,4039,4039,4353,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<layer id="4" name="Tile Layer 3" width="60" height="61">
<data encoding="csv">
2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,
2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,
2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,
2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,2374,
0,0,0,0,0,0,0,0,1365,0,0,0,0,0,0,0,0,532,0,12625,12626,0,0,0,0,0,0,12625,12626,0,534,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3654,3811,3809,3812,3809,3811,3653,3176,3176,3652,0,
0,0,0,12515,12516,0,0,0,1365,0,0,0,0,0,0,0,0,532,0,12653,12654,0,0,0,0,0,0,12653,12654,0,534,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3652,0,3969,3970,3971,0,3650,3176,3176,3652,0,
1051,1210,0,12543,12544,0,1208,1051,1526,0,0,0,0,0,0,0,0,690,691,691,691,691,691,691,691,691,691,691,691,691,692,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3652,0,4285,4133,4287,0,3650,3176,3176,3652,0,
0,1365,12428,0,0,12428,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3652,0,0,4130,0,0,3650,3176,3176,3652,0,
0,1524,1210,0,0,1208,1526,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3652,0,0,4130,0,0,3650,3176,3176,3652,0,
0,0,1365,0,0,1365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3652,0,0,4130,0,0,3650,3176,3176,3652,0,
0,0,1523,0,0,1523,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3652,0,0,4130,0,0,3650,3176,3176,3652,0,
0,0,12428,0,0,12428,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3652,0,0,4130,0,0,3650,3176,3176,3652,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3652,0,0,4288,0,0,3650,3176,3176,3652,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3652,0,0,12436,0,0,3650,3176,3176,3652,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3650,3176,3176,3496,3493,3493,3493,3493,3493,3495,3176,3176,3652,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10493,10494,0,0,0,0,0,0,0,0,0,0,3808,3809,3809,3812,3809,3809,3812,3809,3809,3812,3809,3809,3810,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10493,10494,0,0,0,2345,0,2345,0,0,0,2345,0,2345,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2345,0,2345,0,0,0,2345,0,2345,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2345,0,2345,0,2345,0,2345,0,2345,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2345,0,2345,0,2345,0,2345,0,2345,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2345,0,2345,0,2345,0,2345,0,2345,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2345,0,2345,0,2345,0,2345,0,2345,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2345,0,0,0,2345,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3313,3309,3314,3315,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3474,3467,3475,3476,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3925,3927,0,0,0,0,0,11557,0,0,0,11557,0,0,3471,3467,3470,3631,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12625,12626,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3924,0,0,0,0,0,4241,4243,0,0,0,0,0,11585,0,0,0,11585,0,3307,3629,3630,3631,0,
0,0,0,0,0,0,10491,10492,0,0,0,0,0,0,0,0,0,12653,12654,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10825,11585,10825,10825,9066,0,0,0,0,0,0,0,0,11529,0,0,0,0,0,0,0,0,
375,375,375,375,376,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10825,10825,10881,10881,10825,0,10825,0,0,0,10825,0,0,0,0,0,0,0,0,0,0,0,0,3307,0,0,0,0,
0,0,0,0,534,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10825,0,0,0,10825,0,9066,0,0,0,11613,10825,10825,10304,10305,10306,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,694,376,0,0,0,0,0,0,0,12625,12626,0,0,0,0,0,0,0,0,0,0,0,0,10591,10592,0,0,0,10825,0,0,0,11557,10825,10825,10825,0,0,11557,0,10825,10332,10333,10334,0,0,0,0,0,3308,3309,3309,3309,3309,3314,3315,
0,0,0,0,0,534,0,0,0,0,0,0,0,12653,12654,0,0,0,0,0,0,0,0,0,0,0,0,10619,10620,0,0,0,10825,0,10825,0,0,0,0,0,0,0,10825,0,10881,0,0,0,0,10825,10881,0,3308,3309,3467,3467,3467,3467,3475,3476,
853,0,852,537,533,534,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8908,0,0,0,1383,0,0,0,0,0,0,0,3307,0,0,9067,10825,10825,10825,0,9066,0,0,0,0,0,0,0,3466,3467,3470,3625,3466,3467,3470,3631,
0,0,0,532,0,534,0,0,0,0,0,0,0,0,0,0,0,0,1227,1069,1069,1069,1069,1069,1069,1069,1069,1069,1226,1069,1069,1070,0,0,0,0,10825,10825,0,10825,0,0,0,0,10825,0,0,0,10881,0,0,3308,3623,3464,3626,0,3629,3630,3631,0,
0,0,9065,532,0,534,0,0,0,0,0,0,0,0,0,0,0,0,1383,0,0,0,0,0,0,0,0,0,0,0,0,10825,10825,10825,0,0,9067,10825,0,11557,0,10941,10942,0,10825,0,0,11557,0,0,10825,3466,3467,3468,0,0,0,0,0,0,
0,0,0,532,0,534,0,0,0,0,0,0,0,0,0,0,0,0,1383,0,3925,3926,3927,0,0,0,3925,3926,3927,0,0,10825,9066,10825,0,0,9065,9066,0,10882,0,10969,10970,0,10881,0,0,10826,0,0,10825,3624,3625,3626,10703,10704,0,3306,0,0,
0,0,374,695,0,534,0,0,0,0,0,0,0,0,0,0,0,0,1383,0,4083,4084,4085,0,0,0,4083,4084,4085,0,0,0,0,0,0,0,10825,10825,0,10825,0,0,0,0,10825,0,0,0,0,0,10853,3313,3315,0,10731,10732,0,0,0,0,
0,0,532,0,0,534,0,0,0,0,0,0,5701,0,0,0,1227,1069,1386,0,4241,4242,4243,0,0,0,4241,4242,4243,0,0,10825,10825,11585,0,0,0,0,0,10853,11613,0,0,10825,10854,0,0,10825,10825,10882,10825,3466,3312,3310,0,0,0,0,3307,0,
0,0,532,0,0,534,0,0,0,0,0,0,0,0,0,0,1383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10825,0,0,0,0,0,0,0,0,0,0,0,10881,10825,0,0,3629,3465,3473,0,0,0,0,0,0,
0,0,690,537,0,534,0,0,0,8693,0,0,0,0,0,0,1383,0,0,0,0,0,0,3925,3926,3927,0,0,0,0,3933,3934,3935,10881,10882,10826,0,0,0,10853,3924,10825,10826,0,0,0,10854,0,10825,0,0,3313,3623,3473,0,0,0,1232,3307,0,
0,0,9065,532,0,534,0,0,0,0,0,4743,4744,0,1711,1713,1540,0,0,0,0,0,0,4083,4084,4085,0,0,0,0,4091,4092,4093,11613,0,0,0,0,10825,10882,0,0,0,0,0,0,10825,9065,0,0,0,3629,3630,3626,10825,10825,10825,1390,0,0,
0,0,0,532,0,534,0,0,0,0,0,4901,4902,0,0,0,1383,0,0,3925,3926,3927,0,4241,4242,4243,0,0,0,0,4249,4250,4251,0,11529,0,0,0,10825,10826,0,0,0,10825,11585,0,0,0,0,0,0,10853,10825,10825,0,0,0,1390,0,0,
0,0,0,532,0,534,0,0,0,0,0,0,0,0,0,0,1383,0,0,4083,4084,4085,0,0,0,0,0,0,0,0,0,0,0,10825,0,11585,10825,0,0,0,0,0,0,0,0,0,10825,10881,10825,0,10826,0,10825,0,10825,10881,0,1390,0,0,
0,0,0,532,0,534,0,0,0,0,0,0,0,0,0,0,1383,0,0,4241,4242,4243,0,0,0,0,0,0,0,0,1523,0,0,0,0,0,10825,0,9067,10825,10826,1232,0,10825,0,0,10825,0,0,0,0,0,10881,1233,1076,1076,1076,1551,10854,0,
0,0,0,532,0,534,0,0,0,0,0,5547,0,8695,0,0,1383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11557,0,10825,0,0,1390,0,10881,10882,0,10826,9065,9065,10826,10825,10825,3307,1390,0,0,0,0,0,0,
0,0,0,532,533,534,0,0,0,0,0,5547,5547,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1207,0,0,0,0,0,0,11557,10825,10826,0,1390,0,0,10825,10854,10853,0,0,0,0,0,0,1390,0,11557,11585,11557,0,0,
0,0,0,690,691,692,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1524,3925,3926,3926,3927,0,0,0,0,0,10608,1390,10608,0,0,0,0,0,0,0,0,0,0,1390,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4083,4081,4082,4085,0,0,0,0,0,0,1390,0,3308,3309,3310,0,0,0,0,0,0,0,1390,0,0,0,0,0,3308,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4083,4239,4240,4085,0,0,0,0,0,0,1390,0,3466,3467,3468,0,3308,3309,3310,1233,1076,1076,1551,0,0,0,0,3313,3311,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9071,0,0,0,0,0,0,4241,4087,4242,4243,0,0,0,0,0,0,1390,0,3624,3625,3626,0,3466,3467,3468,1390,0,0,3316,3317,3317,3309,3309,3311,3467,
0,0,0,0,0,9333,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5547,0,0,0,0,0,0,0,0,0,4247,4248,0,0,0,0,0,0,0,0,1390,0,0,0,0,0,3624,3625,3626,1390,0,0,3629,3465,3475,3475,3475,3475,3475,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3930,3934,3928,4090,0,0,0,0,0,0,0,0,0,1390,0,3306,0,0,0,0,0,0,1390,3313,3315,0,3629,3633,3465,3475,3475,3475,
0,0,0,0,0,0,0,9333,9484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5549,0,0,3925,4240,4089,4081,4248,0,0,0,1233,1076,1076,1076,1076,1076,1550,1076,1076,1076,1076,1076,1076,1076,1076,1393,3629,3628,3317,3315,0,3474,3475,3475,3475,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5547,0,0,0,3925,4240,4084,4087,4248,0,0,0,0,1390,0,3308,3309,3310,0,0,3308,3309,3310,0,0,0,0,0,1549,1235,3629,3630,3628,3317,3623,3475,3475,3475,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4083,4084,4084,4085,0,0,0,0,0,1390,0,3466,3467,3468,0,0,3466,3467,3468,0,0,0,0,0,3306,1390,0,0,3471,3475,3475,3475,3475,3470,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4083,4084,4084,4085,0,0,0,0,0,1390,0,3624,3625,3626,0,0,3624,3625,3626,0,0,3313,3314,3314,3315,1390,0,0,3632,3633,3630,3630,3633,3634,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3930,4240,4084,4084,4085,0,0,134,3122,2652,3282,2652,3123,134,0,0,0,0,0,0,0,0,3471,3467,3467,3473,1549,1076,1076,1076,1076,1077,0,3313,3314,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4083,4084,4084,4084,4085,0,0,3122,3126,2810,2810,2810,3127,3123,0,0,0,0,0,0,0,0,3471,3467,3467,3312,3314,3314,3314,3314,3314,3314,3314,3311,3475
</data>
</layer>
<layer id="5" name="Tile Layer 4" width="60" height="61">
<properties>
<property name="spriteLayer" type="bool" value="true"/>
</properties>
<data encoding="csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12436,0,0,0,12436,0,0,0,12436,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12436,0,0,0,12436,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12395,0,0,12401,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12428,12378,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
</layer>
<objectgroup id="2" name="Objects">
<object id="2" template="../../obj/collision.tx" x="-14.5" y="49.8031" width="16" height="948.864"/>
<object id="3" template="../../obj/collision.tx" x="-15.75" y="976.75" width="992.5" height="16"/>
<object id="4" template="../../obj/collision.tx" x="960.072" y="49.1212" width="16" height="943.083"/>
<object id="5" template="../../obj/collision.tx" x="-16.2955" y="48.5227" width="992.5" height="16"/>
<object id="183" template="../../obj/entry_up.tx" x="508" y="977" width="119.75" height="16"/>
<object id="185" template="../../obj/manashards.tx" x="879" y="608.25"/>
<object id="186" template="../../obj/gold.tx" x="928" y="606.5"/>
<object id="187" template="../../obj/enemy.tx" x="912.409" y="693"/>
<object id="188" template="../../obj/enemy.tx" x="799.182" y="848.227"/>
<object id="189" template="../../obj/treasure.tx" x="752" y="753"/>
<object id="190" template="../../obj/treasure.tx" x="624" y="513.333"/>
<object id="191" template="../../obj/treasure.tx" x="928.667" y="489"/>
<object id="192" template="../../obj/enemy.tx" x="481" y="768.333"/>
<object id="193" template="../../obj/enemy.tx" x="542.667" y="753.333"/>
<object id="194" template="../../obj/treasure.tx" x="543.667" y="738"/>
<object id="195" template="../../obj/enemy.tx" x="609" y="560"/>
<object id="196" template="../../obj/enemy.tx" x="648" y="542.5"/>
<object id="197" template="../../obj/enemy.tx" x="656" y="738.5"/>
<object id="198" template="../../obj/enemy.tx" x="878.5" y="896"/>
<object id="199" template="../../obj/enemy.tx" x="177.25" y="701"/>
<object id="200" template="../../obj/enemy.tx" x="183.75" y="717.25"/>
<object id="201" template="../../obj/enemy.tx" x="192.5" y="702.75"/>
<object id="202" template="../../obj/treasure.tx" x="207.795" y="656.136"/>
<object id="203" template="../../obj/scroll.tx" x="54.3333" y="663">
<properties>
<property name="reward" value="[ { &quot;type&quot;: &quot;card&quot;, &quot;cardName&quot;: &quot;Liliana's Defeat&quot;, &quot;count&quot;: 1 } ]"/>
</properties>
</object>
<object id="204" template="../../obj/manashards.tx" x="47.6667" y="527.667"/>
<object id="205" template="../../obj/treasure.tx" x="376.333" y="117.667"/>
<object id="206" template="../../obj/treasure.tx" x="56.5" y="80"/>
<object id="207" template="../../obj/treasure.tx" x="31.75" y="80"/>
<object id="208" template="../../obj/treasure.tx" x="83" y="80"/>
<object id="209" template="../../obj/enemy.tx" x="56.25" y="104.75"/>
<object id="210" template="../../obj/enemy.tx" x="55.25" y="195.25"/>
<object id="211" template="../../obj/enemy.tx" x="72.75" y="495.75"/>
<object id="212" template="../../obj/enemy.tx" x="138" y="495.5"/>
<object id="213" template="../../obj/enemy.tx" x="600.545" y="301.864"/>
<object id="214" template="../../obj/enemy.tx" x="593.273" y="355.091"/>
<object id="215" template="../../obj/enemy.tx" x="214.5" y="548.5"/>
<object id="216" template="../../obj/enemy.tx" x="279.75" y="481.5"/>
<object id="217" template="../../obj/enemy.tx" x="831.75" y="95.75"/>
<object id="218" template="../../obj/enemy.tx" x="767.75" y="382.75"/>
<object id="219" template="../../obj/enemy.tx" x="831.75" y="383.25"/>
<object id="220" template="../../obj/enemy.tx" x="896.5" y="383.5"/>
<object id="221" template="../../obj/enemy.tx" x="800" y="399.5"/>
<object id="222" template="../../obj/enemy.tx" x="864" y="399.5"/>
<object id="223" template="../../obj/enemy.tx" x="832" y="164.5"/>
<object id="224" template="../../obj/enemy.tx" x="831.75" y="190.25"/>
</objectgroup>
<objectgroup id="7" name="Waypoints"/>
</map>

View File

@@ -0,0 +1,68 @@
chandra.png
size: 64,96
format: RGBA8888
filter: Nearest,Nearest
repeat: none
Avatar
xy: 0, 0
size: 16, 16
Idle
xy: 0, 16
size: 16, 16
Idle
xy: 16, 16
size: 16, 16
Idle
xy: 32, 16
size: 16, 16
Idle
xy: 48, 16
size: 16, 16
Walk
xy: 0, 32
size: 16, 16
Walk
xy: 16, 32
size: 16, 16
Walk
xy: 32, 32
size: 16, 16
Walk
xy: 48, 32
size: 16, 16
Attack
xy: 0, 48
size: 16, 16
Attack
xy: 16, 48
size: 16, 16
Attack
xy: 32, 48
size: 16, 16
Attack
xy: 48, 48
size: 16, 16
Hit
xy: 0, 64
size: 16, 16
Hit
xy: 16, 64
size: 16, 16
Hit
xy: 32, 64
size: 16, 16
Hit
xy: 48, 64
size: 16, 16
Death
xy: 0, 80
size: 16, 16
Death
xy: 16, 80
size: 16, 16
Death
xy: 32, 80
size: 16, 16
Death
xy: 48, 80
size: 16, 16

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -352,25 +352,26 @@ WhiteStaff
xy: 352,160 xy: 352,160
size: 16, 16 size: 16, 16
GarrukAxe GarrukAxe
xy: 303,273 xy: 304,272
size: 19, 15 size: 16, 16
BlueRobes BlueRobes
xy: 272,63 xy: 272,64
size: 16, 18 size: 16, 16
Armory Armory
xy: 129,512 xy: 128,512
size: 14, 17 size: 16, 16
HorseHoove HorseHoove
xy: 80,496 xy: 80,496
size: 17, 16 size: 16, 16
PirateFlag PirateFlag
xy: 0,495 xy: 0,496
size: 18, 17 size: 16, 16
Scythe Scythe
xy: 288,977 xy: 288,976
size: 18, 14 size: 16, 16
ChickenEgg ChickenEgg
xy: 306,800 xy: 304,800
size: 13, 15 size: 16, 16
ChallengeCoin
xy: 32,512
size: 16, 16

View File

@@ -40,6 +40,9 @@
"Black Wiz1", "Black Wiz1",
"Black Wiz2", "Black Wiz2",
"Black Wiz3", "Black Wiz3",
"Challenger 20",
"Challenger 21",
"Challenger 22",
"Dark Knight", "Dark Knight",
"Death Knight", "Death Knight",
"Demon", "Demon",

View File

@@ -30,6 +30,9 @@
"enemies": [ "enemies": [
"Aether Channeler", "Aether Channeler",
"Bird", "Bird",
"Challenger 20",
"Challenger 21",
"Challenger 22",
"Djinn", "Djinn",
"Elemental", "Elemental",
"Frost Titan", "Frost Titan",

View File

@@ -1603,9 +1603,258 @@
], ],
"colors": "GW" "colors": "GW"
}, },
{
"name": "Challenger 20",
"nameOverride": "Challenger",
"sprite": "sprites/doppelganger.atlas",
"deck": [
"decks/challenger_20_allied_fires.dck",
"decks/challenger_20_cavalcade_charge.dck",
"decks/challenger_20_final_adventure.dck",
"decks/challenger_20_flash_of_ferocity.dck"
],
"randomizeDeck": true
"spawnRate": 0.25,
"difficulty": 0.25,
"speed": 28,
"life": 22,
"rewards": [
{
"type": "deckCard",
"probability": 1,
"count": 2,
"addMaxCount": 4,
"rarity": [
"common"
]
},
{
"type": "deckCard",
"probability": 0.5,
"count": 1,
"addMaxCount": 2,
"rarity": [
"uncommon"
],
"cardTypes": [
"Creature",
"Artifact",
"Enchantment",
"Instant",
"Sorcery"
]
},
{
"type": "deckCard",
"probability": 0.25,
"count": 1,
"addMaxCount": 1,
"rarity": [
"rare"
],
"cardTypes": [
"Creature",
"Artifact",
"Enchantment",
"Instant",
"Sorcery"
]
},
{
"type": "deckCard",
"probability": 0.1,
"count": 1,
"rarity": [
"rare"
],
"cardTypes": [
"Land"
]
},
{
"type": "gold",
"probability": 0.3,
"count": 210,
"addMaxCount": 90
},
{
"type": "item",
"probability": 1,
"count": 1,
"itemName": "Challenge Coin"
}
],
"colors": "UBRWG"
},
{
"name": "Challenger 21",
"nameOverride": "Challenger",
"sprite": "sprites/doppelganger.atlas",
"deck": [
"decks/challenger_21_azorius_control.dck",
"decks/challenger_21_dimir_rogue.dck",
"decks/challenger_21_mono-green_stompy.dck",
"decks/challenger_21_mono-red_aggro.dck"
],
"randomizeDeck": true
"spawnRate": 0.25,
"difficulty": 0.25,
"speed": 28,
"life": 22,
"rewards": [
{
"type": "deckCard",
"probability": 1,
"count": 2,
"addMaxCount": 4,
"rarity": [
"common"
]
},
{
"type": "deckCard",
"probability": 0.5,
"count": 1,
"addMaxCount": 2,
"rarity": [
"uncommon"
],
"cardTypes": [
"Creature",
"Artifact",
"Enchantment",
"Instant",
"Sorcery"
]
},
{
"type": "deckCard",
"probability": 0.25,
"count": 1,
"addMaxCount": 1,
"rarity": [
"rare"
],
"cardTypes": [
"Creature",
"Artifact",
"Enchantment",
"Instant",
"Sorcery"
]
},
{
"type": "deckCard",
"probability": 0.1,
"count": 1,
"rarity": [
"rare"
],
"cardTypes": [
"Land"
]
},
{
"type": "gold",
"probability": 0.3,
"count": 210,
"addMaxCount": 90
},
{
"type": "item",
"probability": 1,
"count": 1,
"itemName": "Challenge Coin"
}
],
"colors": "UBRWG"
},
{
"name": "Challenger 22",
"nameOverride": "Challenger",
"sprite": "sprites/doppelganger.atlas",
"deck": [
"decks/challenger_22_dimir_control.dck",
"decks/challenger_22_gruul_stompy.dck",
"decks/challenger_22_mono_white_aggro.dck",
"decks/challenger_22_rakdos_vampires.dck"
],
"randomizeDeck": true
"spawnRate": 0.25,
"difficulty": 0.25,
"speed": 28,
"life": 22,
"rewards": [
{
"type": "deckCard",
"probability": 1,
"count": 2,
"addMaxCount": 4,
"rarity": [
"common"
]
},
{
"type": "deckCard",
"probability": 0.5,
"count": 1,
"addMaxCount": 2,
"rarity": [
"uncommon"
],
"cardTypes": [
"Creature",
"Artifact",
"Enchantment",
"Instant",
"Sorcery"
]
},
{
"type": "deckCard",
"probability": 0.25,
"count": 1,
"addMaxCount": 1,
"rarity": [
"rare"
],
"cardTypes": [
"Creature",
"Artifact",
"Enchantment",
"Instant",
"Sorcery"
]
},
{
"type": "deckCard",
"probability": 0.1,
"count": 1,
"rarity": [
"rare"
],
"cardTypes": [
"Land"
]
},
{
"type": "gold",
"probability": 0.3,
"count": 210,
"addMaxCount": 90
},
{
"type": "item",
"probability": 1,
"count": 1,
"itemName": "Challenge Coin"
}
],
"colors": "UBRWG"
},
{ {
"name": "Chandra", "name": "Chandra",
"sprite": "sprites/red_wiz2.atlas", "sprite": "sprites/boss/chandra.atlas",
"deck": [ "deck": [
"decks/miniboss/Fire of Kaladesh.dck" "decks/miniboss/Fire of Kaladesh.dck"
], ],
@@ -1680,6 +1929,11 @@
"probability": 1, "probability": 1,
"count": 1000, "count": 1000,
"addMaxCount": 9000 "addMaxCount": 9000
},
{
"type": "item",
"probability": 1,
"count": 1,
"itemName": "Chandra's Stone" "itemName": "Chandra's Stone"
} }
], ],

View File

@@ -38,6 +38,9 @@
"Beastmaster", "Beastmaster",
"Centaur", "Centaur",
"Centaur Warrior", "Centaur Warrior",
"Challenger 20",
"Challenger 21",
"Challenger 22",
"Dino", "Dino",
"Eldraine Faerie", "Eldraine Faerie",
"Elf", "Elf",

View File

@@ -1,4 +1,9 @@
[ [
{
"name": "Challenge Coin",
"description": "A heavy coin made of unknown material.",
"iconName": "ChallengeCoin"
},
{ {
"name": "Chandra's Tome", "name": "Chandra's Tome",
"description": "Draft a Chandra themed card that can be cast with mana of any color.", "description": "Draft a Chandra themed card that can be cast with mana of any color.",

View File

@@ -33,9 +33,11 @@
"Ashmouth Devil", "Ashmouth Devil",
"Axgard Dwarf", "Axgard Dwarf",
"Berserker", "Berserker",
"Boar",
"Boggart", "Boggart",
"Bull", "Challenger 1",
"Challenger 2",
"Challenger 3",
"Challenger 4",
"Cyclops", "Cyclops",
"Devil", "Devil",
"Dinosaur", "Dinosaur",
@@ -43,7 +45,6 @@
"Dwarf", "Dwarf",
"Efreet", "Efreet",
"Fire Elemental", "Fire Elemental",
"Fire Giant",
"Flame Elemental", "Flame Elemental",
"Goblin", "Goblin",
"Goblin Chief", "Goblin Chief",
@@ -52,8 +53,6 @@
"Immersturm Demon", "Immersturm Demon",
"Kavu", "Kavu",
"Khan", "Khan",
"Kobold",
"Magma Elemental",
"Mindclaw Shaman", "Mindclaw Shaman",
"Minotaur", "Minotaur",
"Minotaur Flayer", "Minotaur Flayer",
@@ -66,7 +65,10 @@
"Vampire Lord", "Vampire Lord",
"Viashino", "Viashino",
"Wild-Magic Sorcerer", "Wild-Magic Sorcerer",
"Yeti" "Yeti",
"Kobold",
"Boar",
"Bull"
], ],
"pointsOfInterest": [ "pointsOfInterest": [
"Red Castle", "Red Castle",
@@ -113,8 +115,7 @@
"CaveRH", "CaveRH",
"CaveRJ", "CaveRJ",
"Kobold Mine", "Kobold Mine",
"Temple of Chandra", "Temple of Chandra"
"Tibalts Dungeon"
], ],
"structures": [ "structures": [
{ {

View File

@@ -29,6 +29,9 @@
], ],
"enemies": [ "enemies": [
"Bandit", "Bandit",
"Challenger 20",
"Challenger 21",
"Challenger 22",
"ClayGolem", "ClayGolem",
"Construct", "Construct",
"Eldrazi", "Eldrazi",

View File

@@ -35,6 +35,9 @@
"Beastmaster", "Beastmaster",
"Cat", "Cat",
"Cathar", "Cathar",
"Challenger 20",
"Challenger 21",
"Challenger 22",
"Cleric", "Cleric",
"Dawnhart Witch", "Dawnhart Witch",
"Eldraine Knight", "Eldraine Knight",

View File

@@ -102,15 +102,20 @@ Innistrad: Midnight Hunt, 3/6/MID, MID
Innistrad: Crimson Vow, 3/6/VOW, VOW Innistrad: Crimson Vow, 3/6/VOW, VOW
Innistrad: Double Feature, 3/6/MID, DBL Innistrad: Double Feature, 3/6/MID, DBL
Kamigawa: Neon Dynasty, 3/6/NEO, NEO Kamigawa: Neon Dynasty, 3/6/NEO, NEO
Alchemy: Kamigawa, 3/6/NEO, YNEO
Streets of New Capenna, 3/6/SNC, SNC Streets of New Capenna, 3/6/SNC, SNC
Alchemy: New Capenna, 3/6/SNC, YSNC
Alchemy Horizons: Baldur's Gate, 3/6/HBG, HBG Alchemy Horizons: Baldur's Gate, 3/6/HBG, HBG
Double Masters 2022, 3/6/2X2, 2X2 Double Masters 2022, 3/6/2X2, 2X2
Dominaria United, 3/6/DMU, DMU Dominaria United, 3/6/DMU, DMU
Dominaria United Jumpstart, -/2/DMU, Meta-Choose(S(DMU Coalition Corps)Coaltion Corps;S(DMU Coalition Legion)Coaltion Legion;S(DMU Mystic Mischief)Mystic Mischief;S(DMU Arcane Mischief)Arcane Mischief;S(DMU Totally Ruthless)Totally Ruthless;S(DMU Totally Merciless)Totally Merciless;S(DMU Ready to Charge)Ready to Charge;S(DMU Ready to Attack)Ready to Attack;S(DMU Beast Territory)Beast Territory;S(DMU Monster Territory)Monster Territory)Themes Dominaria United Jumpstart, -/2/DMU, Meta-Choose(S(DMU Coalition Corps)Coaltion Corps;S(DMU Coalition Legion)Coaltion Legion;S(DMU Mystic Mischief)Mystic Mischief;S(DMU Arcane Mischief)Arcane Mischief;S(DMU Totally Ruthless)Totally Ruthless;S(DMU Totally Merciless)Totally Merciless;S(DMU Ready to Charge)Ready to Charge;S(DMU Ready to Attack)Ready to Attack;S(DMU Beast Territory)Beast Territory;S(DMU Monster Territory)Monster Territory)Themes
Alchemy: Dominaria, 3/6/DMU, YDMU
The Brothers' War, 3/6/BRO, BRO The Brothers' War, 3/6/BRO, BRO
The Brothers' War Jumpstart, -/2/BRO, Meta-Choose(S(BRO Infantry 1)Infantry 1;S(BRO Infantry 2)Infantry 2;S(BRO Powerstones 1)Powerstones 1;S(BRO Powerstones 2)Powerstones 2;S(BRO Unearthed 1)Unearthed 1;S(BRO Unearthed 2)Unearthed 1;S(BRO Welded 1)Welded 1;S(BRO Welded 2)Welded 1;S(BRO Titanic 1)Titanic 1;S(BRO Titanic 2)Titanic 2)Themes The Brothers' War Jumpstart, -/2/BRO, Meta-Choose(S(BRO Infantry 1)Infantry 1;S(BRO Infantry 2)Infantry 2;S(BRO Powerstones 1)Powerstones 1;S(BRO Powerstones 2)Powerstones 2;S(BRO Unearthed 1)Unearthed 1;S(BRO Unearthed 2)Unearthed 1;S(BRO Welded 1)Welded 1;S(BRO Welded 2)Welded 1;S(BRO Titanic 1)Titanic 1;S(BRO Titanic 2)Titanic 2)Themes
Alchemy: The Brothers' War, 3/6/BRO, YBRO
30th Anniversary Edition, 3/6/30A, 30A 30th Anniversary Edition, 3/6/30A, 30A
Jumpstart 2022, -/2/J22, Meta-Choose(S(J22 Vehicles)Vehicles;S(J22 Knights)Knights;S(J22 Constellation 1)Constellation 1;S(J22 Constellation 2)Constellation 2;S(J22 Teamwork 1)Teamwork 1;S(J22 Teamwork 2)Teamwork 2;S(J22 Spirits 1)Spirits 1;S(J22 Spirits 2)Spirits 2;S(J22 Blink 1)Blink 1;S(J22 Blink 2)Blink 2;S(J22 Blink 3)Blink 3;S(J22 Blink 4)Blink 4;S(J22 Cats 1)Cats 1;S(J22 Cats 2)Cats 2;S(J22 Cats 3)Cats 3;S(J22 Cats 4)Cats 4;S(J22 Law 1)Law 1;S(J22 Law 2)Law 2;S(J22 Law 3)Law 3;S(J22 Law 4)Law 4;S(J22 Holy 1)Holy 1;S(J22 Holy 2)Holy 2;S(J22 Holy 3)Holy 3;S(J22 Holy 4)Holy 4;S(J22 Shapeshifters)Shapeshifters;S(J22 Snow)Snow;S(J22 Go to School 1)Go to School 1;S(J22 Go to School 2)Go to School 2;S(J22 Scrying 1)Scrying 1;S(J22 Scrying 2)Scrying 2;S(J22 Faeries 1)Faeries 1;S(J22 Faeries 2)Faeries 2;S(J22 Merfolk 1)Merfolk 1;S(J22 Merfolk 2)Merfolk 2;S(J22 Merfolk 3)Merfolk 3;S(J22 Merfolk 4)Merfolk 4;S(J22 Detective 1)Detective 1;S(J22 Detective 2)Detective 2;S(J22 Detective 3)Detective 3;S(J22 Detective 4)Detective 4;S(J22 Think Again 1)Think Again 1;S(J22 Think Again 2)Think Again 2;S(J22 Think Again 3)Think Again 3;S(J22 Think Again 4)Think Again 4;S(J22 Inventive 1)Inventive 1;S(J22 Inventive 2)Inventive 2;S(J22 Inventive 3)Inventive 3;S(J22 Inventive 4)Inventive 4;S(J22 Unlucky Thirteen)Unlucky Thirteen;S(J22 Rats)Rats;S(J22 Demons 1)Demons 1;S(J22 Demons 2)Demons 2;S(J22 Boneyard 1)Boneyard 1;S(J22 Boneyard 2)Boneyard 2;S(J22 Morbid 1)Morbid 1;S(J22 Morbid 2)Morbid 2;S(J22 Cruel 1)Cruel 1;S(J22 Cruel 2)Cruel 2;S(J22 Cruel 3)Cruel 3;S(J22 Cruel 4)Cruel 4;S(J22 Fangs 1)Fangs 1;S(J22 Fangs 2)Fangs 2;S(J22 Fangs 3)Fangs 3;S(J22 Fangs 4)Fangs 4;S(J22 Zombies 1)Zombies 1;S(J22 Zombies 2)Zombies 2;S(J22 Zombies 3)Zombies 3;S(J22 Zombies 4)Zombies 4;S(J22 Gross 1)Gross 1;S(J22 Gross 2)Gross 2;S(J22 Gross 3)Gross 3;S(J22 Gross 4)Gross 4;S(J22 Spicy)Spicy;S(J22 Speedy)Speedy;S(J22 Experimental 1)Experimental 1;S(J22 Experimental 2)Experimental 2;S(J22 Dragons 1)Dragons 1;S(J22 Dragons 2)Dragons 2;S(J22 Cycling 1)Cycling 1;S(J22 Cycling 2)Cycling 2;S(J22 Goblins 1)Goblins 1;S(J22 Goblins 2)Goblins 2;S(J22 Goblins 3)Goblins 3;S(J22 Goblins 4)Goblins 4;S(J22 Treasure 1)Treasure 1;S(J22 Treasure 2)Treasure 2;S(J22 Treasure 3)Treasure 3;S(J22 Treasure 4)Treasure 4;S(J22 Fiery 1)Fiery 1;S(J22 Fiery 2)Fiery 2;S(J22 Fiery 3)Fiery 3;S(J22 Fiery 4)Fiery 4;S(J22 Raid 1)Raid 1;S(J22 Raid 2)Raid 2;S(J22 Raid 3)Raid 3;S(J22 Raid 4)Raid 4;S(J22 Eldrazi)Eldrazi;S(J22 Primates)Primates;S(J22 Multi-Headed 1)Multi-Headed 1;S(J22 Multi-Headed 2)Multi-Headed 2;S(J22 Gigantic 1)Gigantic 1;S(J22 Gigantic 2)Gigantic 2;S(J22 Landfall 1)Landfall 1;S(J22 Landfall 2)Landfall 2;S(J22 Elves 1)Elves 1;S(J22 Elves 2)Elves 2;S(J22 Elves 3)Elves 3;S(J22 Elves 4)Elves 4;S(J22 Wolves 1)Wolves 1;S(J22 Wolves 2)Wolves 2;S(J22 Wolves 3)Wolves 3;S(J22 Wolves 4)Wolves 4;S(J22 Ferocious 1)Ferocious 1;S(J22 Ferocious 2)Ferocious 2;S(J22 Ferocious 3)Ferocious 3;S(J22 Ferocious 4)Ferocious 4;S(J22 Insects 1)Insects 1;S(J22 Insects 2)Insects 2;S(J22 Insects 3)Insects 3;S(J22 Insects 4)Insects 4;S(J22 Urza's)Urza's)Themes Jumpstart 2022, -/2/J22, Meta-Choose(S(J22 Vehicles)Vehicles;S(J22 Knights)Knights;S(J22 Constellation 1)Constellation 1;S(J22 Constellation 2)Constellation 2;S(J22 Teamwork 1)Teamwork 1;S(J22 Teamwork 2)Teamwork 2;S(J22 Spirits 1)Spirits 1;S(J22 Spirits 2)Spirits 2;S(J22 Blink 1)Blink 1;S(J22 Blink 2)Blink 2;S(J22 Blink 3)Blink 3;S(J22 Blink 4)Blink 4;S(J22 Cats 1)Cats 1;S(J22 Cats 2)Cats 2;S(J22 Cats 3)Cats 3;S(J22 Cats 4)Cats 4;S(J22 Law 1)Law 1;S(J22 Law 2)Law 2;S(J22 Law 3)Law 3;S(J22 Law 4)Law 4;S(J22 Holy 1)Holy 1;S(J22 Holy 2)Holy 2;S(J22 Holy 3)Holy 3;S(J22 Holy 4)Holy 4;S(J22 Shapeshifters)Shapeshifters;S(J22 Snow)Snow;S(J22 Go to School 1)Go to School 1;S(J22 Go to School 2)Go to School 2;S(J22 Scrying 1)Scrying 1;S(J22 Scrying 2)Scrying 2;S(J22 Faeries 1)Faeries 1;S(J22 Faeries 2)Faeries 2;S(J22 Merfolk 1)Merfolk 1;S(J22 Merfolk 2)Merfolk 2;S(J22 Merfolk 3)Merfolk 3;S(J22 Merfolk 4)Merfolk 4;S(J22 Detective 1)Detective 1;S(J22 Detective 2)Detective 2;S(J22 Detective 3)Detective 3;S(J22 Detective 4)Detective 4;S(J22 Think Again 1)Think Again 1;S(J22 Think Again 2)Think Again 2;S(J22 Think Again 3)Think Again 3;S(J22 Think Again 4)Think Again 4;S(J22 Inventive 1)Inventive 1;S(J22 Inventive 2)Inventive 2;S(J22 Inventive 3)Inventive 3;S(J22 Inventive 4)Inventive 4;S(J22 Unlucky Thirteen)Unlucky Thirteen;S(J22 Rats)Rats;S(J22 Demons 1)Demons 1;S(J22 Demons 2)Demons 2;S(J22 Boneyard 1)Boneyard 1;S(J22 Boneyard 2)Boneyard 2;S(J22 Morbid 1)Morbid 1;S(J22 Morbid 2)Morbid 2;S(J22 Cruel 1)Cruel 1;S(J22 Cruel 2)Cruel 2;S(J22 Cruel 3)Cruel 3;S(J22 Cruel 4)Cruel 4;S(J22 Fangs 1)Fangs 1;S(J22 Fangs 2)Fangs 2;S(J22 Fangs 3)Fangs 3;S(J22 Fangs 4)Fangs 4;S(J22 Zombies 1)Zombies 1;S(J22 Zombies 2)Zombies 2;S(J22 Zombies 3)Zombies 3;S(J22 Zombies 4)Zombies 4;S(J22 Gross 1)Gross 1;S(J22 Gross 2)Gross 2;S(J22 Gross 3)Gross 3;S(J22 Gross 4)Gross 4;S(J22 Spicy)Spicy;S(J22 Speedy)Speedy;S(J22 Experimental 1)Experimental 1;S(J22 Experimental 2)Experimental 2;S(J22 Dragons 1)Dragons 1;S(J22 Dragons 2)Dragons 2;S(J22 Cycling 1)Cycling 1;S(J22 Cycling 2)Cycling 2;S(J22 Goblins 1)Goblins 1;S(J22 Goblins 2)Goblins 2;S(J22 Goblins 3)Goblins 3;S(J22 Goblins 4)Goblins 4;S(J22 Treasure 1)Treasure 1;S(J22 Treasure 2)Treasure 2;S(J22 Treasure 3)Treasure 3;S(J22 Treasure 4)Treasure 4;S(J22 Fiery 1)Fiery 1;S(J22 Fiery 2)Fiery 2;S(J22 Fiery 3)Fiery 3;S(J22 Fiery 4)Fiery 4;S(J22 Raid 1)Raid 1;S(J22 Raid 2)Raid 2;S(J22 Raid 3)Raid 3;S(J22 Raid 4)Raid 4;S(J22 Eldrazi)Eldrazi;S(J22 Primates)Primates;S(J22 Multi-Headed 1)Multi-Headed 1;S(J22 Multi-Headed 2)Multi-Headed 2;S(J22 Gigantic 1)Gigantic 1;S(J22 Gigantic 2)Gigantic 2;S(J22 Landfall 1)Landfall 1;S(J22 Landfall 2)Landfall 2;S(J22 Elves 1)Elves 1;S(J22 Elves 2)Elves 2;S(J22 Elves 3)Elves 3;S(J22 Elves 4)Elves 4;S(J22 Wolves 1)Wolves 1;S(J22 Wolves 2)Wolves 2;S(J22 Wolves 3)Wolves 3;S(J22 Wolves 4)Wolves 4;S(J22 Ferocious 1)Ferocious 1;S(J22 Ferocious 2)Ferocious 2;S(J22 Ferocious 3)Ferocious 3;S(J22 Ferocious 4)Ferocious 4;S(J22 Insects 1)Insects 1;S(J22 Insects 2)Insects 2;S(J22 Insects 3)Insects 3;S(J22 Insects 4)Insects 4;S(J22 Urza's)Urza's)Themes
Dominaria Remastered, 3/6/DMR, DMR Dominaria Remastered, 3/6/DMR, DMR
Phyrexia: All Will Be One, 3/6/ONE, ONE Phyrexia: All Will Be One, 3/6/ONE, ONE
Phyrexia: All Will Be One Jumpstart, -/2/ONE, Meta-Choose(S(ONE Mite-y 1)Mite-y 1;S(ONE Mite-y 2)Mite-y 2;S(ONE Progress 1)Progress 1;S(ONE Progress 2)Progress 2;S(ONE Corruption 1)Corruption 1;S(ONE Corruption 2)Corruption 2;S(ONE Rebellious 1)Rebellious 1;S(ONE Rebellious 2)Rebellious 2;S(ONE Toxic 1)Toxic 1;S(ONE Toxic 2)Toxic 2)Themes Phyrexia: All Will Be One Jumpstart, -/2/ONE, Meta-Choose(S(ONE Mite-y 1)Mite-y 1;S(ONE Mite-y 2)Mite-y 2;S(ONE Progress 1)Progress 1;S(ONE Progress 2)Progress 2;S(ONE Corruption 1)Corruption 1;S(ONE Corruption 2)Corruption 2;S(ONE Rebellious 1)Rebellious 1;S(ONE Rebellious 2)Rebellious 2;S(ONE Toxic 1)Toxic 1;S(ONE Toxic 2)Toxic 2)Themes
Alchemy: Phyrexia, 3/6/ONE, YONE

View File

@@ -3,7 +3,7 @@ ManaCost:1 B B
Types:Enchantment Types:Enchantment
T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of each end step, each player who tapped a land for mana this turn sacrifices a land. Desolation deals 2 damage to each player who sacrificed a Plains this way. T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of each end step, each player who tapped a land for mana this turn sacrifices a land. Desolation deals 2 damage to each player who sacrificed a Plains this way.
SVar:TrigSac:DB$ Sacrifice | SacValid$ Land | Defined$ Player.TappedLandForManaThisTurn | RememberSacrificed$ True | SubAbility$ DBRepeat SVar:TrigSac:DB$ Sacrifice | SacValid$ Land | Defined$ Player.TappedLandForManaThisTurn | RememberSacrificed$ True | SubAbility$ DBRepeat
SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ Remembered | AdditionalRestriction$ Plains | UseImprinted$ True | RepeatSubAbility$ DBDamage | SubAbility$ DBCleanup SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ Remembered.Plains | UseImprinted$ True | RepeatSubAbility$ DBDamage | SubAbility$ DBCleanup
SVar:DBDamage:DB$ DealDamage | Defined$ ImprintedController | NumDmg$ 2 SVar:DBDamage:DB$ DealDamage | Defined$ ImprintedController | NumDmg$ 2
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:All AI:RemoveDeck:All

View File

@@ -4,6 +4,6 @@ Types:Legendary Creature Phyrexian Vampire
PT:5/4 PT:5/4
K:Flying K:Flying
T:Mode$ ChangesZone | ValidCard$ Creature.nonToken+Other+YouCtrl | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ TrigExile | OptionalDecider$ You | TriggerDescription$ Whenever another nontoken creature you control dies, you may pay 2 life and exile it. If you do, create a token that's a copy of that creature, except it's 1/1 and has toxic 1. (Players dealt combat damage by it also get a poison counter.) T:Mode$ ChangesZone | ValidCard$ Creature.nonToken+Other+YouCtrl | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ TrigExile | OptionalDecider$ You | TriggerDescription$ Whenever another nontoken creature you control dies, you may pay 2 life and exile it. If you do, create a token that's a copy of that creature, except it's 1/1 and has toxic 1. (Players dealt combat damage by it also get a poison counter.)
SVar:TrigExile:AB$ CopyPermanent | Cost$ PayLife<2> ExileFromGrave<1/Card.TriggeredCard/Exile nontoken creature that just died> | PumpKeywords$ Toxic:1 | Defined$ TriggeredCardLKICopy | SetPower$ 1 | SetToughness$ 1 SVar:TrigExile:AB$ CopyPermanent | Cost$ PayLife<2> ExileFromGrave<1/Card.TriggeredCard/Exile nontoken creature that just died> | AddKeywords$ Toxic:1 | Defined$ TriggeredCardLKICopy | SetPower$ 1 | SetToughness$ 1
DeckHas:Ability$Token DeckHas:Ability$Token
Oracle:Flying\nWhenever another nontoken creature you control dies, you may pay 2 life and exile it. If you do, create a token that's a copy of that creature, except it's 1/1 and has toxic 1. (Players dealt combat damage by it also get a poison counter.) Oracle:Flying\nWhenever another nontoken creature you control dies, you may pay 2 life and exile it. If you do, create a token that's a copy of that creature, except it's 1/1 and has toxic 1. (Players dealt combat damage by it also get a poison counter.)

View File

@@ -2,7 +2,7 @@ Name:Wave of Vitriol
ManaCost:5 G G ManaCost:5 G G
Types:Sorcery Types:Sorcery
A:SP$ SacrificeAll | Cost$ 5 G G | ValidCards$ Artifact,Enchantment,Land.nonBasic | RememberSacrificed$ True | SubAbility$ DBRepeat | SpellDescription$ Each player sacrifices all artifacts, enchantments, and nonbasic lands they control. For each land sacrificed this way, its controller may search their library for a basic land card and put it onto the battlefield tapped. Then each player who searched their library this way shuffles. A:SP$ SacrificeAll | Cost$ 5 G G | ValidCards$ Artifact,Enchantment,Land.nonBasic | RememberSacrificed$ True | SubAbility$ DBRepeat | SpellDescription$ Each player sacrifices all artifacts, enchantments, and nonbasic lands they control. For each land sacrificed this way, its controller may search their library for a basic land card and put it onto the battlefield tapped. Then each player who searched their library this way shuffles.
SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ DirectRemembered | AdditionalRestriction$ Land | UseImprinted$ True | RepeatSubAbility$ DBSearch | ClearRemembered$ True | SubAbility$ DBShuffle SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ DirectRemembered.Land | UseImprinted$ True | RepeatSubAbility$ DBSearch | ClearRemembered$ True | SubAbility$ DBShuffle
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ 1 | Tapped$ True | RememberChanged$ True | DefinedPlayer$ ImprintedController | Chooser$ ImprintedController | NoShuffle$ True | Optional$ True SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ 1 | Tapped$ True | RememberChanged$ True | DefinedPlayer$ ImprintedController | Chooser$ ImprintedController | NoShuffle$ True | Optional$ True
SVar:DBShuffle:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ ShuffleSearched | SubAbility$ DBCleanup SVar:DBShuffle:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ ShuffleSearched | SubAbility$ DBCleanup
SVar:ShuffleSearched:DB$ Shuffle | Defined$ Player.IsRemembered | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 SVar:ShuffleSearched:DB$ Shuffle | Defined$ Player.IsRemembered | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1

View File

@@ -6,7 +6,7 @@ K:Reach
T:Mode$ Phase | Phase$ BeginCombat | TriggerZones$ Battlefield | Execute$ TrigDouble | TriggerDescription$ At the beginning of each combat, double the power and toughness of each creature you control until end of turn. T:Mode$ Phase | Phase$ BeginCombat | TriggerZones$ Battlefield | Execute$ TrigDouble | TriggerDescription$ At the beginning of each combat, double the power and toughness of each creature you control until end of turn.
SVar:TrigDouble:DB$ RepeatEach | RepeatCards$ Creature.YouCtrl | RepeatSubAbility$ DBDouble SVar:TrigDouble:DB$ RepeatEach | RepeatCards$ Creature.YouCtrl | RepeatSubAbility$ DBDouble
SVar:DBDouble:DB$ Pump | Defined$ Remembered | NumAtt$ X | NumDef$ Y | Double$ True SVar:DBDouble:DB$ Pump | Defined$ Remembered | NumAtt$ X | NumDef$ Y | Double$ True
A:AB$ PutCounter | Cost$ 1 GP GP Sac<2/Creature.Other/Other creature> | Defined$ Self | CounterType$ Indestructible | CounterNum$ 1 | SpellDescription$ Put an indestructible counter on CARDNAME. ({G/P} can be paid with either {G} or 2 life.) A:AB$ PutCounter | Cost$ GP GP Sac<2/Creature.Other/Other creature> | Defined$ Self | CounterType$ Indestructible | CounterNum$ 1 | SpellDescription$ Put an indestructible counter on CARDNAME. ({G/P} can be paid with either {G} or 2 life.)
SVar:X:Remembered$CardPower SVar:X:Remembered$CardPower
SVar:Y:Remembered$CardToughness SVar:Y:Remembered$CardToughness
DeckHas:Ability$Sacrifice|Counters DeckHas:Ability$Sacrifice|Counters

View File

@@ -3,6 +3,7 @@ Code=YDMU
Date=2022-10-06 Date=2022-10-06
Name=Alchemy: Dominaria Name=Alchemy: Dominaria
Type=Online Type=Online
Booster=1 UncommonRareMythic, 9 Common:fromsheet("DMU cards"), 3 Uncommon:fromSheet("DMU cards"), 1 RareMythic:fromSheet("DMU cards"), 1 fromSheet("DMU lands")
ScryfallCode=YDMU ScryfallCode=YDMU
[cards] [cards]

View File

@@ -3,6 +3,7 @@ Code=YNEO
Date=2022-03-17 Date=2022-03-17
Name=Alchemy: Kamigawa Name=Alchemy: Kamigawa
Type=Online Type=Online
Booster=1 UncommonRareMythic, 8 Common:!dfc:!fromSheet("NEO lands"):fromSheet("NEO cards"), 3 Uncommon:!dfc:!fromSheet("NEO lands"):fromSheet("NEO cards"), 1 dfc:!Rare:!Mythic:fromSheet("NEO cards"), 1 RareMythic:fromSheet("NEO cards"), 1 fromSheet("NEO lands")
ScryfallCode=YNEO ScryfallCode=YNEO
[cards] [cards]

View File

@@ -3,6 +3,7 @@ Code=YSNC
Date=2022-06-02 Date=2022-06-02
Name=Alchemy: New Capenna Name=Alchemy: New Capenna
Type=Online Type=Online
Booster=1 UncommonRareMythic, 9 Common:fromsheet("SNC cards"), 3 Uncommon:fromSheet("SNC cards"), 1 RareMythic:fromSheet("SNC cards"), 1 fromSheet("SNC lands")
ScryfallCode=YSNC ScryfallCode=YSNC
[cards] [cards]

View File

@@ -3,6 +3,7 @@ Code=YONE
Date=2023-02-28 Date=2023-02-28
Name=Alchemy: Phyrexia Name=Alchemy: Phyrexia
Type=Online Type=Online
Booster=1 UncommonRareMythic, 9 Common:fromsheet("ONE cards"), 3 Uncommon:fromSheet("ONE cards"), 1 RareMythic:fromSheet("ONE cards"), 1 BasicLand:fromSheet("ONE cards")
ScryfallCode=YONE ScryfallCode=YONE
[cards] [cards]

View File

@@ -3,6 +3,7 @@ Code=YBRO
Date=2022-12-13 Date=2022-12-13
Name=Alchemy: The Brothers' War Name=Alchemy: The Brothers' War
Type=Online Type=Online
Booster=1 UncommonRareMythic, 8 Common:fromsheet("BRO cards"), 3 Uncommon:fromSheet("BRO cards"), 1 RareMythic:fromSheet("BRO cards"), 1 fromSheet("BRO lands"), 1 fromSheet("BRR cards")
ScryfallCode=YBRO ScryfallCode=YBRO
[cards] [cards]