Update ent.kod

Giving Living Trees lightning bolt
Update ghostt.kod

Adjusted drop rates to include 10% chance of Keys dropping
Update skel2t.kod

Adjusted drop rates to include 1% of each key
Update skel3t.kod

Adjusted drop rates to include 1% drops of each key.
Update skel4t.kod

Adjusted drop rates to include 5% drops of the keys to return to Brax.
First step towards async mysql thread
Visual Gear Overhaul

I ripped out all the random interwoven code for armor equipping,
replacing it with a single DefenseModifier class+equipped comparison
that includes a new Layer system for future content additions - the gear
with the highest layer number will always be the 'outer' gear for that
slot. For example, shirts, pants, and skirts are layer 0, and will
remain underneath layer 1 armor and robes, despite the items using the
same spots on the player's body.

I've made Masks and Helmets layer 0, while Circlets and Ivy Circlets are
layer 1. This allows players to wear both circlet types over helmets and
masks (and they look perfect). That should allow players to wear masks
during combat without sacrificing their all-important circlets. Helmets
and Magic Spirit Helmets are less common and less pvp-vital, and come
with their own -5 spellpower, so it's not a guarantee that players will
want to use them with a circlet (but we might need to balance them
further).

This is all done through RefreshPlayerVisualGear in player.kod, called
by equipped defensemodifiers upon equip and unequip, which refreshes the
proper outer appearance after each equipment change.
Shields, Bows, Lutes

You can now switch between a weapon + shield, a shield, a bow, and a
lute seamlessly, even with a soldier shield equipped. You can now equip
a different shield while soldiering, and sling your soldier shield on
your back appropriately.
Additional progress towards async mysql code
new structs for queue and record_node
Enqueue and Dequeue fucntions and a proper Consumer thread
Working async MySQL implemented for all current stats.
fixed so queue and thread will not be allocated until checking if MySQL is enabled
adjusted max queue size and lock wait timeout values
Guild Message of the Day

Rank 4 and 5 guild members may set a Guild Message of the Day that all
members logging in will see. The message includes the rank and name of
the person who set it.

'set motd message' sets the Guild MOTD.
'clear motd' eliminates it.

These commands only work on the guild channel (tg). When setting the
MOTD, guild members will not see the guild send itself (it is not sent
out because it is a command).
Ghost time tweaks, self-harm bug fix

Players can now purge themselves (and any other self-harm spell) without
the guildmate protection code interfering.

Murderer ghost time defaults have been upped to 3 minutes.
Innocent ghost time defaults have been lowered to 8 minutes.
Group Combat improvements

* The first kill to join the group now spreads experience to the other
group members.

* A message will inform you when you get experience for a non-group kill
that still shares. For example, if someone killsteals you, or if you're
both fighting the same monster but not grouped.

* The message for group experience is only sent if you actually gain
experience. You won't see a message for mobs too weak to give you
experience.
replace of all ".mid" files in kod files with ".mp3"
Play MP3 in the client using same technique as for MIDI before (MCI/WinAPI)
raised client version
change hardcoded "main.mid" to "main.mp3" in intro module
Spells cast in non combat area will not fizzle.