scroll.server/crates/game-service/src/lib.rs
WiseDev 27f99ee898 match against a bot player instead of an npc
the decks were the visible half: LogicBattle carries one LogicSpellDeck
per player and we wrote both as absent, so the client cleared them and
the card bar came up empty. both sides get a real deck now - the player
from their profile, the bot from the fullest row of predefined_decks.

matchmaking no longer picks a row out of npcs.csv. it takes the location
from the arena's PvpLocation column and builds an opponent avatar with
its own name, arena and trophies, so the battle reads as a player match
rather than a trainer one. StartMissionMessage still goes through the
npc path unchanged.

the battle type stays 1 on purpose. LogicGameMode::isImmediateMessageExecution
is (type - 1) < 3, so 1, 2 and 3 let the client simulate locally while 0
makes it wait for the server to drive the sector - which needs the real
tick loop we do not have yet.
2026-08-23 11:28:17 +03:00

21 lines
655 B
Rust

pub mod battle;
pub mod bot;
pub mod catalog;
pub mod config;
pub mod home;
pub mod home_mode;
pub mod rewards;
pub mod service;
pub mod shop;
pub mod store;
pub mod time;
pub use battle::BattleBuilder;
pub use bot::BotPlayer;
pub use catalog::{Catalog, ARENA_FALLBACK_INSTANCE, GOLD_RESOURCE_FALLBACK_INSTANCE};
pub use config::{CardRef, DataSelector, GameConfig, StarterProfile};
pub use home::{build_avatar, build_deck, build_home};
pub use home_mode::{HomeMode, HomeModeRegistry, TurnResult};
pub use rewards::RewardRoller;
pub use service::GameService;
pub use shop::{ShopCatalog, ShopEntry, ShopOffer};
pub use store::{PlayerProfile, ProfileStore};