Tarmslitaren / FrosthavenAssistant

flutter app
GNU Affero General Public License v3.0
188 stars 49 forks source link

Wrong data in Frosthaven Scenario 6 / 22.2 #173

Closed ceebo closed 1 year ago

ceebo commented 1 year ago

Hi. The app is great but I was playing 4 player Frosthaven with friends last night and I think the number of Snow Imps in section 22.2 of Scenario 6 is incorrect. I do not own the game and so cannot be sure but I think the number of normal Imps drops from 2 with 3 players to 0 with 4 players but the number of elite Imps should increase from 2 to 4.

In general, it should be very common (possibly always true) that the number elite enemies does not decrease when the number of players increases. Also, it should be very rare that the total number of monsters of a particular type decreases when player count increases.

Therefore I wrote a little python program to check that these inequalities hold for the Frosthaven.json file in the rooms directory.

Python code is here:

import sys

rooms = json.loads(sys.stdin.read())

good = 0
bad = 0

for scenario in rooms:
    sections = rooms[scenario]
    for section in sections:
        for subsection in section:
            monsters = section[subsection]
            for monster in monsters:            
                normal = monsters[monster]['normal']
                elite = monsters[monster]['elite']

                for i in [0, 1]:
                    delta_elite = elite[i+1] - elite[i]
                    delta_total = normal[i+1] - normal[i] + delta_elite

                    problem = ""

                    if delta_elite < 0:
                        problem += "E"

                    if delta_total < 0:
                        problem += "T"

                    if len(problem):
                        bad += 1
                        print(scenario, " ", subsection, " ",monster, " ", normal, " ", elite, " ", problem)
                    else:
                        good += 1

print("good %d bad %d" % (good, bad))

When run with python script.py < Frosthaven.json I get 49 examples where the "obvious" inequalities are broken. On the plus side there are 2029 cases where the inequalities hold. Output is here:

3   13 A   Hound (FH)   [2, 2, 3]   [0, 1, 0]   E
6   22.2   Snow Imp   [0, 2, 0]   [2, 2, 2]   T
9   16 C   Living Spirit (FH)   [0, 1, 0]   [0, 0, 0]   T
29   start   Algox Scout   [6, 5, 2]   [0, 0, 2]   T
29   start   Algox Scout   [6, 5, 2]   [0, 0, 2]   T
31   start   Flaming Bladespinner   [0, 1, 0]   [0, 0, 0]   T
38   spawn 1   Hound (FH)   [1, 2, 0]   [0, 0, 1]   T
39   78.3   Deep Terror (FH)   [1, 2, 1]   [1, 1, 1]   T
40   start   Ruined Machine   [0, 1, 0]   [0, 1, 0]   ET
41   65.2   Deep Terror (FH)   [2, 2, 0]   [1, 3, 4]   T
44   52.1   Ruined Machine   [0, 2, 0]   [0, 0, 0]   T
50   spawn 3   Lurker Wavethrower   [0, 1, 0]   [0, 0, 0]   T
50   spawn 5   Lurker Wavethrower   [0, 1, 0]   [0, 0, 0]   T
61   97.3   Deep Terror (FH)   [3, 0, 1]   [0, 3, 2]   E
61   105.1   Deep Terror (FH)   [1, 0, 1]   [1, 2, 1]   E
81   174.3   Flaming Bladespinner   [1, 0, 1]   [1, 2, 1]   E
82   start   Wind Demon (FH)   [0, 0, 0]   [1, 2, 1]   ET
94   150.2   Ruined Machine   [2, 2, 0]   [1, 1, 2]   T
94   150.2   Steel Automaton   [1, 0, 2]   [0, 1, 0]   E
96   116.2   Ancient Artillery (FH)   [2, 0, 1]   [0, 2, 1]   E
96   116.2   Rending Drake (FH)   [0, 2, 0]   [1, 0, 2]   E
98   160.1   Black Imp (FH)   [1, 2, 3]   [1, 0, 0]   E
100   102.1   Burrowing Blade   [0, 2, 3]   [1, 0, 0]   E
101   start   Algox Guard   [0, 2, 1]   [1, 0, 1]   E
101   126.2   Algox Archer   [1, 3, 2]   [1, 0, 0]   E
101   126.2   Algox Archer   [1, 3, 2]   [1, 0, 0]   T
101   126.2   Algox Guard   [2, 0, 2]   [0, 2, 1]   E
101   171.3   Algox Archer   [1, 0, 1]   [0, 1, 0]   E
101   171.3   Algox Priest   [0, 0, 1]   [0, 1, 0]   E
109   162.1   Ruined Machine   [1, 0, 0]   [1, 1, 1]   T
109   166.3   Ruined Machine   [1, 1, 2]   [1, 1, 0]   E
110   186.3   Living Spirit (FH)   [1, 2, 0]   [0, 0, 1]   T
114   spawn 1   Hound (FH)   [1, 0, 0]   [0, 1, 0]   ET
116   spawn 1   Algox Archer   [0, 0, 2]   [0, 2, 0]   E
122   8.4   Snow Imp   [0, 1, 0]   [1, 0, 2]   E
122   109.3   Ice Wraith   [0, 0, 3]   [1, 1, 0]   E
122   109.3   Snow Imp   [3, 0, 0]   [0, 3, 1]   ET
122   145.1   Snow Imp   [4, 0, 0]   [0, 4, 3]   ET
122   152.1   Snow Imp   [2, 1, 3]   [0, 1, 0]   E
126   spawn 2   Snow Imp   [0, 1, 0]   [0, 0, 0]   T
126   spawn 3   Snow Imp   [0, 0, 0]   [0, 1, 0]   ET
126   spawn 5   Living Spirit (FH)   [1, 0, 0]   [0, 0, 0]   T
128   start   Abael Scout   [2, 2, 4]   [0, 1, 0]   E
128   139.1   Abael Scout   [2, 1, 4]   [2, 5, 4]   E
129   start   City Guard (FH)   [0, 0, 0]   [4, 3, 2]   ET
129   start   City Guard (FH)   [0, 0, 0]   [4, 3, 2]   ET
129   148.5   Algox Scout   [3, 1, 2]   [0, 1, 1]   T
131   start   Lurker Mindsnipper   [0, 1, 0]   [1, 0, 1]   E
good 2029 bad 49

Sorry I do not own the game so I cannot check if all of the above are genuine errors or not. I could try to check some when I play again but it will probably be one week at least.

EDIT: I found a means of checking this stuff myself. The Snow Imps error looks legit but I've not found any others so far.

EDIT2: Deep Terrors in Section 78.3 looks legit.

EDIT3: Checked up to Scenario 100. Think I've got 5 corrections to submit. Will keep going...