AI prompts
base on Palworld Pal Editor, the tool for Adding, Deleting, and Modifying Pals (and unlocking Viewing Cage for multiplayer) for Palworld Game Save, supports running on Docker, GUI, WebUI, and Cli. # Palworld Pal Editor
<h3 align="center">
<strong>English</strong> | <a href="/README.cn.md">简体中文</a>
</h3>
<p align='center'>
<a href="https://github.com/KrisCris/Palworld-Pal-Editor"><img alt="GitHub Repo Stars" src="https://img.shields.io/github/stars/KrisCris/Palworld-Pal-Editor?style=for-the-badge"></a>
<a href="https://github.com/KrisCris/Palworld-Pal-Editor/releases/latest"><img alt="GitHub Release" src="https://img.shields.io/github/v/release/kriscris/palworld-pal-editor?display_name=tag&style=for-the-badge"></a>
<a href="https://github.com/KrisCris/Palworld-Pal-Editor/releases/latest"><img alt="GitHub Repo Downloads" src="https://img.shields.io/github/downloads/KrisCris/Palworld-Pal-Editor/total?style=for-the-badge"></a>
</p>
<p align='center'>
<img alt="Python" src="https://img.shields.io/badge/Python-FFD43B?style=for-the-badge&logo=python&logoColor=blue">
<a href="https://pypi.org/project/palworld-pal-editor/"><img alt="PyPI - Version" src="https://img.shields.io/pypi/v/palworld-pal-editor?style=for-the-badge"></a>
<a href="https://pypi.org/project/palworld-pal-editor/"><img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dd/palworld-pal-editor?style=for-the-badge&label=PYPI%20DOWNLOADS"></a>
</p>
<p align='center'>
<a href="https://discord.gg/FnuA95nMJ8"><img alt="Discord Server" src="https://dcbadge.vercel.app/api/server/FnuA95nMJ8"></a>
</p>
<a href="https://github.com/KrisCris/Palworld-Pal-Editor/stargazers"><img width="720" alt="Star History Chart" src="https://api.star-history.com/svg?repos=KrisCris/Palworld-Pal-Editor&type=Date"></a>
## Supported Language
- **English** | **日本語** | **简体中文**
> [!NOTE]
> If the UI isn't in your language, that means the UI I18n is missing. Your contribution is always welcomed!
>
> But don't worry, all Pals and Skills are translated for the supported languages.
>
> At the end of the day, you can always use Chrome translation, if you are running it in web mode. ***(You don't need to worry about translation messing up the data we write to the save, we are not using plain text.)***
## What is this?
### A Palworld Pal Editor developed by _connlost with ❤️
~~(yeah i am just too lazy to change github username)~~
<https://youtu.be/v9U60jj5Ugw>
> [!NOTE]
> Steam Palworld Local Save Dir: `%localappdata%\Pal\Saved\SaveGames`
>
> Your Game Save Dir: `%localappdata%\Pal\Saved\SaveGames\[Your Steam ID]\[Your GameSave ID]`
>
> **This tool currently only supports the Steam version of Palworld, if you are playing the Xbox Game Pass version, you can look into these two tools for save format conversion:**
>
> - [XGP-save-extractor (XGP -> Steam)](https://github.com/windwq/XGP-save-extractor)
> - [Palworld XGP Save Importer (Steam -> XGP)](https://github.com/HarukaMa/palworld-xgp-import)
>
> Meanwhile, you are welcomed to submit a xbox game save, so that I can look into.
> [!IMPORTANT]
> ***Always backup your save in case corruption happens. (The tool does backup files for you.)***
>
> ***[LET ME KNOW](https://github.com/KrisCris/Palworld-Pal-Editor/issues) IF ANY BUG PRESENTS.***
<img width="720" alt="Screenshot" src="https://github.com/KrisCris/Palworld-Pal-Editor/assets/38860226/51a9c262-a71a-4008-b2a3-f4a68e78046a">
---
- [Palworld Pal Editor](#palworld-pal-editor)
- [Supported Language](#supported-language)
- [What is this?](#what-is-this)
- [A Palworld Pal Editor developed by \_connlost with ❤️](#a-palworld-pal-editor-developed-by-_connlost-with-️)
- [What This Tool Can Do](#what-this-tool-can-do)
- [Usage](#usage)
- [Option A. Use Pre-Built Binary](#option-a-use-pre-built-binary)
- [Option B. Install via pip](#option-b-install-via-pip)
- [Option C. Docker Container](#option-c-docker-container)
- [If you want to manually build it](#if-you-want-to-manually-build-it)
- [Option D. Directly Run the Code](#option-d-directly-run-the-code)
- [Optional Command-line Args](#optional-command-line-args)
- [Config File](#config-file)
- [Videos](#videos)
- [Possible Roadmap? (NO ETA)](#possible-roadmap-no-eta)
- [Contribution](#contribution)
- [Sponsor](#sponsor)
- [Thanks](#thanks)
- [Why?](#why)
---
## What This Tool Can Do
- [x] Spawn Pal
- [x] Duplicate Pal
- [x] Delete Pal
- [x] Show / Hide pals that are not in player pal containers (e.g. Pals in viewing cage, (or taken away by other players, prior Palworld v0.1.5))
- [x] Show (so you can delete them) / hide pals that are not displayed in game (Ghost Pals).
- [x] Unlock Viewing Cage for Selected player (multiplayer server)
- [x] List Players and Pals
- [x] Inspect Pal Stats
- [x] Change Pal Gender
- [x] Toggle BOSS / Rare / Tower
- [x] Change Pal NickName
- [x] Add / Remove Pal Learned Attacks
- [x] Add / Remove Pal Equipped Attacks
- [x] Change Pal Level / Exp
- [x] Change Pal Condenser Level
- [x] Change Pal Soul Levels
- [x] Change CharacterID (Pal Species)
- [x] Change Pal Passive Skills
- [x] Change Pal IV
- [x] ~~Calculate MaxHP~~ (MaxHP no longer stored in game save.)
- [x] Remove Pal Sicks
- [x] Revive Pals
- [x] Edit Food Buff Timer (Only if the pal has food buff, and cli only)
## Usage
> [!NOTE]
> You can always run the editor in a modern web browser, in case the GUI isn't working properly for you.
>
> Alternatively you can find the version that uses Chromium [here](https://github.com/KrisCris/Palworld-Pal-Editor/actions?query=branch%3AQWebEngineView), which should hopefully fix all the GUI issues.
### Option A. Use Pre-Built Binary
***Just run the executable, you don't need to install Python.***
- Stable Version:
- [Github Release](https://github.com/KrisCris/Palworld-Pal-Editor/releases)
- [Nexusmods](https://www.nexusmods.com/palworld/mods/995)
- Nightly Builds:
- [Github Actions Artifacts](https://github.com/KrisCris/Palworld-Pal-Editor/actions)
### Option B. Install via pip
1. Make sure you have Python 3.11+
2. `pip install --upgrade palworld-pal-editor`
3. `python -m palworld_pal_editor`
### Option C. Docker Container
1. Download the compose file: `./docker/sample-docker-compose.yml`.
2. Rename it to `docker-compose.yml`, then configure it properly.
3. Run `docker compose up -d`.
#### If you want to manually build it
1. Clone the code.
2. Copy `./docker/sample-docker-compose.yml` to `./docker/docker-compose.yml`, then do necessary modifications.
3. Run `./build_and_run_docker.sh`, or just manually run the commands if you are using Windows.
### Option D. Directly Run the Code
1. Install Python 3.11+ and node.js.
2. Clone / Download the code
3. In the project directory, run `setup_and_run.ps1` for Windows Powershell, or `setup_and_run.sh` on Unix-like OS.
4. In `cli` mode, You can change language by calling `lang($LANG_CODE)`.
### Optional Command-line Args
```text
options:
-h, --help show this help message and exit
--lang LANG Language for the application. options: en, zh-CN, ja
--path PATH Path to the save folder.
--mode MODE Running Mode, options: cli, gui, web
--port PORT Port used for WebUI mode.
--password PASSWORD Password for WebUI.
```
### Config File
> [!NOTE]
>
> 1. There is no need for you to manually modify the config file.
> 2. Command line arguments override config, and will be saved.
Default:
```json
// config.json
{
"i18n": "en",
"mode": "web",
"port": 58080,
"path": null,
"password": null,
"JWT_SECRET_KEY": "X2Nvbm5sb3N0"
}
```
Custom:
```json
// config.json
{
"i18n": "zh-CN",
"mode": "gui",
"port": 12345,
"path": "/path/to/save/folder",
"password": "YOUR PASSWORD FOR WEBUI AUTH",
"JWT_SECRET_KEY": "JUST SOME RANDOM TEXTS"
}
```
## Videos
> [!IMPORTANT]
> These videos show you how to run the code. If you are using the pre-built executable, you can skip these part.
- DOCKER
https://github.com/KrisCris/Palworld-Pal-Editor/assets/38860226/d7008b22-a2ff-4a2c-8903-32bab0922b32
- GUI / WEB
https://github.com/KrisCris/Palworld-Pal-Editor/assets/38860226/66f3cb1e-f1fc-401e-b8a1-987ac3e6b02d
- CLI: (old, but you get the idea)
https://github.com/KrisCris/Palworld-Pal-Editor/assets/38860226/02284dda-f1d7-40af-b12d-6b4ae11d4113
## Possible Roadmap? (NO ETA)
- [ ] Improve WebUI (I am bad at frontend dev, sorry! Contribution appreciated.)
- [ ] Real GUI, or maybe just a Terminal GUI using [Textual](https://textualize.io/).
- [ ] Move Pal to Different Slots? Change owner? IDK...
- [ ] More Stuff...
## Contribution
1. If you found a bug, or are looking for a feature, please check [Issues](https://github.com/KrisCris/Palworld-Pal-Editor/issues) first.
2. If you want to contribute code, please check out the latest branch.
3. Open a PR so everyone knows what you are working on.
## Sponsor
[ko-fi ❤️](https://ko-fi.com/connlost)
## Thanks
- [Take-Me1010](https://github.com/Take-Me1010) for Japanese translation.
---
- Fast game save loading code by [MagicBear](https://github.com/magicbear).
- Save conversion between GVAS and `.sav` by [palworld-save-tools](https://github.com/cheahjs/palworld-save-tools).
- Inspired by [MagicBear](https://github.com/magicbear)'s awesome [Palworld-Server-Toolkit](https://github.com/magicbear/palworld-server-toolkit).
- Inspired by [EternalWraith](https://github.com/EternalWraith)'s [PalEdit](https://github.com/EternalWraith/PalEdit).
## Why?
1. I made the tool for my friends who spent time playing this game with me ❤.
2. For practicing my 2-year untouched Python skills.
3. Fun, I am just too boring these days.
4. This guy had a really bad time fixing both his corrupted game save, and bugs of a similar tool.
", Assign "at most 3 tags" to the expected json: {"id":"9152","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"