Inform - Support - Suggestions

About Suggestions  

Under consideration  
Accepted for next release  
Complete list  

Suggestions already incorporated

These suggestions were accepted and are incorporated into an existing or upcoming Inform release.

Anybody is welcome to submit a suggestion; please keep it succinct and in the style of the proposals already published here.

175.  Extend the debugging verbs ABSTRACT, GONEAR, PURLOIN, SCOPE and TREE to accept object numbers, as was done for SHOWOBJ (L61030). Display object numbers wherever possible in debug verb messages.
150.  Give better responses to verbs like RUB when the subject is animate.
137.  The implicit messages produced by 'INSERT|PUTON worn' should match those from 'DROP|EAT|THROWAT worn'.
133.  TAKE ALL additionally to attempt objects on supporters and in open [transparent] containers.
132.  Make VERBOSE the default mode.
130.  Add WordValue(wordnum), NumberWords( ), GetKeyBufLength( ) and SetKeyBufLength( ) functions to complement the platform-independent WordLength(wordnum) and WordAddress(wordnum). Also add optional parameters to all of these so they can work on other parse arrays besides 'parse'.
127.  Add grammar for GET OUT OF, since it appears in an English.h message.
123.  The parser prefers to TAKE an object the player is already holding rather than one on a container or supporter, causing some player frustration unless a ChooseObjects( ) is provided. The rules in S33 of DM4 should be changed so that A is set to 0 for Take. (This can be done by adding one line 'if (action_to_be ~= ##Take)' before 'a_s = SCORE__NEXTBESTLOC;')
122.  You can take an item from the SACK_OBJECT but you can't drop an item directly if it's in the sack; instead you get the rather unhelpful 'You haven't got that'. It would be good to at least get a response like 'You need to take that out of the sack first' (or whatever).
121.  If the parser attempts to put something in the SACK_OBJECT but fails, it should try another item. (See also Suggestion 82)
120.  The 'You need to be holding the thing before you can...' for PutOn and Insert can be an annoyance, e.g., when the object is in a sack object. Maybe the action routines should include an implicit take.
119.  I especially dislike the name of the new Length( ) routine. StringSize( ) would be better.
117.  I think TAKE ALL shouldn't attempt to take scenery objects (or animates).
116.  CONNECT and DISCONNECT should be synonymous with ATTACH and DETACH.
112.  Allow "male" and "female" to be assignable to non-animate things. This will make it easier to implement dead bodies.
107.  For games that don't want an automatic LOOK at the beginning of the game, allow programmers to define a constant (NOINITIAL_LOOK) to deactivate it, so they don't have to edit the libraries or replace a large part of code.
106.  Move Uppercase( ) and Lowercase( ) to English.h, to assist Cyrillic, Polish, Greek etc porters. The current routines work only for ISO 8895-1, and need replacing with other character sets.
103.  Support an Epilogue( ) entry point, called at end-of-game between DeathMessage( ) and ScoreSub( ), to permit additional commentary when a game is over.
100.  Make the property name a parameter to RunTimeErrors 5 and 11.
95.  There are a lot of rules that stop a player from doing stuff, like you can't get off something you are not on. If you try to make a NPC responding to orders, you have to more or less write all these rules from scratch. It would be helpful if there existed somewhere the source code to an NPC that responds to all the orders, by which I mean all the default commands that a player character responds to, and which follows all the rules that a default player character do. Then it would be fairly easy to edit the source code into the NPC one wants.
90.  Make Exit actions consult the before property of any enterable object, the way Go actions do. This seems more intuitive, and is unlikely to break existing code, since objects shouldn't have existing Exit cases.
88.  The description of PrintCapitalised( ) seems to suggest it works the same way as PrintOrRun( ), only it can capitalise the output as well. I noticed however, that it doesn't return the value returned by the routine if a routine was indeed called.
87.  It would nice if there could be some way of notifying a location that an actor has just left it; the Go action is offered to X's before property and Y's after property as now, but (say) a GoneFrom fake action is also sent to X's after routine.
82.  Call before_implicit ##Insert from AttemptToTakeObject( ) for each object about to be placed in SACK_OBJECT; return true to reject.
81.  Define the external names of the CompassDirection objects using their short_name properties, so that they can be changed at runtime. Also, move the values embedded in LanguageDirection( ) into XXX_to properties of those objects.
80.  Sensible substitution of "actor" for "player" in select verb routines (and handlers).
76.  Add an optional flag parameter to YesOrNo( ), which prevents the routine from redrawing the status line (eg, when within a menu).
66.  Reverse Strict mode's dependency on Debug mode, so that a game can have Strict's run-time checks without Debug's extra commands.
63.  In v6 games, SaveSub( ) should set the header bit requesting a screen update (since after the restore the v6 screen model will need to be reinitialized). Conversely, the default DrawStatusLine( ) method should probably clear this after it reinits the screen.
60.  Allow multiple UNDO.
58.  It should be possible to define a constant early to suppress the SCORE and FULL verbs and all score reporting, so that people don't have to hack this for puzzleless or otherwise score-free games. (As Zarf has pointed out, it's very easy to remove SCORE incorrectly.)
57.  The move towards a single Z-Machine/Glulx compiler increases the requirement for compiler options settable within the source file rather than on the command line. Currently, Switches G; seems to crash the compiler, while statements like +include_path= and $MAX_STATIC_DATA= are unsupported.
54.  Remove the 'wall' concept of compass directions, renaming them "the direction north", or "the northerly view", or simply "north" as in the Inform FAQ entry.
53.  Add a mechanism to extend the -Cx input character set argument so that other character sets for source code can be read from a file, so that Inform can compile from (say) Windows-Cyrillic sources.
52.  Add a mechanism to specify extra values in the header extension table.
50.  Ensure all Z-Spec 1.0 opcodes are included in the assembler.
46.  Make task_scores a word array -- the extra bytes are trivial, compared with the benefits of large and negative scores.
37.  I notice that printing rules are available for both the capitalized and lowercase versions of the definite article, (The) and (the), but only a lowercase version is present for the indefinite article, (a). There is no (A), as I discovered when I found myself needing one. I think this inconsistancy should be fixed.
35.  Defining Verb 'pry' 'prise' 'prize' 'lever' * noun 'with' held -> Unlock in the standard library. I promise I will shut up about this when I play a game that allows 'pry' but also 'prise'.
33.  Compiler warning/error if non-dictionary words are included in name property. (see also suggestion 1)
31.  Making "ASK|TELL X TO Y" a (near) synonym for "X, Y"
29.  Compiler warning or error when using unqualified properties within routines (e.g. a C programmer forgot to include "self.").
27.  For the twelve compass directions: either make the numbers assigned to XXX_obj and XXX_to consistent throughout or make them completely distinct; the current half-and-half situation promotes confusion.
26.  Give selfobj an empty add_to_scope property, so that it's easy to extend by player.add_to_scope=myScopeRoutine; without needing to create a whole new player object.
25.  Define LIBRARY_PARSER, LIBRARY_VERBLIB and LIBRARY_GRAMMAR constants in library files so that contributed packages can check their own correct inclusion; also suggests a standard for general dependency checking.
15.  Provide warnings when -> is used to reference arrays declared as word arrays/tables, and also when --> is used to reference byte arrays
11.  Extended directive: Array name buffer, to create an array with a length word and character bytes, as used by print_to_array.
6.  Provide tighter control over the scope of TAKE ALL.
5.  Provide some control over the implied TAKE which is built into verbs like EAT (as in EAT BIG ROCK CANDY MOUNTAIN).
3.  Provide simple control over all "(providing light)" and "(which is open)" style annotations, in room descriptions as well as the inventory -- see this Inform FAQ entry.
2.  Make RECORDING and REPLAY available even when Debug mode is switched off.

Last updated 17 April 2013. This web site has not been fully supported since April 2008. Information may be out of date. This page was originally managed by Roger Firth.