Fix quest status reading to use correct statuses

This commit is contained in:
CarlPoppa
2025-10-20 14:14:23 +01:00
parent 53e7495886
commit 5504aaf979
3 changed files with 28 additions and 44 deletions

View File

@@ -1,21 +1,18 @@
package quest
type Quest int16
type Status int16
type States []Status
type Status uint16
func (s States) Completed() bool {
return s.HasStatus(StatusUpdateQuestLogCompleted) || s.HasStatus(StatusPrimaryGoalCompleted) || s.HasStatus(StatusUnknown1) || s.HasStatus(StatusUnknown2)
func (s Status) Completed() bool {
return s&StatusMaskCompleted != 0
}
func (s States) HasStatus(st Status) bool {
for _, state := range s {
if state == st {
return true
}
}
func (s Status) NotStarted() bool {
return s == 0
}
return false
func (s Status) HasStatus(st Status) bool {
return (s & st) == st
}
// Note that quest order isnt what is represented visually in game
@@ -49,4 +46,4 @@ const (
Act5EveOfDestruction
)
type Quests map[Quest]States
type Quests map[Quest]Status

View File

@@ -1,18 +1,27 @@
package quest
const (
StatusQuestNotStarted Status = iota
StatusRewardGranted Status = 1 << iota
StatusRewardPending
StatusStarted
StatusLeaveTown
StatusEnterArea
StatusInProgress1
StatusInProgress2
StatusInProgress3
StatusInProgress4
StatusInProgress5
StatusInProgress6
StatusInProgress8
StatusInProgress9
StatusInProgress10
StatusUpdateQuestLogCompleted
StatusPrimaryGoalCompleted
StatusUnknown1
StatusUnknown2
StatusInProgress7
StatusUpdateQuestLog
StatusPrimaryGoalDone
StatusCompletedNow
StatusCompletedBefore
)
const StatusMaskCompleted = StatusPrimaryGoalDone |
StatusRewardGranted |
StatusRewardPending |
StatusCompletedNow |
StatusCompletedBefore |
StatusUpdateQuestLog