mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
Add 5 Arena Tutorial Cards (as custom set) (#12627)
This commit is contained in:
parent
b016e0fa71
commit
4a041aa89c
9 changed files with 219 additions and 6 deletions
|
|
@ -25,6 +25,7 @@ public enum GrabbagImageSource implements CardImageSource {
|
|||
private static final Set<String> supportedSets = new LinkedHashSet<String>() {
|
||||
{
|
||||
add("SWS");
|
||||
add("ATC");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -469,6 +470,11 @@ public enum GrabbagImageSource implements CardImageSource {
|
|||
singleLinks.put("SWS/War Room (Star Wars)", "pqQ9kzt.jpeg");
|
||||
singleLinks.put("SWS/Xyston Star Destroyer", "oqbHtUC.jpeg");
|
||||
singleLinks.put("SWS/Zorii Bliss", "vOyNE39.jpeg");
|
||||
singleLinks.put("ATC/Blinding Radiance", "4B4lBl5.jpeg");
|
||||
singleLinks.put("ATC/Goblin Bruiser", "Di5I8tS.jpeg");
|
||||
singleLinks.put("ATC/Ogre Painbringer", "eA3zL7Y.jpeg");
|
||||
singleLinks.put("ATC/Titanic Pelagosaur", "KWSsiKD.jpeg");
|
||||
singleLinks.put("ATC/Treetop Recluse", "uHnQYpp.jpeg");
|
||||
|
||||
// Emblems
|
||||
singleLinks.put("SWS/Emblem Obi-Wan Kenobi", "Qyc10aT.png");
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ public class DownloadPicturesService extends DefaultBoundedRangeModel implements
|
|||
SCRYFALL_BIG("2a. scryfall.com - BIG: high quality (~15 GB)", ScryfallImageSource.getInstance()),
|
||||
SCRYFALL_NORM("2b. scryfall.com - normal: good quality (~10 GB)", ScryfallImageSourceNormal.getInstance()),
|
||||
SCRYFALL_SMALL("2c. scryfall.com - small: low quality, unreadable text (~1.5 GB)", ScryfallImageSourceSmall.getInstance()),
|
||||
GRAB_BAG("3. GrabBag - unofficial STAR WARS cards and tokens", GrabbagImageSource.instance),
|
||||
GRAB_BAG("3. GrabBag - Arena Tutorial cards, unofficial STAR WARS cards and tokens", GrabbagImageSource.instance),
|
||||
COPYPASTE("4. Experimental - copy and paste image URLs", CopyPasteImageSource.instance); // TODO: need rework for user friendly GUI
|
||||
|
||||
private final String text;
|
||||
|
|
|
|||
40
Mage.Sets/src/mage/cards/b/BlindingRadiance.java
Normal file
40
Mage.Sets/src/mage/cards/b/BlindingRadiance.java
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
package mage.cards.b;
|
||||
|
||||
import mage.abilities.effects.common.TapAllEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.common.FilterOpponentsCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.ToughnessPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
||||
@author JayDi85*/
|
||||
public final class BlindingRadiance extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterOpponentsCreaturePermanent("creatures your opponents control with toughness 2 or less");
|
||||
static {
|
||||
filter.add(new ToughnessPredicate(ComparisonType.FEWER_THAN, 3));
|
||||
}
|
||||
|
||||
public BlindingRadiance(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}");
|
||||
|
||||
// Tap all creatures your opponents control with toughness 2 or less.
|
||||
TapAllEffect effect = new TapAllEffect(filter);
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
}
|
||||
|
||||
private BlindingRadiance(final BlindingRadiance card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlindingRadiance copy() {
|
||||
return new BlindingRadiance(this);
|
||||
}
|
||||
}
|
||||
33
Mage.Sets/src/mage/cards/g/GoblinBruiser.java
Normal file
33
Mage.Sets/src/mage/cards/g/GoblinBruiser.java
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
||||
@author JayDi85*/
|
||||
public final class GoblinBruiser extends CardImpl {
|
||||
|
||||
public GoblinBruiser(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
|
||||
this.subtype.add(SubType.GOBLIN);
|
||||
this.subtype.add(SubType.WARRIOR);
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
}
|
||||
|
||||
private GoblinBruiser(final GoblinBruiser card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GoblinBruiser copy() {
|
||||
return new GoblinBruiser(this);
|
||||
}
|
||||
}
|
||||
38
Mage.Sets/src/mage/cards/o/OgrePainbringer.java
Normal file
38
Mage.Sets/src/mage/cards/o/OgrePainbringer.java
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
package mage.cards.o;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.common.DamagePlayersEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
||||
@author JayDi85*/
|
||||
public final class OgrePainbringer extends CardImpl {
|
||||
|
||||
public OgrePainbringer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
|
||||
this.subtype.add(SubType.OGRE);
|
||||
|
||||
this.power = new MageInt(7);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// When Ogre Painbringer enters the battlefield, it deals 3 damage to each player.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new DamagePlayersEffect(3, TargetController.ANY, "it")));
|
||||
}
|
||||
|
||||
private OgrePainbringer(final OgrePainbringer card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OgrePainbringer copy() {
|
||||
return new OgrePainbringer(this);
|
||||
}
|
||||
}
|
||||
32
Mage.Sets/src/mage/cards/t/TitanicPelagosaur.java
Normal file
32
Mage.Sets/src/mage/cards/t/TitanicPelagosaur.java
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
package mage.cards.t;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
||||
@author JayDi85*/
|
||||
public final class TitanicPelagosaur extends CardImpl {
|
||||
|
||||
public TitanicPelagosaur(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
|
||||
this.subtype.add(SubType.DINOSAUR);
|
||||
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(6);
|
||||
}
|
||||
|
||||
private TitanicPelagosaur(final TitanicPelagosaur card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TitanicPelagosaur copy() {
|
||||
return new TitanicPelagosaur(this);
|
||||
}
|
||||
}
|
||||
39
Mage.Sets/src/mage/cards/t/TreetopRecluse.java
Normal file
39
Mage.Sets/src/mage/cards/t/TreetopRecluse.java
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
|
||||
package mage.cards.t;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.ReachAbility;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Svyatoslav28
|
||||
*/
|
||||
public final class TreetopRecluse extends CardImpl {
|
||||
|
||||
public TreetopRecluse(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
|
||||
this.subtype.add(SubType.SPIDER);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(6);
|
||||
|
||||
// Vigilance
|
||||
this.addAbility(VigilanceAbility.getInstance());
|
||||
// Reach
|
||||
this.addAbility(ReachAbility.getInstance());
|
||||
}
|
||||
|
||||
private TreetopRecluse(final TreetopRecluse card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TreetopRecluse copy() {
|
||||
return new TreetopRecluse(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -41,10 +41,5 @@ public final class ArenaNewPlayerExperienceExtras extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Volcanic Dragon", 45, Rarity.UNCOMMON, mage.cards.v.VolcanicDragon.class));
|
||||
cards.add(new SetCardInfo("Waterknot", 22, Rarity.COMMON, mage.cards.w.Waterknot.class));
|
||||
|
||||
// cards removed entirely - no longer exist on scryfall at all.
|
||||
// cards.add(new SetCardInfo("Blinding Radiance", 2, Rarity.UNCOMMON, mage.cards.b.BlindingRadiance.class));
|
||||
// cards.add(new SetCardInfo("Goblin Bruiser", 39, Rarity.UNCOMMON, mage.cards.g.GoblinBruiser.class));
|
||||
// cards.add(new SetCardInfo("Ogre Painbringer", 42, Rarity.RARE, mage.cards.o.OgrePainbringer.class));
|
||||
// cards.add(new SetCardInfo("Titanic Pelagosaur", 19, Rarity.UNCOMMON, mage.cards.t.TitanicPelagosaur.class));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
30
Mage.Sets/src/mage/sets/ArenaTutorialCards.java
Normal file
30
Mage.Sets/src/mage/sets/ArenaTutorialCards.java
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
|
||||
package mage.sets;
|
||||
|
||||
import mage.cards.ExpansionSet;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.SetType;
|
||||
|
||||
/**
|
||||
* @author Svyatoslav28
|
||||
*/
|
||||
public final class ArenaTutorialCards extends ExpansionSet {
|
||||
|
||||
private static final ArenaTutorialCards instance = new ArenaTutorialCards();
|
||||
|
||||
public static ArenaTutorialCards getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
private ArenaTutorialCards() {
|
||||
super("Arena Tutorial Cards", "ATC", ExpansionSet.buildDate(2024, 5, 18), SetType.CUSTOM_SET);
|
||||
this.blockName = "Arena Tutorial Cards";
|
||||
this.hasBasicLands = false;
|
||||
|
||||
cards.add(new SetCardInfo("Blinding Radiance", 1, Rarity.UNCOMMON, mage.cards.b.BlindingRadiance.class));
|
||||
cards.add(new SetCardInfo("Goblin Bruiser", 3, Rarity.UNCOMMON, mage.cards.g.GoblinBruiser.class));
|
||||
cards.add(new SetCardInfo("Ogre Painbringer", 4, Rarity.RARE, mage.cards.o.OgrePainbringer.class));
|
||||
cards.add(new SetCardInfo("Titanic Pelagosaur", 2, Rarity.UNCOMMON, mage.cards.t.TitanicPelagosaur.class));
|
||||
cards.add(new SetCardInfo("Treetop Recluse", 5, Rarity.COMMON, mage.cards.t.TreetopRecluse.class));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue