mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
more events instead of direct calls are used for both log and sound system
This commit is contained in:
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -14232,7 +14232,6 @@ src/main/java/forge/game/event/GameEventCounterRemoved.java -text
|
|||||||
src/main/java/forge/game/event/GameEventDrawCard.java -text
|
src/main/java/forge/game/event/GameEventDrawCard.java -text
|
||||||
src/main/java/forge/game/event/GameEventDuelFinished.java -text
|
src/main/java/forge/game/event/GameEventDuelFinished.java -text
|
||||||
src/main/java/forge/game/event/GameEventDuelOutcome.java -text
|
src/main/java/forge/game/event/GameEventDuelOutcome.java -text
|
||||||
src/main/java/forge/game/event/GameEventEndOfTurn.java -text
|
|
||||||
src/main/java/forge/game/event/GameEventFlipCoin.java -text
|
src/main/java/forge/game/event/GameEventFlipCoin.java -text
|
||||||
src/main/java/forge/game/event/GameEventGameRestarted.java -text
|
src/main/java/forge/game/event/GameEventGameRestarted.java -text
|
||||||
src/main/java/forge/game/event/GameEventLandPlayed.java -text
|
src/main/java/forge/game/event/GameEventLandPlayed.java -text
|
||||||
@@ -14245,6 +14244,8 @@ src/main/java/forge/game/event/GameEventPlayerPoisoned.java -text
|
|||||||
src/main/java/forge/game/event/GameEventShuffle.java -text
|
src/main/java/forge/game/event/GameEventShuffle.java -text
|
||||||
src/main/java/forge/game/event/GameEventSpellResolved.java -text
|
src/main/java/forge/game/event/GameEventSpellResolved.java -text
|
||||||
src/main/java/forge/game/event/GameEventTokenCreated.java -text
|
src/main/java/forge/game/event/GameEventTokenCreated.java -text
|
||||||
|
src/main/java/forge/game/event/GameEventTurnBegan.java -text
|
||||||
|
src/main/java/forge/game/event/GameEventTurnEnded.java -text
|
||||||
src/main/java/forge/game/event/GameEventTurnPhase.java -text
|
src/main/java/forge/game/event/GameEventTurnPhase.java -text
|
||||||
src/main/java/forge/game/event/IGameEventVisitor.java -text
|
src/main/java/forge/game/event/IGameEventVisitor.java -text
|
||||||
src/main/java/forge/game/event/package-info.java -text
|
src/main/java/forge/game/event/package-info.java -text
|
||||||
|
|||||||
@@ -9,8 +9,11 @@ import com.google.common.eventbus.Subscribe;
|
|||||||
import forge.game.GameOutcome;
|
import forge.game.GameOutcome;
|
||||||
import forge.game.event.GameEventCardDamaged;
|
import forge.game.event.GameEventCardDamaged;
|
||||||
import forge.game.event.GameEventCardDamaged.DamageType;
|
import forge.game.event.GameEventCardDamaged.DamageType;
|
||||||
|
import forge.game.event.GameEventLandPlayed;
|
||||||
import forge.game.event.GameEventPlayerDamaged;
|
import forge.game.event.GameEventPlayerDamaged;
|
||||||
import forge.game.event.GameEventPlayerPoisoned;
|
import forge.game.event.GameEventPlayerPoisoned;
|
||||||
|
import forge.game.event.GameEventSpellResolved;
|
||||||
|
import forge.game.event.GameEventTurnBegan;
|
||||||
import forge.game.event.IGameEventVisitor;
|
import forge.game.event.IGameEventVisitor;
|
||||||
import forge.game.event.GameEventDuelOutcome;
|
import forge.game.event.GameEventDuelOutcome;
|
||||||
import forge.game.event.GameEvent;
|
import forge.game.event.GameEvent;
|
||||||
@@ -47,6 +50,15 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see forge.game.event.IGameEventVisitor.Base#visit(forge.game.event.GameEventSpellResolved)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public GameLogEntry visit(GameEventSpellResolved ev) {
|
||||||
|
String messageForLog = ev.hasFizzled ? ev.spell.getSourceCard().getName() + " ability fizzles." : ev.spell.getStackDescription();
|
||||||
|
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, messageForLog);
|
||||||
|
}
|
||||||
|
|
||||||
private GameLogEntry generateSummary(List<GameOutcome> gamesPlayed) {
|
private GameLogEntry generateSummary(List<GameOutcome> gamesPlayed) {
|
||||||
GameOutcome outcome1 = gamesPlayed.get(0);
|
GameOutcome outcome1 = gamesPlayed.get(0);
|
||||||
int[] wins = new int[outcome1.getNumPlayers()];
|
int[] wins = new int[outcome1.getNumPlayers()];
|
||||||
@@ -103,6 +115,20 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
|
|||||||
return new GameLogEntry(GameLogEntryType.DAMAGE, message);
|
return new GameLogEntry(GameLogEntryType.DAMAGE, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see forge.game.event.IGameEventVisitor.Base#visit(forge.game.event.GameEventLandPlayed)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public GameLogEntry visit(GameEventLandPlayed ev) {
|
||||||
|
String message = String.format("%s played %s", ev.player, ev.land);
|
||||||
|
return new GameLogEntry(GameLogEntryType.LAND, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GameLogEntry visit(GameEventTurnBegan event) {
|
||||||
|
String message = String.format( "Turn %d (%s)", event.turnNumber, event.turnOwner);
|
||||||
|
return new GameLogEntry(GameLogEntryType.TURN, message);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GameLogEntry visit(GameEventPlayerDamaged ev) {
|
public GameLogEntry visit(GameEventPlayerDamaged ev) {
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ import forge.game.player.Player;
|
|||||||
|
|
||||||
public class GameEventLandPlayed extends GameEvent {
|
public class GameEventLandPlayed extends GameEvent {
|
||||||
|
|
||||||
public final Player Player;
|
public final Player player;
|
||||||
public final Card Land;
|
public final Card land;
|
||||||
|
|
||||||
public GameEventLandPlayed(Player player, Card land) {
|
public GameEventLandPlayed(Player player, Card land) {
|
||||||
Player = player;
|
this.player = player;
|
||||||
Land = land;
|
this.land = land;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package forge.game.event;
|
package forge.game.event;
|
||||||
|
|
||||||
import forge.Card;
|
|
||||||
import forge.card.spellability.SpellAbility;
|
import forge.card.spellability.SpellAbility;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -9,18 +8,19 @@ import forge.card.spellability.SpellAbility;
|
|||||||
*/
|
*/
|
||||||
public class GameEventSpellResolved extends GameEvent {
|
public class GameEventSpellResolved extends GameEvent {
|
||||||
|
|
||||||
public final Card Source;
|
public final SpellAbility spell;
|
||||||
public final SpellAbility Spell;
|
public final boolean hasFizzled;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for Constructor.
|
* TODO: Write javadoc for Constructor.
|
||||||
* @param source
|
* @param source
|
||||||
* @param sa
|
* @param sa
|
||||||
|
* @param hasFizzled
|
||||||
*/
|
*/
|
||||||
public GameEventSpellResolved(Card source, SpellAbility sa) {
|
public GameEventSpellResolved(SpellAbility sa, boolean hasFizzled) {
|
||||||
// TODO Auto-generated constructor stub
|
// TODO Auto-generated constructor stub
|
||||||
Source = source;
|
this.spell = sa;
|
||||||
Spell = sa;
|
this.hasFizzled = hasFizzled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
20
src/main/java/forge/game/event/GameEventTurnBegan.java
Normal file
20
src/main/java/forge/game/event/GameEventTurnBegan.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package forge.game.event;
|
||||||
|
|
||||||
|
import forge.game.player.Player;
|
||||||
|
|
||||||
|
public class GameEventTurnBegan extends GameEvent {
|
||||||
|
|
||||||
|
public final Player turnOwner;
|
||||||
|
public final int turnNumber;
|
||||||
|
|
||||||
|
public GameEventTurnBegan(Player turnOwner, int turnNumber) {
|
||||||
|
super();
|
||||||
|
this.turnOwner = turnOwner;
|
||||||
|
this.turnNumber = turnNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
|
return visitor.visit(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package forge.game.event;
|
package forge.game.event;
|
||||||
|
|
||||||
public class GameEventEndOfTurn extends GameEvent {
|
public class GameEventTurnEnded extends GameEvent {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -19,7 +19,6 @@ public interface IGameEventVisitor<T> {
|
|||||||
T visit(GameEventDrawCard event);
|
T visit(GameEventDrawCard event);
|
||||||
T visit(GameEventDuelFinished event);
|
T visit(GameEventDuelFinished event);
|
||||||
T visit(GameEventDuelOutcome event);
|
T visit(GameEventDuelOutcome event);
|
||||||
T visit(GameEventEndOfTurn event);
|
|
||||||
T visit(GameEventFlipCoin event);
|
T visit(GameEventFlipCoin event);
|
||||||
T visit(GameEventGameRestarted event);
|
T visit(GameEventGameRestarted event);
|
||||||
T visit(GameEventLandPlayed event);
|
T visit(GameEventLandPlayed event);
|
||||||
@@ -32,6 +31,8 @@ public interface IGameEventVisitor<T> {
|
|||||||
T visit(GameEventShuffle event);
|
T visit(GameEventShuffle event);
|
||||||
T visit(GameEventSpellResolved event);
|
T visit(GameEventSpellResolved event);
|
||||||
T visit(GameEventTokenCreated event);
|
T visit(GameEventTokenCreated event);
|
||||||
|
T visit(GameEventTurnBegan gameEventTurnBegan);
|
||||||
|
T visit(GameEventTurnEnded event);
|
||||||
T visit(GameEventTurnPhase event);
|
T visit(GameEventTurnPhase event);
|
||||||
|
|
||||||
|
|
||||||
@@ -51,7 +52,6 @@ public interface IGameEventVisitor<T> {
|
|||||||
public T visit(GameEventDrawCard event) { return null; }
|
public T visit(GameEventDrawCard event) { return null; }
|
||||||
public T visit(GameEventDuelFinished event) { return null; }
|
public T visit(GameEventDuelFinished event) { return null; }
|
||||||
public T visit(GameEventDuelOutcome event) { return null; }
|
public T visit(GameEventDuelOutcome event) { return null; }
|
||||||
public T visit(GameEventEndOfTurn event) { return null; }
|
|
||||||
public T visit(GameEventFlipCoin event) { return null; }
|
public T visit(GameEventFlipCoin event) { return null; }
|
||||||
public T visit(GameEventGameRestarted event) { return null; }
|
public T visit(GameEventGameRestarted event) { return null; }
|
||||||
public T visit(GameEventLandPlayed event) { return null; }
|
public T visit(GameEventLandPlayed event) { return null; }
|
||||||
@@ -63,8 +63,13 @@ public interface IGameEventVisitor<T> {
|
|||||||
public T visit(GameEventShuffle event) { return null; }
|
public T visit(GameEventShuffle event) { return null; }
|
||||||
public T visit(GameEventSpellResolved event) { return null; }
|
public T visit(GameEventSpellResolved event) { return null; }
|
||||||
public T visit(GameEventTokenCreated event) { return null; }
|
public T visit(GameEventTokenCreated event) { return null; }
|
||||||
|
public T visit(GameEventTurnBegan event) { return null; }
|
||||||
|
public T visit(GameEventTurnEnded event) { return null; }
|
||||||
public T visit(GameEventTurnPhase event) { return null; }
|
public T visit(GameEventTurnPhase event) { return null; }
|
||||||
public T visit(GameEventPlayerDamaged event) { return null; }
|
public T visit(GameEventPlayerDamaged event) { return null; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,14 +26,14 @@ import org.apache.commons.lang.time.StopWatch;
|
|||||||
import forge.Card;
|
import forge.Card;
|
||||||
import forge.CardLists;
|
import forge.CardLists;
|
||||||
import forge.FThreads;
|
import forge.FThreads;
|
||||||
import forge.GameLogEntryType;
|
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.CardPredicates.Presets;
|
import forge.CardPredicates.Presets;
|
||||||
import forge.card.trigger.TriggerType;
|
import forge.card.trigger.TriggerType;
|
||||||
import forge.game.GameAge;
|
import forge.game.GameAge;
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.game.event.GameEventEndOfTurn;
|
import forge.game.event.GameEventTurnBegan;
|
||||||
|
import forge.game.event.GameEventTurnEnded;
|
||||||
import forge.game.event.GameEventGameRestarted;
|
import forge.game.event.GameEventGameRestarted;
|
||||||
import forge.game.event.GameEventManaBurn;
|
import forge.game.event.GameEventManaBurn;
|
||||||
import forge.game.event.GameEventTurnPhase;
|
import forge.game.event.GameEventTurnPhase;
|
||||||
@@ -197,7 +197,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
|
|||||||
|
|
||||||
if (this.phase == PhaseType.UNTAP) {
|
if (this.phase == PhaseType.UNTAP) {
|
||||||
this.turn++;
|
this.turn++;
|
||||||
game.getGameLog().add(GameLogEntryType.TURN, "Turn " + this.turn + " (" + this.getPlayerTurn() + ")");
|
game.fireEvent(new GameEventTurnBegan(playerTurn, turn));
|
||||||
}
|
}
|
||||||
|
|
||||||
game.fireEvent(new GameEventTurnPhase(this.getPlayerTurn(), this.getPhase(), phaseType));
|
game.fireEvent(new GameEventTurnPhase(this.getPlayerTurn(), this.getPhase(), phaseType));
|
||||||
@@ -426,7 +426,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
|
|||||||
}
|
}
|
||||||
this.planarDiceRolledthisTurn = 0;
|
this.planarDiceRolledthisTurn = 0;
|
||||||
// Play the End Turn sound
|
// Play the End Turn sound
|
||||||
game.fireEvent(new GameEventEndOfTurn());
|
game.fireEvent(new GameEventTurnEnded());
|
||||||
break;
|
break;
|
||||||
default: // no action
|
default: // no action
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1762,9 +1762,6 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
// etc...)
|
// etc...)
|
||||||
game.getAction().checkStateEffects();
|
game.getAction().checkStateEffects();
|
||||||
|
|
||||||
// add to log
|
|
||||||
game.getGameLog().add(GameLogEntryType.LAND, this + " played " + land);
|
|
||||||
|
|
||||||
// play a sound
|
// play a sound
|
||||||
game.fireEvent(new GameEventLandPlayed(this, land));
|
game.fireEvent(new GameEventLandPlayed(this, land));
|
||||||
|
|
||||||
|
|||||||
@@ -601,8 +601,7 @@ public class MagicStack extends MyObservable implements Iterable<SpellAbilitySta
|
|||||||
curResolvingCard = source;
|
curResolvingCard = source;
|
||||||
|
|
||||||
boolean thisHasFizzled = this.hasFizzled(sa, source, false);
|
boolean thisHasFizzled = this.hasFizzled(sa, source, false);
|
||||||
String messageForLog = thisHasFizzled ? source.getName() + " ability fizzles." : sa.getStackDescription();
|
|
||||||
game.getGameLog().add(GameLogEntryType.STACK_RESOLVE, messageForLog);
|
|
||||||
if (thisHasFizzled) { // Fizzle
|
if (thisHasFizzled) { // Fizzle
|
||||||
// TODO: Spell fizzles, what's the best way to alert player?
|
// TODO: Spell fizzles, what's the best way to alert player?
|
||||||
Log.debug(source.getName() + " ability fizzles.");
|
Log.debug(source.getName() + " ability fizzles.");
|
||||||
@@ -617,7 +616,7 @@ public class MagicStack extends MyObservable implements Iterable<SpellAbilitySta
|
|||||||
}
|
}
|
||||||
sa.getSourceCard().setXManaCostPaid(0);
|
sa.getSourceCard().setXManaCostPaid(0);
|
||||||
|
|
||||||
game.fireEvent(new GameEventSpellResolved(source, sa));
|
game.fireEvent(new GameEventSpellResolved(sa, thisHasFizzled));
|
||||||
|
|
||||||
if (source.hasStartOfKeyword("Haunt") && !source.isCreature()
|
if (source.hasStartOfKeyword("Haunt") && !source.isCreature()
|
||||||
&& game.getZoneOf(source).is(ZoneType.Graveyard)) {
|
&& game.getZoneOf(source).is(ZoneType.Graveyard)) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import forge.game.event.GameEventCounterAdded;
|
|||||||
import forge.game.event.GameEventCounterRemoved;
|
import forge.game.event.GameEventCounterRemoved;
|
||||||
import forge.game.event.GameEventDrawCard;
|
import forge.game.event.GameEventDrawCard;
|
||||||
import forge.game.event.GameEventDuelOutcome;
|
import forge.game.event.GameEventDuelOutcome;
|
||||||
import forge.game.event.GameEventEndOfTurn;
|
import forge.game.event.GameEventTurnEnded;
|
||||||
import forge.game.event.GameEvent;
|
import forge.game.event.GameEvent;
|
||||||
import forge.game.event.GameEventFlipCoin;
|
import forge.game.event.GameEventFlipCoin;
|
||||||
import forge.game.event.GameEventLandPlayed;
|
import forge.game.event.GameEventLandPlayed;
|
||||||
@@ -43,7 +43,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> {
|
|||||||
public SoundEffectType visit(GameEventCounterAdded event) { return event.Amount > 0 ? SoundEffectType.AddCounter : null; }
|
public SoundEffectType visit(GameEventCounterAdded event) { return event.Amount > 0 ? SoundEffectType.AddCounter : null; }
|
||||||
public SoundEffectType visit(GameEventCounterRemoved event) { return event.Amount > 0 ? SoundEffectType.RemoveCounter : null; }
|
public SoundEffectType visit(GameEventCounterRemoved event) { return event.Amount > 0 ? SoundEffectType.RemoveCounter : null; }
|
||||||
public SoundEffectType visit(GameEventDrawCard event) { return SoundEffectType.Draw; }
|
public SoundEffectType visit(GameEventDrawCard event) { return SoundEffectType.Draw; }
|
||||||
public SoundEffectType visit(GameEventEndOfTurn event) { return SoundEffectType.EndOfTurn; }
|
public SoundEffectType visit(GameEventTurnEnded event) { return SoundEffectType.EndOfTurn; }
|
||||||
public SoundEffectType visit(GameEventFlipCoin event) { return SoundEffectType.FlipCoin; }
|
public SoundEffectType visit(GameEventFlipCoin event) { return SoundEffectType.FlipCoin; }
|
||||||
public SoundEffectType visit(GameEventLifeLoss event) { return SoundEffectType.LifeLoss; }
|
public SoundEffectType visit(GameEventLifeLoss event) { return SoundEffectType.LifeLoss; }
|
||||||
public SoundEffectType visit(GameEventPlayerPoisoned event) { return SoundEffectType.Poison; }
|
public SoundEffectType visit(GameEventPlayerPoisoned event) { return SoundEffectType.Poison; }
|
||||||
@@ -63,14 +63,12 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> {
|
|||||||
* ability resolves on the stack.
|
* ability resolves on the stack.
|
||||||
*/
|
*/
|
||||||
public SoundEffectType visit(GameEventSpellResolved evt) {
|
public SoundEffectType visit(GameEventSpellResolved evt) {
|
||||||
Card source = evt.Source;
|
if (evt.spell == null ) {
|
||||||
SpellAbility sa = evt.Spell;
|
|
||||||
|
|
||||||
if (sa == null || source == null) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sa.isSpell()) {
|
Card source = evt.spell.getSourceCard();
|
||||||
|
if (!evt.spell.isSpell()) {
|
||||||
// if there's a specific effect for this particular card, play it and
|
// if there's a specific effect for this particular card, play it and
|
||||||
// we're done.
|
// we're done.
|
||||||
if (hasSpecificCardEffect(source)) {
|
if (hasSpecificCardEffect(source)) {
|
||||||
@@ -115,18 +113,17 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> {
|
|||||||
* @return the sound effect type
|
* @return the sound effect type
|
||||||
*/
|
*/
|
||||||
public SoundEffectType visit(GameEventLandPlayed event) {
|
public SoundEffectType visit(GameEventLandPlayed event) {
|
||||||
Card land = event.Land;
|
if (event.land == null) {
|
||||||
if (land == null) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if there's a specific effect for this particular card, play it and
|
// if there's a specific effect for this particular card, play it and
|
||||||
// we're done.
|
// we're done.
|
||||||
if (hasSpecificCardEffect(land)) {
|
if (hasSpecificCardEffect(event.land)) {
|
||||||
return SoundEffectType.ScriptedEffect;
|
return SoundEffectType.ScriptedEffect;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (SpellAbility sa : land.getManaAbility()) {
|
for (SpellAbility sa : event.land.getManaAbility()) {
|
||||||
String manaColors = sa.getManaPartRecursive().getOrigProduced();
|
String manaColors = sa.getManaPartRecursive().getOrigProduced();
|
||||||
|
|
||||||
if (manaColors.contains("B")) return SoundEffectType.BlackLand;
|
if (manaColors.contains("B")) return SoundEffectType.BlackLand;
|
||||||
@@ -168,9 +165,9 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> {
|
|||||||
Card c = null;
|
Card c = null;
|
||||||
|
|
||||||
if (evt instanceof GameEventSpellResolved) {
|
if (evt instanceof GameEventSpellResolved) {
|
||||||
c = ((GameEventSpellResolved) evt).Source;
|
c = ((GameEventSpellResolved) evt).spell.getSourceCard();
|
||||||
} else if (evt instanceof GameEventLandPlayed) {
|
} else if (evt instanceof GameEventLandPlayed) {
|
||||||
c = ((GameEventLandPlayed) evt).Land;
|
c = ((GameEventLandPlayed) evt).land;
|
||||||
}
|
}
|
||||||
|
|
||||||
return c != null ? c.getSVar("SoundEffect") : "";
|
return c != null ? c.getSVar("SoundEffect") : "";
|
||||||
|
|||||||
Reference in New Issue
Block a user