package entity

// EventCategory classifies the type of random event.
type EventCategory string

const (
	EventCategoryCombat        EventCategory = "combat"
	EventCategoryEnvironmental EventCategory = "environmental"
	EventCategoryFaction       EventCategory = "faction"
	EventCategoryMarket        EventCategory = "market"
)

// EventSeverity indicates the impact level.
type EventSeverity string

const (
	EventSeverityMinor    EventSeverity = "minor"
	EventSeverityMajor    EventSeverity = "major"
	EventSeverityCritical EventSeverity = "critical"
)

// MatchEvent represents something that happened during a match.
type MatchEvent struct {
	ID          string        `json:"id"`
	TemplateID  string        `json:"templateId"`
	Name        string        `json:"name"`
	Description string        `json:"description"`
	Tick        int           `json:"tick"`
	Category    EventCategory `json:"category"`
	Severity    EventSeverity `json:"severity"`
	Effects     []EventEffect `json:"effects"`
	Duration    int           `json:"duration"`
}

// EventEffect describes a single modification caused by an event.
type EventEffect struct {
	Target    string  `json:"target"`
	Stat      string  `json:"stat"`
	Operation string  `json:"operation"`
	Value     float64 `json:"value"`
}
