Commit Graph

561 Commits

Author SHA1 Message Date
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
18294b4f1b make fancy file picker function game-specific 2025-03-07 08:43:16 -05:00
5696b97491 Fix Scenario Details 2025-03-06 20:17:23 -05:00
Nathan R
598fd4836a Fixed up: Move file-static RenderWindow and RenderTexture instances inside functions to fix GL race condition on startup (#682) 2025-03-06 19:40:40 -05:00
cf736d1835 animate fake damage only allow static booms 2025-03-05 19:27:10 -05:00
bb3937d40a New feature: dialogs with pictures can animate 2025-03-05 19:27:10 -05:00
7ceeb51c50 allow choosing animated booms in pict dlg 2025-03-05 19:27:10 -05:00
9b4af4e69c Let individual dialogs toggle pict animations 2025-03-05 19:27:10 -05:00
df215d32f4 Clarify why the comment is there 2025-03-05 19:25:07 -05:00
90d5e1b778 use nested map for SDF names to save stack space.
Update semantics of the SDF array to (row, column) form to match
the picker space

Fix #674
2025-03-05 19:25:07 -05:00
3d48cb14e7 Add an SDF picker for selecting a stuff done flag and optionally giving it a name.
In effect, this is a combination of two of the previous pickers:
the location picker, and the editable string picker.

This required quite a significant rework of how the tilemap places its children.

Currently it's only used in special node editing.
I plan to add its use in many other places too though.
2025-03-02 19:13:01 -05:00
9b05c23d15 Rework parentage and naming of dialog controls.
All controls now store a reference to their direct parent,
whether it be the dialog itself or a container control.

Every dialog control now has a guaranteed parent, which abstracts away
the three possible types of parents (dialog, container, and plain window).

The control name is now stored in the control from the moment it is parsed from the XML.
This means that it's set before the parseContent function, though after parseAttribute.
2025-03-02 19:13:01 -05:00
5861268e8c Add a location picker for selecting a location in a town or outdoor sector.
It's currently used in special node editing and in advanced town details.
2025-03-02 19:13:01 -05:00
f018f051f6 Add a new tilemap control that replicates its children into a fixed grid.
Use it for the Edit Terrain Object dialog.
2025-03-02 19:13:01 -05:00
1ad973c59e Use the editable string picker for item type flags in the item editor. 2025-03-02 19:13:01 -05:00
0ccdd38cb1 Implement a picker for selecting an item class, using the editable string picker.
Used in special node editing and also item editing.
2025-03-02 19:13:01 -05:00
62267261f3 Implement a picker for major events, using the new editable string picker.
It's used not only in special node editing (for Event Happens and If Event Happened?)
but also in the Townperson Advanced, Talk Node, and Quest editors.
2025-03-02 19:13:01 -05:00
36dc44ad1c Implement a picker to select a boat or horse when editing a special node 2025-03-02 19:13:01 -05:00
8ab663b620 Add a user-defined name to vehicle definitions.
This also adds partial support for a custom vehicle graphic.
2025-03-02 19:13:01 -05:00
3a354752e6 Implement a picker to select a sector in Relocate Outdoors 2025-03-02 19:13:01 -05:00
2b93d739e8 Implement a mechanism for a special node picker to affect two fields
Use it for the MSG_PAIR picker and the PIC_NONE picker.
2025-03-02 19:13:01 -05:00
1d119e1f26 Implement a toggle picker for special node fields 2025-03-02 19:13:01 -05:00
8ac6caa8c5 Implement the new string types 2025-03-02 19:13:01 -05:00
4174ccd470 Rework the special node button dictionary (#607) 2025-03-02 19:13:01 -05:00
56bbdbc6f8 Implement the inline special node help button
Though this creates the framework, the actual help strings have not been filled in yet.
2025-03-02 19:13:01 -05:00
89dbe98b2b Refactor special node properties struct to isolate the magic characters.
Basically what that means is that the magic characters are only parsed at startup – the scenario editor code doesn't need to understand them, instead using an enum.

This is part of the work for #607
2025-03-02 19:13:01 -05:00
0afed5db59 A feature flag denotes whether a scenario uses the new or old format for its metadata. With the old format (legacy scenarios and openBoE scenarios created prior to this PR) everything displays in the scenario picker as before, and scenario designers get 2 text fields to display however they want, and 2 text fields that are pretty much useless.
With the new format, Author and Contact info are formatted onto the first line in the scenario picker display. The scenario designer gets 1 line to write a teaser.

Fix #593

Also fix a bug where scenario ratings were appearing as integers ingame instead of the correct "G", "PG", etc.
2025-03-02 01:09:03 -05:00
f80f8a932a Implement a feature flags system.
* Scenarios contain a string map of feature flags. The flag names are the keys, and flag versions are the values, so a typical value might be "fixed" for bug fixes or for evolving features, "V1", "V2", etc.
* The game has a map of flags to lists of supported versions. The game can therefore signal that it supports a legacy behavior for a given feature flag. The last version in the list is considered to be this build version's default behavior.
* When launching a scenario, we check to make sure the game supports the scenario's required versions of its feature flags.
* When launching a replay, we make sure the game supports the feature flags that the version of the game that made the recording did.

Fix #555
Close #591
2025-02-19 22:32:12 -05:00
2145d88133 Remove the <os> element from scenarios
Fix #522
2025-02-16 21:41:47 -05:00
8b873ffea5 fix crash bug when editing single text 2025-02-16 19:33:57 -06:00
8cff2428a9 DRY advanced town help. Fix #611 2025-02-16 00:02:22 -05:00
1ac6aeda05 scenario editor warn about outdated help windows 2025-02-15 11:00:19 -06:00
66256b305c Delete the "make shop random" button in favour of a preset selection when first creating the shop - this also adds "healing" to the list of presets 2025-02-15 11:33:40 -05:00
65cf27bc81 Reorganize Advanced Town Details and add some instant help
It now uses relative positioning as well.

Fix #546
2025-02-15 11:33:40 -05:00
9b513068bd Select monster current attack type. Fix #145 2025-02-08 23:10:12 -05:00
a7d0a142e3 launch terrain type documentation to fix #553 2025-02-07 09:51:45 -05:00
c20dbbf88e DRY launch doc url 2025-02-07 09:51:45 -05:00
9fd468f578 Merge pull request #548 from NQNStudios:talk-keys
Better editing for talk node keys

* The fields start out empty, and it is *allowed* to keep *one of them* empty. (A node only needs one key to be useful, right?
* When the node is saved, empty strings are replaced with `"    "`. If this is not harmless to the game logic, then I'll need to make the game aware that either key might be `"    "`.
* You cannot type more than 4 characters in these fields (unless there's a way to insert characters I'm not aware of).
* If you put 'buy' in a field, it automatically becomes 'purc'.
* There is a note next to the response keys (kind of squished in the corner) enumerating the special logic of the in-game Buy and Sell buttons.
2025-02-02 13:57:55 -05:00
1dcc400923 Create/Edit button for Receive Quest node 2025-01-24 09:56:44 -05:00
e082edf24a Remove reference to Blades of Exile license.
I don't know what it was, but I don't think we could enforce
one even if we wanted to. And it was probably to protect
Spiderweb's IP in the game, which is now Free, so there's
not much point.
2025-01-24 09:56:44 -05:00
77b11fe12a stricter maximum for talk node scrollbar. fix #144 2025-01-24 09:56:44 -05:00
f5afcea2b5 Choose button for personality of a talk node 2025-01-24 09:56:44 -05:00
06ac8569a7 guided enchantment choices in talk node 2025-01-24 09:56:44 -05:00
042aaafcac convert upper-case letters 2025-01-23 21:09:42 -06:00
9a9df8e7fa buy -> purc. They'll thank us later 2025-01-23 20:29:06 -06:00
cb9e43519f allow empty strings in talk node keys 2025-01-23 20:28:43 -06:00
c39172bd0f Merge pull request #543 from NQNStudios:editor-bounds
Scenedit Quality of life: be helpful when scrolling past boundaries

I've implemented 2 features here:
* When scrolling past the boundaries of the current outdoor section, you will get a yes/no prompt which can load the adjacent section for you at the corresponding center position.
* When scrolling past the boundaries (literal, not the changeable rectangle) of the current town, the editor will ask if you want to jump to the town's entrance in the outdoors. If there are more than one, you can choose.

I did this because I need to be able to find town entrances in the built-in scenarios so I can debug things.
2025-01-23 09:25:36 -05:00
4fd6d39aa1 fix 'launch scenario' with new scenario/renamed file 2025-01-22 09:26:16 -05:00
145824ea84 Handle exiting town with multiple entrances 2025-01-21 16:26:56 -06:00
e303363900 prompt to go to town's entrance in the outdoors 2025-01-21 16:02:37 -06:00