implement automatic damage scaling for raviente

This commit is contained in:
wish
2023-02-04 22:41:06 +11:00
parent bea4a8ad3a
commit 717a34b5b9
3 changed files with 30 additions and 34 deletions

View File

@@ -92,8 +92,7 @@ type RavienteRegister struct {
}
type RavienteState struct {
damageMultiplier uint32
stateData []uint32
stateData []uint32
}
type RavienteSupport struct {
@@ -111,9 +110,7 @@ func NewRaviente() *Raviente {
maxPlayers: 0,
carveQuest: 0,
}
ravienteState := &RavienteState{
damageMultiplier: 1,
}
ravienteState := &RavienteState{}
ravienteSupport := &RavienteSupport{}
ravienteRegister.register = []uint32{0, 0, 0, 0, 0}
ravienteState.stateData = []uint32{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
@@ -127,6 +124,23 @@ func NewRaviente() *Raviente {
return raviente
}
func (r *Raviente) GetRaviMultiplier(s *Server) uint32 {
raviSema := getRaviSemaphore(s)
if raviSema != nil {
var minPlayers uint32
if r.register.maxPlayers > 8 {
minPlayers = 24
} else {
minPlayers = 4
}
if uint32(len(raviSema.clients)) > minPlayers {
return 1
}
return minPlayers / uint32(len(raviSema.clients))
}
return 0
}
// NewServer creates a new Server type.
func NewServer(config *Config) *Server {
s := &Server{