Commit Graph

1021 Commits

Author SHA1 Message Date
09b1dc35ab Fix alchemy being completely broken (in that brewed potions wouldn't work) 2015-01-20 17:18:43 -05:00
2c8ef727ae I don't understand how this issue even existed, but apparently it did 2015-01-20 17:18:42 -05:00
bbe8e766ca Update the edit item dialog for new things (missiles, arbitrary key weapon skills)
- Also, missile weapons now use the key skill as well
- Fix guessing of missile types - using the item level didn't work out since the levels weren't what the original code expected, so now it just goes by the name
2015-01-20 17:18:42 -05:00
5450ae1caf Implement editing dialogs for individual monster abilities
Changes to game:
- Permanent martyr's shield is now customizable - extra1 is per-mille chance to activate each time damage is taken, and extra2 is percent of damage taken to apply to attacker
- Absort spells is now customizable - extra1 is per-mille chance to activate each time damage is taken or a magic effect is applied, and extra2 is how much hp to gain from non-damaging magic effects
- Splits ability is now customizable - extra1 is per-mille chance of splitting each time damage is taken
- Special node ability is now called before the monster tries its normal attack, and multiple monsters can use them per round (though each can only use theirs once)
- Fix issue with breath weapons and icy touch abilities conflicting (legacy import issue)
- Add two variations of the summoning ability - summon according to summoning level (like the spells), or summon a random creature of a particular species
- Fix touch abilities using the range as chance to use

Changes to dialog engine:
- Fix tab order handling to exclude fields that are currently hidden
- Add method to retrieve the parameter passed to toast(), as a quick way to distinguish between the user clicking OK or Cancel after run() has exited
- Fix hidden fields being drawn anyway
- Fix setting stack page sometimes crashing if the current page was invalid due to earlier reducing the page count to 0
2015-01-20 17:18:41 -05:00
d614286fec Fix edit event special node using the button as the node number 2015-01-20 17:18:40 -05:00
20db55d1b2 Some fixes/tweaks to monster ability imports and names 2015-01-20 17:18:39 -05:00
7084991e55 Get the edit monster abilities dialog all working and updated (except for editing individual abilities)
Game changes:
- Remove support for playing a sound and displaying strings when a monster is first seen, since these behaviours can easily be obtained by using the special node called in the same context.
Dialog engine changes:
- Support for changing the font size of LEDs
- When setting the page, a stack now applies a default value if the map is missing the required data
- Add utility "addPage" method to stacks
- If reducing the page count means the current page is deleted, a stack now switches to the last page
2015-01-20 17:18:39 -05:00
1441f6bfe9 Fix misalignment of statue attack graphic 2015-01-20 17:18:38 -05:00
5f58b15d8f Fix poison monster ability from legacy scenarios activating on all attacks instead of just the first, for monsters with multiple attacks 2015-01-20 17:18:37 -05:00
967438ecec Add dialog to the scenario editor to let it know what type of graphics are in the custom sheets
- If you do this, it adds the graphics to all relevant select graphic dialogs, at the end, allowing you to choose custom graphics without having to remember the number schemes
2015-01-20 17:18:37 -05:00
181227f79d Fix issues with automap display 2015-01-17 20:06:43 -05:00
3852ca37cd Make monster resistances a percentage and update monster info dialog
- Fix monster roster menu not working
2015-01-17 18:56:15 -05:00
cdeb02c214 Get the edit monster dialog completely working and updated for new stuff
(Just the main dialog, not the abilities dialog)
2015-01-17 16:56:37 -05:00
3d7fcbd60e New special node to initiate conversation (should even work outdoors) 2015-01-17 15:00:22 -05:00
4e2c0100e8 Strictify and use talk node type enum 2015-01-17 02:41:25 -05:00
544cc80e56 Add special nodes that hook into the spell targeting system
- Node to initiate targeting mode and call a special once targets are chosen
- Nodes to place a spell pattern (one for fields and one for booms)
2015-01-17 02:09:50 -05:00
4ae1bf1d24 Make room to add more town specials by shifting the rectangle specials up 2015-01-17 01:48:41 -05:00
bd3df18fb1 Various stuff
- Export of monster missiles and summons
- Rendering support for custom PC graphics
- Fix display of stats on startup screen
- Fix implementation of animate attack node
2015-01-17 00:07:43 -05:00
e2093b5997 Update special node opcodes 2015-01-16 23:14:30 -05:00
c5e302e0cc Several new special nodes
- A set of nodes for building complex strings in a string buffer; to reference the string buffer anywhere a string is expected, you can use -8 as the string number
- A node to pause the action for a specified period of time
- Nodes to alter traits, action points (only in combat), and PC/monster names
- Node to create a new level 1 PC with a specified race, name, graphic, hp, sp, basic stats; custom graphics supported too
- Nodes to test for deadness, spells, alchemy, and status effects
- Node to centre the view on an arbitrary space
- Node to lift the "fog of war", which currently means the unseen and light masks (which can actually be disabled in preferences anyway)
- Node to edit maps (ie, specify which areas are explored)
Changes to existing nodes:
- All the rectangle nodes that affect terrain now work outdoors.
- Play sound node now has an asynchronous option
- Fix min and max modes being swapped in the check statistic node
- Select PC now allows restricting to dead PCs or to PCs with free inventory space
- Select PC now calls the "on cancel" node if a non-interactive selection fails
- Affect deadness node now allows: setting/clearing the "fled outdoor combat" flag; setting/clearing the "absent" flag used for splitting the party; (un)deleting a PC
- If context node can now check if the party is in a specific boat/horse as opposed to any boat/horse
2015-01-16 22:57:39 -05:00
e5f44de4fe Move a lot of item-related functions into the player and party classes
- Rearrange alchemy code a little to fix a possible situation with two-ingredient potions where you only have one of the first ingredient - instead of removing the second ingredient, it would have removed the next item in your inventory
- Equippable item abilities that have an ability strength now stack if you have multiple items with the same ability equipped
2015-01-16 16:40:54 -05:00
d729bcc86b Merge all the status effect special nodes
- It's now possible to affect weapon poison, martyr's shield, acid, and life detection from a special node
- Affect nodes now always take resistances into account when harming, but never when helping
2015-01-16 10:33:57 -05:00
39723d1a94 Fix character editor build
(Was broken with the party splitting changes)
2015-01-16 03:40:20 -05:00
4ae8f7661e Fix scenario editor build
(Was broken with the monster abilities rewrite)
2015-01-16 03:36:20 -05:00
efad33bddf Fix avatar spell doing nothing when cast outside of combat mode 2015-01-16 03:23:16 -05:00
31b63b1ab7 Change party status effect display to use small icons instead of text
Also:
- Redo PC status effect drawing to use a loop
- Add status icon for hyperactivity effect
- Fix display of monster name/AP on the text bar
2015-01-16 03:22:50 -05:00
71ce8946a0 Changes to split party implementation
- Supports playing arbitrary sound along with the split (rather than just teleport sound or no sound)
- Correctly imported from older save files
- Support for splitting off an arbitrary subgroup of the party rather than just a single PC (though the special node doesn't yet allow this)
- Support for leaving town while split - if you leave town, the absent PC's items are not dropped on the ground when later entering a town
- Option to not change location when reuniting
- If you reunite in a different town than you started, you are returned to the town you split from
2015-01-16 01:51:59 -05:00
5d9fd3cb5d Introduce enum to represent the whole-party statuses, and stop storing them in the stuff-done array.
- Also fix display of text on the text bar
2015-01-16 01:01:06 -05:00
9433060890 Changes to select/affect special nodes
- Select PC node can now select a specific monster, rather than a PC; it's renamed to Select Target
- Damage node no longer allows setting pic to 1 to damage active PC in combat
- Damage node now accepts a sound to accompany the damage
- Damage node now works on monsters
- All affect nodes that can work on monsters no longer get the monster to affect from ex2a - instead, they use the currently selected target

The default target selected when a special node chain begins execution has changed.
- When called in certain contexts (kill/see monster, monster special ability), the monster that triggered the node is the default target.
- In the use/target space contexts, if there's a monster on the space, it's selected as the default target.
- If neither of the above hold and the game is in combat mode, the currently active PC is selected
- Otherwise the previous behavour is used - if the party is split, select the sole PC, otherwise select the whole party.
2015-01-16 00:14:41 -05:00
aaa3cde16b Lots of special node changes
- Moved change/swap/transform terrain to the General section
- Merge change outdoor terrain into general change terrain
- Merge if town/outdoor terrain nodes
- Merge the if+take nodes with the equivalent base nodes
- Merge secret passage node into the can't enter node
- Move outdoor shop to the General section since it's not restricted to outdoors
- New story dialog node displays a sequence of strings one at a time, like the Exile 2 intro dialog
- New town nodes for animations: run missile, animate monster attack, draw simple boom with optional damage number
- If fields node expanded - now checks if the count of the desired field type existing within a specified rectangle falls within a given range
- Place items and move items nodes can now set the items as contained, provided there's a container on the destination space
- All rectangle nodes can now be restricted to just the boundary, as per the documentation
2015-01-16 00:06:12 -05:00
96f14d3a38 Several more little tweaks/fixes
- Fix PCs sometimes taking damage when they shouldn't due to the marked damage field not being initialized
- Fix targeting not hitting the correct space when the screen is shifted
- Fix target space special node node being called in combat
- Move monster marked damage into cCreature
2015-01-15 20:05:54 -05:00
0b9593f3d1 Tweak monster ability system to reduce mechanical changes relative to original BoE 2015-01-15 16:13:48 -05:00
ac77552a0b Reform the monster attacks structure
- Use enum for attack type
- Eliminate conversion between new structure form and original integer form
2015-01-15 15:34:08 -05:00
ab03e17cb1 Fix some display update issues 2015-01-15 15:11:39 -05:00
7b55262ed4 Several little fixes
- Fix custom missiles causing a crash if graphic not found
- Fix display in transcript of damage taken by monsters
- Fix missile start items not having their missile graphic set
- Fix immunity fields being signed (which would've prevented immunities from working properly)
- Don't bother generating a random number if min and max are the same
- Fix monster attack types not showing right
- Fix checking for item abilities returning 0 instead of 24 when not found
- Fix not updating screen when switching active PC
2015-01-15 15:03:32 -05:00
399572adf6 Rewrite the implementation of monster abilities
- Abilities are much more generic, but also much more complex; a set of "templates" is provided to try to make it more accessible
- There is now a possibility for monsters to charm each other
2015-01-14 22:37:43 -05:00
f282c06bfa Write the code to save the general scenario data to a file
- See monster strings are now fetched from the same list as the special encounter strings instead of a list of their own
- There is now a possibility for the scenario intro dialog to have a different icon than the scenario icon
- Remove unused intro_mess_len field
- Add method to the XML printer class to push a simple element with no attributes or child elements
- Automatically close any elements before writing the document to the stream
- Fix scenario editor File menu having an invisible "Close All" option that appeared when the option key was pressed
2015-01-13 20:54:51 -05:00
0aec4c4c5d Create utility class for writing XML files to a stream 2015-01-13 17:32:36 -05:00
45bbed03f3 Remove the "reserved" fields from cItem 2015-01-13 16:38:25 -05:00
5587bbb0f2 Allow items to specify their missile animation and also allow for custom missiles
- Custom missiles are untested
- Items with custom missiles export the missile graphics in the party sheet
2015-01-13 14:40:53 -05:00
52c7bc126f Rename m_num_t -> mon_num_t 2015-01-13 13:52:02 -05:00
2a3ff63846 Use the defined constants for monster abilities as much as possible
- New monster ability: radiate blade fields
- Fix permanent martyr's shield giving immunity to fire walls
- Fix paralysis ray giving immunity to ice walls
- All monsters that radiate fields are now immune to the fields they radiate
2015-01-13 13:24:18 -05:00
2a41b68129 Split monster immunities bitfield into more comprehensible chunks.
- Monsters now properly decide whether they can enter damaging terrains
- The possibility of being unusually vulnerable to a damage type is introduce - such monsters would take double damage from that type
2015-01-13 12:33:04 -05:00
12c87a85af Merge more item abilities
- The strength, dexterity, and intelligence abilities have been merged; it's now possible to make items that boost some other skill, though the handling for this is not yet implemented.
- The occasional haste/bless/disease abilities have been merged.
- Move affect_pc and affect_party functions into cPlayer and cParty respectively
2015-01-13 11:45:45 -05:00
d6aeba8e0f Merge and generalize more item abilities
- It's now possible to create an item that protects from any type of damage, status effect, or species (though some status effects may not be implemented)
- It's now possible to create slayer weapons for any species
2015-01-13 10:35:12 -05:00
84689cacaf Strictify damage type enum 2015-01-13 00:12:47 -05:00
032c276552 Handle more status effects for weapon abilities 2015-01-12 23:18:21 -05:00
6777d07c03 Fix indentation 2015-01-12 22:45:07 -05:00
c88b0f6386 Split out the per-weapon PC attack code into a function to reduce duplication
- It's now at least theoretically possible to have poison applied to your secondary weapon; since the primary weapon is whichever one appears first in your inventory, this might be possible if you apply poison and then equip a second weapon
2015-01-12 22:36:39 -05:00
0dece71686 Fix some issues where some aspects of the prefab party leaked into loaded games 2015-01-12 21:19:51 -05:00