Commit graph

26 commits

Author SHA1 Message Date
99ab5b239d Implement 'avatar add_all' command 2024-08-07 13:35:34 +03:00
84397a847e Implement proper Avatar and Buddy UnitID (Base/Robot), refactor template id
TemplateID::new now returns Result<T, TemplateNotFoundError>
Cleanup code in some of new handlers
2024-08-06 21:42:03 +03:00
28864ff1e4 Teleport Map & Switching Dynamic Wallpaper Support, Gacha optimization (#2)
## Abstract

This PR implements

- Showing Teleports on map
- Quick Menu usage
- Dynamic Wallpaper switching
- Settings UP for Bangboo pool (via CLI)

## Support list

- The support of Teleport with map.
- Unlocking the 3 buttons (Interknow, DMs, Map) as a prerequisite of the previous feature. By pressing 'F' you can also modify the buttons in Quick Menu.
- Changing Dynamic Wallpaper to a specific one instead of being randomly chosen. **Notice that you can't use one's Dynamic Wallpaper if you don't own this agent.**
- Fixed some Gacha bugs, including:
  - Obtained items won't be sent to your bag unless you're pulling the standard banner;
  - Obtained items won't show in bag until relogin;
- Alternative command `gacha up` to choose the UP Bangboo. Start with `gacha up [player_uid]` and follow the guide to fill params.

## Principle

- Player's `UnlockModelBin` stores Quick Menu data, with the player's chosen buttons and their positions.
- Separate Gacha's DTO & Saving model to make it more standardized, and ensure ID validation is always performed.
- Player's bag information is now sync to client appropriately after finishing any gacha operations.
- `gacha up` search for pools with a `chooseable` Category Guarantee Policy, then list included items if user has provided the target pool's `gacha_schedule_id`.

## Known issues

- **Specifically for 1.1 Beta**, teleport may meet these issues leading to a 'black screen', forcing you to restart the client (or use `player kick` command as an alternative).
  - Don't try to teleport to `治安局光映分署`, it won't succeed. This is the 32nd teleport out of the 31 ones defined visible in assets.
  - Don't close the page after opening map. Teleport to somewhere.
- `gacha up` command is an alternative to in-game operation. You still can not see any bangboos in the collection when choosing Bangboo.

Co-authored-by: YYHEggEgg <53960525+YYHEggEgg@users.noreply.github.com>
Reviewed-on: NewEriduPubSec/JaneDoe-ZS#2
Co-authored-by: YYHEggEgg <yyheggegg@xeondev.com>
Co-committed-by: YYHEggEgg <yyheggegg@xeondev.com>
2024-08-06 17:15:04 +00:00
356fc5278e server version: milestone 2 reached (0.2.0) 2024-08-05 17:59:18 +03:00
50f694add0 H.D.D. and Combat commissions implementation
Implement Combat commissions (PureHollowBattle and LongFight) (including Rally commissions)
Refactor some battle structures
Unlock hollow quests (QuestInfo and YorozuyaInfo)
2024-08-05 17:45:13 +03:00
f99165e452 chore: move new dependencies to workspace's Cargo.toml 2024-08-04 16:20:31 +03:00
8d1211750b chore: fix warnings 2024-08-04 15:46:43 +03:00
285fc0b6fa NewsStand interaction 2024-08-04 15:40:06 +03:00
55b7ed3beb Gacha System implementation
## Abstract

This PR implements

- The Gacha System for client. Player can pull in defined pools with a similar experience to zenless & mihoyo gacha, and these status can be saved through player save and recovered.
- `player kick` command in extra. Command `player kick [player_uid] (optional: [reason_id])` can be used to kick a player to offline.

## Support list

- Similar probability to mihoyo gacha
- QingYi & Jane Doe's Agent & W-Engine banner
- Standard Banner:
  - Get a S Agent in the first 50 pulls
  - Get a 20% discount for the first 5 10-pulls
  - Choose a S Agent once you pulled for 300
- ~~Bangboo Banner~~ (not working due to other reasons)
  - Choosing your demanded S bangboo for 100% UP

## Principle

- A complex configuration file `gacha.jsonc` is introduced to define all behaviours.
- Gacha status is saved via `GachaModelBin`.

For more informations about the config and save, an article is available [here](https://yyheggegg.github.io/mihomo-gio-blogs/zzz-gacha-impl-en/).

## Known issues

- You can not see any bangboos in the collection when choosing Bangboo.
- **Specifically for 1.1 Beta**, performing gacha may lead to random client issues, including:
  - The TVs showing rarity ending up in blank after its flash.
  - Game become black screen.
  - If clicking 'Skip' but not fast enough, game'll stuck and not able to do anything. You may try to click 'Skip' scarcely when 'REC' shows, or after all animations has stopped.

Co-authored-by: YYHEggEgg <53960525+YYHEggEgg@users.noreply.github.com>
Reviewed-on: NewEriduPubSec/JaneDoe-ZS#1
Co-authored-by: YYHEggEgg <yyheggegg@xeondev.com>
Co-committed-by: YYHEggEgg <yyheggegg@xeondev.com>
2024-08-04 11:41:23 +00:00
220fbc42f0 Implement bangboo for battles (works in archive quests) 2024-08-01 02:43:13 +03:00
7d7bd76ae8 Implement MainCityBgmConfigTemplate 2024-08-01 01:38:05 +03:00
26fe9551d4 MainCity BGM 2024-07-31 14:08:06 +03:00
970dde020a Working OpenUI interacts and Archive battles
Implement OpenUI interacts (currently configs only for Yorozuya and Archive)
Fully working Archive (battles and cutscenes)
2024-07-30 03:04:55 +03:00
2ccdf84dd0 SceneUnitManager: properly determine and spawn only default objects 2024-07-29 23:33:13 +03:00
fc121c7cba generated more configs for transitions 2024-07-27 00:27:23 +03:00
cbe169fe1a Implement event configs, more interactions work
Implement interact event-action configurations.
More interactions work now, for more transitions, we just need to generate more configs (soon)
NOTE: this commit BREAKS your nap_gameserver.toml. To fix it, you have to add 'event_config_path' property into [assets] section of your config.
2024-07-26 22:44:44 +03:00
c710716fa1 [WIP] event graph stuff
implementing EventGraph stuff, currently hardcoded interaction for 10000001 (street to workshop transition)
2024-07-25 22:39:59 +03:00
d196ef861a SceneUnitManager: create default scene units 2024-07-25 19:49:39 +03:00
d3cd213d27 use AvatarBaseID instead of raw integer in more places 2024-07-25 13:03:37 +03:00
a7da14c109 don't panic if readline lib fails to initialize
fixes startup crash on non-standard TTYs
2024-07-25 12:36:22 +03:00
99123a15ef newtype fun
use newtypes for template ids, pros:
1) enforces id validation
2) ease of use (helper method for getting template struct right away)
2024-07-25 01:24:48 +03:00
69634fda64 Implement weapons
Implement Weapon add, save, equip
Implement 'item add_weapon' command
2024-07-24 21:36:02 +03:00
370f141f88 more commands, unlock only default avatars at beginning
Implement 'avatar add' command
Implemented 'player procedure' command
2024-07-23 18:12:05 +03:00
4b86d62d3f Networking improvement and player nickname change console command
split TcpStream into read and write halves, so it's possible to recv and send concurrently
implement 'player nickname' command
2024-07-23 00:04:59 +03:00
9af61cd33f simple CLI command system
Implement CLI command system
command for changing player's frontend avatar
2024-07-22 19:47:04 +03:00
2de8ee290a Hi 2024-07-20 15:59:36 +03:00