Documentation
¶
Index ¶
- func AlignmentChange(killerAlignment int8, killedAlignment int8) int
- func ChanceToTame(s *users.UserRecord, t *mobs.Mob) int
- func ClearRegistry()
- func Crits(sourceChar characters.Character, targetChar characters.Character) bool
- func GetActiveCombatSystemName() string
- func Hits(attackSpd, defendSpd, hitModifier int) bool
- func InitializeRegistry()
- func ListCombatSystems() []string
- func PowerRanking(atkChar characters.Character, defChar characters.Character) float64
- func RegisterCombatSystem(name string, system ICombatSystem) error
- func SetActiveCombatSystem(name string) error
- func ShutdownCombatSystem() error
- type AttackResult
- func AttackMobVsMob(mobAtk *mobs.Mob, mobDef *mobs.Mob) AttackResult
- func AttackMobVsPlayer(mob *mobs.Mob, user *users.UserRecord) AttackResult
- func AttackPlayerVsMob(user *users.UserRecord, mob *mobs.Mob) AttackResult
- func AttackPlayerVsPlayer(userAtk *users.UserRecord, userDef *users.UserRecord) AttackResult
- func GetWaitMessages(stepType items.Intensity, sourceChar *characters.Character, ...) AttackResult
- type BaseTimer
- type CombatAction
- type CombatState
- type ICombatCalculator
- type ICombatSystem
- type ICombatTimer
- type PlayerTracker
- type SourceTarget
- type SwitchCombatSystemEvent
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AlignmentChange ¶
func ChanceToTame ¶
func ChanceToTame(s *users.UserRecord, t *mobs.Mob) int
func ClearRegistry ¶
func ClearRegistry()
ClearRegistry removes all registered combat systems (for testing)
func Crits ¶
func Crits(sourceChar characters.Character, targetChar characters.Character) bool
Whether they crit
func GetActiveCombatSystemName ¶
func GetActiveCombatSystemName() string
GetActiveCombatSystemName returns the name of the currently active combat system
func InitializeRegistry ¶
func InitializeRegistry()
InitializeRegistry sets up the combat registry event handlers
func ListCombatSystems ¶
func ListCombatSystems() []string
ListCombatSystems returns all registered combat system names
func PowerRanking ¶
func PowerRanking(atkChar characters.Character, defChar characters.Character) float64
PowerRanking delegates to the active combat system's calculator or uses default
func RegisterCombatSystem ¶
func RegisterCombatSystem(name string, system ICombatSystem) error
RegisterCombatSystem registers a combat system implementation
func SetActiveCombatSystem ¶
SetActiveCombatSystem sets the active combat system
func ShutdownCombatSystem ¶
func ShutdownCombatSystem() error
ShutdownCombatSystem shuts down the active combat system
Types ¶
type AttackResult ¶
type AttackResult struct {
Hit bool // defaults false
Crit bool // defaults false
BuffSource []int // defaults 0
BuffTarget []int // defaults 0
DamageToTarget int // defaults 0
DamageToTargetReduction int // defaults 0
DamageToSource int // defaults 0
DamageToSourceReduction int // defaults 0
MessagesToSource []string
MessagesToTarget []string
MessagesToSourceRoom []string
MessagesToTargetRoom []string
MessagesToRoomOld []string
}
func AttackMobVsMob ¶
func AttackMobVsMob(mobAtk *mobs.Mob, mobDef *mobs.Mob) AttackResult
AttackMobVsMob delegates to the active combat system
func AttackMobVsPlayer ¶
func AttackMobVsPlayer(mob *mobs.Mob, user *users.UserRecord) AttackResult
AttackMobVsPlayer delegates to the active combat system
func AttackPlayerVsMob ¶
func AttackPlayerVsMob(user *users.UserRecord, mob *mobs.Mob) AttackResult
AttackPlayerVsMob delegates to the active combat system
func AttackPlayerVsPlayer ¶
func AttackPlayerVsPlayer(userAtk *users.UserRecord, userDef *users.UserRecord) AttackResult
AttackPlayerVsPlayer delegates to the active combat system
func GetWaitMessages ¶
func GetWaitMessages(stepType items.Intensity, sourceChar *characters.Character, targetChar *characters.Character, sourceType SourceTarget, targetType SourceTarget) AttackResult
func (*AttackResult) SendToRoomOld ¶
func (a *AttackResult) SendToRoomOld(msg string)
func (*AttackResult) SendToSource ¶
func (a *AttackResult) SendToSource(msg string)
func (*AttackResult) SendToSourceRoom ¶
func (a *AttackResult) SendToSourceRoom(msg string)
func (*AttackResult) SendToTarget ¶
func (a *AttackResult) SendToTarget(msg string)
func (*AttackResult) SendToTargetRoom ¶
func (a *AttackResult) SendToTargetRoom(msg string)
type BaseTimer ¶
type BaseTimer struct {
// contains filtered or unexported fields
}
BaseTimer provides common timer functionality for combat systems
func NewBaseTimer ¶
NewBaseTimer creates a new base timer
type CombatAction ¶
type CombatAction struct {
AttackerId int
AttackerType SourceTarget
DefenderId int
DefenderType SourceTarget
ActionType characters.AggroType
SpellId int
ExitName string
Timestamp time.Time
}
CombatAction represents a queued combat action
type CombatState ¶
type CombatState struct {
UserId int
Aggro *characters.Aggro
}
CombatState holds saved combat state for a user
type ICombatCalculator ¶
type ICombatCalculator interface {
// CalculateHitChance determines if an attack hits
CalculateHitChance(attacker, defender *characters.Character) bool
// CalculateDamage computes damage for an attack
CalculateDamage(attacker, defender *characters.Character, weapon *items.Item) int
// CalculateCriticalChance determines if an attack is critical
CalculateCriticalChance(attacker, defender *characters.Character) bool
// CalculateDefense computes defensive value
CalculateDefense(defender *characters.Character) int
// CalculateInitiative determines action order
CalculateInitiative(actor *characters.Character) int
// CalculateAttackCount determines number of attacks per round
CalculateAttackCount(attacker, defender *characters.Character) int
// PowerRanking calculates relative power between actors
PowerRanking(attacker, defender *characters.Character) float64
}
ICombatCalculator defines combat calculation methods
type ICombatSystem ¶
type ICombatSystem interface {
// Initialize sets up the combat system
Initialize() error
// Shutdown cleanly shuts down the combat system
Shutdown() error
// GetName returns the name of this combat system
GetName() string
// ProcessCombatRound handles combat for all actors (called by round system)
ProcessCombatRound()
// GetCalculator returns the combat calculator
GetCalculator() ICombatCalculator
// GetTimer returns the combat timer (may be nil for round-based combat)
GetTimer() ICombatTimer
}
ICombatSystem defines the interface for modular combat implementations
func GetActiveCombatSystem ¶
func GetActiveCombatSystem() ICombatSystem
GetActiveCombatSystem returns the currently active combat system
func GetCombatSystem ¶
func GetCombatSystem(name string) (ICombatSystem, error)
GetCombatSystem returns a registered combat system by name
type ICombatTimer ¶
type ICombatTimer interface {
// Start begins the timer system
Start() error
// Stop halts the timer system
Stop() error
}
ICombatTimer defines minimal timing system interface for combat
type PlayerTracker ¶
type PlayerTracker struct {
// contains filtered or unexported fields
}
PlayerTracker provides common player tracking functionality
func NewPlayerTracker ¶
func NewPlayerTracker() *PlayerTracker
NewPlayerTracker creates a new player tracker
func (*PlayerTracker) AddPlayer ¶
func (pt *PlayerTracker) AddPlayer(userId int)
AddPlayer adds a player to tracking
func (*PlayerTracker) GetTrackedPlayers ¶
func (pt *PlayerTracker) GetTrackedPlayers() []int
GetTrackedPlayers returns a copy of tracked player IDs
func (*PlayerTracker) IsPlayerTracked ¶
func (pt *PlayerTracker) IsPlayerTracked(userId int) bool
IsPlayerTracked checks if a player is being tracked
func (*PlayerTracker) RemovePlayer ¶
func (pt *PlayerTracker) RemovePlayer(userId int)
RemovePlayer removes a player from tracking
type SourceTarget ¶
type SourceTarget string
const ( User SourceTarget = "user" Mob SourceTarget = "mob" )
type SwitchCombatSystemEvent ¶
type SwitchCombatSystemEvent struct {
NewSystem string
OldSystem string
RequestingUser int
SavedStates []CombatState
SavedMobStates map[int]*characters.Aggro
}
SwitchCombatSystemEvent is triggered when a combat system switch is requested
func (SwitchCombatSystemEvent) Type ¶
func (e SwitchCombatSystemEvent) Type() string
Type returns the event type