mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
- Added Scrambleverse
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -9937,6 +9937,7 @@ forge-gui/res/cardsfolder/s/scouting_trek.txt -text
|
||||
forge-gui/res/cardsfolder/s/scouts_warning.txt -text
|
||||
forge-gui/res/cardsfolder/s/scrabbling_claws.txt -text
|
||||
forge-gui/res/cardsfolder/s/scragnoth.txt svneol=native#text/plain
|
||||
forge-gui/res/cardsfolder/s/scrambleverse.txt -text
|
||||
forge-gui/res/cardsfolder/s/scrap.txt svneol=native#text/plain
|
||||
forge-gui/res/cardsfolder/s/scrapbasket.txt svneol=native#text/plain
|
||||
forge-gui/res/cardsfolder/s/scrapdiver_serpent.txt svneol=native#text/plain
|
||||
|
||||
9
forge-gui/res/cardsfolder/s/scrambleverse.txt
Normal file
9
forge-gui/res/cardsfolder/s/scrambleverse.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Scrambleverse
|
||||
ManaCost:6 R R
|
||||
Types:Sorcery
|
||||
A:SP$ RepeatEach | Cost$ 6 R R | RecordChoice$ True | ChoosePlayer$ True | Random$ True | RepeatSubAbility$ DBGainControl | RepeatCards$ Permanent.nonLand | SpellDescription$ For each nonland permanent, choose a player at random. Then each player gains control of each permanent for which he or she was chosen. Untap those permanents.
|
||||
SVar:DBGainControl:DB$ GainControl | NewController$ Player.IsRemembered | AllValid$ Permanent.IsImprinted | Untap$ True
|
||||
SVar:RemAIDeck:True
|
||||
SVar:RemRandomDeck:True
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/scrambleverse.jpg
|
||||
Oracle:For each nonland permanent, choose a player at random. Then each player gains control of each permanent for which he or she was chosen. Untap those permanents.
|
||||
@@ -1,10 +1,15 @@
|
||||
package forge.game.ability.effects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import forge.game.Game;
|
||||
import forge.game.ability.AbilityFactory;
|
||||
import forge.game.ability.AbilityUtils;
|
||||
@@ -17,6 +22,7 @@ import forge.game.spellability.AbilitySub;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.gui.GuiChoose;
|
||||
import forge.util.Aggregates;
|
||||
|
||||
public class RepeatEachEffect extends SpellAbilityEffect {
|
||||
|
||||
@@ -36,6 +42,7 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
||||
|
||||
boolean useImprinted = sa.hasParam("UseImprinted");
|
||||
boolean loopOverCards = false;
|
||||
boolean recordChoice = sa.hasParam("RecordChoice");
|
||||
List<Card> repeatCards = null;
|
||||
|
||||
if (sa.hasParam("RepeatCards")) {
|
||||
@@ -47,7 +54,7 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
||||
}
|
||||
repeatCards = CardLists.getValidCards(game.getCardsIn(zone),
|
||||
sa.getParam("RepeatCards"), source.getController(), source);
|
||||
loopOverCards = true;
|
||||
loopOverCards = !recordChoice;
|
||||
}
|
||||
else if (sa.hasParam("DefinedCards")) {
|
||||
repeatCards = AbilityUtils.getDefinedCards(source, sa.getParam("DefinedCards"), sa);
|
||||
@@ -109,5 +116,32 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
||||
AbilityUtils.resolve(repeat);
|
||||
}
|
||||
}
|
||||
if (recordChoice) {
|
||||
boolean random = sa.hasParam("Random");
|
||||
if (sa.hasParam("ChoosePlayer")) {
|
||||
Map<Player, List<Card>> recordMap = new HashMap<Player, List<Card>>();
|
||||
for (Card card : repeatCards) {
|
||||
Player p;
|
||||
if (random) {
|
||||
p = Aggregates.random(game.getPlayers());
|
||||
} else {
|
||||
p = sa.getActivatingPlayer().getController().chooseSinglePlayerForEffect(game.getPlayers(), sa, "Choose a player");
|
||||
}
|
||||
if (recordMap.containsKey(p)) {
|
||||
recordMap.get(p).add(0, card);
|
||||
} else {
|
||||
recordMap.put(p, Lists.newArrayList(card));
|
||||
}
|
||||
}
|
||||
for (Entry<Player, List<Card>> entry : recordMap.entrySet()) {
|
||||
// Remember the player and imprint the cards
|
||||
source.addRemembered(entry.getKey());
|
||||
source.getImprinted().addAll(entry.getValue());
|
||||
AbilityUtils.resolve(repeat);
|
||||
source.removeRemembered(entry.getKey());
|
||||
source.getImprinted().removeAll(entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user