Skip to content

Commit 94ba8fe

Browse files
committed
isQuestDone
1 parent 55a745d commit 94ba8fe

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/Backend.elm

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2192,9 +2192,13 @@ startProgressing quest clientId world worldName player model =
21922192
world_
21932193

21942194
newModel =
2195-
model
2196-
|> updatePlayer worldName player.name (SPlayer.startProgressing quest world.tickPerIntervalCurve)
2197-
|> updateWorld worldName ensurePlayerIsInQuestProgressDict
2195+
if World.isQuestDone quest world then
2196+
model
2197+
2198+
else
2199+
model
2200+
|> updatePlayer worldName player.name (SPlayer.startProgressing quest world.tickPerIntervalCurve)
2201+
|> updateWorld worldName ensurePlayerIsInQuestProgressDict
21982202
in
21992203
getPlayerData worldName player.name newModel
22002204
|> Maybe.map

src/Data/World.elm

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module Data.World exposing
44
, decoder
55
, encode
66
, init
7+
, isQuestDone
78
)
89

910
import Data.Player as Player exposing (Player, SPlayer)
@@ -164,3 +165,13 @@ decoder =
164165
|> JD.andMap (JD.field "vendorRestockFrequency" Time.intervalDecoder)
165166
|> JD.andMap (JD.field "questsProgress" (SeqDict.decoder Quest.decoder (Dict.decoder JD.string JD.int)))
166167
|> JD.andMap (JD.field "questRewardShops" (SeqSet.decoder Shop.decoder))
168+
169+
170+
isQuestDone : Quest.Name -> World -> Bool
171+
isQuestDone quest world =
172+
world.questsProgress
173+
|> SeqDict.get quest
174+
|> Maybe.withDefault Dict.empty
175+
|> Dict.values
176+
|> List.sum
177+
|> (\sum -> sum >= Quest.ticksNeeded quest)

0 commit comments

Comments
 (0)