50 lines
2 KiB
Go
50 lines
2 KiB
Go
package entity
|
|
|
|
// Faction represents a team/contender in the sportsbook.
|
|
type Faction struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
Abbreviation string `json:"abbreviation"`
|
|
Type FactionType `json:"type"`
|
|
Homeworld string `json:"homeworld"`
|
|
ColorCode string `json:"colorCode"`
|
|
EmblemGlyph string `json:"emblemGlyph"`
|
|
BaseShieldStrength int `json:"baseShieldStrength"`
|
|
BaseAttackPower int `json:"baseAttackPower"`
|
|
BaseEvasion int `json:"baseEvasion"`
|
|
RivalryModifiers map[string]float64 `json:"rivalryModifiers"`
|
|
}
|
|
|
|
// FactionType defines the combat archetype.
|
|
type FactionType string
|
|
|
|
const (
|
|
FactionTypeAggressive FactionType = "aggressive"
|
|
FactionTypeDefensive FactionType = "defensive"
|
|
FactionTypeTactical FactionType = "tactical"
|
|
FactionTypeInfiltrator FactionType = "infiltrator"
|
|
FactionTypeSwarm FactionType = "swarm"
|
|
)
|
|
|
|
// FactionState represents a faction's live combat state within a match.
|
|
type FactionState struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
Abbreviation string `json:"abbreviation"`
|
|
Type FactionType `json:"type"`
|
|
Glyph string `json:"glyph"`
|
|
ColorCode string `json:"colorCode"`
|
|
ShieldCapacity float64 `json:"shieldCapacity"`
|
|
EffectiveAttack float64 `json:"effectiveAttack"`
|
|
EffectiveEvasion float64 `json:"effectiveEvasion"`
|
|
ActiveEffects []ActiveEffect `json:"activeEffects"`
|
|
}
|
|
|
|
// ActiveEffect represents a temporary buff/debuff on a faction.
|
|
type ActiveEffect struct {
|
|
Name string `json:"name"`
|
|
RemainingTicks int `json:"remainingTicks"`
|
|
Stat string `json:"stat"`
|
|
Operation string `json:"operation"`
|
|
Value float64 `json:"value"`
|
|
}
|