Issues and wishlist

I just got caught on the 10-character limit for dictionary table keys and thought maybe it's time to put all the known issues in one thread for reference (and hopefully eventual fixing). Also some wishes for new functionality, since I'm at it.

These are things where the program operates incorrectly, or the documentation is wrong, and unexpected results occur.

Leading and trailing spaces
Leading and trailing spaces do not work for inline tables like [| something | something else ], even if _ is used for the spaces. %nbsp; does work as a workaround but is less elegant.

In other places, leading and trailing spaces do get retained, and can be quite a pain. For example if I have a line:
Set: size={1d6}
where I accidentally left a trailing space after {1d6}, I now can't use that variable as a number (e.g. in [#{size} Table]) because of the space. This can be very hard to catch! I think the better solution would be to usually trim leading and trailing spaces, unless they are explicit as _.

Newlines and headers
\n (new line) does not work in the Header. It also doesn't work in the implode filter and possibly elsewhere. A workaround is

Modulo arithmetic
% for modulo (remainder) does not work as an operator. (It did work in version 2, apparently.) I made some tables to do this but it makes the code a lot uglier:

// query as [@Quotient with A, B] where the result is the integer quotient (result) of A/B
Table: Quotient

// query as [@Remainder with A, B] where the result is the remainder (modulo) of A/B
Table: Remainder
{{$1}-{$2}*[@Quotient with {$1}, {$2}]}

Inline variable assignment
The documentation says the format is [@name=value] but in fact you need to omit the @. Not clear whether the program is handling it wrong, or the documentation is wrong. Sometimes you also need single quotes, sometimes you don't. Not sure how this really wants the input.

Dictionary tables
The text keys for dictionary tables are limited to 10 characters as noted
It would be helpful to remove the limit, but failing that it would be helpful to note the limitation in the documentation.

Not when
Any string that starts as [w (other than [when]) will be interpreted as pure text, presumably because the checking for a [when] statement is interfering with the interpretation of that text. Generally you can insert a space (e.g. [ w rather than [w ) but this can be a bit of a surprise.


The editor could use a word wrap toggle. Not wrapping makes the tables more clear, but can be a nuisance when you are editing very long lines.

The editor could use some IDE type functionality to color-code functions and help for matching brackets and curly braces. I'm actually using Notepad++ to edit .ipt files instead of the editor because of this and the word wrap issue, but it's less convenient because I have to close IPP and re-open it to reload the edited tables.

Spell-check would be nice in the editor as well.

Keyboard shortcuts and Cut vs Exit
Ctrl-X is the shortcut key for Exit, but in the editor I frequently press Ctrl-X for Cut because that is the normal Windows usage (and others have posted they do the same). The result is inconvenient. Could Alt-X be made the shortcut for Exit and Ctrl-X for Cut? If a shortcut is needed for Exit at all?

Finding Generators
These are in four different places:
* bundled with IPP
* on the website as generators at (but none are more recent than 2010)
* in the NBOS online exchange at (goes through 2015)
* in the forum

None of these are complete, though. It would be helpful to get all the ones from in the NBOS online exchange, and also mark in the exchange which of them are already bundled with the program.

Exploding Dice
There are some threads about how to do this, but it would be nice to have it built into the program. E.g. 1d6e for exploding (reroll and add 6's). Rolemaster uses open-ended 1d100 rolls where you reroll and add 96-100, we would normally denote that as 1d100oe (open-ended).

Formatted Numbers
It would be nice to have a filter that formats large numbers with commas, e.g. 1234567 >> 1,234,567.

"And" in lists
It would be nice to have a variant of the implode filter that includes the word "and" before the last item (if there is more than one item). There's a solution here but it's bulky.

"And" in when statements
It would be nice to be able to check more than one thing, e.g. [when]a>10 and b>10[do]etc.


  • Good list...

    There's also a maximum number of lines one entry in a table can take up. I'm not sure what that limit is, but when it comes up, the program spits out all remaining lines as text. I have an initializing "table" that has all of the values for the various kingdoms in my D&D campaign (where each kingdom has hundreds of values). The workaround was to simply tell the table, a few lines before the max, to call another table and finish the initializing there.

    I think it would also be nice to interrupt the table and prompt for input.

  • I ran into that too. My impression was that the limit was the total length of a line (spanning multiple lines by using the & symbol). Somewhere between 4010 and 4092 characters. Same symptom as you describe.

  • ISSUE: Parameters passed to a table don't preserve case. They're always converted to lower case. Take a look at the last example in the help for Table Parameters. It doesn't show the output, but the apparent intent is to list the names as written. Using [@html_red with [@name]] like it says in the example always produces lower case names.

    Applying Proper or Upper to change the case is helpful only if you're trying to force the capitalization to be initial caps or all upper case -- but not if you're trying to preserve the original capitalization of the string.

  • @OldeMusicke That's a good catch. Params certainly shouldn't be converted like that.

  • WISHLIST: Let lookup tables look up 0 and negative numbers.
    Table: Example
    {n=-1} gets [#{n} Look]&
    \n{n=0} gets [#{n} Look]&
    \n{n=1} gets [#{n} Look]&
    \n{n=2} gets [#{n} Look]&
    \n{n=456} gets [#{n} Look]

    Table: Look

    You get the expected results for 1, 2, and 456, but not for -1 and 0.
    -1 gets gamma
    0 gets gamma
    1 gets gamma
    2 gets delta
    456 gets epsilon

    Or at least document the restrictions on lookup values.

  • Bumping this up for reference....

  • Have some way to set a variable back to undefined.

  • Have the find function tell you how many it found.

  • Let lookup tables with a range of values look up non-integer values, for instance:

    Table: Wealth
    Type: Lookup
    0-20: "Poor"
    20.1-40: "Average"
    40.1-1000: "Wealthy"

    As I type this out, I'm realizing it's more complicated. Maybe a new Type other than Lookup. Probably should work more like an Excel vlookup function. Check to see if the lookup value is larger than or equal to the index value; if true, check next lookup value; if false select the prior index line. More like:

    Table: Wealth
    Type: Range
    0: "Poor"
    20: "Average"
    40: "Wealthy"

    Lookup value of 23.53... greater than 0 -> check next; greater than 20 -> check next; not greater than 40 -> select/execute lookup index 20.

    And for sure add OldeMusicke's negative numbers in lookups.

  • edited May 28

    I dont think having decimals in the lookup keys would be too much of a change. I'd have to look at the code to see how its storing that info now, but it should be doable. Negative numbers should be possible as well, though the "-" separating the low and high value could cause some confusion. ie,

    -20--10: really low roll
  • Levendor's idea based on how vlookup works seems like a good one that wouldn't need dashes at all. I agree negative numbers would be helpful.

  • I wouldn't mind if [when] could handle >= and <= like the if function can. One can work around it, but it does come up when rolling on tables.


    Table: comparison
    14 shouldn't be >= 15[@ge with 14]&
    \n\n15 should be >= 15[@ge with 15]&
    \n\n16 should be >= 15[@ge with 16]
    Table: ge
    \nwith when, [when]{$1}>=15[do]it is[else]it isn't[end]&
    \nwith if, {if($1>=15, "it is", "it isn't")}


    14 shouldn't be >= 15
     with when, it isn't
     with if, it isn't
     15 should be >= 15
     with when, it isn't
     with if, it is
     16 should be >= 15
     with when, it isn't
     with if, it is

Leave a Comment