diff --git a/.github/scripts/update_mod_versions.py b/.github/scripts/update_mod_versions.py new file mode 100755 index 00000000..540e044f --- /dev/null +++ b/.github/scripts/update_mod_versions.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 + +import json +import os +import re +import requests +import sys +import time +from datetime import datetime +from pathlib import Path + +# GitHub API rate limits are higher with authentication +GITHUB_TOKEN = os.environ.get('GITHUB_TOKEN') +HEADERS = {'Authorization': f'token {GITHUB_TOKEN}'} if GITHUB_TOKEN else {} + +def extract_repo_info(repo_url): + """Extract owner and repo name from GitHub repo URL.""" + match = re.search(r'github\.com/([^/]+)/([^/]+)', repo_url) + if match: + owner = match.group(1) + repo = match.group(2) + # Remove .git suffix if present + repo = repo.rstrip('.git') + return owner, repo + return None, None + +def get_latest_release(owner, repo): + """Get the latest release version from GitHub.""" + url = f'https://api.github.com/repos/{owner}/{repo}/releases/latest' + try: + response = requests.get(url, headers=HEADERS) + + if response.status_code == 200: + data = response.json() + return data.get('tag_name') + elif response.status_code == 404: + # No releases found + return None + elif response.status_code == 403 and 'rate limit exceeded' in response.text.lower(): + print("GitHub API rate limit exceeded. Waiting for 5 minutes...") + time.sleep(300) # Wait for 5 minutes + return get_latest_release(owner, repo) # Retry + else: + print(f"Error fetching releases: HTTP {response.status_code} - {response.text}") + return None + except Exception as e: + print(f"Exception while fetching releases: {str(e)}") + return None + +def get_latest_commit(owner, repo): + """Get the latest commit hash from GitHub.""" + url = f'https://api.github.com/repos/{owner}/{repo}/commits' + try: + response = requests.get(url, headers=HEADERS) + + if response.status_code == 200: + commits = response.json() + if commits and len(commits) > 0: + # Return shortened commit hash (first 7 characters) + return commits[0]['sha'][:7] + elif response.status_code == 403 and 'rate limit exceeded' in response.text.lower(): + print("GitHub API rate limit exceeded. Waiting for 5 minutes...") + time.sleep(300) # Wait for 5 minutes + return get_latest_commit(owner, repo) # Retry + else: + print(f"Error fetching commits: HTTP {response.status_code} - {response.text}") + + return None + except Exception as e: + print(f"Exception while fetching commits: {str(e)}") + return None + +def process_mods(): + """Process all mods and update versions where needed.""" + mods_dir = Path('mods') + updated_mods = [] + + print(f"Scanning {mods_dir} for mods with automatic version control...") + + # Find all mod directories + for mod_dir in [d for d in mods_dir.iterdir() if d.is_dir()]: + meta_file = mod_dir / 'meta.json' + + if not meta_file.exists(): + continue + + try: + with open(meta_file, 'r', encoding='utf-8') as f: + meta = json.load(f) + + # Skip mods without automatic version checking enabled + if not meta.get('automatic-version-check', False): + continue + + print(f"Processing {mod_dir.name}...") + + repo_url = meta.get('repo') + if not repo_url: + print(f"⚠️ Warning: Mod {mod_dir.name} has automatic-version-check but no repo URL") + continue + + owner, repo = extract_repo_info(repo_url) + if not owner or not repo: + print(f"⚠️ Warning: Could not extract repo info from {repo_url}") + continue + + print(f"Checking GitHub repo: {owner}/{repo}") + + # Try to get latest release version first + new_version = get_latest_release(owner, repo) + version_source = "release" + + # If no releases, fall back to latest commit + if not new_version: + print("No releases found, checking latest commit...") + new_version = get_latest_commit(owner, repo) + version_source = "commit" + + if not new_version: + print(f"⚠️ Warning: Could not determine version for {mod_dir.name}") + continue + + current_version = meta.get('version') + + # Update version if it changed + if current_version != new_version: + print(f"✅ Updating {mod_dir.name} from {current_version or 'none'} to {new_version} ({version_source})") + meta['version'] = new_version + + with open(meta_file, 'w', encoding='utf-8') as f: + # Preserve formatting with indentation + json.dump(meta, f, indent=2, ensure_ascii=False) + f.write("\n") # Add newline at end of file + + updated_mods.append({ + 'name': meta.get('title', mod_dir.name), + 'old_version': current_version, + 'new_version': new_version, + 'source': version_source + }) + else: + print(f"ℹ️ No version change for {mod_dir.name} (current: {current_version})") + + except Exception as e: + print(f"❌ Error processing {mod_dir.name}: {str(e)}") + + return updated_mods + +def generate_commit_message(updated_mods): + """Generate a detailed commit message listing all updated mods.""" + if not updated_mods: + return "No mod versions updated" + + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + message = f"Auto-update mod versions ({timestamp})\n\n" + message += "Updated mods:\n" + + for mod in updated_mods: + old_ver = mod['old_version'] or 'none' + message += f"- {mod['name']}: {old_ver} → {mod['new_version']} ({mod['source']})\n" + + return message + +if __name__ == "__main__": + print(f"🔄 Starting automatic mod version update at {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}...") + updated_mods = process_mods() + + if updated_mods: + # Write commit message to a file that the GitHub Action can use + commit_message = generate_commit_message(updated_mods) + with open('commit_message.txt', 'w', encoding='utf-8') as f: + f.write(commit_message) + + print(f"✅ Completed. Updated {len(updated_mods)} mod versions.") + else: + print("ℹ️ Completed. No mod versions needed updating.") + + # Exit with status code 0 even if no updates were made + sys.exit(0) + diff --git a/.github/workflows/check-mod.yml b/.github/workflows/check-mod.yml index 6027876e..48583a0e 100644 --- a/.github/workflows/check-mod.yml +++ b/.github/workflows/check-mod.yml @@ -11,44 +11,81 @@ jobs: steps: - name: Check out repository uses: actions/checkout@v3 + with: + fetch-depth: 0 # Get full history for comparing changes - name: Install ImageMagick run: | sudo apt-get update sudo apt-get install -y imagemagick - - name: Check Required Files + - name: Identify Changed Mods + id: find-changed-mods run: | - for dir in mods/*/; do - if [ -d "$dir" ]; then - MOD_DIR="$(basename "$dir")" + # Fetch the base branch of the PR + git fetch origin ${{ github.event.pull_request.base.ref }} + + # Find all added or modified files in mods directory + git diff --name-only --diff-filter=AM origin/${{ github.event.pull_request.base.ref }}..HEAD | grep -E '^mods/[^/]+/' | cut -d'/' -f1-2 | sort | uniq > changed_mods.txt + + if [ ! -s changed_mods.txt ]; then + echo "No mods were added or modified in this PR." + echo "changed_mods_found=false" >> $GITHUB_OUTPUT + exit 0 + fi + + echo "Changed mods found:" + cat changed_mods.txt + echo "changed_mods_found=true" >> $GITHUB_OUTPUT + + # Create a comma-separated list for JSON schema validation + META_JSON_FILES="" + while read -r mod_path; do + if [ -f "$mod_path/meta.json" ]; then + if [ -z "$META_JSON_FILES" ]; then + META_JSON_FILES="$mod_path/meta.json" + else + META_JSON_FILES="$META_JSON_FILES,$mod_path/meta.json" + fi + fi + done < changed_mods.txt + + echo "meta_json_files=$META_JSON_FILES" >> $GITHUB_OUTPUT + - name: Check Required Files + if: steps.find-changed-mods.outputs.changed_mods_found == 'true' + run: | + while read -r mod_path; do + if [ -d "$mod_path" ]; then + MOD_DIR="$(basename "$mod_path")" + # Ensure description.md and meta.json exist - if [ ! -f "$dir/description.md" ]; then + if [ ! -f "$mod_path/description.md" ]; then echo "Error: Missing description.md in $MOD_DIR" exit 1 fi - - if [ ! -f "$dir/meta.json" ]; then + + if [ ! -f "$mod_path/meta.json" ]; then echo "Error: Missing meta.json in $MOD_DIR" exit 1 fi fi - done + done < changed_mods.txt - name: Check Thumbnail Dimensions + if: steps.find-changed-mods.outputs.changed_mods_found == 'true' run: | - for dir in mods/*/; do - if [ -d "$dir" ]; then - MOD_DIR="$(basename "$dir")" - THUMBNAIL="$dir/thumbnail.jpg" - + while read -r mod_path; do + if [ -d "$mod_path" ]; then + MOD_DIR="$(basename "$mod_path")" + THUMBNAIL="$mod_path/thumbnail.jpg" + if [ -f "$THUMBNAIL" ]; then # Extract width and height using ImageMagick DIMENSIONS=$(identify -format "%wx%h" "$THUMBNAIL") WIDTH=$(echo "$DIMENSIONS" | cut -dx -f1) HEIGHT=$(echo "$DIMENSIONS" | cut -dx -f2) - + # Check if dimensions exceed 1920x1080 if [ "$WIDTH" -gt 1920 ] || [ "$HEIGHT" -gt 1080 ]; then echo "Error: Thumbnail in $MOD_DIR exceeds the recommended size of 1920×1080." @@ -56,27 +93,35 @@ jobs: fi fi fi - done + done < changed_mods.txt - name: Validate JSON Format - uses: github/super-linter@v4 - env: - VALIDATE_JSON: true - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: steps.find-changed-mods.outputs.changed_mods_found == 'true' + run: | + # Use jq to validate each JSON file + while read -r mod_path; do + if [ -f "$mod_path/meta.json" ]; then + if ! jq empty "$mod_path/meta.json" 2>/dev/null; then + echo "Error: Invalid JSON format in $mod_path/meta.json" + exit 1 + fi + fi + done < changed_mods.txt - name: Validate meta.json Against Schema + if: steps.find-changed-mods.outputs.changed_mods_found == 'true' uses: dsanders11/json-schema-validate-action@v1.2.0 with: schema: "./schema/meta.schema.json" - files: | - mods/*/meta.json + files: ${{ steps.find-changed-mods.outputs.meta_json_files }} - name: Validate Download URLs + if: steps.find-changed-mods.outputs.changed_mods_found == 'true' run: | - for dir in mods/*/; do - if [ -d "$dir" ]; then - MOD_DIR="$(basename "$dir")" - META_JSON="$dir/meta.json" + while read -r mod_path; do + if [ -d "$mod_path" ]; then + MOD_DIR="$(basename "$mod_path")" + META_JSON="$mod_path/meta.json" # Check if downloadURL exists and is not empty DOWNLOAD_URL=$(jq -r '.downloadURL // empty' "$META_JSON") @@ -91,14 +136,14 @@ jobs: exit 1 fi fi - done - + done < changed_mods.txt review-and-approve: - needs: validate # This job will only run after 'validate' completes successfully. - runs-on: ubuntu-latest - environment: - name: mod-review # This is the environment you created earlier. - steps: - - name: Await Approval from Maintainers - run: echo "Waiting for manual approval by maintainers..." + needs: validate # This job will only run after 'validate' completes successfully. + runs-on: ubuntu-latest + environment: + name: mod-review # This is the environment you created earlier. + steps: + - name: Await Approval from Maintainers + run: echo "Waiting for manual approval by maintainers..." + diff --git a/.github/workflows/update-mod-versions.yml b/.github/workflows/update-mod-versions.yml new file mode 100644 index 00000000..14ce7efb --- /dev/null +++ b/.github/workflows/update-mod-versions.yml @@ -0,0 +1,50 @@ +name: Update Mod Versions + +on: + schedule: + - cron: '0 * * * *' # Run every hour + workflow_dispatch: # Allow manual triggers + +jobs: + update-versions: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + token: ${{ secrets.PAT_TOKEN }} # Use PAT for checkout + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install requests + + - name: Update mod versions + run: | + python .github/scripts/update_mod_versions.py + + - name: Commit and push changes + run: | + git config --global user.name 'Version Update Bot' + git config --global user.email 'bot@noreply.github.com' + + if [[ $(git status --porcelain) ]]; then + COMMIT_MSG="Auto-update mod versions" + if [ -f commit_message.txt ]; then + COMMIT_MSG=$(cat commit_message.txt) + fi + + git add mods/*/meta.json + git commit -m "$COMMIT_MSG" + # Using the PAT_TOKEN with the default token URL format + git push + else + echo "No changes to commit" + fi + diff --git a/README.md b/README.md index 59ebff2d..50e25599 100644 --- a/README.md +++ b/README.md @@ -35,17 +35,23 @@ This file stores essential metadata in JSON format. **Make sure you adhere to th "categories": ["Content"], "author": "Joe Mama", "repo": "https://github.com/joemama/extended-cards", - "downloadURL": "https://github.com/joemama/extended-cards/releases/latest/extended-cards.tar.gz" + "downloadURL": "https://github.com/joemama/extended-cards/releases/latest/extended-cards.tar.gz", + "folderName": "ExtendedCards", + "version": "1.0.0", + "automatic-version-check": true } ``` - **title**: The name of your mod. - **requires-steamodded**: If your mod requires the [Steamodded](https://github.com/Steamodded/smods) mod loader, set this to `true`. -- **requires-talisman**: If your mod requires the [Talisman](https://github.com/MathIsFun0/Talisman) mod, set this to `true`. -- **categories**: Must be of `Content`, `Joker`, `Quality of Life`, `Technical`, `Miscellaneous`, `Resource Packs` or `API`. +- *requires-talisman*: (*Optional*) If your mod requires the [Talisman](https://github.com/MathIsFun0/Talisman) mod, set this to `true`. +- **categories**: Must contain at least one of `Content`, `Joker`, `Quality of Life`, `Technical`, `Miscellaneous`, `Resource Packs` or `API`. - **author**: Your chosen username or handle. - **repo**: A link to your mod's repository. - **downloadURL**: A direct link to the latest version of your released mod. (Can be same as `repo` if no separate download link exists.) +- *folderName*: (*Optional*) The name for the mod's install folder. This must not contain characters `<` `>` `:` `"` `/` `\` `|` `?` `*` +- *version*: (*Optional*, but **recommended**, if `automatic-version-check` disabled) The latest version of your mod. +- *automatic-version-check*: (*Optional*, but **recommended**) Gets the latest release from your mod's repository and updates the `version` field. If there is no release, it will check the latest commit. Set this parameter to `true`, to enable this feature. (Note: the index updates every hour) ### 3. thumbnail.jpg (Optional) If included, this image will appear alongside your mod in the index. Maximum and recommended size is 1920x1080 pixels. diff --git a/mods/ARandomTank7@Balajeweled/description.md b/mods/ARandomTank7@Balajeweled/description.md index 15a5195b..30fa99fe 100644 --- a/mods/ARandomTank7@Balajeweled/description.md +++ b/mods/ARandomTank7@Balajeweled/description.md @@ -1,6 +1,6 @@ # Balajeweled A resource pack that replaces the playing cards' suits into gems from the Bejeweled series. -As of now, only the numbered cards of all suits are changed, along with some enhancements. +As of v0.1.2, the face cards had their letters and suit icons changed, to better align with the other cards. **REQUIRES STEAMODDED** diff --git a/mods/ARandomTank7@Balajeweled/meta.json b/mods/ARandomTank7@Balajeweled/meta.json index 2e4cfd52..89af65c8 100644 --- a/mods/ARandomTank7@Balajeweled/meta.json +++ b/mods/ARandomTank7@Balajeweled/meta.json @@ -1,9 +1,13 @@ { - "title": "Balajeweled", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Resource Packs"], - "author": "ARandomTank7", - "repo": "https://github.com/ARandomTank7/Balajeweled", - "downloadURL": "https://github.com/ARandomTank7/Balajeweled/releases/latest/download/Balajeweled.zip" -} \ No newline at end of file + "title": "Balajeweled", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Resource Packs" + ], + "author": "ARandomTank7", + "repo": "https://github.com/ARandomTank7/Balajeweled", + "downloadURL": "https://github.com/ARandomTank7/Balajeweled/releases/latest/download/Balajeweled.zip", + "automatic-version-check": true, + "version": "v0.1.2" +} diff --git a/mods/Agoraaa@FlushHotkeys/meta.json b/mods/Agoraaa@FlushHotkeys/meta.json index 5a13e1d8..a98d0d78 100644 --- a/mods/Agoraaa@FlushHotkeys/meta.json +++ b/mods/Agoraaa@FlushHotkeys/meta.json @@ -1,10 +1,13 @@ { - "title": "Flush Hotkeys", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Quality of Life"], - "author": "Agoraaa", - "repo": "https://github.com/Agoraaa/FlushHotkeys", - "downloadURL": "https://github.com/Agoraaa/FlushHotkeys/archive/refs/heads/main.zip" - } - \ No newline at end of file + "title": "Flush Hotkeys", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Quality of Life" + ], + "author": "Agoraaa", + "repo": "https://github.com/Agoraaa/FlushHotkeys", + "downloadURL": "https://github.com/Agoraaa/FlushHotkeys/archive/refs/heads/main.zip", + "automatic-version-check": true, + "version": "1.0.4b" +} diff --git a/mods/Aikoyori@AikoyoriPaintJob/meta.json b/mods/Aikoyori@AikoyoriPaintJob/meta.json index da52c6ec..2a5ed7f2 100644 --- a/mods/Aikoyori@AikoyoriPaintJob/meta.json +++ b/mods/Aikoyori@AikoyoriPaintJob/meta.json @@ -1,9 +1,13 @@ { - "title": "Aikoyori Paint Job", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Resource Packs"], - "author": "Aikoyori", - "repo":"https://github.com/Aikoyori/Balatro_AikoPaintJob", - "downloadURL": "https://github.com/Aikoyori/Balatro_AikoPaintJob/archive/refs/heads/main.zip" + "title": "Aikoyori Paint Job", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Resource Packs" + ], + "author": "Aikoyori", + "repo": "https://github.com/Aikoyori/Balatro_AikoPaintJob", + "downloadURL": "https://github.com/Aikoyori/Balatro_AikoPaintJob/archive/refs/heads/main.zip", + "automatic-version-check": true, + "version": "df146e1" } diff --git a/mods/Astrapboy@Mistigris/description.md b/mods/Astrapboy@Mistigris/description.md new file mode 100644 index 00000000..6a4ad881 --- /dev/null +++ b/mods/Astrapboy@Mistigris/description.md @@ -0,0 +1,6 @@ +Welcome to Mistigris! Inspired by the likes of Paperback, Ortalab and Maximus, this is a vanilla-style mod intended to bring new, spicy gimmicks and playstyles to Balatro, while ensuring there is still a sense of order and balance! +> Requires Steamodded 1.0.0~BETA-0301a (or newer) and Lovely 0.7.1 (or newer) + +* **[Join the Official Mistigris Discord!]()** +Keep up with development and chat with others who might like the mod! + diff --git a/mods/Astrapboy@Mistigris/meta.json b/mods/Astrapboy@Mistigris/meta.json new file mode 100644 index 00000000..8b8f41b4 --- /dev/null +++ b/mods/Astrapboy@Mistigris/meta.json @@ -0,0 +1,14 @@ +{ + "title": "Mistigris", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Content", + "Joker" + ], + "author": "astrapboy", + "repo": "https://github.com/astrapboy/Mistigris", + "downloadURL": "https://github.com/astrapboy/Mistigris/archive/refs/heads/main.zip", + "automatic-version-check": true, + "version": "84459aa" +} diff --git a/mods/Aure@SixSuits/meta.json b/mods/Aure@SixSuits/meta.json index b5f65e60..d4e07dcc 100644 --- a/mods/Aure@SixSuits/meta.json +++ b/mods/Aure@SixSuits/meta.json @@ -1,9 +1,13 @@ { - "title": "Six Suits", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Content"], - "author": "Aure", - "repo":"https://github.com/Aurelius7309/SixSuits", - "downloadURL": "https://github.com/Aurelius7309/SixSuits/archive/refs/heads/master.zip" - } + "title": "Six Suits", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Content" + ], + "author": "Aure", + "repo": "https://github.com/Aurelius7309/SixSuits", + "downloadURL": "https://github.com/Aurelius7309/SixSuits/archive/refs/heads/master.zip", + "automatic-version-check": true, + "version": "v1.2.1" +} diff --git a/mods/BakersDozenBagels@Bakery/meta.json b/mods/BakersDozenBagels@Bakery/meta.json index aee1e7dc..23db0f0b 100644 --- a/mods/BakersDozenBagels@Bakery/meta.json +++ b/mods/BakersDozenBagels@Bakery/meta.json @@ -1,9 +1,15 @@ { - "title": "Bakery", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Content", "Joker", "Miscellaneous"], - "author": "BakersDozenBagels", - "repo": "https://github.com/BakersDozenBagels/BalatroBakery", - "downloadURL": "https://github.com/BakersDozenBagels/BalatroBakery/archive/refs/heads/main.zip" + "title": "Bakery", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Content", + "Joker", + "Miscellaneous" + ], + "author": "BakersDozenBagels", + "repo": "https://github.com/BakersDozenBagels/BalatroBakery", + "downloadURL": "https://github.com/BakersDozenBagels/BalatroBakery/archive/refs/heads/main.zip", + "automatic-version-check": true, + "version": "f166a7c" } diff --git a/mods/Balin-P@Wilder/meta.json b/mods/Balin-P@Wilder/meta.json index 60be9651..f6e43d54 100644 --- a/mods/Balin-P@Wilder/meta.json +++ b/mods/Balin-P@Wilder/meta.json @@ -1,9 +1,14 @@ { - "title": "Wilder", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Quality of Life", "Miscellaneous"], - "author": "Sir. Gameboy", - "repo": "https://github.com/Balin-P/Wilder", - "downloadURL": "https://github.com/Balin-P/Wilder/releases/download/Release/Wilder.zip" - } \ No newline at end of file + "title": "Wilder", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Quality of Life", + "Miscellaneous" + ], + "author": "Sir. Gameboy", + "repo": "https://github.com/Balin-P/Wilder", + "downloadURL": "https://github.com/Balin-P/Wilder/releases/download/Release/Wilder.zip", + "automatic-version-check": true, + "version": "Release" +} diff --git a/mods/BarrierTrio@Cardsauce/meta.json b/mods/BarrierTrio@Cardsauce/meta.json index 0efa9b68..21788961 100644 --- a/mods/BarrierTrio@Cardsauce/meta.json +++ b/mods/BarrierTrio@Cardsauce/meta.json @@ -2,8 +2,14 @@ "title": "Cardsauce", "requires-steamodded": true, "requires-talisman": false, - "categories": ["Content", "Joker", "Miscellaneous"], + "categories": [ + "Content", + "Joker", + "Miscellaneous" + ], "author": "BarrierTrio & Keku", "repo": "https://github.com/BarrierTrio/Cardsauce", - "downloadURL": "https://github.com/BarrierTrio/Cardsauce/releases/latest/download/Cardsauce.zip" -} \ No newline at end of file + "downloadURL": "https://github.com/BarrierTrio/Cardsauce/releases/latest/download/Cardsauce.zip", + "automatic-version-check": true, + "version": "Update1.3.4" +} diff --git a/mods/BataBata3@PampaPack/meta.json b/mods/BataBata3@PampaPack/meta.json index bde39648..74c21ac4 100644 --- a/mods/BataBata3@PampaPack/meta.json +++ b/mods/BataBata3@PampaPack/meta.json @@ -1,9 +1,13 @@ { - "title": "Pampa Joker Pack", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Joker"], - "author": "batabata3", - "repo":"https://github.com/batabata3/balatro-pampa-joker-pack", - "downloadURL":"https://github.com/batabata3/balatro-pampa-joker-pack/archive/refs/heads/main.zip" + "title": "Pampa Joker Pack", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Joker" + ], + "author": "batabata3", + "repo": "https://github.com/batabata3/balatro-pampa-joker-pack", + "downloadURL": "https://github.com/batabata3/balatro-pampa-joker-pack/archive/refs/heads/main.zip", + "automatic-version-check": true, + "version": "a" } diff --git a/mods/Bazinga9000@MathBlinds/meta.json b/mods/Bazinga9000@MathBlinds/meta.json index c61d35f3..93281235 100644 --- a/mods/Bazinga9000@MathBlinds/meta.json +++ b/mods/Bazinga9000@MathBlinds/meta.json @@ -1,9 +1,13 @@ { - "title": "Math Blinds", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Content"], - "author": "dvrp0", - "repo":"https://github.com/Bazinga9000/MathBlinds", - "downloadURL":"https://github.com/Bazinga9000/MathBlinds/archive/refs/heads/main.zip" + "title": "Math Blinds", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Content" + ], + "author": "dvrp0", + "repo": "https://github.com/Bazinga9000/MathBlinds", + "downloadURL": "https://github.com/Bazinga9000/MathBlinds/archive/refs/heads/main.zip", + "automatic-version-check": true, + "version": "8807e86" } diff --git a/mods/Betmma@BetmmaMods/meta.json b/mods/Betmma@BetmmaMods/meta.json index ec21c0ba..8101118d 100644 --- a/mods/Betmma@BetmmaMods/meta.json +++ b/mods/Betmma@BetmmaMods/meta.json @@ -2,8 +2,12 @@ "title": "Betmma Mods", "requires-steamodded": true, "requires-talisman": false, - "categories": ["Content"], + "categories": [ + "Content" + ], "author": "Betmma", "repo": "https://github.com/betmma/my_balatro_mods", - "downloadURL": "https://github.com/betmma/my_balatro_mods/archive/refs/heads/main.zip" + "downloadURL": "https://github.com/betmma/my_balatro_mods/archive/refs/heads/main.zip", + "automatic-version-check": true, + "version": "v3.0.1" } diff --git a/mods/Breezebuilder@SystemClock/meta.json b/mods/Breezebuilder@SystemClock/meta.json index 03d6fd64..b0e5e41d 100644 --- a/mods/Breezebuilder@SystemClock/meta.json +++ b/mods/Breezebuilder@SystemClock/meta.json @@ -2,8 +2,13 @@ "title": "SystemClock", "requires-steamodded": false, "requires-talisman": false, - "categories": ["Quality of Life", "Miscellaneous"], + "categories": [ + "Quality of Life", + "Miscellaneous" + ], "author": "Breezebuilder", - "repo":"https://github.com/Breezebuilder/SystemClock", - "downloadURL": "https://github.com/Breezebuilder/SystemClock/releases/download/v1.6.4/SystemClock-v1.6.4.zip" + "repo": "https://github.com/Breezebuilder/SystemClock", + "downloadURL": "https://github.com/Breezebuilder/SystemClock/releases/download/v1.6.4/SystemClock-v1.6.4.zip", + "automatic-version-check": true, + "version": "v1.6.4" } diff --git a/mods/Coo29@Yippie/description.md b/mods/Coo29@Yippie/description.md new file mode 100644 index 00000000..61cb8cdf --- /dev/null +++ b/mods/Coo29@Yippie/description.md @@ -0,0 +1,15 @@ +# YippieMod +An in progress mod for balatro, (hopefully) adding various things! + +(Requires Steamodded, untested on versions prior to v1.0.0~ALPHA-1424a) + +Currently added: +3 Jokers + +# Credits + +Art: Coo29 + +Programming: Coo29 + +SFX: Coo29 (yippie sound modified from the original youtube video by Bavaklava) \ No newline at end of file diff --git a/mods/Coo29@Yippie/meta.json b/mods/Coo29@Yippie/meta.json new file mode 100644 index 00000000..45357694 --- /dev/null +++ b/mods/Coo29@Yippie/meta.json @@ -0,0 +1,10 @@ +{ + "title": "Yippie", + "requires-steamodded": true, + "requires-talisman": false, + "categories": ["Content", "Joker"], + "author": "Coo29", + "repo": "https://github.com/Coo29/YippieMod", + "downloadURL": "https://github.com/Coo29/YippieMod/archive/refs/heads/main.zip" + } + \ No newline at end of file diff --git a/mods/Coo29@Yippie/thumbnail.jpg b/mods/Coo29@Yippie/thumbnail.jpg new file mode 100644 index 00000000..1357b82a Binary files /dev/null and b/mods/Coo29@Yippie/thumbnail.jpg differ diff --git a/mods/DigitalDetective47@NextAntePreview/description.md b/mods/DigitalDetective47@NextAntePreview/description.md new file mode 100644 index 00000000..0a9491bc --- /dev/null +++ b/mods/DigitalDetective47@NextAntePreview/description.md @@ -0,0 +1,3 @@ +# Next Ante Preview + +Shows a preview of the next ante on the Boss Blind's cash out screen, so that you don't have to always click Run Info after going into the shop. diff --git a/mods/DigitalDetective47@NextAntePreview/meta.json b/mods/DigitalDetective47@NextAntePreview/meta.json new file mode 100644 index 00000000..5d5a1621 --- /dev/null +++ b/mods/DigitalDetective47@NextAntePreview/meta.json @@ -0,0 +1,9 @@ +{ + "title": "Next Ante Preview", + "requires-steamodded": true, + "requires-talisman": false, + "categories": ["Quality of Life"], + "author": "DigitalDetective47", + "repo": "https://github.com/DigitalDetective47/next-ante-preview", + "downloadURL": "https://github.com/DigitalDetective47/next-ante-preview/archive/refs/heads/main.zip" +} \ No newline at end of file diff --git a/mods/DigitalDetective47@NextAntePreview/thumbnail.jpg b/mods/DigitalDetective47@NextAntePreview/thumbnail.jpg new file mode 100644 index 00000000..98e4b9f5 Binary files /dev/null and b/mods/DigitalDetective47@NextAntePreview/thumbnail.jpg differ diff --git a/mods/HuyTheKiller@SauKhongHuDecks/description.md b/mods/HuyTheKiller@SauKhongHuDecks/description.md new file mode 100644 index 00000000..c5db15a7 --- /dev/null +++ b/mods/HuyTheKiller@SauKhongHuDecks/description.md @@ -0,0 +1,3 @@ +# SauKhongHuDecks 🐛 +This mod aims to add several decks dedicated to SauKhongHu's channel. +You can still try this mod without consequences... or is it? \ No newline at end of file diff --git a/mods/HuyTheKiller@SauKhongHuDecks/meta.json b/mods/HuyTheKiller@SauKhongHuDecks/meta.json new file mode 100644 index 00000000..ec1efbd9 --- /dev/null +++ b/mods/HuyTheKiller@SauKhongHuDecks/meta.json @@ -0,0 +1,9 @@ +{ + "title": "SauKhongHuDecks", + "requires-steamodded": true, + "requires-talisman": false, + "categories": ["Content"], + "author": "HuyTheKiller", + "repo": "https://github.com/HuyTheKiller/SauKhongHuDecks", + "downloadURL": "https://github.com/HuyTheKiller/SauKhongHuDecks/archive/refs/heads/main.zip" +} \ No newline at end of file diff --git a/mods/HuyTheKiller@SauKhongHuDecks/thumbnail.jpg b/mods/HuyTheKiller@SauKhongHuDecks/thumbnail.jpg new file mode 100644 index 00000000..0fbbdba3 Binary files /dev/null and b/mods/HuyTheKiller@SauKhongHuDecks/thumbnail.jpg differ diff --git a/mods/Itayfeder@FusionJokers/meta.json b/mods/Itayfeder@FusionJokers/meta.json index 8a96bb7e..6c1bb81f 100644 --- a/mods/Itayfeder@FusionJokers/meta.json +++ b/mods/Itayfeder@FusionJokers/meta.json @@ -4,6 +4,6 @@ "requires-talisman": false, "categories": ["Joker"], "author": "itayfeder", - "repo":"https://github.com/itayfeder/Fusion-Jokers", - "downloadURL":"https://github.com/itayfeder/Fusion-Jokers/archive/refs/heads/main.zip" + "repo":"https://github.com/lshtech/Fusion-Jokers", + "downloadURL":"https://github.com/lshtech/Fusion-Jokers/archive/refs/heads/main.zip" } diff --git a/mods/ItsFlowwey@FlowerPot/meta.json b/mods/ItsFlowwey@FlowerPot/meta.json index 275a8a85..201420fb 100644 --- a/mods/ItsFlowwey@FlowerPot/meta.json +++ b/mods/ItsFlowwey@FlowerPot/meta.json @@ -5,5 +5,6 @@ "categories": ["Technical"], "author": "ItsFlowwey", "repo":"https://github.com/GauntletGames-2086/Flower-Pot", - "downloadURL": "https://github.com/GauntletGames-2086/Flower-Pot/archive/refs/heads/master.zip" + "downloadURL": "https://github.com/GauntletGames-2086/Flower-Pot/archive/refs/heads/master.zip", + "folderName": "Flower-Pot" } diff --git a/mods/Larswijn@CardSleeves/description.md b/mods/Larswijn@CardSleeves/description.md index 944e66b4..fcfd6a64 100644 --- a/mods/Larswijn@CardSleeves/description.md +++ b/mods/Larswijn@CardSleeves/description.md @@ -1,16 +1,16 @@ # CardSleeves -A Steamodded+lovely Balatro Mod that adds Sleeves. +A Balatro Mod that adds Sleeves using Steamodded + lovely. Sleeves are run modifiers similar to decks. Any deck and sleeve can be combined. -CardSleeves adds 15 Sleeves based on the 15 vanilla decks by default, some of which have an unique and different effect when paired with their corresponding deck. +CardSleeves adds 15 Sleeves based on the 15 vanilla decks by default, all of which have an unique and different effect when paired with their corresponding deck. ## Cross-mod content Other mods have the ability to add their own Sleeves! Some of these mods include [Cryptid](https://github.com/MathIsFun0/Cryptid), -[Familiar](https://github.com/RattlingSnow353/Familiar), -[MoreFluff](https://github.com/notmario/MoreFluff), +[SDM_0's Stuff](https://github.com/SDM0/SDM_0-s-Stuff), +[Balatro Drafting](https://github.com/spire-winder/Balatro-Draft), and [Pokermon](https://github.com/InertSteak/Pokermon). CardSleeves also has support for [Galdur](https://github.com/Eremel/Galdur)'s improved new run menu. @@ -18,23 +18,23 @@ CardSleeves also has support for [Galdur](https://github.com/Eremel/Galdur)'s im ## Exact descriptions | Sleeve | Base effect | Unique effect | |------------------|--------------------------------------------------------|------------------------------------------------------------------------| -| Red Sleeve | +1 discards | none | -| Blue Sleeve | +1 hands | none | -| Yellow Sleeve | +$10 | none | -| Green Sleeve | +$1 per remaining hand/discard | none | -| Black Sleeve | +1 joker slots, -1 hands | +1 joker slots, -1 discards | +| Red Sleeve | +1 discard | +1 discard, -1 hand | +| Blue Sleeve | +1 hand | +1 hand, -1 discard | +| Yellow Sleeve | +$10 | Seed Money Voucher | +| Green Sleeve | +$1 per remaining hand/discard | Can go up to -$2 in debt for every hand and discard | +| Black Sleeve | +1 joker slot, -1 hand | +1 joker slot, -1 discard | | Magic Sleeve | Crystal Ball Voucher, 2 Fools | Omen Globe Voucher | | Nebula Sleeve | Telescope Voucher, -1 consumable slot | Observatory Voucher | | Ghost Sleeve | Spectral cards appear in shop, Hex card | Spectrals appear more often in shop, Spectral pack size increases by 2 | | Abandoned Sleeve | No Face Cards in starting deck | Face Cards never appear | | Checkered Sleeve | 26 Spades and 26 Hearts in starting deck | Only Spades and Hearts appear | | Zodiac Sleeve | Tarot Merchant, Planet Merchant and Overstock Vouchers | Arcana/Celestial pack size increases by 2 | -| Painted Sleeve | +2 hand size, -1 joker slots | none | +| Painted Sleeve | +2 hand size, -1 joker slot | +1 card selection limit, -1 joker slot | | Anaglyph Sleeve | Double Tag after each Boss Blind | Double Tag after each Small/Big Blind | | Plasma Sleeve | Balance chips/mult, X2 base Blind size | Balance prices in shop | | Erratic Sleeve | All ranks/suits in starting deck are randomized | Starting Hands/Discards/Dollars/Joker slots are randomized between 3-6 | -## Credits -Big thanks to Sable for the idea and all the art, and the balatro modding community for helping out with the lua code. +# Credits +Big thanks to Sable for the original idea and the original art, all the cool people who helped translate, and the amazing balatro modding community for helping out with the lua code. Any suggestions, improvements or bugs are welcome and can be submitted through Github's Issues, or on the Balatro Discord [Thread](https://discord.com/channels/1116389027176787968/1279246553931976714). diff --git a/mods/LawyerRed@RWKarmaDeck/description.md b/mods/LawyerRed@RWKarmaDeck/description.md index db19026d..0c35bb52 100644 --- a/mods/LawyerRed@RWKarmaDeck/description.md +++ b/mods/LawyerRed@RWKarmaDeck/description.md @@ -2,5 +2,4 @@ A playing card resource pack that changes the design of cards to use Rain World's characters and karma system. ## Dependencies -- Steammodded v1.0.0~ALPHA-1310b or higher - - [NOTE] Any version of Steammodded with DeckSkin API support may work, but this is the specific version the mod was designed on. \ No newline at end of file +- Steamodded (>=1.0.0~ALPHA-1404b) or higher diff --git a/mods/LawyerRed@RWKarmaDeck/meta.json b/mods/LawyerRed@RWKarmaDeck/meta.json index 146819cb..1817c52e 100644 --- a/mods/LawyerRed@RWKarmaDeck/meta.json +++ b/mods/LawyerRed@RWKarmaDeck/meta.json @@ -3,7 +3,7 @@ "requires-steamodded": true, "requires-talisman": false, "categories": ["Resource Packs"], - "author": "LawyerRed", + "author": "LawyerRed & SpomJ", "repo": "https://github.com/LawyerRed01/RW-Karma-Cards", "downloadURL": "https://github.com/LawyerRed01/RW-Karma-Cards/archive/refs/heads/main.zip" } diff --git a/mods/Lucky6@LuckyLegendsI/description.md b/mods/Lucky6@LuckyLegendsI/description.md new file mode 100644 index 00000000..ecd43082 --- /dev/null +++ b/mods/Lucky6@LuckyLegendsI/description.md @@ -0,0 +1,5 @@ +### Lucky6's +# Lucky Legends +### Volume I + +15 new Legendary Jokers, a new booster pack type, new deck, and a new challenge! \ No newline at end of file diff --git a/mods/Lucky6@LuckyLegendsI/meta.json b/mods/Lucky6@LuckyLegendsI/meta.json new file mode 100644 index 00000000..75bffbec --- /dev/null +++ b/mods/Lucky6@LuckyLegendsI/meta.json @@ -0,0 +1,9 @@ +{ + "title": "Lucky Legends I", + "requires-steamodded": true, + "requires-talisman": false, + "categories": ["Content"], + "author": "Lucky6", + "repo": "https://github.com/MamiKeRiko/luckylegends", + "downloadURL": "https://github.com/MamiKeRiko/luckylegends/archive/refs/heads/main.zip" +} diff --git a/mods/Lucky6@LuckyLegendsI/thumbnail.jpg b/mods/Lucky6@LuckyLegendsI/thumbnail.jpg new file mode 100644 index 00000000..4905e842 Binary files /dev/null and b/mods/Lucky6@LuckyLegendsI/thumbnail.jpg differ diff --git a/mods/MathIsFun0@Cryptid/description.md b/mods/MathIsFun0@Cryptid/description.md index b3fc5193..7cc5ad4e 100644 --- a/mods/MathIsFun0@Cryptid/description.md +++ b/mods/MathIsFun0@Cryptid/description.md @@ -1,4 +1,4 @@ # Cryptid **Cryptid** is a Balatro mod that disregards the notion of game balance, adding various overpowered content for the player to use, and various difficult challenges to face. -### [Official Discord](https://discord.gg/unbalanced) +### [Official Discord](https://discord.gg/cryptid) diff --git a/mods/MathIsFun0@Cryptid/meta.json b/mods/MathIsFun0@Cryptid/meta.json index 886ce022..32724260 100644 --- a/mods/MathIsFun0@Cryptid/meta.json +++ b/mods/MathIsFun0@Cryptid/meta.json @@ -2,8 +2,13 @@ "title": "Cryptid", "requires-steamodded": true, "requires-talisman": true, - "categories": ["Content"], + "categories": [ + "Content" + ], "author": "MathIsFun0", - "repo":"https://github.com/MathIsFun0/Cryptid", - "downloadURL": "https://github.com/MathIsFun0/Cryptid/archive/refs/heads/main.zip" + "repo": "https://github.com/MathIsFun0/Cryptid", + "downloadURL": "https://github.com/MathIsFun0/Cryptid/archive/refs/heads/main.zip", + "folderName": "Cryptid", + "automatic-version-check": true, + "version": "v0.5.5" } diff --git a/mods/MathIsFun0@Talisman/meta.json b/mods/MathIsFun0@Talisman/meta.json index 25d67289..5c74007d 100644 --- a/mods/MathIsFun0@Talisman/meta.json +++ b/mods/MathIsFun0@Talisman/meta.json @@ -5,5 +5,6 @@ "categories": ["API", "Technical", "Quality of Life"], "author": "MathIsFun0", "repo":"https://github.com/MathIsFun0/Talisman", - "downloadURL": "https://github.com/MathIsFun0/Talisman/releases/latest/download/Talisman.zip" + "downloadURL": "https://github.com/MathIsFun0/Talisman/releases/latest/download/Talisman.zip", + "folderName": "Talisman" } diff --git a/mods/MathIsFun0@Trance/meta.json b/mods/MathIsFun0@Trance/meta.json index 0bf2a70c..f58f6e6b 100644 --- a/mods/MathIsFun0@Trance/meta.json +++ b/mods/MathIsFun0@Trance/meta.json @@ -5,5 +5,6 @@ "categories": ["Miscellaneous"], "author": "MathIsFun0", "repo":"https://github.com/MathIsFun0/Trance", - "downloadURL": "https://github.com/MathIsFun0/Trance/archive/refs/heads/main.zip" + "downloadURL": "https://github.com/MathIsFun0/Trance/archive/refs/heads/main.zip", + "folderName": "Trance" } diff --git a/mods/Nyoxide@DeckCreator/description.md b/mods/Nyoxide@DeckCreator/description.md new file mode 100644 index 00000000..d640f0cd --- /dev/null +++ b/mods/Nyoxide@DeckCreator/description.md @@ -0,0 +1,23 @@ +# Deck Creator + +Deck Creator is a tool for Balatro that allows users to create, save, load, and even share custom decks. + +## Requirements + +- Balatro 1.0.1o +- Steamodded v1.0.0 + +## How to Use + +- Click on the "Mods" button on the main menu +- Click on "Deck Creator" +- Click on "Config" +- Click on "Create Deck" +- Choose all the options you would like. Options that are not changed will be defaulted to the normal default game options. +- Head back to the "General" tab when you're done, and click "Save Deck" +- The deck will be saved to a file called "CustomDecks.txt" under this mod's folder in another subdirectory. +- If you would like to share your deck list with anyone, all they need to do is copy and paste your CustomDecks.txt file and place it into the folder in their Mods directory. This mod will detect all .txt files in there and merge all the deck lists together and load all decks into the game. + +## Contributing + +This project is open for contribution. Please, feel free to open a merge request to do so. \ No newline at end of file diff --git a/mods/Nyoxide@DeckCreator/meta.json b/mods/Nyoxide@DeckCreator/meta.json new file mode 100644 index 00000000..e41dc2ad --- /dev/null +++ b/mods/Nyoxide@DeckCreator/meta.json @@ -0,0 +1,9 @@ +{ + "title": "Deck Creator", + "requires-steamodded": true, + "requires-talisman": false, + "categories": ["Technical"], + "author": "Nyoxide", + "repo":"https://github.com/adambennett/Balatro-DeckCreator", + "downloadURL": "https://github.com/adambennett/Balatro-DeckCreator/releases/download/v1.2.2/DeckCreator.zip" +} \ No newline at end of file diff --git a/mods/Nyoxide@DeckCreator/thumbnail.jpg b/mods/Nyoxide@DeckCreator/thumbnail.jpg new file mode 100644 index 00000000..c83fb702 Binary files /dev/null and b/mods/Nyoxide@DeckCreator/thumbnail.jpg differ diff --git a/mods/Revo@Revo'sVault/description.md b/mods/Revo@Revo'sVault/description.md new file mode 100644 index 00000000..eff80c0a --- /dev/null +++ b/mods/Revo@Revo'sVault/description.md @@ -0,0 +1,5 @@ +Revo's Vault + +This mod is for anything i want to add in the game. + +Currently there are 3 New Rarities (Printer, Chaos and Vaulted), 27 Printer Jokers with their own decks , 6 Chaos Jokers, 7 Vaulted Jokers 61 normal jokers for a total of 100 jokers, 13 new enhancements, 2 new tarots, 3 new spectral cards,2 new consumable types with a total of 25 custom consumables, 1 new seal, 2 new tags and 1 new booster pack! \ No newline at end of file diff --git a/mods/Revo@Revo'sVault/meta.json b/mods/Revo@Revo'sVault/meta.json new file mode 100644 index 00000000..e16e5674 --- /dev/null +++ b/mods/Revo@Revo'sVault/meta.json @@ -0,0 +1,9 @@ +{ + "title": "Revo's Vault", + "requires-steamodded": true, + "requires-talisman": false, + "categories": ["Content"], + "author": "CodeRevo", + "repo": "https://github.com/Cdrvo/Revos-Vault---Balatro-Mod", + "downloadURL": "https://github.com/Cdrvo/Revos-Vault---Balatro-Mod/archive/refs/heads/main.zip" + } diff --git a/mods/Revo@Revo'sVault/thumbnail.jpg b/mods/Revo@Revo'sVault/thumbnail.jpg new file mode 100644 index 00000000..d0c76608 Binary files /dev/null and b/mods/Revo@Revo'sVault/thumbnail.jpg differ diff --git a/mods/Riv_Falcon@MultiTextBox/meta.json b/mods/Riv_Falcon@MultiTextBox/meta.json index 09f1e10e..0e97d756 100644 --- a/mods/Riv_Falcon@MultiTextBox/meta.json +++ b/mods/Riv_Falcon@MultiTextBox/meta.json @@ -5,5 +5,5 @@ "categories": ["Miscellaneous"], "author": "Riv_Falcon", "repo": "https://github.com/RivFalcon/MultiTextBox", - "downloadURL": "https://github.com/RivFalcon/MultiTextBox/archive/latest/MultiTextBox.tar.gz" + "downloadURL": "https://github.com/RivFalcon/MultiTextBox/archive/refs/heads/master.zip" } diff --git a/mods/SDM0@SDM_0-s-Stuff/description.md b/mods/SDM0@SDM_0-s-Stuff/description.md new file mode 100644 index 00000000..f5736691 --- /dev/null +++ b/mods/SDM0@SDM_0-s-Stuff/description.md @@ -0,0 +1,12 @@ +# SDM_0's Stuff + +A Balatro mod that adds (as of now) 37 Jokers, 3 Consumables, 9 Decks and 5 Challenges to the game, made by SDM_0 (duh) + + +## Installation +- Requires [Steamodded](https://github.com/Steamopollys/Steamodded/) v1.0.0 + +## Extra mod content + - [CardSleeves](https://github.com/larswijn/CardSleeves): SDM_0's Stuff deck effect can be used as card sleeves + - [JokerDisplay](https://github.com/nh6574/JokerDisplay): SDM_0's Stuff jokers have JokerDisplay compatibility + - [Dimserenes' Modpack](https://github.com/Dimserene/Dimserenes-Modpack): Frontier Deck diff --git a/mods/SDM0@SDM_0-s-Stuff/meta.json b/mods/SDM0@SDM_0-s-Stuff/meta.json new file mode 100644 index 00000000..339f4db7 --- /dev/null +++ b/mods/SDM0@SDM_0-s-Stuff/meta.json @@ -0,0 +1,9 @@ +{ + "title": "SDM_0's Stuff", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ "Content", "Joker" ], + "author": "SDM0", + "repo": "https://github.com/SDM0/SDM_0-s-Stuff", + "downloadURL": "https://github.com/SDM0/SDM_0-s-Stuff/archive/refs/heads/main.zip" +} diff --git a/mods/StarletDevil@AzzysJokers/description.md b/mods/StarletDevil@AzzysJokers/description.md new file mode 100644 index 00000000..2de771d8 --- /dev/null +++ b/mods/StarletDevil@AzzysJokers/description.md @@ -0,0 +1,10 @@ +# Azazel's Jokers! +Adds 60 New Jokers each with (mostly) unique effects! + +This mod is geared towards fun a bit more than game balance, so you might be finding yourself winning quite a bit! + +There are also 3 new Decks and a new Challenge to try out! + +**Requires Steamodded** + +Not compatible with Talisman and may not be compatible with other major mods. diff --git a/mods/StarletDevil@AzzysJokers/meta.json b/mods/StarletDevil@AzzysJokers/meta.json new file mode 100644 index 00000000..1d3487cb --- /dev/null +++ b/mods/StarletDevil@AzzysJokers/meta.json @@ -0,0 +1,9 @@ +{ + "title": "Azazel's Jokers", + "requires-steamodded": true, + "requires-talisman": false, + "categories": ["Content", "Joker"], + "author": "Starlet Devil", + "repo": "https://github.com/AstrumNativus/AzzysJokers", + "downloadURL": "https://github.com/AstrumNativus/AzzysJokers/archive/refs/tags/v1.2.2.zip" +} diff --git a/mods/StarletDevil@AzzysJokers/thumbnail.jpg b/mods/StarletDevil@AzzysJokers/thumbnail.jpg new file mode 100644 index 00000000..5e1aa1da Binary files /dev/null and b/mods/StarletDevil@AzzysJokers/thumbnail.jpg differ diff --git a/mods/Tucaonormal@LastStand/description.md b/mods/Tucaonormal@LastStand/description.md new file mode 100644 index 00000000..0ef436cd --- /dev/null +++ b/mods/Tucaonormal@LastStand/description.md @@ -0,0 +1,26 @@ +# Last Stand +A mod that adds a Challenge Deck to the game Balatro. The name of this Challenge is a tribute to one of the most popular and comprehensively researched Mini-games in the acclaimed classic video game Plants vs. Zombies, and so are its peculiar rules which banned almost all ways of earning money and all ways for obtaining free stuffs. +## Rules: +### Custom Rules: +All Blinds give no reward money +Extra Hands no longer earn money +Earn no Interest at end of round +After defeating each Boss Blind, earn $10 +Cannot earn money through any other means (including selling cards) +### Game Modifiers: +Start with $250 +4 hands per round +3 discards per round +8 hand size +5 Joker Slots +2 Consumable Slots +$5 base reroll cost +## Restrictions: +### Banned Cards: +Seed Money, Money Tree, To the Moon, Rocket, Golden Joker, Satellite, Delayed Gratification, Business Card, Faceless Joker, To Do List, Golden Ticket, Matador, Cloud 9, Reserved Parking, Mail-in Rebate, Rough Gem, Chaos the Clown, Astronomer, The Hermit, Temperance, Talisman +### Banned Tags: +Investment Tag, Standard Tag, Charm Tag, Meteor Tag, Buffoon Tag, Handy Tag, Garbage Tag, Ethereal Tag, Coupon Tag, D6 Tag, Speed Tag, Economy Tag +### Other: +None +## Deck: +Standard diff --git a/mods/Tucaonormal@LastStand/meta.json b/mods/Tucaonormal@LastStand/meta.json new file mode 100644 index 00000000..695a3851 --- /dev/null +++ b/mods/Tucaonormal@LastStand/meta.json @@ -0,0 +1,9 @@ +{ + "title": "Last Stand", + "requires-steamodded": true, + "requires-talisman": false, + "categories": ["Content"], + "author": "Tucaonormal", + "repo": "https://github.com/Tucaonormal/LastStand", + "downloadURL": "https://github.com/Tucaonormal/LastStand/archive/refs/heads/main.zip" +} diff --git a/mods/UppedHealer8521@RiffRaffling/description.md b/mods/UppedHealer8521@RiffRaffling/description.md new file mode 100644 index 00000000..4660c3be --- /dev/null +++ b/mods/UppedHealer8521@RiffRaffling/description.md @@ -0,0 +1,21 @@ +# Riff-Raffling +A Balatro challenge mod by UppedHealer8521. + +Uses Steamodded (incompatible with Balamod). + +### Rules +Start with negative eternal Riff-Raff. + +No other ways of acquiring Jokers, limited ways of earning money. + +### Rules +No money at end of round, no shop jokers or buffoon packs. + +### Banned Cards +Jokers: Business Card, Egg, Faceless Joker, Golden Joker, Golden Ticket + +Consumables: Ankh, Judgement, The Soul, Wraith + +Tags: Buffoon, Foil, Holographic, Negative, Polychrome, Rare, Uncommon + +Vouchers: Seed Money / Money Tree \ No newline at end of file diff --git a/mods/UppedHealer8521@RiffRaffling/meta.json b/mods/UppedHealer8521@RiffRaffling/meta.json new file mode 100644 index 00000000..29d4debd --- /dev/null +++ b/mods/UppedHealer8521@RiffRaffling/meta.json @@ -0,0 +1,9 @@ +{ + "title": "Riff-Raffling", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ "Content" ], + "author": "UppedHealer8521", + "repo": "https://github.com/UppedHealer8521/Riff-Raffling", + "downloadURL": "https://github.com/UppedHealer8521/Riff-Raffling/archive/refs/heads/main.zip" +} diff --git a/mods/UppedHealer8521@RiffRaffling/thumbnail.jpg b/mods/UppedHealer8521@RiffRaffling/thumbnail.jpg new file mode 100644 index 00000000..0e8cd315 Binary files /dev/null and b/mods/UppedHealer8521@RiffRaffling/thumbnail.jpg differ diff --git a/mods/WilsontheWolf@DebugPlus/meta.json b/mods/WilsontheWolf@DebugPlus/meta.json index b57e0bd0..3b78842a 100644 --- a/mods/WilsontheWolf@DebugPlus/meta.json +++ b/mods/WilsontheWolf@DebugPlus/meta.json @@ -1,9 +1,13 @@ { - "title": "DebugPlus", - "requires-steamodded": false, - "requires-talisman": false, - "categories": ["Technical"], - "author": "WilsontheWolf", - "repo":"https://github.com/WilsontheWolf/DebugPlus", - "downloadURL": "https://github.com/WilsontheWolf/DebugPlus/releases/latest/download/DebugPlus.zip" - } + "title": "DebugPlus", + "requires-steamodded": false, + "requires-talisman": false, + "categories": [ + "Technical" + ], + "author": "WilsontheWolf", + "repo": "https://github.com/WilsontheWolf/DebugPlus", + "downloadURL": "https://github.com/WilsontheWolf/DebugPlus/releases/latest/download/DebugPlus.zip", + "automatic-version-check": true, + "version": "v1.4.1" +} diff --git a/mods/cassiepepsi@TDQDeck/description.md b/mods/cassiepepsi@TDQDeck/description.md new file mode 100644 index 00000000..ae91399c --- /dev/null +++ b/mods/cassiepepsi@TDQDeck/description.md @@ -0,0 +1,6 @@ +# TDQDeck +A playing card resource pack that changes the design of some face cards to use TDQ characters. + +## Dependencies +- Steammodded v1.0.0 or higher + - [NOTE] Any version of Steammodded with DeckSkin API support may work. \ No newline at end of file diff --git a/mods/cassiepepsi@TDQDeck/meta.json b/mods/cassiepepsi@TDQDeck/meta.json new file mode 100644 index 00000000..70c3929f --- /dev/null +++ b/mods/cassiepepsi@TDQDeck/meta.json @@ -0,0 +1,9 @@ +{ + "title": "The Dragon Quest Deck", + "requires-steamodded": true, + "requires-talisman": false, + "categories": ["Resource Packs"], + "author": "cassiepepsi", + "repo": "https://github.com/cloverpepsi/Balatro-TDQDeck", + "downloadURL": "https://github.com/cloverpepsi/Balatro-TDQDeck/releases/download/v1.0.0/TDQ-Deck-main.zip" +} diff --git a/mods/cassiepepsi@TDQDeck/thumbnail.png b/mods/cassiepepsi@TDQDeck/thumbnail.png new file mode 100644 index 00000000..5104182a Binary files /dev/null and b/mods/cassiepepsi@TDQDeck/thumbnail.png differ diff --git a/mods/cg223@TooManyJokers/meta.json b/mods/cg223@TooManyJokers/meta.json index b546230e..f220267e 100644 --- a/mods/cg223@TooManyJokers/meta.json +++ b/mods/cg223@TooManyJokers/meta.json @@ -1,9 +1,13 @@ -{ - "title": "Too Many Jokers", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Quality of Life"], - "author": "cg223", - "repo":"https://github.com/cg-223/toomanyjokers", - "downloadURL": "https://github.com/cg-223/toomanyjokers/archive/refs/heads/main.zip" -} +{ + "title": "Too Many Jokers", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Quality of Life" + ], + "author": "cg223", + "repo": "https://github.com/cg-223/toomanyjokers", + "downloadURL": "https://github.com/cg-223/toomanyjokers/archive/refs/heads/main.zip", + "automatic-version-check": true, + "version": "262e4b2" +} diff --git a/mods/stupxd@Cartomancer/meta.json b/mods/stupxd@Cartomancer/meta.json index 0d75e05a..2fcff2ab 100644 --- a/mods/stupxd@Cartomancer/meta.json +++ b/mods/stupxd@Cartomancer/meta.json @@ -5,5 +5,5 @@ "categories": ["Quality of Life"], "author": "stupxd", "repo": "https://github.com/stupxd/Cartomancer", - "downloadURL": "https://github.com/stupxd/Cartomancer/releases/download/v.4.10/Cartomancer-v.4.10-fix-fix.zip" -} \ No newline at end of file + "downloadURL": "https://github.com/stupxd/Cartomancer/releases/download/v.4.11/Cartomancer-v.4.11.zip" +} \ No newline at end of file diff --git a/mods/termisaal@MainMenuTweaks/description.md b/mods/termisaal@MainMenuTweaks/description.md new file mode 100644 index 00000000..90b9bc09 --- /dev/null +++ b/mods/termisaal@MainMenuTweaks/description.md @@ -0,0 +1 @@ +Minor changes to the Main Menu Screen. \ No newline at end of file diff --git a/mods/termisaal@MainMenuTweaks/meta.json b/mods/termisaal@MainMenuTweaks/meta.json new file mode 100644 index 00000000..cda4a52d --- /dev/null +++ b/mods/termisaal@MainMenuTweaks/meta.json @@ -0,0 +1,9 @@ +{ +"title": "Main Menu Tweaks", +"requires-steamodded": false, +"requires-talisman": false, +"categories": ["Quality of Life"], +"author": "termisaal & seven_kd_irl", +"repo": "https://github.com/Catzzadilla/Main-Menu-Tweaks/", +"downloadURL": "https://github.com/Catzzadilla/Main-Menu-Tweaks/archive/refs/heads/main.zip" +} \ No newline at end of file diff --git a/mods/termisaal@MainMenuTweaks/thumbnail.jpg b/mods/termisaal@MainMenuTweaks/thumbnail.jpg new file mode 100644 index 00000000..ea9a9938 Binary files /dev/null and b/mods/termisaal@MainMenuTweaks/thumbnail.jpg differ diff --git a/mods/theAstra@Maximus/description.md b/mods/theAstra@Maximus/description.md new file mode 100644 index 00000000..18302622 --- /dev/null +++ b/mods/theAstra@Maximus/description.md @@ -0,0 +1 @@ +A vanilla-inspired mod that adds many new ideas to Balatro, ranging from new Jokers, Decks, Vouchers, and more! This mod is still very much WIP, so expect things to break!!! \ No newline at end of file diff --git a/mods/theAstra@Maximus/meta.json b/mods/theAstra@Maximus/meta.json new file mode 100644 index 00000000..a37f76f2 --- /dev/null +++ b/mods/theAstra@Maximus/meta.json @@ -0,0 +1,10 @@ +{ + "title": "Maximus", + "requires-steamodded": true, + "requires-talisman": true, + "categories": ["Content"], + "author": "theAstra, Maxiss02", + "repo": "https://github.com/the-Astra/Maximus", + "downloadURL": "https://github.com/the-Astra/Maximus/archive/refs/heads/main.zip" + } + \ No newline at end of file diff --git a/mods/theAstra@Maximus/thumbnail.jpg b/mods/theAstra@Maximus/thumbnail.jpg new file mode 100644 index 00000000..0fe1322d Binary files /dev/null and b/mods/theAstra@Maximus/thumbnail.jpg differ diff --git a/mods/ywssp@ColoredSuitTarots/meta.json b/mods/ywssp@ColoredSuitTarots/meta.json index 98ff10d7..6f25d01d 100644 --- a/mods/ywssp@ColoredSuitTarots/meta.json +++ b/mods/ywssp@ColoredSuitTarots/meta.json @@ -1,9 +1,13 @@ { - "title": "Colored Suit Tarots", - "requires-steamodded": true, - "requires-talisman": false, - "categories": ["Resource Packs"], - "author": "ywssp", - "repo":"https://github.com/ywssp/Balatro-ColoredSuitTarots", - "downloadURL": "https://github.com/ywssp/Balatro-ColoredSuitTarots/archive/refs/heads/main.zip" + "title": "Colored Suit Tarots", + "requires-steamodded": true, + "requires-talisman": false, + "categories": [ + "Resource Packs" + ], + "author": "ywssp", + "repo": "https://github.com/ywssp/Balatro-ColoredSuitTarots", + "downloadURL": "https://github.com/ywssp/Balatro-ColoredSuitTarots/archive/refs/heads/main.zip", + "automatic-version-check": true, + "version": "v4.1.1" } diff --git a/schema/meta.schema.json b/schema/meta.schema.json index e033fca8..0bfdd878 100644 --- a/schema/meta.schema.json +++ b/schema/meta.schema.json @@ -31,6 +31,16 @@ "downloadURL": { "type": "string", "format": "uri" + }, + "folderName": { + "type": "string", + "pattern": "^[^<>:\"/\\|?*]+$" + }, + "version": { + "type": "string" + }, + "automatic-version-check": { + "type": "boolean" } }, "required": ["title", "requires-steamodded", "categories", "author", "repo", "downloadURL"]