Commit Graph

3160 Commits

Author SHA1 Message Date
e92904e153 Implement the quest picker for the special node editor, even though it's currently unused. 2025-03-08 20:05:12 -05:00
f58381d707 Fix sound picker overwriting the value even when you click cancel. 2025-03-08 20:05:12 -05:00
678518a053 Add a string editor for the Story Dialog special node 2025-03-08 20:05:12 -05:00
3c811ef43d Use SDF picker in Townperson Advanced and Outdoor Encounter dialogs 2025-03-08 20:05:12 -05:00
c032307280 Add picker buttons and a cancel button to the Set Variable Town Entry dialog
Partially addresses #685
2025-03-08 20:05:12 -05:00
18a9e343f9 Fix several of the unit test XML files missing minimal elements for a successful load where the goal was to test something that comes after those elements. 2025-03-08 20:05:12 -05:00
f2bdbae078 Fix some cases where special node field prompts should've been "Unused" but instead said the field name 2025-03-08 20:05:12 -05:00
643035d29b Fix issues in special node field prompts
- Typos
- Unnecessary range specifications
- Prompts overflowing the available space
- A few other things
2025-03-08 20:05:12 -05:00
ff20b340e8 Add "only borders" option for If Fields? special node 2025-03-08 20:05:12 -05:00
0f64c9a19d Adjust LED hitboxes in pict and pattern pickers so that you can click anywhere on the item to select it – not just directly on the LED. 2025-03-08 20:05:12 -05:00
c1303f6e97 Use the personality picker for the Start Conversation special node 2025-03-08 20:05:12 -05:00
b0d84b1edb Fix a few special node dictionary errors 2025-03-08 20:05:12 -05:00
b86ef8ae39 The special node dictionary now supports specifying different labels or pickers based on the value of another field. 2025-03-08 20:05:12 -05:00
246aec3253 Small simplification of the special node button dictionary 2025-03-08 20:05:12 -05:00
628b0ee677 Add a new spell pattern picker.
The picker is used in the special node dialog and also in monster abilities.

Some changes were made to the game as well:
* If the rotatable wall is used for a field missile or touch ability, there's no longer an option for the designer to pick an orientation. Instead, it behaves like the rotatable wall in a radiate field ability, selecting an orientation based on the creature's facing direction.
* The magic values sent to place_spell_pattern for direct damage were rearranged to match the order of the eDamageType enum. This should have no effect, since the core place_spell_pattern function is only called by the various wrapper overloads. It also simplifies the code quite a bit.
* The Protective Circle spell pattern is now exposed to the place patten special nodes. It can be used as just a radius 4 circle, but the effect of different layers of fields can also be obtained by specifying a field type or damage type of -1.

There is also a change to the dialog engine:
* Calling setText() also implicitly calls recalcRect()
2025-03-08 20:05:12 -05:00
4c4c70648c Add a fill-color attribute to <pict> 2025-03-08 20:05:12 -05:00
aad5460acb Implement the special version of the skill picker for the Has Enough of Statisic? node 2025-03-08 20:05:12 -05:00
50637d3ddd Use an editable string picker for job boards when editing quests or dialogue nodes 2025-03-08 20:05:12 -05:00
6e94d23e05 Add pickers to a bunch of dialogue nodes that didn't have them.
This also includes something similar to the special node button dictionary for dialogue nodes.
2025-03-08 20:05:12 -05:00
b546f9c5e5 Omit the Create New String option for sign and area rect strings, as creating one here would leave it orphaned 2025-03-08 20:05:12 -05:00
a1bc923de8 Remove the Edit Saved Item Rectangles menu item in favour of a toolbar button.
The limit of 3 saved item rectangles has been removed - you can now add as many as you want.
However, the 1 per town limit is now strictly enforced.

The saved item rectangle is now shown with a cyan border when editing town.
2025-03-08 20:05:12 -05:00
c60d151ed3 If autosave prefs open before autosave check, use default 2025-03-07 08:43:20 -05:00
568b5dbe65 file picker display when a file is corrupt 2025-03-07 08:43:19 -05:00
723ea965e1 allow party loading to fail silently when not manual 2025-03-07 08:43:19 -05:00
1cf3a19b40 reorg autosave prefs 2025-03-07 08:43:19 -05:00
531384844e Better function name for cStack changeSelectedPage() 2025-03-07 08:43:19 -05:00
a4516883d0 allow different autosave defaults per-trigger. Eating: false 2025-03-07 08:43:18 -05:00
e7bd02824e Long town wait: don't autosave eating 2025-03-07 08:43:18 -05:00
b7a647c489 record and replay fake fancy file picker 2025-03-07 08:43:18 -05:00
d54c61f982 Autosave preferences 2025-03-07 08:43:17 -05:00
dad1342cab eating don't trigger autosave while resting 2025-03-07 08:43:16 -05:00
27e76e5ffb preference to still use OS file browser 2025-03-07 08:43:16 -05:00
18294b4f1b make fancy file picker function game-specific 2025-03-07 08:43:16 -05:00
5bc1643be7 Do autosaves 2025-03-07 08:43:15 -05:00
53de92c932 autosave loading 2025-03-07 08:43:15 -05:00
2396637d23 Implement file picker load/save normal 2025-03-07 08:43:09 -05:00
f9695887ec hidden controls don't handleClick() 2025-03-07 08:31:36 -05:00
da55e6f65d Function to get files in folder sorted by mtime 2025-03-07 08:31:36 -05:00
d29093fcd8 Make cStack page forward/backward a member function 2025-03-07 08:31:36 -05:00
6c1e831e8e DRY getting location string 2025-03-07 08:31:36 -05:00
dbb4cb3797 Save picker XML 2025-03-07 08:31:35 -05:00
cabec65cdf xml schema allow anchors in containers 2025-03-07 08:31:35 -05:00
206f5936cb Creating render textures is expensive - reuse the same one for all text size calculations.
This dramatically speeds up the unit tests that test every dialog.

Addresses #678 but not sure if this covers every possible case.
2025-03-07 00:59:23 -05:00
4ebb8e890c Make target-lock a feature flag 2025-03-06 21:35:48 -05:00
3e10e2923b Move camera to show the most possible targets in range 2025-03-06 21:35:48 -05:00
c9f79ba071 preferences add led for target-lock feature 2025-03-06 21:35:48 -05:00
9ca2f05c0b Don't display 'no item' response if another PC can shop. (#679)
These are the rules:

- If the active PC gets an empty shop, iterate from the first to last PC until finding someone who can see a shop item
    - If none can shop, show the 'no item' response
- When the active PC buys something, if this clears out the shop, iterate from the first to last PC until finding someone who can see a shop item
    - if none can see an item, stay on the empty shop of the PC that was active when the last item was bought.
- When shopping ends, if the shop interface was the last thing to change the player's active PC, it puts it back how it was.

Fix #669
2025-03-06 21:26:25 -05:00
14c36ed5a8 Debug action: crash the game 2025-03-06 21:24:07 -05:00
4cc6d7efb9 On catching fatal error, prompt to save the log and report 2025-03-06 21:24:07 -05:00
823fb8904d Set scale-aware text size when initializing the object 2025-03-06 21:23:57 -05:00