# Trigger-RS

## Introduction
Trigger-RS is a set of servers implemented for the game Zenless Zone Zero.

![Screenshot](screenshot.png)

## Current status
Currently trigger-rs provides these features:
- **Player item management or the inventory**: characters, equipment and currency.
- **Quest management**. Work-in-progress: currently all the quests are unlocked and finished from the beginning and can be replayed using The Archive and Hollow Deep Dive System.
- **Basic battle support**. The server is able to run the combat commissions (including Rally) and the training room.
- **Overworld scene logic**. The server implements the interactions and their systems for overworld (for example: ramen shop, coffee shop and music player)
- **Version-agnostic protocol library**. The server code is not bound to the specific protocol version. Instead, gate-server maps them to standardized structures and uses custom format for internal communication and processing.
- **Server management through MUIP API**.

## Getting started
### Requirements
- [Rust 1.85+](https://www.rust-lang.org/tools/install)
- [PostgreSQL](https://www.postgresql.org/download/)
- [SDK server](https://git.xeondev.com/reversedrooms/hoyo-sdk)
##### NOTE: this server doesn't include the sdk server as it's not specific per game. You can use `hoyo-sdk` with this server.

### Setup
##### a) building from sources
```sh
git clone https://git.xeondev.com/ObolSquad/trigger-rs.git
cd trigger-rs
cargo run --bin trigger-dispatch-server
cargo run --bin trigger-gate-server
cargo run --bin trigger-game-server
cargo run --bin trigger-hall-server
cargo run --bin trigger-battle-server
cargo run --bin trigger-muip-server
```
##### b) using pre-built binaries
Navigate to the [Releases](https://git.xeondev.com/obolsquad/trigger-rs/releases) page and download the latest release for your platform.
Start each service in order from option `a)`.

### Configuration
Most of the configuration (database, encryption keys) is stored in a shared environment configuration file (`environment.toml`). Some of server-specific options are stored in their respective configuration files (which are created upon first startup of each server).

### Logging in
To login to this server, you have to obtain a compatible game client. Currently supported one is `OSPRODWin1.6.0`, you can get it from game launcher. Next, you have to apply the necessary [client patch](https://git.xeondev.com/ObolSquad/trigger-patch). It allows you to connect to the local server and replaces encryption keys with custom ones.

### Management
You can use the [trigger-muip-tool](https://git.xeondev.com/ObolSquad/trigger-muip-tool) to communicate with MUIP server and execute GM commands.

### Community
[Our Discord Server](https://discord.gg/reversedrooms) is open for everyone who's interested in our projects!

### Support
Your support for this project is greatly appreciated! If you'd like to contribute, feel free to send a tip [via Boosty](https://boosty.to/xeondev/donate)!
