- Added Scrambleverse

This commit is contained in:
swordshine
2013-12-20 00:33:16 +00:00
parent ef332e4568
commit fdc2eb66aa
3 changed files with 45 additions and 1 deletions

1
.gitattributes vendored
View File

@@ -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

View 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.

View File

@@ -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());
}
}
}
}
}