Back to PC, inform 6, and creating. But I wonder what I broke. Need some guidance after years away

Hi all.
I’ve been distracted by other things for a number of years. I’ve also been mac based that time and I found the int fiction world less fun or accessible. But now that I’m back on a new PC system it’s like coming home. I’ve started writing something for fun. Whether it will grow into a fully developed game is yet to be seen. But the point is that I feel inspiration coming back in full force.

Here’s my problem right now.
I downloaded the Inform6 compiler, inform641_win3 2just today after using a previous version for a few weeks. I also grabbed inform6lib-6.12.6 and updated my files. Honestly I’m not sure what version I had before.

My code as it was did work with the exception of an npc’s collection of life rules that I’m currently working on. But as of today I get this list of errors:
I honestly don’t know when this started happening as I was preoccupied with the narrative and as a screen reader user, I may have just missed reading those errors as they are far down on the error page and I didn’ notice them until all other problems were taken care of.

Inform 6.41 for Win32 (22nd July 2022)
English.h(1485): Error: No such constant as “Tell”
English.h(803): Error: No such constant as “Attack”
English.h(1036): Error: No such constant as “Kiss”
English.h(1493): Error: No such constant as “ThrowAt”
English.h(1414): Error: No such constant as “Show”
English.h(972): Error: No such constant as “Give”
Compiled with 6 errors

I really don’t get how this could suddenly happen.
Any thoughts?

I would appreciate any help. :slight_smile:

And no, my np’sc life section doesn’t do anything.

Jenny

Those errors all seem to concern the names of actions. Sometimes actions have to be written with pound signs in front, e.g. ##Tell instead of Tell – but not always.

Can you choose one of the error lines and provide the portion of the source code that it’s a part of? That might help make it clearer why the error is being produced.

The error lines are from English.h in the I6 library. Maybe the library files are being Included in the wrong order?

Hmm.
Unless the order is to be changed or the includes should be different somehow, they are added correctly as I understand it. Comparing with functioning code from another game, it all seem to be the same. It’s just the dates of the files that is different.
Here’s how it’s set up toward the start of my main file.

Include “parser”;

attribute legible;
attribute BeenChecked;
attribute BeenSeen;
attribute broken;
[ DeathMessage;
switch (deadflag)
{
***;
}];
Include “verblib”;
Include “grammar”;
[Initialise;

Why this is the placement is not something I know tbh. It’s something I learned at one point and I’ve done it the same since. :slight_smile:

The code that seem to be triggering this is pretty much taken from other functioning Life code. And perhaps I can’t write it this way even if it worked previously. It feels like I’m missing something obvious.
part code:

life [;
answer: “The old hag snorts and raises a thin eyebrow. She really could not care less.”;
ask:
switch (second) {
‘plaque’, ‘sign’, ‘postit’, office’:
“The hag has nothing to say about it. She puckers her lips and rolls her eyes before looking at her tablet again. After a moment she looks up again and shrugs. She really doesn’t seem to know.”;
‘radio’, ‘transistor’, ‘transistor radio’:
“The hag shrugs. ~Was here when I started. never touched it.~”;

…and so on.

That’s what I get for not reading the whole error message!

It’s very odd that the errors are being reported in English.h, which I’m pretty sure should be being found automatically by the compiler and not subject to an Include statement. It’s also odd that only six widely-spaced errors are being reported. It seems like the line numbers in the reported errors match exactly with where those action names are found in the StdLib 6.12.6 version of English.h (as part of the LanguageLM() routine), but I can’t see why only those six would be an issue.

Can you post the command that you gave for compilation? Did you by any chance set up an ICL file in your old project that you’re using? If so, include the contents of that.

It’s also possible that a non-standard or incompatible version of a core file (perhaps Grammar.h?) is in the same directory as your source code, and that this is being picked up instead of the default. Can you check that?

Ooh,.
I’ll have to check that tomorrow. Yeah, I thought that was quite strange myself. I’ll have a peek at this when I’m awake.
Thanks for the boo.

J

I suspect that is some incompatibility between the current, 6/12.6, standard library, and what you used earlier.

Do you have a build pror of your hiatus ? inform’s story file reports in the opening and in the VERSION command the compiler and library version.

(yes, these issues are the very reason I’m so doggingly tracking the twisty passages of the history of Inform…)

Best regards from Italy,
dott. Piergiorgio.

hey.

I’ve looked over my folder and files, organized it and made sure there’s nothing there that shouldn’t be there. Whether I’m setting my projects up as might be recommended, i don’t know. I keep it simple with everything in one folder, including executable. it’s worked well for me do so far. :slight_smile:

I add nothing extra in the bat file I use to compile.

So, the file that currently builds, with those errors, tells me this:

/ Inform v6.41 Library v6.12.6 SD

So that seems right to me.

The previous z file, one where the life rules function as they should:

As a note, since I’m not considering this a serious project so far I’m not really doing much version control. I back some files up when and if I remember. Unfortunately, it’s times like these when it might have been a good idea. Lol. Anyways. It was compiled with

/ Inform v6.36 Library v6.12.6 S

In other words, Apparently I had updated the library file but not the compiler. So that’s kind of interesting.

And because I was bored, I did some pure rabbit hole experimenting, using Lib 6.11 files with the 6.41 compiler and got me a fatal parser error. Not surprising.

6.11 because those are the files I had at hand, no other reason.

So, I’m stumped. Since I’m a copy and look at others work kinda person, I would love to find an example of something built with 6.41 and 6.12.6. I can’t see where I’m going wrong. It’s frustrating to say the least.

I am quite lazy. I like it when things just work. :smiley:

J

The compiler hasn’t changed that much! A compile that worked back then should still work.

I would love to find an example of something built with 6.41 and 6.12.6.

The usual test case is Advent.inf (https://ifarchive.org/if-archive/games/source/inform/Advent.inf). This builds with compiler 6.36 and 6.41, and with library 6/11 and 6/12, in all combinations.

I did manage to replicate something that looks like your error message (reported against English.h even though it originates in the source file) with a malformed before() routine:

        before [;
                switch(action) {
                    Touch: "Can't touch this!";
                }
            ];

Did you perhaps do something like that? If so, then there is an error in your code. It should either explicitly use the ##Action notation within a switch statement, like this:

        before [;
                switch(action) {
                    ##Touch: "Can't touch this!";
                }
            ];

or it should skip the switch part entirely and just use the unadorned action names within the routine, like this:

        before [;
            Touch: "Can't touch this!";
            ];
1 Like

Heya. :slight_smile:

The problem was definitely in my code, specifically in among the life rules for my npc. I’m not completely sure what exactly was wrong. But I went through it I don’t know how many times and removed parts to see where things made a difference. I think I had made it more complicated than it had to be and I failed to trust inform. I’ve been learning C++ a while now and the strict syntax i think must have gotten to me. :smiley: So in the end, unnecessary braces and else ifs had to be removed go and it all works smoothly and so much cleaner. I really have to thank you guys for making me think in different directions. It’s so easy to get stuck, especially when the errors don’t seem to make any sense. I’ve never seen that happen before. But I think it was a good lesson.
Cheers.
And I’m sure I’ll be back.

J

1 Like