mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-15 08:25:09 +01:00
stage and semaphore overhaul casting handling
This commit is contained in:
@@ -20,10 +20,10 @@ const (
|
|||||||
|
|
||||||
// MSG_SYS_CAST[ED]_BINARY broadcast types enum
|
// MSG_SYS_CAST[ED]_BINARY broadcast types enum
|
||||||
const (
|
const (
|
||||||
BroadcastTypeTargeted = 0x01
|
BroadcastTypeTargeted = 0x01
|
||||||
BroadcastTypeStage = 0x03
|
BroadcastTypeStage = 0x03
|
||||||
BroadcastTypeRavi = 0x06
|
BroadcastTypeSemaphore = 0x06
|
||||||
BroadcastTypeWorld = 0x0a
|
BroadcastTypeWorld = 0x0a
|
||||||
)
|
)
|
||||||
|
|
||||||
func sendServerChatMessage(s *Session, message string) {
|
func sendServerChatMessage(s *Session, message string) {
|
||||||
@@ -93,10 +93,24 @@ func handleMsgSysCastBinary(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
s.server.BroadcastMHF(resp, s)
|
s.server.BroadcastMHF(resp, s)
|
||||||
case BroadcastTypeStage:
|
case BroadcastTypeStage:
|
||||||
s.stage.BroadcastMHF(resp, s)
|
s.stage.BroadcastMHF(resp, s)
|
||||||
case BroadcastTypeRavi:
|
case BroadcastTypeSemaphore:
|
||||||
if pkt.MessageType == 1 {
|
if pkt.MessageType == 1 {
|
||||||
session := s.server.semaphore["hs_l0u3B51J9k3"]
|
var session *Semaphore
|
||||||
|
if _, exists := s.server.semaphore["hs_l0u3B51J9k3"]; exists {
|
||||||
|
session = s.server.semaphore["hs_l0u3B51J9k3"]
|
||||||
|
} else if _, exists := s.server.semaphore["hs_l0u3B5129k3"]; exists {
|
||||||
|
session = s.server.semaphore["hs_l0u3B5129k3"]
|
||||||
|
} else if _, exists := s.server.semaphore["hs_l0u3B512Ak3"]; exists {
|
||||||
|
session = s.server.semaphore["hs_l0u3B512Ak3"]
|
||||||
|
}
|
||||||
(*session).BroadcastMHF(resp, s)
|
(*session).BroadcastMHF(resp, s)
|
||||||
|
} else {
|
||||||
|
s.Lock()
|
||||||
|
haveStage := s.stage != nil
|
||||||
|
if haveStage {
|
||||||
|
s.stage.BroadcastMHF(resp, s)
|
||||||
|
}
|
||||||
|
s.Unlock()
|
||||||
}
|
}
|
||||||
case BroadcastTypeTargeted:
|
case BroadcastTypeTargeted:
|
||||||
for _, targetID := range (*msgBinTargeted).TargetCharIDs {
|
for _, targetID := range (*msgBinTargeted).TargetCharIDs {
|
||||||
@@ -134,113 +148,66 @@ func handleMsgSysCastBinary(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
s.server.discordSession.ChannelMessageSend(s.server.erupeConfig.Discord.ChannelID, message)
|
s.server.discordSession.ChannelMessageSend(s.server.erupeConfig.Discord.ChannelID, message)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RAVI COMMANDS
|
// RAVI COMMANDS V2
|
||||||
if _, exists := s.server.semaphore["hs_l0u3B51J9k3"]; exists {
|
if strings.HasPrefix(chatMessage.Message, "!ravi") {
|
||||||
s.server.semaphoreLock.Lock()
|
if checkRaviSemaphore(s) {
|
||||||
getSemaphore := s.server.semaphore["hs_l0u3B51J9k3"]
|
s.server.raviente.Lock()
|
||||||
s.server.semaphoreLock.Unlock()
|
if !strings.HasPrefix(chatMessage.Message, "!ravi ") {
|
||||||
if _, exists := getSemaphore.reservedClientSlots[s.charID]; exists {
|
sendServerChatMessage(s, "No Raviente command specified!")
|
||||||
if strings.HasPrefix(chatMessage.Message, "!ravistart") {
|
} else {
|
||||||
row := s.server.db.QueryRow("SELECT raviposttime, ravistarted FROM raviregister WHERE refid = 12")
|
if strings.HasPrefix(chatMessage.Message, "!ravi start") {
|
||||||
var raviPosted, raviStarted uint32
|
if s.server.raviente.register.startTime == 0 {
|
||||||
err := row.Scan(&raviPosted, &raviStarted)
|
s.server.raviente.register.startTime = s.server.raviente.register.postTime
|
||||||
if err != nil {
|
sendServerChatMessage(s, "The Great Slaying will begin in a moment")
|
||||||
panic(err)
|
s.notifyall()
|
||||||
return
|
|
||||||
}
|
|
||||||
if raviStarted == 0 {
|
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Raviente will start in less than 10 seconds"))
|
|
||||||
s.server.db.Exec("UPDATE raviregister SET ravistarted = $1", raviPosted)
|
|
||||||
} else {
|
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Raviente has already started"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if strings.HasPrefix(chatMessage.Message, "!bressend") {
|
|
||||||
row := s.server.db.QueryRow("SELECT unknown20 FROM ravistate WHERE refid = 29")
|
|
||||||
var berserkRes uint32
|
|
||||||
err := row.Scan(&berserkRes)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if berserkRes > 0 {
|
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Sending ressurection support"))
|
|
||||||
s.server.db.Exec("UPDATE ravistate SET unknown20 = $1", 0)
|
|
||||||
} else {
|
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Ressurection support has not been requested"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if strings.HasPrefix(chatMessage.Message, "!bsedsend") {
|
|
||||||
hprow := s.server.db.QueryRow("SELECT phase1hp, phase2hp, phase3hp, phase4hp, phase5hp FROM ravistate WHERE refid = 29")
|
|
||||||
var phase1HP, phase2HP, phase3HP, phase4HP, phase5HP uint32
|
|
||||||
hperr := hprow.Scan(&phase1HP, &phase2HP, &phase3HP, &phase4HP, &phase5HP)
|
|
||||||
if hperr != nil {
|
|
||||||
panic(hperr)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
row := s.server.db.QueryRow("SELECT support2 FROM ravisupport WHERE refid = 25")
|
|
||||||
var berserkTranq uint32
|
|
||||||
err := row.Scan(&berserkTranq)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Sending sedation support if requested"))
|
|
||||||
s.server.db.Exec("UPDATE ravisupport SET support2 = $1", (phase1HP + phase2HP + phase3HP + phase4HP + phase5HP))
|
|
||||||
}
|
|
||||||
if strings.HasPrefix(chatMessage.Message, "!bsedreq") {
|
|
||||||
hprow := s.server.db.QueryRow("SELECT phase1hp, phase2hp, phase3hp, phase4hp, phase5hp FROM ravistate WHERE refid = 29")
|
|
||||||
var phase1HP, phase2HP, phase3HP, phase4HP, phase5HP uint32
|
|
||||||
hperr := hprow.Scan(&phase1HP, &phase2HP, &phase3HP, &phase4HP, &phase5HP)
|
|
||||||
if hperr != nil {
|
|
||||||
panic(hperr)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
row := s.server.db.QueryRow("SELECT support2 FROM ravisupport WHERE refid = 25")
|
|
||||||
var berserkTranq uint32
|
|
||||||
err := row.Scan(&berserkTranq)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Requesting sedation support"))
|
|
||||||
s.server.db.Exec("UPDATE ravisupport SET support2 = $1", ((phase1HP + phase2HP + phase3HP + phase4HP + phase5HP) + 12))
|
|
||||||
}
|
|
||||||
if strings.HasPrefix(chatMessage.Message, "!setmultiplier ") {
|
|
||||||
var num uint8
|
|
||||||
n, numerr := fmt.Sscanf(chatMessage.Message, "!setmultiplier %d", &num)
|
|
||||||
row := s.server.db.QueryRow("SELECT damagemultiplier FROM ravistate WHERE refid = 29")
|
|
||||||
var damageMultiplier uint32
|
|
||||||
err := row.Scan(&damageMultiplier)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if numerr != nil || n != 1 {
|
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Please use the format !setmultiplier x"))
|
|
||||||
} else if damageMultiplier == 1 {
|
|
||||||
if num > 20 {
|
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Max multiplier for Ravi is 20, setting to this value"))
|
|
||||||
s.server.db.Exec("UPDATE ravistate SET damagemultiplier = $1", 20)
|
|
||||||
} else {
|
} else {
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Setting Ravi damage multiplier to %d", num))
|
sendServerChatMessage(s, "The Great Slaying has already begun!")
|
||||||
s.server.db.Exec("UPDATE ravistate SET damagemultiplier = $1", num)
|
|
||||||
}
|
}
|
||||||
|
} else if strings.HasPrefix(chatMessage.Message, "!ravi sm") || strings.HasPrefix(chatMessage.Message, "!ravi setmultiplier") {
|
||||||
|
var num uint16
|
||||||
|
n, numerr := fmt.Sscanf(chatMessage.Message, "!ravi sm %d", &num)
|
||||||
|
if numerr != nil || n != 1 {
|
||||||
|
sendServerChatMessage(s, "Error in command. Format: !ravi sm n")
|
||||||
|
} else if s.server.raviente.state.damageMultiplier == 1 {
|
||||||
|
if num > 65535 {
|
||||||
|
sendServerChatMessage(s, "Raviente multiplier too high, defaulting to 20x")
|
||||||
|
s.server.raviente.state.damageMultiplier = 65535
|
||||||
|
} else {
|
||||||
|
sendServerChatMessage(s, fmt.Sprintf("Raviente multiplier set to %dx", num))
|
||||||
|
s.server.raviente.state.damageMultiplier = uint32(num)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sendServerChatMessage(s, fmt.Sprintf("Raviente multiplier is already set to %dx!", s.server.raviente.state.damageMultiplier))
|
||||||
|
}
|
||||||
|
} else if strings.HasPrefix(chatMessage.Message, "!ravi cm") || strings.HasPrefix(chatMessage.Message, "!ravi checkmultiplier") {
|
||||||
|
sendServerChatMessage(s, fmt.Sprintf("Raviente multiplier is currently %dx", s.server.raviente.state.damageMultiplier))
|
||||||
|
} else if strings.HasPrefix(chatMessage.Message, "!ravi sr") || strings.HasPrefix(chatMessage.Message, "!ravi sendres") {
|
||||||
|
if s.server.raviente.state.stateData[28] > 0 {
|
||||||
|
sendServerChatMessage(s, "Sending resurrection support!")
|
||||||
|
s.server.raviente.state.stateData[28] = 0
|
||||||
|
} else {
|
||||||
|
sendServerChatMessage(s, "Resurrection support has not been requested!")
|
||||||
|
}
|
||||||
|
} else if strings.HasPrefix(chatMessage.Message, "!ravi ss") || strings.HasPrefix(chatMessage.Message, "!ravi sendsed") {
|
||||||
|
sendServerChatMessage(s, "Sending sedation support if requested!")
|
||||||
|
// Total BerRavi HP
|
||||||
|
HP := s.server.raviente.state.stateData[0] + s.server.raviente.state.stateData[1] + s.server.raviente.state.stateData[2] + s.server.raviente.state.stateData[3] + s.server.raviente.state.stateData[4]
|
||||||
|
s.server.raviente.support.supportData[1] = HP
|
||||||
|
} else if strings.HasPrefix(chatMessage.Message, "!ravi rs") || strings.HasPrefix(chatMessage.Message, "!ravi reqsed") {
|
||||||
|
sendServerChatMessage(s, "Requesting sedation support!")
|
||||||
|
// Total BerRavi HP
|
||||||
|
HP := s.server.raviente.state.stateData[0] + s.server.raviente.state.stateData[1] + s.server.raviente.state.stateData[2] + s.server.raviente.state.stateData[3] + s.server.raviente.state.stateData[4]
|
||||||
|
s.server.raviente.support.supportData[1] = HP + 12
|
||||||
} else {
|
} else {
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Multiplier can only be set once, please restart Ravi to set again"))
|
sendServerChatMessage(s, "Raviente command not recognised!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(chatMessage.Message, "!checkmultiplier") {
|
} else {
|
||||||
var damageMultiplier uint32
|
sendServerChatMessage(s, "No one has joined the Great Slaying!")
|
||||||
row := s.server.db.QueryRow("SELECT damagemultiplier FROM ravistate WHERE refid = 29").Scan(&damageMultiplier)
|
|
||||||
if row != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
sendServerChatMessage(s, fmt.Sprintf("Ravi's current damage multiplier is %d", damageMultiplier))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
s.server.raviente.Unlock()
|
||||||
}
|
}
|
||||||
// END OF RAVI COMMANDS
|
// END RAVI COMMANDS V2
|
||||||
|
|
||||||
if strings.HasPrefix(chatMessage.Message, "!tele ") {
|
if strings.HasPrefix(chatMessage.Message, "!tele ") {
|
||||||
var x, y int16
|
var x, y int16
|
||||||
|
|||||||
Reference in New Issue
Block a user