From e960ada81442cf97d9a6d1873f20ab6b621fa2c2 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 15 Feb 2023 11:15:32 +0800 Subject: [PATCH 1/2] fix ClashEffect message and update NotifyValue message - show clashing cards if possible on clash effect - show hostcard if possible on choose a player effect --- .../ability/effects/ChoosePlayerEffect.java | 1 + .../game/ability/effects/ClashEffect.java | 18 +++++++++++++----- .../src/main/java/forge/util/MessageUtil.java | 2 ++ .../forge/player/PlayerControllerHuman.java | 13 +++++++++++-- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java index ae42272e447..8412156f900 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java @@ -55,6 +55,7 @@ public class ChoosePlayerEffect extends SpellAbilityEffect { if (sa.hasParam("RememberChosen")) { card.addRemembered(chosen); } + p.getGame().getAction().notifyOfValue(sa, p, Localizer.getInstance().getMessage("lblPlayerPickedChosen", sa.getActivatingPlayer(), chosen), null); // SubAbility that only fires if a player is chosen SpellAbility chosenSA = sa.getAdditionalAbility("ChooseSubAbility"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java index 93ec8a136e1..d294c3263c3 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java @@ -8,6 +8,7 @@ import forge.game.ability.AbilityKey; import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; +import forge.game.card.CardCollection; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.trigger.TriggerType; @@ -87,6 +88,7 @@ public class ClashEffect extends SpellAbilityEffect { } final StringBuilder reveal = new StringBuilder(); + reveal.append("OVERRIDE "); //will return substring with the original message parsed here.. Card pCard = null; Card oCard = null; @@ -104,7 +106,7 @@ public class ClashEffect extends SpellAbilityEffect { pCMC = pCard.getCMC(); reveal.append(player).append(" " + Localizer.getInstance().getMessage("lblReveals") + ": ").append(pCard.getName()).append(". " + Localizer.getInstance().getMessage("lblCMC") + "= ").append(pCMC); - reveal.append("\r\n"); + reveal.append("\n"); clashMoveToTopOrBottom(player, pCard, sa); } else { @@ -114,21 +116,27 @@ public class ClashEffect extends SpellAbilityEffect { oCMC = oCard.getCMC(); reveal.append(opponent).append(" " + Localizer.getInstance().getMessage("lblReveals") + ": ").append(oCard.getName()).append(". " + Localizer.getInstance().getMessage("lblCMC") + "= ").append(oCMC); - reveal.append("\r\n\r\n"); + reveal.append("\n"); clashMoveToTopOrBottom(opponent, oCard, sa); } else { oCMC = -1; } + final CardCollection toReveal = new CardCollection(); + if (pCard != null) + toReveal.add(pCard); + if (oCard != null) + toReveal.add(oCard); - // no winner + // no winner, still show the revealed cards rather than do nothing if (pCMC == oCMC) { + reveal.append(Localizer.getInstance().getMessage("lblItsADraw")); + player.getGame().getAction().revealTo(toReveal, player.getGame().getPlayers(), reveal.toString()); return null; } reveal.append(player).append(pCMC > oCMC ? " " + Localizer.getInstance().getMessage("lblWinsClash") + "." : " " + Localizer.getInstance().getMessage("lblLosesClash") + "."); - player.getGame().getAction().notifyOfValue(sa, source, reveal.toString(), null); - + player.getGame().getAction().revealTo(toReveal, player.getGame().getPlayers(), reveal.toString()); return pCMC > oCMC ? player : opponent; } diff --git a/forge-game/src/main/java/forge/util/MessageUtil.java b/forge-game/src/main/java/forge/util/MessageUtil.java index 96cc62d8147..bbd640321bd 100644 --- a/forge-game/src/main/java/forge/util/MessageUtil.java +++ b/forge-game/src/main/java/forge/util/MessageUtil.java @@ -34,7 +34,9 @@ public class MessageUtil { } String choser = StringUtils.capitalize(mayBeYou(player, target)); switch(sa.getApi()) { + case ChoosePlayer: case ChooseDirection: + case Clash: case DigMultiple: return value; case ChooseColor: diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 8d82c930d4d..a3b840fb3c3 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -1691,8 +1691,17 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont if (sa != null && sa.isManaAbility()) { getGame().getGameLog().add(GameLogEntryType.LAND, message); } else { - getGui().message(message, - sa == null || sa.getHostCard() == null ? "" : CardView.get(sa.getHostCard()).toString()); + if (sa != null && sa.getHostCard() != null && GuiBase.getInterface().isLibgdxPort()) { + CardView cardView; + IPaperCard iPaperCard = sa.getHostCard().getPaperCard(); + if (iPaperCard != null) + cardView = CardView.getCardForUi(iPaperCard); + else + cardView = sa.getHostCard().getView(); + getGui().confirm(cardView, message, ImmutableList.of(localizer.getMessage("lblOk"))); + } else { + getGui().message(message, sa == null || sa.getHostCard() == null ? "" : CardView.get(sa.getHostCard()).toString()); + } } } From a9c19b34c8598d11596054832f8e1f7eeb215690 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 15 Feb 2023 11:44:09 +0800 Subject: [PATCH 2/2] update translation and remove duplicates --- .../forge/game/ability/effects/ClashEffect.java | 4 ++-- forge-gui/res/languages/de-DE.properties | 7 +------ forge-gui/res/languages/en-US.properties | 4 +--- forge-gui/res/languages/es-ES.properties | 12 +++++------- forge-gui/res/languages/fr-FR.properties | 4 +--- forge-gui/res/languages/it-IT.properties | 10 ++++------ forge-gui/res/languages/ja-JP.properties | 14 ++++++-------- forge-gui/res/languages/pt-BR.properties | 8 +++----- forge-gui/res/languages/zh-CN.properties | 4 +--- 9 files changed, 24 insertions(+), 43 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java index d294c3263c3..062eaa833da 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ClashEffect.java @@ -130,12 +130,12 @@ public class ClashEffect extends SpellAbilityEffect { // no winner, still show the revealed cards rather than do nothing if (pCMC == oCMC) { - reveal.append(Localizer.getInstance().getMessage("lblItsADraw")); + reveal.append(Localizer.getInstance().getMessage("lblNoWinner")); player.getGame().getAction().revealTo(toReveal, player.getGame().getPlayers(), reveal.toString()); return null; } - reveal.append(player).append(pCMC > oCMC ? " " + Localizer.getInstance().getMessage("lblWinsClash") + "." : " " + Localizer.getInstance().getMessage("lblLosesClash") + "."); + reveal.append(pCMC > oCMC ? player + " " + Localizer.getInstance().getMessage("lblWinsClash") + "." : opponent + " " + Localizer.getInstance().getMessage("lblWinsClash") + "."); player.getGame().getAction().revealTo(toReveal, player.getGame().getPlayers(), reveal.toString()); return pCMC > oCMC ? player : opponent; } diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 352af126484..ef214f9efdf 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -769,9 +769,6 @@ lblColorBias=Farbneigung (1-100%) ttColorBias=Anteil der Karten zu Beginn in der von dir gewählten Farben. lblPenaltyforLoss=Strafe für Niederlage lblMoreDuelChoices=Mehr Duellauswahl -lblCommon=Häufig -lblUncommon=Nicht so häufig -lblRare=Selten lblSpecialBoosters=Spezielle Booster ttSpecialBoosters=Erlaubt spezielle Farbbooster im Laden und als Belohnungen. lblMaximumPacks=Maximale Anzahl Packs @@ -1431,6 +1428,7 @@ btnNextGame=Nächstes Spiel btnStartNewMatch=Starte neue Partie btnQuitMatch=Beende Partie lblItsADraw=Es ist ein Unentschieden! +lblNoWinner=Kein Gewinner! lblTeamWon=Team %s hat gewonnen! lblWinnerWon=%s hat gewonnen! lblGameLog=Spiel-Bericht @@ -1572,8 +1570,6 @@ lblDestroyed=Zerstört lblDestroyer=Zerstörer #TriggerDevoured.java lblDevoured=Verschlungen -#TriggerDiscarded.java -lblDiscarded=Abgeworfen #TriggerEvolved.java lblEvolved=Weiterentwickelt #TriggerExerted.java @@ -1723,7 +1719,6 @@ lblAlreadyDeckName=Es existiert bereits ein Deck ' lblOverwriteConfirm='. Überschreiben? lblOverwriteDeck=Deck überschreiben? lblEndDraftConfirm=Dies wird den laufenden Draft beenden und du kannst nicht zurückkehren.\n\nTrotzdem verlassen? -lblLeaveDraft=Verlasse Draft #Match.java lblAICantPlayCards=Die KI hat Probleme mit folgenden Karten: lblAnteCardsRemoved=Die Ante-Karten wurden entfernt diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 5e349d07145..9f29896cd93 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -1433,6 +1433,7 @@ btnNextGame=Next Game btnStartNewMatch=Start New Match btnQuitMatch=Quit Match lblItsADraw=It''s a draw! +lblNoWinner=No Winner! lblTeamWon=Team %s won! lblWinnerWon=%s won! lblGameLog=Game Log @@ -2938,9 +2939,6 @@ lblTempHitPoints=Temporary Hit Points lblChosenColors=Chosen colors: lblLoyalty=Loyalty #Achievement.java -lblCommon=Common -lblUncommon=Uncommon -lblRare=Rare lblMythic=Mythic lblAchievementEarned=Achievement Earned lblZoom=Zoom diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index 554d01f685d..0e34c9f8f83 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -1429,6 +1429,7 @@ btnNextGame=Siguiente juego btnStartNewMatch=Nueva partida btnQuitMatch=Salir de la partida lblItsADraw=¡Es un empate! +lblNoWinner=¡Sin ganador! lblTeamWon=¡El equipo %s ha ganado! lblWinnerWon=¡%s ha ganado! lblGameLog=Registro del juego @@ -2931,14 +2932,11 @@ lblWinLossRatio=Relación de pérdidas lblHeal=Curar lblTempHitPoints=Puntos de golpe temporales #CardDetailUtil.java -lblChosenColors=Chosen colors: -lblLoyalty=Loyalty +lblChosenColors=Colores elegidos: +lblLoyalty=Lealtad #Achievement.java -lblCommon=Common -lblUncommon=Uncommon -lblRare=Rare -lblMythic=Mythic -lblAchievementEarned=Achievement Earned +lblMythic=Mítico +lblAchievementEarned=Logro ganado lblZoom=Zoom lblEffect=Efecto lblEmblem=Emblem diff --git a/forge-gui/res/languages/fr-FR.properties b/forge-gui/res/languages/fr-FR.properties index bc1dffaaf9e..fc1339071e8 100644 --- a/forge-gui/res/languages/fr-FR.properties +++ b/forge-gui/res/languages/fr-FR.properties @@ -1430,6 +1430,7 @@ btnNextGame=Prochaine partie btnStartNewMatch=Commencer une nouvelle correspondance btnQuitMatch=Quitter la correspondance lblItsADraw=C''est un match nul ! +lblNoWinner=Pas de gagnant! lblTeamWon=l''équipe %s a gagné ! lblWinnerWon=%s a gagné ! lblGameLog=Journal du jeu @@ -2936,9 +2937,6 @@ lblTempHitPoints=Points de vie temporaires lblChosenColors=Couleurs choisies : lblLoyalty=Loyauté #Achievement.java -lblCommon=Commun -lblUncommon=Peu commun -lblRare=Rare lblMythic=Mythique lblAchievementEarned=Succès obtenu lblZoom=Zoom diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index 31d86d67fbf..49f84109138 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -1429,6 +1429,7 @@ btnNextGame=Prossima partita btnStartNewMatch=Inizia un nuovo incontro btnQuitMatch=Abbandona incontro lblItsADraw=È un pareggio! +lblNoWinner=Nessun vincitore! lblTeamWon=La squadra %s ha vinto! lblWinnerWon= %s ha vinto! lblGameLog=Registro di gioco @@ -2934,13 +2935,10 @@ lblWinLossRatio=Rapporto per perdite vincenti lblHeal=Guarire lblTempHitPoints=Punti ferita temporanei #CardDetailUtil.java -lblChosenColors=Chosen colors: -lblLoyalty=Loyalty +lblChosenColors=Colori scelti: +lblLoyalty=Lealtà #Achievement.java -lblCommon=Common -lblUncommon=Uncommon -lblRare=Rare -lblMythic=Mythic +lblMythic=Mitico lblAchievementEarned=Achievement Earned lblZoom=Ingrandisci lblEffect=Effetto diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 7515ecc1dd6..5ef0728ba0b 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -1430,6 +1430,7 @@ btnNextGame=次の対戦 btnStartNewMatch=新しい試合 btnQuitMatch=試合終了 lblItsADraw=それは引き分けです! +lblNoWinner=勝者はいません! lblTeamWon=チーム %s の勝利! lblWinnerWon=%sの勝利! lblGameLog=ゲームログ @@ -2930,17 +2931,14 @@ lblWinLossRatio=損失率を獲得しました lblHeal=癒し lblTempHitPoints=一時的なヒットポイント #CardDetailUtil.java -lblChosenColors=Chosen colors: -lblLoyalty=Loyalty +lblChosenColors=選ばれた色: +lblLoyalty=忠誠心 #Achievement.java -lblCommon=Common -lblUncommon=Uncommon -lblRare=Rare -lblMythic=Mythic -lblAchievementEarned=Achievement Earned +lblMythic=神話 +lblAchievementEarned=獲得した達成 lblZoom=ズーム lblEffect=効果 lblEmblem=エンブレム lblBoon=ブーン lblExitToWoldMap=世界地図に終了しますか? -lblWouldYouLikeDestroy=Would you like to destroy {0} ? \ No newline at end of file +lblWouldYouLikeDestroy={0}を破壊しますか? \ No newline at end of file diff --git a/forge-gui/res/languages/pt-BR.properties b/forge-gui/res/languages/pt-BR.properties index f67e6733fab..532893c5d67 100644 --- a/forge-gui/res/languages/pt-BR.properties +++ b/forge-gui/res/languages/pt-BR.properties @@ -1465,6 +1465,7 @@ btnNextGame=Próximo Jogo btnStartNewMatch=Iniciar Nova Partida btnQuitMatch=Sair da Partida lblItsADraw=É um empate\! +lblNoWinner=Sem vencedor\! lblTeamWon=Time %s venceu\! lblWinnerWon=%s venceu\! lblGameLog=Registro do Jogo @@ -3020,12 +3021,9 @@ lblWinLossRatio=Taxa de Vitória Derrota lblHeal=Curar lblTempHitPoints=Pontos de vida temporários #CardDetailUtil.java -lblChosenColors=Chosen colors: -lblLoyalty=Loyalty +lblChosenColors=Cores escolhidas: +lblLoyalty=Lealdade #Achievement.java -lblCommon=Common -lblUncommon=Uncommon -lblRare=Rare lblMythic=Mythic lblAchievementEarned=Achievement Earned lblZoom=Ampliação diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index 6303f3a6f5a..6cb46da506e 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -1431,6 +1431,7 @@ btnNextGame=下一局游戏 btnStartNewMatch=开始新的比赛 btnQuitMatch=退出比赛 lblItsADraw=平局! +lblNoWinner=没有赢家! lblTeamWon=队伍%s胜利了! lblWinnerWon=%s胜利了! lblGameLog=游戏日志 @@ -2916,9 +2917,6 @@ lblTempHitPoints=临时生命值 lblChosenColors=选择的颜色: lblLoyalty=忠诚指示物 #Achievement.java -lblCommon=铁 -lblUncommon=银 -lblRare=金 lblMythic=秘稀 lblAchievementEarned=获得的成就 lblZoom=飞涨