generated from osc/skins-template
Compare commits
123 Commits
extract-jo
...
v1.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7036ebc244 | ||
| 71966efaa1 | |||
| af6f95a255 | |||
|
|
9a64022e13 | ||
| 77f64191a4 | |||
| 6522bed4a8 | |||
| db19698823 | |||
| 50751e4c70 | |||
|
|
f525118b7e | ||
| 36850edc62 | |||
| 2b4b5414f0 | |||
| 8a1fb0ed6c | |||
| cc74cf032e | |||
| 85e691f321 | |||
| d4dde3ff9f | |||
| 6239c82552 | |||
| b9b492ea89 | |||
| 3c2c38efc1 | |||
| 0171b14a36 | |||
| 07fd305c12 | |||
| 303b931500 | |||
| af2636930e | |||
| 3867174bf9 | |||
|
|
edf7542308 | ||
| f6a865a4ea | |||
|
|
d65782edb6 | ||
| 50e5da55a3 | |||
|
|
3cca1ba9f5 | ||
| 31dbc67720 | |||
|
|
6b15e5a606 | ||
| 8f50e734e1 | |||
|
|
b1e03a9788 | ||
| a21a4c958e | |||
|
|
1cd586bd78 | ||
| dad96a4847 | |||
|
|
e74bcd18af | ||
| bffdf16d02 | |||
| 3a5164cdab | |||
| df0d5191b2 | |||
| 557d5de9dd | |||
| 8f22899ee9 | |||
| 00e2d106d4 | |||
|
|
e300601a1b | ||
|
|
1fe1306c5c | ||
|
|
b7a9e5551c | ||
| 4d1e0f1405 | |||
| 76c49b6864 | |||
| 54172dd5af | |||
| d9169fcaf6 | |||
|
|
1e28d6be81 | ||
|
|
fa491b1c74 | ||
|
|
73c868cea3 | ||
| 180811f502 | |||
| 88fa7837e8 | |||
| 549fd49e92 | |||
| 3b070e2e94 | |||
|
|
eb3d7d6bbd | ||
|
|
906a76dc95 | ||
|
|
a22516154e | ||
|
|
156b53622e | ||
|
|
b27e883a36 | ||
|
|
55960bded4 | ||
|
|
28b6d3d5cb | ||
|
|
01fd890df2 | ||
|
|
4a99fd3afa | ||
|
|
9033d88a76 | ||
|
|
cc4fdd00e9 | ||
|
|
dc793dc01b | ||
|
|
385f4cadf0 | ||
|
|
a1b24774b5 | ||
|
|
a0a233a531 | ||
|
|
16ce5ce9b8 | ||
|
|
21a8012d9b | ||
|
|
b3b3673606 | ||
|
|
3a0aa52c89 | ||
|
|
3880eff63d | ||
|
|
be37af95f2 | ||
|
|
7e0e9d47d2 | ||
|
|
11f8e2bcb4 | ||
|
|
e944807ccc | ||
|
|
8268fc92f1 | ||
| 18134088d8 | |||
|
|
0ed983d3ca | ||
| 27062384d4 | |||
|
|
446fd9e07b | ||
|
|
973e1d79e0 | ||
| 71bb3cd703 | |||
|
|
d52b0f0981 | ||
|
|
77bd0d18fd | ||
|
|
2fe4154327 | ||
|
|
f04c82ebd4 | ||
|
|
d9ac3bcea3 | ||
| abc25b0161 | |||
| d4271a53da | |||
| de439afe81 | |||
| 4ef043dd48 | |||
| 42310f4861 | |||
|
|
23c276e3ac | ||
|
|
af952d5ddf | ||
|
|
64470fe0f4 | ||
| 420ef269da | |||
| cb87b1a62f | |||
|
|
e51a6e160a | ||
|
|
a5862d785e | ||
|
|
8ac45d5471 | ||
|
|
915c9f9620 | ||
|
|
a5bd42b092 | ||
|
|
9856e73c01 | ||
|
|
5b60d8d534 | ||
|
|
c28f6c58d5 | ||
|
|
40eaa27f24 | ||
| dada6b259c | |||
| b56e66fc6f | |||
|
|
8eb041dfd0 | ||
|
|
f6320ee738 | ||
| a880f0c917 | |||
|
|
cfb6d40869 | ||
| 6040e3586f | |||
| 1cb2fdc581 | |||
|
|
9dd161e29d | ||
| af5744ffa0 | |||
| 122170553d | |||
| bbfb2df2a2 |
24
.gitattributes
vendored
24
.gitattributes
vendored
@@ -2,14 +2,32 @@
|
|||||||
*.exe filter=lfs diff=lfs merge=lfs -text
|
*.exe filter=lfs diff=lfs merge=lfs -text
|
||||||
*.gif filter=lfs diff=lfs merge=lfs -text
|
*.gif filter=lfs diff=lfs merge=lfs -text
|
||||||
*.jpg filter=lfs diff=lfs merge=lfs -text
|
*.jpg filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.JPG filter=lfs diff=lfs merge=lfs -text
|
||||||
*.png filter=lfs diff=lfs merge=lfs -text
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
*.PNG filter=lfs diff=lfs merge=lfs -text
|
*.PNG filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pnG filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.webp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.psd filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xcf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pxr filter=lfs diff=lfs merge=lfs -text
|
||||||
*.mp3 filter=lfs diff=lfs merge=lfs -text
|
*.mp3 filter=lfs diff=lfs merge=lfs -text
|
||||||
*.ogg filter=lfs diff=lfs merge=lfs -text
|
*.ogg filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.wav filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.WAV filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.wav123321321 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.sfk filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.otf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lnk filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pk filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.fig filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.fds filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdn filter=lfs diff=lfs merge=lfs -text
|
||||||
*.osk filter=lfs diff=lfs merge=lfs -text
|
*.osk filter=lfs diff=lfs merge=lfs -text
|
||||||
*.osr filter=lfs diff=lfs merge=lfs -text
|
*.osr filter=lfs diff=lfs merge=lfs -text
|
||||||
*.osz filter=lfs diff=lfs merge=lfs -text
|
*.osz filter=lfs diff=lfs merge=lfs -text
|
||||||
*.pack filter=lfs diff=lfs merge=lfs -text
|
*.pack filter=lfs diff=lfs merge=lfs -text
|
||||||
*.pdn filter=lfs diff=lfs merge=lfs -text
|
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
||||||
*.wav filter=lfs diff=lfs merge=lfs -text
|
|
||||||
*.WAV filter=lfs diff=lfs merge=lfs -text
|
|
||||||
|
|||||||
@@ -1,560 +1,123 @@
|
|||||||
name: CI/CD Pipeline
|
name: Generate Skin previews, OSK files and per skin documentation
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
paths:
|
||||||
- '.gitea/workflows/ci.yml'
|
- '.gitea/workflows/*'
|
||||||
- 'Skins/**/*'
|
- 'Skins/**/*'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
force_rebuild:
|
||||||
|
description: 'Force rebuild all skins'
|
||||||
|
required: false
|
||||||
|
default: 'false'
|
||||||
|
target_skins:
|
||||||
|
description: >
|
||||||
|
JSON array of skins to rebuild.
|
||||||
|
If a skin name contains a single quote ('), escape it for Bash.
|
||||||
|
Raw: ["Beyond Journey's End"]
|
||||||
|
Escaped: ["Beyond Journey'\''s End"]
|
||||||
|
Example: '[\"skin1\", \"skin2\"]'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
env:
|
env:
|
||||||
DANSER_PATH: "/app/danser/danser-cli"
|
|
||||||
DANSER_DIR: "/app/danser"
|
DANSER_DIR: "/app/danser"
|
||||||
DANSER_VIDEO_DIR: "/app/danser/videos"
|
DANSER_VIDEO_DIR: "/app/danser/videos"
|
||||||
DANSER_SCREENSHOT_DIR: "/app/danser/screenshots"
|
DANSER_SCREENSHOT_DIR: "/app/danser/screenshots"
|
||||||
SKINS_DIR: "${{ github.workspace }}/Skins"
|
SKINS_DIR: "${{ github.workspace }}/Skins"
|
||||||
DANSER_SKINS_DIR: "/app/danser/skins"
|
DANSER_SKINS_DIR: "/app/danser/skins"
|
||||||
DEFAULT_SKIN_DIR: "${{ github.workspace }}/src/default-skin"
|
DEFAULT_SKIN_DIR: "/app/danser/skins/default-skin"
|
||||||
REPO_SCREENSHOT_DIR: "${{ github.workspace }}/media/gameplay"
|
REPO_SCREENSHOT_DIR: "${{ github.workspace }}/media/gameplay"
|
||||||
REPO_MOD_ICONS_DIR: "${{ github.workspace }}/media/icons"
|
REPO_MOD_ICONS_DIR: "${{ github.workspace }}/media/icons"
|
||||||
REPO_RANKING_PANEL_DIR: "${{ github.workspace }}/media/panel"
|
REPO_RANKING_PANEL_DIR: "${{ github.workspace }}/media/panel"
|
||||||
SETTINGS_JSON_PATH: "/app/danser/settings/default.json"
|
REPO_THUMBNAIL_DIR: "${{ github.workspace }}/media/thumbnail"
|
||||||
README_PATH: "${{ github.workspace }}/README.md"
|
README_PATH: "${{ github.workspace }}/README.md"
|
||||||
REPLAY_PATH: "${{ github.workspace }}/src/replay.osr"
|
GAMEPLAY_REPLAY_PATH: "/app/danser/custom-replays/yomi_yori.osr"
|
||||||
|
THUMBNAIL_REPLAY_PATH: "/app/danser/custom-replays/combo_colors.osr"
|
||||||
|
PANEL_REPLAY_PATH: "/app/danser/custom-replays/2000_gekis.osr"
|
||||||
OSK_PATH: "${{ github.workspace }}/export"
|
OSK_PATH: "${{ github.workspace }}/export"
|
||||||
IMAGE_NAME: arlind/skins
|
IMAGE_NAME: osc/skins-image
|
||||||
REGISTRY_URL: "https://${{ vars.CONTAINER_REGISTRY }}"
|
REGISTRY_URL: "https://${{ vars.CONTAINER_REGISTRY }}"
|
||||||
OSU_ID: ${{ vars.OSUID }}
|
OSU_ID: ${{ vars.OSUID }}
|
||||||
|
DOC_DIR: "${{ github.workspace }}/docs"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
generate_everything:
|
generate_everything:
|
||||||
name: Full CI/CD Pipeline
|
name: Full CI/CD Pipeline
|
||||||
runs-on: ubuntu-latest
|
runs-on: danser
|
||||||
container:
|
container:
|
||||||
image: ${{ vars.CONTAINER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
image: ${{ vars.CONTAINER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
||||||
options: >-
|
options: >-
|
||||||
--gpus all
|
--gpus all
|
||||||
--privileged
|
--privileged
|
||||||
--security-opt seccomp=unconfined
|
|
||||||
--security-opt apparmor=unconfined
|
|
||||||
--cap-add=ALL
|
|
||||||
--env NVIDIA_DRIVER_CAPABILITIES=all
|
--env NVIDIA_DRIVER_CAPABILITIES=all
|
||||||
--env NVIDIA_VISIBLE_DEVICES=all
|
--env NVIDIA_VISIBLE_DEVICES=all
|
||||||
--user 0:0
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.TOKEN }}
|
fetch-depth: 0
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Git LFS Pull
|
|
||||||
run: |
|
- name: Discover and Detect Skins
|
||||||
echo "Pulling Git LFS files..."
|
id: discover
|
||||||
git lfs pull
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/discover-skins@main
|
||||||
echo "LFS files pulled."
|
with:
|
||||||
|
force_rebuild: ${{ github.event.inputs.force_rebuild }}
|
||||||
- name: Extract Repository path
|
target_skins: ${{ github.event.inputs.target_skins }}
|
||||||
run: |
|
|
||||||
FULL_WORKSPACE_PATH="${{ github.workspace }}"
|
- name: Pull Git LFS
|
||||||
USER_REPOSITORY="${FULL_WORKSPACE_PATH#/workspace/}"
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/pull-lfs@main
|
||||||
USER_REPOSITORY="${USER_REPOSITORY%/}"
|
with:
|
||||||
echo "USER_REPOSITORY=$USER_REPOSITORY" >> $GITHUB_ENV
|
changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }}
|
||||||
|
|
||||||
- name: Set XDG_RUNTIME_DIR
|
- name: Prepare Assets
|
||||||
run: |
|
id: prepare
|
||||||
echo "Setting XDG_RUNTIME_DIR..."
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/prepare-assets@main
|
||||||
mkdir -p /tmp/xdg_runtime_dir
|
with:
|
||||||
chmod 0700 /tmp/xdg_runtime_dir
|
all_skins: ${{ steps.discover.outputs.all_skins }}
|
||||||
echo "XDG_RUNTIME_DIR=/tmp/xdg_runtime_dir" >> "$GITHUB_ENV"
|
|
||||||
echo "XDG_RUNTIME_DIR set."
|
- name: Create Tag
|
||||||
|
id: tag
|
||||||
- name: Create directories for assets
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/create-tag@main
|
||||||
run: |
|
|
||||||
echo "Creating asset directories..."
|
- name: Generate Previews
|
||||||
mkdir -p "$REPO_SCREENSHOT_DIR"
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-previews@main
|
||||||
mkdir -p "$REPO_MOD_ICONS_DIR"
|
with:
|
||||||
mkdir -p "$REPO_RANKING_PANEL_DIR"
|
changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }}
|
||||||
mkdir -p "$OSK_PATH"
|
|
||||||
echo "Asset directories created successfully."
|
- name: Generate Mod Icons and Convert Images
|
||||||
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-icons@main
|
||||||
- name: Create New Tag
|
with:
|
||||||
run: |
|
changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }}
|
||||||
echo "Computing new tag..."
|
|
||||||
git fetch --tags >/dev/null 2>&1
|
- name: Generate OSK
|
||||||
latest_tag=$(git describe --tags $(git rev-list --tags --max-count=1) 2>/dev/null || echo "")
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-osk@main
|
||||||
if [ -z "$latest_tag" ]; then
|
with:
|
||||||
new_tag="v1.0.0"
|
changed_skins_file: ${{ steps.discover.outputs.changed_skins_file }}
|
||||||
else
|
|
||||||
version=${latest_tag#v}
|
- name: Generate Documentation
|
||||||
major=$(echo "$version" | cut -d. -f1)
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/generate-docs@main
|
||||||
minor=$(echo "$version" | cut -d. -f2)
|
with:
|
||||||
patch=$(echo "$version" | cut -d. -f3)
|
new_tag: ${{ steps.tag.outputs.new_tag }}
|
||||||
minor=$((minor + 1))
|
readme_path: ${{ env.README_PATH }}
|
||||||
patch=0
|
doc_dir: ${{ env.DOC_DIR }}
|
||||||
new_tag="v${major}.${minor}.${patch}"
|
user_repository: ${{ steps.prepare.outputs.user_repository }}
|
||||||
fi
|
|
||||||
echo "new_tag=$new_tag" >> $GITHUB_ENV
|
- name: Cleanup Files
|
||||||
echo "Computed new tag: $new_tag"
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/cleanup@main
|
||||||
|
with:
|
||||||
- name: Move Skin files to Danser Skins directory
|
all_skins: ${{ steps.discover.outputs.all_skins }}
|
||||||
run: |
|
|
||||||
echo "Moving Skin files to Danser Skins directory..."
|
- name: Commit and Push
|
||||||
mkdir -p "$DANSER_SKINS_DIR"
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/git-commit-push@main
|
||||||
mv "$SKINS_DIR"/* "$DANSER_SKINS_DIR"
|
with:
|
||||||
echo "Skin files moved."
|
new_tag: ${{ steps.tag.outputs.new_tag }}
|
||||||
|
|
||||||
- name: Generate Danser videos and screenshots
|
- name: Test links
|
||||||
run: |
|
uses: ${{ env.REGISTRY_URL}}/osc/reusable-actions/.gitea/actions/test-links@main
|
||||||
echo "[Danser Job Started]"
|
with:
|
||||||
|
user_repository: ${{ steps.prepare.outputs.user_repository }}
|
||||||
SKIN_COUNT=$(find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
|
|
||||||
INDEX=1
|
|
||||||
|
|
||||||
for skin in "$DANSER_SKINS_DIR"/*/; do
|
|
||||||
if [ -d "$skin" ]; then
|
|
||||||
SKIN_NAME=$(basename "$skin")
|
|
||||||
echo ""
|
|
||||||
echo "[$INDEX/$SKIN_COUNT] Skin: $SKIN_NAME"
|
|
||||||
|
|
||||||
LOGFILE="/tmp/danser_log_$SKIN_NAME.txt"
|
|
||||||
FFMPEG_LOG="/tmp/ffmpeg_log_$SKIN_NAME.txt"
|
|
||||||
|
|
||||||
echo " → Generating video..."
|
|
||||||
if ! xvfb-run -a "$DANSER_DIR/danser-cli" -replay "$REPLAY_PATH" -record -skip -start=215 -end=230 -noupdatecheck -out="$SKIN_NAME" -skin "$SKIN_NAME" >"$LOGFILE" 2>&1; then
|
|
||||||
echo " ✖ Video generation failed for $SKIN_NAME. Log output:"
|
|
||||||
cat "$LOGFILE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo " → Taking screenshot..."
|
|
||||||
if ! xvfb-run -a "$DANSER_DIR/danser-cli" -replay "$REPLAY_PATH" -skip -noupdatecheck -ss 243 -out="$SKIN_NAME" -skin "$SKIN_NAME" >>"$LOGFILE" 2>&1; then
|
|
||||||
echo " ✖ Screenshot generation failed for $SKIN_NAME. Log output:"
|
|
||||||
cat "$LOGFILE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "$DANSER_VIDEO_DIR/$SKIN_NAME.mp4" ]; then
|
|
||||||
echo " → Converting to GIF..."
|
|
||||||
if ! ffmpeg -y -hwaccel cuda -ss 4 -t 10 -i "$DANSER_VIDEO_DIR/$SKIN_NAME.mp4" \
|
|
||||||
-filter_complex "[0:v] fps=24,scale=720:-1:flags=lanczos,palettegen [p]; \
|
|
||||||
[0:v] fps=24,scale=720:-1:flags=lanczos [x]; \
|
|
||||||
[x][p] paletteuse" \
|
|
||||||
-c:v gif "$DANSER_VIDEO_DIR/$SKIN_NAME.gif" >"$FFMPEG_LOG" 2>&1; then
|
|
||||||
echo " ✖ FFmpeg conversion failed for $SKIN_NAME. Log output:"
|
|
||||||
cat "$FFMPEG_LOG"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
mv "$DANSER_VIDEO_DIR/$SKIN_NAME.gif" "$REPO_SCREENSHOT_DIR/$SKIN_NAME.gif"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "$DANSER_SCREENSHOT_DIR/$SKIN_NAME.png" ]; then
|
|
||||||
mv "$DANSER_SCREENSHOT_DIR/$SKIN_NAME.png" "$REPO_RANKING_PANEL_DIR/$SKIN_NAME.png"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo " ✓ Completed"
|
|
||||||
INDEX=$((INDEX + 1))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "[Danser Job Finished — $SKIN_COUNT skins processed]"
|
|
||||||
|
|
||||||
- name: Rename Generated Assets Based on skin.ini
|
|
||||||
run: |
|
|
||||||
echo "[Asset Renaming Started]"
|
|
||||||
|
|
||||||
INDEX=1
|
|
||||||
SKIN_COUNT=$(find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
|
|
||||||
|
|
||||||
for skin_path in "$DANSER_SKINS_DIR"/*/; do
|
|
||||||
if [ -d "$skin_path" ]; then
|
|
||||||
SKIN_NAME=$(basename "$skin_path")
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "[$INDEX/$SKIN_COUNT] Skin: $SKIN_NAME"
|
|
||||||
|
|
||||||
ini_file=$(find "$skin_path" -maxdepth 1 -iname "skin.ini" | head -n1)
|
|
||||||
skin_header="$SKIN_NAME"
|
|
||||||
|
|
||||||
if [ -f "$ini_file" ]; then
|
|
||||||
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n1)
|
|
||||||
if [ -n "$name_line" ]; then
|
|
||||||
new_name=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
||||||
[ -n "$new_name" ] && skin_header="$new_name"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
original_gif="$REPO_SCREENSHOT_DIR/$SKIN_NAME.gif"
|
|
||||||
renamed_gif="$REPO_SCREENSHOT_DIR/$skin_header.gif"
|
|
||||||
|
|
||||||
if [ -f "$original_gif" ] && [ "$original_gif" != "$renamed_gif" ]; then
|
|
||||||
mv -f "$original_gif" "$renamed_gif"
|
|
||||||
echo " ✓ Renamed GIF"
|
|
||||||
else
|
|
||||||
echo " → No GIF to rename or already named correctly"
|
|
||||||
fi
|
|
||||||
|
|
||||||
original_png="$REPO_RANKING_PANEL_DIR/$SKIN_NAME.png"
|
|
||||||
renamed_png="$REPO_RANKING_PANEL_DIR/$skin_header.png"
|
|
||||||
|
|
||||||
if [ -f "$original_png" ] && [ "$original_png" != "$renamed_png" ]; then
|
|
||||||
mv -f "$original_png" "$renamed_png"
|
|
||||||
echo " ✓ Renamed PNG"
|
|
||||||
else
|
|
||||||
echo " → No PNG to rename or already named correctly"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo " ✓ Completed"
|
|
||||||
INDEX=$((INDEX + 1))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "[Asset Renaming Complete — $SKIN_COUNT skins processed]"
|
|
||||||
|
|
||||||
- name: Generate Mod Icons
|
|
||||||
run: |
|
|
||||||
echo "[Mod Icon Generation Started]"
|
|
||||||
|
|
||||||
ICONS_JSON_FILE="${{ github.workspace }}/.gitea/workflows/icons.json"
|
|
||||||
|
|
||||||
group1_icons=$(jq -r '.group1 | join(" ")' "$ICONS_JSON_FILE")
|
|
||||||
group2_icons=$(jq -r '.group2 | join(" ")' "$ICONS_JSON_FILE")
|
|
||||||
group3_icons=$(jq -r '.group3 | join(" ")' "$ICONS_JSON_FILE")
|
|
||||||
|
|
||||||
SKIN_COUNT=$(find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
|
|
||||||
INDEX=1
|
|
||||||
|
|
||||||
for skin_path in "$DANSER_SKINS_DIR"/*/; do
|
|
||||||
if [ -d "$skin_path" ]; then
|
|
||||||
SKIN_NAME=$(basename "$skin_path")
|
|
||||||
echo ""
|
|
||||||
echo "[$INDEX/$SKIN_COUNT] Skin: $SKIN_NAME"
|
|
||||||
|
|
||||||
ini_file=$(find "$skin_path" -maxdepth 1 -iname "skin.ini" | head -n1)
|
|
||||||
skin_header="$SKIN_NAME"
|
|
||||||
if [ -f "$ini_file" ]; then
|
|
||||||
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n1)
|
|
||||||
if [ -n "$name_line" ]; then
|
|
||||||
new_name=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
||||||
if [ -n "$new_name" ]; then
|
|
||||||
skin_header="$new_name"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
ICON_FOLDER="$skin_path"
|
|
||||||
OUTPUT="${REPO_MOD_ICONS_DIR}/${skin_header}-mod-icons.png"
|
|
||||||
TILE_SIZE=160
|
|
||||||
PADDING=10
|
|
||||||
MAX_ICONS=7
|
|
||||||
|
|
||||||
BLANK_IMAGE="blank.png"
|
|
||||||
magick -size "${TILE_SIZE}x${TILE_SIZE}" xc:none "$BLANK_IMAGE"
|
|
||||||
|
|
||||||
row_images=""
|
|
||||||
row_index=1
|
|
||||||
|
|
||||||
for group_list in "$group1_icons" "$group2_icons" "$group3_icons"; do
|
|
||||||
montage_files=""
|
|
||||||
count=0
|
|
||||||
|
|
||||||
for icon in $group_list; do
|
|
||||||
icon_path="${ICON_FOLDER}/selection-mod-${icon}@2x.png"
|
|
||||||
if [ -f "$icon_path" ]; then
|
|
||||||
montage_files="$montage_files \"$icon_path\""
|
|
||||||
count=$((count + 1))
|
|
||||||
elif [ -f "$DEFAULT_SKIN_DIR/selection-mod-${icon}@2x.png" ]; then
|
|
||||||
montage_files="$montage_files \"$DEFAULT_SKIN_DIR/selection-mod-${icon}@2x.png\""
|
|
||||||
count=$((count + 1))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
missing=$(( MAX_ICONS - count ))
|
|
||||||
if [ "$missing" -lt 0 ]; then
|
|
||||||
missing=0
|
|
||||||
fi
|
|
||||||
i=0
|
|
||||||
while [ "$i" -lt "$missing" ]; do
|
|
||||||
montage_files="$montage_files \"$BLANK_IMAGE\""
|
|
||||||
i=$((i + 1))
|
|
||||||
done
|
|
||||||
|
|
||||||
row_file="row_${row_index}.png"
|
|
||||||
eval "magick montage $montage_files -tile \"${MAX_ICONS}x1\" -geometry \"${TILE_SIZE}x${TILE_SIZE}+${PADDING}+${PADDING}\" -background none \"$row_file\""
|
|
||||||
|
|
||||||
row_images="$row_images \"$row_file\""
|
|
||||||
row_index=$((row_index + 1))
|
|
||||||
done
|
|
||||||
|
|
||||||
num_rows=0
|
|
||||||
for _ in $row_images; do
|
|
||||||
num_rows=$((num_rows + 1))
|
|
||||||
done
|
|
||||||
|
|
||||||
eval "magick montage $row_images -tile \"1x${num_rows}\" -geometry \"+${PADDING}+${PADDING}\" -background none \"$OUTPUT\""
|
|
||||||
|
|
||||||
rm "$BLANK_IMAGE"
|
|
||||||
rm row_*.png
|
|
||||||
|
|
||||||
echo " ✓ Completed"
|
|
||||||
INDEX=$((INDEX + 1))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "[Mod Icon Generation Finished — $SKIN_COUNT skins processed]"
|
|
||||||
|
|
||||||
- name: Create OSK files
|
|
||||||
run: |
|
|
||||||
echo "[OSK Creation Job Started]"
|
|
||||||
|
|
||||||
SKIN_COUNT=$(find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
|
|
||||||
INDEX=1
|
|
||||||
|
|
||||||
FIXED_TIMESTAMP="2025-01-01 00:00:00"
|
|
||||||
|
|
||||||
find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | sort | while IFS= read -r skin; do
|
|
||||||
SKIN_FOLDER=$(basename "$skin")
|
|
||||||
echo ""
|
|
||||||
echo "[$INDEX/$SKIN_COUNT] Processing skin folder: $SKIN_FOLDER"
|
|
||||||
|
|
||||||
ini_file=$(find "$skin" -maxdepth 1 -iname "skin.ini" | head -n1)
|
|
||||||
if [ -f "$ini_file" ]; then
|
|
||||||
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n1)
|
|
||||||
if [ -n "$name_line" ]; then
|
|
||||||
new_name=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
||||||
if [ -n "$new_name" ]; then
|
|
||||||
SKIN_FOLDER="$new_name"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo " → No skin.ini found, using folder name."
|
|
||||||
fi
|
|
||||||
|
|
||||||
osk_file="${OSK_PATH}/${SKIN_FOLDER}.osk"
|
|
||||||
|
|
||||||
if ! (cd "$skin" && find . -type f -exec touch -d "$FIXED_TIMESTAMP" {} +); then
|
|
||||||
echo " ✖ Failed to normalize timestamps in $skin"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if (
|
|
||||||
cd "$skin" && \
|
|
||||||
find . -type f | sort | zip -rq -D -X -9 --compression-method deflate "$osk_file" -@
|
|
||||||
); then
|
|
||||||
echo " ✓ OSK file created successfully."
|
|
||||||
else
|
|
||||||
echo " ✖ Failed to create OSK file: $osk_file"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
INDEX=$((INDEX + 1))
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "[OSK Creation Job Finished — $SKIN_COUNT skins processed]"
|
|
||||||
|
|
||||||
- name: Generate README
|
|
||||||
run: |
|
|
||||||
echo "Starting README generation..."
|
|
||||||
|
|
||||||
SKINS_JSON_FILE="${{ github.workspace }}/.gitea/workflows/skins.json"
|
|
||||||
DESC_FILE=$(mktemp)
|
|
||||||
|
|
||||||
jq -r '.descriptions | to_entries[] | "\(.key)=\(.value)"' "$SKINS_JSON_FILE" > "$DESC_FILE"
|
|
||||||
|
|
||||||
echo "---" > "$README_PATH"
|
|
||||||
echo "gitea: none" >> "$README_PATH"
|
|
||||||
echo "include_toc: true" >> "$README_PATH"
|
|
||||||
echo "---" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
echo "# Skins" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
echo "<!--" >> "$README_PATH"
|
|
||||||
echo "osuid: $OSU_ID" >> "$README_PATH"
|
|
||||||
echo "-->" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
|
|
||||||
get_desc() {
|
|
||||||
key=$1
|
|
||||||
escaped_key=$(printf '%s\n' "$key" | sed 's/[\/&]/\\&/g')
|
|
||||||
grep "^${escaped_key}=" "$DESC_FILE" | cut -d '=' -f2-
|
|
||||||
}
|
|
||||||
|
|
||||||
ORDER_FILE=$(mktemp)
|
|
||||||
JSON_SKINS_TMP=$(mktemp)
|
|
||||||
SEEN_HEADERS_FILE=$(mktemp)
|
|
||||||
|
|
||||||
jq -r '.order[]' "$SKINS_JSON_FILE" > "$ORDER_FILE"
|
|
||||||
cp "$ORDER_FILE" "$JSON_SKINS_TMP"
|
|
||||||
|
|
||||||
while IFS= read -r skin; do
|
|
||||||
dir="$DANSER_SKINS_DIR/$skin"
|
|
||||||
if [ ! -d "$dir" ]; then
|
|
||||||
echo "Skipping missing skin directory: $skin"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
ini_file=$(find "$dir" -maxdepth 1 -iname "skin.ini" | head -n 1)
|
|
||||||
skin_header="$skin"
|
|
||||||
if [ -f "$ini_file" ]; then
|
|
||||||
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n 1)
|
|
||||||
if [ -n "$name_line" ]; then
|
|
||||||
skin_header=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -Fxq "$skin_header" "$SEEN_HEADERS_FILE"; then
|
|
||||||
echo "Skipping duplicate skin header from JSON order: $skin_header"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
echo "$skin_header" >> "$SEEN_HEADERS_FILE"
|
|
||||||
|
|
||||||
escaped_img=$(echo "$skin_header.gif" | sed 's/ /%20/g')
|
|
||||||
escaped_osk=$(echo "$skin_header.osk" | sed 's/ /%20/g')
|
|
||||||
|
|
||||||
echo "## [$skin_header]($REGISTRY_URL/$USER_REPOSITORY/media/tag/$new_tag/export/$escaped_osk)" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
|
|
||||||
skin_desc=$(get_desc "$skin")
|
|
||||||
if [ -n "$skin_desc" ]; then
|
|
||||||
echo "$skin_desc" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "$ini_file" ]; then
|
|
||||||
author_line=$(grep -i '^[[:space:]]*Author:' "$ini_file" | head -n 1 || true)
|
|
||||||
if [ -n "$author_line" ]; then
|
|
||||||
author=$(echo "$author_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
||||||
if [ -n "$author" ]; then
|
|
||||||
echo "**Author:** $author" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
|
|
||||||
if [ -f "media/panel/${skin_header}.png" ]; then
|
|
||||||
escaped_panel=$(echo "${skin_header}.png" | sed 's/ /%20/g')
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mod_icon_file="${skin_header}-mod-icons.png"
|
|
||||||
if [ -f "media/icons/$mod_icon_file" ]; then
|
|
||||||
escaped_mod=$(echo "$mod_icon_file" | sed 's/ /%20/g')
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
fi
|
|
||||||
done < "$ORDER_FILE"
|
|
||||||
|
|
||||||
find "$DANSER_SKINS_DIR" -mindepth 1 -maxdepth 1 -type d | while IFS= read -r dir; do
|
|
||||||
skin=$(basename "$dir")
|
|
||||||
|
|
||||||
ini_file=$(find "$dir" -maxdepth 1 -iname "skin.ini" | head -n 1)
|
|
||||||
skin_header="$skin"
|
|
||||||
if [ -f "$ini_file" ]; then
|
|
||||||
name_line=$(grep -i '^[[:space:]]*name:' "$ini_file" | head -n 1)
|
|
||||||
if [ -n "$name_line" ]; then
|
|
||||||
skin_header=$(echo "$name_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -Fxq "$skin_header" "$SEEN_HEADERS_FILE"; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -Fxq "$skin" "$JSON_SKINS_TMP"; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$skin_header" >> "$SEEN_HEADERS_FILE"
|
|
||||||
|
|
||||||
escaped_img=$(echo "$skin_header.gif" | sed 's/ /%20/g')
|
|
||||||
escaped_osk=$(echo "$skin_header.osk" | sed 's/ /%20/g')
|
|
||||||
|
|
||||||
echo "## [$skin_header]($REGISTRY_URL/$USER_REPOSITORY/media/tag/$new_tag/export/$escaped_osk)" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
|
|
||||||
if [ -f "$ini_file" ]; then
|
|
||||||
author_line=$(grep -i '^[[:space:]]*Author:' "$ini_file" | head -n 1 || true)
|
|
||||||
if [ -n "$author_line" ]; then
|
|
||||||
author=$(echo "$author_line" | cut -d ':' -f2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
|
||||||
if [ -n "$author" ]; then
|
|
||||||
echo "**Author:** $author" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
|
|
||||||
if [ -f "media/panel/${skin_header}.png" ]; then
|
|
||||||
escaped_panel=$(echo "${skin_header}.png" | sed 's/ /%20/g')
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mod_icon_file="${skin_header}-mod-icons.png"
|
|
||||||
if [ -f "media/icons/$mod_icon_file" ]; then
|
|
||||||
escaped_mod=$(echo "$mod_icon_file" | sed 's/ /%20/g')
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
rm "$DESC_FILE" "$ORDER_FILE" "$JSON_SKINS_TMP" "$SEEN_HEADERS_FILE"
|
|
||||||
|
|
||||||
echo "# Build History" >> "$README_PATH"
|
|
||||||
echo "" >> "$README_PATH"
|
|
||||||
echo "| Version | Date |" >> "$README_PATH"
|
|
||||||
echo "| ------- | ---- |" >> "$README_PATH"
|
|
||||||
|
|
||||||
current_commit_date=$(TZ="Europe/Zurich" date -d "$(git log -1 --format=%cI)" "+%d.%m.%Y %H:%M:%S")
|
|
||||||
echo "| [\`$new_tag (Current)\`](https://git.sulejmani.xyz/arlind/skins/src/tag/$new_tag/README.md) | $current_commit_date |" >> "$README_PATH"
|
|
||||||
|
|
||||||
git tag --sort=-v:refname | grep -v "^$new_tag$" | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | while read -r tag; do
|
|
||||||
tag_date=$(git log -1 --format=%ci "$tag")
|
|
||||||
formatted_date=$(TZ="Europe/Zurich" date -d "$tag_date" "+%d.%m.%Y %H:%M:%S")
|
|
||||||
echo "| [\`$tag\`](https://git.sulejmani.xyz/arlind/skins/src/tag/$tag/README.md) | $formatted_date |" >> "$README_PATH"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "README generation completed."
|
|
||||||
|
|
||||||
- name: Configure Git
|
|
||||||
run: |
|
|
||||||
echo "Configuring git user and LFS..."
|
|
||||||
git config user.email "arlind@sulej.ch"
|
|
||||||
git config user.name "ci-bot"
|
|
||||||
git config lfs.https://${{ vars.CONTAINER_REGISTRY }}/arlind/skins.git/info/lfs.locksverify true
|
|
||||||
echo "Git configured."
|
|
||||||
|
|
||||||
- name: Add and Commit changes
|
|
||||||
run: |
|
|
||||||
git config advice.addIgnoredFile false
|
|
||||||
echo "Staging files for commit..."
|
|
||||||
git add README.md media/gameplay/* media/panel/* media/icons/* export/*
|
|
||||||
echo "Committing changes..."
|
|
||||||
git commit -m "[ci skip] push back from pipeline" -q || echo "No changes to commit"
|
|
||||||
echo "Commit step completed."
|
|
||||||
|
|
||||||
- name: Push changes and create tag
|
|
||||||
run: |
|
|
||||||
echo "Checking branch and pushing changes..."
|
|
||||||
if [ "${GITHUB_REF}" = "refs/heads/main" ]; then
|
|
||||||
echo "On main branch: pushing to origin main..."
|
|
||||||
git push origin HEAD:main || echo "No changes to push"
|
|
||||||
echo "Creating and pushing tag $new_tag..."
|
|
||||||
git tag "$new_tag"
|
|
||||||
git push origin "$new_tag"
|
|
||||||
else
|
|
||||||
echo "On branch ${GITHUB_REF_NAME}: pushing to origin ${GITHUB_REF_NAME}..."
|
|
||||||
git push origin HEAD:"${GITHUB_REF_NAME}" || echo "No changes to push"
|
|
||||||
fi
|
|
||||||
echo "Push step completed."
|
|
||||||
|
|||||||
@@ -1,10 +1,30 @@
|
|||||||
{
|
{
|
||||||
"order": [
|
"order": [
|
||||||
"example1",
|
"- Barely still Jace",
|
||||||
"example2"
|
"- Jace",
|
||||||
|
"- Jace White",
|
||||||
|
"- Varvalian",
|
||||||
|
"- Barely still oreru",
|
||||||
|
"- Gunna",
|
||||||
|
"Minimal_by_Geroyuni",
|
||||||
|
"Konata",
|
||||||
|
"Ameliorate v1.5",
|
||||||
|
"Skin 2",
|
||||||
|
"as244",
|
||||||
|
"boop"
|
||||||
],
|
],
|
||||||
"descriptions": {
|
"descriptions": {
|
||||||
"example1": "Description of example1",
|
"- Barely still Jace": "My main skin.",
|
||||||
"example2": "Description of example2"
|
"- Jace": "My secondary skin, only really used for EZ.",
|
||||||
|
"- Jace White": "Mock up Rafis' skin.",
|
||||||
|
"- Varvalian": "My first real skin I created for myself.",
|
||||||
|
"- Barely still oreru": "Barely still Jace, but every Audio file got replaced with Oreru.",
|
||||||
|
"- Gunna": "My first skin made from scratch.",
|
||||||
|
"Minimal_by_Geroyuni": "My first skin that wasn't completely ass.",
|
||||||
|
"Konata": "Play this with hitlightning enabled lol.",
|
||||||
|
"Ameliorate v1.5": "This is only on here 'cause all my main skins use the hitsounds from here.",
|
||||||
|
"Skin 2": "Either this or as244 are the first 2 skins me and my friend made on osuskinner.",
|
||||||
|
"as244": "Either this or Skin 2 are the first 2 skins me and my friend made on osuskinner.",
|
||||||
|
"boop": "Just boop, downloaded it for DT."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8
.gitignore
vendored
8
.gitignore
vendored
@@ -0,0 +1,8 @@
|
|||||||
|
*did*
|
||||||
|
*WhiteCat*
|
||||||
|
*Niven*
|
||||||
|
*Night*
|
||||||
|
*aiupscale*
|
||||||
|
*test*
|
||||||
|
*Teto*
|
||||||
|
*Tesotra*
|
||||||
|
|||||||
140
README.md
Normal file
140
README.md
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
---
|
||||||
|
gitea: none
|
||||||
|
include_toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
# Skins
|
||||||
|
|
||||||
|
<!--
|
||||||
|
osuid: 13792719
|
||||||
|
-->
|
||||||
|
|
||||||
|
**Go back to [osc/skins](https://git.sulej.net/osc/skins)**
|
||||||
|
|
||||||
|
**Click on the Skin name to download it, or click on the thumbnail to see more about the skin, including a video preview, screenshots, and mod icons.**
|
||||||
|
|
||||||
|
## [Barely still Jace (Arlind edit)](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/-%20Barely%20still%20Jace/Barely%20still%20Jace%20%28Arlind%20edit%29.osk)
|
||||||
|
|
||||||
|
My main skin.
|
||||||
|
|
||||||
|
**Author:** Various people
|
||||||
|
|
||||||
|
[](/docs/-%20Barely%20still%20Jace/Barely%20still%20Jace%20%28Arlind%20edit%29.md)
|
||||||
|
|
||||||
|
## [Jace Arlind edit](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/-%20Jace/Jace%20Arlind%20edit.osk)
|
||||||
|
|
||||||
|
My secondary skin, only really used for EZ.
|
||||||
|
|
||||||
|
**Author:** Various people
|
||||||
|
|
||||||
|
[](/docs/-%20Jace/Jace%20Arlind%20edit.md)
|
||||||
|
|
||||||
|
## [Jace Arlind edit (white)](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/-%20Jace%20White/Jace%20Arlind%20edit%20%28white%29.osk)
|
||||||
|
|
||||||
|
Mock up Rafis' skin.
|
||||||
|
|
||||||
|
**Author:** Various people
|
||||||
|
|
||||||
|
[](/docs/-%20Jace%20White/Jace%20Arlind%20edit%20%28white%29.md)
|
||||||
|
|
||||||
|
## [Varvalian Arlind edit](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/-%20Varvalian/Varvalian%20Arlind%20edit.osk)
|
||||||
|
|
||||||
|
My first real skin I created for myself.
|
||||||
|
|
||||||
|
**Author:** Garin, Gab, Varvalian
|
||||||
|
|
||||||
|
[](/docs/-%20Varvalian/Varvalian%20Arlind%20edit.md)
|
||||||
|
|
||||||
|
## [Barely still Jace (Oreru edit)](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/-%20Barely%20still%20oreru/Barely%20still%20Jace%20%28Oreru%20edit%29.osk)
|
||||||
|
|
||||||
|
Barely still Jace, but every Audio file got replaced with Oreru.
|
||||||
|
|
||||||
|
**Author:** Various people
|
||||||
|
|
||||||
|
[](/docs/-%20Barely%20still%20oreru/Barely%20still%20Jace%20%28Oreru%20edit%29.md)
|
||||||
|
|
||||||
|
## [Gunna skin by Arlind](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/-%20Gunna/Gunna%20skin%20by%20Arlind.osk)
|
||||||
|
|
||||||
|
My first skin made from scratch.
|
||||||
|
|
||||||
|
**Author:** arlind
|
||||||
|
|
||||||
|
[](/docs/-%20Gunna/Gunna%20skin%20by%20Arlind.md)
|
||||||
|
|
||||||
|
## [Minimal by Geroyuni](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/Minimal_by_Geroyuni/Minimal%20by%20Geroyuni.osk)
|
||||||
|
|
||||||
|
My first skin that wasn't completely ass.
|
||||||
|
|
||||||
|
**Author:** Geroyuni
|
||||||
|
|
||||||
|
[](/docs/Minimal_by_Geroyuni/Minimal%20by%20Geroyuni.md)
|
||||||
|
|
||||||
|
## [Konata - Rave Party V0.9.1](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/Konata/Konata%20-%20Rave%20Party%20V0.9.1.osk)
|
||||||
|
|
||||||
|
Play this with hitlightning enabled lol.
|
||||||
|
|
||||||
|
**Author:** Vext
|
||||||
|
|
||||||
|
[](/docs/Konata/Konata%20-%20Rave%20Party%20V0.9.1.md)
|
||||||
|
|
||||||
|
## [Ameliorate v1.5](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/Ameliorate%20v1.5/Ameliorate%20v1.5.osk)
|
||||||
|
|
||||||
|
This is only on here 'cause all my main skins use the hitsounds from here.
|
||||||
|
|
||||||
|
**Author:** Toy
|
||||||
|
|
||||||
|
[](/docs/Ameliorate%20v1.5/Ameliorate%20v1.5.md)
|
||||||
|
|
||||||
|
## [Skin 2](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/Skin%202/Skin%202.osk)
|
||||||
|
|
||||||
|
Either this or as244 are the first 2 skins me and my friend made on osuskinner.
|
||||||
|
|
||||||
|
**Author:** osuskinner.com / Various Artist
|
||||||
|
|
||||||
|
[](/docs/Skin%202/Skin%202.md)
|
||||||
|
|
||||||
|
## [as244](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/as244/as244.osk)
|
||||||
|
|
||||||
|
Either this or Skin 2 are the first 2 skins me and my friend made on osuskinner.
|
||||||
|
|
||||||
|
**Author:** osuskinner.com / Various Artist
|
||||||
|
|
||||||
|
[](/docs/as244/as244.md)
|
||||||
|
|
||||||
|
## [boop](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/boop/boop.osk)
|
||||||
|
|
||||||
|
Just boop, downloaded it for DT.
|
||||||
|
|
||||||
|
**Author:** ryuk
|
||||||
|
|
||||||
|
[](/docs/boop/boop.md)
|
||||||
|
|
||||||
|
## [Default](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/Default/Default.osk)
|
||||||
|
|
||||||
|
**Author:** Developers
|
||||||
|
|
||||||
|
[](/docs/Default/Default.md)
|
||||||
|
|
||||||
|
## [MonkoGlassTest](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/MonkoGlassTest/MonkoGlassTest.osk)
|
||||||
|
|
||||||
|
**Author:** Monko2k | Edited by rektygon
|
||||||
|
|
||||||
|
[](/docs/MonkoGlassTest/MonkoGlassTest.md)
|
||||||
|
|
||||||
|
## [azerinoxrektygon edit](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/azerinoxrektygon%20edit/azerinoxrektygon%20edit.osk)
|
||||||
|
|
||||||
|
**Author:** marcel7 (various artists)
|
||||||
|
|
||||||
|
[](/docs/azerinoxrektygon%20edit/azerinoxrektygon%20edit.md)
|
||||||
|
|
||||||
|
## [kik0](https://git.sulej.net/Arlind/skins/media/tag/v1.0.0/export/kik0/kik0.osk)
|
||||||
|
|
||||||
|
**Author:** kik0
|
||||||
|
|
||||||
|
[](/docs/kik0/kik0.md)
|
||||||
|
|
||||||
|
# Build History
|
||||||
|
|
||||||
|
| Version | Date |
|
||||||
|
| ------- | ---- |
|
||||||
|
| [`v1.0.0 (Current)`](https://git.sulej.net/Arlind/skins/src/tag/v1.0.0/README.md) | 23.11.2025 17:01:52 |
|
||||||
BIN
Skins/- Barely still Jace/Assets/combo/score-0.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-0.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-0@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-0@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-1.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-1.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-1@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-1@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-2.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-2.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-2@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-2@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-3.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-3.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-3@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-3@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-4.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-4.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-4@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-4@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-5.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-5.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-5@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-5@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-6.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-6.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-6@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-6@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-7.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-7.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-7@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-7@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-8.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-8.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-8@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-8@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-9.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-9.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-9@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-9@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-dot.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-dot.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-dot@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-dot@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-percent.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-percent.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-percent@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-percent@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/combo/score-x@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/combo/score-x@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-0.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-0.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-1.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-1.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-2.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-2.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-3.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-3.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-4.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-4.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-5.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-5.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-6.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-6.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-7.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-7.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-8.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-8.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-9.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-9.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-comma.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-comma.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-dot.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-dot.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-percent.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-percent.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/default/default-x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/default/default-x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-0.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-0.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-0@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-0@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-1.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-1.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-1@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-1@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-2.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-2.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-2@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-2@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-3.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-3.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-3@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-3@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-4.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-4.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-4@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-4@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-5.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-5.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-5@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-5@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-6.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-6.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-6@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-6@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-7.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-7.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-7@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-7@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-8.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-8.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-8@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-8@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-9.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-9.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-9@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-9@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-dot.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-dot.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-dot@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-dot@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-percent.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-percent.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-percent@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-percent@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/score-x@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/score-x@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-0@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-0@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-1@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-1@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-2@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-2@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-3@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-3@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-4@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-4@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-5@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-5@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-6@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-6@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-7@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-7@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-8@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-8@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-9@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-9@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-comma@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-comma@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-dot@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-dot@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-percent@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-percent@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-x@2x.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Assets/score/scoreentry-x@2x.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/Go.png
LFS
Normal file
BIN
Skins/- Barely still Jace/Go.png
LFS
Normal file
Binary file not shown.
45
Skins/- Barely still Jace/Skin.ini
Normal file
45
Skins/- Barely still Jace/Skin.ini
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
[General]
|
||||||
|
//----------General
|
||||||
|
Name: Barely still Jace (Arlind edit)
|
||||||
|
Author: Various people
|
||||||
|
Version: 2.5
|
||||||
|
|
||||||
|
//----------Settings
|
||||||
|
SliderBallFlip: 1
|
||||||
|
CursorTrailRotate: 0
|
||||||
|
SpinnerFadePlayfield: 0
|
||||||
|
SliderBallFrames: 60
|
||||||
|
HitCircleOverlayAboveNumer: 1
|
||||||
|
SliderStyle: 2
|
||||||
|
AllowSliderBallTint: 1
|
||||||
|
|
||||||
|
//----------Cursor
|
||||||
|
CursorCentre: 1
|
||||||
|
CursorExpand: 0
|
||||||
|
CursorRotate: 0
|
||||||
|
CursorTrailRotate: 0
|
||||||
|
|
||||||
|
[Colours]
|
||||||
|
//----------Combo colors
|
||||||
|
Combo1: 120,120,255
|
||||||
|
|
||||||
|
//----------Text colors
|
||||||
|
SongSelectActiveText: 250,250,250
|
||||||
|
SongSelectInactiveText: 230,230,230
|
||||||
|
|
||||||
|
//----------Slider
|
||||||
|
SliderBorder: 120,120,120
|
||||||
|
SliderTrackOverride: 3,3,12
|
||||||
|
|
||||||
|
[Fonts]
|
||||||
|
//----------Hitcircle font
|
||||||
|
HitCirclePrefix: Assets/default/default
|
||||||
|
HitCircleOverlap: 160
|
||||||
|
|
||||||
|
//----------Score font
|
||||||
|
ScorePrefix: Assets/score/score
|
||||||
|
ScoreOverlap: 9
|
||||||
|
|
||||||
|
//----------Combo font
|
||||||
|
ComboPrefix: Assets/combo/score
|
||||||
|
ScoreOverlap: 9
|
||||||
BIN
Skins/- Barely still Jace/Thumbs.db
LFS
Normal file
BIN
Skins/- Barely still Jace/Thumbs.db
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/applause.mp3
LFS
Normal file
BIN
Skins/- Barely still Jace/applause.mp3
LFS
Normal file
Binary file not shown.
0
Skins/- Barely still Jace/applause.wav
Normal file
0
Skins/- Barely still Jace/applause.wav
Normal file
BIN
Skins/- Barely still Jace/approachcircle.png
LFS
Normal file
BIN
Skins/- Barely still Jace/approachcircle.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/back-button-click.wav
LFS
Normal file
BIN
Skins/- Barely still Jace/back-button-click.wav
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/back-button-hover.wav
LFS
Normal file
BIN
Skins/- Barely still Jace/back-button-hover.wav
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/button-left.png
LFS
Normal file
BIN
Skins/- Barely still Jace/button-left.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/button-middle.png
LFS
Normal file
BIN
Skins/- Barely still Jace/button-middle.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/button-right.png
LFS
Normal file
BIN
Skins/- Barely still Jace/button-right.png
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/check-on.wav
LFS
Normal file
BIN
Skins/- Barely still Jace/check-on.wav
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/click-close.wav
LFS
Normal file
BIN
Skins/- Barely still Jace/click-close.wav
LFS
Normal file
Binary file not shown.
BIN
Skins/- Barely still Jace/click-short-confirm.wav
LFS
Normal file
BIN
Skins/- Barely still Jace/click-short-confirm.wav
LFS
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user