diff --git a/src/Backend.elm b/src/Backend.elm index 2ca37db..4720bbd 100644 --- a/src/Backend.elm +++ b/src/Backend.elm @@ -561,7 +561,10 @@ processGameTickForQuests worldName model = ( lastItemId, players ) Player.Player playerData -> - if SeqSet.member completedQuest playerData.questsActive then + if + SeqSet.member completedQuest playerData.questsActive + && World.enoughTicksGiven completedQuest playerData.name world.questsProgress + then let ( newLastItemId_, newPlayerData ) = { playerData diff --git a/src/Data/Version.elm b/src/Data/Version.elm index e9b3a65..8cb53be 100644 --- a/src/Data/Version.elm +++ b/src/Data/Version.elm @@ -3,4 +3,4 @@ module Data.Version exposing (version) version : String version = - "2024.11.02::001" + "2024.11.03::001" diff --git a/src/Data/World.elm b/src/Data/World.elm index 0d0f789..afbcd83 100644 --- a/src/Data/World.elm +++ b/src/Data/World.elm @@ -2,6 +2,7 @@ module Data.World exposing ( Name , World , codec + , enoughTicksGiven , init , isQuestDone , isQuestDone_ @@ -161,3 +162,16 @@ isQuestDone_ perPlayer quest = Dict.values perPlayer |> List.sum |> (\sum -> sum >= Quest.ticksNeeded quest) + + +enoughTicksGiven : Quest.Name -> PlayerName -> SeqDict Quest.Name (Dict PlayerName Int) -> Bool +enoughTicksGiven quest playerName questsProgress = + let + given = + questsProgress + |> SeqDict.get quest + |> Maybe.withDefault Dict.empty + |> Dict.get playerName + |> Maybe.withDefault 0 + in + given >= Quest.ticksNeededForPlayerReward quest diff --git a/src/Frontend/News.elm b/src/Frontend/News.elm index c1c3652..2f6b8e6 100644 --- a/src/Frontend/News.elm +++ b/src/Frontend/News.elm @@ -21,13 +21,16 @@ type alias Item = items : List Item items = - [ { date = 1730500914 + [ { date = 1730653425 , title = "TODOs before release" , text = """ Current: - quests UX + test them end-to-end +- frontend: topologically sort the quests based on quest dependencies +- quest completion: add a Message to the player: you completed a quest! +- has car -> faster movement - end of game Next up: @@ -40,7 +43,7 @@ Next up: - weapons - show strength requirement somewhere (item description) - tooltips around edge of screen - floating-ui.js? - HtH Evade perk to only work if hands are empty -- new char / char screen: show Sequence in derived stats +- new char / char screen: show Sequence and other stats in derived stats - gecko skinning - is it doing anything? - skynet and k9 - doing anything? - awareness - info about players' weapon and armor?