Natural One 3.2

Almost entirely UI changes this time, fixes for some long-time visual issues.
  • Feature changes:
    • Added a button to the header to reset all input fields.
  • Output changes:
    • Changed the modifier line in attack and damage output to not show if all modifiers are zero.
    • Changed damage dice to display the on_critical dice instead of normal dice if applicable.
  • Interface changes:
    • Added extra spacing to treeview rows, so lists should be more readable now.
    • Improved section header text.
    • Simplified the template dialog grid internally, which also resulted in widgets aligning better.
    • Action bars now use appropriate classes to allow system themes to affect them properly.
    • Changed the critical icons to something more clear.
  • System changes:
    • Added full Pathfinder 2e Playtest support. This will be updated for the full version when it is released, but very little will need to be changed.
  • Bug fixes:
    • Fixed broken formatting on some weapons with no damage dice.
    • Fixed old data file not fully updated to new format.
    • Fixed variable size dice count not having input checking applied.

All code is on GitHub:


Natural One 3.1

Almost entirely UI changes this time, fixes for some long-time visual issues.
  • Interface changes:
    • Changed the template roll button to text. This was the only roll button that used an icon, and it wasn’t an intuitive icon at all.
    • Changed “Number of attacks” in Attack and Damage rolls to “Attack count”
    • Moved weapon selection into Combat tab grid. Everything is finally all nicely aligned.
  • System changes:
    • Updated data files to reflect UI changes. This mostly involved removing redundancy in category names.
  • Code changes:
    • Added a vector icon. Not currently used, but I’m going to look at transitioning all application icons to use this.

All code is on GitHub:

Natural One 3.0

Jumping straight from 2.0 to 3.0 this time. Not what I’d normally do, but there are multiple significant changes here that break backward compatibility.

Originally, I had planned for the next release to be 2.1, and mostly just add support for the upcoming Pathfinder 2nd Edition. However, there are some pretty big differences in how some things are handled in that system (notably critical rolls), so I decided to finally get around to some things I had put off. Notably, the format of the data files has changed pretty significantly. The old file format was very much just an ad hoc thing that then got extended as needed, without much thought to making it easy to work with. I don’t intend to add much more support for other systems past Pathfinder 2e, but at least it’s much nicer to work with now.

Note that this release doesn’t yet have support for Pathfinder 2e; that will probably come with release 3.1. It’s still in playtest phase at the moment, so while I don’t expect anything that Natural One uses to change, I’m still going to wait to add the data files. Once it’s fully released, however, adding support should be very quick as all the technical changes are done.

In addition to the data files, templates got some changes for the same reasons. As a side effect of this, old template files are no longer compatible.

Besides breaking everything, I did actually implement some new stuff here. Proper dice progression is finally here! For systems that support it, you can now step up/down weapon damage dice to whatever size you want. Previously only small and medium sizes were supported, and were hardcoded, but now it can simply extrapolate from the medium dice.

There’s some UI improvements here as well, mostly on the Combat tab. The checkboxes properly fit into the grid, and so on.

  • Feature changes:
    • Templates now support “not rolled on critical hit” as a critical option.
    • For systems that support it, weapon size can now be selected.
  • Interface changes:
    • Changed checkboxes to apply critical hits to be togglebuttons instead.
    • Moved checkboxes on Combat tab into the grid.
    • Changed critical option radiobuttons in template dialog to a combobox, as there were becoming too many options.
    • Improved labels on Initiative tab.
  • Output changes:
    • Removed word “template” from template output results title.
  • Code changes:
    • Added preliminary support for Pathfinder 2e.
    • Changed data files to new format.
    • Rewrote weapon roller.
  • Fixes:
    • Fixed failing to start due to missing system file.
    • Fixed incorrect path for user files on Windows. I’m still not planning on supporting Windows yet, but at the very least I don’t want to make more work in the future.
    • Fixed loading new data files requiring a restart.

All code is on GitHub:

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: