Merge remote-tracking branch 'upstream/master'

This commit is contained in:
CCTV-1
2020-04-08 08:47:11 +08:00
19 changed files with 182 additions and 35 deletions

View File

@@ -83,9 +83,13 @@ public class MatchScreen extends FScreen {
scroller = add(new FieldScroller());
int humanCount = 0;
for (VPlayerPanel playerPanel : playerPanels0) {
playerPanels.put(playerPanel.getPlayer(), scroller.add(playerPanel));
playerPanel.setFlipped(true);
if(!playerPanel.getPlayer().isAI())
humanCount++;
}
bottomPlayerPanel = playerPanels0.get(0);
bottomPlayerPanel.setFlipped(false);
@@ -110,31 +114,26 @@ public class MatchScreen extends FScreen {
}
}));
if (MatchController.instance.getLocalPlayerCount() <= 1 || MatchController.instance.hotSeatMode()) {
if (humanCount < 2 || MatchController.instance.hotSeatMode() || GuiBase.isNetworkplay())
topPlayerPrompt = null;
}
else {
if (GuiBase.isNetworkplay()) {
topPlayerPrompt = null;
} else {
//show top prompt if multiple human players and not playing in Hot Seat mode and not in network play
topPlayerPrompt = add(new VPrompt("", "",
new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
getGameController().selectButtonOk();
}
},
new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
getGameController().selectButtonCancel();
}
}));
topPlayerPrompt.setRotate180(true);
topPlayerPanel.setRotate180(true);
getHeader().setRotate90(true);
}
//show top prompt if multiple human players and not playing in Hot Seat mode and not in network play
topPlayerPrompt = add(new VPrompt("", "",
new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
getGameController().selectButtonOk();
}
},
new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
getGameController().selectButtonCancel();
}
}));
topPlayerPrompt.setRotate180(true);
topPlayerPanel.setRotate180(true);
getHeader().setRotate90(true);
}
gameMenu = new VGameMenu();

View File

@@ -24,7 +24,7 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
private static GameLobby gameLobby;
public GameLobby getGameLobby() {
public static GameLobby getGameLobby() {
return gameLobby;
}
@@ -114,6 +114,8 @@ public class OnlineLobbyScreen extends LobbyScreen implements IOnlineLobby {
}
});
}
//update menu buttons
OnlineScreen.Lobby.update();
}
});
}

View File

@@ -16,11 +16,13 @@ import forge.toolbox.FOptionPane;
import forge.util.Callback;
import forge.util.Localizer;
import static forge.screens.online.OnlineLobbyScreen.getGameLobby;
public class OnlineMenu extends FPopupMenu {
public enum OnlineScreen {
Lobby("lblLobby", FSkinImage.FAVICON, OnlineLobbyScreen.class),
Chat("lblChat", FSkinImage.QUEST_NOTES, OnlineChatScreen.class),
Disconnect("lblDisconnect", FSkinImage.EXILE, null);
Disconnect("lblDisconnect", FSkinImage.DELETE, null);
private final FMenuItem item;
private final Class<? extends FScreen> screenClass;
@@ -73,6 +75,7 @@ public class OnlineMenu extends FPopupMenu {
return;
}
}
update();
}
public void open() {
@@ -89,6 +92,17 @@ public class OnlineMenu extends FPopupMenu {
initializeScreen();
return screen;
}
public void update(){
for (OnlineScreen ngs : OnlineScreen.values()) {
if (ngs.ordinal() == 2){ //disconect
if (getGameLobby() == null)
ngs.item.setEnabled(false);
else
ngs.item.setEnabled(true);
}
}
}
}
private static final ForgePreferences prefs = FModel.getPreferences();

View File

@@ -2,5 +2,5 @@ Name:Back for More
ManaCost:4 B G
Types:Instant
A:SP$ ChangeZone | Cost$ 4 B G | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | SubAbility$ DBFight | StackDescription$ SpellDescription | SpellDescription$ Return target creature card from your graveyard to the battlefield. When you do, it fights up to one target creature you don't control.
SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control | StackDescription$ None
Oracle:Return target creature card from your graveyard to the battlefield. When you do, it fights up to one target creature you don't control. (Each deals damage equal to its power to the other.)

View File

@@ -0,0 +1,9 @@
Name:Bastion of Remembrance
ManaCost:2 B
Types:Enchantment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 white Human Soldier creature token.
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_human_soldier | TokenOwner$ You | LegacyImage$ w 1 1 human soldier iko
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever a creature you control dies, each opponent loses 1 life and you gain 1 life.
SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
Oracle:When Bastion of Remembrance enters the battlefield, create a 1/1 white Human Soldier creature token.\nWhenever a creature you control dies, each opponent loses 1 life and you gain 1 life.

View File

@@ -0,0 +1,6 @@
Name:Blood Curdle
ManaCost:3 B
Types:Instant
A:SP$ Destroy | Cost$ 3 B | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBPutCounter | StackDescription$ SpellDescription | SpellDescription$ Destroy target creature. Put a menace counter on a creature you control.
SVar:DBPutCounter:DB$ PutCounter | Choices$ Creature.YouCtrl | CounterType$ MENACE | CounterNum$ 1
Oracle:Destroy target creature. Put a menace counter on a creature you control. (It can't be blocked except by two or more creatures.)

View File

@@ -0,0 +1,19 @@
Name:Crystalline Giant
ManaCost:3
Types:Artifact Creature Giant
PT:3/3
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigCharm | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, choose flying, first strike, deathtouch, hexproof, lifelink, menace, reach, trample, vigilance, or +1/+1 at random. Put a counter of that kind on CARDNAME.
SVar:TrigCharm:DB$ Charm | Random$ True | Choices$ Flying,FirstStrike,Deathtouch,Hexproof,Lifelink,Menace,Reach,Trample,Vigilance,P1P1
SVar:Flying:DB$ PutCounter | CounterType$ FLYING | CounterNum$ 1 | SpellDescription$ Flying
SVar:FirstStrike:DB$ PutCounter | CounterType$ FIRST STRIKE | CounterNum$ 1 | SpellDescription$ First Strike
SVar:Deathtouch:DB$ PutCounter | CounterType$ DEATHTOUCH | CounterNum$ 1 | SpellDescription$ Deathtouch
SVar:Hexproof:DB$ PutCounter | CounterType$ HEXPROOF | CounterNum$ 1 | SpellDescription$ Hexproof
SVar:Lifelink:DB$ PutCounter | CounterType$ LIFELINK | CounterNum$ 1 | SpellDescription$ Lifelink
SVar:Menace:DB$ PutCounter | CounterType$ MENACE | CounterNum$ 1 | SpellDescription$ Menace
SVar:Reach:DB$ PutCounter | CounterType$ REACH | CounterNum$ 1 | SpellDescription$ Reach
SVar:Trample:DB$ PutCounter | CounterType$ TRAMPLE | CounterNum$ 1 | SpellDescription$ Trample
SVar:Vigilance:DB$ PutCounter | CounterType$ VIGILANCE | CounterNum$ 1 | SpellDescription$ Vigilance
SVar:P1P1:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ +1/+1
SVar:PlayMain1:TRUE
DeckHas:Ability$Counters
Oracle:At the beginning of combat on your turn, choose flying, first strike, deathtouch, hexproof, lifelink, menace, reach, trample, vigilance, or +1/+1 at random. Put a counter of that kind on Crystalline Giant.

View File

@@ -0,0 +1,11 @@
Name:Footfall Crater
ManaCost:R
Types:Enchantment Aura
K:Enchant land
K:Cycling:1
A:SP$ Attach | Cost$ R | ValidTgts$ Land | TgtPrompt$ Select target land | AILogic$ Pump
S:Mode$ Continuous | Affected$ Land.AttachedBy | AddAbility$ DBPump | Description$ Enchanted land has "{T}: Target creature gains trample and haste until end of turn."
SVar:DBPump:AB$ Pump | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Trample & Haste | SpellDescription$ Target creature gains trample and haste until end of turn.
SVar:NonStackingAttachEffect:True
SVar:PlayMain1:TRUE
Oracle:Enchant land\nEnchanted land has "{T}: Target creature gains trample and haste until end of turn."\nCycling {1} ({1}, Discard this card: Draw a card.)

View File

@@ -0,0 +1,13 @@
Name:Grimdancer
ManaCost:1 B B
Types:Creature Nightmare
PT:3/3
K:ETBReplacement:Other:CounterChoice
SVar:CounterChoice:DB$ GenericChoice | Defined$ You | Choices$ MeDe,DeLi,MeLi | SpellDescription$ CARDNAME enters the battlefield with your choice of two different counters on it from among menace, deathtouch, and lifelink.
SVar:MeDe:DB$ PutCounter | CounterType$ MENACE | CounterNum$ 1 | SubAbility$ Deathtouch | SpellDescription$ Menace and Deathtouch
SVar:Deathtouch:DB$ PutCounter | CounterType$ DEATHTOUCH | CounterNum$ 1
SVar:DeLi:DB$ PutCounter | CounterType$ DEATHTOUCH | CounterNum$ 1 | SubAbility$ Lifelink | SpellDescription$ Deathtouch and Lifelink
SVar:Lifelink:DB$ PutCounter | CounterType$ LIFELINK | CounterNum$ 1
SVar:MeLi:DB$ PutCounter | CounterType$ MENACE | CounterNum$ 1 | SubAbility$ Lifelink | SpellDescription$ Menace and Lifelink
DeckHas:Ability$Counters
Oracle:Grimdancer enters the battlefield with your choice of two different counters on it from among menace, deathtouch, and lifelink.

View File

@@ -0,0 +1,9 @@
Name:Luminous Broodmoth
ManaCost:2 W W
Types:Creature Insect
PT:3/4
K:Flying
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl+withoutFlying | Execute$ TrigReturn | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature you control without flying dies, return it to the battlefield under its owner's control with a flying counter on it.
SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ TriggeredCard | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | CounterType$ FLYING | CounterNum$ 1 | Defined$ TriggeredCard
Oracle:Flying\nWhenever a creature you control without flying dies, return it to the battlefield under its owner's control with a flying counter on it.

View File

@@ -2,14 +2,10 @@ Name:Primal Empathy
ManaCost:1 G U
Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigBranch | TriggerDescription$ At the beginning of your upkeep, draw a card if you control a creature with the greatest power among creatures on the battlefield. Otherwise, put a +1/+1 counter on a creature you control.
SVar:TrigBranch:DB$ Branch | BranchConditionSVar$ X | References$ X | TrueSubAbility TrigBranch2 | FalseSubAbility$ DBPutCounter
SVar:TrigBranch2:DB$ Branch | BranchConditionSVar$ GreatPow | References$ GreatPow | TrueSubAbility$ DBDraw | FalseSubAbility$ DBPutCounter
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1
SVar:DBPutCounter:DB$ PutCounter | Choices$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1
SVar:GreatPow:Count$Compare Diff GE0.1.0
SVar:X:Count$Valid Creature.YouCtrl
SVar:Y:Count$GreatestPower_Creature.YouDontCtrl
SVar:Z:Count$GreatestPower_Creature.YouCtrl
SVar:Diff:SVar$Z/Minus.Y
SVar:TrigBranch:DB$ Branch | References$ Y,Z | ConditionPresent$ Creature.YouCtrl | ConditionCompare$ GE1 | BranchConditionSVar$ Y | BranchConditionSVarCompare$ GEZ | TrueSubAbility$ Draw | FalseSubAbility$ PutCounter
SVar:Draw:DB$ Draw | Defined$ You | NumCards$ 1
SVar:PutCounter:DB$ PutCounter | Choices$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1
SVar:Y:Count$GreatestPower_Creature.YouCtrl
SVar:Z:Count$GreatestPower_Creature.YouDontCtrl
DeckHas:Ability$Counters
Oracle:At the beginning of your upkeep, draw a card if you control a creature with the greatest power among creatures on the battlefield. Otherwise, put a +1/+1 counter on a creature you control.

View File

@@ -0,0 +1,7 @@
Name:Thieving Otter
ManaCost:2 U
Types:Creature Otter
PT:2/2
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals damage to an opponent, draw a card.
SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1
Oracle:Whenever Thieving Otter deals damage to an opponent, draw a card.

View File

@@ -0,0 +1,9 @@
Name:Titanoth Rex
ManaCost:7 G G
Types:Creature Dinosaur Beast
PT:11/11
K:Trample
K:Cycling:1 G
T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ When you cycle CARDNAME, put a trample counter on target creature you control.
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ TRAMPLE | CounterNum$ 1
Oracle:Trample\nCycling {1}{G} ({1}{G}, Discard this card: Draw a card.)\nWhen you cycle Titanoth Rex, put a trample counter on target creature you control.

View File

@@ -0,0 +1,9 @@
Name:Void Beckoner
ManaCost:6 B B
Types:Creature Nightmare Horror
PT:8/8
K:Deathtouch
K:Cycling:2 B
T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ When you cycle CARDNAME, put a deathtouch counter on target creature you control.
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ DEATHTOUCH | CounterNum$ 1
Oracle:Deathtouch\nCycling {2}{B} ({2}{B}, Discard this card: Draw a card.)\nWhen you cycle Void Beckoner, put a deathtouch counter on target creature you control.

View File

@@ -0,0 +1,8 @@
Name:Voracious Greatshark
ManaCost:3 U U
Types:Creature Shark
PT:5/4
K:Flash
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescription$ When CARDNAME enters the battlefield, counter target artifact or creature spell.
SVar:TrigCounter:DB$ Counter | TargetType$ Spell | ValidTgts$ Artifact,Creature | TgtPrompt$ Select target artifact or creature spell
Oracle:Flash\nWhen Voracious Greatshark enters the battlefield, counter target artifact or creature spell.

View File

@@ -0,0 +1,10 @@
Name:Wingfold Pteron
ManaCost:5 U
Types:Creature Dinosaur
PT:3/6
K:ETBReplacement:Other:CounterChoice
SVar:CounterChoice:DB$ GenericChoice | Defined$ You | Choices$ Flying,Hexproof | SpellDescription$ CARDNAME enters the battlefield with your choice of a flying counter or a hexproof counter on it.
SVar:Flying:DB$ PutCounter | CounterType$ FLYING | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a flying counter
SVar:Hexproof:DB$ PutCounter | CounterType$ HEXPROOF | CounterNum$ 1 | SpellDescription$ CARDNAME enters the battlefield with a hexproof counter
DeckHas:Ability$Counters
Oracle:Wingfold Pteron enters the battlefield with your choice of a flying counter or a hexproof counter on it. (A creature with hexproof can't be the target of spells or abilities your opponents control.)

View File

@@ -0,0 +1,14 @@
Name:Yidaro, Wandering Monster
ManaCost:5 R R
Types:Legendary Creature Dinosaur Turtle
PT:8/8
K:Haste
K:Trample
K:Cycling:1 R
T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ DBEffect | TriggerDescription$ When you cycle CARDNAME, shuffle it into your library from your graveyard. If you've cycled a card named CARDNAME four or more times this game, put it onto the battlefield from your graveyard instead. (Do this before you draw.)
SVar:DBEffect:DB$ Effect | Duration$ Permanent | Name$ Wandering Effect | SubAbility$ DBBranch
SVar:DBBranch:DB$ Branch | References$ X | BranchConditionSVar$ X | BranchConditionSVarCompare$ GE4 | TrueSubAbility$ DBChangeZone1 | FalseSubAbility$ DBChangeZone2
SVar:DBChangeZone1:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ TriggeredCard
SVar:DBChangeZone2:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | Shuffle$ True | Defined$ TriggeredCard
SVar:X:Count$ValidCommand Effect.YouCtrl+namedWandering Effect
Oracle:Trample, haste\nCycling {1}{R}\nWhen you cycle Yidaro, Wandering Monster, shuffle it into your library from your graveyard. If you've cycled a card named Yidaro, Wandering Monster four or more times this game, put it onto the battlefield from your graveyard instead. (Do this before you draw.)

View File

@@ -0,0 +1,8 @@
Name:Zagoth Crystal
ManaCost:3
Types:Artifact
A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add {B}.
A:AB$ Mana | Cost$ T | Produced$ G | SpellDescription$ Add {G}.
A:AB$ Mana | Cost$ T | Produced$ U | SpellDescription$ Add {U}.
K:Cycling:2
Oracle:{T}: Add {B}, {G}, or {U}.\nCycling {2} ({2}, Discard this card: Draw a card.)

View File

@@ -45,6 +45,10 @@ Type=Other
53 M Narset, Enlightened Master
54 M Oona, Queen of the Fae
55 M Saskia the Unyielding
59 R Squire
60 R Storm Crow
61 R Goblin Snowman
62 R Mudhole
68 M Heliod, God of the Sun
69 M Karametra, God of Harvests
70 M Iroas, God of Victory