Commit Graph

821 Commits

Author SHA1 Message Date
c86ebebcdd Fix indentation 2015-01-25 23:06:21 -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
79e03bc544 Fix indentation 2015-01-25 19:15:56 -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
7f8f18a5fb Several minor fixes
- Bound-check occasional party statuses
- Martyr's shield no longer ignored in attacks between monsters
- Fix food/gold decreasing when a monster with a steal food/gold ability attacks a monster
2015-01-24 20:07:13 -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
44a235673f Update XCode project's knowledge of the file encodings 2015-01-23 22:15:44 -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
fd41f2fb20 Fix some things that broke in recent commits 2015-01-23 21:48:36 -05:00
9b067b62e4 Implement writing of town/outdoors map data to file 2015-01-23 18:21:20 -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
869c629b8b Update the edit placed item dialog
- Fix weapon enchantments
2015-01-23 15:56:18 -05:00
78cdadc13c Fix arrow buttons in edit special item dialog 2015-01-23 14:40:15 -05:00
c63544054f Mass rename of variables in the scenario editor dialog handlers 2015-01-23 14:33:10 -05:00
dbb661d0e5 Nuke some globals 2015-01-23 13:56:53 -05:00
cf85ea7f5a Fix/update the edit placed monster dialogs
- Also, edit monster dialog now shows default facial pic
2015-01-23 13:37:47 -05:00
72dfea868f Fix charges in preset items being ignored (except for food/fold) and introduce possibility of placing enchanted items in towns (lacks editor support though) 2015-01-23 04:27:44 -05:00
41db6dcfdf Fix indentation 2015-01-23 04:06:06 -05:00
bbbdccbd81 Fix PC editor build 2015-01-23 02:58:17 -05:00
f574281c3f Make monster/item lists in party town record dynamic 2015-01-23 02:53:36 -05:00
d9b9130d00 Make monster/item lists in scenario town record dynamic; move monsters to town superclass 2015-01-23 01:23:43 -05:00
df6222abda Restore the use of a separate class for town preset creatures 2015-01-22 23:39:59 -05:00
ac4441f33e Implement writing town to XML 2015-01-22 21:36:54 -05:00
5e21b8d4be Add three more map features to the map parser 2015-01-22 21:36:53 -05:00
34ee2b2c29 Introduce enum for monster time flags
- Also, this probably fixes the issues with certain time flags (particularly the "sometimes ones) not working correctly
2015-01-22 21:36:53 -05:00
aa705fac13 Implement writing outdoor sector to XML 2015-01-22 21:36:46 -05:00
952d81ae5a Store rect descriptions together with their rectangle and remove now-unused string-length members 2015-01-22 15:19:26 -05:00
3e0e3d3b8a Implement saving monster definitions to XML 2015-01-22 14:33:28 -05:00
670e35f9d5 Implement writing item definitions to XML 2015-01-22 12:22:40 -05:00
ee27e5341d Implement writing terrain definitions to XML 2015-01-22 11:23:44 -05:00
faac33f664 Whoops, this wasn't supposed to be committed 2015-01-22 11:18:13 -05:00
df4dc3bf21 Extract saving of main scenario data into a subroutine 2015-01-22 10:28:38 -05:00
6a08476d22 Create dialog for editing large terrain object definitions
- Remove keybindings from terrain dialog arrow buttons
- Fix arrow buttons not bound-checking fields

Dialog engine:
- Fix fields crashing after text is set while it has focus
- Trigger focus handler on untoast() to balance that in toast()
2015-01-22 10:22:59 -05:00
5315655bc6 Fix up some minor issues with the special node editing dialog
- Also: merge "nuke monsters" and "destroy monster" nodes, since the action of the "destroy monster" node isn't what it sounds like; now it simply destroys a single monster on a specific space
2015-01-21 22:36:00 -05:00
e689ed93ef Update the in-game item info dialog and restore support for long item descriptions 2015-01-21 21:26:23 -05:00
41fbd73ef9 Get the scenario, town, and outdoor details dialogs updated for new stuff
- Advanced town details now offers edit buttons to edit the specials immediately

Changes to dialog engine:
- Fix tiny buttons stretching to fill label area
- Fix LEDs stretching if label area is higher than LED button
- Fix LEDs ignoring font setting
2015-01-21 15:59:09 -05:00
2a2e7068d0 Exploding weapon ability now properly sets the spell pattern for targeting
- Also fix good constitution trait having no effect on disease
2015-01-21 14:07:59 -05:00
311a3c0702 Get the item abilities dialog working and updated for new stuff
- Add additional treasure type for "unique" items
- Main item dialog now shows the item ability's display name, and also has more space for the item's full name
- (Game) No-ammo missiles (eg slings) are now counted as weapons by shops
- (Dialog Engine) Fix LED groups being drawn when invisible
2015-01-21 14:04:40 -05:00
fb607f83c1 Create enum for stat screen mode 2015-01-21 13:53:29 -05:00
53677398de A few more item abilities
- Weapon ability that drains spell points (works at both melee and range)
- Armor abilities that boost groups of stats - one for all combat stats, one for all magic stats
- Item ability that occasionally increases light level when it's dark (works even in towns with no light)
- Renumber the usable abilities to fill in gaps
- Usable light ability can now decrease light as well as increase
2015-01-20 23:59:15 -05:00
74ed88f2f3 Several new item abilities and one new monster ability
- Range augment ability for missiles
- Seeking ability for missiles (can strike an adjacent space if targeted space lacks a target, including chance of hitting invisible monsters)
- Weapon that calls node when attacking with it (works both in range and melee; the cases can be distinguished by the node with IF_CONTEXT)
- Armour that calls node when attacked while wearing (works both in range and melee; the cases can be distinguished by the node with IF_CONTEXT)
- Monster ability that calls node when monster attacked (works both in range and melee; the cases can be distinguished by the node with IF_CONTEXT)
- The above three only apply to non-magical attacks - some things don't trigger it, like spells, monster rays and breath weapons, possible a few others
- Armour that protects from all melee damage (including demon/undead, though less)
- Armour that decreases chance to be hit (both in range and melee, against non-magical attacks only)
- Armour that behaves like to the martyr's shield effect but also has a chance of adding some extra bonus damage
- Armour that's more encumbering than advertised (best for cursed items with concealed ability)
- Multiple items with the accuracy ability now stack
- Fix nephilim not getting their racial bonus to missile weapons
- In specials called as part of an attack, the reserved pointer -20 contains the target in a form ready to pass to a SELECT_TARGET node, while -21 and -22 contain the location of the target. This includes the new cases added in this commit plus the monster ability to call a special node on its turn. It does not include specials called in the spell targeting context (to do so would break legacy scenarios), nor specials called after a targeting node.
- If a PC is carrying more than their max weight, they gain encumbrance equal to one-tenth of the excess.
- Add some missing context cases to IF_CONTEXT node
2015-01-20 21:40:48 -05:00
7837459177 New item variety: Special
- When picked up or purchased, the party gains a special item
2015-01-20 17:45:15 -05:00
decdc3111b Don't account for strength bonus from items when adding HP at level-up 2015-01-20 17:18:48 -05:00
24f2bf455d Merge missile and melee weapon abilities
- Missiles now support arbitrary status effects (not just acid)
- Melee weapons now support the exploding ability (though such a weapon wouldn't be that great for the wielder)
- Melee weapons now support the heal target ability
- Lightning missile ability merged into damaging weapon abilit
- Missile slayer ability merged into slayer weapon ability; existing slayer weapons are slightly weakened (-1 damage for demons, -2 damage for undead)
- Exploding weapon ability now supports arbitrary damage types (not just fire)
- Missile weapons now support the weak weapon ability
- Missile weapons now support the soulsucker ability
- When firing a missile at a PC, all secondary effects now take place
- Fix thrown weapons, which were broken by the key weapon skill generalization
2015-01-20 17:18:47 -05:00
42639882e3 Add option to call a scenario special node to apply the effect of a trap
Also:
- The possible traps resulting from "random trap" is expanded to include the knife trap
- A custom picture can be specified for the trap dialog
- A given custom trap special node can be reused for the same trap with different levels - the pointer -5 holds the trap level passed to the ONCE_TRAP node
2015-01-20 17:18:46 -05:00
4c271140c6 Allow items that boost skills other than the three basic stats (STR/DEX/INT)
Where stat-boosting items were already accounted for, the effects remain unchanged by this; however, some additional effects have been added.

Strength-boosting items have the following new effects:
- Increases hit points gained on level-up
- Increases amount PCs can carry
Dexterity-boosting items have the following new effects:
- Increases hit chance in unarmed combat
Intelligence-boosting items have the following new effects:
- Increases effectiveness in a mindduel
2015-01-20 17:18:45 -05:00
54a8ae8213 Merge more item abilities
- Bliss and doom merged into single ability (distinguished by item use type)
- The three party status abilities merged into one
- Major healing now has a negative version
- Summoning and mass summoning now use first ability data to determine duration; second ability data determines monster
- Added generic use message for spell abilities that didn't already have a specialized message
- Mass summoning no longer redundantly recalculates random number of summons after each summon
2015-01-20 17:18:44 -05:00