From 5f0883943a1b4d51be2f91b96b4f41c448e2a108 Mon Sep 17 00:00:00 2001 From: Vittorio Alfieri Date: Thu, 17 Jun 2021 11:14:09 +0200 Subject: [PATCH] Added H1R set, added/fixed prmitives, improved Android downloader. --- .../src/net/wagic/utils/ImgDownloader.java | 12 +- projects/mtg/bin/Res/sets/H1R/_cards.dat | 222 ++++++++++++++++++ .../bin/Res/sets/primitives/borderline.txt | 56 ++++- .../bin/Res/sets/primitives/unsupported.txt | 37 --- 4 files changed, 284 insertions(+), 43 deletions(-) create mode 100644 projects/mtg/bin/Res/sets/H1R/_cards.dat diff --git a/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java b/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java index 41e2d9893..a79d03af9 100644 --- a/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java +++ b/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java @@ -1826,6 +1826,8 @@ public class ImgDownloader { cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/d/0/d0ddbe3e-4a66-494d-9304-7471232549bf.jpg?1617626099"; else if(id.equals("513634t")) cardurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/9/1/910f48ab-b04e-4874-b31d-a86a7bc5af14.jpg?1617626097"; + else if(id.equals("296380t")) + cardurl = "https://deckmaster.info/images/cards/KLD/-3287-hr.jpg"; return cardurl; } @@ -2336,7 +2338,7 @@ public class ImgDownloader { tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/1/a/1a2d027f-8996-4761-a776-47cd428f6779.jpg?1618766925"; else if(id.equals("522245t")) tokenurl = "https://c1.scryfall.com/file/scryfall-cards/large/front/3/7/37e32ba6-108a-421f-9dad-3d03f7ebe239.jpg?1623113548"; - + return tokenurl; } @@ -2956,7 +2958,7 @@ public class ImgDownloader { || scryset.equals("PAL05") || scryset.equals("PAL06") || scryset.equals("PAL99") || scryset.equals("PARL") || scryset.equals("HA1") || scryset.equals("SLD") || scryset.equals("MB1") || scryset.equals("HA2") || scryset.equals("HA3") || scryset.equals("SS3") || scryset.equals("AKR") || scryset.equals("ANB") || scryset.equals("PLIST") || scryset.equals("KLR") || scryset.equals("CC1") - || scryset.equals("ATH") || scryset.equals("HA4") || scryset.equals("TSR") || scryset.equals("HA5")){ + || scryset.equals("ATH") || scryset.equals("HA4") || scryset.equals("TSR") || scryset.equals("HA5") || scryset.equals("H1R")){ try { doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get(); Elements outlinks = doc.select("body a"); @@ -3147,7 +3149,7 @@ public class ImgDownloader { && !scryset.equals("PAL05") && !scryset.equals("PAL06") && !scryset.equals("PAL99") && !scryset.equals("PARL") && !scryset.equals("HA1") && !scryset.equals("SLD") && !scryset.equals("MB1") && !scryset.equals("HA2") && !scryset.equals("HA3") && !scryset.equals("SS3") && !scryset.equals("AKR") && !scryset.equals("ANB") && !scryset.equals("PLIST") && !scryset.equals("KLR") && !scryset.equals("CC1") - && !scryset.equals("ATH") && !scryset.equals("HA4") && !scryset.equals("TSR") && !scryset.equals("HA5")){ + && !scryset.equals("ATH") && !scryset.equals("HA4") && !scryset.equals("TSR") && !scryset.equals("HA5") && !scryset.equals("H1R")){ try { doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get(); Elements outlinks = doc.select("body a"); @@ -3262,7 +3264,7 @@ public class ImgDownloader { && !scryset.equals("PAL05") && !scryset.equals("PAL06") && !scryset.equals("PAL99") && !scryset.equals("PARL") && !scryset.equals("HA1") && !scryset.equals("SLD") && !scryset.equals("MB1") && !scryset.equals("HA2") && !scryset.equals("HA3") && !scryset.equals("SS3") && !scryset.equals("AKR") && !scryset.equals("ANB") && !scryset.equals("PLIST") && !scryset.equals("KLR") && !scryset.equals("CC1") - && !scryset.equals("ATH") && !scryset.equals("HA4") && !scryset.equals("TSR") && !scryset.equals("HA5")){ + && !scryset.equals("ATH") && !scryset.equals("HA4") && !scryset.equals("TSR") && !scryset.equals("HA5") && !scryset.equals("H1R")){ try { doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get(); } catch (Exception e) { @@ -3429,7 +3431,7 @@ public class ImgDownloader { || scryset.equals("PAL06") || scryset.equals("PAL99") || scryset.equals("PARL") || scryset.equals("HA1") || scryset.equals("SLD") || scryset.equals("MB1") || scryset.equals("HA2") || scryset.equals("HA3") || scryset.equals("SS3") || scryset.equals("AKR") || scryset.equals("ANB") || scryset.equals("PLIST") || scryset.equals("KLR") || scryset.equals("CC1") || scryset.equals("ATH") - || scryset.equals("HA4") || scryset.equals("TSR") || scryset.equals("HA5")){ + || scryset.equals("HA4") || scryset.equals("TSR") || scryset.equals("HA5") || scryset.equals("H1R")){ Elements metadata = doc.select("head meta"); if(metadata != null) { for (int j = 0; j < metadata.size(); j++){ diff --git a/projects/mtg/bin/Res/sets/H1R/_cards.dat b/projects/mtg/bin/Res/sets/H1R/_cards.dat new file mode 100644 index 000000000..20baed960 --- /dev/null +++ b/projects/mtg/bin/Res/sets/H1R/_cards.dat @@ -0,0 +1,222 @@ +[meta] +author=Wagic Team +name=Modern Horizons "Timeshifted" +orderindex=REP-I.H1R +year=2021-06-18 +total=43 +[/meta] +[card] +primitive=Squirrel +id=-296389 +rarity=T +[/card] +[card] +primitive=Construct +id=-296380 +rarity=T +[/card] +[card] +primitive=Elephant +id=-296371 +rarity=T +[/card] +[card] +primitive=Ephemerate +id=296370 +rarity=U +[/card] +[card] +primitive=Generous Gift +id=296371 +rarity=U +[/card] +[card] +primitive=Giver of Runes +id=296372 +rarity=R +[/card] +[card] +primitive=King of the Pride +id=296373 +rarity=U +[/card] +[card] +primitive=Ranger-Captain of Eos +id=296374 +rarity=M +[/card] +[card] +primitive=Sisay, Weatherlight Captain +id=296375 +rarity=R +[/card] +[card] +primitive=Archmage's Charm +id=296376 +rarity=R +[/card] +[card] +primitive=Faerie Seer +id=296377 +rarity=U +[/card] +[card] +primitive=Force of Negation +id=296378 +rarity=R +[/card] +[card] +primitive=Tribute Mage +id=296379 +rarity=U +[/card] +[card] +primitive=Urza, Lord High Artificer +id=296380 +rarity=M +[/card] +[card] +primitive=Changeling Outcast +id=296381 +rarity=U +[/card] +[card] +primitive=Defile +id=296382 +rarity=U +[/card] +[card] +primitive=Plague Engineer +id=296383 +rarity=R +[/card] +[card] +primitive=Undead Augur +id=296384 +rarity=U +[/card] +[card] +primitive=Goblin Engineer +id=296385 +rarity=R +[/card] +[card] +primitive=Magmatic Sinkhole +id=296386 +rarity=U +[/card] +[card] +primitive=Shenanigans +id=296387 +rarity=U +[/card] +[card] +primitive=Ayula, Queen Among Bears +id=296388 +rarity=R +[/card] +[card] +primitive=Deep Forest Hermit +id=296389 +rarity=R +[/card] +[card] +primitive=Force of Vigor +id=296390 +rarity=R +[/card] +[card] +primitive=Llanowar Tribe +id=296391 +rarity=U +[/card] +[card] +primitive=Scale Up +id=296392 +rarity=U +[/card] +[card] +primitive=Weather the Storm +id=296393 +rarity=U +[/card] +[card] +primitive=Etchings of the Chosen +id=296394 +rarity=U +[/card] +[card] +primitive=The First Sliver +id=296395 +rarity=M +[/card] +[card] +primitive=Ice-Fang Coatl +id=296396 +rarity=R +[/card] +[card] +primitive=Ingenious Infiltrator +id=296397 +rarity=U +[/card] +[card] +primitive=Lavabelly Sliver +id=296398 +rarity=U +[/card] +[card] +primitive=Soulherder +id=296399 +rarity=U +[/card] +[card] +primitive=Sword of Sinew and Steel +id=296400 +rarity=M +[/card] +[card] +primitive=Sword of Truth and Justice +id=296401 +rarity=M +[/card] +[card] +primitive=Talisman of Conviction +id=296402 +rarity=U +[/card] +[card] +primitive=Talisman of Creativity +id=296403 +rarity=U +[/card] +[card] +primitive=Talisman of Curiosity +id=296404 +rarity=U +[/card] +[card] +primitive=Talisman of Hierarchy +id=296405 +rarity=U +[/card] +[card] +primitive=Talisman of Resilience +id=296406 +rarity=U +[/card] +[card] +primitive=Universal Automaton +id=296407 +rarity=U +[/card] +[card] +primitive=Hall of Heliod's Generosity +id=296408 +rarity=R +[/card] +[card] +primitive=Prismatic Vista +id=296409 +rarity=R +[/card] diff --git a/projects/mtg/bin/Res/sets/primitives/borderline.txt b/projects/mtg/bin/Res/sets/primitives/borderline.txt index 07d0a6b22..87d825bfc 100644 --- a/projects/mtg/bin/Res/sets/primitives/borderline.txt +++ b/projects/mtg/bin/Res/sets/primitives/borderline.txt @@ -22161,7 +22161,7 @@ toughness=3 [card] name=Garbage Elemental (c) auto=@combat(attacking) source(this):all(other creature[attacking]) 1/0 ueot -suto=all(this) rolladie winability token(Goblin,Creature Goblin,1/1,red)*lastrollresultminuslastrollchoiceminusend winabilityend loseability token(Goblin,Creature Goblin,1/1,red)*lastrollresultminuslastrollchoiceminusend loseabilityend rollend +auto=all(this) rolladie winability token(Goblin,Creature Goblin,1/1,red)*lastrollresultminuslastrollchoiceminusend winabilityend loseability token(Goblin,Creature Goblin,1/1,red)*lastrollresultminuslastrollchoiceminusend loseabilityend rollend text=Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.) -- When Garbage Elemental enters the battlefield, roll two six-sided dice. Create a number of 1/1 red Goblin creature tokens equal to the difference between those results. mana={4}{R} type=Creature @@ -53109,6 +53109,30 @@ mana={1}{U} type=Instant [/card] [card] +name=Sirocco +target=player +aicode=activate transforms((,newability[all(instant[blue]|targetedpersonshand) transforms((,newability[pay[[{L:4}]] name(pay 4 life) donothing?reject])) forever])) oneshot +auto=reveal:type:*:targetedpersonshand revealzone(targetedpersonshand) optionone name(put back) target(<1>*|reveal) moveto(ownerhand) and!( all(*|reveal) moveto(ownerhand) )! optiononeend afterrevealed all(instant[blue]|targetedpersonshand) transforms((,newability[pay[[{L:4}]] name(pay 4 life) donothing?reject])) forever afterrevealedend revealend +text=Target player reveals his or her hand. For each blue instant card revealed this way, that player discards that card unless he or she pays 4 life. +mana={1}{R} +type=Instant +[/card] +[card] +name=Sisay, Weatherlight Captain +auto=aslongas(other *[legendary;red]|mybattlefield) 1/1 >0 +auto=aslongas(other *[legendary;white]|mybattlefield) 1/1 >0 +auto=aslongas(other *[legendary;black]|mybattlefield) 1/1 >0 +auto=aslongas(other *[legendary;green]|mybattlefield) 1/1 >0 +auto=aslongas(other *[legendary;blue]|mybattlefield) 1/1 >0 +auto={W}{U}{B}{R}{G}:name(Search legendary) transforms((,newability[name(Search legendary) target(*[legendary;manacost<=power]|mylibrary) moveto(mybattlefield) and!( shuffle )!])) oneshot +text=Sisay, Weatherlight Captain gets +1/+1 for each color among other legendary permanents you control. -- {W}{U}{B}{R}{G}: Search your library for a legendary permanent card with converted mana cost less than Sisay's power, put that card onto the battlefield, then shuffle your library. +mana={2}{W} +type=Legendary Creature +subtype=Human Soldier +power=2 +toughness=2 +[/card] +[card] name=Sisters of Stone Death auto={G}:target(creature|opponentBattlefield) mustblock ueot auto={B}{G}:@combat(blocking,blocked) source(this):moveTo(exile) target (creature[blocking,blocked]) oneshot @@ -53131,6 +53155,16 @@ mana={2}{W} type=Instant [/card] [card] +name=Six-y Beast +auto=rolladie winability sacrifice winabilityend loseability counter(1/1,lastrollchoice) loseabilityend rollend +text=As Six-y Beast comes into play, you secretly put six or fewer +1/+1 counters on it, then an opponent guesses the number of counters. If that player guesses right, sacrifice Six-y Beast. +mana={3}{R} +type=Creature +subtype=Beast +power=0 +toughness=0 +[/card] +[card] name=Sixth Sense target=creature auto=@combatdamaged(player) from(this):may draw:1 @@ -53824,6 +53858,16 @@ power=2 toughness=2 [/card] [card] +name=Slayer's Cleaver +auto={4}:equip +auto=teach(creature) 3/1 +auto=@combat(attacking) source(mytgt):all(*[eldrazi]|opponentbattlefield) transforms((,newability[mustblock])) ueot +text=Equipped creature gets +3/+1 and must be blocked by an Eldrazi if able. -- Equip {4} +mana={3} +type=Artifact +subtype=Equipment +[/card] +[card] name=Slaying Fire target=creature,player,planeswalker auto=if casted(this) then if spent({R}{R}{R}) then name(Deals 4 damages) name(Deals 4 damages) damage:4 @@ -54059,6 +54103,16 @@ power=2 toughness=1 [/card] [card] +name=Smoke +auto=all(creature|mybattlefield) doesnotuntap +auto=all(creature|opponentbattlefield) doesnotuntap +auto=@each my untap:untap target(creature[tapped]|mybattlefield) +auto=@each opponent untap:ability$!name(untap creature) untap notatarget(creature[tapped]|mybattlefield)!$ opponent +text=Players can't untap more than one creature during their untap steps. +mana={R}{R} +type=Enchantment +[/card] +[card] name=Smoke Shroud target=creature auto=teach(creature) +1/+1 diff --git a/projects/mtg/bin/Res/sets/primitives/unsupported.txt b/projects/mtg/bin/Res/sets/primitives/unsupported.txt index 4a7938311..ddc58d66b 100644 --- a/projects/mtg/bin/Res/sets/primitives/unsupported.txt +++ b/projects/mtg/bin/Res/sets/primitives/unsupported.txt @@ -10543,30 +10543,6 @@ mana={U} type=Instant [/card] [card] -name=Sirocco -text=Target player reveals his or her hand. For each blue instant card revealed this way, that player discards that card unless he or she pays 4 life. -mana={1}{R} -type=Instant -[/card] -[card] -name=Sisay, Weatherlight Captain -text=Sisay, Weatherlight Captain gets +1/+1 for each color among other legendary permanents you control. -- {W}{U}{B}{R}{G}: Search your library for a legendary permanent card with converted mana cost less than Sisay's power, put that card onto the battlefield, then shuffle your library. -mana={2}{W} -type=Legendary Creature -subtype=Human Soldier -power=2 -toughness=2 -[/card] -[card] -name=Six-y Beast -text=As Six-y Beast comes into play, you secretly put six or fewer +1/+1 counters on it, then an opponent guesses the number of counters. If that player guesses right, sacrifice Six-y Beast. -mana={3}{R} -type=Creature -subtype=Beast -power=0 -toughness=0 -[/card] -[card] name=Skill Borrower text=Play with the top card of your library revealed. -- As long as the top card of your library is an artifact or creature card, Skill Borrower has all activated abilities of that card. (If any of the abilities use that card's name, use this creature's name instead.) mana={2}{U} @@ -10624,13 +10600,6 @@ mana={2}{B}{R} type=Sorcery [/card] [card] -name=Slayer's Cleaver -text=Equipped creature gets +3/+1 and must be blocked by an Eldrazi if able. -- Equip {4} -mana={3} -type=Artifact -subtype=Equipment -[/card] -[card] name=Slaying Mantis text=Just a second (As long as this spell is on the stack, players can't move cards on the battlefield.) -- Slaying Mantis enters the battlefield by being thrown from a distance of at least three feet. -- When Slaying Mantis enters the battlefield, it fights each creature an opponent controls that it touched as it entered. mana={5}{G}{G} @@ -10711,12 +10680,6 @@ power=2{1/2} toughness=1 [/card] [card] -name=Smoke -text=Players can't untap more than one creature during their untap steps. -mana={R}{R} -type=Enchantment -[/card] -[card] name=Smoke Teller text={1}{U}: Look at target face-down creature. mana={1}{G}