Skip to content
 
 

Repository files navigation

🌹 Rose - Skin Changer for LoL

Fork of Rose with support for favorite skins, chroma selection, dual dice roller and LAN party mode.


Download & Run

  1. Go to Releases and download Rose-v1.2.14-party-beta.zip.
  2. Extract the archive anywhere on your PC.
  3. Run Rose.exe.
  4. Open League of Legends.

Features added in this fork

Favorite skins & chromas

  • Star icons in the Quickplay carousel to mark favorite skins.
  • Favorite specific chromas directly inside the chroma panel.
  • Removing all favorite chromas from a skin automatically untags the skin.
  • Dual dice roller in champion select:
    • Normal dice: rolls across all skins.
    • Golden star dice: rolls only from your favorites list.

Note: You can use RMB to tag/untag skins/chromas as favorites in quickplay screen.

Party Mode (LAN / P2P)

Direct skin sharing with friends in the same lobby without external servers.

  • Works over local network, or virtual LAN (Radmin VPN / Hamachi) if playing over the internet.

  • Download Radmin VPN with your friend.

  • Host create a network

  • Friend joins the network

    In game:

  • Host: Click the party button in the bottom right social bar, choose your Radmin IP, click Host Party, and send the token to your friend.

  • Join: Switch to the Join Party tab, paste the token, and click Join Party.

  • During champion select, selections and chromas sync automatically. Both skins are injected into the match when the game starts.

⚠️ Troubleshooting: Ping Spikes with Virtual LAN (Radmin VPN)

If you or your friends experience high ping spikes in League of Legends while Radmin VPN is active, Windows might be temporarily prioritizing the virtual VPN adapter over your main internet connection. You can permanently fix this in 30 seconds:

  1. Press Win + R, type ncpa.cpl and press Enter to open Network Connections.
  2. Right-click the Radmin VPN adapter and select Properties.
  3. Double-click Internet Protocol Version 4 (TCP/IPv4), then click the Advanced... button at the bottom.
  4. At the bottom of the window, uncheck Automatic metric and set the Interface metric to 500.
  5. Click OK on all open windows to save.

Setting the metric to 500 ensures Windows always routes League of Legends traffic through your real home network, preventing any lag or routing conflicts.


ORIGINAL README:

🌹 Rose - Effortless Skin Changer for LoL

Rose Icon

Installer Ko-Fi Discord License Downloads


Overview

Rose is an open-source automatic skin changer for League of Legends that enables seamless access to all skins in the game. The application runs silently in the system tray and automatically detects skin selections during champion select, injecting the chosen skin when the game loads.

Built on the Pengu Loader framework, Rose integrates JavaScript extensions into the League Client to enable modular UI interactions. It strictly modifies local rendering variables to display custom models and textures. It is designed purely as an exploration of client-side asset management, providing no manipulation of network data, memory states, or gameplay mechanics, thereby offering zero competitive advantage.

Architecture

Rose consists of three main components:

Python Backend

  • LCU API Integration: Communicates with the League Client via the League Client Update (LCU) API
  • Skin Injection: Handles skin injection compatible with Riot Vanguard
  • WebSocket Bridge: Operates a WebSocket server for real-time communication with frontend plugins
  • Skin Management: Downloads and manages skin files from the LeagueSkins repository
  • Party Mode: Enables skin sharing between friends in the same lobby via a Cloudflare WebSocket relay
  • Game Monitoring: Tracks game state, champion select phases, and loadout countdowns
  • Auto-Updater: Checks GitHub for new releases and prompts users to install updates
  • Analytics: Sends a startup ping, a 15-minute presence heartbeat, and a best-effort close ping (configurable, runs in a background thread)

Analytics and privacy

Rose sends a pseudonymous, randomly generated installation ID and the app version to https://analytics.rosekeys.site/ when analytics are enabled. The ID is not derived from the Windows Machine GUID. Analytics can be disabled with ANALYTICS_ENABLED = False in config.py.

The analytics API and dashboard are maintained separately from this public client repository. Only aggregate usage metrics are exposed through the dashboard; raw activity and server credentials remain private.

Cloudflare Workers

  • rose-party-relay: Durable Object-backed WebSocket relay that manages party rooms (max 10 members per room) for real-time skin selection broadcasting between friends

Pengu Loader Plugins

Rose includes a suite of JavaScript plugins that extend the League Client UI:

  • ROSE-UI: Unlocks locked skin previews in champion select, enabling hover interactions on all skins
  • ROSE-SkinMonitor: Monitors currently selected skin's name and sends it to the Python backend via WebSocket
  • ROSE-CustomWheel: Displays custom mod metadata for hovered skins and exposes quick access to the mods folder
  • ROSE-ChromaWheel: Enhanced chroma selection interface for choosing any chroma variant
  • ROSE-FormsWheel: Custom form selection interface for skins with multiple forms (Elementalist Lux, Sahn Uzal Mordekaiser, Spirit Blossom Morgana, Radiant Sett)
  • ROSE-SettingsPanel: Settings panel accessible from the League of Legends Client
  • ROSE-RandomSkin: Random skin selection feature
  • ROSE-HistoricMode: Access to the last used skin for every champion
  • ROSE-PartyMode: Party mode UI — displays a panel in lobby and champion select to enable skin sharing, view connected peers, and see friends' skin selections in real time
  • ROSE-Jade: Client customization — regalia borders, backgrounds, banners, icons, titles, and win/loss stats

How It Works

  1. League Client Integration: Rose activates Pengu Loader on startup, which injects the JavaScript plugins into the League Client
  2. Skin Detection: When you hover over a skin in champion select, ROSE-SkinMonitor detects the selection and sends it to the Python backend
  3. Game Opening Delay: To make sure the injection has time to occur we suspend League of Legend's game process as long as the overlay is not ran
  4. Game Injection: Rose injects the selected skin when the game starts
  5. Seamless Experience: The skin loads as if you owned it, with full chroma support and no gameplay impact (Rose will never provide any competitive advantage to its users)

Features

  • Smart Injection: Never injects skins you already own
  • Multi-Language Support: Works with any client language
  • Open Source: Fully open source and extensible
  • Free: If you bought this software, you got scammed 💀

Requirements

  • Windows 10/11
  • League of Legends installed
  • Injection DLL - You must provide your own signed DLL (see below)

DLL Requirement

Due to DMCA restrictions, Rose cannot distribute the injection DLL file. You must obtain this file yourself from an authorized source and sign it with your own code signing certificate.

On first launch, Rose will prompt you to provide this file and open the folder where it should be placed.

Installation

  1. Download the latest installer from Releases
  2. Run the installer as Administrator
  3. Launch Rose from the Start Menu or desktop shortcut

Building from source

Rose builds the Pengu Loader executable from the vendored source in vendor/PenguLoader-1.1.6/ as part of the normal Rose build. You do not need to download or commit a prebuilt Pengu Loader.exe.

Prerequisites

  • Windows 10/11
  • Python 3.11 or newer
  • Visual Studio Build Tools with the .NET desktop build tools, WPF support, and the .NET Framework 4.7.2 targeting pack
  • Inno Setup 6 if you also want to create the installer

Clone the repository and enter its directory:

git clone https://github.com/Alban1911/Rose.git
cd Rose

Install the Python dependencies first:

python -m pip install -r requirements.txt

Build the loader by itself, if needed:

python scripts/build_pengu_loader.py

Build Rose and automatically rebuild the loader:

python scripts/build_pyinstaller.py

The packaged application is written to dist/Rose/. To build both Rose and the Windows installer in one step:

python scripts/build_all.py

The installer is written to installer/Rose_Setup.exe. Use scripts/build_pyinstaller.py or scripts/build_all.py instead of invoking pyinstaller Rose.spec directly, because the Rose build scripts compile Pengu Loader first.

Credits

Rose uses the official Pengu Loader project. Its source is vendored and built as part of Rose, with Rose-specific lifecycle integration added around the loader. Please see the official Pengu Loader license and credit the Pengu Loader contributors.

Contributing

See CONTRIBUTING.md for development setup and project structure.

Legal Disclaimer

This project is not endorsed by or affiliated with Riot Games. Riot Games and all related properties are trademarks or registered trademarks of Riot Games, Inc.

Custom skins are allowed under Riot's terms of service and are not detected. Do not discuss or advertise skin tools in game. Users proceed at their own risk.

Support

If you enjoy Rose and want to support its development:

ko-fi

Your support helps keep the project alive and motivates continued development!


Rose - League, unlocked.

About

League, unlocked. Fork with Favorite Skins & Chromas management and party mode fixed.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages