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/scouts_warning.txt -text
|
||||||
forge-gui/res/cardsfolder/s/scrabbling_claws.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/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/scrap.txt svneol=native#text/plain
|
||||||
forge-gui/res/cardsfolder/s/scrapbasket.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
|
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;
|
package forge.game.ability.effects;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.ability.AbilityFactory;
|
import forge.game.ability.AbilityFactory;
|
||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
@@ -17,6 +22,7 @@ import forge.game.spellability.AbilitySub;
|
|||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.gui.GuiChoose;
|
import forge.gui.GuiChoose;
|
||||||
|
import forge.util.Aggregates;
|
||||||
|
|
||||||
public class RepeatEachEffect extends SpellAbilityEffect {
|
public class RepeatEachEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -36,6 +42,7 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
boolean useImprinted = sa.hasParam("UseImprinted");
|
boolean useImprinted = sa.hasParam("UseImprinted");
|
||||||
boolean loopOverCards = false;
|
boolean loopOverCards = false;
|
||||||
|
boolean recordChoice = sa.hasParam("RecordChoice");
|
||||||
List<Card> repeatCards = null;
|
List<Card> repeatCards = null;
|
||||||
|
|
||||||
if (sa.hasParam("RepeatCards")) {
|
if (sa.hasParam("RepeatCards")) {
|
||||||
@@ -47,7 +54,7 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
repeatCards = CardLists.getValidCards(game.getCardsIn(zone),
|
repeatCards = CardLists.getValidCards(game.getCardsIn(zone),
|
||||||
sa.getParam("RepeatCards"), source.getController(), source);
|
sa.getParam("RepeatCards"), source.getController(), source);
|
||||||
loopOverCards = true;
|
loopOverCards = !recordChoice;
|
||||||
}
|
}
|
||||||
else if (sa.hasParam("DefinedCards")) {
|
else if (sa.hasParam("DefinedCards")) {
|
||||||
repeatCards = AbilityUtils.getDefinedCards(source, sa.getParam("DefinedCards"), sa);
|
repeatCards = AbilityUtils.getDefinedCards(source, sa.getParam("DefinedCards"), sa);
|
||||||
@@ -109,5 +116,32 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
|||||||
AbilityUtils.resolve(repeat);
|
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