├── .gitattributes ├── .github └── workflows │ └── maven.yml ├── .gitignore ├── .project ├── .settings ├── org.eclipse.core.resources.prefs ├── org.eclipse.jdt.apt.core.prefs ├── org.eclipse.jdt.core.prefs └── org.eclipse.m2e.core.prefs ├── .vscode └── launch.json ├── LICENSE ├── Procfile ├── README.md ├── lapi.jar ├── pom.xml └── src ├── data ├── legacy_data │ ├── cards │ │ ├── a_whole_new_world.txt │ │ ├── abu-mischievous_monkey.txt │ │ ├── aladdin-cornered_swordsman.txt │ │ ├── aladdin-heroic_outlaw.txt │ │ ├── aladdin-prince_ali.txt │ │ ├── aladdin-street_rat.txt │ │ ├── anna-heir_to_arendelle.txt │ │ ├── archimedes-highly_educated_owl.txt │ │ ├── ariel-on_human_legs.txt │ │ ├── ariel-spectacular_singer.txt │ │ ├── ariel-whoseit_collector.txt │ │ ├── aurora-briar_rose.txt │ │ ├── aurora-dreaming_guardian.txt │ │ ├── aurora-regal_princess.txt │ │ ├── be_our_guest.txt │ │ ├── be_prepared.txt │ │ ├── beast's_mirror.txt │ │ ├── beast-hardheaded.txt │ │ ├── beast-wolfsbane.txt │ │ ├── befuddle.txt │ │ ├── belle-inventive_engineer.txt │ │ ├── belle-strange_but_special.txt │ │ ├── break.txt │ │ ├── captain-colonel's_lieutenant.txt │ │ ├── captain_hook-captain_of_the_jolly_roger.txt │ │ ├── captain_hook-forceful_duelist.txt │ │ ├── captain_hook-ruthless_pirate.txt │ │ ├── captain_hook-thinking_a_happy_thought.txt │ │ ├── cerberus-three-headed_dog.txt │ │ ├── cheshire_cat-not_all_there.txt │ │ ├── chief_tui-respected_leader.txt │ │ ├── cinderella-gentle_and_kind.txt │ │ ├── coconut_basket.txt │ │ ├── control_your_temper!.txt │ │ ├── cruella_de_vil-miserable_as_usual.txt │ │ ├── cut_to_the_chase.txt │ │ ├── develop_your_brain.txt │ │ ├── dinglehopper.txt │ │ ├── do_it_again!.txt │ │ ├── donald_duck-boisterous_fowl.txt │ │ ├── donald_duck-musketeer.txt │ │ ├── donald_duck-strutting_his_stuff.txt │ │ ├── dr._facilier's_cards.txt │ │ ├── dr._facilier-agent_provocateur.txt │ │ ├── dr._facilier-charlatan.txt │ │ ├── dr._facilier-remarkable_gentleman.txt │ │ ├── dragon_fire.txt │ │ ├── duke_of_weselton-opportunistic_official.txt │ │ ├── elsa-ice_surfer.txt │ │ ├── elsa-queen_regent.txt │ │ ├── elsa-snow_queen.txt │ │ ├── elsa-spirit_of_winter.txt │ │ ├── eye_of_the_fates.txt │ │ ├── fan_the_flames.txt │ │ ├── fire_the_cannons!.txt │ │ ├── fishbone_quill.txt │ │ ├── flotsam-ursula's_spy.txt │ │ ├── flounder-voice_of_reason.txt │ │ ├── flynn_rider-charming_rogue.txt │ │ ├── freeze.txt │ │ ├── friends_on_the_other_side.txt │ │ ├── frying_pan.txt │ │ ├── gantu-galactic_federation_captain.txt │ │ ├── gaston-arrogant_hunter.txt │ │ ├── genie-on_the_job.txt │ │ ├── genie-powers_unleashed.txt │ │ ├── genie-the_ever_impressive.txt │ │ ├── goofy-daredevil.txt │ │ ├── goofy-musketeer.txt │ │ ├── goons-maleficent's_underlings.txt │ │ ├── grab_your_sword.txt │ │ ├── gramma_tala-storyteller.txt │ │ ├── hades-infernal_schemer.txt │ │ ├── hades-king_of_olympus.txt │ │ ├── hades-lord_of_the_underworld.txt │ │ ├── hakuna_matata.txt │ │ ├── hans-scheming_prince.txt │ │ ├── hans-thirteenth_in_line.txt │ │ ├── he's_got_a_sword!.txt │ │ ├── healing_glow.txt │ │ ├── heihei-boat_snack.txt │ │ ├── hercules-true_hero.txt │ │ ├── horace-no-good_scoundrel.txt │ │ ├── iago-loud-mouthed_parrot.txt │ │ ├── if_it's_not_baroque.txt │ │ ├── jafar-keeper_of_secrets.txt │ │ ├── jafar-wicked_sorcerer.txt │ │ ├── jasmine-disguised.txt │ │ ├── jasmine-queen_of_agrabah.txt │ │ ├── jasper-common_crook.txt │ │ ├── jetsam-ursula's_spy.txt │ │ ├── john_silver-alien_pirate.txt │ │ ├── jumba_jookiba-renegade_scientist.txt │ │ ├── just_in_time.txt │ │ ├── kristoff-official_ice_master.txt │ │ ├── kronk-right-hand_man.txt │ │ ├── kuzco-temperamental_emperor.txt │ │ ├── lady_tremaine-wicked_stepmother.txt │ │ ├── lantern.txt │ │ ├── lefou-bumbler.txt │ │ ├── lefou-instigator.txt │ │ ├── let_it_go.txt │ │ ├── lilo-galactic_hero.txt │ │ ├── lilo-making_a_wish.txt │ │ ├── mad_hatter-gracious_host.txt │ │ ├── magic_broom-bucket_brigade.txt │ │ ├── magic_golden_flower.txt │ │ ├── magic_mirror.txt │ │ ├── maleficent-biding_her_time.txt │ │ ├── maleficent-monstrous_dragon.txt │ │ ├── maleficent-sinister_visitor.txt │ │ ├── maleficent-sorceress.txt │ │ ├── maleficent-uninvited.txt │ │ ├── marshmallow-persistent_guardian.txt │ │ ├── maui-demigod.txt │ │ ├── maui-hero_to_all.txt │ │ ├── maurice-world-famous_inventor.txt │ │ ├── maximus-palace_horse.txt │ │ ├── maximus-relentless_pursuer.txt │ │ ├── megara-pulling_the_strings.txt │ │ ├── merlin-self-appointed_mentor.txt │ │ ├── mickey_mouse-artful_rogue.txt │ │ ├── mickey_mouse-brave_little_tailor.txt │ │ ├── mickey_mouse-detective.txt │ │ ├── mickey_mouse-musketeer.txt │ │ ├── mickey_mouse-steamboat_pilot.txt │ │ ├── mickey_mouse-true_friend.txt │ │ ├── mickey_mouse-wayward_sorcerer.txt │ │ ├── minnie_mouse-always_classy.txt │ │ ├── minnie_mouse-beloved_princess.txt │ │ ├── moana-chosen_by_the_ocean.txt │ │ ├── moana-of_motunui.txt │ │ ├── mother_gothel-selfish_manipulator.txt │ │ ├── mother_knows_best.txt │ │ ├── mr._smee-loyal_first_mate.txt │ │ ├── mufasa-king_of_the_pride_lands.txt │ │ ├── mulan-imperial_soldier.txt │ │ ├── musketeer_tabard.txt │ │ ├── olaf-friendly_snowman.txt │ │ ├── one_jump_ahead.txt │ │ ├── part_of_your_world.txt │ │ ├── pascal-rapunzel's_companion.txt │ │ ├── peter_pan-fearless_fighter.txt │ │ ├── peter_pan-never_landing.txt │ │ ├── philoctetes-trainer_of_heroes.txt │ │ ├── plasma_blaster.txt │ │ ├── poisoned_apple.txt │ │ ├── pongo-ol'_rascal.txt │ │ ├── prince_eric-dashing_and_brave.txt │ │ ├── prince_phillip-dragonslayer.txt │ │ ├── pumbaa-friendly_warthog.txt │ │ ├── rafiki-mysterious_sage.txt │ │ ├── ransack.txt │ │ ├── rapunzel-gifted_with_healing.txt │ │ ├── rapunzel-letting_down_her_hair.txt │ │ ├── reflection.txt │ │ ├── robin_hood-unrivaled_archer.txt │ │ ├── scar-fiery_usurper.txt │ │ ├── scar-mastermind.txt │ │ ├── scar-shameless_firebrand.txt │ │ ├── scepter_of_arendelle.txt │ │ ├── sebastian-court_composer.txt │ │ ├── sergeant_tibbs-courageous_cat.txt │ │ ├── shield_of_virtue.txt │ │ ├── simba-future_king.txt │ │ ├── simba-protective_cub.txt │ │ ├── simba-returned_king.txt │ │ ├── simba-rightful_heir.txt │ │ ├── smash.txt │ │ ├── stampede.txt │ │ ├── starkey-hook's_henchman.txt │ │ ├── steal_from_the_rich.txt │ │ ├── stitch-abomination.txt │ │ ├── stitch-carefree_surfer.txt │ │ ├── stitch-new_dog.txt │ │ ├── stitch-rock_star.txt │ │ ├── stolen_scimitar.txt │ │ ├── sudden_chill.txt │ │ ├── sven-official_ice_deliverer.txt │ │ ├── sword_of_truth.txt │ │ ├── tamatoa-drab_little_crab.txt │ │ ├── tamatoa-so_shiny!.txt │ │ ├── tangle.txt │ │ ├── te_ka-heartless.txt │ │ ├── te_ka-the_burning_one.txt │ │ ├── the_beast_is_mine!.txt │ │ ├── the_queen-wicked_and_vain.txt │ │ ├── the_wardrobe-belle's_confidant.txt │ │ ├── tigger-wonderful_thing.txt │ │ ├── timon-grub_rustler.txt │ │ ├── tinker_bell-giant_fairy.txt │ │ ├── tinker_bell-most_helpful.txt │ │ ├── tinker_bell-peter_pan's_ally.txt │ │ ├── tinker_bell-tiny_tactician.txt │ │ ├── triton-the_sea_king.txt │ │ ├── ursula's_cauldron.txt │ │ ├── ursula's_shell_necklace.txt │ │ ├── ursula-power_hungry.txt │ │ ├── vicious_betrayal.txt │ │ ├── white_rabbit's_pocket_watch.txt │ │ ├── work_together.txt │ │ ├── you_have_forgotten_me.txt │ │ ├── yzma-alchemist.txt │ │ └── zeus-god_of_lightning.txt │ └── lists │ │ ├── colors.txt │ │ ├── lists.txt │ │ └── sets.txt ├── ptcjlukd_lordb_card_info.sql └── ptcjlukd_lordb_set_info.sql ├── main └── java │ └── com │ └── lorcanaapi │ ├── APIResponse.java │ ├── APIServer.java │ ├── App.java │ ├── ErrorMessageResponse.java │ ├── ParameterManager.java │ ├── SQLQuery.java │ ├── URIBit.java │ ├── URLParameter.java │ ├── handlers │ ├── AdminHandler.java │ ├── BulkHandler.java │ ├── CardsHandler.java │ ├── PostHandler.java │ ├── SetsHandler.java │ ├── StatisticsHandler.java │ └── URLHandler.java │ ├── legacy │ ├── ErrorJSONObject.java │ ├── FuzzyHandler.java │ ├── JSONHandler.java │ ├── LAPIUtils.java │ ├── LegacyAPIServer.java │ ├── SearchHandler.java │ ├── StrictHandler.java │ ├── TextHandler.java │ └── TrackingHandler.java │ ├── parameters │ ├── BulkTypeParameter.java │ ├── DisplayOnlyParameter.java │ ├── FuzzyMinimunParameter.java │ ├── FuzzyParameter.java │ ├── FuzzyTestParemeter.java │ ├── MandatorySQLExecutor.java │ ├── OrderByParameter.java │ ├── PageParameter.java │ ├── PageSizeParameter.java │ ├── RefParameter.java │ ├── SearchParameter.java │ ├── SortDirectionParameter.java │ └── StrictParameter.java │ └── precursors │ ├── AllPrecursor.java │ ├── FetchPrecursor.java │ ├── PrecursorManager.java │ ├── URLPrecursor.java │ └── bulkhandler │ ├── BulkCardsPrecursor.java │ └── BulkSetsPrecursor.java └── test └── java └── com └── kinsta └── helloworld └── AppTest.java /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/workflows/maven.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time 2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven 3 | 4 | # This workflow uses actions that are not certified by GitHub. 5 | # They are provided by a third-party and are governed by 6 | # separate terms of service, privacy policy, and support 7 | # documentation. 8 | 9 | name: Java CI with Maven 10 | 11 | on: 12 | push: 13 | branches: [ "main" ] 14 | pull_request: 15 | branches: [ "main" ] 16 | 17 | jobs: 18 | build: 19 | 20 | runs-on: ubuntu-latest 21 | 22 | steps: 23 | - uses: actions/checkout@v3 24 | - name: Set up JDK 11 25 | uses: actions/setup-java@v3 26 | with: 27 | java-version: '11' 28 | distribution: 'temurin' 29 | cache: maven 30 | - name: Build with Maven 31 | run: mvn -B package --file pom.xml 32 | 33 | # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive 34 | - name: Update dependency graph 35 | uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /bin/ 2 | /target/ 3 | /.vscode/ 4 | .classpath 5 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lorcana-API 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.m2e.core.maven2Builder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.m2e.core.maven2Nature 22 | 23 | 24 | 25 | 1733253205194 26 | 27 | 30 28 | 29 | org.eclipse.core.resources.regexFilterMatcher 30 | node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/main/java=UTF-8 3 | encoding//src/test/java=UTF-8 4 | encoding/=UTF-8 5 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.apt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.apt.aptEnabled=false 3 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 4 | org.eclipse.jdt.core.compiler.compliance=17 5 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 6 | org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled 7 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 8 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 9 | org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning 10 | org.eclipse.jdt.core.compiler.processAnnotations=disabled 11 | org.eclipse.jdt.core.compiler.release=disabled 12 | org.eclipse.jdt.core.compiler.source=17 13 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "java", 9 | "name": "Current File", 10 | "request": "launch", 11 | "mainClass": "${file}", 12 | "args": "jdbc:mysql://127.0.0.1:3306/?user=root root fgK@AS42i23@#asf" 13 | 14 | }, 15 | { 16 | "type": "java", 17 | "name": "App", 18 | "request": "launch", 19 | "mainClass": "com.lorcanaapi.App", 20 | "projectName": "lorcanaapi", 21 | "args": "jdbc:mysql://127.0.0.1:3306/?user=root root fgK@AS42i23@#asf" 22 | 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: java -jar target/kinsta-java-hello-world-1.0-SNAPSHOT.jar 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Lorcana.api.com 2 | This is the backend code for [Lorcana-api.com](https://lorcana-api.com). 3 | Lorcana-Api is a website for easiley fetching and filtering Lorcana cards. 4 | Several endpoints are avaliable, like /strict/, /fuzzy/, /lists/, and /search/. An in-depth explanation of all of these endpoints is avaliable at [Lorcana-api.com](lorcana-api.com/How-To.html) -------------------------------------------------------------------------------- /lapi.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dogloverblue/Lorcana-API/12953522ec1ef6d6a5d995d80622c64dd74ae1f1/lapi.jar -------------------------------------------------------------------------------- /src/data/legacy_data/cards/a_whole_new_world.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 195, 4 | "color": "Steel", 5 | "artist": "Koni", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": false, 10 | "body-text": "Each player discards their hand and draws 7.", 11 | "effect": "Each player discards their hand and draws 7.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/a_whole_new_world/a_whole_new_world-small.png", 14 | "no-art": "https://lorcana-api.com/images/a_whole_new_world/a_whole_new_world-no-art.png", 15 | "large": "https://lorcana-api.com/images/a_whole_new_world/a_whole_new_world-large.png", 16 | "art-crop": "https://lorcana-api.com/images/a_whole_new_world/a_whole_new_world-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/a_whole_new_world/a_whole_new_world-medium.png", 18 | "foil": "https://lorcana-api.com/images/a_whole_new_world/a_whole_new_world-foil.png" 19 | }, 20 | "name": "A Whole New World", 21 | "ink-cost": 5, 22 | "flavor-text": "Shining, shimmering, splendid...", 23 | "rarity": "Super Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/abu-mischievous_monkey.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 103, 6 | "color": "Ruby", 7 | "strength": 3, 8 | "artist": "Oleg Yurkov", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Mischievous Monkey", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/abu/mischievous_monkey/abu-mischievous_monkey-small.png", 22 | "no-art": "https://lorcana-api.com/images/abu/mischievous_monkey/abu-mischievous_monkey-no-art.png", 23 | "large": "https://lorcana-api.com/images/abu/mischievous_monkey/abu-mischievous_monkey-large.png", 24 | "art-crop": "https://lorcana-api.com/images/abu/mischievous_monkey/abu-mischievous_monkey-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/abu/mischievous_monkey/abu-mischievous_monkey-medium.png", 26 | "foil": "https://lorcana-api.com/images/abu/mischievous_monkey/abu-mischievous_monkey-foil.png" 27 | }, 28 | "name": "Abu", 29 | "ink-cost": 3, 30 | "flavor-text": "\"Someday, Abu, things are gonna change. We'll be rich, live in a palace, and never have any problems at all.\" -Aladdin", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/aladdin-cornered_swordsman.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 171, 6 | "color": "Steel", 7 | "strength": 2, 8 | "artist": "Randy Bishop", 9 | "willpower": 1, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Cornered Swordsman", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/aladdin/cornered_swordsman/aladdin-cornered_swordsman-small.png", 22 | "no-art": "https://lorcana-api.com/images/aladdin/cornered_swordsman/aladdin-cornered_swordsman-no-art.png", 23 | "large": "https://lorcana-api.com/images/aladdin/cornered_swordsman/aladdin-cornered_swordsman-large.png", 24 | "art-crop": "https://lorcana-api.com/images/aladdin/cornered_swordsman/aladdin-cornered_swordsman-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/aladdin/cornered_swordsman/aladdin-cornered_swordsman-medium.png", 26 | "foil": "https://lorcana-api.com/images/aladdin/cornered_swordsman/aladdin-cornered_swordsman-foil.png" 27 | }, 28 | "name": "Aladdin", 29 | "ink-cost": 2, 30 | "flavor-text": "\"Oh ho! So the street rat found a sword and a backbone!\" -Razoul", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/aladdin-prince_ali.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 0, 3 | "traits": ["Ward"], 4 | "set": "The First Chapter", 5 | "card-number": 69, 6 | "color": "Emerald", 7 | "strength": 2, 8 | "artist": "Lauren Walsh", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Prince" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "Ward (Opponents can't choose this character except to challenge.) ", 20 | "subtitle": "Prince Ali", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/aladdin/prince_ali/aladdin-prince_ali-small.png", 23 | "no-art": "https://lorcana-api.com/images/aladdin/prince_ali/aladdin-prince_ali-no-art.png", 24 | "large": "https://lorcana-api.com/images/aladdin/prince_ali/aladdin-prince_ali-large.png", 25 | "art-crop": "https://lorcana-api.com/images/aladdin/prince_ali/aladdin-prince_ali-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/aladdin/prince_ali/aladdin-prince_ali-medium.png", 27 | "foil": "https://lorcana-api.com/images/aladdin/prince_ali/aladdin-prince_ali-foil.png" 28 | }, 29 | "name": "Aladdin", 30 | "ink-cost": 2, 31 | "flavor-text": "Fabulously wealthy. Practically untouchable. Genuinely inauthentic.", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/aladdin-street_rat.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 105, 6 | "color": "Ruby", 7 | "strength": 2, 8 | "artist": "Peter Brockhammer", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {"Improvise": "When you play this character, each opponent loses 1 lore."}, 17 | "inkable": true, 18 | "body-text": "IMPROVISE: When you play this character, each opponent loses 1 lore.", 19 | "subtitle": "Street Rat", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/aladdin/street_rat/aladdin-street_rat-small.png", 22 | "no-art": "https://lorcana-api.com/images/aladdin/street_rat/aladdin-street_rat-no-art.png", 23 | "large": "https://lorcana-api.com/images/aladdin/street_rat/aladdin-street_rat-large.png", 24 | "art-crop": "https://lorcana-api.com/images/aladdin/street_rat/aladdin-street_rat-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/aladdin/street_rat/aladdin-street_rat-medium.png", 26 | "foil": "https://lorcana-api.com/images/aladdin/street_rat/aladdin-street_rat-foil.png" 27 | }, 28 | "name": "Aladdin", 29 | "ink-cost": 3, 30 | "flavor-text": "It can be hard to tell the difference between a diamond in the rough and someone who's just, well, rough.", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/ariel-on_human_legs.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 2, 5 | "card-number": 1, 6 | "color": "Amber", 7 | "strength": 3, 8 | "artist": "Matthew Robert Davies", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Princess" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Voiceless": "This character can't {t} to sing songs."}, 18 | "inkable": true, 19 | "body-text": "VOICELESS: This character can't {t} to sing songs.", 20 | "subtitle": "On Human Legs", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/ariel/on_human_legs/ariel-on_human_legs-small.png", 23 | "no-art": "https://lorcana-api.com/images/ariel/on_human_legs/ariel-on_human_legs-no-art.png", 24 | "large": "https://lorcana-api.com/images/ariel/on_human_legs/ariel-on_human_legs-large.png", 25 | "art-crop": "https://lorcana-api.com/images/ariel/on_human_legs/ariel-on_human_legs-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/ariel/on_human_legs/ariel-on_human_legs-medium.png", 27 | "foil": "https://lorcana-api.com/images/ariel/on_human_legs/ariel-on_human_legs-foil.png" 28 | }, 29 | "name": "Ariel", 30 | "flavor-text": "\\\"...\\\"", 31 | "ink-cost": 4, 32 | "rarity": "Uncommon" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/ariel-whoseit_collector.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 137, 6 | "color": "Sapphire", 7 | "strength": 3, 8 | "artist": "Hedvig Haggman-Sund", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Princess" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Look At This Stuff": "Whenever you play an item, you may ready this character."}, 18 | "inkable": false, 19 | "body-text": "LOOK AT THIS STUFF: Whenever you play an item, you may ready this character.", 20 | "subtitle": "Whoseit Collector", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/ariel/whoseit_collector/ariel-whoseit_collector-small.png", 23 | "no-art": "https://lorcana-api.com/images/ariel/whoseit_collector/ariel-whoseit_collector-no-art.png", 24 | "large": "https://lorcana-api.com/images/ariel/whoseit_collector/ariel-whoseit_collector-large.png", 25 | "art-crop": "https://lorcana-api.com/images/ariel/whoseit_collector/ariel-whoseit_collector-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/ariel/whoseit_collector/ariel-whoseit_collector-medium.png", 27 | "foil": "https://lorcana-api.com/images/ariel/whoseit_collector/ariel-whoseit_collector-foil.png" 28 | }, 29 | "name": "Ariel", 30 | "ink-cost": 4, 31 | "flavor-text": "You want thingamabobs? I got twenty.", 32 | "rarity": "Rare" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/aurora-briar_rose.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 138, 6 | "color": "Sapphire", 7 | "strength": 2, 8 | "artist": "Rosalia Radosti", 9 | "willpower": 5, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Princess" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Disarming Beauty": "When you play this character, chosen character gets -2{strength} this turn."}, 18 | "inkable": true, 19 | "body-text": "DISARMING BEAUTY: When you play this character, chosen character gets -2{strength} this turn.", 20 | "subtitle": "Briar Rose", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/aurora/briar_rose/aurora-briar_rose-small.png", 23 | "no-art": "https://lorcana-api.com/images/aurora/briar_rose/aurora-briar_rose-no-art.png", 24 | "large": "https://lorcana-api.com/images/aurora/briar_rose/aurora-briar_rose-large.png", 25 | "art-crop": "https://lorcana-api.com/images/aurora/briar_rose/aurora-briar_rose-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/aurora/briar_rose/aurora-briar_rose-medium.png", 27 | "foil": "https://lorcana-api.com/images/aurora/briar_rose/aurora-briar_rose-foil.png" 28 | }, 29 | "name": "Aurora", 30 | "ink-cost": 4, 31 | "flavor-text": "\"There was something strange about that voice. Too beautiful to be real...\" -Prince Phillip", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/aurora-regal_princess.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 2, 5 | "card-number": 140, 6 | "color": "Sapphire", 7 | "strength": 2, 8 | "artist": "Samanta Erdini", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Princess" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "Regal Princess", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/aurora/regal_princess/aurora-regal_princess-small.png", 23 | "no-art": "https://lorcana-api.com/images/aurora/regal_princess/aurora-regal_princess-no-art.png", 24 | "large": "https://lorcana-api.com/images/aurora/regal_princess/aurora-regal_princess-large.png", 25 | "art-crop": "https://lorcana-api.com/images/aurora/regal_princess/aurora-regal_princess-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/aurora/regal_princess/aurora-regal_princess-medium.png", 27 | "foil": "https://lorcana-api.com/images/aurora/regal_princess/aurora-regal_princess-foil.png" 28 | }, 29 | "name": "Aurora", 30 | "flavor-text": "\\\"They say if you dream a thing more than once, it's sure to come true\\\"", 31 | "ink-cost": 2, 32 | "rarity": "Uncommon" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/be_our_guest.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 25, 4 | "color": "Amber", 5 | "artist": "R. La Barbera/L. Giammichele", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Look at the top 4 cards of your deck. You may reveal a character card and put it into your hand. Put the rest on the bottom of your deck in any order.", 11 | "effect": "Look at the top 4 cards of your deck. You may reveal a character card and put it into your hand. Put the rest on the bottom of your deck in any order.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/be_our_guest/be_our_guest-small.png", 14 | "no-art": "https://lorcana-api.com/images/be_our_guest/be_our_guest-no-art.png", 15 | "large": "https://lorcana-api.com/images/be_our_guest/be_our_guest-large.png", 16 | "art-crop": "https://lorcana-api.com/images/be_our_guest/be_our_guest-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/be_our_guest/be_our_guest-medium.png", 18 | "foil": "https://lorcana-api.com/images/be_our_guest/be_our_guest-foil.png" 19 | }, 20 | "name": "Be Our Guest", 21 | "ink-cost": 2, 22 | "flavor-text": "", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/be_prepared.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 128, 4 | "color": "Ruby", 5 | "artist": "Jared Nickerl", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": false, 10 | "body-text": "Banish all Characters.", 11 | "effect": "Banish all Characters.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/be_prepared/be_prepared-small.png", 14 | "no-art": "https://lorcana-api.com/images/be_prepared/be_prepared-no-art.png", 15 | "large": "https://lorcana-api.com/images/be_prepared/be_prepared-large.png", 16 | "art-crop": "https://lorcana-api.com/images/be_prepared/be_prepared-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/be_prepared/be_prepared-medium.png", 18 | "foil": "https://lorcana-api.com/images/be_prepared/be_prepared-foil.png" 19 | }, 20 | "name": "Be Prepared", 21 | "ink-cost": 7, 22 | "flavor-text": "\"Our teeth and ambitions are bared!\"", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/beast's_mirror.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 201, 4 | "color": "Steel", 5 | "artist": "Samanta Erdini", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Show Me": "{t}, 3? - If you have no cards in your hand, draw a card."}, 9 | "inkable": true, 10 | "body-text": "SHOW ME: {t}, 3? - If you have no cards in your hand, draw a card.", 11 | "effect": null, 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/beast's_mirror/beast's_mirror-small.png", 14 | "no-art": "https://lorcana-api.com/images/beast's_mirror/beast's_mirror-no-art.png", 15 | "large": "https://lorcana-api.com/images/beast's_mirror/beast's_mirror-large.png", 16 | "art-crop": "https://lorcana-api.com/images/beast's_mirror/beast's_mirror-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/beast's_mirror/beast's_mirror-medium.png", 18 | "foil": "https://lorcana-api.com/images/beast's_mirror/beast's_mirror-foil.png" 19 | }, 20 | "name": "Beast's Mirror", 21 | "ink-cost": 2, 22 | "flavor-text": "Ashamed of his monstrous form, the Beast concealed himself inside his castle, with a magic mirror as his only window to the outside world.", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/beast-hardheaded.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 2, 5 | "card-number": 172, 6 | "color": "Steel", 7 | "strength": 4, 8 | "artist": "Cookie", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Prince" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Break": "When you play this character, you may banish chosen item"}, 18 | "inkable": true, 19 | "body-text": "BREAK: When you play this character, you may banish chosen item", 20 | "subtitle": "Hardheaded", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/beast/hardheaded/beast-hardheaded-small.png", 23 | "no-art": "https://lorcana-api.com/images/beast/hardheaded/beast-hardheaded-no-art.png", 24 | "large": "https://lorcana-api.com/images/beast/hardheaded/beast-hardheaded-large.png", 25 | "art-crop": "https://lorcana-api.com/images/beast/hardheaded/beast-hardheaded-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/beast/hardheaded/beast-hardheaded-medium.png", 27 | "foil": "https://lorcana-api.com/images/beast/hardheaded/beast-hardheaded-foil.png" 28 | }, 29 | "name": "Beast", 30 | "flavor-text": "", 31 | "ink-cost": 5, 32 | "rarity": "Uncommon" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/beast-wolfsbane.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 0, 3 | "traits": ["Rush"], 4 | "set": "The First Chapter", 5 | "card-number": 70, 6 | "color": "Emerald", 7 | "strength": 4, 8 | "artist": "Jeff Murchie", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Hero", 14 | "Prince" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Roar": "When you play this character, exert all opposing damaged characters."}, 18 | "inkable": false, 19 | "body-text": "Rush (This character can challenge the turn they're played.) \nROAR: When you play this character, exert all opposing damaged characters.", 20 | "subtitle": "Wolfsbane", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/beast/wolfsbane/beast-wolfsbane-small.png", 23 | "no-art": "https://lorcana-api.com/images/beast/wolfsbane/beast-wolfsbane-no-art.png", 24 | "large": "https://lorcana-api.com/images/beast/wolfsbane/beast-wolfsbane-large.png", 25 | "art-crop": "https://lorcana-api.com/images/beast/wolfsbane/beast-wolfsbane-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/beast/wolfsbane/beast-wolfsbane-medium.png", 27 | "foil": "https://lorcana-api.com/images/beast/wolfsbane/beast-wolfsbane-foil.png" 28 | }, 29 | "name": "Beast", 30 | "ink-cost": 5, 31 | "flavor-text": "\"I'll take on all of you if I have to!\"", 32 | "rarity": "Legendary" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/befuddle.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 62, 4 | "color": "Amethyst", 5 | "artist": "Kendall Hale", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Return a character or item with cost 2 or less to their player's hand.", 11 | "effect": "Return a character or item with cost 2 or less to their player's hand.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/befuddle/befuddle-small.png", 14 | "no-art": "https://lorcana-api.com/images/befuddle/befuddle-no-art.png", 15 | "large": "https://lorcana-api.com/images/befuddle/befuddle-large.png", 16 | "art-crop": "https://lorcana-api.com/images/befuddle/befuddle-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/befuddle/befuddle-medium.png", 18 | "foil": "https://lorcana-api.com/images/befuddle/befuddle-foil.png" 19 | }, 20 | "name": "Befuddle", 21 | "ink-cost": 1, 22 | "flavor-text": "Never be afraid to have your mind boggled now and then.", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/break.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 196, 4 | "color": "Steel", 5 | "artist": "Grace Tran", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Banish chosen item.", 11 | "effect": "Banish chosen item.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/break/break-small.png", 14 | "no-art": "https://lorcana-api.com/images/break/break-no-art.png", 15 | "large": "https://lorcana-api.com/images/break/break-large.png", 16 | "art-crop": "https://lorcana-api.com/images/break/break-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/break/break-medium.png", 18 | "foil": "https://lorcana-api.com/images/break/break-foil.png" 19 | }, 20 | "name": "Break", 21 | "ink-cost": 2, 22 | "flavor-text": "No one throws a tantrum like a beast.", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/captain-colonel's_lieutenant.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 106, 6 | "color": "Ruby", 7 | "strength": 6, 8 | "artist": "Brian Weisz", 9 | "willpower": 5, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally", 14 | "Captain" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "Colonel's Lieutenant", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/captain/colonel's_lieutenant/captain-colonel's_lieutenant-small.png", 23 | "no-art": "https://lorcana-api.com/images/captain/colonel's_lieutenant/captain-colonel's_lieutenant-no-art.png", 24 | "large": "https://lorcana-api.com/images/captain/colonel's_lieutenant/captain-colonel's_lieutenant-large.png", 25 | "art-crop": "https://lorcana-api.com/images/captain/colonel's_lieutenant/captain-colonel's_lieutenant-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/captain/colonel's_lieutenant/captain-colonel's_lieutenant-medium.png", 27 | "foil": "https://lorcana-api.com/images/captain/colonel's_lieutenant/captain-colonel's_lieutenant-foil.png" 28 | }, 29 | "name": "Captain", 30 | "ink-cost": 5, 31 | "flavor-text": "\"Barking signal. It's an alert. Report to the Colonel at once!\"", 32 | "rarity": "Uncommon" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/captain_hook-forceful_duelist.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": ["Challenger 2"], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 174, 6 | "color": "Steel", 7 | "strength": 1, 8 | "artist": "Marcell Berg", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Villain", 14 | "Pirate", 15 | "Captain" 16 | ], 17 | "set-code": "TFC", 18 | "abilities": {}, 19 | "inkable": true, 20 | "body-text": "Challenger 2 When challenging, this character get +2{strength}.) ", 21 | "subtitle": "Forceful Duelist", 22 | "image-urls": { 23 | "small": "https://lorcana-api.com/images/captain_hook/forceful_duelist/captain_hook-forceful_duelist-small.png", 24 | "no-art": "https://lorcana-api.com/images/captain_hook/forceful_duelist/captain_hook-forceful_duelist-no-art.png", 25 | "large": "https://lorcana-api.com/images/captain_hook/forceful_duelist/captain_hook-forceful_duelist-large.png", 26 | "art-crop": "https://lorcana-api.com/images/captain_hook/forceful_duelist/captain_hook-forceful_duelist-art-crop.png", 27 | "medium": "https://lorcana-api.com/images/captain_hook/forceful_duelist/captain_hook-forceful_duelist-medium.png", 28 | "foil": "https://lorcana-api.com/images/captain_hook/forceful_duelist/captain_hook-forceful_duelist-foil.png" 29 | }, 30 | "name": "Captain Hook", 31 | "flavor-text": "He loves to make light of a foe's predicament", 32 | "ink-cost": 1, 33 | "rarity": "Common" 34 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/cerberus-three-headed_dog.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 176, 6 | "color": "Steel", 7 | "strength": 5, 8 | "artist": "", 9 | "willpower": 6, 10 | "type": "Character", 11 | "subtypes": ["Storyborn"], 12 | "set-code": "TFC", 13 | "abilities": {}, 14 | "inkable": true, 15 | "body-text": "", 16 | "subtitle": "Three-Headed Dog", 17 | "image-urls": { 18 | "small": "https://lorcana-api.com/images/cerberus/three-headed_dog/cerberus-three-headed_dog-small.png", 19 | "no-art": "https://lorcana-api.com/images/cerberus/three-headed_dog/cerberus-three-headed_dog-no-art.png", 20 | "large": "https://lorcana-api.com/images/cerberus/three-headed_dog/cerberus-three-headed_dog-large.png", 21 | "art-crop": "https://lorcana-api.com/images/cerberus/three-headed_dog/cerberus-three-headed_dog-art-crop.png", 22 | "medium": "https://lorcana-api.com/images/cerberus/three-headed_dog/cerberus-three-headed_dog-medium.png", 23 | "foil": "https://lorcana-api.com/images/cerberus/three-headed_dog/cerberus-three-headed_dog-foil.png" 24 | }, 25 | "name": "Cerberus", 26 | "ink-cost": 5, 27 | "flavor-text": "", 28 | "rarity": "Common" 29 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/coconut_basket.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 166, 4 | "color": "Sapphire", 5 | "artist": "Milica Celikovic", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Consider The Coconut": "Whenever you play a character, you may remove up to 2 damage from chosen character."}, 9 | "inkable": true, 10 | "body-text": "CONSIDER THE COCONUT: Whenever you play a character, you may remove up to 2 damage from chosen character.", 11 | "effect": null, 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/coconut_basket/coconut_basket-small.png", 14 | "no-art": "https://lorcana-api.com/images/coconut_basket/coconut_basket-no-art.png", 15 | "large": "https://lorcana-api.com/images/coconut_basket/coconut_basket-large.png", 16 | "art-crop": "https://lorcana-api.com/images/coconut_basket/coconut_basket-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/coconut_basket/coconut_basket-medium.png", 18 | "foil": "https://lorcana-api.com/images/coconut_basket/coconut_basket-foil.png" 19 | }, 20 | "name": "Coconut Basket", 21 | "ink-cost": 2, 22 | "flavor-text": "The coconut is a versatile gift from the gods, used to make nearly everything - including gift baskets to carry more coconuts.", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/control_your_temper!.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 26, 4 | "color": "Amber", 5 | "artist": "Amber Kommovonga", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "inkable": true, 9 | "body-text": "Chosen character gets -2? this turn.", 10 | "effect": "Chosen character gets -2? this turn.", 11 | "image-urls": { 12 | "small": "https://lorcana-api.com/images/control_your_temper!/control_your_temper!-small.png", 13 | "no-art": "https://lorcana-api.com/images/control_your_temper!/control_your_temper!-no-art.png", 14 | "large": "https://lorcana-api.com/images/control_your_temper!/control_your_temper!-large.png", 15 | "art-crop": "https://lorcana-api.com/images/control_your_temper!/control_your_temper!-art-crop.png", 16 | "medium": "https://lorcana-api.com/images/control_your_temper!/control_your_temper!-medium.png", 17 | "foil": "https://lorcana-api.com/images/control_your_temper!/control_your_temper!-foil.png" 18 | }, 19 | "name": "Control Your Temper!", 20 | "ink-cost": 1, 21 | "flavor-text": "", 22 | "rarity": "Common" 23 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/cut_to_the_chase.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 129, 4 | "color": "Ruby", 5 | "artist": "Ellie Horie", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Chosen character gains Rush this turn. (They can challenge the turn they're played.)", 11 | "effect": "Chosen character gains Rush this turn. (They can challenge the turn they're played.)", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/cut_to_the_chase/cut_to_the_chase-small.png", 14 | "no-art": "https://lorcana-api.com/images/cut_to_the_chase/cut_to_the_chase-no-art.png", 15 | "large": "https://lorcana-api.com/images/cut_to_the_chase/cut_to_the_chase-large.png", 16 | "art-crop": "https://lorcana-api.com/images/cut_to_the_chase/cut_to_the_chase-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/cut_to_the_chase/cut_to_the_chase-medium.png", 18 | "foil": "https://lorcana-api.com/images/cut_to_the_chase/cut_to_the_chase-foil.png" 19 | }, 20 | "name": "Cut To The Chase", 21 | "ink-cost": 2, 22 | "flavor-text": "\"Surprise!\"", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/develop_your_brain.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 161, 4 | "color": "Sapphire", 5 | "artist": "Pao Yong", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "inkable": true, 9 | "body-text": "Look at the top 2 cards of your deck. Put one into your hand and the other on the bottom of the deck.", 10 | "effect": "Look at the top 2 cards of your deck. Put one into your hand and the other on the bottom of the deck.", 11 | "image-urls": { 12 | "small": "https://lorcana-api.com/images/develop_your_brain/develop_your_brain-small.png", 13 | "no-art": "https://lorcana-api.com/images/develop_your_brain/develop_your_brain-no-art.png", 14 | "large": "https://lorcana-api.com/images/develop_your_brain/develop_your_brain-large.png", 15 | "art-crop": "https://lorcana-api.com/images/develop_your_brain/develop_your_brain-art-crop.png", 16 | "medium": "https://lorcana-api.com/images/develop_your_brain/develop_your_brain-medium.png", 17 | "foil": "https://lorcana-api.com/images/develop_your_brain/develop_your_brain-foil.png" 18 | }, 19 | "name": "Develop Your Brain", 20 | "ink-cost": 1, 21 | "flavor-text": "\"Knowledge, wisdom-there's the real power!\" -Merlin", 22 | "rarity": "Common" 23 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/dinglehopper.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 32, 4 | "color": "Amber", 5 | "artist": "Eri Welli", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Straighten Hair": "{t}- Remove up to 1 damage from chosen character"}, 9 | "inkable": true, 10 | "body-text": "STRAIGHTEN HAIR: {t}- Remove up to 1 damage from chosen character", 11 | "effect": null, 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/dinglehopper/dinglehopper-small.png", 14 | "no-art": "https://lorcana-api.com/images/dinglehopper/dinglehopper-no-art.png", 15 | "large": "https://lorcana-api.com/images/dinglehopper/dinglehopper-large.png", 16 | "art-crop": "https://lorcana-api.com/images/dinglehopper/dinglehopper-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/dinglehopper/dinglehopper-medium.png", 18 | "foil": "https://lorcana-api.com/images/dinglehopper/dinglehopper-foil.png" 19 | }, 20 | "name": "Dinglehopper", 21 | "ink-cost": 1, 22 | "flavor-text": "Enjoy the finest of human hairstyles!", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/do_it_again!.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 94, 4 | "color": "Emerald", 5 | "artist": "Ellie Horie", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": false, 10 | "body-text": "Return an action card from your discard to your hand.", 11 | "effect": "Return an action card from your discard to your hand.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/do_it_again!/do_it_again!-small.png", 14 | "no-art": "https://lorcana-api.com/images/do_it_again!/do_it_again!-no-art.png", 15 | "large": "https://lorcana-api.com/images/do_it_again!/do_it_again!-large.png", 16 | "art-crop": "https://lorcana-api.com/images/do_it_again!/do_it_again!-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/do_it_again!/do_it_again!-medium.png", 18 | "foil": "https://lorcana-api.com/images/do_it_again!/do_it_again!-foil.png" 19 | }, 20 | "name": "Do It Again!", 21 | "ink-cost": 3, 22 | "flavor-text": "\"...Then scrub the terrace, sweep the halls and the stairs, clean the chimneys. And of course there's the mending, and the sewing, and the laundry...\"\\n - Lady Tremaine", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/donald_duck-boisterous_fowl.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 108, 6 | "color": "Ruby", 7 | "strength": 2, 8 | "artist": "Kenneth Anderson", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": ["Storyborn"], 12 | "set-code": "TFC", 13 | "abilities": {}, 14 | "inkable": true, 15 | "body-text": "", 16 | "subtitle": "Boisterous Fowl", 17 | "image-urls": { 18 | "small": "https://lorcana-api.com/images/donald_duck/boisterous_fowl/donald_duck-boisterous_fowl-small.png", 19 | "no-art": "https://lorcana-api.com/images/donald_duck/boisterous_fowl/donald_duck-boisterous_fowl-no-art.png", 20 | "large": "https://lorcana-api.com/images/donald_duck/boisterous_fowl/donald_duck-boisterous_fowl-large.png", 21 | "art-crop": "https://lorcana-api.com/images/donald_duck/boisterous_fowl/donald_duck-boisterous_fowl-art-crop.png", 22 | "medium": "https://lorcana-api.com/images/donald_duck/boisterous_fowl/donald_duck-boisterous_fowl-medium.png", 23 | "foil": "https://lorcana-api.com/images/donald_duck/boisterous_fowl/donald_duck-boisterous_fowl-foil.png" 24 | }, 25 | "name": "Donald Duck", 26 | "flavor-text": "\\\"Who you callin' boisterous, buster?\\\"", 27 | "ink-cost": 2, 28 | "rarity": "Uncommon" 29 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/donald_duck-strutting_his_stuff.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": ["Ward"], 4 | "set": "The First Chapter", 5 | "card-number": 144, 6 | "color": "Sapphire", 7 | "strength": 4, 8 | "artist": "Cam Kendell", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Hero", 14 | "Inventor" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "Ward (Opponents can't choose this character except to challenge.) ", 20 | "subtitle": "Strutting His Stuff", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/donald_duck/strutting_his_stuff/donald_duck-strutting_his_stuff-small.png", 23 | "no-art": "https://lorcana-api.com/images/donald_duck/strutting_his_stuff/donald_duck-strutting_his_stuff-no-art.png", 24 | "large": "https://lorcana-api.com/images/donald_duck/strutting_his_stuff/donald_duck-strutting_his_stuff-large.png", 25 | "art-crop": "https://lorcana-api.com/images/donald_duck/strutting_his_stuff/donald_duck-strutting_his_stuff-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/donald_duck/strutting_his_stuff/donald_duck-strutting_his_stuff-medium.png", 27 | "foil": "https://lorcana-api.com/images/donald_duck/strutting_his_stuff/donald_duck-strutting_his_stuff-foil.png" 28 | }, 29 | "name": "Donald Duck", 30 | "ink-cost": 5, 31 | "flavor-text": "Walk smarter, not harder.", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/dr._facilier's_cards.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 101, 4 | "color": "Emerald", 5 | "artist": "Koni", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"The Cards Will Tell": "{t} - You pay 1{ink} less for the next action you play this turn."}, 9 | "inkable": false, 10 | "body-text": "THE CARDS WILL TELL: {t} - You pay 1{ink} less for the next action you play this turn.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/dr._facilier's_cards/dr._facilier's_cards-small.png", 14 | "no-art": "https://lorcana-api.com/images/dr._facilier's_cards/dr._facilier's_cards-no-art.png", 15 | "large": "https://lorcana-api.com/images/dr._facilier's_cards/dr._facilier's_cards-large.png", 16 | "art-crop": "https://lorcana-api.com/images/dr._facilier's_cards/dr._facilier's_cards-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/dr._facilier's_cards/dr._facilier's_cards-medium.png", 18 | "foil": "https://lorcana-api.com/images/dr._facilier's_cards/dr._facilier's_cards-foil.png" 19 | }, 20 | "name": "Dr. Facilier's Cards", 21 | "ink-cost": 2, 22 | "flavor-text": "\"Take a little trip into your future with me!\" -Dr. Facilier", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/dr._facilier-charlatan.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": ["Challenger 2"], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 38, 6 | "color": "Amethyst", 7 | "strength": 0, 8 | "artist": "Grace Tran", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Villain", 14 | "Sorcerer" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "Challenger 2 When challenging, this character get +2{strength}.) ", 20 | "subtitle": "Charlatan", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/dr._facilier/charlatan/dr._facilier-charlatan-small.png", 23 | "no-art": "https://lorcana-api.com/images/dr._facilier/charlatan/dr._facilier-charlatan-no-art.png", 24 | "large": "https://lorcana-api.com/images/dr._facilier/charlatan/dr._facilier-charlatan-large.png", 25 | "art-crop": "https://lorcana-api.com/images/dr._facilier/charlatan/dr._facilier-charlatan-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/dr._facilier/charlatan/dr._facilier-charlatan-medium.png", 27 | "foil": "https://lorcana-api.com/images/dr._facilier/charlatan/dr._facilier-charlatan-foil.png" 28 | }, 29 | "name": "Dr. Facilier", 30 | "flavor-text": "\\\"Enchantee. A tip of the hat from Dr. Facilier.\\\"", 31 | "ink-cost": 2, 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/dragon_fire.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 130, 4 | "color": "Ruby", 5 | "artist": "Luis Huerta", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "inkable": false, 9 | "body-text": "Banish chosen character", 10 | "effect": "Banish chosen character", 11 | "image-urls": { 12 | "small": "https://lorcana-api.com/images/dragon_fire/dragon_fire-small.png", 13 | "no-art": "https://lorcana-api.com/images/dragon_fire/dragon_fire-no-art.png", 14 | "large": "https://lorcana-api.com/images/dragon_fire/dragon_fire-large.png", 15 | "art-crop": "https://lorcana-api.com/images/dragon_fire/dragon_fire-art-crop.png", 16 | "medium": "https://lorcana-api.com/images/dragon_fire/dragon_fire-medium.png", 17 | "foil": "https://lorcana-api.com/images/dragon_fire/dragon_fire-foil.png" 18 | }, 19 | "name": "Dragon Fire", 20 | "ink-cost": 5, 21 | "flavor-text": "", 22 | "rarity": "Uncommon" 23 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/elsa-queen_regent.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 40, 6 | "color": "Amethyst", 7 | "strength": 4, 8 | "artist": "Duyen Nguyen / Aubrey Archer", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Queen", 15 | "Sorcerer" 16 | ], 17 | "set-code": "TFC", 18 | "abilities": {}, 19 | "inkable": true, 20 | "body-text": "", 21 | "subtitle": "Queen Regent", 22 | "image-urls": { 23 | "small": "https://lorcana-api.com/images/elsa/queen_regent/elsa-queen_regent-small.png", 24 | "no-art": "https://lorcana-api.com/images/elsa/queen_regent/elsa-queen_regent-no-art.png", 25 | "large": "https://lorcana-api.com/images/elsa/queen_regent/elsa-queen_regent-large.png", 26 | "art-crop": "https://lorcana-api.com/images/elsa/queen_regent/elsa-queen_regent-art-crop.png", 27 | "medium": "https://lorcana-api.com/images/elsa/queen_regent/elsa-queen_regent-medium.png", 28 | "foil": "https://lorcana-api.com/images/elsa/queen_regent/elsa-queen_regent-foil.png" 29 | }, 30 | "name": "Elsa", 31 | "ink-cost": 4, 32 | "flavor-text": "\"I never knew what I was capable of.\"", 33 | "rarity": "Common" 34 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/elsa-snow_queen.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 41, 6 | "color": "Amethyst", 7 | "strength": 2, 8 | "artist": "Nicholas Kole", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Hero", 14 | "Queen", 15 | "Sorcerer" 16 | ], 17 | "set-code": "TFC", 18 | "abilities": {"Freeze": "{t} - Excert chosen opposing character."}, 19 | "inkable": true, 20 | "body-text": "FREEZE: {t} - Excert chosen opposing character.", 21 | "subtitle": "Snow Queen", 22 | "image-urls": { 23 | "small": "https://lorcana-api.com/images/elsa/snow_queen/elsa-snow_queen-small.png", 24 | "no-art": "https://lorcana-api.com/images/elsa/snow_queen/elsa-snow_queen-no-art.png", 25 | "large": "https://lorcana-api.com/images/elsa/snow_queen/elsa-snow_queen-large.png", 26 | "art-crop": "https://lorcana-api.com/images/elsa/snow_queen/elsa-snow_queen-art-crop.png", 27 | "medium": "https://lorcana-api.com/images/elsa/snow_queen/elsa-snow_queen-medium.png", 28 | "foil": "https://lorcana-api.com/images/elsa/snow_queen/elsa-snow_queen-foil.png" 29 | }, 30 | "name": "Elsa", 31 | "flavor-text": "Recreated by magical ink, Elsa found herself in an entirely new world. Fortunately, ice works the same way everywhere.", 32 | "ink-cost": 3, 33 | "rarity": "Uncommon" 34 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/eye_of_the_fates.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 167, 4 | "color": "Sapphire", 5 | "artist": "Ron Baird", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"See The Future": "{t} - Chosen character gets +1{lore} this turn."}, 9 | "inkable": true, 10 | "body-text": "SEE THE FUTURE: {t} - Chosen character gets +1{lore} this turn.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/eye_of_the_fates/eye_of_the_fates-small.png", 14 | "no-art": "https://lorcana-api.com/images/eye_of_the_fates/eye_of_the_fates-no-art.png", 15 | "large": "https://lorcana-api.com/images/eye_of_the_fates/eye_of_the_fates-large.png", 16 | "art-crop": "https://lorcana-api.com/images/eye_of_the_fates/eye_of_the_fates-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/eye_of_the_fates/eye_of_the_fates-medium.png", 18 | "foil": "https://lorcana-api.com/images/eye_of_the_fates/eye_of_the_fates-foil.png" 19 | }, 20 | "name": "Eye Of The Fates", 21 | "ink-cost": 4, 22 | "flavor-text": "You can change the future once you know what you're looking at.", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/fan_the_flames.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 131, 4 | "color": "Ruby", 5 | "artist": "Jenna Gray", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Ready chosen character. They can't quest for the rest of this turn.", 11 | "effect": "Ready chosen character. They can't quest for the rest of this turn.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/fan_the_flames/fan_the_flames-small.png", 14 | "no-art": "https://lorcana-api.com/images/fan_the_flames/fan_the_flames-no-art.png", 15 | "large": "https://lorcana-api.com/images/fan_the_flames/fan_the_flames-large.png", 16 | "art-crop": "https://lorcana-api.com/images/fan_the_flames/fan_the_flames-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/fan_the_flames/fan_the_flames-medium.png", 18 | "foil": "https://lorcana-api.com/images/fan_the_flames/fan_the_flames-foil.png" 19 | }, 20 | "name": "Fan The Flames", 21 | "ink-cost": 1, 22 | "flavor-text": "Pretty words can move a crowd, but so can ugly ones.", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/fire_the_cannons!.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 197, 4 | "color": "Steel", 5 | "artist": "Matt Chapman", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "inkable": false, 9 | "body-text": "Deal 2 damage to chosen character", 10 | "effect": "Deal 2 damage to chosen character", 11 | "image-urls": { 12 | "small": "https://lorcana-api.com/images/fire_the_cannons!/fire_the_cannons!-small.png", 13 | "no-art": "https://lorcana-api.com/images/fire_the_cannons!/fire_the_cannons!-no-art.png", 14 | "large": "https://lorcana-api.com/images/fire_the_cannons!/fire_the_cannons!-large.png", 15 | "art-crop": "https://lorcana-api.com/images/fire_the_cannons!/fire_the_cannons!-art-crop.png", 16 | "medium": "https://lorcana-api.com/images/fire_the_cannons!/fire_the_cannons!-medium.png", 17 | "foil": "https://lorcana-api.com/images/fire_the_cannons!/fire_the_cannons!-foil.png" 18 | }, 19 | "name": "Fire The Cannons!", 20 | "ink-cost": 1, 21 | "flavor-text": "Captain Hook: \"Double the powder and shorten the fuse!\" Mr. Smee: \"Shorten the powder and double the fuse!\"", 22 | "rarity": "Common" 23 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/fishbone_quill.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 168, 4 | "color": "Sapphire", 5 | "artist": "Tanisha Cherislin", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Go Ahead And Sing": "{t} - Put any card from your hand into your inkwell facedown"}, 9 | "inkable": true, 10 | "body-text": "GO AHEAD AND SING: {t} - Put any card from your hand into your inkwell facedown", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/fishbone_quill/fishbone_quill-small.png", 14 | "no-art": "https://lorcana-api.com/images/fishbone_quill/fishbone_quill-no-art.png", 15 | "large": "https://lorcana-api.com/images/fishbone_quill/fishbone_quill-large.png", 16 | "art-crop": "https://lorcana-api.com/images/fishbone_quill/fishbone_quill-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/fishbone_quill/fishbone_quill-medium.png", 18 | "foil": "https://lorcana-api.com/images/fishbone_quill/fishbone_quill-foil.png" 19 | }, 20 | "name": "Fishbone Quill", 21 | "ink-cost": 3, 22 | "flavor-text": "\"If you want tot cross the bridge, my sweet, you've got to pay the toll.\" -Ursula", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/flotsam-ursula's_spy.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": ["Rush"], 4 | "set": "The First Chapter", 5 | "card-number": 43, 6 | "color": "Amethyst", 7 | "strength": 3, 8 | "artist": "Luis Huerta", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {"Dexterous Lunge": "Your characters named Jetsam gain Rush"}, 17 | "inkable": false, 18 | "body-text": "Rush (This character can challenge the turn they're played.) \nDEXTEROUS LUNGE: Your characters named Jetsam gain Rush.", 19 | "subtitle": "Ursula's Spy", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/flotsam/ursula's_spy/flotsam-ursula's_spy-small.png", 22 | "no-art": "https://lorcana-api.com/images/flotsam/ursula's_spy/flotsam-ursula's_spy-no-art.png", 23 | "large": "https://lorcana-api.com/images/flotsam/ursula's_spy/flotsam-ursula's_spy-large.png", 24 | "art-crop": "https://lorcana-api.com/images/flotsam/ursula's_spy/flotsam-ursula's_spy-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/flotsam/ursula's_spy/flotsam-ursula's_spy-medium.png", 26 | "foil": "https://lorcana-api.com/images/flotsam/ursula's_spy/flotsam-ursula's_spy-foil.png" 27 | }, 28 | "name": "Flotsam", 29 | "ink-cost": 5, 30 | "flavor-text": "We know someone who can help you... for a price.", 31 | "rarity": "Rare" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/flounder-voice_of_reason.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 145, 6 | "color": "Sapphire", 7 | "strength": 2, 8 | "artist": "Brian Weiyz", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Voice Of Reason", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/flounder/voice_of_reason/flounder-voice_of_reason-small.png", 22 | "no-art": "https://lorcana-api.com/images/flounder/voice_of_reason/flounder-voice_of_reason-no-art.png", 23 | "large": "https://lorcana-api.com/images/flounder/voice_of_reason/flounder-voice_of_reason-large.png", 24 | "art-crop": "https://lorcana-api.com/images/flounder/voice_of_reason/flounder-voice_of_reason-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/flounder/voice_of_reason/flounder-voice_of_reason-medium.png", 26 | "foil": "https://lorcana-api.com/images/flounder/voice_of_reason/flounder-voice_of_reason-foil.png" 27 | }, 28 | "name": "Flounder", 29 | "flavor-text": "\"Excitment... adventure... danger lurking around ever cor- AAAAAGGH!\"", 30 | "ink-cost": 1, 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/freeze.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 63, 4 | "color": "Amethyst", 5 | "artist": "Cristian Romero", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": false, 10 | "body-text": "Exert chosen opposing character", 11 | "effect": "Exert chosen opposing character", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/freeze/freeze-small.png", 14 | "no-art": "https://lorcana-api.com/images/freeze/freeze-no-art.png", 15 | "large": "https://lorcana-api.com/images/freeze/freeze-large.png", 16 | "art-crop": "https://lorcana-api.com/images/freeze/freeze-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/freeze/freeze-medium.png", 18 | "foil": "https://lorcana-api.com/images/freeze/freeze-foil.png" 19 | }, 20 | "name": "Freeze", 21 | "ink-cost": 2, 22 | "flavor-text": "It's time for you to chill", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/friends_on_the_other_side.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 64, 4 | "color": "Amethyst", 5 | "artist": "Amber Kommavongsa", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Draw 2 Cards", 11 | "effect": "Draw 2 Cards", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/friends_on_the_other_side/friends_on_the_other_side-small.png", 14 | "no-art": "https://lorcana-api.com/images/friends_on_the_other_side/friends_on_the_other_side-no-art.png", 15 | "large": "https://lorcana-api.com/images/friends_on_the_other_side/friends_on_the_other_side-large.png", 16 | "art-crop": "https://lorcana-api.com/images/friends_on_the_other_side/friends_on_the_other_side-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/friends_on_the_other_side/friends_on_the_other_side-medium.png", 18 | "foil": "https://lorcana-api.com/images/friends_on_the_other_side/friends_on_the_other_side-foil.png" 19 | }, 20 | "name": "Friends On The Other Side", 21 | "ink-cost": 3, 22 | "flavor-text": "The cards, the cards\\nthecards will tell...", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/frying_pan.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 202, 4 | "color": "Steel", 5 | "artist": "Kamil Murzyn", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"CLANG!": "Banish this item - Chosen character can't challenge during their next turn."}, 9 | "inkable": true, 10 | "body-text": "CLANG!: Banish this item - Chosen character can't challenge during their next turn.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/frying_pan/frying_pan-small.png", 14 | "no-art": "https://lorcana-api.com/images/frying_pan/frying_pan-no-art.png", 15 | "large": "https://lorcana-api.com/images/frying_pan/frying_pan-large.png", 16 | "art-crop": "https://lorcana-api.com/images/frying_pan/frying_pan-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/frying_pan/frying_pan-medium.png", 18 | "foil": "https://lorcana-api.com/images/frying_pan/frying_pan-foil.png" 19 | }, 20 | "name": "Frying Pan", 21 | "ink-cost": 2, 22 | "flavor-text": "It's a fine piece of cookware, but as a weapon it's truly stunning.", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/gaston-arrogant_hunter.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 0, 3 | "traits": ["Reckless"], 4 | "set": "The First Chapter", 5 | "card-number": 110, 6 | "color": "Ruby", 7 | "strength": 4, 8 | "artist": "Matthew Robert Davies", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Villain" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "Reckless (This character can't quest and must challenge each turn if able.) ", 19 | "subtitle": "Arrogant Hunter", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/gaston/arrogant_hunter/gaston-arrogant_hunter-small.png", 22 | "no-art": "https://lorcana-api.com/images/gaston/arrogant_hunter/gaston-arrogant_hunter-no-art.png", 23 | "large": "https://lorcana-api.com/images/gaston/arrogant_hunter/gaston-arrogant_hunter-large.png", 24 | "art-crop": "https://lorcana-api.com/images/gaston/arrogant_hunter/gaston-arrogant_hunter-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/gaston/arrogant_hunter/gaston-arrogant_hunter-medium.png", 26 | "foil": "https://lorcana-api.com/images/gaston/arrogant_hunter/gaston-arrogant_hunter-foil.png" 27 | }, 28 | "name": "Gaston", 29 | "ink-cost": 2, 30 | "flavor-text": "It's not arrogance when you really are the best", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/genie-the_ever_impressive.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 0, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 77, 6 | "color": "Emerald", 7 | "strength": 2, 8 | "artist": "Matt Chapman", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "The Ever Impressive", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/genie/the_ever_impressive/genie-the_ever_impressive-small.png", 22 | "no-art": "https://lorcana-api.com/images/genie/the_ever_impressive/genie-the_ever_impressive-no-art.png", 23 | "large": "https://lorcana-api.com/images/genie/the_ever_impressive/genie-the_ever_impressive-large.png", 24 | "art-crop": "https://lorcana-api.com/images/genie/the_ever_impressive/genie-the_ever_impressive-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/genie/the_ever_impressive/genie-the_ever_impressive-medium.png", 26 | "foil": "https://lorcana-api.com/images/genie/the_ever_impressive/genie-the_ever_impressive-foil.png" 27 | }, 28 | "name": "Genie", 29 | "ink-cost": 2, 30 | "flavor-text": "\"You can wish for nearly anything! Do you want the short version, or should I give you the whole song and dance?\"", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/goofy-daredevil.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 0, 5 | "card-number": 111, 6 | "color": "Ruby", 7 | "strength": 3, 8 | "artist": "Kenneth Anderson", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Daredevil", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/goofy/daredevil/goofy-daredevil-small.png", 22 | "no-art": "https://lorcana-api.com/images/goofy/daredevil/goofy-daredevil-no-art.png", 23 | "large": "https://lorcana-api.com/images/goofy/daredevil/goofy-daredevil-large.png", 24 | "art-crop": "https://lorcana-api.com/images/goofy/daredevil/goofy-daredevil-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/goofy/daredevil/goofy-daredevil-medium.png", 26 | "foil": "https://lorcana-api.com/images/goofy/daredevil/goofy-daredevil-foil.png" 27 | }, 28 | "name": "Goofy", 29 | "flavor-text": "Sometimes you gotta give it the ol' jump and hyuck.", 30 | "ink-cost": 5, 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/goons-maleficent's_underlings.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 179, 6 | "color": "Steel", 7 | "strength": 2, 8 | "artist": "Cam Kendall", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Maleficent's Underlings", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/goons/maleficent's_underlings/goons-maleficent's_underlings-small.png", 22 | "no-art": "https://lorcana-api.com/images/goons/maleficent's_underlings/goons-maleficent's_underlings-no-art.png", 23 | "large": "https://lorcana-api.com/images/goons/maleficent's_underlings/goons-maleficent's_underlings-large.png", 24 | "art-crop": "https://lorcana-api.com/images/goons/maleficent's_underlings/goons-maleficent's_underlings-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/goons/maleficent's_underlings/goons-maleficent's_underlings-medium.png", 26 | "foil": "https://lorcana-api.com/images/goons/maleficent's_underlings/goons-maleficent's_underlings-foil.png" 27 | }, 28 | "name": "Goons", 29 | "flavor-text": "They may seem useless, but they came with the castle.", 30 | "ink-cost": 1, 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/grab_your_sword.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 198, 4 | "color": "Steel", 5 | "artist": "Peter Brockhammer", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": false, 10 | "body-text": "Dead 2 damage to each opposing character.", 11 | "effect": "Dead 2 damage to each opposing character.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/grab_your_sword/grab_your_sword-small.png", 14 | "no-art": "https://lorcana-api.com/images/grab_your_sword/grab_your_sword-no-art.png", 15 | "large": "https://lorcana-api.com/images/grab_your_sword/grab_your_sword-large.png", 16 | "art-crop": "https://lorcana-api.com/images/grab_your_sword/grab_your_sword-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/grab_your_sword/grab_your_sword-medium.png", 18 | "foil": "https://lorcana-api.com/images/grab_your_sword/grab_your_sword-foil.png" 19 | }, 20 | "name": "Grab Your Sword", 21 | "ink-cost": 5, 22 | "flavor-text": "We don't like\\nWhat we don't understand\\nIn fact, it scares us", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/hakuna_matata.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 27, 4 | "color": "Amber", 5 | "artist": "Juan Diego Leon", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Remove up to 3 damage from each of your characters.", 11 | "effect": "Remove up to 3 damage from each of your characters.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/hakuna_matata/hakuna_matata-small.png", 14 | "no-art": "https://lorcana-api.com/images/hakuna_matata/hakuna_matata-no-art.png", 15 | "large": "https://lorcana-api.com/images/hakuna_matata/hakuna_matata-large.png", 16 | "art-crop": "https://lorcana-api.com/images/hakuna_matata/hakuna_matata-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/hakuna_matata/hakuna_matata-medium.png", 18 | "foil": "https://lorcana-api.com/images/hakuna_matata/hakuna_matata-foil.png" 19 | }, 20 | "name": "Hakuna Matata", 21 | "ink-cost": 4, 22 | "flavor-text": "What a wonderful phrase!", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/hans-scheming_prince.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 3, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 78, 6 | "color": "Emerald", 7 | "strength": 3, 8 | "artist": "Massimiliano Narciso", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Villain", 14 | "Prince" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "Scheming Prince", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/hans/scheming_prince/hans-scheming_prince-small.png", 23 | "no-art": "https://lorcana-api.com/images/hans/scheming_prince/hans-scheming_prince-no-art.png", 24 | "large": "https://lorcana-api.com/images/hans/scheming_prince/hans-scheming_prince-large.png", 25 | "art-crop": "https://lorcana-api.com/images/hans/scheming_prince/hans-scheming_prince-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/hans/scheming_prince/hans-scheming_prince-medium.png", 27 | "foil": "https://lorcana-api.com/images/hans/scheming_prince/hans-scheming_prince-foil.png" 28 | }, 29 | "name": "Hans", 30 | "ink-cost": 4, 31 | "flavor-text": "Rules are like older siblings. All they do is get in the way.", 32 | "rarity": "Rare" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/he's_got_a_sword!.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 132, 4 | "color": "Ruby", 5 | "artist": "Koni", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Chosen Character gets +2 {strength} this turn.", 11 | "effect": "Chosen Character gets +2 {strength} this turn.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/he's_got_a_sword!/he's_got_a_sword!-small.png", 14 | "no-art": "https://lorcana-api.com/images/he's_got_a_sword!/he's_got_a_sword!-no-art.png", 15 | "large": "https://lorcana-api.com/images/he's_got_a_sword!/he's_got_a_sword!-large.png", 16 | "art-crop": "https://lorcana-api.com/images/he's_got_a_sword!/he's_got_a_sword!-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/he's_got_a_sword!/he's_got_a_sword!-medium.png", 18 | "foil": "https://lorcana-api.com/images/he's_got_a_sword!/he's_got_a_sword!-foil.png" 19 | }, 20 | "name": "He's Got A Sword!", 21 | "ink-cost": 1, 22 | "flavor-text": "\"We've all got swords!\" - Razoul", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/healing_glow.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 28, 4 | "color": "Amber", 5 | "artist": "Philipp Kruse", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "inkable": true, 9 | "body-text": "Remove up to 2 damage from chosen character", 10 | "effect": "Remove up to 2 damage from chosen character", 11 | "image-urls": { 12 | "small": "https://lorcana-api.com/images/healing_glow/healing_glow-small.png", 13 | "no-art": "https://lorcana-api.com/images/healing_glow/healing_glow-no-art.png", 14 | "large": "https://lorcana-api.com/images/healing_glow/healing_glow-large.png", 15 | "art-crop": "https://lorcana-api.com/images/healing_glow/healing_glow-art-crop.png", 16 | "medium": "https://lorcana-api.com/images/healing_glow/healing_glow-medium.png", 17 | "foil": "https://lorcana-api.com/images/healing_glow/healing_glow-foil.png" 18 | }, 19 | "name": "Healing Glow", 20 | "ink-cost": 1, 21 | "flavor-text": "\\\"Don't freak out!\\\" - Rapunzel", 22 | "rarity": "Common" 23 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/heihei-boat_snack.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": ["Support"], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 7, 6 | "color": "Amber", 7 | "strength": 1, 8 | "artist": "Jenna Gray", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "Support (When this character quests, you may add their {strength} to another chosen character's {strength} this turn.) ", 19 | "subtitle": "Boat Snack", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/heihei/boat_snack/heihei-boat_snack-small.png", 22 | "no-art": "https://lorcana-api.com/images/heihei/boat_snack/heihei-boat_snack-no-art.png", 23 | "large": "https://lorcana-api.com/images/heihei/boat_snack/heihei-boat_snack-large.png", 24 | "art-crop": "https://lorcana-api.com/images/heihei/boat_snack/heihei-boat_snack-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/heihei/boat_snack/heihei-boat_snack-medium.png", 26 | "foil": "https://lorcana-api.com/images/heihei/boat_snack/heihei-boat_snack-foil.png" 27 | }, 28 | "name": "Heihei", 29 | "flavor-text": "\\\"Sometimes, our strengths lie beneath the surface. Far beneath, in some cases...\\\" -Moana", 30 | "ink-cost": 1, 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/horace-no-good_scoundrel.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 79, 6 | "color": "Emerald", 7 | "strength": 4, 8 | "artist": "Isaiah Mesq", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "No-Good Scoundrel", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/horace/no-good_scoundrel/horace-no-good_scoundrel-small.png", 22 | "no-art": "https://lorcana-api.com/images/horace/no-good_scoundrel/horace-no-good_scoundrel-no-art.png", 23 | "large": "https://lorcana-api.com/images/horace/no-good_scoundrel/horace-no-good_scoundrel-large.png", 24 | "art-crop": "https://lorcana-api.com/images/horace/no-good_scoundrel/horace-no-good_scoundrel-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/horace/no-good_scoundrel/horace-no-good_scoundrel-medium.png", 26 | "foil": "https://lorcana-api.com/images/horace/no-good_scoundrel/horace-no-good_scoundrel-foil.png" 27 | }, 28 | "name": "Horace", 29 | "ink-cost": 3, 30 | "flavor-text": "\"Well, they ain't in here, Jasper.\"", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/if_it's_not_baroque.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 162, 4 | "color": "Sapphire", 5 | "artist": "Kenneth Anderson", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": false, 10 | "body-text": "Return an item card from your discard to your hand.", 11 | "effect": "Return an item card from your discard to your hand.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/if_it's_not_baroque/if_it's_not_baroque-small.png", 14 | "no-art": "https://lorcana-api.com/images/if_it's_not_baroque/if_it's_not_baroque-no-art.png", 15 | "large": "https://lorcana-api.com/images/if_it's_not_baroque/if_it's_not_baroque-large.png", 16 | "art-crop": "https://lorcana-api.com/images/if_it's_not_baroque/if_it's_not_baroque-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/if_it's_not_baroque/if_it's_not_baroque-medium.png", 18 | "foil": "https://lorcana-api.com/images/if_it's_not_baroque/if_it's_not_baroque-foil.png" 19 | }, 20 | "name": "If It's Not Baroque", 21 | "ink-cost": 3, 22 | "flavor-text": "\"...Don't fix it\"", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/jafar-keeper_of_secrets.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 44, 6 | "color": "Amethyst", 7 | "strength": 0, 8 | "artist": "Marcel Berg", 9 | "willpower": 5, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Villain", 14 | "Sorcerer" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Hidden Wonders": "This character gets +1{strength} for each card in your hand."}, 18 | "inkable": true, 19 | "body-text": "HIDDEN WONDERS: This character gets +1{strength} for each card in your hand.", 20 | "subtitle": "Keeper of Secrets", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/jafar/keeper_of_secrets/jafar-keeper_of_secrets-small.png", 23 | "no-art": "https://lorcana-api.com/images/jafar/keeper_of_secrets/jafar-keeper_of_secrets-no-art.png", 24 | "large": "https://lorcana-api.com/images/jafar/keeper_of_secrets/jafar-keeper_of_secrets-large.png", 25 | "art-crop": "https://lorcana-api.com/images/jafar/keeper_of_secrets/jafar-keeper_of_secrets-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/jafar/keeper_of_secrets/jafar-keeper_of_secrets-medium.png", 27 | "foil": "https://lorcana-api.com/images/jafar/keeper_of_secrets/jafar-keeper_of_secrets-foil.png" 28 | }, 29 | "name": "Jafar", 30 | "ink-cost": 4, 31 | "flavor-text": "There's more than one way to bury secrets.", 32 | "rarity": "Rare" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/jafar-wicked_sorcerer.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": ["Challenger 3"], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 45, 6 | "color": "Amethyst", 7 | "strength": 2, 8 | "artist": "Jake Parker", 9 | "willpower": 5, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Villain", 14 | "Sorcerer" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "Challenger 3 When challenging, this character get +3{strength}.) ", 20 | "subtitle": "Wicked Sorcerer", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/jafar/wicked_sorcerer/jafar-wicked_sorcerer-small.png", 23 | "no-art": "https://lorcana-api.com/images/jafar/wicked_sorcerer/jafar-wicked_sorcerer-no-art.png", 24 | "large": "https://lorcana-api.com/images/jafar/wicked_sorcerer/jafar-wicked_sorcerer-large.png", 25 | "art-crop": "https://lorcana-api.com/images/jafar/wicked_sorcerer/jafar-wicked_sorcerer-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/jafar/wicked_sorcerer/jafar-wicked_sorcerer-medium.png", 27 | "foil": "https://lorcana-api.com/images/jafar/wicked_sorcerer/jafar-wicked_sorcerer-foil.png" 28 | }, 29 | "name": "Jafar", 30 | "flavor-text": "\\\"Enough skulking about. It's time to show that sniveling sultan what a sorcerer can do.\\\"", 31 | "ink-cost": 4, 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/jasmine-disguised.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 2, 5 | "card-number": 148, 6 | "color": "Sapphire", 7 | "strength": 3, 8 | "artist": "R. La Barbera/L. Giammichele", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Princess" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Disguised", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/jasmine/disguised/jasmine-disguised-small.png", 22 | "no-art": "https://lorcana-api.com/images/jasmine/disguised/jasmine-disguised-no-art.png", 23 | "large": "https://lorcana-api.com/images/jasmine/disguised/jasmine-disguised-large.png", 24 | "art-crop": "https://lorcana-api.com/images/jasmine/disguised/jasmine-disguised-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/jasmine/disguised/jasmine-disguised-medium.png", 26 | "foil": "https://lorcana-api.com/images/jasmine/disguised/jasmine-disguised-foil.png" 27 | }, 28 | "name": "Jasmine", 29 | "flavor-text": "\\\"Try to understand. I've never done a thing on my own. I've never had any real friends.... I've never even been outside the palace walls.\\\"", 30 | "ink-cost": 3, 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/jasper-common_crook.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 81, 6 | "color": "Emerald", 7 | "strength": 2, 8 | "artist": "Jochem Van Gool", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {"Puppynapping": "Whenever this character quests, chosen character can't quest during their next turn."}, 17 | "inkable": true, 18 | "body-text": "PUPPYNAPPING: Whenever this character quests, chosen character can't quest during their next turn.", 19 | "subtitle": "Common Crook", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/jasper/common_crook/jasper-common_crook-small.png", 22 | "no-art": "https://lorcana-api.com/images/jasper/common_crook/jasper-common_crook-no-art.png", 23 | "large": "https://lorcana-api.com/images/jasper/common_crook/jasper-common_crook-large.png", 24 | "art-crop": "https://lorcana-api.com/images/jasper/common_crook/jasper-common_crook-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/jasper/common_crook/jasper-common_crook-medium.png", 26 | "foil": "https://lorcana-api.com/images/jasper/common_crook/jasper-common_crook-foil.png" 27 | }, 28 | "name": "Jasper", 29 | "ink-cost": 3, 30 | "flavor-text": "\"Now, look here, Horace, I warned you about thinkin'.\"", 31 | "rarity": "Uncommon" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/jetsam-ursula's_spy.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": ["Evasive"], 4 | "set": "The First Chapter", 5 | "card-number": 46, 6 | "color": "Amethyst", 7 | "strength": 3, 8 | "artist": "Brian Weisz", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {"Sinister Slither": "Your characters named Flotsam gain Evasive."}, 17 | "inkable": true, 18 | "body-text": "Evasive (Only characters with Evasive can challenge this character.) \nSINISTER SLITHER: Your characters named Flotsam gain Evasive.", 19 | "subtitle": "Ursula's Spy", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/jetsam/ursula's_spy/jetsam-ursula's_spy-small.png", 22 | "no-art": "https://lorcana-api.com/images/jetsam/ursula's_spy/jetsam-ursula's_spy-no-art.png", 23 | "large": "https://lorcana-api.com/images/jetsam/ursula's_spy/jetsam-ursula's_spy-large.png", 24 | "art-crop": "https://lorcana-api.com/images/jetsam/ursula's_spy/jetsam-ursula's_spy-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/jetsam/ursula's_spy/jetsam-ursula's_spy-medium.png", 26 | "foil": "https://lorcana-api.com/images/jetsam/ursula's_spy/jetsam-ursula's_spy-foil.png" 27 | }, 28 | "name": "Jetsam", 29 | "ink-cost": 4, 30 | "flavor-text": "We can help you get anything you want....", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/just_in_time.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 29, 4 | "color": "Amber", 5 | "artist": "Leonardo Giammichele", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "inkable": true, 9 | "body-text": "You may play a character with cost 5 or less for free.", 10 | "effect": "You may play a character with cost 5 or less for free.", 11 | "image-urls": { 12 | "small": "https://lorcana-api.com/images/just_in_time/just_in_time-small.png", 13 | "no-art": "https://lorcana-api.com/images/just_in_time/just_in_time-no-art.png", 14 | "large": "https://lorcana-api.com/images/just_in_time/just_in_time-large.png", 15 | "art-crop": "https://lorcana-api.com/images/just_in_time/just_in_time-art-crop.png", 16 | "medium": "https://lorcana-api.com/images/just_in_time/just_in_time-medium.png", 17 | "foil": "https://lorcana-api.com/images/just_in_time/just_in_time-foil.png" 18 | }, 19 | "name": "Just In Time", 20 | "ink-cost": 3, 21 | "flavor-text": "The best heroes always arrive at the perfect moment-whether they know it or not.", 22 | "rarity": "Rare" 23 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/kronk-right-hand_man.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 0, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 183, 6 | "color": "Steel", 7 | "strength": 6, 8 | "artist": "Jake Parker", 9 | "willpower": 6, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Right-Hand Man", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/kronk/right-hand_man/kronk-right-hand_man-small.png", 22 | "no-art": "https://lorcana-api.com/images/kronk/right-hand_man/kronk-right-hand_man-no-art.png", 23 | "large": "https://lorcana-api.com/images/kronk/right-hand_man/kronk-right-hand_man-large.png", 24 | "art-crop": "https://lorcana-api.com/images/kronk/right-hand_man/kronk-right-hand_man-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/kronk/right-hand_man/kronk-right-hand_man-medium.png", 26 | "foil": "https://lorcana-api.com/images/kronk/right-hand_man/kronk-right-hand_man-foil.png" 27 | }, 28 | "name": "Kronk", 29 | "ink-cost": 6, 30 | "flavor-text": "\"Oh yeah. It's all coming together!\"", 31 | "rarity": "Uncommon" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/lantern.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 33, 4 | "color": "Amber", 5 | "artist": "Eri Welli", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Birthday Lights": "{t}- You play 1? less for the next character you play this turn"}, 9 | "inkable": false, 10 | "body-text": "BIRTHDAY LIGHTS: {t}- You play 1? less for the next character you play this turn", 11 | "effect": null, 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/lantern/lantern-small.png", 14 | "no-art": "https://lorcana-api.com/images/lantern/lantern-no-art.png", 15 | "large": "https://lorcana-api.com/images/lantern/lantern-large.png", 16 | "art-crop": "https://lorcana-api.com/images/lantern/lantern-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/lantern/lantern-medium.png", 18 | "foil": "https://lorcana-api.com/images/lantern/lantern-foil.png" 19 | }, 20 | "name": "Lantern", 21 | "ink-cost": 2, 22 | "flavor-text": "Lanterns fill the sky on one special night, beacons of hope and love", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/lefou-bumbler.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 2, 5 | "card-number": 8, 6 | "color": "Amber", 7 | "strength": 1, 8 | "artist": "Andrey Chomak", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {"Loyal": "If you have a character named Gaston in play, you pay 1? less to play this character."}, 17 | "inkable": true, 18 | "body-text": "LOYAL: If you have a character named Gaston in play, you pay 1? less to play this character.", 19 | "subtitle": "Bumbler", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/lefou/bumbler/lefou-bumbler-small.png", 22 | "no-art": "https://lorcana-api.com/images/lefou/bumbler/lefou-bumbler-no-art.png", 23 | "large": "https://lorcana-api.com/images/lefou/bumbler/lefou-bumbler-large.png", 24 | "art-crop": "https://lorcana-api.com/images/lefou/bumbler/lefou-bumbler-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/lefou/bumbler/lefou-bumbler-medium.png", 26 | "foil": "https://lorcana-api.com/images/lefou/bumbler/lefou-bumbler-foil.png" 27 | }, 28 | "name": "Lefou", 29 | "flavor-text": "You need a good today to be a proper bad guy", 30 | "ink-cost": 2, 31 | "rarity": "Uncommon" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/lefou-instigator.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 112, 6 | "color": "Ruby", 7 | "strength": 2, 8 | "artist": "Gaku Kumatori", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {"Fan The Flames": "When you play this character, ready chosen character, They can't quest for the rest of this turn."}, 17 | "inkable": true, 18 | "body-text": "FAN THE FLAMES: When you play this character, ready chosen character, They can't quest for the rest of this turn.", 19 | "subtitle": "Instigator", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/lefou/instigator/lefou-instigator-small.png", 22 | "no-art": "https://lorcana-api.com/images/lefou/instigator/lefou-instigator-no-art.png", 23 | "large": "https://lorcana-api.com/images/lefou/instigator/lefou-instigator-large.png", 24 | "art-crop": "https://lorcana-api.com/images/lefou/instigator/lefou-instigator-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/lefou/instigator/lefou-instigator-medium.png", 26 | "foil": "https://lorcana-api.com/images/lefou/instigator/lefou-instigator-foil.png" 27 | }, 28 | "name": "Lefou", 29 | "ink-cost": 2, 30 | "flavor-text": "All a mob needs is a push in the wrong direction", 31 | "rarity": "Rare" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/let_it_go.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 163, 4 | "color": "Sapphire", 5 | "artist": "Milica Celikovic", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "inkable": true, 9 | "body-text": "Put chosen character into their player's inkwell facedown and exerted", 10 | "effect": "Put chosen character into their player's inkwell facedown and exerted", 11 | "image-urls": { 12 | "small": "https://lorcana-api.com/images/let_it_go/let_it_go-small.png", 13 | "no-art": "https://lorcana-api.com/images/let_it_go/let_it_go-no-art.png", 14 | "large": "https://lorcana-api.com/images/let_it_go/let_it_go-large.png", 15 | "art-crop": "https://lorcana-api.com/images/let_it_go/let_it_go-art-crop.png", 16 | "medium": "https://lorcana-api.com/images/let_it_go/let_it_go-medium.png", 17 | "foil": "https://lorcana-api.com/images/let_it_go/let_it_go-foil.png" 18 | }, 19 | "name": "Let It Go", 20 | "ink-cost": 5, 21 | "flavor-text": "It's time to see what I can do \nTo test the limits and break through", 22 | "rarity": "Rare" 23 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/lilo-galactic_hero.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 184, 6 | "color": "Steel", 7 | "strength": 4, 8 | "artist": "Jared Nickerl", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Galactic Hero", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/lilo/galactic_hero/lilo-galactic_hero-small.png", 22 | "no-art": "https://lorcana-api.com/images/lilo/galactic_hero/lilo-galactic_hero-no-art.png", 23 | "large": "https://lorcana-api.com/images/lilo/galactic_hero/lilo-galactic_hero-large.png", 24 | "art-crop": "https://lorcana-api.com/images/lilo/galactic_hero/lilo-galactic_hero-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/lilo/galactic_hero/lilo-galactic_hero-medium.png", 26 | "foil": "https://lorcana-api.com/images/lilo/galactic_hero/lilo-galactic_hero-foil.png" 27 | }, 28 | "name": "Lilo", 29 | "ink-cost": 3, 30 | "flavor-text": "\"Space. That's where the aliens come from. And also tourists!\"", 31 | "rarity": "Uncommon" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/lilo-making_a_wish.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 9, 6 | "color": "Amber", 7 | "strength": 1, 8 | "artist": "Dave Beauchene", 9 | "willpower": 1, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": false, 18 | "body-text": "", 19 | "subtitle": "Making a Wish", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/lilo/making_a_wish/lilo-making_a_wish-small.png", 22 | "no-art": "https://lorcana-api.com/images/lilo/making_a_wish/lilo-making_a_wish-no-art.png", 23 | "large": "https://lorcana-api.com/images/lilo/making_a_wish/lilo-making_a_wish-large.png", 24 | "art-crop": "https://lorcana-api.com/images/lilo/making_a_wish/lilo-making_a_wish-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/lilo/making_a_wish/lilo-making_a_wish-medium.png", 26 | "foil": "https://lorcana-api.com/images/lilo/making_a_wish/lilo-making_a_wish-foil.png" 27 | }, 28 | "name": "Lilo", 29 | "ink-cost": 1, 30 | "flavor-text": "A falling star... I have to make a wish!", 31 | "rarity": "Rare" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/mad_hatter-gracious_host.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 3, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 86, 6 | "color": "Emerald", 7 | "strength": 2, 8 | "artist": "Rosa la Barvera", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": ["Storyborn"], 12 | "set-code": "TFC", 13 | "abilities": {"Tea Party": "Whenever this character is challenged, you may draw a card."}, 14 | "inkable": true, 15 | "body-text": "TEA PARTY: Whenever this character is challenged, you may draw a card.", 16 | "subtitle": "Gracious Host", 17 | "image-urls": { 18 | "small": "https://lorcana-api.com/images/mad_hatter/gracious_host/mad_hatter-gracious_host-small.png", 19 | "no-art": "https://lorcana-api.com/images/mad_hatter/gracious_host/mad_hatter-gracious_host-no-art.png", 20 | "large": "https://lorcana-api.com/images/mad_hatter/gracious_host/mad_hatter-gracious_host-large.png", 21 | "art-crop": "https://lorcana-api.com/images/mad_hatter/gracious_host/mad_hatter-gracious_host-art-crop.png", 22 | "medium": "https://lorcana-api.com/images/mad_hatter/gracious_host/mad_hatter-gracious_host-medium.png", 23 | "foil": "https://lorcana-api.com/images/mad_hatter/gracious_host/mad_hatter-gracious_host-foil.png" 24 | }, 25 | "name": "Mad Hatter", 26 | "ink-cost": 5, 27 | "flavor-text": "Mad Hatter: \"Would you like a little more tea?\" Alice: \"I haven't had any yet, so I can't very well take more.\"", 28 | "rarity": "Uncommon" 29 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/magic_golden_flower.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 169, 4 | "color": "Sapphire", 5 | "artist": "Cory Godbey", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Healing Pollen": "Banish this item - Remove up to 3 damage from chosen character."}, 9 | "inkable": true, 10 | "body-text": "HEALING POLLEN: Banish this item - Remove up to 3 damage from chosen character.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/magic_golden_flower/magic_golden_flower-small.png", 14 | "no-art": "https://lorcana-api.com/images/magic_golden_flower/magic_golden_flower-no-art.png", 15 | "large": "https://lorcana-api.com/images/magic_golden_flower/magic_golden_flower-large.png", 16 | "art-crop": "https://lorcana-api.com/images/magic_golden_flower/magic_golden_flower-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/magic_golden_flower/magic_golden_flower-medium.png", 18 | "foil": "https://lorcana-api.com/images/magic_golden_flower/magic_golden_flower-foil.png" 19 | }, 20 | "name": "Magic Golden Flower", 21 | "ink-cost": 1, 22 | "flavor-text": "\"Once upon a time, a single drop of sunlight fell from the heavens....\" -Flynn Rider", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/magic_mirror.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 66, 4 | "color": "Amethyst", 5 | "artist": "Andrew Trabbold", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "inkable": false, 9 | "effect": "{t}, 4{ink} - Draw a card", 10 | "image-urls": { 11 | "small": "https://lorcana-api.com/images/magic_mirror/magic_mirror-small.png", 12 | "no-art": "https://lorcana-api.com/images/magic_mirror/magic_mirror-no-art.png", 13 | "large": "https://lorcana-api.com/images/magic_mirror/magic_mirror-large.png", 14 | "art-crop": "https://lorcana-api.com/images/magic_mirror/magic_mirror-art-crop.png", 15 | "medium": "https://lorcana-api.com/images/magic_mirror/magic_mirror-medium.png", 16 | "foil": "https://lorcana-api.com/images/magic_mirror/magic_mirror-foil.png" 17 | }, 18 | "name": "Magic Mirror", 19 | "ink-cost": 2, 20 | "flavor-text": "\\\"What wouldst thou know, my Queen?\\\"", 21 | "rarity": "Rare" 22 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/maleficent-biding_her_time.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 48, 6 | "color": "Amethyst", 7 | "strength": 1, 8 | "artist": "Grace Tran", 9 | "willpower": 1, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Villain", 14 | "Sorcerer" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": false, 19 | "body-text": "", 20 | "subtitle": "Biding Her Time", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/maleficent/biding_her_time/maleficent-biding_her_time-small.png", 23 | "no-art": "https://lorcana-api.com/images/maleficent/biding_her_time/maleficent-biding_her_time-no-art.png", 24 | "large": "https://lorcana-api.com/images/maleficent/biding_her_time/maleficent-biding_her_time-large.png", 25 | "art-crop": "https://lorcana-api.com/images/maleficent/biding_her_time/maleficent-biding_her_time-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/maleficent/biding_her_time/maleficent-biding_her_time-medium.png", 27 | "foil": "https://lorcana-api.com/images/maleficent/biding_her_time/maleficent-biding_her_time-foil.png" 28 | }, 29 | "name": "Maleficent", 30 | "ink-cost": 1, 31 | "flavor-text": "\"One mustn't rush these things, or the greatest plan might come to nothing.\"", 32 | "rarity": "Rare" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/maleficent-sorceress.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 49, 6 | "color": "Amethyst", 7 | "strength": 2, 8 | "artist": "Valerio Buonfantino", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Villain", 14 | "Sorcerer" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Cast My Spell!": "When you play this character, you may draw a card."}, 18 | "inkable": true, 19 | "body-text": "CAST MY SPELL!: When you play this character, you may draw a card.", 20 | "subtitle": "Sorceress", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/maleficent/sorceress/maleficent-sorceress-small.png", 23 | "no-art": "https://lorcana-api.com/images/maleficent/sorceress/maleficent-sorceress-no-art.png", 24 | "large": "https://lorcana-api.com/images/maleficent/sorceress/maleficent-sorceress-large.png", 25 | "art-crop": "https://lorcana-api.com/images/maleficent/sorceress/maleficent-sorceress-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/maleficent/sorceress/maleficent-sorceress-medium.png", 27 | "foil": "https://lorcana-api.com/images/maleficent/sorceress/maleficent-sorceress-foil.png" 28 | }, 29 | "name": "Maleficent", 30 | "ink-cost": 3, 31 | "flavor-text": "\"You dare challenge me? Fool, my magic is more powerful than you could possibly imagine!\"", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/maleficent-uninvited.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 3, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 151, 6 | "color": "Sapphire", 7 | "strength": 3, 8 | "artist": "Gaku Kumatori", 9 | "willpower": 6, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Villain", 14 | "Sorcerer" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "Uninvited", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/maleficent/uninvited/maleficent-uninvited-small.png", 23 | "no-art": "https://lorcana-api.com/images/maleficent/uninvited/maleficent-uninvited-no-art.png", 24 | "large": "https://lorcana-api.com/images/maleficent/uninvited/maleficent-uninvited-large.png", 25 | "art-crop": "https://lorcana-api.com/images/maleficent/uninvited/maleficent-uninvited-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/maleficent/uninvited/maleficent-uninvited-medium.png", 27 | "foil": "https://lorcana-api.com/images/maleficent/uninvited/maleficent-uninvited-foil.png" 28 | }, 29 | "name": "Maleficent", 30 | "ink-cost": 5, 31 | "flavor-text": "She had no invitation- and needed no introduction.", 32 | "rarity": "Rare" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/maui-demigod.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 3, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 185, 6 | "color": "Steel", 7 | "strength": 8, 8 | "artist": "Isaiah Mesq", 9 | "willpower": 8, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Deity" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "Demigod", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/maui/demigod/maui-demigod-small.png", 23 | "no-art": "https://lorcana-api.com/images/maui/demigod/maui-demigod-no-art.png", 24 | "large": "https://lorcana-api.com/images/maui/demigod/maui-demigod-large.png", 25 | "art-crop": "https://lorcana-api.com/images/maui/demigod/maui-demigod-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/maui/demigod/maui-demigod-medium.png", 27 | "foil": "https://lorcana-api.com/images/maui/demigod/maui-demigod-foil.png" 28 | }, 29 | "name": "Maui", 30 | "ink-cost": 8, 31 | "flavor-text": "When the gods gift you a boat, you take it. The boat's owner is optional.", 32 | "rarity": "Rare" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/maui-hero_to_all.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 0, 3 | "traits": [ 4 | "Rush", 5 | "Reckless" 6 | ], 7 | "set": "The First Chapter", 8 | "card-number": 114, 9 | "color": "Ruby", 10 | "strength": 6, 11 | "artist": "Pixel / Marco Giogianni", 12 | "willpower": 5, 13 | "type": "Character", 14 | "subtypes": [ 15 | "Storyborn", 16 | "Hero", 17 | "Deity" 18 | ], 19 | "set-code": "TFC", 20 | "abilities": {}, 21 | "inkable": true, 22 | "body-text": "Rush (This character can challenge the turn they're played.) \nReckless (This character can't quest and must challenge each turn if able.) ", 23 | "subtitle": "Hero to All", 24 | "image-urls": { 25 | "small": "https://lorcana-api.com/images/maui/hero_to_all/maui-hero_to_all-small.png", 26 | "no-art": "https://lorcana-api.com/images/maui/hero_to_all/maui-hero_to_all-no-art.png", 27 | "large": "https://lorcana-api.com/images/maui/hero_to_all/maui-hero_to_all-large.png", 28 | "art-crop": "https://lorcana-api.com/images/maui/hero_to_all/maui-hero_to_all-art-crop.png", 29 | "medium": "https://lorcana-api.com/images/maui/hero_to_all/maui-hero_to_all-medium.png", 30 | "foil": "https://lorcana-api.com/images/maui/hero_to_all/maui-hero_to_all-foil.png" 31 | }, 32 | "name": "Maui", 33 | "ink-cost": 5, 34 | "flavor-text": "\"What I believe you were trying to say is 'Thank you.'\"", 35 | "rarity": "Common" 36 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/mickey_mouse-steamboat_pilot.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 89, 6 | "color": "Emerald", 7 | "strength": 3, 8 | "artist": "Juan Diego Leon", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Captain" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "Steamboat Pilot", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/mickey_mouse/steamboat_pilot/mickey_mouse-steamboat_pilot-small.png", 23 | "no-art": "https://lorcana-api.com/images/mickey_mouse/steamboat_pilot/mickey_mouse-steamboat_pilot-no-art.png", 24 | "large": "https://lorcana-api.com/images/mickey_mouse/steamboat_pilot/mickey_mouse-steamboat_pilot-large.png", 25 | "art-crop": "https://lorcana-api.com/images/mickey_mouse/steamboat_pilot/mickey_mouse-steamboat_pilot-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/mickey_mouse/steamboat_pilot/mickey_mouse-steamboat_pilot-medium.png", 27 | "foil": "https://lorcana-api.com/images/mickey_mouse/steamboat_pilot/mickey_mouse-steamboat_pilot-foil.png" 28 | }, 29 | "name": "Mickey Mouse", 30 | "ink-cost": 3, 31 | "flavor-text": "On rivers throughout the Inklands, the little steamboat's whistle answers the cheery tunes of its pilot", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/mickey_mouse-true_friend.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 12, 6 | "color": "Amber", 7 | "strength": 3, 8 | "artist": "Dave Beauchene", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "True Friend", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/mickey_mouse/true_friend/mickey_mouse-true_friend-small.png", 22 | "no-art": "https://lorcana-api.com/images/mickey_mouse/true_friend/mickey_mouse-true_friend-no-art.png", 23 | "large": "https://lorcana-api.com/images/mickey_mouse/true_friend/mickey_mouse-true_friend-large.png", 24 | "art-crop": "https://lorcana-api.com/images/mickey_mouse/true_friend/mickey_mouse-true_friend-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/mickey_mouse/true_friend/mickey_mouse-true_friend-medium.png", 26 | "foil": "https://lorcana-api.com/images/mickey_mouse/true_friend/mickey_mouse-true_friend-foil.png" 27 | }, 28 | "name": "Mickey Mouse", 29 | "ink-cost": 3, 30 | "flavor-text": "As long as he's around, new comers to the great illuminary will always get a warm welcome", 31 | "rarity": "Uncommon" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/minnie_mouse-always_classy.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 116, 6 | "color": "Ruby", 7 | "strength": 1, 8 | "artist": "Kenneth Anderson", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Always Classy", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/minnie_mouse/always_classy/minnie_mouse-always_classy-small.png", 22 | "no-art": "https://lorcana-api.com/images/minnie_mouse/always_classy/minnie_mouse-always_classy-no-art.png", 23 | "large": "https://lorcana-api.com/images/minnie_mouse/always_classy/minnie_mouse-always_classy-large.png", 24 | "art-crop": "https://lorcana-api.com/images/minnie_mouse/always_classy/minnie_mouse-always_classy-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/minnie_mouse/always_classy/minnie_mouse-always_classy-medium.png", 26 | "foil": "https://lorcana-api.com/images/minnie_mouse/always_classy/minnie_mouse-always_classy-foil.png" 27 | }, 28 | "name": "Minnie Mouse", 29 | "ink-cost": 1, 30 | "flavor-text": "Her fashion sense is always spot on.", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/minnie_mouse-beloved_princess.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 13, 6 | "color": "Amber", 7 | "strength": 2, 8 | "artist": "Kendall Hale", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Princess" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Beloved Princess", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/minnie_mouse/beloved_princess/minnie_mouse-beloved_princess-small.png", 22 | "no-art": "https://lorcana-api.com/images/minnie_mouse/beloved_princess/minnie_mouse-beloved_princess-no-art.png", 23 | "large": "https://lorcana-api.com/images/minnie_mouse/beloved_princess/minnie_mouse-beloved_princess-large.png", 24 | "art-crop": "https://lorcana-api.com/images/minnie_mouse/beloved_princess/minnie_mouse-beloved_princess-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/minnie_mouse/beloved_princess/minnie_mouse-beloved_princess-medium.png", 26 | "foil": "https://lorcana-api.com/images/minnie_mouse/beloved_princess/minnie_mouse-beloved_princess-foil.png" 27 | }, 28 | "name": "Minnie Mouse", 29 | "flavor-text": "Wherever the princess goes, her musketeers are... well, they're around somewhere, probably.", 30 | "ink-cost": 2, 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/mother_knows_best.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 95, 4 | "color": "Emerald", 5 | "artist": "R. La Barbera / L. Giammichele", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": false, 10 | "body-text": "Return chosen character to their player's hand.", 11 | "effect": "Return chosen character to their player's hand.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/mother_knows_best/mother_knows_best-small.png", 14 | "no-art": "https://lorcana-api.com/images/mother_knows_best/mother_knows_best-no-art.png", 15 | "large": "https://lorcana-api.com/images/mother_knows_best/mother_knows_best-large.png", 16 | "art-crop": "https://lorcana-api.com/images/mother_knows_best/mother_knows_best-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/mother_knows_best/mother_knows_best-medium.png", 18 | "foil": "https://lorcana-api.com/images/mother_knows_best/mother_knows_best-foil.png" 19 | }, 20 | "name": "Mother Knows Best", 21 | "ink-cost": 3, 22 | "flavor-text": "One way or another\\nSomething will go wrong, I swear", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/mr._smee-loyal_first_mate.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 15, 6 | "color": "Amber", 7 | "strength": 2, 8 | "artist": "Kamil Murzyn / Eri Welli", 9 | "willpower": 5, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Ally", 14 | "Pirate" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "Loyal First Mate", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/mr._smee/loyal_first_mate/mr._smee-loyal_first_mate-small.png", 23 | "no-art": "https://lorcana-api.com/images/mr._smee/loyal_first_mate/mr._smee-loyal_first_mate-no-art.png", 24 | "large": "https://lorcana-api.com/images/mr._smee/loyal_first_mate/mr._smee-loyal_first_mate-large.png", 25 | "art-crop": "https://lorcana-api.com/images/mr._smee/loyal_first_mate/mr._smee-loyal_first_mate-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/mr._smee/loyal_first_mate/mr._smee-loyal_first_mate-medium.png", 27 | "foil": "https://lorcana-api.com/images/mr._smee/loyal_first_mate/mr._smee-loyal_first_mate-foil.png" 28 | }, 29 | "name": "Mr. Smee", 30 | "ink-cost": 3, 31 | "flavor-text": "\"Mr. Smee is a kind, gentle soul who lives to bring comfort and aid to a twisted old villain. Now, what good is kindness like that?\"", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/mufasa-king_of_the_pride_lands.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 3, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 155, 6 | "color": "Sapphire", 7 | "strength": 4, 8 | "artist": "Luis Huerta", 9 | "willpower": 6, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Mentor", 14 | "King" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "King of the Pride Lands", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/mufasa/king_of_the_pride_lands/mufasa-king_of_the_pride_lands-small.png", 23 | "no-art": "https://lorcana-api.com/images/mufasa/king_of_the_pride_lands/mufasa-king_of_the_pride_lands-no-art.png", 24 | "large": "https://lorcana-api.com/images/mufasa/king_of_the_pride_lands/mufasa-king_of_the_pride_lands-large.png", 25 | "art-crop": "https://lorcana-api.com/images/mufasa/king_of_the_pride_lands/mufasa-king_of_the_pride_lands-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/mufasa/king_of_the_pride_lands/mufasa-king_of_the_pride_lands-medium.png", 27 | "foil": "https://lorcana-api.com/images/mufasa/king_of_the_pride_lands/mufasa-king_of_the_pride_lands-foil.png" 28 | }, 29 | "name": "Mufasa", 30 | "ink-cost": 6, 31 | "flavor-text": "\"A king must care for all of the creatures in his kingdom, no matter their size.\"", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/musketeer_tabard.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 203, 4 | "color": "Steel", 5 | "artist": "Dav Augereau", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"All For One And One For All": "Whenever one of your characters with Bodyguard is banished, you may draw a card"}, 9 | "inkable": false, 10 | "body-text": "ALL FOR ONE AND ONE FOR ALL: Whenever one of your characters with Bodyguard is banished, you may draw a card", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/musketeer_tabard/musketeer_tabard-small.png", 14 | "no-art": "https://lorcana-api.com/images/musketeer_tabard/musketeer_tabard-no-art.png", 15 | "large": "https://lorcana-api.com/images/musketeer_tabard/musketeer_tabard-large.png", 16 | "art-crop": "https://lorcana-api.com/images/musketeer_tabard/musketeer_tabard-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/musketeer_tabard/musketeer_tabard-medium.png", 18 | "foil": "https://lorcana-api.com/images/musketeer_tabard/musketeer_tabard-foil.png" 19 | }, 20 | "name": "Musketeer Tabard", 21 | "ink-cost": 4, 22 | "flavor-text": "There's no such thing as a lone musketeer.", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/olaf-friendly_snowman.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 52, 6 | "color": "Amethyst", 7 | "strength": 1, 8 | "artist": "Giulia Riva", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Friendly Snowman", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/olaf/friendly_snowman/olaf-friendly_snowman-small.png", 22 | "no-art": "https://lorcana-api.com/images/olaf/friendly_snowman/olaf-friendly_snowman-no-art.png", 23 | "large": "https://lorcana-api.com/images/olaf/friendly_snowman/olaf-friendly_snowman-large.png", 24 | "art-crop": "https://lorcana-api.com/images/olaf/friendly_snowman/olaf-friendly_snowman-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/olaf/friendly_snowman/olaf-friendly_snowman-medium.png", 26 | "foil": "https://lorcana-api.com/images/olaf/friendly_snowman/olaf-friendly_snowman-foil.png" 27 | }, 28 | "name": "Olaf", 29 | "flavor-text": "\"I'm Olaf and I like warm hugs!\"", 30 | "ink-cost": 1, 31 | "rarity": "Uncommon" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/one_jump_ahead.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 164, 4 | "color": "Sapphire", 5 | "artist": "Bill Robinson", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "inkable": false, 9 | "body-text": "Put the top card of your deck into your inkwell facedown and exerted", 10 | "effect": "Put the top card of your deck into your inkwell facedown and exerted", 11 | "image-urls": { 12 | "small": "https://lorcana-api.com/images/one_jump_ahead/one_jump_ahead-small.png", 13 | "no-art": "https://lorcana-api.com/images/one_jump_ahead/one_jump_ahead-no-art.png", 14 | "large": "https://lorcana-api.com/images/one_jump_ahead/one_jump_ahead-large.png", 15 | "art-crop": "https://lorcana-api.com/images/one_jump_ahead/one_jump_ahead-art-crop.png", 16 | "medium": "https://lorcana-api.com/images/one_jump_ahead/one_jump_ahead-medium.png", 17 | "foil": "https://lorcana-api.com/images/one_jump_ahead/one_jump_ahead-foil.png" 18 | }, 19 | "name": "One Jump Ahead", 20 | "ink-cost": 2, 21 | "flavor-text": "Gotta eat to live, gotta steal to eat- Tell you all about it when I got the time", 22 | "rarity": "Uncommon" 23 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/part_of_your_world.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 30, 4 | "color": "Amber", 5 | "artist": "Samanta Erdini", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "inkable": false, 9 | "body-text": "Return a character card from your discard to your hand", 10 | "effect": "Return a character card from your discard to your hand", 11 | "image-urls": { 12 | "small": "https://lorcana-api.com/images/part_of_your_world/part_of_your_world-small.png", 13 | "no-art": "https://lorcana-api.com/images/part_of_your_world/part_of_your_world-no-art.png", 14 | "large": "https://lorcana-api.com/images/part_of_your_world/part_of_your_world-large.png", 15 | "art-crop": "https://lorcana-api.com/images/part_of_your_world/part_of_your_world-art-crop.png", 16 | "medium": "https://lorcana-api.com/images/part_of_your_world/part_of_your_world-medium.png", 17 | "foil": "https://lorcana-api.com/images/part_of_your_world/part_of_your_world-foil.png" 18 | }, 19 | "name": "Part Of Your World", 20 | "ink-cost": 3, 21 | "flavor-text": "What would I give if I could live out of these waters?", 22 | "rarity": "Rare" 23 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/peter_pan-fearless_fighter.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": ["Rush"], 4 | "set": "The First Chapter", 5 | "card-number": 119, 6 | "color": "Ruby", 7 | "strength": 3, 8 | "artist": "Anh Dang", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "Rush (This character can challenge the turn they're played.) ", 19 | "subtitle": "Fearless Fighter", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/peter_pan/fearless_fighter/peter_pan-fearless_fighter-small.png", 22 | "no-art": "https://lorcana-api.com/images/peter_pan/fearless_fighter/peter_pan-fearless_fighter-no-art.png", 23 | "large": "https://lorcana-api.com/images/peter_pan/fearless_fighter/peter_pan-fearless_fighter-large.png", 24 | "art-crop": "https://lorcana-api.com/images/peter_pan/fearless_fighter/peter_pan-fearless_fighter-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/peter_pan/fearless_fighter/peter_pan-fearless_fighter-medium.png", 26 | "foil": "https://lorcana-api.com/images/peter_pan/fearless_fighter/peter_pan-fearless_fighter-foil.png" 27 | }, 28 | "name": "Peter Pan", 29 | "ink-cost": 3, 30 | "flavor-text": "\"Nobody calls Pan a coward and lives! I'll fight you man-to-=man, with one hand behind my back", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/peter_pan-never_landing.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": ["Evasive"], 4 | "set": "The First Chapter", 5 | "card-number": 91, 6 | "color": "Emerald", 7 | "strength": 3, 8 | "artist": "Koni", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "Evasive (Only characters with Evasive can challenge this character.) ", 19 | "subtitle": "Never Landing", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/peter_pan/never_landing/peter_pan-never_landing-small.png", 22 | "no-art": "https://lorcana-api.com/images/peter_pan/never_landing/peter_pan-never_landing-no-art.png", 23 | "large": "https://lorcana-api.com/images/peter_pan/never_landing/peter_pan-never_landing-large.png", 24 | "art-crop": "https://lorcana-api.com/images/peter_pan/never_landing/peter_pan-never_landing-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/peter_pan/never_landing/peter_pan-never_landing-medium.png", 26 | "foil": "https://lorcana-api.com/images/peter_pan/never_landing/peter_pan-never_landing-foil.png" 27 | }, 28 | "name": "Peter Pan", 29 | "ink-cost": 3, 30 | "flavor-text": "What's the matter, Hook? Can't you fly?", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/plasma_blaster.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 204, 4 | "color": "Steel", 5 | "artist": "Oleg Yurkov", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Quick Shot": "{t}, 2{ink} - Deal 1 damage to chosen character"}, 9 | "inkable": false, 10 | "body-text": "QUICK SHOT: {t}, 2{ink} - Deal 1 damage to chosen character", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/plasma_blaster/plasma_blaster-small.png", 14 | "no-art": "https://lorcana-api.com/images/plasma_blaster/plasma_blaster-no-art.png", 15 | "large": "https://lorcana-api.com/images/plasma_blaster/plasma_blaster-large.png", 16 | "art-crop": "https://lorcana-api.com/images/plasma_blaster/plasma_blaster-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/plasma_blaster/plasma_blaster-medium.png", 18 | "foil": "https://lorcana-api.com/images/plasma_blaster/plasma_blaster-foil.png" 19 | }, 20 | "name": "Plasma Blaster", 21 | "ink-cost": 3, 22 | "flavor-text": "\"You don't have to say 'pew pew' when you use it, but it doesn't hurt.\" -Lilo, galactiv hero", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/poisoned_apple.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 134, 4 | "color": "Ruby", 5 | "artist": "Andrew Trabbold", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Take A Bite...": "1{ink}, Banish this item - Excert chosen character. If a princess character is chosen, banish her instead."}, 9 | "inkable": false, 10 | "body-text": "TAKE A BITE...: 1{ink}, Banish this item - Excert chosen character. If a princess character is chosen, banish her instead.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/poisoned_apple/poisoned_apple-small.png", 14 | "no-art": "https://lorcana-api.com/images/poisoned_apple/poisoned_apple-no-art.png", 15 | "large": "https://lorcana-api.com/images/poisoned_apple/poisoned_apple-large.png", 16 | "art-crop": "https://lorcana-api.com/images/poisoned_apple/poisoned_apple-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/poisoned_apple/poisoned_apple-medium.png", 18 | "foil": "https://lorcana-api.com/images/poisoned_apple/poisoned_apple-foil.png" 19 | }, 20 | "name": "Poisoned Apple", 21 | "ink-cost": 3, 22 | "flavor-text": "\"One taste of the poisoned apple, and the victim's eyes will close forever....\" -The Queen", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/pongo-ol'_rascal.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": ["Evasive"], 4 | "set": "The First Chapter", 5 | "card-number": 120, 6 | "color": "Ruby", 7 | "strength": 2, 8 | "artist": "Brian Weisz", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "Evasive (Only characters with Evasive can challenge this character.) ", 19 | "subtitle": "Ol' Rascal", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/pongo/ol'_rascal/pongo-ol'_rascal-small.png", 22 | "no-art": "https://lorcana-api.com/images/pongo/ol'_rascal/pongo-ol'_rascal-no-art.png", 23 | "large": "https://lorcana-api.com/images/pongo/ol'_rascal/pongo-ol'_rascal-large.png", 24 | "art-crop": "https://lorcana-api.com/images/pongo/ol'_rascal/pongo-ol'_rascal-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/pongo/ol'_rascal/pongo-ol'_rascal-medium.png", 26 | "foil": "https://lorcana-api.com/images/pongo/ol'_rascal/pongo-ol'_rascal-foil.png" 27 | }, 28 | "name": "Pongo", 29 | "ink-cost": 4, 30 | "flavor-text": "At first I had no particular plan, just anything to attract attention. You know, stir things up a bit.", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/prince_eric-dashing_and_brave.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": ["Challenger 2"], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 187, 6 | "color": "Steel", 7 | "strength": 1, 8 | "artist": "Cristian Romero", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Prince" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "Challenger 2 When challenging, this character get +2{strength}.) ", 20 | "subtitle": "Dashing and Brave", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/prince_eric/dashing_and_brave/prince_eric-dashing_and_brave-small.png", 23 | "no-art": "https://lorcana-api.com/images/prince_eric/dashing_and_brave/prince_eric-dashing_and_brave-no-art.png", 24 | "large": "https://lorcana-api.com/images/prince_eric/dashing_and_brave/prince_eric-dashing_and_brave-large.png", 25 | "art-crop": "https://lorcana-api.com/images/prince_eric/dashing_and_brave/prince_eric-dashing_and_brave-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/prince_eric/dashing_and_brave/prince_eric-dashing_and_brave-medium.png", 27 | "foil": "https://lorcana-api.com/images/prince_eric/dashing_and_brave/prince_eric-dashing_and_brave-foil.png" 28 | }, 29 | "name": "Prince Eric", 30 | "flavor-text": "\\\"I lost her once! I'm not gonna lose her again!\\\"", 31 | "ink-cost": 2, 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/pumbaa-friendly_warthog.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 0, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 17, 6 | "color": "Amber", 7 | "strength": 3, 8 | "artist": "Jenna Gray", 9 | "willpower": 5, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Friendly Warthog", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/pumbaa/friendly_warthog/pumbaa-friendly_warthog-small.png", 22 | "no-art": "https://lorcana-api.com/images/pumbaa/friendly_warthog/pumbaa-friendly_warthog-no-art.png", 23 | "large": "https://lorcana-api.com/images/pumbaa/friendly_warthog/pumbaa-friendly_warthog-large.png", 24 | "art-crop": "https://lorcana-api.com/images/pumbaa/friendly_warthog/pumbaa-friendly_warthog-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/pumbaa/friendly_warthog/pumbaa-friendly_warthog-medium.png", 26 | "foil": "https://lorcana-api.com/images/pumbaa/friendly_warthog/pumbaa-friendly_warthog-foil.png" 27 | }, 28 | "name": "Pumbaa", 29 | "ink-cost": 4, 30 | "flavor-text": "\"You gotta put your behind in your past.\"", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/rafiki-mysterious_sage.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": ["Rush"], 4 | "set": "The First Chapter", 5 | "card-number": 54, 6 | "color": "Amethyst", 7 | "strength": 3, 8 | "artist": "Giulia Riva", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Mentor", 14 | "Sorcerer" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": false, 19 | "body-text": "Rush (This character can challenge the turn they're played.) ", 20 | "subtitle": "Mysterious Sage", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/rafiki/mysterious_sage/rafiki-mysterious_sage-small.png", 23 | "no-art": "https://lorcana-api.com/images/rafiki/mysterious_sage/rafiki-mysterious_sage-no-art.png", 24 | "large": "https://lorcana-api.com/images/rafiki/mysterious_sage/rafiki-mysterious_sage-large.png", 25 | "art-crop": "https://lorcana-api.com/images/rafiki/mysterious_sage/rafiki-mysterious_sage-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/rafiki/mysterious_sage/rafiki-mysterious_sage-medium.png", 27 | "foil": "https://lorcana-api.com/images/rafiki/mysterious_sage/rafiki-mysterious_sage-foil.png" 28 | }, 29 | "name": "Rafiki", 30 | "ink-cost": 3, 31 | "flavor-text": "\"The past can hurt. But the way I see it, you can either run from it or learn from it.\"", 32 | "rarity": "Uncommon" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/ransack.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 199, 4 | "color": "Steel", 5 | "artist": "Amber Kommavongsa", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Draw 2 cards, then choose and discord 2 cards.", 11 | "effect": "Draw 2 cards, then choose and discord 2 cards.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/ransack/ransack-small.png", 14 | "no-art": "https://lorcana-api.com/images/ransack/ransack-no-art.png", 15 | "large": "https://lorcana-api.com/images/ransack/ransack-large.png", 16 | "art-crop": "https://lorcana-api.com/images/ransack/ransack-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/ransack/ransack-medium.png", 18 | "foil": "https://lorcana-api.com/images/ransack/ransack-foil.png" 19 | }, 20 | "name": "Ransack", 21 | "ink-cost": 2, 22 | "flavor-text": "Who has time to read labels?", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/reflection.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 65, 4 | "color": "Amethyst", 5 | "artist": "Kevin Hong", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Look at the top 3 cards of your deck. Put them back on the top of your deck in any order.", 11 | "effect": "Look at the top 3 cards of your deck. Put them back on the top of your deck in any order.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/reflection/reflection-small.png", 14 | "no-art": "https://lorcana-api.com/images/reflection/reflection-no-art.png", 15 | "large": "https://lorcana-api.com/images/reflection/reflection-large.png", 16 | "art-crop": "https://lorcana-api.com/images/reflection/reflection-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/reflection/reflection-medium.png", 18 | "foil": "https://lorcana-api.com/images/reflection/reflection-foil.png" 19 | }, 20 | "name": "Reflection", 21 | "ink-cost": 1, 22 | "flavor-text": "When will my reflection show\\nWho I am inside?", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/scar-fiery_usurper.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [ 4 | "", 5 | "" 6 | ], 7 | "set": "The First Chapter", 8 | "card-number": 122, 9 | "color": "Ruby", 10 | "strength": 5, 11 | "artist": "Amber Kommavongsa", 12 | "willpower": 3, 13 | "type": "Character", 14 | "subtypes": [ 15 | "Dreamborn", 16 | "Villain" 17 | ], 18 | "set-code": "TFC", 19 | "abilities": {}, 20 | "inkable": true, 21 | "body-text": " null \n null ", 22 | "subtitle": "Fiery Usurper", 23 | "image-urls": { 24 | "small": "https://lorcana-api.com/images/scar/fiery_usurper/scar-fiery_usurper-small.png", 25 | "no-art": "https://lorcana-api.com/images/scar/fiery_usurper/scar-fiery_usurper-no-art.png", 26 | "large": "https://lorcana-api.com/images/scar/fiery_usurper/scar-fiery_usurper-large.png", 27 | "art-crop": "https://lorcana-api.com/images/scar/fiery_usurper/scar-fiery_usurper-art-crop.png", 28 | "medium": "https://lorcana-api.com/images/scar/fiery_usurper/scar-fiery_usurper-medium.png", 29 | "foil": "https://lorcana-api.com/images/scar/fiery_usurper/scar-fiery_usurper-foil.png" 30 | }, 31 | "name": "Scar", 32 | "ink-cost": 4, 33 | "flavor-text": "Consumed by the flames of ambition.", 34 | "rarity": "Common" 35 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/scar-mastermind.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 0, 5 | "card-number": 158, 6 | "color": "Sapphire", 7 | "strength": 5, 8 | "artist": "Bill Robinson", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Villain" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {"Insidious Plot": "When you play this character, chosen opposing character gets -5? this turn."}, 17 | "inkable": true, 18 | "body-text": "INSIDIOUS PLOT: When you play this character, chosen opposing character gets -5? this turn.", 19 | "subtitle": "Mastermind", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/scar/mastermind/scar-mastermind-small.png", 22 | "no-art": "https://lorcana-api.com/images/scar/mastermind/scar-mastermind-no-art.png", 23 | "large": "https://lorcana-api.com/images/scar/mastermind/scar-mastermind-large.png", 24 | "art-crop": "https://lorcana-api.com/images/scar/mastermind/scar-mastermind-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/scar/mastermind/scar-mastermind-medium.png", 26 | "foil": "https://lorcana-api.com/images/scar/mastermind/scar-mastermind-foil.png" 27 | }, 28 | "name": "Scar", 29 | "flavor-text": "\\\"The best plans involve a little danger. Just not for me.\\\"", 30 | "ink-cost": 6, 31 | "rarity": "Rare" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/scepter_of_arendelle.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 170, 4 | "color": "Sapphire", 5 | "artist": "Grace Tran", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Command": "{tap} - Chosen character gains Support this turn. (Whenever they quest, you may add their {strength} to another chosen character's {strength} this turn.)"}, 9 | "inkable": true, 10 | "body-text": "COMMAND: {tap} - Chosen character gains Support this turn. (Whenever they quest, you may add their {strength} to another chosen character's {strength} this turn.)", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/scepter_of_arendelle/scepter_of_arendelle-small.png", 14 | "no-art": "https://lorcana-api.com/images/scepter_of_arendelle/scepter_of_arendelle-no-art.png", 15 | "large": "https://lorcana-api.com/images/scepter_of_arendelle/scepter_of_arendelle-large.png", 16 | "art-crop": "https://lorcana-api.com/images/scepter_of_arendelle/scepter_of_arendelle-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/scepter_of_arendelle/scepter_of_arendelle-medium.png", 18 | "foil": "https://lorcana-api.com/images/scepter_of_arendelle/scepter_of_arendelle-foil.png" 19 | }, 20 | "name": "Scepter Of Arendelle", 21 | "ink-cost": 1, 22 | "flavor-text": "", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/sebastian-court_composer.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": ["Singer 4"], 4 | "set": "The First Chapter", 5 | "card-number": 19, 6 | "color": "Amber", 7 | "strength": 2, 8 | "artist": "Isaiah Mesq", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "Singer 4 (This character counts as cost 4 to sing songs.) ", 19 | "subtitle": "Court Composer", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/sebastian/court_composer/sebastian-court_composer-small.png", 22 | "no-art": "https://lorcana-api.com/images/sebastian/court_composer/sebastian-court_composer-no-art.png", 23 | "large": "https://lorcana-api.com/images/sebastian/court_composer/sebastian-court_composer-large.png", 24 | "art-crop": "https://lorcana-api.com/images/sebastian/court_composer/sebastian-court_composer-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/sebastian/court_composer/sebastian-court_composer-medium.png", 26 | "foil": "https://lorcana-api.com/images/sebastian/court_composer/sebastian-court_composer-foil.png" 27 | }, 28 | "name": "Sebastian", 29 | "ink-cost": 2, 30 | "flavor-text": "I should be writing symphonies, not tagging along after some headstrong teenager.", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/sergeant_tibbs-courageous_cat.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 124, 6 | "color": "Ruby", 7 | "strength": 2, 8 | "artist": "Cary Godhey", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Courageous Cat", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/sergeant_tibbs/courageous_cat/sergeant_tibbs-courageous_cat-small.png", 22 | "no-art": "https://lorcana-api.com/images/sergeant_tibbs/courageous_cat/sergeant_tibbs-courageous_cat-no-art.png", 23 | "large": "https://lorcana-api.com/images/sergeant_tibbs/courageous_cat/sergeant_tibbs-courageous_cat-large.png", 24 | "art-crop": "https://lorcana-api.com/images/sergeant_tibbs/courageous_cat/sergeant_tibbs-courageous_cat-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/sergeant_tibbs/courageous_cat/sergeant_tibbs-courageous_cat-medium.png", 26 | "foil": "https://lorcana-api.com/images/sergeant_tibbs/courageous_cat/sergeant_tibbs-courageous_cat-foil.png" 27 | }, 28 | "name": "Sergeant Tibbs", 29 | "ink-cost": 1, 30 | "flavor-text": "Yes, sir. Righto, sir. Right away, sir!", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/shield_of_virtue.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 135, 4 | "color": "Ruby", 5 | "artist": "Eri Welli", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Fireproof": "{t}, 3{ink} - Read chosen character. They can't quest for the rest of this turn."}, 9 | "inkable": true, 10 | "body-text": "FIREPROOF: {t}, 3{ink} - Read chosen character. They can't quest for the rest of this turn.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/shield_of_virtue/shield_of_virtue-small.png", 14 | "no-art": "https://lorcana-api.com/images/shield_of_virtue/shield_of_virtue-no-art.png", 15 | "large": "https://lorcana-api.com/images/shield_of_virtue/shield_of_virtue-large.png", 16 | "art-crop": "https://lorcana-api.com/images/shield_of_virtue/shield_of_virtue-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/shield_of_virtue/shield_of_virtue-medium.png", 18 | "foil": "https://lorcana-api.com/images/shield_of_virtue/shield_of_virtue-foil.png" 19 | }, 20 | "name": "Shield Of Virtue", 21 | "ink-cost": 1, 22 | "flavor-text": "\"Arm thyself with this enchanted Shield of Virtue and this mighty Sword of Truth, for these weapons of righteousness will triumph over evil.\" -Flora", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/simba-future_king.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 188, 6 | "color": "Steel", 7 | "strength": 1, 8 | "artist": "Nicholas Kole", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Prince" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Guess What?": "When you play this character, you may draw a card, then choose and discard a card."}, 18 | "inkable": true, 19 | "body-text": "GUESS WHAT?: When you play this character, you may draw a card, then choose and discard a card.", 20 | "subtitle": "Future King", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/simba/future_king/simba-future_king-small.png", 23 | "no-art": "https://lorcana-api.com/images/simba/future_king/simba-future_king-no-art.png", 24 | "large": "https://lorcana-api.com/images/simba/future_king/simba-future_king-large.png", 25 | "art-crop": "https://lorcana-api.com/images/simba/future_king/simba-future_king-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/simba/future_king/simba-future_king-medium.png", 27 | "foil": "https://lorcana-api.com/images/simba/future_king/simba-future_king-foil.png" 28 | }, 29 | "name": "Simba", 30 | "ink-cost": 1, 31 | "flavor-text": "I'm gonna be the best king the Pride Lands have ever seen!", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/simba-protective_cub.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": ["Bodyguard"], 4 | "set": "The First Chapter", 5 | "card-number": 20, 6 | "color": "Amber", 7 | "strength": 2, 8 | "artist": "Filipe Laurentino", 9 | "willpower": 3, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Prince" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "Bodyguard (This character may enter play exerted. An opposing character who challenges one of your characters must choose one with Bodyguard if able.) ", 20 | "subtitle": "Protective Cub", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/simba/protective_cub/simba-protective_cub-small.png", 23 | "no-art": "https://lorcana-api.com/images/simba/protective_cub/simba-protective_cub-no-art.png", 24 | "large": "https://lorcana-api.com/images/simba/protective_cub/simba-protective_cub-large.png", 25 | "art-crop": "https://lorcana-api.com/images/simba/protective_cub/simba-protective_cub-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/simba/protective_cub/simba-protective_cub-medium.png", 27 | "foil": "https://lorcana-api.com/images/simba/protective_cub/simba-protective_cub-foil.png" 28 | }, 29 | "name": "Simba", 30 | "ink-cost": 2, 31 | "flavor-text": "Courage comes in all sizes", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/smash.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 200, 4 | "color": "Steel", 5 | "artist": "Simangaliso Sibaya", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Deal 3 damage to the chosen character", 11 | "effect": "Deal 3 damage to the chosen character", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/smash/smash-small.png", 14 | "no-art": "https://lorcana-api.com/images/smash/smash-no-art.png", 15 | "large": "https://lorcana-api.com/images/smash/smash-large.png", 16 | "art-crop": "https://lorcana-api.com/images/smash/smash-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/smash/smash-medium.png", 18 | "foil": "https://lorcana-api.com/images/smash/smash-foil.png" 19 | }, 20 | "name": "Smash", 21 | "ink-cost": 3, 22 | "flavor-text": "\\\"Go away!\\\"", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/stampede.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 96, 4 | "color": "Emerald", 5 | "artist": "Matt Chapman", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": false, 10 | "body-text": "Deal 2 damage to chosen damaged character.", 11 | "effect": "Deal 2 damage to chosen damaged character.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/stampede/stampede-small.png", 14 | "no-art": "https://lorcana-api.com/images/stampede/stampede-no-art.png", 15 | "large": "https://lorcana-api.com/images/stampede/stampede-large.png", 16 | "art-crop": "https://lorcana-api.com/images/stampede/stampede-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/stampede/stampede-medium.png", 18 | "foil": "https://lorcana-api.com/images/stampede/stampede-foil.png" 19 | }, 20 | "name": "Stampede", 21 | "ink-cost": 1, 22 | "flavor-text": "A wildebeest stampede is like a raging river: best experienced from a distance", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/starkey-hook's_henchman.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 0, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 191, 6 | "color": "Steel", 7 | "strength": 5, 8 | "artist": "Leonardo Giammichele", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally", 14 | "Pirate" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Aye Aye Captain": "While you have a Captain character gets +1 {lore}."}, 18 | "inkable": true, 19 | "body-text": "AYE AYE CAPTAIN: While you have a Captain character gets +1 {lore}.", 20 | "subtitle": "Hook's Henchman", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/starkey/hook's_henchman/starkey-hook's_henchman-small.png", 23 | "no-art": "https://lorcana-api.com/images/starkey/hook's_henchman/starkey-hook's_henchman-no-art.png", 24 | "large": "https://lorcana-api.com/images/starkey/hook's_henchman/starkey-hook's_henchman-large.png", 25 | "art-crop": "https://lorcana-api.com/images/starkey/hook's_henchman/starkey-hook's_henchman-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/starkey/hook's_henchman/starkey-hook's_henchman-medium.png", 27 | "foil": "https://lorcana-api.com/images/starkey/hook's_henchman/starkey-hook's_henchman-foil.png" 28 | }, 29 | "name": "Starkey", 30 | "ink-cost": 5, 31 | "flavor-text": "A pirate must be tough, loyal, and strong. \"Smart\" doesn't even make the list.", 32 | "rarity": "Uncommon" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/steal_from_the_rich.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 97, 4 | "color": "Emerald", 5 | "artist": "Hedvig Haggman-Sund", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": false, 10 | "body-text": "Whenever one of your characters quests this turn, each opponent loses 1 lore.", 11 | "effect": "Whenever one of your characters quests this turn, each opponent loses 1 lore.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/steal_from_the_rich/steal_from_the_rich-small.png", 14 | "no-art": "https://lorcana-api.com/images/steal_from_the_rich/steal_from_the_rich-no-art.png", 15 | "large": "https://lorcana-api.com/images/steal_from_the_rich/steal_from_the_rich-large.png", 16 | "art-crop": "https://lorcana-api.com/images/steal_from_the_rich/steal_from_the_rich-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/steal_from_the_rich/steal_from_the_rich-medium.png", 18 | "foil": "https://lorcana-api.com/images/steal_from_the_rich/steal_from_the_rich-foil.png" 19 | }, 20 | "name": "Steal From The Rich", 21 | "ink-cost": 5, 22 | "flavor-text": "\"Wonder how much ol' Prince John spent on all those fancy locks.\" -Little John", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/stitch-abomination.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 3, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 125, 6 | "color": "Ruby", 7 | "strength": 4, 8 | "artist": "Bill Robinson", 9 | "willpower": 6, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Alien" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "Abomination", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/stitch/abomination/stitch-abomination-small.png", 23 | "no-art": "https://lorcana-api.com/images/stitch/abomination/stitch-abomination-no-art.png", 24 | "large": "https://lorcana-api.com/images/stitch/abomination/stitch-abomination-large.png", 25 | "art-crop": "https://lorcana-api.com/images/stitch/abomination/stitch-abomination-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/stitch/abomination/stitch-abomination-medium.png", 27 | "foil": "https://lorcana-api.com/images/stitch/abomination/stitch-abomination-foil.png" 28 | }, 29 | "name": "Stitch", 30 | "ink-cost": 6, 31 | "flavor-text": "\"His destructive programming is taking effect. He will be irresisibly drawn to large cities, where he will back up sewers, reverse street signs, and steal everyone's left shoe.\" -Jumba Jookiba", 32 | "rarity": "Rare" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/stitch-new_dog.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 22, 6 | "color": "Amber", 7 | "strength": 2, 8 | "artist": "Alex Accorsi", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Hero", 14 | "Alien" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": true, 19 | "body-text": "", 20 | "subtitle": "New Dog", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/stitch/new_dog/stitch-new_dog-small.png", 23 | "no-art": "https://lorcana-api.com/images/stitch/new_dog/stitch-new_dog-no-art.png", 24 | "large": "https://lorcana-api.com/images/stitch/new_dog/stitch-new_dog-large.png", 25 | "art-crop": "https://lorcana-api.com/images/stitch/new_dog/stitch-new_dog-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/stitch/new_dog/stitch-new_dog-medium.png", 27 | "foil": "https://lorcana-api.com/images/stitch/new_dog/stitch-new_dog-foil.png" 28 | }, 29 | "name": "Stitch", 30 | "ink-cost": 1, 31 | "flavor-text": "Lilo: \"David! I got a new dog!\" David: \"Auwe!... You sure it's a dog?\" Lilo: \"Uh-huh. He used to be a collie before he got ran over.\"", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/stolen_scimitar.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 102, 4 | "color": "Emerald", 5 | "artist": "Kendall Hale", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Slash": "{t} - Chosen character gets +1{strength} this turn. If a character named Alladdin is chosen, he get +2{strength} instead."}, 9 | "inkable": true, 10 | "body-text": "SLASH: {t} - Chosen character gets +1{strength} this turn. If a character named Alladdin is chosen, he get +2{strength} instead.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/stolen_scimitar/stolen_scimitar-small.png", 14 | "no-art": "https://lorcana-api.com/images/stolen_scimitar/stolen_scimitar-no-art.png", 15 | "large": "https://lorcana-api.com/images/stolen_scimitar/stolen_scimitar-large.png", 16 | "art-crop": "https://lorcana-api.com/images/stolen_scimitar/stolen_scimitar-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/stolen_scimitar/stolen_scimitar-medium.png", 18 | "foil": "https://lorcana-api.com/images/stolen_scimitar/stolen_scimitar-foil.png" 19 | }, 20 | "name": "Stolen Scimitar", 21 | "ink-cost": 2, 22 | "flavor-text": "Sometimes you've got to take what you can get.", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/sudden_chill.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 98, 4 | "color": "Emerald", 5 | "artist": "Giulia Riva", 6 | "type": "Action - Song", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Each opponent chooses and discards a card.", 11 | "effect": "Each opponent chooses and discards a card.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/sudden_chill/sudden_chill-small.png", 14 | "no-art": "https://lorcana-api.com/images/sudden_chill/sudden_chill-no-art.png", 15 | "large": "https://lorcana-api.com/images/sudden_chill/sudden_chill-large.png", 16 | "art-crop": "https://lorcana-api.com/images/sudden_chill/sudden_chill-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/sudden_chill/sudden_chill-medium.png", 18 | "foil": "https://lorcana-api.com/images/sudden_chill/sudden_chill-foil.png" 19 | }, 20 | "name": "Sudden Chill", 21 | "ink-cost": 2, 22 | "flavor-text": "Cruella De Vil, Cruella De Vil, If she doesn't scare you, no evil thing will", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/sven-official_ice_deliverer.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 55, 6 | "color": "Amethyst", 7 | "strength": 5, 8 | "artist": "Jared Nickerl", 9 | "willpower": 7, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Official Ice Deliverer", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/sven/official_ice_deliverer/sven-official_ice_deliverer-small.png", 22 | "no-art": "https://lorcana-api.com/images/sven/official_ice_deliverer/sven-official_ice_deliverer-no-art.png", 23 | "large": "https://lorcana-api.com/images/sven/official_ice_deliverer/sven-official_ice_deliverer-large.png", 24 | "art-crop": "https://lorcana-api.com/images/sven/official_ice_deliverer/sven-official_ice_deliverer-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/sven/official_ice_deliverer/sven-official_ice_deliverer-medium.png", 26 | "foil": "https://lorcana-api.com/images/sven/official_ice_deliverer/sven-official_ice_deliverer-foil.png" 27 | }, 28 | "name": "Sven", 29 | "ink-cost": 6, 30 | "flavor-text": "\"Reindeer comin' through!\" - Kristoff", 31 | "rarity": "Uncommon" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/sword_of_truth.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 136, 4 | "color": "Ruby", 5 | "artist": "Andrew Trabbold", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Final Enchantment": "Banish this item - Banish chosen villain character."}, 9 | "inkable": false, 10 | "body-text": "FINAL ENCHANTMENT: Banish this item - Banish chosen villain character.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/sword_of_truth/sword_of_truth-small.png", 14 | "no-art": "https://lorcana-api.com/images/sword_of_truth/sword_of_truth-no-art.png", 15 | "large": "https://lorcana-api.com/images/sword_of_truth/sword_of_truth-large.png", 16 | "art-crop": "https://lorcana-api.com/images/sword_of_truth/sword_of_truth-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/sword_of_truth/sword_of_truth-medium.png", 18 | "foil": "https://lorcana-api.com/images/sword_of_truth/sword_of_truth-foil.png" 19 | }, 20 | "name": "Sword Of Truth", 21 | "ink-cost": 4, 22 | "flavor-text": "Almost as powerful as True Love's Kiss.", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/tamatoa-drab_little_crab.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 92, 6 | "color": "Emerald", 7 | "strength": 1, 8 | "artist": "Jeff Murchie", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": ["Dreamborn"], 12 | "set-code": "TFC", 13 | "abilities": {}, 14 | "inkable": true, 15 | "body-text": "", 16 | "subtitle": "Drab Little Crab", 17 | "image-urls": { 18 | "small": "https://lorcana-api.com/images/tamatoa/drab_little_crab/tamatoa-drab_little_crab-small.png", 19 | "no-art": "https://lorcana-api.com/images/tamatoa/drab_little_crab/tamatoa-drab_little_crab-no-art.png", 20 | "large": "https://lorcana-api.com/images/tamatoa/drab_little_crab/tamatoa-drab_little_crab-large.png", 21 | "art-crop": "https://lorcana-api.com/images/tamatoa/drab_little_crab/tamatoa-drab_little_crab-art-crop.png", 22 | "medium": "https://lorcana-api.com/images/tamatoa/drab_little_crab/tamatoa-drab_little_crab-medium.png", 23 | "foil": "https://lorcana-api.com/images/tamatoa/drab_little_crab/tamatoa-drab_little_crab-foil.png" 24 | }, 25 | "name": "Tamatoa", 26 | "ink-cost": 2, 27 | "flavor-text": "\"Someday, I'll grow up to be the most crabulous crustacean the world has ever seen!\"", 28 | "rarity": "Uncommon" 29 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/tangle.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 133, 4 | "color": "Ruby", 5 | "artist": "Eri Welli", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Each opponent loses 1 lore.", 11 | "effect": "Each opponent loses 1 lore.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/tangle/tangle-small.png", 14 | "no-art": "https://lorcana-api.com/images/tangle/tangle-no-art.png", 15 | "large": "https://lorcana-api.com/images/tangle/tangle-large.png", 16 | "art-crop": "https://lorcana-api.com/images/tangle/tangle-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/tangle/tangle-medium.png", 18 | "foil": "https://lorcana-api.com/images/tangle/tangle-foil.png" 19 | }, 20 | "name": "Tangle", 21 | "ink-cost": 2, 22 | "flavor-text": "\"Stay right there! I mean, you don't have a choice, I guess. But still! Don't move!\" - Rapunzel", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/te_ka-heartless.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 192, 6 | "color": "Steel", 7 | "strength": 5, 8 | "artist": "Andrew Trabbold", 9 | "willpower": 5, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Villain", 14 | "Deity" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Seek The Heart": "During your turn, whenever this character banishes another character in a challenge, you gain 2 lore"}, 18 | "inkable": true, 19 | "body-text": "SEEK THE HEART: During your turn, whenever this character banishes another character in a challenge, you gain 2 lore", 20 | "subtitle": "Heartless", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/te_ka/heartless/te_ka-heartless-small.png", 23 | "no-art": "https://lorcana-api.com/images/te_ka/heartless/te_ka-heartless-no-art.png", 24 | "large": "https://lorcana-api.com/images/te_ka/heartless/te_ka-heartless-large.png", 25 | "art-crop": "https://lorcana-api.com/images/te_ka/heartless/te_ka-heartless-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/te_ka/heartless/te_ka-heartless-medium.png", 27 | "foil": "https://lorcana-api.com/images/te_ka/heartless/te_ka-heartless-foil.png" 28 | }, 29 | "name": "Te Ka", 30 | "ink-cost": 6, 31 | "flavor-text": "Maui: \"Ever defeat a lava monster?\" Moana: \"No, have you?\"", 32 | "rarity": "Legendary" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/te_ka-the_burning_one.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 0, 3 | "traits": ["Reckless"], 4 | "set": "The First Chapter", 5 | "card-number": 126, 6 | "color": "Ruby", 7 | "strength": 8, 8 | "artist": "Kamil Murzyn", 9 | "willpower": 6, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Villain", 14 | "Deity" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {}, 18 | "inkable": false, 19 | "body-text": "Reckless (This character can't quest and must challenge each turn if able.) ", 20 | "subtitle": "The Burning One", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/te_ka/the_burning_one/te_ka-the_burning_one-small.png", 23 | "no-art": "https://lorcana-api.com/images/te_ka/the_burning_one/te_ka-the_burning_one-no-art.png", 24 | "large": "https://lorcana-api.com/images/te_ka/the_burning_one/te_ka-the_burning_one-large.png", 25 | "art-crop": "https://lorcana-api.com/images/te_ka/the_burning_one/te_ka-the_burning_one-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/te_ka/the_burning_one/te_ka-the_burning_one-medium.png", 27 | "foil": "https://lorcana-api.com/images/te_ka/the_burning_one/te_ka-the_burning_one-foil.png" 28 | }, 29 | "name": "Te Ka", 30 | "ink-cost": 6, 31 | "flavor-text": "She burns for that which was stolen from her.", 32 | "rarity": "Super Rare" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/the_beast_is_mine!.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 99, 4 | "color": "Emerald", 5 | "artist": "unknown", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Chosen character gains Reckless during their next turn. (They can't quest and must challenge if able.)", 11 | "effect": "Chosen character gains Reckless during their next turn. (They can't quest and must challenge if able.)", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/the_beast_is_mine!/the_beast_is_mine!-small.png", 14 | "no-art": "https://lorcana-api.com/images/the_beast_is_mine!/the_beast_is_mine!-no-art.png", 15 | "large": "https://lorcana-api.com/images/the_beast_is_mine!/the_beast_is_mine!-large.png", 16 | "art-crop": "https://lorcana-api.com/images/the_beast_is_mine!/the_beast_is_mine!-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/the_beast_is_mine!/the_beast_is_mine!-medium.png", 18 | "foil": "https://lorcana-api.com/images/the_beast_is_mine!/the_beast_is_mine!-foil.png" 19 | }, 20 | "name": "The Beast Is Mine!", 21 | "ink-cost": 3, 22 | "flavor-text": "\\\"It's only fitting that the finest hunter get the foulest beast!\\\" -Gaston", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/the_queen-wicked_and_vain.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 56, 6 | "color": "Amethyst", 7 | "strength": 4, 8 | "artist": "Matthew Robert Davies", 9 | "willpower": 5, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Villain", 14 | "Queen" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"I Summon Thee": "{t} - Draw a card."}, 18 | "inkable": true, 19 | "body-text": "I SUMMON THEE: {t} - Draw a card.", 20 | "subtitle": "Wicked and Vain", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/the_queen/wicked_and_vain/the_queen-wicked_and_vain-small.png", 23 | "no-art": "https://lorcana-api.com/images/the_queen/wicked_and_vain/the_queen-wicked_and_vain-no-art.png", 24 | "large": "https://lorcana-api.com/images/the_queen/wicked_and_vain/the_queen-wicked_and_vain-large.png", 25 | "art-crop": "https://lorcana-api.com/images/the_queen/wicked_and_vain/the_queen-wicked_and_vain-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/the_queen/wicked_and_vain/the_queen-wicked_and_vain-medium.png", 27 | "foil": "https://lorcana-api.com/images/the_queen/wicked_and_vain/the_queen-wicked_and_vain-foil.png" 28 | }, 29 | "name": "The Queen", 30 | "ink-cost": 5, 31 | "flavor-text": "Sublime beauty matched with peerless cunning. Is there any question who is fairest?", 32 | "rarity": "Super Rare" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/the_wardrobe-belle's_confidant.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 57, 6 | "color": "Amethyst", 7 | "strength": 3, 8 | "artist": "Giulia Riva", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "Belle's Confidant", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/the_wardrobe/belle's_confidant/the_wardrobe-belle's_confidant-small.png", 22 | "no-art": "https://lorcana-api.com/images/the_wardrobe/belle's_confidant/the_wardrobe-belle's_confidant-no-art.png", 23 | "large": "https://lorcana-api.com/images/the_wardrobe/belle's_confidant/the_wardrobe-belle's_confidant-large.png", 24 | "art-crop": "https://lorcana-api.com/images/the_wardrobe/belle's_confidant/the_wardrobe-belle's_confidant-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/the_wardrobe/belle's_confidant/the_wardrobe-belle's_confidant-medium.png", 26 | "foil": "https://lorcana-api.com/images/the_wardrobe/belle's_confidant/the_wardrobe-belle's_confidant-foil.png" 27 | }, 28 | "name": "The Wardrobe", 29 | "ink-cost": 3, 30 | "flavor-text": "When you simply must have the hautest couture.", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/tigger-wonderful_thing.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": ["Evasive (Only characters with Evasive can challenge this character.)"], 3 | "set": "The First Chapter", 4 | "lore-value": 0, 5 | "card-number": 127, 6 | "color": "Ruby", 7 | "strength": 4, 8 | "artist": "Kenneth Anderson", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Tigger" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "Evasive (Only characters with Evasive can challenge this character.) (Only characters with Evasive can challenge this character.) ", 19 | "subtitle": "Wonderful Thing", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/tigger/wonderful_thing/tigger-wonderful_thing-small.png", 22 | "no-art": "https://lorcana-api.com/images/tigger/wonderful_thing/tigger-wonderful_thing-no-art.png", 23 | "large": "https://lorcana-api.com/images/tigger/wonderful_thing/tigger-wonderful_thing-large.png", 24 | "art-crop": "https://lorcana-api.com/images/tigger/wonderful_thing/tigger-wonderful_thing-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/tigger/wonderful_thing/tigger-wonderful_thing-medium.png", 26 | "foil": "https://lorcana-api.com/images/tigger/wonderful_thing/tigger-wonderful_thing-foil.png" 27 | }, 28 | "name": "Tigger", 29 | "flavor-text": "\\\"I'm the bounciest bouncer that ever bounced!\\\"", 30 | "ink-cost": 6, 31 | "rarity": "Uncommon" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/timon-grub_rustler.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 24, 6 | "color": "Amber", 7 | "strength": 1, 8 | "artist": "Juan Diego Leon", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "Ally" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {"Tastes Like Chicken": "When you play this character, you may remove up to 1 damage from chosen character."}, 17 | "inkable": true, 18 | "body-text": "TASTES LIKE CHICKEN: When you play this character, you may remove up to 1 damage from chosen character.", 19 | "subtitle": "Grub Rustler", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/timon/grub_rustler/timon-grub_rustler-small.png", 22 | "no-art": "https://lorcana-api.com/images/timon/grub_rustler/timon-grub_rustler-no-art.png", 23 | "large": "https://lorcana-api.com/images/timon/grub_rustler/timon-grub_rustler-large.png", 24 | "art-crop": "https://lorcana-api.com/images/timon/grub_rustler/timon-grub_rustler-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/timon/grub_rustler/timon-grub_rustler-medium.png", 26 | "foil": "https://lorcana-api.com/images/timon/grub_rustler/timon-grub_rustler-foil.png" 27 | }, 28 | "name": "Timon", 29 | "ink-cost": 1, 30 | "flavor-text": "\"There's all manner of tasty treats in the world-ya just gotta know where to look.", 31 | "rarity": "Common" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/tinker_bell-tiny_tactician.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 1, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 194, 6 | "color": "Steel", 7 | "strength": 2, 8 | "artist": "Grace Tran", 9 | "willpower": 4, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Ally", 14 | "Fairy" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"Battle Plans": "{t} - Draw a card, then choose and discard a card."}, 18 | "inkable": true, 19 | "body-text": "BATTLE PLANS: {t} - Draw a card, then choose and discard a card.", 20 | "subtitle": "Tiny Tactician", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/tinker_bell/tiny_tactician/tinker_bell-tiny_tactician-small.png", 23 | "no-art": "https://lorcana-api.com/images/tinker_bell/tiny_tactician/tinker_bell-tiny_tactician-no-art.png", 24 | "large": "https://lorcana-api.com/images/tinker_bell/tiny_tactician/tinker_bell-tiny_tactician-large.png", 25 | "art-crop": "https://lorcana-api.com/images/tinker_bell/tiny_tactician/tinker_bell-tiny_tactician-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/tinker_bell/tiny_tactician/tinker_bell-tiny_tactician-medium.png", 27 | "foil": "https://lorcana-api.com/images/tinker_bell/tiny_tactician/tinker_bell-tiny_tactician-foil.png" 28 | }, 29 | "name": "Tinker Bell", 30 | "ink-cost": 3, 31 | "flavor-text": "Sometimes all you need is a little tactical genius.", 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/triton-the_sea_king.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [], 4 | "set": "The First Chapter", 5 | "card-number": 160, 6 | "color": "Sapphire", 7 | "strength": 5, 8 | "artist": "Cristian Romero", 9 | "willpower": 6, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Storyborn", 13 | "King" 14 | ], 15 | "set-code": "TFC", 16 | "abilities": {}, 17 | "inkable": true, 18 | "body-text": "", 19 | "subtitle": "The Sea King", 20 | "image-urls": { 21 | "small": "https://lorcana-api.com/images/triton/the_sea_king/triton-the_sea_king-small.png", 22 | "no-art": "https://lorcana-api.com/images/triton/the_sea_king/triton-the_sea_king-no-art.png", 23 | "large": "https://lorcana-api.com/images/triton/the_sea_king/triton-the_sea_king-large.png", 24 | "art-crop": "https://lorcana-api.com/images/triton/the_sea_king/triton-the_sea_king-art-crop.png", 25 | "medium": "https://lorcana-api.com/images/triton/the_sea_king/triton-the_sea_king-medium.png", 26 | "foil": "https://lorcana-api.com/images/triton/the_sea_king/triton-the_sea_king-foil.png" 27 | }, 28 | "name": "Triton", 29 | "ink-cost": 7, 30 | "flavor-text": "Isn't 'Because I said so' enough of a reason?", 31 | "rarity": "Uncommon" 32 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/ursula's_cauldron.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 67, 4 | "color": "Amethyst", 5 | "artist": "Oleg Yurkov", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Peer Into The Depths": "{t} - Look at the top 2 cards of your deck. Put one on the top of your deck and the other on the bottom."}, 9 | "inkable": false, 10 | "body-text": "PEER INTO THE DEPTHS: {t} - Look at the top 2 cards of your deck. Put one on the top of your deck and the other on the bottom.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/ursula's_cauldron/ursula's_cauldron-small.png", 14 | "no-art": "https://lorcana-api.com/images/ursula's_cauldron/ursula's_cauldron-no-art.png", 15 | "large": "https://lorcana-api.com/images/ursula's_cauldron/ursula's_cauldron-large.png", 16 | "art-crop": "https://lorcana-api.com/images/ursula's_cauldron/ursula's_cauldron-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/ursula's_cauldron/ursula's_cauldron-medium.png", 18 | "foil": "https://lorcana-api.com/images/ursula's_cauldron/ursula's_cauldron-foil.png" 19 | }, 20 | "name": "Ursula's Cauldron", 21 | "ink-cost": 2, 22 | "flavor-text": "\"Perfect for mixing potions and stealing voices.\"", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/ursula's_shell_necklace.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 34, 4 | "color": "Amber", 5 | "artist": "Jenna Gray", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"Now, Sing!": "Whenever you play a song, you may pay 1 {ink} to draw a card."}, 9 | "inkable": false, 10 | "body-text": "NOW, SING!: Whenever you play a song, you may pay 1 {ink} to draw a card.", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/ursula's_shell_necklace/ursula's_shell_necklace-small.png", 14 | "no-art": "https://lorcana-api.com/images/ursula's_shell_necklace/ursula's_shell_necklace-no-art.png", 15 | "large": "https://lorcana-api.com/images/ursula's_shell_necklace/ursula's_shell_necklace-large.png", 16 | "art-crop": "https://lorcana-api.com/images/ursula's_shell_necklace/ursula's_shell_necklace-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/ursula's_shell_necklace/ursula's_shell_necklace-medium.png", 18 | "foil": "https://lorcana-api.com/images/ursula's_shell_necklace/ursula's_shell_necklace-foil.png" 19 | }, 20 | "name": "Ursula's Shell Necklace", 21 | "ink-cost": 3, 22 | "flavor-text": "\"Singing is a lovely pastime... if you've got the voice for it.\" \\n - Ursula", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/vicious_betrayal.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 100, 4 | "color": "Emerald", 5 | "artist": "Michaela Martin", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Chosen character gets +2 {strength} this turn. If a villain character is chosen, they get +3 {strength} instead.", 11 | "effect": "Chosen character gets +2 {strength} this turn. If a villain character is chosen, they get +3 {strength} instead.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/vicious_betrayal/vicious_betrayal-small.png", 14 | "no-art": "https://lorcana-api.com/images/vicious_betrayal/vicious_betrayal-no-art.png", 15 | "large": "https://lorcana-api.com/images/vicious_betrayal/vicious_betrayal-large.png", 16 | "art-crop": "https://lorcana-api.com/images/vicious_betrayal/vicious_betrayal-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/vicious_betrayal/vicious_betrayal-medium.png", 18 | "foil": "https://lorcana-api.com/images/vicious_betrayal/vicious_betrayal-foil.png" 19 | }, 20 | "name": "Vicious Betrayal", 21 | "ink-cost": 1, 22 | "flavor-text": "\"A true king takes matters into his own claws.\"\\n - Scar", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/white_rabbit's_pocket_watch.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 68, 4 | "color": "Amethyst", 5 | "artist": "Kamil Murzyn", 6 | "type": "Item", 7 | "set-code": "TFC", 8 | "abilities": {"I'm late!": "{t}, 1{ink}Chosen character gains Rush this turn. (They can challenge the turn they're played)"}, 9 | "inkable": true, 10 | "body-text": "I'M LATE!: {t}, 1{ink}Chosen character gains Rush this turn. (They can challenge the turn they're played)", 11 | "effect": "", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/white_rabbit's_pocket_watch/white_rabbit's_pocket_watch-small.png", 14 | "no-art": "https://lorcana-api.com/images/white_rabbit's_pocket_watch/white_rabbit's_pocket_watch-no-art.png", 15 | "large": "https://lorcana-api.com/images/white_rabbit's_pocket_watch/white_rabbit's_pocket_watch-large.png", 16 | "art-crop": "https://lorcana-api.com/images/white_rabbit's_pocket_watch/white_rabbit's_pocket_watch-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/white_rabbit's_pocket_watch/white_rabbit's_pocket_watch-medium.png", 18 | "foil": "https://lorcana-api.com/images/white_rabbit's_pocket_watch/white_rabbit's_pocket_watch-foil.png" 19 | }, 20 | "name": "White Rabbit's Pocket Watch", 21 | "ink-cost": 3, 22 | "flavor-text": "\\\"No wonder you're late. Why, this watch is exactly two days slow\\\"", 23 | "rarity": "Rare" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/work_together.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 165, 4 | "color": "Sapphire", 5 | "artist": "Bill Robinson", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Chosen Character gains Support this turn. (Whenever they quest, you may add their {strength} to another chosen character's {strength} this turn.)", 11 | "effect": "Chosen Character gains Support this turn. (Whenever they quest, you may add their {strength} to another chosen character's {strength} this turn.)", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/work_together/work_together-small.png", 14 | "no-art": "https://lorcana-api.com/images/work_together/work_together-no-art.png", 15 | "large": "https://lorcana-api.com/images/work_together/work_together-large.png", 16 | "art-crop": "https://lorcana-api.com/images/work_together/work_together-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/work_together/work_together-medium.png", 18 | "foil": "https://lorcana-api.com/images/work_together/work_together-foil.png" 19 | }, 20 | "name": "Work Together", 21 | "ink-cost": 1, 22 | "flavor-text": "Pacho: \"Put your whole back into it!\" Kuzco: \"This is my whole back!\"", 23 | "rarity": "Common" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/you_have_forgotten_me.txt: -------------------------------------------------------------------------------- 1 | { 2 | "set": "The First Chapter", 3 | "card-number": 31, 4 | "color": "Amber", 5 | "artist": "Alice Pisoni", 6 | "type": "Action", 7 | "set-code": "TFC", 8 | "abilities": {}, 9 | "inkable": true, 10 | "body-text": "Each opponent chooses and discards 2 cards.", 11 | "effect": "Each opponent chooses and discards 2 cards.", 12 | "image-urls": { 13 | "small": "https://lorcana-api.com/images/you_have_forgotten_me/you_have_forgotten_me-small.png", 14 | "no-art": "https://lorcana-api.com/images/you_have_forgotten_me/you_have_forgotten_me-no-art.png", 15 | "large": "https://lorcana-api.com/images/you_have_forgotten_me/you_have_forgotten_me-large.png", 16 | "art-crop": "https://lorcana-api.com/images/you_have_forgotten_me/you_have_forgotten_me-art-crop.png", 17 | "medium": "https://lorcana-api.com/images/you_have_forgotten_me/you_have_forgotten_me-medium.png", 18 | "foil": "https://lorcana-api.com/images/you_have_forgotten_me/you_have_forgotten_me-foil.png" 19 | }, 20 | "name": "You Have Forgotten Me", 21 | "ink-cost": 4, 22 | "flavor-text": "\"You are more than what you have become.\" -Mufasa", 23 | "rarity": "Uncommon" 24 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/yzma-alchemist.txt: -------------------------------------------------------------------------------- 1 | { 2 | "traits": [], 3 | "set": "The First Chapter", 4 | "lore-value": 1, 5 | "card-number": 60, 6 | "color": "Amethyst", 7 | "strength": 2, 8 | "artist": "Hadjie Joos", 9 | "willpower": 2, 10 | "type": "Character", 11 | "subtypes": [ 12 | "Dreamborn", 13 | "Villain", 14 | "Sorcerer" 15 | ], 16 | "set-code": "TFC", 17 | "abilities": {"You're Excused": "Whenever this character quests, look at the top card of your deck. Put it on either the top or the bottom of your deck"}, 18 | "inkable": true, 19 | "body-text": "YOU'RE EXCUSED: Whenever this character quests, look at the top card of your deck. Put it on either the top or the bottom of your deck", 20 | "subtitle": "Alchemist", 21 | "image-urls": { 22 | "small": "https://lorcana-api.com/images/yzma/alchemist/yzma-alchemist-small.png", 23 | "no-art": "https://lorcana-api.com/images/yzma/alchemist/yzma-alchemist-no-art.png", 24 | "large": "https://lorcana-api.com/images/yzma/alchemist/yzma-alchemist-large.png", 25 | "art-crop": "https://lorcana-api.com/images/yzma/alchemist/yzma-alchemist-art-crop.png", 26 | "medium": "https://lorcana-api.com/images/yzma/alchemist/yzma-alchemist-medium.png", 27 | "foil": "https://lorcana-api.com/images/yzma/alchemist/yzma-alchemist-foil.png" 28 | }, 29 | "name": "Yzma", 30 | "flavor-text": "\"When I want your opinion, I will give it to you!\"", 31 | "ink-cost": 2, 32 | "rarity": "Common" 33 | } -------------------------------------------------------------------------------- /src/data/legacy_data/cards/zeus-god_of_lightning.txt: -------------------------------------------------------------------------------- 1 | { 2 | "lore-value": 2, 3 | "traits": [ 4 | "Rush", 5 | "Challenger 4" 6 | ], 7 | "set": "The First Chapter", 8 | "card-number": 61, 9 | "color": "Amethyst", 10 | "strength": 0, 11 | "artist": "Koni", 12 | "willpower": 4, 13 | "type": "Character", 14 | "subtypes": [ 15 | "Storyborn", 16 | "Deity" 17 | ], 18 | "set-code": "TFC", 19 | "abilities": {}, 20 | "inkable": false, 21 | "body-text": "Rush (This character can challenge the turn they're played.) \nChallenger 4 (While challenging, this character get +4{strength}.) ", 22 | "subtitle": "God of Lightning", 23 | "image-urls": { 24 | "small": "https://lorcana-api.com/images/zeus/god_of_lightning/zeus-god_of_lightning-small.png", 25 | "no-art": "https://lorcana-api.com/images/zeus/god_of_lightning/zeus-god_of_lightning-no-art.png", 26 | "large": "https://lorcana-api.com/images/zeus/god_of_lightning/zeus-god_of_lightning-large.png", 27 | "art-crop": "https://lorcana-api.com/images/zeus/god_of_lightning/zeus-god_of_lightning-art-crop.png", 28 | "medium": "https://lorcana-api.com/images/zeus/god_of_lightning/zeus-god_of_lightning-medium.png", 29 | "foil": "https://lorcana-api.com/images/zeus/god_of_lightning/zeus-god_of_lightning-foil.png" 30 | }, 31 | "name": "Zeus", 32 | "ink-cost": 4, 33 | "flavor-text": "A little lightning solves a whole lot of problems.", 34 | "rarity": "Rare" 35 | } -------------------------------------------------------------------------------- /src/data/legacy_data/lists/colors.txt: -------------------------------------------------------------------------------- 1 | [ 2 | "Ruby", 3 | "Sapphire", 4 | "Emerald", 5 | "Amber", 6 | "Amethyst", 7 | "Steel" 8 | ] -------------------------------------------------------------------------------- /src/data/legacy_data/lists/lists.txt: -------------------------------------------------------------------------------- 1 | [ 2 | "cards", 3 | "sets", 4 | "colors", 5 | "lists" 6 | ] -------------------------------------------------------------------------------- /src/data/legacy_data/lists/sets.txt: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "The First Chapter": { 4 | "set-code": "TFC", 5 | "card-count": 204 6 | } 7 | } 8 | ] -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/App.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi; 2 | 3 | import java.io.File; 4 | import java.sql.DriverManager; 5 | 6 | import com.sun.net.httpserver.HttpServer; 7 | 8 | public class App { 9 | 10 | static File dir = new File("src//data"); 11 | 12 | public static void main(String[] args) { 13 | // try { 14 | // Class.forName("java.sql.Connection"); 15 | // Class.forName("java.sql.Driver"); 16 | // Class.forName("oracle.jdbc.driver.OracleDriver"); 17 | // } catch (ClassNotFoundException e) { 18 | // // TODO Auto-generated catch block 19 | // e.printStackTrace(); 20 | // } 21 | try { 22 | Class.forName("com.mysql.cj.jdbc.Driver"); 23 | } catch (ClassNotFoundException e) { 24 | // TODO Auto-generated catch block 25 | e.printStackTrace(); 26 | } 27 | if (args.length < 3) { 28 | System.err.println("You must provide SQL details for this service to run properly. Put in ' ' into JVM arguments."); 29 | System.exit(0); 30 | } 31 | 32 | System.out.println("Server successfully booted!"); 33 | // System.err.println("Hey You! You need to edit the source code and change the "); 34 | APIServer server = new APIServer(args[0], args[1], args[2]); 35 | 36 | if (args.length > 3) { 37 | if (args[3].equals("admin")) { 38 | server.setAdministratorMode(true); 39 | } 40 | } 41 | 42 | server.startServer(); 43 | 44 | 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/ErrorMessageResponse.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi; 2 | 3 | public class ErrorMessageResponse { 4 | 5 | String code; 6 | String error; 7 | int status; 8 | public ErrorMessageResponse(String code, String error, int status) { 9 | this.code = code; 10 | this.error = error; 11 | this.status = status; 12 | } 13 | 14 | public String getFullErrorAsJSON() { 15 | return "{\"code\":\"" + getCode() + 16 | "\",\"details\":\"" + error.replace("\"", "\\\"") + 17 | "\",\"object\":\"error\"" + 18 | ",\"status\":" + status + "}"; 19 | } 20 | 21 | public String getCode() { 22 | return code; 23 | } 24 | public void setCode(String code) { 25 | this.code = code; 26 | } 27 | public String getError() { 28 | return error; 29 | } 30 | public void setError(String error) { 31 | this.error = error; 32 | } 33 | public int getStatus() { 34 | return status; 35 | } 36 | public void setStatus(int status) { 37 | this.status = status; 38 | } 39 | 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/ParameterManager.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi; 2 | 3 | import java.util.ArrayDeque; 4 | import java.util.ArrayList; 5 | import java.util.Arrays; 6 | import java.util.Collection; 7 | import java.util.Collections; 8 | import java.util.List; 9 | 10 | import com.lorcanaapi.parameters.MandatorySQLExecutor; 11 | 12 | public class ParameterManager { 13 | 14 | ArrayList parameters; 15 | 16 | public List getParametersWithPriority(int priority) { 17 | List paramList = new ArrayList<>(); 18 | for (URLParameter p: parameters) { 19 | if (p.getExecutionPriority() == priority) { 20 | paramList.add(p); 21 | } 22 | } 23 | return paramList; 24 | } 25 | 26 | public ArrayList getSortedParameters() { 27 | return parameters; 28 | } 29 | 30 | public ParameterManager(Collection params) { 31 | registerParameters(params); 32 | } 33 | 34 | public ParameterManager(URLParameter... params) { 35 | registerParameters(Arrays.asList(params)); 36 | } 37 | 38 | public ParameterManager() { 39 | 40 | } 41 | 42 | public void registerParameters(Collection params) { 43 | parameters = new ArrayList<>(params); 44 | parameters.add(new MandatorySQLExecutor()); 45 | Collections.sort(parameters); 46 | } 47 | 48 | public void registerParameters(URLParameter... params) { 49 | registerParameters(Arrays.asList(params)); 50 | } 51 | 52 | 53 | 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/handlers/BulkHandler.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.handlers; 2 | 3 | import com.lorcanaapi.ParameterManager; 4 | import com.lorcanaapi.parameters.BulkTypeParameter; 5 | import com.lorcanaapi.precursors.PrecursorManager; 6 | import com.lorcanaapi.precursors.bulkhandler.BulkCardsPrecursor; 7 | import com.lorcanaapi.precursors.bulkhandler.BulkSetsPrecursor; 8 | import com.sun.net.httpserver.HttpHandler; 9 | 10 | public class BulkHandler extends URLHandler implements HttpHandler{ 11 | 12 | public BulkHandler() { 13 | super("bulk", "DONOTFETCH", defaultParameterValues(), defaultPrecursorValues()); 14 | 15 | } 16 | 17 | private static ParameterManager defaultParameterValues() { 18 | ParameterManager pm = new ParameterManager(new BulkTypeParameter()); 19 | return pm; 20 | } 21 | 22 | private static PrecursorManager defaultPrecursorValues() { 23 | PrecursorManager pm = new PrecursorManager(new BulkCardsPrecursor(), new BulkSetsPrecursor()); 24 | return pm; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/handlers/StatisticsHandler.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.handlers; 2 | 3 | import java.io.IOException; 4 | import java.io.OutputStream; 5 | import java.nio.charset.StandardCharsets; 6 | import java.util.HashMap; 7 | import java.util.Map; 8 | 9 | import com.sun.net.httpserver.HttpExchange; 10 | import com.sun.net.httpserver.HttpHandler; 11 | 12 | public class StatisticsHandler implements HttpHandler { 13 | 14 | 15 | static Map handlerRequestCount = new HashMap<>(); 16 | 17 | public static void incrementHandlerCount(String handlerName) { 18 | if (handlerRequestCount.containsKey(handlerName)) { 19 | handlerRequestCount.put(handlerName, handlerRequestCount.get(handlerName) + 1); 20 | } else { 21 | handlerRequestCount.put(handlerName, 1); 22 | } 23 | } 24 | 25 | 26 | 27 | @Override 28 | public void handle(HttpExchange t) throws IOException { 29 | StringBuilder response = new StringBuilder(); 30 | for (String handler : handlerRequestCount.keySet()) { 31 | response.append(handler + " handler request count: " + handlerRequestCount.get(handler) + "\n"); 32 | } 33 | 34 | t.getResponseHeaders().set("Access-Control-Allow-Origin", "*"); 35 | t.getResponseHeaders().set("Content-Type", 36 | String.format("text/plain; charset=%s", StandardCharsets.UTF_8)); 37 | 38 | t.sendResponseHeaders(200, 0); 39 | OutputStream os = t.getResponseBody(); 40 | os.write(response.toString().getBytes()); 41 | os.close(); 42 | 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/legacy/ErrorJSONObject.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.legacy; 2 | 3 | import org.json.JSONObject; 4 | 5 | public class ErrorJSONObject extends JSONObject{ 6 | 7 | public ErrorJSONObject(String code, int status, String details) { 8 | this.put("object", "error"); 9 | this.put("code", code); 10 | this.put("status", status); 11 | this.put("details", details); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/legacy/JSONHandler.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.legacy; 2 | 3 | import java.io.IOException; 4 | import java.io.OutputStream; 5 | import java.nio.charset.StandardCharsets; 6 | 7 | import com.sun.net.httpserver.HttpExchange; 8 | import com.sun.net.httpserver.HttpHandler; 9 | 10 | public class JSONHandler implements HttpHandler { 11 | static int JSONRequestCount = 0; 12 | String response; 13 | @Override 14 | public void handle(HttpExchange t) throws IOException { 15 | // System.out.println("Json response made; it was Json request number " + JSONRequestCount ); 16 | JSONRequestCount++; 17 | TrackingHandler.JSONRequestCount++; 18 | t.getResponseHeaders().set("Content-Type", String.format("application/json; charset=%s", StandardCharsets.UTF_8)); 19 | t.getResponseHeaders().set("Access-Control-Allow-Origin", "*"); 20 | t.sendResponseHeaders(200, response.length()); 21 | 22 | OutputStream os = t.getResponseBody(); 23 | 24 | os.write(response.getBytes()); 25 | os.close(); 26 | } 27 | public JSONHandler(String response) { 28 | this.response = response; 29 | } 30 | } -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/legacy/LAPIUtils.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.legacy; 2 | 3 | public class LAPIUtils { 4 | 5 | public static String removeFileExtension(String filename, boolean removeAllExtensions) { 6 | if (filename == null || filename.isEmpty()) { 7 | return filename; 8 | } 9 | 10 | String extPattern = "(? " + minValue); 28 | } 29 | 30 | response.getSqlQuery().setOrderBy("ORDER BY LEVENSHTEIN_RATIO(Name, \"" + compareString + "\") DESC"); 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/parameters/FuzzyParameter.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.parameters; 2 | 3 | import java.util.ArrayList; 4 | 5 | import com.lorcanaapi.APIResponse; 6 | import com.lorcanaapi.URIBit; 7 | import com.lorcanaapi.URLParameter; 8 | 9 | import me.xdrop.fuzzywuzzy.FuzzySearch; 10 | import me.xdrop.fuzzywuzzy.model.ExtractedResult; 11 | 12 | public class FuzzyParameter extends URLParameter { 13 | 14 | public FuzzyParameter(String parameterKey, int executionPriority) { 15 | super(parameterKey, executionPriority); 16 | } 17 | 18 | public FuzzyParameter(String parameterKey, int executionPriority, String... validPrecursors) { 19 | super(parameterKey, executionPriority, validPrecursors); 20 | } 21 | 22 | @Override 23 | public void modifyReponse(URIBit bit, APIResponse response) { 24 | // String compareString = bit.getValue().split(",")[0]; 25 | String name = bit.getValue(); 26 | System.out.println(BulkParameterThread.getCardNames().size()); 27 | try { 28 | ExtractedResult res = FuzzySearch.extractOne(name, BulkParameterThread.getCardNames()); 29 | System.out.println(res.getString()); 30 | response.getSqlQuery().setWhere("Where name = \"" + res.getString() + "\""); 31 | response.setSingleResponse(true); 32 | } catch (Exception e) { 33 | e.printStackTrace(); 34 | } 35 | 36 | // response.getSqlQuery().setOrderBy("ORDER BY LEVENSHTEIN_RATIO(Name, \"" + compareString + "\") DESC"); 37 | 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/parameters/FuzzyTestParemeter.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.parameters; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | import com.lorcanaapi.SQLQuery; 5 | import com.lorcanaapi.URIBit; 6 | import com.lorcanaapi.URLParameter; 7 | 8 | public class FuzzyTestParemeter extends URLParameter{ 9 | 10 | 11 | 12 | public FuzzyTestParemeter(String parameterKey, int executionPriority) { 13 | super(parameterKey, executionPriority); 14 | } 15 | public FuzzyTestParemeter(String parameterKey, int executionPriority, String... validPrecursors) { 16 | super(parameterKey, executionPriority, validPrecursors); 17 | } 18 | 19 | @Override 20 | public void modifyReponse(URIBit bit, APIResponse response) { 21 | int i = bit.getValue().lastIndexOf(","); 22 | String[] a = {bit.getValue().substring(0, i), bit.getValue().substring(i+1)}; 23 | String compareString = a[0]; 24 | String minValue = a[1]; 25 | 26 | response.getSqlQuery().setSelect("Select Name, LEVENSHTEIN_RATIO(Name, \"" + compareString + "\") as \"Levenshtein Distance\""); 27 | // if (response.getSqlQuery().getWhere().equals(SQLQuery.DEFAULT_WHERE_VALUE)) { 28 | // response.getSqlQuery().setWhere("WHERE LEVENSHTEIN_RATIO(Name, \"" + compareString + "\") > " + minValue); 29 | // } 30 | 31 | response.getSqlQuery().setOrderBy("ORDER BY LEVENSHTEIN_RATIO(Name, \"" + compareString + "\") DESC"); 32 | 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/parameters/OrderByParameter.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.parameters; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | import com.lorcanaapi.URIBit; 5 | import com.lorcanaapi.URLParameter; 6 | 7 | public class OrderByParameter extends URLParameter{ 8 | 9 | public OrderByParameter(String key, int executionPriority) { 10 | super(key, executionPriority); 11 | } 12 | 13 | @Override 14 | public void modifyReponse(URIBit bit, APIResponse response) { 15 | response.getSqlQuery().setOrderBy("ORDER BY " + bit.getValue()); 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/parameters/PageParameter.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.parameters; 2 | 3 | import org.json.JSONArray; 4 | 5 | import com.lorcanaapi.APIResponse; 6 | import com.lorcanaapi.URIBit; 7 | import com.lorcanaapi.URLParameter; 8 | 9 | public class PageParameter extends URLParameter { 10 | 11 | public PageParameter(String parameterKey, int executionPriority) { 12 | super(parameterKey, executionPriority); 13 | } 14 | 15 | @Override 16 | public void modifyReponse(URIBit bit, APIResponse response) { 17 | try { 18 | int pageSize = response.getPageSize(); 19 | int page = Integer.valueOf(bit.getValue()); 20 | int startingPos = pageSize * (page - 1); 21 | System.out.println("the from is:" + response.getSqlQuery().getOrderBy() + " LIMIT " + startingPos + ", " + pageSize); 22 | response.getSqlQuery().setOrderBy(response.getSqlQuery().getOrderBy() + " LIMIT " + startingPos + ", " + pageSize); 23 | } catch (NumberFormatException e) { 24 | e.printStackTrace(); 25 | System.out.println("fail"); 26 | response.setErrored(true); 27 | response.setErrorMessage("invalid_datatype", "'" + bit.getValue() + "' is not an integer! [Parameter=page]", 200); 28 | } 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/parameters/PageSizeParameter.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.parameters; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | import com.lorcanaapi.URIBit; 5 | import com.lorcanaapi.URLParameter; 6 | 7 | public class PageSizeParameter extends URLParameter { 8 | 9 | public PageSizeParameter(String parameterKey, int executionPriority) { 10 | super(parameterKey, executionPriority); 11 | } 12 | 13 | @Override 14 | public void modifyReponse(URIBit bit, APIResponse response) { 15 | try { 16 | response.setPageSize(Integer.valueOf(bit.getValue())); 17 | } catch (NumberFormatException e) { 18 | response.setErrored(true); 19 | response.setErrorMessage("invalid_datatype", "'" + bit.getValue() + "' is not an integer! [Parameter=pagesize]", 200); 20 | } 21 | 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/parameters/RefParameter.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.parameters; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | import com.lorcanaapi.URIBit; 5 | import com.lorcanaapi.URLParameter; 6 | 7 | public class RefParameter extends URLParameter { 8 | 9 | public RefParameter(String parameterKey, int executionPriority) { 10 | super(parameterKey, executionPriority); 11 | // TODO Auto-generated constructor stub 12 | } 13 | 14 | public RefParameter(String parameterKey, int executionPriority, String... validPrecursors) { 15 | super(parameterKey, executionPriority, validPrecursors); 16 | // TODO Auto-generated constructor stub 17 | } 18 | 19 | @Override 20 | public void modifyReponse(URIBit bit, APIResponse response) { 21 | response.setReference(bit.getValue()); 22 | // TODO Auto-generated method stub 23 | 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/parameters/SortDirectionParameter.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.parameters; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | import com.lorcanaapi.URIBit; 5 | import com.lorcanaapi.URLParameter; 6 | 7 | public class SortDirectionParameter extends URLParameter{ 8 | 9 | public SortDirectionParameter(String parameterKey, int executionPriority) { 10 | super(parameterKey, executionPriority); 11 | } 12 | 13 | @Override 14 | public void modifyReponse(URIBit bit, APIResponse response) { 15 | String value = bit.getValue().toLowerCase(); 16 | 17 | String modifier = value.startsWith("desc") ? "DESC" : "ASC"; 18 | 19 | response.getSqlQuery().setOrderBy(response.getSqlQuery().getOrderBy() + " " + modifier); 20 | 21 | } 22 | 23 | 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/parameters/StrictParameter.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.parameters; 2 | 3 | import java.util.HashMap; 4 | 5 | import com.lorcanaapi.APIResponse; 6 | import com.lorcanaapi.URIBit; 7 | import com.lorcanaapi.URLParameter; 8 | 9 | public class StrictParameter extends URLParameter { 10 | 11 | public StrictParameter(String parameterKey, int executionPriority, String... validPrecursors) { 12 | super(parameterKey, executionPriority, validPrecursors); 13 | } 14 | 15 | public StrictParameter(String parameterKey, int executionPriority) { 16 | super(parameterKey, executionPriority); 17 | } 18 | 19 | @Override 20 | public void modifyReponse(URIBit bit, APIResponse response) { 21 | StringBuilder where = new StringBuilder("WHERE "); 22 | bit.decodeURL(); 23 | 24 | for (String v: bit.getAllValues()) { 25 | // System.out.println("v si " +v); 26 | where.append("(NAME ='" + v.toLowerCase() + "')"); 27 | where.append(" OR "); 28 | } 29 | response.getSqlQuery().setWhere(where.toString().substring(0, where.length() - 4)); 30 | 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/precursors/AllPrecursor.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.precursors; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | import com.lorcanaapi.URIBit; 5 | 6 | public class AllPrecursor extends URLPrecursor{ 7 | 8 | 9 | public AllPrecursor(String precursorString) { 10 | super(precursorString); 11 | } 12 | 13 | @Override 14 | public String getUpdatedURLForHandler(String handler, String URL, APIResponse response) { 15 | switch (handler) { 16 | 17 | case "cards": 18 | return modifyCardsResponse(URL); 19 | case "sets": 20 | return modiftSetsResponse(URL); 21 | default: 22 | // System.out.println("rawr"); 23 | response.setErrored(true); 24 | response.setErrorMessage("invalid_handler", getPrecursorString() + " is not appliciable for handler '/" + handler + "/'!", 200); 25 | return URL; 26 | } 27 | 28 | } 29 | 30 | private String modifyCardsResponse(String URL) { 31 | StringBuilder newValue = new StringBuilder(URL); 32 | // If it has no parameters yet, add a ?, if some parameters are already present, add an & 33 | // If this was not the ALL precursor, the code below would be uncommented. 34 | // if (URL.endsWith(getPrecursorString())) { 35 | // newValue.append("?"); 36 | // } else { 37 | // newValue.append("&"); 38 | // } 39 | // System.out.println("URL pre is:" + URL); 40 | return newValue.toString(); 41 | } 42 | private String modiftSetsResponse(String URL) { 43 | return URL; 44 | 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/precursors/FetchPrecursor.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.precursors; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | 5 | public class FetchPrecursor extends URLPrecursor { 6 | 7 | public FetchPrecursor(String precursorString) { 8 | super(precursorString); 9 | // TODO Auto-generated constructor stub 10 | } 11 | 12 | @Override 13 | public String getUpdatedURLForHandler(String handler, String URL, APIResponse response) { 14 | switch (handler) { 15 | 16 | case "cards": 17 | return modifyCardsResponse(URL); 18 | case "sets": 19 | return modifySetsResponse(URL); 20 | default: 21 | response.setErrored(true); 22 | response.setErrorMessage("invalid_hander", getPrecursorString() + " is not appliciable for handler '/" + handler + "/'!", 200); 23 | return URL; 24 | } 25 | } 26 | 27 | private String modifyCardsResponse(String URL) { 28 | return URL; 29 | } 30 | 31 | private String modifySetsResponse(String URL) { 32 | return URL; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/precursors/PrecursorManager.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.precursors; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.Collection; 6 | import java.util.Collections; 7 | import java.util.HashMap; 8 | 9 | import com.lorcanaapi.URLParameter; 10 | import com.lorcanaapi.parameters.MandatorySQLExecutor; 11 | 12 | public class PrecursorManager { 13 | 14 | 15 | HashMap precursors = new HashMap(); 16 | 17 | public PrecursorManager(Collection params) { 18 | registerParameters(params); 19 | } 20 | 21 | public PrecursorManager(URLPrecursor... params) { 22 | registerParameters(Arrays.asList(params)); 23 | } 24 | 25 | public PrecursorManager() { 26 | 27 | } 28 | 29 | public Collection getAllPrecursors() { 30 | return precursors.keySet(); 31 | 32 | } 33 | 34 | public void registerParameters(Collection params) { 35 | for (URLPrecursor precursor : params) { 36 | precursors.put(precursor.getPrecursorString(), precursor); 37 | } 38 | } 39 | 40 | public void registerParameters(URLPrecursor... params) { 41 | registerParameters(Arrays.asList(params)); 42 | } 43 | 44 | public URLPrecursor getPrecursorFromString(String string) { 45 | return precursors.get(string); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/precursors/URLPrecursor.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.precursors; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | 5 | abstract public class URLPrecursor { 6 | 7 | 8 | abstract public String getUpdatedURLForHandler(String handler, String url, APIResponse response); 9 | 10 | String precursorString; 11 | 12 | public String getPrecursorString() { 13 | return precursorString; 14 | } 15 | public URLPrecursor(String precursorString) { 16 | this.precursorString = precursorString; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/precursors/bulkhandler/BulkCardsPrecursor.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.precursors.bulkhandler; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | import com.lorcanaapi.precursors.URLPrecursor; 5 | 6 | public class BulkCardsPrecursor extends URLPrecursor { 7 | 8 | public BulkCardsPrecursor() { 9 | super("cards"); 10 | // TODO Auto-generated constructor stub 11 | } 12 | 13 | @Override 14 | public String getUpdatedURLForHandler(String handler, String URL, APIResponse response) { 15 | switch (handler) { 16 | case "bulk": 17 | return modifyBulkResponse(URL); 18 | default: 19 | response.setErrored(true); 20 | response.setErrorMessage("invalid_hander", getPrecursorString() + " must only be used by '/bulk/' handler!", 200); 21 | return URL; 22 | } 23 | } 24 | 25 | private String modifyBulkResponse(String URL) { 26 | StringBuilder newValue = new StringBuilder(URL); 27 | if (URL.endsWith(getPrecursorString())) { 28 | newValue.append("?"); 29 | } else { 30 | newValue.append("&"); 31 | } 32 | newValue.append("bulktype=cards"); 33 | return newValue.toString(); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/lorcanaapi/precursors/bulkhandler/BulkSetsPrecursor.java: -------------------------------------------------------------------------------- 1 | package com.lorcanaapi.precursors.bulkhandler; 2 | 3 | import com.lorcanaapi.APIResponse; 4 | import com.lorcanaapi.precursors.URLPrecursor; 5 | 6 | public class BulkSetsPrecursor extends URLPrecursor { 7 | 8 | public BulkSetsPrecursor() { 9 | super("sets"); 10 | // TODO Auto-generated constructor stub 11 | } 12 | 13 | @Override 14 | public String getUpdatedURLForHandler(String handler, String URL, APIResponse response) { 15 | switch (handler) { 16 | case "bulk": 17 | return modifyBulkResponse(URL); 18 | default: 19 | response.setErrored(true); 20 | response.setErrorMessage("invalid_hander", getPrecursorString() + " must only be used by '/bulk/' handler!", 200); 21 | return URL; 22 | } 23 | } 24 | 25 | private String modifyBulkResponse(String URL) { 26 | StringBuilder newValue = new StringBuilder(URL); 27 | if (URL.endsWith(getPrecursorString())) { 28 | newValue.append("?"); 29 | } else { 30 | newValue.append("&"); 31 | } 32 | newValue.append("bulktype=sets"); 33 | return newValue.toString(); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/test/java/com/kinsta/helloworld/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.kinsta.helloworld; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | public class AppTest 8 | { 9 | @Test 10 | public void shouldAnswerWithTrue() 11 | { 12 | assertTrue( true ); 13 | } 14 | } 15 | --------------------------------------------------------------------------------