Commit Graph

181 Commits

Author SHA1 Message Date
f6be40618b Overhaul and improve force cages
- Add instant help message
- Prevent from ending town combat if one member is in a forcecage or if everyone's in a different forcecage (you can still end it if everyone's in the same cage)
- If entering town combat while caged, everyone remains in the cage
- Penalties to melee combat if the target or attacker is in a forcecage (higher penalties if the attacker is caged, unless they're using a pole weapon)
- Instead of placing a forcecage at every location where someone gains forcecage status, the game now syncs forcecages (placing them on locations where someone has forcecage status) at the end of the move.
- The Flash Step and Word of Recall spells and any specials that move the party also clear their forcecage status, so that a new forcecage won't appear on their new location. If they're moved into a forcecage, the syncing process will give them the status at the end of the move.
- Forcecage status now supported for the Occasional Status item ability
- Forcecages now eventually expire on their own even if you can't break out. Unoccupied ones also have a slight (0.1%) chance each turn to expire.
- Affect Status node now allows forcecage status. (It also works as documented, using Extra 1c rather than 2a as the status type.)
- Preset monsters placed in preset force cages gain the status at town initialization; it's a lot more than they'd gain through the syncing process, so unless they break free, it'll last a very long time.
- Monsters/PCs with spells (and PCs with Mage Lore) now have an increased chance of resisting entrapment in a forcecage
- If the full party is subject to a forcecage, the PC with the best chance of breaking free (assuming they don't resist) is chosen to determine whether they resist. Note that this may not be the PC with the best chance of resisting in the first place.
- Protection from Forcecage now implemented as an item ability
Other stuff (though related):
- Reset party's combat pos to the null location (-1,-1) after a cutscene ends; to not do so would mess up get_loc() calls
2015-06-10 11:45:14 -04:00
2b7e754fdc Fix game build and Windows build 2015-06-08 22:14:52 -04:00
b807a1842f Fix shops loading incorrectly 2015-06-08 22:14:51 -04:00
4b845c91dd Tweak placement of rectangles in terrain view 2015-06-08 22:14:47 -04:00
2d9c3ba2d9 Remove the arbitrary limits on the following quantities:
- Number of terrain types - as long as the last terrain in the list is unused, you can delete it
- Number of monster types - as long as the last monster in the list is unused, you can delete it
- Number of item types - as long as the last item in the list is unused, you can delete it
- Number of special items
- Number of strings (scenario, journal, outdoors, town)
- Number of signs (outdoors, town)
- Number of description rectangles (outdoors, town)
- Number of town entrances (outdoors)
- Number of dialog nodes (town); number of personalities per town is still limited, but since you can use personalities from any town and the number of towns is unlimited, you still have effectively unlimited personalities

Other related stuff:
- Fix ability to select nonexistent terrains/items/monsters from the palette
- Fix inability to find unused special strings in some cases
- Fix sometimes incorrectly selecting the current node as the next node in the chain, instead of a new node
- When cancelling from the special node dialog, it's a bit more intelligent about whether or not to drop nodes from the end of the list
- Edit string dialog now has a cancel button
- Save otherwise unused talk nodes if they contain strings, to avoid loss of data that might be important
- Fix scenario and journal strings loading incorrectly if some strings were blank
- Fix some issues with list modes activated by menu not appearing until the mouse moves over the window
- Fix incorrect instructions in list modes (it's alt-click, not command-click as the instructions indicated)
- Implement "erase town entrance" button and create a visual difference between town entrances with an assigned town and those without
- Fix inability to erase monsters after the first 60 in town
- Fix escape key accepting changes in the shop dialog, instead of cancelling
- Fix quest/shop list resetting to top after editing one
2015-06-08 22:14:47 -04:00
543ccdc670 Associate reserved pointers directly to their values, rather than referencing magic SDFs
- String buffer referencing is no longer done via a pointer but instead by a magic value separate from the pointer system (it's still -8 though)
- String buffer now stored in universe instead of scenario
2015-06-08 22:14:45 -04:00
01d317b007 .h -> .hpp 2015-06-08 22:14:43 -04:00
aa5dfe4f69 Add two special nodes
- Node to make a monster target a specific PC or monster
- Node to force town entry from outdoors
2015-06-08 22:14:40 -04:00
722f670e3d Fix crates and barrels "stealing" the items from other containers when they are pushed over them
Fix stone blocks disappearing when pushed
2015-06-06 23:23:45 -04:00
58fbf3b287 Lots of monster stuff, particularly documenting monster abilities
- Monster radiate abilities can now specify a spell pattern to use
- Fix some abilities being incorrectly shown in the editor's ability details dialog (for example, radiate abilities were shown as "Summon aid")
- Add the recently-added monster missile types to the options offered in the editor
- Fix chance of activating not being editable for the martyr's shield ability
- Show the monster summoned for summoning abilities (finally!)
- Show the subcategory for unusual abilities (one of active, passive death)
- Fix the displayed percentage chance for summon abilities (the permille was shown instead)
- Fix incorrect action point display in the editor for the two recently-added monster missiles
- Fix crash when editing a missile ability
- Fix abilities page not showing the newly-added or recently-edited ability after exiting the detail/option dialog
- Fix pick monster button for summoning abilities being off by one
2015-06-06 21:03:35 -04:00
7918125761 Introduce additional monster missile types to better preserve the AP cost of the original monster abilities 2015-06-06 03:04:46 -04:00
fdbb61411b Nuke several annoying and no longer necessary debug output statements 2015-06-05 18:44:57 -04:00
aaf3443900 Add choose buttons for the SDF fields in rectangle special nodes 2015-06-05 02:48:05 -04:00
c3828141a0 Little tweaks/fixes
- It's now possible to cancel dropping an item, by pressing the drop button again
- Another fix for the issue with bad outdoor encounters
- Add frame around item palette entries
2015-06-04 23:53:07 -04:00
80f95ba9ae Several bugfixes
- Fix light mask not rendering correctly
- Fix terrain-sourced lighting not being calculated on scenario load
- Fix light-removing items incorrectly applying their ability strength
- Fix smash patterns not affecting opaque tiles (such as mouldy walls)
- Fix monsters outside the light range not being rendered when fog is lifted
- Fix town timers not being cancelled when you leave town
- Fix non-existent outdoor wandering encounters sometimes triggering due to uninitialized data
- Hard-wrap some doc lines
2015-06-04 21:50:08 -04:00
5bcf220204 Add support for custom explosions with custom sound choice 2015-06-04 18:47:01 -04:00
6c5e2b5118 Several tweaks and fixes
Bugs:
- Arrow keys activated the arrow buttons in the list-mode edit string dialog
- Graphics classification was not saved correctly in some cases
- Contact info was not correctly saved/loaded
- Place Monster node didn't have a choose button for the monster type
- Alt-Backspace and Alt-Delete did not work correctly in dialog text fields
- When clicking Edit Terrain Types, sometimes the list of items or monsters would appear instead
- Fix monster 0 being selectable in the choose monster dialog
- Fix the hotspots of all the cursors to be more intuitive

New:
- When interrupting a special node sequence with Cmd-. / Ctrl-C, the dialog that appears is more relevant.
- In the choose sound dialog, the sound now plays when you select a choice, so you can hear what it will sound like
- Added a tiny icon so you can distinguish fire and force barriers in the editor
2015-06-04 15:50:05 -04:00
49ec6278d3 Fix a few scenario load/save issues
- More uninitialized data issues
- Some values incorrectly loaded (monster radiate chance, terrain horse blockage, town lighting type)
- Some values incorrectly saved (item magic-use flag)
2015-06-04 01:14:57 -04:00
a51ab021f4 Add two new special nodes for cutscenes
- Node to change a monster's location (also works on party members)
- Node to temporarily place text on the map
- Fix the "lift fog" node
- Remove the optimization of only redrawing a terrain space if it has changed
2015-06-03 20:56:07 -04:00
322e3b9e21 More little fixes
- Fix timers triggering every turn after they expire
- More fixes for uninitialized data
- Fix attack 3 type changing to match attack 2 type when changed
- Fix last node in the node chain duplicating over the entire chain once you clicked OK
- Fix issue where finding an unused node returned the node currently being edited.
2015-06-02 10:34:52 -04:00
7dddcdb86e Several little tweaks and fixes
- Fix some uninitialized fields getting populated with random data
- Fix identity of last edited town and outdoor section not being saved
- Fix editor sometimes saving to application directory instead of overwriting the loaded scenario
- Fix town specials being saved to outdoors list and vice versa
- Fix right-most column of map not being loaded properly
- Fix town entry node for start town being called after the first turn of the scenario
- Add option to call a special node at startup (right after the intro dialog)
2015-06-01 22:43:41 -04:00
7e4eabf198 Add item-monster selection palette which fills the same space as the terrain palette
- Removed the item/monster menus in the scenario editor (they weren't function anyway)
- Scrollbars can now have a maximum value of 0; if this is the case, they do not draw a thumb
2015-06-01 18:59:24 -04:00
5606f3e91e Refactor scenario loading code so that valid data doesn't produce tons of bad_lexical_cast exceptions that are then caught and ignored 2015-06-01 15:27:13 -04:00
2dee8e81f7 Add editor support for the new Affect special nodes 2015-06-01 14:59:14 -04:00
e0ff77060a Add several new Affect nodes.
- Alter monster statistics on the fly, including basic attacks
- Alter experience level and morale (the latter currently only works on monsters while the former might have strange results on PCs)
- Alter the contents of the player's soul crystal
- Forced Give node now has an option to force-equip the item
2015-06-01 14:20:11 -04:00
245291edbf Update documentation of town special nodes, along with some minor fixes
- place_monster no longer places a monster if one is already there, except when special node forces it
- targeting node no longer moves to jumpto if an error occurs
- fix targeting and pattern nodes not appearing in the editor
2015-06-01 00:18:02 -04:00
a1ec70c9ff Merge branch 'master' from Windows 2015-02-20 12:21:04 -05:00
3fc1b8cd7e Fix most of the warnings in the Visual Studio build
- Fix energy-draining weapons
- Specials called when a spell is targeted on a space now work a little differently if the spell is multi-target. For each target, the special is triggered if it exists; otherwise the normal spell behaviour occurs.
2015-02-20 12:18:38 -05:00
57983c1b1e Fix PC names being cut off at a space when loading
(Thanks to Erdos for discovering this.)
- This commit uses the quoting mechanism on PC names. It also applies it to item names, though that wasn't actually broken like PC names was.
2015-02-16 16:31:18 -05:00
012d40129b Fix fencepost error when reading numerical races 2015-02-16 16:21:44 -05:00
0aaa299642 Implement the close and revert menu choices, as well as PC editor help
- Fix storing directions in save file as control characters
2015-02-14 13:20:41 -05:00
4fbc6cfa77 Various code cleanup stuff 2015-02-14 12:24:25 -05:00
d45ba59cce Fix Windows build
This commit also disables warnings for comparison of differently signed integers
2015-02-12 18:21:58 -05:00
Ben Scott
1477fef7ce Fixed warnings and IMPLEMENTED A THING in the menu item switch. 2015-02-12 01:47:48 -05:00
Ben Scott
6b275c9ed9 Little fixes 2015-02-11 21:00:47 -05:00
1894b31e20 Implement loading of scenarios
- This also tweaks the scenario schemas for consistency between schemas and code, adds some unique key restraints, and makes some attributes required.
2015-02-11 14:03:03 -05:00
8d40d3d26a Several minor fixes (thanks to Erdos for locating the issues) 2015-02-10 16:02:05 -05:00
965dcc1201 Add ability for an item to call a special node when dropped 2015-02-07 13:10:28 -05:00
2e88b55759 Add new type of item that gives a quest when picked up 2015-02-07 12:50:35 -05:00
7d65dba686 Make some things dynamically sized
- Also, this fixes events being completely broken
2015-02-07 11:19:45 -05:00
f5a43bc011 More reduction of reliance on hard-coded limits 2015-02-07 09:46:51 -05:00
6d26d430b3 Some dialogue saving stuff
- Saved talk strings weren't loaded correctly from legacy saves
- Talk strings from special encounters weren't recordable
2015-02-06 23:12:28 -05:00
2cf301eece Reduce reliance on hard-coded limits 2015-02-06 23:00:29 -05:00
a14d3b5ff8 Combine town-shifting data into a single structure 2015-02-06 16:56:17 -05:00
f609711e27 Combine timer data into a single structure 2015-02-06 16:54:44 -05:00
c50e24b8e4 Turn sparse arrays into sets. 2015-02-06 15:37:55 -05:00
7307fee425 Change town locations variable name to better reflect its use 2015-02-06 14:55:37 -05:00
7f6992da56 Store sign locations and text in the same structure 2015-02-06 14:43:26 -05:00
efe03b977f Fix buffer overflow when charming/sleeping/paralyzing a level 40 monster 2015-02-06 13:46:53 -05:00
7d67c0c85b Fix issue with calculating town lighting, and do it on load instead of save since the new format doesn't store it 2015-02-05 22:19:47 -05:00