Commit Graph

181 Commits

Author SHA1 Message Date
5bfae50315 Traits and races
- Vahnatai race implemented
- Pacifist trait implemented
- New trait: Anama - classified as a disadvantage but also has some perks
- PCs with bug race now immune to web fields
- PCs with undead/demon races now do that type of damage on unarmed attacks

The new races and traits probably still need some work/balancing.
2015-02-05 17:33:12 -05:00
8d4cea7d0b Complete implementation of saving new-format scenarios and write version-check and loading stub for new-format scenarios 2015-02-04 19:48:31 -05:00
36491c818c Implement a dialog to edit shops in the scenario editor 2015-02-04 13:55:22 -05:00
05e64b4407 Add three new types of shop entries and implement support for limited stock in shops
- Random item of special class (works much the same as random item of treasure class)
- Specific item, with percentage chance
- Item whose purchase calls a special node
- Limited stock is only supported for standard items, optional items, and special node hooks
2015-02-03 20:32:34 -05:00
2728b06f1a Finish implementation of creating a new scenario 2015-02-03 15:35:32 -05:00
fcd29fb2ac Fix scenario editor build and update data/docs regarding shop nodes 2015-02-03 13:53:03 -05:00
008248a947 Rewrite shops system to be more general
- Shops can now contain more than one type of item (for example, both mage and priest spells)
- Shops can now specify any talking portrait
- Healing options in a shop now have an info button giving a brief explanation (partly because it was easier than maintaining the exception)
- Additional healing option (not present in default healing shops): cure acid
- Acid is also no longer removed when you leave town or end combat (unless it's about to wear off)
- Always start shop mode with the scrollbar scrolled to the top
- Fix crash when entering an outdoor shop (and outdoor dialogue for that matter)
- Treasure generation system can now return junk items (treasure type 0), but only if explicitly requested; this is possible in shops but not with monsters since 0 means no loot

Dialog Engine:
- When setting a scrollbar's maximum, it now ensures the current position doesn't end up greater than the maximum
2015-02-03 11:15:26 -05:00
559663dd35 New special nodes to store/unstore PCs outside the party structure
- Stored PCs are lost when you leave the scenario
2015-02-02 14:18:30 -05:00
8d23bbc788 Move creature text member functions into general file
- This finally fixes the PC editor build
2015-02-02 12:44:39 -05:00
ea49a13ff8 Revert petrify to being handled by freestanding functions
- Also change kill/damage to take a player/monster reference instead of an index
2015-02-02 12:41:17 -05:00
b11e934162 Rewrite automatic trim placement to use the generalized attributes of the terrain spaces 2015-02-02 11:38:40 -05:00
7df8f84258 Fix a few missing switch cases 2015-02-02 11:38:39 -05:00
ae7c8e12db More removal of reliance on hard-coded limits 2015-02-02 11:38:39 -05:00
a2ae288022 Remove the limit on the number of placed specials per town or outdoor sector 2015-02-02 11:38:38 -05:00
d42c4fff08 Alter boat specials fix to insert new special nodes if there's no unused ones, taking advantage of the fact that the lists of special nodes are now dynamically sized 2015-02-02 11:38:38 -05:00
eaeb9690c3 Remove the limits on the total number of special nodes in the game 2015-02-02 11:38:37 -05:00
c37ede5a04 Make a lot of code stop relying on hard-coded sizes 2015-02-02 11:38:37 -05:00
15a802f63d Officially move version info up to 2.0 2015-02-02 11:38:37 -05:00
07054eb465 Move most of the methods affecting specific status effects into the appropriate files
Other changes:
- PC-on-PC attacks now account for the target's dexterity, evasion items, and parry status
- Harmful spells that inflict a status effect now work if targeted on a PC
- Turn Undead, Dispel Undead, Ravage Spirit spells, when cast by a PC, now consider the possibility of undead/demon party members, and work if targeted on them
- Forcecage is now allowed for monster touch/ray abilities
- Items that inflict curses, slowing, or webs now account for items that grant resistance
2015-02-02 11:38:37 -05:00
4f93e8ea5a Update special node and talking node strings/data for the new quest stuff
- Also, Update Quest node now uses the mess1/2 fields.
2015-02-02 11:38:36 -05:00
4efcb08932 Implement a quest system and job board
- The job board is loosely based on Exile III's job board; the dialog is converted from the one contained as a relic of E3 in BoE
- Quest system is loosely based on a mix of Exile III jobs and Blades of Avernum quests
- Talking to a monster (even a hostile one) can now trigger an arbitrary special node

Dialog engine:
- LED's now support wrapped labels
2015-02-01 01:30:15 -05:00
db627e54a8 Fix mountains and cave wall being considered walls for the purpose of trims 2015-01-30 21:47:43 -05:00
5364d9cb62 New spells that can be attached to items:
- Augmentation - gives one PC bonus hit points
- Nirvana - gives one PC negative dumbfounding and bonus spell points
- Icy Rain - like Firestorm, but cold damage
- Flame Aura - Damages spaces adjacent to caster
- Summon Aid - Like Summoning, but only summons one
- Major Summon Aid - Like Major Summoning, but only summons one
- Flash Step - Short-range teleport
- Fix Blade Aura spell not having refer and timing information; it also had the wrong ID (82 instead of 72
2015-01-30 17:12:16 -05:00
2de0b76454 Merge all the shopping talk nodes together into a single node type
Also:
- Fix items in magic shops respawning when re-entering the shop
- Remove unused food shop type
2015-01-30 12:56:01 -05:00
97153e9576 Prepare for talking reform by making the import function robust against enum rearrangement 2015-01-30 01:23:04 -05:00
7a59776189 Various special node fixes/tweaks
- Fix secret passage nodes (CANT_ENTER with ex1a = 0, ex2a = 1) not working
- Set many flags now sets the entire row of 50 flags
- Division node now accepts either SDF to be null
- New mode for append item to buffer - adds the item's "interesting string" rather than its name
- Affect mage/priest spell inverted the meaning of ex1b relative to other affect nodes; this has been fixed
- Fix affect party status being confused about which fields mean what (the implementation had one idea, and the porting of old scenarios had a different idea, and the scenario editor had yet a different idea). In addition, it now allows removing the statuses.
- Fix some typos in special node information for the editor
2015-01-29 22:48:42 -05:00
28a630d9e7 Fix an ability strength of 7-10 being worse than one of 6 for protect form damage/species abilities. 2015-01-29 17:07:29 -05:00
b3106ff1f2 Outdoor specials were triggered in a boat in original BoE, so remove the workaround to prevent it. 2015-01-29 02:02:13 -05:00
62965891db If in a boat and on a passable space (such as a bridge), pausing now allows you to leave the boat.
Pausing again boards the boat once more.
2015-01-29 02:01:29 -05:00
76295e2f25 Separate summoned monster duration from whether it was summoned by the party 2015-01-28 17:43:22 -05:00
a4350ca8b2 Add two new monster races to account for previously-hardcoded special cases
- Skeletal undead are distinguished from normal undead in that they leave sfx bones when they die; normal undead leave no sfx. In all other respects, they are the same.
- Goblins are distinguished from other humanoids in their death sound. In all other respects, they are the same.
- The sleep() function for players now checks for racial immunity - eg undead, plants, etc
- Protect form humanoids now also protects from sliths, nephilim, vahnatai, and goblins, as it should (this is legacy behaviour)
- Protect from undead still also protects from skeletal undead
- The special case for the ogre death sound is removed; that might mean that ogres can now have a femal death sound? I'm not quite sure what the purpose of the exception was.
- The if species node can now check for non-standard races in the party
- When loading a legacy scenario, it attempts to detect skeletal undead and goblins by the presence of the words "Skeleton" and "Goblin" in the name, respectively
2015-01-28 17:04:01 -05:00
a23682306c Finish edit terrain type dialog in the editor and tweak some terrain properties
- Introduce enum for step sounds
- Remove union for treating terrain flags as either signed or unsigned
Editor:
- Add Choose button to select the "transform to" terrain.
- Implement Choose buttons as appropriate for the terrain flags, including editing the special that a terrain calls.
- Range-check the terrain flags.
- Add Custom button to choose a town as the combat arena.
- Fix/tweak/improve several of the terrain flag prompts.
- Fix placing shortcut key in field as its ASCII code instead of the letter
- Fix some of the range checks that were already in place but were incorrect or improperly static
Game:
- The wilderness terrain types now allow specifying how many d6's of food you get when hunting there.
- Crumbling terrain uses flag 2 instead of 3 to determine method (flag 2 was supposed to be strength but was never used)
- Merge two functions that did almost exactly the same thing (namely altering a terrain space and potentially updating conveyor/lights info)
- Merge switch_level into handle_lever since it was the only place it was called
- Remove global store_special_loc; the location is stored in the stuff_done array now
- Change when use/step on terrains will now update lighting if they changed to a terrain with a different light level
- Terrains that call a special no longer support mixed global/local modes - they either always call a local special or always call a global special
- Use previously unused swap_ter function (which did the exact same thing as the swap terrain special node)
Dialog Engine:
- Don't "erase" invisible icons or buttons; it's not necessary, since the entire window is filled with background before the draw() method is called, and it causes problems in case of overlapping elements.
2015-01-28 15:43:58 -05:00
92a20b1c67 Fill in a lot of missed cases (mostly just messages)
- Increase strength of slayer weapons that weren't in the original BoE by making sure that each race applies some multiplier to the ability strength
- Messages for every occasional status effect, both negative and positive. If charm/forcecage, ignore.
- Fix weapon poison not being applied
- Forcecage supported for damaging terrain (in town only, of course) and "affect status" items
- Weapon poison supported for "affect status" items; it differs from "poison weapon" items in that it honours the magic use type and doesn't risk messing up (like the Envenom spell)
- Show error messages when encountering an unimplemented spell or special node
- Fix missing handling of NPCs appearing after town dies when loading a saved town
2015-01-27 23:52:47 -05:00
ea0fbcffc8 Introduce enum for item ability magic use type
- The affect party status now also supports removing each status
- Removing the flight status is similar to flight wearing off normally - it can lead to party death if you're on a blocked space, and even if not you'll probably take some damage.
- Streamlined the item constructors a little with constructor delegation
2015-01-27 21:11:06 -05:00
12d1760fd3 Split "if looking", "if in boat", "if on horse" into separate special node types rather than filing them under "if context" 2015-01-26 22:50:16 -05:00
0069ef7df0 Implement some new preset combat arenas (camp, crops) and generalized loading of a town as the arena 2015-01-26 21:50:36 -05:00
495a0dab54 PC creation tweaks
- Allow scenario designer to specify exactly which towns allow character creation in them
- Clicking the "Empty" name in the edit party dialog is now equivalent to clicking the create button
- Fix dialog not properly focusing after deleting a PC
2015-01-26 19:34:51 -05:00
91c52fca77 Implement customizable background patterns to be displayed behind the game interface based on which town/sector the player is in and whether they are in combat mode, with cascading defaults.
- All the hard-coded background changes are no longer present and not even preserved.
2015-01-26 18:42:54 -05:00
a3c998eaad Enable the hunting code path for an additional advantage of cave lore/woodsman traits
- However, this won't be enabled in legacy scenarios since it requires setting terrain special abilities
2015-01-26 15:16:26 -05:00
4fa0efa7d8 Introduce two dialogs for debugging - a Set SDF dialog and a Debug Help dialog
- sd_legit() moved into cParty class
2015-01-26 14:36:15 -05:00
944457753d Make skill and giant strength item abilities base their strength on ability strength rather than on item level
- Original ability strength is "archived" in case it was the designer's intent, so that it can be easily put back if desired.
2015-01-26 12:16:31 -05:00
7c67ad9909 Fix monsters having the wrong facial portraits 2015-01-26 00:05:05 -05:00
d877df5101 Lots of fixes large and small
- Fix crash while resting outdoors
- Fix screen not going dark while resting
- Fix crash when starting a new game from the death dialog
- Fix several typos that completely broke combat and special encounters
- Fix bless/curse being inverted when applied to PCs
- Fix booms not showing when stepping in damaging fields in combat
- Fix crash when attempting to save a game that has never before been saved (due to clicking cancel at the initial save dialog)
- Fix some of the flickering during animations
- Support "special" damage on PCs - pierces invulnerability much like it does for monsters
- Fix monster missiles sometimes being mistargeted in combat mode
- Fix iLiving->index conversion
- Add special damage to scenario editor list
2015-01-25 23:06:13 -05:00
d396e459a3 Pass around iLiving references instead of target indices in most combat contexts (and some non-combat)
- Fixes PC melee attacks using webs from the wrong PC
- Support for PC-on-PC attacks is in place, though these code paths are currently not entered; could be used for charmed PCs, for example
- In many cases, status effects that don't affect monsters are now supported for them (but still don't affect them... yet)
- The "special" damage from assassination is now handled differently; support for it is no longer hard-coded into damage_monst(), and the message display for it is handled externally from damage_monst(). Also, it's no longer used for any kind of magic weapons.
- Select target special node has changed its way of selecting a specific monster/PC as the target
- Fix monster-on-monster attacks applying poison on all three attacks instead of just the first
2015-01-25 18:24:47 -05:00
99bb11dd3b Split up files so that the scenario editor will build
- cCreature split into seperate file-pair from cMonster/cTownperson
- fileio.cpp split into general, party, and scenario sections
- classes.h file deleted
2015-01-24 21:29:34 -05:00
144945587b Initial stage of major refactor - putting all PC/monster-affecting functions inside the respective classes 2015-01-24 20:02:20 -05:00
d77baefcb5 Add new shop type and enhance existing ones a little
- Shops can now sell skill upgrades without skill point costs (currently available only through special node, not through dialogue)
- Spell shops now show level and spell point cost
- Alchemy shops now show ingredients
- Make use of the constants defined for indexing the shop rects
- Support for arbitrary quantities of items in shops, rather than simply infinite for normal shops and one for magic shops (there's no hook for this yet, though, so it can't be used)
2015-01-23 22:04:48 -05:00
f00675c4f4 Fix BoE build (was broken by enchantments change) and make more use of the direction enum 2015-01-23 18:20:59 -05:00
c4205dda07 A little work on template towns (still not sure how they should work though) 2015-01-23 16:39:51 -05:00
8d352423b3 Rename underscore-initial names in cTown subclasses 2015-01-23 16:16:36 -05:00