1
0
This commit is contained in:
Connor Mills
2025-03-10 12:41:28 -07:00
70 changed files with 788 additions and 158 deletions

181
.github/scripts/update_mod_versions.py vendored Executable file
View File

@@ -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)

View File

@@ -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..."

View File

@@ -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

View File

@@ -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.

View File

@@ -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**

View File

@@ -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"
}
"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"
}

View File

@@ -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"
}
"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"
}

View File

@@ -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"
}

View File

@@ -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!](<https://discord.gg/fjcBm5YmdN>)**
Keep up with development and chat with others who might like the mod!

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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"
}
"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"
}

View File

@@ -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"
}
"downloadURL": "https://github.com/BarrierTrio/Cardsauce/releases/latest/download/Cardsauce.zip",
"automatic-version-check": true,
"version": "Update1.3.4"
}

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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)

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

View File

@@ -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.

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

View File

@@ -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?

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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).

View File

@@ -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.
- Steamodded (>=1.0.0~ALPHA-1404b) or higher

View File

@@ -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"
}

View File

@@ -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!

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 KiB

View File

@@ -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)

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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.

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

View File

@@ -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!

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -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"
}

View File

@@ -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

View File

@@ -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"
}

View File

@@ -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.

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -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

View File

@@ -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"
}

View File

@@ -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

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -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"
}

View File

@@ -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.

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

View File

@@ -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"
}

View File

@@ -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"
}
"downloadURL": "https://github.com/stupxd/Cartomancer/releases/download/v.4.11/Cartomancer-v.4.11.zip"
}

View File

@@ -0,0 +1 @@
Minor changes to the Main Menu Screen.

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -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!!!

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

View File

@@ -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"
}

View File

@@ -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"]