summaryrefslogtreecommitdiff
path: root/example/clientdata/graphics
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2010-12-30 00:38:15 +0100
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2010-12-30 00:38:15 +0100
commit12926decd2af8d0b34b632b2d0b55fc9aa134291 (patch)
treefc40af9ccc156b841ac2c654cf2a7e03d0c843ac /example/clientdata/graphics
parent64b832b8d3aac6dc55103f751fcae6b4dbb423ca (diff)
downloadmanaserv-12926decd2af8d0b34b632b2d0b55fc9aa134291.tar.gz
manaserv-12926decd2af8d0b34b632b2d0b55fc9aa134291.tar.bz2
manaserv-12926decd2af8d0b34b632b2d0b55fc9aa134291.tar.xz
manaserv-12926decd2af8d0b34b632b2d0b55fc9aa134291.zip
Added new example files needed to start a more complete feature-showing map.
I also replaced certain files with newer version, just as the items.xml file. And I started to split test npcs from the tmwserv repository into reusable pieces. Big but trivial. Part of the Mana-Mantis issue: #231.
Diffstat (limited to 'example/clientdata/graphics')
-rw-r--r--example/clientdata/graphics/items/equipment/chest/chest-leathershirt.pngbin0 -> 684 bytes
-rw-r--r--example/clientdata/graphics/items/equipment/weapons/weapon-bow-bow.pngbin0 -> 666 bytes
-rw-r--r--example/clientdata/graphics/items/equipment/weapons/weapon-sword-sword.pngbin0 -> 827 bytes
-rw-r--r--example/clientdata/graphics/items/unknown.pngbin0 -> 540 bytes
-rw-r--r--example/clientdata/graphics/items/usable/usable-candy.pngbin0 -> 562 bytes
-rw-r--r--example/clientdata/graphics/items/usable/usable-minor-health-potion.pngbin0 -> 311 bytes
-rw-r--r--example/clientdata/graphics/items/usable/usable-regenerative-trinket.pngbin0 -> 840 bytes
-rw-r--r--example/clientdata/graphics/items/usable/usable-token-of-speed.pngbin0 -> 1103 bytes
-rw-r--r--example/clientdata/graphics/particles/arrow-down.pngbin0 -> 380 bytes
-rw-r--r--example/clientdata/graphics/particles/arrow-hail.xml23
-rw-r--r--example/clientdata/graphics/particles/arrow.particle.xml14
-rw-r--r--example/clientdata/graphics/particles/arrowh.pngbin0 -> 1372 bytes
-rw-r--r--example/clientdata/graphics/particles/attack.particle.xml60
-rw-r--r--example/clientdata/graphics/particles/emotes/angel.pngbin0 -> 1960 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/blah.pngbin0 -> 822 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/blush.pngbin0 -> 2038 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/disgust.pngbin0 -> 1924 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-angel.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-blah.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-blush.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-disgust.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-evil.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-grin.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-happy.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-perturbed.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-sad.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-speech.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-surprise.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-tongue.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-upset.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/emote-wink.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/emotes/evil.pngbin0 -> 1925 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/grin.pngbin0 -> 2047 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/happy.pngbin0 -> 1734 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/perturbed.pngbin0 -> 1763 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/sad.pngbin0 -> 1918 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/speech.pngbin0 -> 796 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/surprise.pngbin0 -> 2086 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/tongue.pngbin0 -> 1753 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/upset.pngbin0 -> 1632 bytes
-rw-r--r--example/clientdata/graphics/particles/emotes/wink.pngbin0 -> 1680 bytes
-rw-r--r--example/clientdata/graphics/particles/fullbubble-16px.pngbin0 -> 659 bytes
-rw-r--r--example/clientdata/graphics/particles/green-bubbles.particle.xml40
-rw-r--r--example/clientdata/graphics/particles/hit.particle.xml59
-rw-r--r--example/clientdata/graphics/particles/levelup.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/magic.white.xml24
-rw-r--r--example/clientdata/graphics/particles/orb-medium.pngbin0 -> 320 bytes
-rw-r--r--example/clientdata/graphics/particles/orb-small.pngbin0 -> 269 bytes
-rw-r--r--example/clientdata/graphics/particles/skillup.particle.xml23
-rw-r--r--example/clientdata/graphics/particles/sparkle.pngbin0 -> 537 bytes
-rw-r--r--example/clientdata/graphics/particles/star-medium.pngbin0 -> 965 bytes
-rw-r--r--example/clientdata/graphics/particles/star-small.pngbin0 -> 387 bytes
-rw-r--r--example/clientdata/graphics/particles/warparea.particle.xml24
-rw-r--r--example/clientdata/graphics/skills/axe.pngbin0 -> 1736 bytes
-rw-r--r--example/clientdata/graphics/skills/bow.pngbin0 -> 1791 bytes
-rw-r--r--example/clientdata/graphics/skills/knife.pngbin0 -> 1386 bytes
-rw-r--r--example/clientdata/graphics/skills/mace.pngbin0 -> 1838 bytes
-rw-r--r--example/clientdata/graphics/skills/magic.pngbin0 -> 540 bytes
-rw-r--r--example/clientdata/graphics/skills/polearm.pngbin0 -> 1823 bytes
-rw-r--r--example/clientdata/graphics/skills/shooting.pngbin0 -> 1853 bytes
-rw-r--r--example/clientdata/graphics/skills/staff.pngbin0 -> 1308 bytes
-rw-r--r--example/clientdata/graphics/skills/sword.pngbin0 -> 1641 bytes
-rw-r--r--example/clientdata/graphics/skills/thrown.pngbin0 -> 1583 bytes
-rw-r--r--example/clientdata/graphics/skills/unarmed.pngbin0 -> 2263 bytes
-rw-r--r--example/clientdata/graphics/skills/unknown.pngbin0 -> 540 bytes
-rw-r--r--example/clientdata/graphics/skills/whip.pngbin0 -> 2700 bytes
-rw-r--r--example/clientdata/graphics/sprites/equipment/chest/chest-leather-female.pngbin0 -> 11692 bytes
-rw-r--r--example/clientdata/graphics/sprites/equipment/chest/chest-leather-female.xml104
-rw-r--r--example/clientdata/graphics/sprites/equipment/chest/chest-leather-male.pngbin0 -> 19688 bytes
-rw-r--r--example/clientdata/graphics/sprites/equipment/chest/chest-leather-male.xml104
-rw-r--r--example/clientdata/graphics/sprites/error.pngbin0 -> 347 bytes
-rw-r--r--example/clientdata/graphics/sprites/error.xml10
-rw-r--r--example/clientdata/graphics/sprites/icons/icon-feather.pngbin0 -> 513 bytes
-rw-r--r--example/clientdata/graphics/sprites/icons/icon-feather.xml10
-rw-r--r--example/clientdata/graphics/sprites/icons/icon-poison.pngbin0 -> 1832 bytes
-rw-r--r--example/clientdata/graphics/sprites/icons/icon-poison.xml18
-rw-r--r--example/clientdata/graphics/sprites/monsters/monster-maggot.pngbin0 -> 4541 bytes
-rw-r--r--example/clientdata/graphics/sprites/monsters/monster-maggot.xml66
-rw-r--r--example/clientdata/graphics/sprites/monsters/monster-scorpion.pngbin0 -> 7855 bytes
-rw-r--r--example/clientdata/graphics/sprites/monsters/monster-scorpion.xml70
-rw-r--r--example/clientdata/graphics/sprites/monsters/monster-slime.pngbin0 -> 13722 bytes
-rw-r--r--example/clientdata/graphics/sprites/monsters/monster-slime.xml55
-rw-r--r--example/clientdata/graphics/sprites/weapons/weapon-bow.pngbin0 -> 5751 bytes
-rw-r--r--example/clientdata/graphics/sprites/weapons/weapon-bow.xml26
-rw-r--r--example/clientdata/graphics/sprites/weapons/weapon-fist.xml7
-rw-r--r--example/clientdata/graphics/sprites/weapons/weapon-sword.pngbin0 -> 2016 bytes
-rw-r--r--example/clientdata/graphics/sprites/weapons/weapon-sword.xml27
87 files changed, 1109 insertions, 0 deletions
diff --git a/example/clientdata/graphics/items/equipment/chest/chest-leathershirt.png b/example/clientdata/graphics/items/equipment/chest/chest-leathershirt.png
new file mode 100644
index 00000000..761b9bf6
--- /dev/null
+++ b/example/clientdata/graphics/items/equipment/chest/chest-leathershirt.png
Binary files differ
diff --git a/example/clientdata/graphics/items/equipment/weapons/weapon-bow-bow.png b/example/clientdata/graphics/items/equipment/weapons/weapon-bow-bow.png
new file mode 100644
index 00000000..2ab672dc
--- /dev/null
+++ b/example/clientdata/graphics/items/equipment/weapons/weapon-bow-bow.png
Binary files differ
diff --git a/example/clientdata/graphics/items/equipment/weapons/weapon-sword-sword.png b/example/clientdata/graphics/items/equipment/weapons/weapon-sword-sword.png
new file mode 100644
index 00000000..571fb40e
--- /dev/null
+++ b/example/clientdata/graphics/items/equipment/weapons/weapon-sword-sword.png
Binary files differ
diff --git a/example/clientdata/graphics/items/unknown.png b/example/clientdata/graphics/items/unknown.png
new file mode 100644
index 00000000..9201d688
--- /dev/null
+++ b/example/clientdata/graphics/items/unknown.png
Binary files differ
diff --git a/example/clientdata/graphics/items/usable/usable-candy.png b/example/clientdata/graphics/items/usable/usable-candy.png
new file mode 100644
index 00000000..e3d75c21
--- /dev/null
+++ b/example/clientdata/graphics/items/usable/usable-candy.png
Binary files differ
diff --git a/example/clientdata/graphics/items/usable/usable-minor-health-potion.png b/example/clientdata/graphics/items/usable/usable-minor-health-potion.png
new file mode 100644
index 00000000..a404d6f6
--- /dev/null
+++ b/example/clientdata/graphics/items/usable/usable-minor-health-potion.png
Binary files differ
diff --git a/example/clientdata/graphics/items/usable/usable-regenerative-trinket.png b/example/clientdata/graphics/items/usable/usable-regenerative-trinket.png
new file mode 100644
index 00000000..ba69b570
--- /dev/null
+++ b/example/clientdata/graphics/items/usable/usable-regenerative-trinket.png
Binary files differ
diff --git a/example/clientdata/graphics/items/usable/usable-token-of-speed.png b/example/clientdata/graphics/items/usable/usable-token-of-speed.png
new file mode 100644
index 00000000..25c712f9
--- /dev/null
+++ b/example/clientdata/graphics/items/usable/usable-token-of-speed.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/arrow-down.png b/example/clientdata/graphics/particles/arrow-down.png
new file mode 100644
index 00000000..da94afcf
--- /dev/null
+++ b/example/clientdata/graphics/particles/arrow-down.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/arrow-hail.xml b/example/clientdata/graphics/particles/arrow-hail.xml
new file mode 100644
index 00000000..5372e9a3
--- /dev/null
+++ b/example/clientdata/graphics/particles/arrow-hail.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "400"
+ lifetime = "100"
+ >
+ <!-- <property name="follow-parent" value="0"/> -->
+ <emitter><!-- <property name="follow-parent" value="0"/> -->
+ <property name="lifetime" min="180" max="180"/>
+ <property name="position-x" min="105" max="145"/>
+ <property name="position-y" min="-20" max="20"/>
+ <property name="vertical-angle" value="255"/>
+ <property name="power" value="14"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="10" max="20"/>
+ <property name="gravity" value="0.09"/>
+ <property name="image" value="graphics/particles/arrow-down.png"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/arrow.particle.xml b/example/clientdata/graphics/particles/arrow.particle.xml
new file mode 100644
index 00000000..e19e2205
--- /dev/null
+++ b/example/clientdata/graphics/particles/arrow.particle.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "32"
+ lifetime = "128"
+ >
+ <rotation imageset="graphics/particles/arrowh.png" width="16" height="16">
+ <sequence start="0" end="7" />
+ </rotation>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/arrowh.png b/example/clientdata/graphics/particles/arrowh.png
new file mode 100644
index 00000000..11826070
--- /dev/null
+++ b/example/clientdata/graphics/particles/arrowh.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/attack.particle.xml b/example/clientdata/graphics/particles/attack.particle.xml
new file mode 100644
index 00000000..c8dc5f3e
--- /dev/null
+++ b/example/clientdata/graphics/particles/attack.particle.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+
+<!--
+A burst of red particles emitted in a narrow, horizontal cone. Could be
+used to visualize some kind of special attack.
+-->
+
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "16"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="45"/>
+ <property name="horizontal-angle" min="45" max="135"/>
+ <property name="power" min="0" max="6"/>
+ <property name="gravity" value="100"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ff0000"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="6" max="12"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="45"/>
+ <property name="horizontal-angle" min="45" max="135"/>
+ <property name="power" min="0" max="6"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#ff0000,ffffff"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="6" max="12"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="45"/>
+ <property name="horizontal-angle" min="45" max="135"/>
+ <property name="power" min="0" max="6"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#ff0000"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="6" max="12"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="45"/>
+ <property name="horizontal-angle" min="45" max="135"/>
+ <property name="power" min="0" max="6"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-medium.png|W:#ff0000,ffffff"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="3" max="6"/>
+ </emitter>
+ </particle>
+</effect> \ No newline at end of file
diff --git a/example/clientdata/graphics/particles/emotes/angel.png b/example/clientdata/graphics/particles/emotes/angel.png
new file mode 100644
index 00000000..043d0755
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/angel.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/blah.png b/example/clientdata/graphics/particles/emotes/blah.png
new file mode 100644
index 00000000..3eae88a2
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/blah.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/blush.png b/example/clientdata/graphics/particles/emotes/blush.png
new file mode 100644
index 00000000..22172ae0
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/blush.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/disgust.png b/example/clientdata/graphics/particles/emotes/disgust.png
new file mode 100644
index 00000000..9965f89d
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/disgust.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/emote-angel.particle.xml b/example/clientdata/graphics/particles/emotes/emote-angel.particle.xml
new file mode 100644
index 00000000..a4bb1b53
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-angel.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/angel.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-blah.particle.xml b/example/clientdata/graphics/particles/emotes/emote-blah.particle.xml
new file mode 100644
index 00000000..38cb327a
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-blah.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/blah.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-blush.particle.xml b/example/clientdata/graphics/particles/emotes/emote-blush.particle.xml
new file mode 100644
index 00000000..11d2689d
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-blush.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/blush.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-disgust.particle.xml b/example/clientdata/graphics/particles/emotes/emote-disgust.particle.xml
new file mode 100644
index 00000000..b04d18dd
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-disgust.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/disgust.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-evil.particle.xml b/example/clientdata/graphics/particles/emotes/emote-evil.particle.xml
new file mode 100644
index 00000000..433aef30
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-evil.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/evil.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-grin.particle.xml b/example/clientdata/graphics/particles/emotes/emote-grin.particle.xml
new file mode 100644
index 00000000..5c50aa98
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-grin.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/grin.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-happy.particle.xml b/example/clientdata/graphics/particles/emotes/emote-happy.particle.xml
new file mode 100644
index 00000000..fa43997f
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-happy.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/happy.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-perturbed.particle.xml b/example/clientdata/graphics/particles/emotes/emote-perturbed.particle.xml
new file mode 100644
index 00000000..47f92e30
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-perturbed.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/perturbed.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-sad.particle.xml b/example/clientdata/graphics/particles/emotes/emote-sad.particle.xml
new file mode 100644
index 00000000..0e0b7dc8
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-sad.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/sad.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-speech.particle.xml b/example/clientdata/graphics/particles/emotes/emote-speech.particle.xml
new file mode 100644
index 00000000..7d6350b0
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-speech.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/speech.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-surprise.particle.xml b/example/clientdata/graphics/particles/emotes/emote-surprise.particle.xml
new file mode 100644
index 00000000..29498c8f
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-surprise.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/surprise.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-tongue.particle.xml b/example/clientdata/graphics/particles/emotes/emote-tongue.particle.xml
new file mode 100644
index 00000000..2796ac6c
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-tongue.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/tongue.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-upset.particle.xml b/example/clientdata/graphics/particles/emotes/emote-upset.particle.xml
new file mode 100644
index 00000000..4b10d9f2
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-upset.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/upset.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/emote-wink.particle.xml b/example/clientdata/graphics/particles/emotes/emote-wink.particle.xml
new file mode 100644
index 00000000..b217a649
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/emote-wink.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "96"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-32"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-out" value="50" />
+ <property name="gravity" value="-0.02" />
+
+ <animation imageset="graphics/particles/emotes/wink.png" width="30" height="32">
+ <frame index="0" />
+ </animation>
+ <property name="follow-parent" />
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/emotes/evil.png b/example/clientdata/graphics/particles/emotes/evil.png
new file mode 100644
index 00000000..7c417ec6
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/evil.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/grin.png b/example/clientdata/graphics/particles/emotes/grin.png
new file mode 100644
index 00000000..0c21cfe8
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/grin.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/happy.png b/example/clientdata/graphics/particles/emotes/happy.png
new file mode 100644
index 00000000..8ca2930e
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/happy.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/perturbed.png b/example/clientdata/graphics/particles/emotes/perturbed.png
new file mode 100644
index 00000000..0a33e0ad
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/perturbed.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/sad.png b/example/clientdata/graphics/particles/emotes/sad.png
new file mode 100644
index 00000000..3ceb3caf
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/sad.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/speech.png b/example/clientdata/graphics/particles/emotes/speech.png
new file mode 100644
index 00000000..72044719
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/speech.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/surprise.png b/example/clientdata/graphics/particles/emotes/surprise.png
new file mode 100644
index 00000000..e1649a63
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/surprise.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/tongue.png b/example/clientdata/graphics/particles/emotes/tongue.png
new file mode 100644
index 00000000..0d5bc959
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/tongue.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/upset.png b/example/clientdata/graphics/particles/emotes/upset.png
new file mode 100644
index 00000000..b2f0ce2b
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/upset.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/emotes/wink.png b/example/clientdata/graphics/particles/emotes/wink.png
new file mode 100644
index 00000000..13488bb8
--- /dev/null
+++ b/example/clientdata/graphics/particles/emotes/wink.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/fullbubble-16px.png b/example/clientdata/graphics/particles/fullbubble-16px.png
new file mode 100644
index 00000000..93e3b57f
--- /dev/null
+++ b/example/clientdata/graphics/particles/fullbubble-16px.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/green-bubbles.particle.xml b/example/clientdata/graphics/particles/green-bubbles.particle.xml
new file mode 100644
index 00000000..e272d85c
--- /dev/null
+++ b/example/clientdata/graphics/particles/green-bubbles.particle.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!--
+Green poison bubbles
+-->
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "0"
+ >
+ <emitter>
+ <property name="position-z" value="90" />
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="4" max="15"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.1"/>
+ <property name="momentum" value="0.9"/>
+ <animation imageset="graphics/particles/fullbubble-16px.png|W:#80ff80,40a020" width="16" height="16">
+ <frame index="0" delay="80" />
+ <frame index="1" delay="80" />
+ <frame index="2" delay="80" />
+ <frame index="3" delay="80" />
+ <frame index="4" delay="80" />
+ <frame index="5" delay="30" />
+ <frame index="6" delay="20" />
+ <frame index="7" delay="-1" />
+ </animation>
+ <property name="lifetime" value="45"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/hit.particle.xml b/example/clientdata/graphics/particles/hit.particle.xml
new file mode 100644
index 00000000..c5c295fc
--- /dev/null
+++ b/example/clientdata/graphics/particles/hit.particle.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<!--
+An explosion of white particles.
+-->
+
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "16"
+ lifetime = "1"
+ >
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="6"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/orb-small.png"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="6" max="12"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="6"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#ffffff,ffffff"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="6" max="12"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="6"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/orb-medium.png"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="6" max="12"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="6"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-medium.png|W:#ffffff,ffffff"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="3" max="6"/>
+ </emitter>
+ </particle>
+</effect> \ No newline at end of file
diff --git a/example/clientdata/graphics/particles/levelup.particle.xml b/example/clientdata/graphics/particles/levelup.particle.xml
new file mode 100644
index 00000000..0c80626b
--- /dev/null
+++ b/example/clientdata/graphics/particles/levelup.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+Red stars which are supposed to engulf a character
+-->
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "0"
+ lifetime = "128"
+ >
+ <emitter>
+ <property name="image" value="graphics/particles/star-medium.png|W:#ff0000,ffffff"/>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="36"/>
+ <property name="output" min="-5" max="1"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="0" max="32"/>
+ </emitter>
+ </particle>
+</effect> \ No newline at end of file
diff --git a/example/clientdata/graphics/particles/magic.white.xml b/example/clientdata/graphics/particles/magic.white.xml
new file mode 100644
index 00000000..5304b77f
--- /dev/null
+++ b/example/clientdata/graphics/particles/magic.white.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "0"
+ lifetime = "128"
+ >
+ <emitter>
+ <animation imageset="graphics/particles/sparkle.png|W:#e0e0e0,ffffff" width="15" height="15">
+ <sequence start="0" end="3" delay="50" />
+ <frame index="0" delay="100" />
+ </animation>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" min="1" max="1"/>
+ <property name="lifetime" min="15" max="25"/>
+ <property name="output" min="1" max="1"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="29" max="40"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/example/clientdata/graphics/particles/orb-medium.png b/example/clientdata/graphics/particles/orb-medium.png
new file mode 100644
index 00000000..eb896c85
--- /dev/null
+++ b/example/clientdata/graphics/particles/orb-medium.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/orb-small.png b/example/clientdata/graphics/particles/orb-small.png
new file mode 100644
index 00000000..47cf957f
--- /dev/null
+++ b/example/clientdata/graphics/particles/orb-small.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/skillup.particle.xml b/example/clientdata/graphics/particles/skillup.particle.xml
new file mode 100644
index 00000000..91d79e7a
--- /dev/null
+++ b/example/clientdata/graphics/particles/skillup.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+Green stars which are supposed to engulf a character
+-->
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "0"
+ lifetime = "128"
+ >
+ <emitter>
+ <property name="image" value="graphics/particles/star-medium.png|W:#00ff00,ffffff"/>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="36"/>
+ <property name="output" min="-5" max="1"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="0" max="32"/>
+ </emitter>
+ </particle>
+</effect> \ No newline at end of file
diff --git a/example/clientdata/graphics/particles/sparkle.png b/example/clientdata/graphics/particles/sparkle.png
new file mode 100644
index 00000000..7cfbbb26
--- /dev/null
+++ b/example/clientdata/graphics/particles/sparkle.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/star-medium.png b/example/clientdata/graphics/particles/star-medium.png
new file mode 100644
index 00000000..667d2334
--- /dev/null
+++ b/example/clientdata/graphics/particles/star-medium.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/star-small.png b/example/clientdata/graphics/particles/star-small.png
new file mode 100644
index 00000000..4c3bf365
--- /dev/null
+++ b/example/clientdata/graphics/particles/star-small.png
Binary files differ
diff --git a/example/clientdata/graphics/particles/warparea.particle.xml b/example/clientdata/graphics/particles/warparea.particle.xml
new file mode 100644
index 00000000..f4984232
--- /dev/null
+++ b/example/clientdata/graphics/particles/warparea.particle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+Fancy fireworks effect which fills the whole screen.
+-->
+<effect>
+ <particle
+ position-x = "0"
+ position-y = "0"
+ position-z = "1"
+ size-adjustable = "true"
+ >
+ <emitter>
+ <property name="position-x" min="0" max="32"/>
+ <property name="position-y" min="0" max="48"/>
+ <property name="image" value="graphics/particles/star-small.png"/>
+ <property name="gravity" value="-0.003"/>
+ <property name="lifetime" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="0" max="10"/>
+ <property name="fade-in" value="30"/>
+ <property name="fade-out" value="30"/>
+ </emitter>
+ </particle>
+</effect> \ No newline at end of file
diff --git a/example/clientdata/graphics/skills/axe.png b/example/clientdata/graphics/skills/axe.png
new file mode 100644
index 00000000..b2af0347
--- /dev/null
+++ b/example/clientdata/graphics/skills/axe.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/bow.png b/example/clientdata/graphics/skills/bow.png
new file mode 100644
index 00000000..78c4319a
--- /dev/null
+++ b/example/clientdata/graphics/skills/bow.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/knife.png b/example/clientdata/graphics/skills/knife.png
new file mode 100644
index 00000000..61f834c6
--- /dev/null
+++ b/example/clientdata/graphics/skills/knife.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/mace.png b/example/clientdata/graphics/skills/mace.png
new file mode 100644
index 00000000..7958d32f
--- /dev/null
+++ b/example/clientdata/graphics/skills/mace.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/magic.png b/example/clientdata/graphics/skills/magic.png
new file mode 100644
index 00000000..9201d688
--- /dev/null
+++ b/example/clientdata/graphics/skills/magic.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/polearm.png b/example/clientdata/graphics/skills/polearm.png
new file mode 100644
index 00000000..52c8449d
--- /dev/null
+++ b/example/clientdata/graphics/skills/polearm.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/shooting.png b/example/clientdata/graphics/skills/shooting.png
new file mode 100644
index 00000000..e7b0806c
--- /dev/null
+++ b/example/clientdata/graphics/skills/shooting.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/staff.png b/example/clientdata/graphics/skills/staff.png
new file mode 100644
index 00000000..e5c071e0
--- /dev/null
+++ b/example/clientdata/graphics/skills/staff.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/sword.png b/example/clientdata/graphics/skills/sword.png
new file mode 100644
index 00000000..9b6db914
--- /dev/null
+++ b/example/clientdata/graphics/skills/sword.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/thrown.png b/example/clientdata/graphics/skills/thrown.png
new file mode 100644
index 00000000..3fc35de7
--- /dev/null
+++ b/example/clientdata/graphics/skills/thrown.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/unarmed.png b/example/clientdata/graphics/skills/unarmed.png
new file mode 100644
index 00000000..adb139ed
--- /dev/null
+++ b/example/clientdata/graphics/skills/unarmed.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/unknown.png b/example/clientdata/graphics/skills/unknown.png
new file mode 100644
index 00000000..9201d688
--- /dev/null
+++ b/example/clientdata/graphics/skills/unknown.png
Binary files differ
diff --git a/example/clientdata/graphics/skills/whip.png b/example/clientdata/graphics/skills/whip.png
new file mode 100644
index 00000000..e5734e5d
--- /dev/null
+++ b/example/clientdata/graphics/skills/whip.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/equipment/chest/chest-leather-female.png b/example/clientdata/graphics/sprites/equipment/chest/chest-leather-female.png
new file mode 100644
index 00000000..a6efbf9b
--- /dev/null
+++ b/example/clientdata/graphics/sprites/equipment/chest/chest-leather-female.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/equipment/chest/chest-leather-female.xml b/example/clientdata/graphics/sprites/equipment/chest/chest-leather-female.xml
new file mode 100644
index 00000000..b44be8ab
--- /dev/null
+++ b/example/clientdata/graphics/sprites/equipment/chest/chest-leather-female.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<sprite name="player" action="stand">
+
+ <imageset name="base" src="graphics/sprites/equipment/chest/chest-leather-female.png|W;R" width="64" height="64" />
+
+ <action name="stand" imageset="base">
+ <animation direction="down">
+ <frame index="0" />
+ </animation>
+ <animation direction="left">
+ <frame index="18" />
+ </animation>
+ <animation direction="up">
+ <frame index="36" />
+ </animation>
+ <animation direction="right">
+ <frame index="54" />
+ </animation>
+ </action>
+
+ <action name="walk" imageset="base">
+ <animation direction="down">
+ <sequence start="1" end="6" delay="75" />
+ </animation>
+ <animation direction="left">
+ <sequence start="19" end="24" delay="75" />
+ </animation>
+ <animation direction="up">
+ <sequence start="37" end="42" delay="75" />
+ </animation>
+ <animation direction="right">
+ <sequence start="55" end="60" delay="75" />
+ </animation>
+ </action>
+
+ <action name="sit" imageset="base">
+ <animation direction="down">
+ <frame index="7" />
+ </animation>
+ <animation direction="left">
+ <frame index="25" />
+ </animation>
+ <animation direction="up">
+ <frame index="43" />
+ </animation>
+ <animation direction="right">
+ <frame index="61" />
+ </animation>
+ </action>
+
+ <action name="dead" imageset="base">
+ <animation direction="down">
+ <frame index="8" />
+ </animation>
+ <animation direction="left">
+ <frame index="26" />
+ </animation>
+ <animation direction="up">
+ <frame index="44" />
+ </animation>
+ <animation direction="right">
+ <frame index="62" />
+ </animation>
+ </action>
+
+ <action name="attack" imageset="base">
+ <animation direction="down">
+ <sequence start="9" end="12" delay="75" />
+ <end />
+ </animation>
+ <animation direction="left">
+ <sequence start="27" end="30" delay="75" />
+ <end />
+ </animation>
+ <animation direction="up">
+ <sequence start="45" end="48" delay="75" />
+ <end />
+ </animation>
+ <animation direction="right">
+ <sequence start="63" end="66" delay="75" />
+ <end />
+ </animation>
+ </action>
+
+ <action name="attack_bow" imageset="base">
+ <animation direction="down">
+ <sequence start="13" end="17" delay="75" />
+ <end />
+ </animation>
+ <animation direction="left">
+ <sequence start="31" end="35" delay="75" />
+ <end />
+ </animation>
+ <animation direction="up">
+ <sequence start="49" end="53" delay="75" />
+ <end />
+ </animation>
+ <animation direction="right">
+ <sequence start="67" end="71" delay="75" />
+ <end />
+ </animation>
+ </action>
+
+</sprite> \ No newline at end of file
diff --git a/example/clientdata/graphics/sprites/equipment/chest/chest-leather-male.png b/example/clientdata/graphics/sprites/equipment/chest/chest-leather-male.png
new file mode 100644
index 00000000..bc5a3c65
--- /dev/null
+++ b/example/clientdata/graphics/sprites/equipment/chest/chest-leather-male.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/equipment/chest/chest-leather-male.xml b/example/clientdata/graphics/sprites/equipment/chest/chest-leather-male.xml
new file mode 100644
index 00000000..fd46be28
--- /dev/null
+++ b/example/clientdata/graphics/sprites/equipment/chest/chest-leather-male.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<sprite name="player" action="stand">
+
+ <imageset name="base" src="graphics/sprites/equipment/chest/chest-leather-male.png|W;R" width="64" height="64" />
+
+ <action name="stand" imageset="base">
+ <animation direction="down">
+ <frame index="0" />
+ </animation>
+ <animation direction="left">
+ <frame index="18" />
+ </animation>
+ <animation direction="up">
+ <frame index="36" />
+ </animation>
+ <animation direction="right">
+ <frame index="54" />
+ </animation>
+ </action>
+
+ <action name="walk" imageset="base">
+ <animation direction="down">
+ <sequence start="1" end="6" delay="75" />
+ </animation>
+ <animation direction="left">
+ <sequence start="19" end="24" delay="75" />
+ </animation>
+ <animation direction="up">
+ <sequence start="37" end="42" delay="75" />
+ </animation>
+ <animation direction="right">
+ <sequence start="55" end="60" delay="75" />
+ </animation>
+ </action>
+
+ <action name="sit" imageset="base">
+ <animation direction="down">
+ <frame index="7" />
+ </animation>
+ <animation direction="left">
+ <frame index="25" />
+ </animation>
+ <animation direction="up">
+ <frame index="43" />
+ </animation>
+ <animation direction="right">
+ <frame index="61" />
+ </animation>
+ </action>
+
+ <action name="dead" imageset="base">
+ <animation direction="down">
+ <frame index="8" />
+ </animation>
+ <animation direction="left">
+ <frame index="26" />
+ </animation>
+ <animation direction="up">
+ <frame index="44" />
+ </animation>
+ <animation direction="right">
+ <frame index="62" />
+ </animation>
+ </action>
+
+ <action name="attack" imageset="base">
+ <animation direction="down">
+ <sequence start="9" end="12" delay="75" />
+ <end />
+ </animation>
+ <animation direction="left">
+ <sequence start="27" end="30" delay="75" />
+ <end />
+ </animation>
+ <animation direction="up">
+ <sequence start="45" end="48" delay="75" />
+ <end />
+ </animation>
+ <animation direction="right">
+ <sequence start="63" end="66" delay="75" />
+ <end />
+ </animation>
+ </action>
+
+ <action name="attack_bow" imageset="base">
+ <animation direction="down">
+ <sequence start="13" end="17" delay="75" />
+ <end />
+ </animation>
+ <animation direction="left">
+ <sequence start="31" end="35" delay="75" />
+ <end />
+ </animation>
+ <animation direction="up">
+ <sequence start="49" end="53" delay="75" />
+ <end />
+ </animation>
+ <animation direction="right">
+ <sequence start="67" end="71" delay="75" />
+ <end />
+ </animation>
+ </action>
+
+</sprite> \ No newline at end of file
diff --git a/example/clientdata/graphics/sprites/error.png b/example/clientdata/graphics/sprites/error.png
new file mode 100644
index 00000000..108ad0e4
--- /dev/null
+++ b/example/clientdata/graphics/sprites/error.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/error.xml b/example/clientdata/graphics/sprites/error.xml
new file mode 100644
index 00000000..3504bd01
--- /dev/null
+++ b/example/clientdata/graphics/sprites/error.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<sprite>
+ <imageset name="base" src="graphics/sprites/error.png" width="29" height="9" />
+
+ <action name="default" imageset="base">
+ <animation direction="default">
+ <frame index="0" />
+ </animation>
+ </action>
+</sprite> \ No newline at end of file
diff --git a/example/clientdata/graphics/sprites/icons/icon-feather.png b/example/clientdata/graphics/sprites/icons/icon-feather.png
new file mode 100644
index 00000000..425fb286
--- /dev/null
+++ b/example/clientdata/graphics/sprites/icons/icon-feather.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/icons/icon-feather.xml b/example/clientdata/graphics/sprites/icons/icon-feather.xml
new file mode 100644
index 00000000..715a2f82
--- /dev/null
+++ b/example/clientdata/graphics/sprites/icons/icon-feather.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<sprite>
+ <imageset name="base" src="graphics/sprites/icons/icon-feather.png" width="13" height="20" />
+
+ <action name="default" imageset="base">
+ <animation direction="default">
+ <frame index="0" offsetY="-12" delay="100"/>
+ </animation>
+ </action>
+</sprite>
diff --git a/example/clientdata/graphics/sprites/icons/icon-poison.png b/example/clientdata/graphics/sprites/icons/icon-poison.png
new file mode 100644
index 00000000..b7803cd9
--- /dev/null
+++ b/example/clientdata/graphics/sprites/icons/icon-poison.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/icons/icon-poison.xml b/example/clientdata/graphics/sprites/icons/icon-poison.xml
new file mode 100644
index 00000000..0a8f751a
--- /dev/null
+++ b/example/clientdata/graphics/sprites/icons/icon-poison.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<sprite>
+ <imageset name="base" src="graphics/sprites/icons/icon-poison.png" width="12" height="20" />
+
+ <action name="default" imageset="base">
+ <animation direction="default">
+ <frame index="0" offsetY="-12" delay="80"/>
+ <frame index="1" offsetY="-12" delay="80"/>
+ <frame index="2" offsetY="-12" delay="80"/>
+ <frame index="3" offsetY="-12" delay="80"/>
+ <frame index="4" offsetY="-12" delay="80"/>
+ <frame index="5" offsetY="-12" delay="80"/>
+ <frame index="6" offsetY="-12" delay="80"/>
+ <frame index="7" offsetY="-12" delay="80"/>
+ <frame index="8" offsetY="-12" delay="80"/>
+ </animation>
+ </action>
+</sprite>
diff --git a/example/clientdata/graphics/sprites/monsters/monster-maggot.png b/example/clientdata/graphics/sprites/monsters/monster-maggot.png
new file mode 100644
index 00000000..64474f94
--- /dev/null
+++ b/example/clientdata/graphics/sprites/monsters/monster-maggot.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/monsters/monster-maggot.xml b/example/clientdata/graphics/sprites/monsters/monster-maggot.xml
new file mode 100644
index 00000000..f603b8db
--- /dev/null
+++ b/example/clientdata/graphics/sprites/monsters/monster-maggot.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<sprite>
+
+ <imageset name="base" src="graphics/sprites/monsters/monster-maggot.png" width="20" height="15" />
+
+ <action name="stand" imageset="base">
+ <animation direction="down">
+ <frame index="0" offsetY ="-8" />
+ </animation>
+ <animation direction="left">
+ <frame index="10" offsetY ="-11" />
+ </animation>
+ <animation direction="up">
+ <frame index="20" offsetY ="-10" />
+ </animation>
+ <animation direction="right">
+ <frame index="30" offsetY ="-11" />
+ </animation>
+ </action>
+
+ <action name="walk" imageset="base">
+ <animation direction="down">
+ <sequence start="1" end="4" delay="150" offsetY ="-8" />
+ </animation>
+ <animation direction="left">
+ <sequence start="11" end="14" delay="150" offsetY ="-11" />
+ </animation>
+ <animation direction="up">
+ <sequence start="21" end="24" delay="150" offsetY ="-10" />
+ </animation>
+ <animation direction="right">
+ <sequence start="31" end="34" delay="150" offsetY ="-11" />
+ </animation>
+ </action>
+
+ <action name="dead" imageset="base">
+ <animation direction="down">
+ <frame index="9" offsetY ="-8" />
+ </animation>
+ <animation direction="left" >
+ <frame index="19" offsetY ="-11" />
+ </animation>
+ <animation direction="up">
+ <frame index="29" offsetY ="-10" />
+ </animation>
+ <animation direction="right">
+ <frame index="39" offsetY ="-11" />
+ </animation>
+ </action>
+
+ <action name="attack" imageset="base">
+ <animation direction="down">
+ <sequence start="5" end="8" delay="150" offsetY ="-8" />
+ </animation>
+ <animation direction="left">
+ <sequence start="15" end="18" delay="150" offsetY ="-11" />
+ </animation>
+ <animation direction="up">
+ <sequence start="25" end="28" delay="150" offsetY ="-10" />
+ </animation>
+ <animation direction="right">
+ <sequence start="35" end="38" delay="150" offsetY ="-11" />
+ </animation>
+ </action>
+
+</sprite> \ No newline at end of file
diff --git a/example/clientdata/graphics/sprites/monsters/monster-scorpion.png b/example/clientdata/graphics/sprites/monsters/monster-scorpion.png
new file mode 100644
index 00000000..0bd693fd
--- /dev/null
+++ b/example/clientdata/graphics/sprites/monsters/monster-scorpion.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/monsters/monster-scorpion.xml b/example/clientdata/graphics/sprites/monsters/monster-scorpion.xml
new file mode 100644
index 00000000..ab1986a3
--- /dev/null
+++ b/example/clientdata/graphics/sprites/monsters/monster-scorpion.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<sprite>
+
+ <imageset name="base" src="graphics/sprites/monsters/monster-scorpion.png|W" width="48" height="45" />
+
+ <action name="stand" imageset="base">
+ <animation direction="down">
+ <frame index="0" offsetY ="2" />
+ </animation>
+ <animation direction="left">
+ <frame index="10" offsetY ="2" />
+ </animation>
+ <animation direction="up">
+ <frame index="20" offsetX ="-1" offsetY ="3" />
+ </animation>
+ <animation direction="right">
+ <frame index="30" offsetY ="2" />
+ </animation>
+ </action>
+
+ <action name="walk" imageset="base">
+ <animation direction="down">
+ <sequence start="1" end="4" delay="75" offsetY ="2" />
+ </animation>
+ <animation direction="left">
+ <sequence start="11" end="14" delay="75" offsetY ="2" />
+ </animation>
+ <animation direction="up">
+ <sequence start="21" end="24" delay="75" offsetX ="-1" offsetY ="3" />
+ </animation>
+ <animation direction="right">
+ <sequence start="31" end="34" delay="75" offsetY ="2" />
+ </animation>
+ </action>
+
+ <action name="dead" imageset="base">
+ <animation direction="down">
+ <frame index="9" offsetY ="2" />
+ </animation>
+ <animation direction="left">
+ <frame index="19" offsetY ="2" />
+ </animation>
+ <animation direction="up">
+ <frame index="29" offsetX ="-1" offsetY ="3" />
+ </animation>
+ <animation direction="right">
+ <frame index="39" offsetY ="2" />
+ </animation>
+ </action>
+
+ <action name="attack" imageset="base">
+ <animation direction="down">
+ <sequence start="5" end="8" delay="75" offsetY ="2" />
+ <end />
+ </animation>
+ <animation direction="left">
+ <sequence start="15" end="18" delay="75" offsetY ="2" />
+ <end />
+ </animation>
+ <animation direction="up">
+ <sequence start="25" end="28" delay="75" offsetX ="-1" offsetY ="3" />
+ <end />
+ </animation>
+ <animation direction="right">
+ <sequence start="35" end="38" delay="75" offsetY ="2" />
+ <end />
+ </animation>
+ </action>
+
+</sprite>
diff --git a/example/clientdata/graphics/sprites/monsters/monster-slime.png b/example/clientdata/graphics/sprites/monsters/monster-slime.png
new file mode 100644
index 00000000..ab14bbb5
--- /dev/null
+++ b/example/clientdata/graphics/sprites/monsters/monster-slime.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/monsters/monster-slime.xml b/example/clientdata/graphics/sprites/monsters/monster-slime.xml
new file mode 100644
index 00000000..220a8e25
--- /dev/null
+++ b/example/clientdata/graphics/sprites/monsters/monster-slime.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<sprite>
+
+ <imageset name="base" src="graphics/sprites/monsters/monster-slime.png|W" width="52" height="24" />
+
+ <action name="stand" imageset="base">
+ <animation>
+ <frame index="0" offsetY="-4" />
+ </animation>
+ </action>
+
+ <action name="walk" imageset="base">
+ <animation direction="down">
+ <sequence start="0" end="3" delay="200" offsetY="-4" />
+ </animation>
+ <animation direction="left">
+ <frame index="0" delay="200" offsetY="-4" />
+ <sequence start="10" end="12" delay="200" offsetY="-4" />
+ </animation>
+ <animation direction="up">
+ <frame index="0" delay="200" offsetY="-4" />
+ <sequence start="19" end="21" delay="200" offsetY="-4" />
+ </animation>
+ <animation direction="right">
+ <frame index="0" delay="200" offsetY="-4" />
+ <sequence start="28" end="30" delay="200" offsetY="-4" />
+ </animation>
+ </action>
+
+ <action name="dead" imageset="base">
+ <animation>
+ <frame index="8" offsetY="-4" />
+ </animation>
+ </action>
+
+ <action name="attack" imageset="base">
+ <animation direction="down">
+ <sequence start="4" end="7" delay="100" offsetY="-4" />
+ <end />
+ </animation>
+ <animation direction="left">
+ <sequence start="4" end="7" delay="100" offsetY="-4" />
+ <end />
+ </animation>
+ <animation direction="up">
+ <sequence start="22" end="25" delay="100" offsetY="-4" />
+ <end />
+ </animation>
+ <animation direction="right">
+ <sequence start="22" end="25" delay="100" offsetY="-4" />
+ <end />
+ </animation>
+ </action>
+
+</sprite>
diff --git a/example/clientdata/graphics/sprites/weapons/weapon-bow.png b/example/clientdata/graphics/sprites/weapons/weapon-bow.png
new file mode 100644
index 00000000..b5f8a68e
--- /dev/null
+++ b/example/clientdata/graphics/sprites/weapons/weapon-bow.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/weapons/weapon-bow.xml b/example/clientdata/graphics/sprites/weapons/weapon-bow.xml
new file mode 100644
index 00000000..7580776c
--- /dev/null
+++ b/example/clientdata/graphics/sprites/weapons/weapon-bow.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<sprite name="player" action="stand">
+ <imageset name="bow" src="graphics/sprites/weapons/weapon-bow.png" width="64" height="64" />
+
+ <action name="default" imageset="bow">
+ </action>
+
+ <action name="attack_bow" imageset="bow">
+ <animation direction="down">
+ <sequence start="0" end="4" delay="75" />
+ <end />
+ </animation>
+ <animation direction="left">
+ <sequence start="5" end="9" delay="75" />
+ <end />
+ </animation>
+ <animation direction="up">
+ <sequence start="10" end="14" delay="75" />
+ <end />
+ </animation>
+ <animation direction="right">
+ <sequence start="15" end="19" delay="75" />
+ <end />
+ </animation>
+ </action>
+</sprite> \ No newline at end of file
diff --git a/example/clientdata/graphics/sprites/weapons/weapon-fist.xml b/example/clientdata/graphics/sprites/weapons/weapon-fist.xml
new file mode 100644
index 00000000..324dfd5b
--- /dev/null
+++ b/example/clientdata/graphics/sprites/weapons/weapon-fist.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<sprite name="player" action="stand">
+ <imageset name="dagger" src="graphics/sprites/weapon-sword.png" width="64" height="64" />
+
+ <action name="default" imageset="dagger">
+ </action>
+</sprite> \ No newline at end of file
diff --git a/example/clientdata/graphics/sprites/weapons/weapon-sword.png b/example/clientdata/graphics/sprites/weapons/weapon-sword.png
new file mode 100644
index 00000000..f691ef3f
--- /dev/null
+++ b/example/clientdata/graphics/sprites/weapons/weapon-sword.png
Binary files differ
diff --git a/example/clientdata/graphics/sprites/weapons/weapon-sword.xml b/example/clientdata/graphics/sprites/weapons/weapon-sword.xml
new file mode 100644
index 00000000..1909aff6
--- /dev/null
+++ b/example/clientdata/graphics/sprites/weapons/weapon-sword.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<sprite name="player" action="stand">
+ <imageset name="dagger" src="graphics/sprites/weapons/weapon-sword.png" width="64" height="64" />
+
+ <action name="default" imageset="dagger">
+ </action>
+
+ <action name="attack_stab" imageset="dagger">
+ <animation direction="down">
+ <sequence start="0" end="3" delay="75" />
+ <end />
+ </animation>
+ <animation direction="left">
+ <sequence start="4" end="7" delay="75" />
+ <end />
+ </animation>
+ <animation direction="up">
+ <sequence start="8" end="11" delay="75" />
+ <end />
+ </animation>
+ <animation direction="right">
+ <sequence start="12" end="15" delay="75" />
+ <end />
+ </animation>
+ </action>
+
+</sprite> \ No newline at end of file