Natural One 2.0

2.0! Not that much on the user side this time, but very significant internal changes. Natural One is now fully Python 3-compatible, and from now on will only target Python 3; starting with this version Python 2 support is dropped.

  • Interface changes:
    • Moved system file selection into a dialog instead of a filebutton. This means that the Add System section of the System dialog is gone, and now a system can be added from the Add button at the bottom of the systems list.
    • Increased default size of the template dialog.
    • Disabled multiplier input on template dialog when non-applicable critical options are set.
    • Added spacing between initiative radiobuttons.
    • Changed results display to a treeview, with improved spacing and formatting.
    • Added reordering to template rolls.
  • Output changes:
    • Critical fail and success messages are now bold.
    • Moved weapon name and damage die location in weapon roll output.
  • Systems changes:
    • Systems dialog now checks and automatically loads new built in systems when opened.
  • Code changes:
    • Simplified loading of symbolic icons with a new helper module.
    • Add proper Unicode support.
    • Remove Python 2 Unicode “support”.
    • Transitioned fully to Python 3.
    • Fixed shadowed names.
    • Fixed reordering items in lists jumping to the top in long lists.
  • Fixes:
    • Fixed luralize helper functions.
    • Fixed weapon selection generator in Python 3.
    • Fixed popovers throwing errors on some systems.

All code is on GitHub:


Natural One 1.7

Few big things this update. Templates are no longer auto-sorted, but can instead be reordered by dragging and dropping. This should make it easier to find templates in a long list, as important ones can now be dragged to the top.
Error indications resulting from user input should now be more accessible. Popovers now display next to widgets with errors, helpfully pointing out where a problem is and what to do about it. Previously these errors were kind of a problem for colorblind users, as the only indication was a red outline, but this addition should make the errors more obvious. The popovers are only dismissed after a click/focus change, so this helps make it more obvious to all users too.
Finally, Unicode support is here! Sort of, at least. It’s a rather bad hack to get it functional while I go refactor parts of the code to support it in a better way, but at least now it works. This is another important step in accessibility, as this previously limited all user inputs to ASCII characters only; now many more languages are supported. Or, I guess you could do this:

  • Interface changes:
    • Improved accessibility for user input errors by showing a popover in addition to the red outline.
    • Added ability to drag and drop templates to reorder. Order is saved on application exit and restored on open. Template sorting removed.
    • Merged enable all/disable all buttons in the systems dialog into one button that toggles state.
  • Systems changes:
    • Added Pathfinder’s “alchemical” weapon categories.
    • Added support for “Pure Steam” system. This is a Western/steampunk Pathfinder conversion, so no mechanical changes were required.
  • Code:
    • Added rudimentary Unicode support.
    • Moved template copy and remove into functions in the io module.
    • Simplified initiative drag and drop reorder code.
    • Added helper for loading symbolic icons.
    • Switched all string formatting to use format() instead of the old printf style formatting.
  • Fixes:
    • Fixed CSS data causing app to crash on launch in Python 3.

All code is on GitHub:

Natural One 1.6

Despite having a very large number of lines changed, aside from a couple minor fixes and changes most of this release should be invisible to users. Instead, this release focuses more on the internals; there are multiple simplifications to common tasks, and a much stricter adherence to style conventions. This is part of my effort to clean up my “yeah it works, good enough” approach to new features, though there’s still a bit to go.

  • Interface changes:
    • Changed initiative list column spacing to give more room to the name.
    • Mixed weapon damage types now display in order. Previously, it would sort alphabetically, which isn’t the most intuitive or standard way to do it.
  • Code changes:
    • Renamed many functions.
    • Simplified mixed damage type calculations.
    • Added helper methods for getting selected indices in lists.
    • Renamed application and window classes.
    • All code now uses flake8 to adhere to style conventions.
    • Simplified question dialog result checking.
  • Fixes:
    • Fixed spelling mistake.

All code is on GitHub:

Natural One 1.5

  • Feature changes:
    • Removing a system now deletes the imported system file.
    • Added feature to export templates.
    • Added feature to import templates.
  • Interface changes:
    • Added placeholder text to most inputs instead of default values. Along with this, most of the fields will default to these placeholder values if nothing is set, preventing user error and making validation easier.
    • Changed error styling to red border around the widget instead of red background with white text. This still needs work, as accessibility isn’t great, but it removes most aesthetic and user theme related issues.
    • Templates are now sorted alphabetically.
    • Improved tooltip on “clear output” header bar button.
    • Headers are now shown in the templates list.
    • Added “Rolls” column to the templates list to show the number of rolls in each template.
    • Critical range input can now longer be above 20.
  • Output changes:
    • Removed quotes from template roll output.
  • Code changes:
    • Fixed variable name shadowing.
    • Fixed code style issues.
    • Removed most roll input validation, as it is no longer necessary with default values and limited inputs.
    • Cleaned imports.
    • Removed unnecessary comments.
    • Moved the CSS data to a file to reduce duplication.
  • Fixes:
    • Fixed extra newline at the end of the output.
    • Fixed typo in template dialog tooltip.
    • Fixed inconsistent grammar in template dialog labels.

All code is on GitHub:

Natural One 1.4

  • Interface changes:
    • The input panes and output list are now in panes, so they have a divider that can be used to change the size of each.
    • Redesigned template pane. The buttons are moved to an action bar, and the “New Template” section is gone.
    • Redesigned initiative pane, similarly to the template pane.
    • Redesigned template dialog, similarly to the template pane.
    • Minimum damage entries now show placeholder text.
    • Added system management functionality.
      • Users can now add their own systems through the UI.
      • Systems can now be rearranged.
      • Systems can now be removed.
      • Systems can now be enabled or disabled.
    • Add input filtering for appropriate fields. No more typing letters into numeric fields. It also checks things like spaces, commas, and negative signs when appropriate.
  • Output changes:
    • Improved formatting of damage roll output.
    • Improved formatting of modifiers. If the modifier is 0, it is not shown. If it is negative, it no longer displays with an extra plus sign.
    • Improved formatting of anything that could have multiple values; equal signs are now hidden when not necessary. No more being reminded that “7=7” is, in fact, true.
    • Added critical outputs for maximized on critical.
    • Improved formatting of templates, with more spacing, more consistent formatting, the count and die in the roll output, and better critical messages.
  • Roll changes:
    • Added damage types to all damage rolls. Each damage roll displays its type, and totals are broken down by type if applicable.
    • Minimum damage is now optional; if not set, it’s negative infinity.
  • Systems changes:
    • Added D&D 3.5e data file.
    • Added The Modern Path data file (disabled by default).
    • Rearranged default order of systems.
    • Added Pathfinder naval siege weapons.
    • Added several missing Pathfinder weapons.
  • Fixes:
    • Fixed static damage not being multiplied by critical hits.
    • Fixed modifiers being applied twice if weapon has bonus critical damage.
    • Fixed editing rolls saving data before it should have, resulting in the user applying changes even if clicking “Cancel”.

All code is on GitHub:

Natural One 1.3

This release brings support for D&D 5e and 4e, with all the data and roll rule changes that entails. 5e support was actually trivially easy, not much to do there at all; weapon data is short and the rules are a subset of Pathfinder’s. 4e wasn’t bad either, though it did involve adding support for it’s odd style of criticals (maximized instead of multiplied).

Also new this release is an “Initiative” tab for tracking encounter initiative. These can either be rolled or added manually, with additional sorting and drag and drop to re-order the list.

Due to a large rewrite of how roll data is handled internally, some things visible to the user changed as well. Output should now also be cleaner and nicer to look at. Some very significant issues with damage rolls should be fixed now too.

Full changes:

  • Added D&D 5e weapon data.
  • Added D&D 4e weapon data.
  • Added new data files properties:
    • “max_on_crit”: if set to true, rolls will be maximized on criticals instead of multiplied.
    • “reroll_below”: if set to an integer, rolls will be rerolled as long as their value is less than or equal to this integer.
  • Improved the UI to better follow Gnome’s HIG.
  • Added option to maximize on criticals to templates.
  • Decoupled generating rolls from output of the rolls.
  • Improved roll output:
    • Negative mods now longer display an extra “+”.
    • Mods of 0 no longer display.
  • Fixed many issues with roll output:
    • Fixed incorrect numbering on critical hits for critical mods of 4 and above
    • Fixed incorrect numbering on critical hits for critical mods of 1.
    • Fixed extra blank lines appearing for certain weapons.
  • User input now strips text before checking validity.
  • Fixed template dialog not setting the critical option in the UI properly when loading a roll.
  • Added classes to represent roll results, to help with decoupling generating rolls from formatting rolls.
  • Fixed warnings when double clicking template or roll lists.
  • Simplified error checking for user input.
  • Renamed “” -> “”.

All code is on GitHub:

Natural One 1.2

Or Natural One.2, whichever sounds cooler.

Time between semesters is boring, so I’ve been working on this. The big changes here are behind the scenes things to support game systems with differing rulesets. Ideally the user shouldn’t have to worry about any of that, and it should all be determined as-needed. Most of the rest of the changes are in making output and UI look prettier.

For the data files, Natural One no longer has only one that it tries to read from. Instead, it looks for a meta file that then references the data files, and loads all the listed files. This allows for new systems to be added with minimal effort. There have also been a lot of changes in the data files themselves to be more generic and flexible.

As a result of a lot of these changes, Natural One now supports Starfinder in addition to Pathfinder.

  • Making things look prettier:
    • Weapon names now display better in roll output. For example, instead of displaying “Rolled 1 hit with a gauntlet, spiked”, it’ll now say “Rolled 1 hit with a spiked gauntlet”. Much nicer. This is done through an optional “display” key in the data files. If this key is present then it’ll be used for roll output, otherwise it defaults to the existing “name” key.
    • Weapon names that have capitalization in them (acronyms, for example), are no longer converted to lowercase. This is also done with an optional key (“no_format”).
    • “A” vs “an” is now checked.
    • Improved display of damage roll output, particularly with criticals.
    • Add Roll button in the Template dialog now changes to Edit Roll in the appropriate conditionsl.
    • Length-restricting input fields now center input text.
    • About dialog now looks nicer.
    • Simplified and fixed alignment issues in the combat tab.
  • Weapon improvements:
    • Added support for multiple different die in one damage roll.
    • Added proper support for double weapons.
    • Added proper support for weird things like the Autograpnel that have fixed damage added after roll (who decided that was a good idea? only thing in the game I’ve found that uses that).
    • Added support for extra rolls on critical attack, separate from simply multiplying the base roll(s). Starfinder uses this quite a bit.
  • Starfinder support:
    • Added option in rolling attacks to confirm criticals or not.
    • Many of the weapon improvements were focused on adding Starfinder support.
    • Template rolls now have an option to only be rolled on critical hits.
    • Added Starfinder data file.
  • Code stuff:
    • Minor refactoring.
  • Bugfixes:
    • Fixed damage not rolling criticals properly for some weapons
    • Fixed output text view not wrapping properly.


All code is on Github: