brawl-stars-brawler-maker 1.0.8
A package to mod Brawl Stars game files for custom brawler creation.
Requires Python: >=3.7

### Brawl Stars Brawler Maker: Unleash Your Creativity

**Brawl Stars Brawler Maker** is an innovative Python package designed to empower the Brawl Stars community with the ability to create custom brawlers and integrate them into the game. This package provides an extensive toolkit for modders of all skill levels, from beginners to experienced developers, to modify game files and bring their unique brawler concepts to life. Whether you're looking to introduce a new character with special abilities or tweak existing ones, Brawl Stars Brawler Maker offers a user-friendly and comprehensive platform to make your vision a reality.

#### Key Features:

- **Custom Brawler Creation:** Easily define brawler characteristics such as name, description, health points (HP), speed, attack and super abilities, including range, reload time, damage, and much more.
- **Intuitive Modding Process:** Modify game files to add your custom brawlers without the hassle of navigating through complex file structures. The toolkit handles the intricacies, allowing you to focus on creativity.
- **APK Export and Signing:** Generate and export your modded version of the game as an APK file, ready for installation on Android devices. Optional APK signing is available for a seamless installation experience.
- **Support for Customization:** With additional resources like predefined projectile types, rarities, and speed constants, the toolkit caters to both novice and seasoned modders, providing essential elements to customize your brawler to the fullest.

#### Getting Started:

The Brawl Stars Brawler Maker is straightforward to use. To create your custom brawler, you simply need to instantiate a `Brawler` object with your desired parameters, such as brawler name, stats, abilities, and appearance. Then, use the `generate_files` method to modify the necessary game files and `export_csv_logic_to_apk` to compile and export your modded game.

Here's a quick example to get you started:

```python
from brawl_stars_brawler_maker import brawler_maker

brawler = brawler_maker.Brawler(
    brawlername="FrostByte",
    description="A cybernetic warrior with ice-infused cybernetics, capable of manipulating ice and cold.",
    hp=4800,
    speed=770,
    icon="nita",
    rarity="epic",
    attack_name="Ice Shard Barrage",
    attack_description="Launches a volley of sharp ice shards, piercing through enemies.",
    reloadtime=1600,
    ammonumber=3,
    range=26,
    numberofprojectiles=1,
    spread=0,
    damage=500,
    projectile="MummyProjectile",
    ulti_name="Blizzard Dome",
    ulti_description="Creates a dome of blizzard, slowing and damaging enemies, while boosting her speed.",
    ulti_spread=80,
    ulti_range=20,
    ulti_numberofprojectiles=1,
    ulti_damage=200,
    ulti_projectile="CactusUltiProjectile"
)

brawler.generate_files()
brawler.export_csv_logic_to_apk()
```

This example showcases how to create a brawler named FrostByte, complete with custom abilities and characteristics, then integrate it into the game.

#### Documentation and Support:

The Brawl Stars Brawler Maker package includes additional resources such as `projectiles.py`, `rarities.py`, and `speeds.py` to assist less experienced modders with predefined constants. These files are entirely optional but can simplify the process of setting up brawler attributes.

For a detailed understanding of all the features and functionalities offered by Brawl Stars Brawler Maker, including how to use the additional resources and customize your brawler further, please refer to the comprehensive documentation provided within the package.

Whether you're a seasoned modder looking to push the boundaries of Brawl Stars or a newcomer eager to create your first custom brawler, Brawl Stars Brawler Maker is your go-to toolkit. Unleash your creativity and transform the way you play Brawl Stars today!

## Brawl Stars Brawler Maker: Code Documentation

The Brawl Stars Brawler Maker library provides a comprehensive suite of tools designed for modding the game Brawl Stars, allowing users to create custom brawlers with unique characteristics and abilities. This documentation covers the core functionalities, including class definitions, methods, and usage examples to guide both novice and advanced modders through the process of creating and exporting custom brawlers.

### Core Class: `Brawler`

The `Brawler` class is the centerpiece of the Brawl Stars Brawler Maker package, encapsulating all the properties and methods needed to define a custom brawler and modify the game files accordingly.

#### Constructor: `__init__(self, brawlername, description, rarity, attack_name, attack_description, ulti_name, ulti_description, speed, hp, icon, range, reloadtime, ammonumber, damage, spread, numberofprojectiles, projectile, ulti_projectile, ulti_damage, ulti_spread, ulti_numberofprojectiles, ulti_range)`

- **Parameters:**
  - `brawlername`: String. The name of the brawler.
  - `description`: String. A short description of the brawler.
  - `rarity`: String. The rarity level of the brawler. Must be one of the predefined rarity levels.
  - `attack_name`: String. The name of the brawler's main attack.
  - `attack_description`: String. Description of the main attack.
  - `ulti_name`: String. The name of the brawler's ultimate ability.
  - `ulti_description`: String. Description of the ultimate ability.
  - `speed`: Integer. The movement speed of the brawler.
  - `hp`: Integer. The hit points (health) of the brawler.
  - `icon`: String. The name of the icon used for the brawler, must be one of the predefined brawler names.
  - `range`: Integer. The range of the main attack.
  - `reloadtime`: Integer. The reload time of the main attack.
  - `ammonumber`: Integer. The ammo number for the main attack.
  - `damage`: Integer. The damage dealt by the main attack.
  - `spread`: Integer. The spread of the main attack projectiles.
  - `numberofprojectiles`: Integer. The number of projectiles fired in the main attack.
  - `projectile`: String. The projectile type for the main attack.
  - `ulti_projectile`: String. The projectile type for the ultimate ability.
  - `ulti_damage`: Integer. The damage dealt by the ultimate ability.
  - `ulti_spread`: Integer. The spread of the ultimate ability projectiles.
  - `ulti_numberofprojectiles`: Integer. The number of projectiles for the ultimate ability.
  - `ulti_range`: Integer. The range of the ultimate ability.

- **Functionality:** Initializes a new `Brawler` instance with specified attributes. Validates the provided attributes against predefined criteria and constraints.

#### Method: `generate_files(self, csv_logic_folder_path, localization_folder_path, directly_modify=False, warning=True, debug=True)`

- **Purpose:** Modifies the game's CSV files to include the custom brawler's data.
- **Parameters (all optional):**
  - `csv_logic_folder_path`: String. Path to the game's `csv_logic` folder.
  - `localization_folder_path`: String. Path to the game's `localization` folder.
  - `directly_modify`: Boolean. If `True`, modifies the CSV files directly. If `False`, duplicates the folders before modification.
  - `warning`: Boolean. If `True` and `directly_modify` is `True`, displays a warning message before proceeding when modifying the original files.
  - `debug`: Boolean. If `True`, prints debug messages during the operation.
- **Functionality:** Adds the custom brawler's data to the game's `texts.csv`, `cards.csv`, `characters.csv`, `skins.csv`, `skin_confs.csv`, and `skills.csv` files, either by directly modifying the original files or by working on duplicates.

#### Static Method: `export_csv_logic_to_apk(csv_logic_folder_path=None, localization_folder_path=None, destination_folder=None, apk_mega_link="...", existing_apk_path=None, sign=False, debug=True)`

- **Purpose:** Compiles the modified game files into an APK, ready for installation.
- **Parameters (all optional):**
  - `csv_logic_folder_path`: String. Path to the modified `csv_logic` folder.
  - `localization_folder_path`: String. Path to the modified `localization` folder.
  - `destination_folder`: String. Path where the APK should be saved.
  - `apk_mega_link`: String. Custom Mega.nz link to the base APK if not using the default.
  - `existing_apk_path`: String. Path to an existing base APK to be modified.
  - `sign`: Boolean. Whether to sign the APK. Requires Java to be installed.
  - `debug`: Boolean. If `True`, prints debug messages during the operation.
- **Functionality:** Downloads the base APK if necessary, integrates the modified game files, and exports the result as an APK file. Optionally signs the APK for installation.

### Additional Resources

The package includes three optional resources to aid less experienced modders: `projectiles.py`, `rarities.py`, and `speeds.py`. These modules provide convenient constants for common game elements like projectile types, brawler rarities, and movement speeds, simplifying the process of setting up custom brawler attributes.

- **`projectiles.py`**: Contains predefined projectile type constants.
- **`rarities.py`**: Lists available rarity levels for brawlers.
- **`speeds.py`**: Offers predefined constants for brawler speeds.

### Example Usage

```python
from brawl_stars_brawler_maker import brawler_maker

# Define a new custom brawler
brawler = brawler_maker.Brawler(
    brawlername="ExampleBrawler",
    description="This is an example custom brawler.",
    rarity="epic",
    attack_name="Example Attack",
    # Additional parameters omitted for brevity...
)

# Generate game files for the custom brawler
brawler.generate_files()

# Export the modified game as an APK
brawler.export_csv_logic_to_apk()
```

This documentation provides an overview of the Brawl Stars Brawler Maker package's capabilities. By following the guidelines and examples provided, modders can create and share their unique brawlers within the Brawl Stars community, enhancing the game experience for themselves and others.


### Note (English) :
**English Version:**

Hello there ! If you're interested in this project or any of my other projects, please read this message :

I'm here to invite you to AngelFire's Stuff, my personal Discord server. Here I will share all kinds of projects I'm working on, may it be programming, statistics (I love numbers, graphs, sheets, etc.), and some writing projects (so get ready to read !). If you enjoy devlogs or just following how projects develop, you'll find plenty to explore here. You can choose which topics interest you and pick roles to receive notifications or access channelsâ€”nothing is forced upon you !

Our community is bilingual, welcoming both English and French speakers. I do my best to post every important message in both languages, though sometimes there might be a slight delay. Even if my projects don't catch your interest, you're more than welcome to share your own work, get feedback, or just chat with others who share your passions, the goal is to bring together people who share the same passions !

In the server, you'll find many categories like important information, general chatting, and specific categories for code, stats, and writing projects. There are also channels for introducing yourself, sharing your own projects, suggesting new ideas for the server and for me to post personal updates. It's a discord for mature and chill individuals who enjoy similar interests, in the goal of making a united and friendly community.

Looking forward to seeing you there, even if it's just to take a quick look !

https://discord.gg/pzd7dJS72t

---

### Note (FranÃ§ais)
Salut toi ! Si tu es intÃ©ressÃ© par ce projet ou n'importe quel autre de mes projets, je te conseille de lire ce message :

Je suis ravi de t'inviter dans AngelFire's Stuff, mon serveur Discord personnel. Ici, je partage tout type de projets sur lesquels je travailleâ€”programmation, statistiques (j'adore les chiffres, les graphiques, les tableaux, etc.), et des projets d'Ã©criture (alors prÃ©pare-toi Ã  bien lire !). Si tu aimes les devlogs, ou juste suivre comment les projets Ã©voluent, tu trouveras plein de choses Ã  explorer ici. Tu peux choisir les sujets qui t'intÃ©ressent et sÃ©lectionner les rÃ´les pour recevoir des notifications ou accÃ©der Ã  certains salonsâ€”rien n'est forcÃ© !

Cette communautÃ© est bilingue, accueillant Ã  la fois les anglophones et les francophones. Je fais de mon mieux pour publier les messages importants dans les deux langues, mÃªme si parfois il peut y avoir un peu de dÃ©lai ou des mots laissÃ©s en anglais lorsqu'ils sont transparents. Et mÃªme si mes projets ne t'intÃ©ressent pas, tu es plus que bienvenu de partager tes propres projets, obtenir des retours ou simplement discuter avec d'autres passionnÃ©s comme toi. Le but est de rassembler des personnes ayant des intÃ©rÃªts similaires !

Sur le serveur, tu trouveras des catÃ©gories pour des informations importantes, des discussions gÃ©nÃ©rales, et des catÃ©gories spÃ©cifiques pour les projets de programmation, de stats, et d'Ã©criture. Il y a aussi des salons pour te prÃ©senter, partager tes propres projets, suggÃ©rer de nouvelles idÃ©es pour le serveur et suivre des actualitÃ©s sur ma vie. C'est un discord pour des personnes chills et matures qui ont des intÃ©rÃªts similaires, dans le but de faire une communautÃ© unie et conviviale.

Au plaisir de te voir bientÃ´t !

https://discord.gg/pzd7dJS72t