You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
999 B
Go

package model
// AdventureLogEvent is persisted and sent over WebSocket.
// Code is a phrase key (dot-separated), e.g. log.defeated_enemy, roadside.silence_loading, town_visit.merchant.bell_traveler_pack.
// Args must be structured only: stable ids (enemyType, npcKey, questKey, achievementId), numbers, bools — no display sentences.
type AdventureLogEvent struct {
Code string `json:"code"`
Args map[string]any `json:"args,omitempty"`
}
// AdventureLogLine is written to the DB and sent over WebSocket.
// Message is legacy plain text only; new rows use Event with phrase key and empty Message.
type AdventureLogLine struct {
Message string `json:"message,omitempty"`
Event *AdventureLogEvent `json:"event,omitempty"`
}
// Wandering merchant (road encounter) — stable keys for other packages (NPC labels live in client i18n).
const (
WanderingMerchantNPCKey = "npc.wandering_merchant.v1"
WanderingMerchantDialogueKey = "npc.wandering_merchant.dialogue.v1"
)