Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Zachary Kline
2020-06-27 10:13:45 -07:00
7 changed files with 39 additions and 3 deletions

View File

@@ -1629,7 +1629,7 @@ public class Card extends GameEntity implements Comparable<Card> {
}
}
if (keyword.startsWith("CantBeCounteredBy") || keyword.startsWith("Panharmonicon")
|| keyword.startsWith("Dieharmonicon")) {
|| keyword.startsWith("Dieharmonicon") || keyword.startsWith("Shrineharmonicon")) {
final String[] p = keyword.split(":");
sbLong.append(p[2]).append("\r\n");
} else if (keyword.startsWith("etbCounter")) {
@@ -4192,6 +4192,7 @@ public class Card extends GameEntity implements Comparable<Card> {
public final boolean isFortification() { return getType().hasSubtype("Fortification"); }
public final boolean isCurse() { return getType().hasSubtype("Curse"); }
public final boolean isAura() { return getType().hasSubtype("Aura"); }
public final boolean isShrine() { return getType().hasSubtype("Shrine"); }
public final boolean isAttachment() { return isAura() || isEquipment() || isFortification(); }
public final boolean isHistoric() {return getType().isLegendary() || isArtifact() || getType().hasSubtype("Saga");}

View File

@@ -26,6 +26,7 @@ import forge.game.ability.AbilityKey;
import forge.game.ability.effects.CharmEffect;
import forge.game.card.Card;
import forge.game.card.CardLists;
import forge.game.card.CardPredicates;
import forge.game.card.CardUtil;
import forge.game.card.CardZoneTable;
import forge.game.keyword.KeywordInterface;
@@ -618,10 +619,29 @@ public class TriggerHandler {
private int handlePanharmonicon(final Trigger t, final Map<AbilityKey, Object> runParams, final Player p) {
Card host = t.getHostCard();
int n = 0;
// Sanctum of All
if (host.isShrine() && host.isInZone(ZoneType.Battlefield) && p.equals(host.getController())) {
int shrineCount = CardLists.count(p.getCardsIn(ZoneType.Battlefield), CardPredicates.isType("Shrine"));
if (shrineCount >= 6) {
for (final Card ck : p.getCardsIn(ZoneType.Battlefield)) {
for (final KeywordInterface ki : ck.getKeywords()) {
final String kw = ki.getOriginal();
if (kw.startsWith("Shrineharmonicon")) {
final String valid = kw.split(":")[1];
if (host.isValid(valid.split(","), p, ck, null)) {
n++;
}
}
}
}
}
}
// not a changesZone trigger or changesZoneAll
if (t.getMode() != TriggerType.ChangesZone && t.getMode() != TriggerType.ChangesZoneAll) {
return 0;
return n;
}
// leave battlefield trigger, might be dying
@@ -636,7 +656,6 @@ public class TriggerHandler {
return 0;
}
int n = 0;
if (t.getMode() == TriggerType.ChangesZone) {
// iterate over all cards
final List<Card> lastCards = CardLists.filterControlledBy(p.getGame().getLastStateBattlefield(), p);

View File

@@ -0,0 +1,8 @@
Name:Sanctum of All
ManaCost:W U B R G
Types:Legendary Enchantment Shrine
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigSearch | TriggerDescription$ At the beginning of your upkeep, you may search your library and/or graveyard for a Shrine card and put it onto the battlefield. If you search your library this way, shuffle it.
SVar:TrigSearch:DB$ ChangeZone | Origin$ Library | OriginChoice$ True | OriginAlternative$ Graveyard | AlternativeMessage$ Would you like to search your library with this ability? If you do, your library will be shuffled. | Destination$ Battlefield | ChangeType$ Card.Shrine
K:Shrineharmonicon:Shrine.Other+YouCtrl:If an ability of another Shrine you control triggers while you control six or more Shrines, that ability triggers an additional time.
DeckHints:Type$Shrine
Oracle:At the beginning of your upkeep, you may search your library and/or graveyard for a Shrine card and put it onto the battlefield. If you search your library this way, shuffle it.\nIf an ability of another Shrine you control triggers while you control six or more Shrines, that ability triggers an additional time.

View File

@@ -85,6 +85,7 @@ cbRandomArtInPools=zufällige Kartenbilder in erzeugten Kartensammlungen
cbEnableSounds=Ton aktiviert
cbEnableMusic=Musik aktiviert
cbAltSoundSystem=Nutze alternatives Sound-System
cbSROptimize=Optimize UI for screen readers
cbUiForTouchScreen=Verbessere Oberfläche für Touchscreens
cbTimedTargOverlay=Aktiviere Zielpfeiloptimierung
cbCompactMainMenu=Nutze kompakteres Seitenmenü
@@ -180,6 +181,7 @@ SoundOptions=Sound Optionen
nlEnableSounds=Geräusche während des Spiels
nlEnableMusic=Hintergrundmusik während des Spiels
nlAltSoundSystem=Nutze alternatives Sound-System (nur nutzen, wenn es Probleme mit fehlenden Geräuschen gibt)
nlSrOptimize=Set various options to make FOrge work better with screen readers
KeyboardShortcuts=Tastenkombinationen
#VSubmenuAchievements.java
lblAchievements=Errungenschaften

View File

@@ -85,6 +85,7 @@ cbRandomArtInPools=Aleatorizar Arte de la Carta en los pools que se generen
cbEnableSounds=Activar sonidos
cbEnableMusic=Activar música
cbAltSoundSystem=Utilizar el sistema de sonido alternativo
cbSROptimize=Optimize UI for screen readers
cbUiForTouchScreen=Mejorar la interfaz de usuario para pantallas táctiles
cbTimedTargOverlay=Habilitar optimización de superposición de capas
cbCompactMainMenu=Usar el menú de la barra lateral principal compacta
@@ -180,6 +181,7 @@ SoundOptions=Opciones de Sonido
nlEnableSounds=Habilitar efectos de sonido durante el juego
nlEnableMusic=Habilitar música de fondo durante el juego
nlAltSoundSystem=Use el sistema de sonido alternativo (solo use si tiene problemas con el sonido que no se reproduce o desaparece)
nlSrOptimize=Set various options to make FOrge work better with screen readers
KeyboardShortcuts=Atajos de teclado
#VSubmenuAchievements.java
lblAchievements=Logros

View File

@@ -85,6 +85,7 @@ cbRandomArtInPools=Randomizza l''arte della carta nei pool di carte generati
cbEnableSounds=Abilita suoni
cbEnableMusic=Abilita musica
cbAltSoundSystem=Usa un sistema audio alternativo
cbSROptimize=Optimize UI for screen readers
cbUiForTouchScreen=Migliora l''interfaccia utente per i touchscreen
cbTimedTargOverlay=Abilita ottimizzazione overlay di targeting
cbCompactMainMenu=Usa il menu principale della barra laterale compatta
@@ -180,6 +181,7 @@ SoundOptions=Opzioni audio
nlEnableSounds=Abilita gli effetti sonori durante il gioco
nlEnableMusic=Abilita la musica di sottofondo durante il gioco
nlAltSoundSystem=Utilizza il sistema audio alternativo (utilizza solo se hai problemi con l''audio che non viene riprodotto o che scompare)
nlSrOptimize=Set various options to make FOrge work better with screen readers
KeyboardShortcuts=Tasti rapidi
#VSubmenuAchievements.java
lblAchievements=realizzazioni

View File

@@ -86,6 +86,7 @@ cbEnableSounds=启用音效
cbEnableMusic=启用背景音乐
cbAltSoundSystem=使用备用音效系统
cbUiForTouchScreen=触摸屏UI增强
cbSROptimize=为屏幕阅读器启用UI优化
cbTimedTargOverlay=启用定位叠加优化
cbCompactMainMenu=使用紧凑的主侧边栏菜单
cbDetailedPaymentDesc=在付费提示中详细描述咒语
@@ -180,6 +181,7 @@ SoundOptions=声音选项
nlEnableSounds=在游戏中启用声音效果
nlEnableMusic=在游戏中启用背景音乐
nlAltSoundSystem=使用备用音效系统(仅在声音消失的情况使用)
nlSrOptimize=使屏幕阅读器能更好的在forge上使用
KeyboardShortcuts=键盘快捷键
#VSubmenuAchievements.java
lblAchievements=成就