mooege/mooege — pull request #437 by mdz444 (2012-02-10 23:36:36+00:00)
Title: Powers implementation and basic Monster AI using powers.

This PR primarily contains my powers implementation and new monster ai brain code, but has a few notable changes to other mooege code.

Brain.cs and MonsterBrain.cs have been almost completely rewritten in order to implement a basic AI that reads power snos from mpq data, then randomly select a power and activate a PowerAction. The AI will properly shutdown for some status changes such as stun, blind and being killed.

In Player.cs, there is a basic implementation to support using/generating hero resources: mana, spirit etc.

Also notably, sending ticks to the player clients was moved from Player.Update() to World.Update(). This helped make client timing massively more consistent because before when the tick was sent depended on where the player actor was at in World's actor list. For example this caused lots of problems where sometimes the tick was sent and then client state updates were made, causing a weird lag. Like often projectiles hitting didn't visually register on the client until the projectile had flown way past what it hit.

DWordDataMessage3 has been implemented in CancelChanneledSkillMessage.

I'll put the rest of my notes in source-line comments.