Conditions can be used to create passive, temporary, or periodic effects attached to a player. You can use them to temporarily buff a player or to deal damage over time to them. The on-screen interface displays icons to represent the conditions currently affecting the player below their health and mana display.
Here is the full list of changes:
- Fixed a bug in the on-screen shopkeeper display that would let you buy items you couldn't afford.
- Updated the on-screen shopkeeper to show prices. Also set the cost var of the items the shopkeeper sells.
- Updated the shopkeeper NPC to display a greeting using the prompt() proc.
- Added player-chat.dm which contains code to manage global chat.
- Updated the interface to support player chat.
- Made the info box disappear while you're moving and only appear after you've been standing still for two seconds.
- Changed the way cooldowns work. Now the library stores the soonest time you can use each ability again instead of using spawn() to clear each one.
- If you call cooldown(x, y) while x is on cooldown, it's duration will be set to y (provided that's longer than the current remaining duration).
- Updated the combat procs and events to handle damage that comes from null or unknown sources. Previously if you called mob.lose_health(10) it could cause a runtime error, now it doesn't.
- Added conditions.dm which defines the /Condition object that you can use to create buffs or debilitating effects.
- Added the condition_applied and condition_removed events that are automatically called when a condition is applied or removed.
- Added the mob.conditions list which is a list (that's automatically maintained) of the conditions affecting the mob.
- Added the Poison ability to the sample game which shows how to use conditions to create an ability that deals damage over time. Also added a new kind of enemy that poisons the player.
- Added the mob.clear_cooldown() proc which clears each cooldown passed to it.
- Added the set_max_health, gain_max_health, and lose_max_health procs which can be used to modify a mob's max_health value.
- Added the gain_mana, lose_mana, gain_max_mana, lose_max_mana, and set_max_mana proc which are used for modifying a mob's mana and max_mana values.
- Expanded the sample game's stats to include power, speed, and defense instead of just attack and defense. Power was substituted for attack.
- Expanded the combat in the sample game to give you a chance to dodge attacks and get critical hits (both are based on your speed var).
- Made mobs only yield experience and money if they were killed by another mob, so that you can't get experience and money for killing yourself.
- Added hud-conditions.dm which contains the on-screen interface for showing a list of conditions that are currently applied to the player.
I'd also like to provide some basic AI as part of the framework so you can make mobs that wander, acquire targets, and attack them by just setting some variables (to control the distance they wander, attacks they use, etc.). I'd like for the code in the sample game to be as simple as possible and this would provide a way to move some code out of demo\enemies.dm
Also, I'd like to eventually add interfaces for trading items and putting items in a bank.