Curses! 549 points?

Ok. I played the exellent Curses! (ver 16) for a couple of months and just completed (with a bit of help from walkthroughs and hints here). The thing is that I finished it with 549 of 550 points (554 if I get the temporary bonus points and quickly finishes the game). I even played through the walkthrough and finished the game with the same 549 points.

This bugs me a bit and I wonder if this is an example of “the last lousy point”.that I missed or if it impossible to finish the game with 550 points? What am I missing?

2 Likes

My memory is failing me here—I distinctly remember a last lousy point existing, but I can’t remember what it is.

Could you post your full score listing in a spoiler block? I may have an old transcript lying around to compare it against. (Or, failing that, could extract the string table from the game file, I suppose.)

Ok. Here goes… My full score (warning! contains spoilers):

This is the afternoon of June 3rd, 1993, and you are in Meldrew Hall. You have so far scored 549 out of a possible 550, in 1313 turns, giving you the rank of very nearly happy Tourist.

The score is made up as follows:

 3 reading postcard
 7 recharging torch
 7 exorcism
10 opening secret door
 3 opening demijohn
 3 using dumbwaiter
 5 charging a rod
 5 firing a rod
 2 exposing radio
 2 sporting a daisy chain
 3 placating Aunt Jemima
50 rescuing Andromeda
 3 uncovering battery
 4 mending the plumbing
 6 scenting a passage
 6 reflecting
15 solving the grid
10 winning the orb
 1 buying map of Paris
 8 filling the arc
 4 getting into the well
 3 smoke detecting
 3 putting a ship in a bottle
 6 parachuting on deck
 5 sleeping in Alison's bed
10 opening sandstone crevice
 7 identifying a rod
 7 dislodging the watch
 3 hypnosis
 3 passing security
 3 restoring the Temple
 6 answering Homer
 3 summoning the oracle
 8 unearthing strongbox
 3 startling Austin
 3 washing away the stone
 7 provoking the librarians
 3 twisting the sphinx's nose
 3 depositing the quarterstaff
15 rising in the afterlife
15 reviving the knight
 3 encouraging the knight
 1 choosing a High Rod
72 discovering rods
60 finding sundry items

140 visiting various places

549 total (out of 550)

Okay, I couldn’t find an old transcript, but I did pull all the score-related strings out of the Z5 file. There are four relevant strings that are missing from your transcript:

acquiring the mascot
eating between meals
bonus for a good try
destroying universe

I’m thinking the second one is what you want. The first and last are negative, and I have no idea what the third is.

Did a bit of disassembling, and this achievement is awarded for eating or drinking something that is flagged “edible” and is not object number 36 (which I’m guessing is the tablet from the medicine bottle).

Thank you. I’ll try tomorrow. I have some ideas…

Progress so far:

The four things listed that’s not in my full score are:

acquiring the mascot: This is a negative (-50) if you bring the mascot back with you from premonition dream.

destroying universe: Also a negative if you tamper with universe constants in Universe Maintenance Room.

bonus for a good try: Is a 5 point bonus you get if you kiss or give Jemima the biscuit. The points are temporary and the game takes them back after a few turns.

eating between meal: This could be it. So far I havn’t been able to trigger it. There are six things that have the edible bit set (chocolat biscuit, box of chocolat, red tablet, fig, ekmek special dessert & bunch of nuts). Only the biscuit and in some sense the fig (you can get a new one after you used it for its real purpose) are not used to solve other puzzles. Simply eating the biscuit doesn’t do anything (I’ve tried it in r7, 10 & 12 also just to eliminate the possibility that something is broken in r16 only). Maybe there is a time and/or place for eating the biscuit. I’ll have to consult the disassembly…

More progress (maybe):

Noticed that if you eat the biscuit the line “eating between meals” appears in full score but you are awarded 0 points for it. I’m not sure if this is a bug or a joke but it works the same in both r12 and r16. If it is a joke then where is the missing point?

Is this the kind of evil game where you get a bonus point for never saving or never using undo?

No, I don’t think so.

Based on the disassembly of r16, the player’s score is stored in the eighth
global variable (G07).

That variable is initialized to zero, and its value is changed in the following places:

  1. Incremented by 4 in routine dda8 (acquisition of a ‘sundry item’).
  2. Decremented by 5 in routine 14c04 (removal of a temporary bonus).
  3. Decremented by 50 in routine 1eca0 (acquiring the heavy iron mascot).
  4. Set to -99 in routine 1f960 (destroying the universe).
  5. Incremented by a value from a table in routine 276ec. The table in question
    starts at $5d28 and contains 45 bytes, each representing the value of a
    scored item.
  6. Incremented by 5 in routine 28298 (visiting one of the ‘various places’).
  7. Incremented by 5 in routine 2a884 (granting a temporary bonus, for any of
    eight different reasons).
  8. Decremented by 5 in routine 2a8d8 (removal of a temporary bonus when the
    game ends without winning).
  9. Incremented by 6 in routine 2ba8c (discovery of a rod).

The table used in routine 276ec contains the following score values. Although
this table is in dynamic memory, I cannot see anything that obviously modifies
its contents, so I believe these scores to be constant.

(As Henrik noticed earlier, the score for item $16, eating between meals, is
zero. The score for item $15, acquiring the mascot, is also zero here because
the table does not support negative values; routine 1eca0 calls routine 276ec
to assign the score from the table, and then subtracts 50.)

offset score description
00 3 reading postcard
01 7 recharging torch
02 7 exorcism
03 10 opening secret door
04 3 opening demijohn
05 3 using dumbwaiter
06 5 charging a rod
07 5 firing a rod
08 2 exposing radio
09 2 sporting a daisy chain
0a 3 placating Aunt Jemima
0b 50 rescuing Andromeda
0c 3 uncovering battery
0d 4 mending the plumbing
0e 6 scenting a passage
0f 6 reflecting
10 15 solving the grid
11 10 winning the orb
12 1 buying map of Paris
13 8 filling the arc
14 4 getting into the well
15 0 acquiring the mascot
16 0 eating between meals
17 3 smoke detecting
18 3 putting a ship in a bottle
19 6 parachuting on deck
1a 5 sleeping in Alison's bed
1b 10 opening sandstone crevice
1c 7 identifying a rod
1d 7 dislodging the watch
1e 3 hypnosis
1f 3 passing security
20 3 restoring the Temple
21 6 answering Homer
22 3 summoning the oracle
23 8 unearthing strongbox
24 3 startling Austin
25 3 washing away the stone
26 7 provoking the librarians
27 3 twisting the sphinx's nose
28 3 depositing the quarterstaff
29 15 rising in the afterlife
2a 15 reviving the knight
2b 3 encouraging the knight
2c 1 choosing a High Rod

Given that the temporary bonus is kept if the player still has it when the game is won (this is the only way to end the game without the bonus being removed) I suspect that this is supposed to be the ‘last lousy point’.

If I am correct, then to win with exactly 550 points you would need to get to 545 instead of 549 and then get the bonus and quickly finish the game.

I know that it is possible to win without getting into the well (I won with 539 points, and that is one of the items that I was missing) so that would be one way to score 4 points fewer.

I came to the same conclusion as you in the disassembly.

One curious thing in with the objects is that there is 28 locations with the $12 attribute set ($12 = scorebit) and 14 objects with attribute $12. This adds up to 28x5=140 and 14x4=56. But in my full score I get 60 points for ‘sundy items’ so I got rewarded for 15 objects.

As it turns out you get 4 points both for picking up the ‘smooth stone’ in the museum in Hamburg and for picking it up when it’s washed up on the shore in Alexandria. I don’t think this is intended and I consider it a ‘bug’ but I can not find in the code why it is like this.

To sum up:

277 points from scoring table
140 points for visiting various places
56 points for picking up sundry items (you actully get 60 for the smooth stone is awarded twice)
72 points for discovering rods (12 rods x 6 points)
5 points for temporary bonus points

Sum: 550 points

My personal prefered ending is to think that I’m in such a jubilant mood (for finding the map) that I give Aunt Jemima a kiss before leaving the attic and joining my family for the trip to Paris.
Thereby finishing the game with 554 points.

Now I only have to see if r7, r10 & r12 have the same behaviour but I’ll save that for another day.

Thanks to both Daniel & Drew for you effort! Hope you had as much fun as I to ‘solve’ this last puzzle in Curses!

2 Likes

Ah, that explains it. The reason for the double-counting appears to be that (for some reason) in routine 20218 when the smooth round stone washes up in Warehouses and Port, the story clears attribute $0c (moved) on the object. This means that if/when the player acquires it again, the scoring code in routine dda8 does not recognise that it has previously been acquired, and scores it a second time.

3 Likes

I always assumed the last point in Curses was one last joke on the player! (Curses plot spoilers follow) I thought the idea was to get the player to search fruitlessly for a point they’ll never find, just like all the Meldrews had their own impossible quests. The smooth stone glitch that Henrik and Drew found seems like a more likely explanation, but I always just thought Graham Nelson was being clever.