diff --git a/game/fx/creature.go b/game/fx/creature.go
index 25543407..7f2253db 100644
--- a/game/fx/creature.go
+++ b/game/fx/creature.go
@@ -616,15 +616,15 @@ func Creature(card *match.Card, ctx *match.Context) {
if attackerPower > defenderPower {
m.HandleFx(match.NewContext(m, &match.CreatureDestroyed{Card: defender, Source: attacker, Blocked: blocked}))
- m.Chat("Server", fmt.Sprintf("%s (%v) was destroyed by %s (%v)", defender.Name, defenderPower, attacker.Name, attackerPower))
+ m.Chat("Server", fmt.Sprintf("%s (%v) was destroyed by %s (%v)", ctx.Match.FormatDisplayableCard(defender), defenderPower, ctx.Match.FormatDisplayableCard(attacker), attackerPower))
} else if attackerPower == defenderPower {
m.HandleFx(match.NewContext(m, &match.CreatureDestroyed{Card: attacker, Source: defender, Blocked: blocked}))
- m.Chat("Server", fmt.Sprintf("%s (%v) was destroyed by %s (%v)", attacker.Name, attackerPower, defender.Name, defenderPower))
+ m.Chat("Server", fmt.Sprintf("%s (%v) was destroyed by %s (%v)", ctx.Match.FormatDisplayableCard(attacker), attackerPower, ctx.Match.FormatDisplayableCard(defender), defenderPower))
m.HandleFx(match.NewContext(m, &match.CreatureDestroyed{Card: defender, Source: attacker, Blocked: blocked}))
- m.Chat("Server", fmt.Sprintf("%s (%v) was destroyed by %s (%v)", defender.Name, defenderPower, attacker.Name, attackerPower))
+ m.Chat("Server", fmt.Sprintf("%s (%v) was destroyed by %s (%v)", ctx.Match.FormatDisplayableCard(defender), defenderPower, ctx.Match.FormatDisplayableCard(attacker), attackerPower))
} else if attackerPower < defenderPower {
m.HandleFx(match.NewContext(m, &match.CreatureDestroyed{Card: attacker, Source: defender, Blocked: blocked}))
- m.Chat("Server", fmt.Sprintf("%s (%v) was destroyed by %s (%v)", attacker.Name, attackerPower, defender.Name, defenderPower))
+ m.Chat("Server", fmt.Sprintf("%s (%v) was destroyed by %s (%v)", ctx.Match.FormatDisplayableCard(attacker), attackerPower, ctx.Match.FormatDisplayableCard(defender), defenderPower))
}
})
}
diff --git a/game/match/match.go b/game/match/match.go
index 91d89cb1..a6364f98 100644
--- a/game/match/match.go
+++ b/game/match/match.go
@@ -242,7 +242,7 @@ func (m *Match) MoveCard(card *Card, destination string, source *Card) {
return
}
- m.Chat("Server", fmt.Sprintf("%s was moved to %s %s by %s", card.Name, card.Player.Username(), destination, source.Name))
+ m.Chat("Server", fmt.Sprintf("%s was moved to %s %s by %s", m.FormatDisplayableCard(card), card.Player.Username(), destination, m.FormatDisplayableCard(source)))
}
@@ -422,6 +422,10 @@ func (m *Match) Chat(sender string, message string) {
m.ColorChat(sender, message, "#ccc")
}
+func (m *Match) FormatDisplayableCard(card *Card) string {
+ return fmt.Sprintf("(%s;%s)", card.Name, card.ImageID)
+}
+
func (m *Match) Broadcast(msg interface{}) {
defer func() {
@@ -925,7 +929,9 @@ func (m *Match) ChargeMana(p *PlayerReference, cardID string) {
if card, err := p.Player.MoveCard(cardID, HAND, MANAZONE, cardID); err == nil {
p.Player.HasChargedMana = true
m.BroadcastState()
- m.Chat("Server", fmt.Sprintf("%s was added to %s's manazone", card.Name, p.Socket.User.Username))
+ m.Chat("Server", fmt.Sprintf("%s was added to %s's manazone",
+ m.FormatDisplayableCard(card),
+ p.Socket.User.Username))
}
}
diff --git a/webapp/src/components/CardPreviewPopup.vue b/webapp/src/components/CardPreviewPopup.vue
new file mode 100644
index 00000000..6aa7ab23
--- /dev/null
+++ b/webapp/src/components/CardPreviewPopup.vue
@@ -0,0 +1,62 @@
+
+
+
+
{{ warning }}
@@ -240,6 +232,7 @@