summaryrefslogtreecommitdiff
path: root/graphics/particles
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2021-04-09 23:20:09 -0300
committerJesusaves <cpntb1@ymail.com>2021-04-09 23:20:09 -0300
commit4903d41b99555c45be569de1c20ba4035854c888 (patch)
tree3a9a75e59f45ef9e415b50e28af89fd2fc56bd34 /graphics/particles
downloadclientdata-4903d41b99555c45be569de1c20ba4035854c888.tar.gz
clientdata-4903d41b99555c45be569de1c20ba4035854c888.tar.bz2
clientdata-4903d41b99555c45be569de1c20ba4035854c888.tar.xz
clientdata-4903d41b99555c45be569de1c20ba4035854c888.zip
Reinitialized git repository with Evol2 support
Major changes: - Makefile - Gitlab CI - Network update - Char Creation update
Diffstat (limited to 'graphics/particles')
-rw-r--r--graphics/particles/angel.particle.xml38
-rw-r--r--graphics/particles/aniblaze-large.pngbin0 -> 8486 bytes
-rw-r--r--graphics/particles/aniblaze-medium.pngbin0 -> 2410 bytes
-rw-r--r--graphics/particles/aniblaze.pngbin0 -> 2075 bytes
-rw-r--r--graphics/particles/anibubble_8px.pngbin0 -> 2069 bytes
-rw-r--r--graphics/particles/anibubble_8px_green.pngbin0 -> 1944 bytes
-rw-r--r--graphics/particles/apple.particle.xml44
-rw-r--r--graphics/particles/apple.pngbin0 -> 150 bytes
-rw-r--r--graphics/particles/arrow-banshee.particle.xml44
-rw-r--r--graphics/particles/arrow-down.pngbin0 -> 303 bytes
-rw-r--r--graphics/particles/arrow-hail.xml18
-rw-r--r--graphics/particles/arrow.particle.xml8
-rw-r--r--graphics/particles/arrowd.pngbin0 -> 317 bytes
-rw-r--r--graphics/particles/arrowh-banshee.pngbin0 -> 1217 bytes
-rw-r--r--graphics/particles/arrowh-green-slime.particle.xml8
-rw-r--r--graphics/particles/arrowh-sea-slime.particle.xml8
-rw-r--r--graphics/particles/arrowh-slime.particle.xml8
-rw-r--r--graphics/particles/arrowh-slime.pngbin0 -> 862 bytes
-rw-r--r--graphics/particles/arrowh.pngbin0 -> 1295 bytes
-rw-r--r--graphics/particles/arrowu.pngbin0 -> 287 bytes
-rw-r--r--graphics/particles/attack.particle.xml53
-rw-r--r--graphics/particles/bat-shadow.pngbin0 -> 649 bytes
-rw-r--r--graphics/particles/black-glow.particle.xml41
-rw-r--r--graphics/particles/blaze.pngbin0 -> 360 bytes
-rw-r--r--graphics/particles/blue-magic-cast.particle.xml106
-rw-r--r--graphics/particles/bonfire-shifted.particle.xml118
-rw-r--r--graphics/particles/bonfire.particle.xml117
-rw-r--r--graphics/particles/bubble_12px.pngbin0 -> 553 bytes
-rw-r--r--graphics/particles/bubble_32px.pngbin0 -> 1371 bytes
-rw-r--r--graphics/particles/bubble_8px.pngbin0 -> 302 bytes
-rw-r--r--graphics/particles/casket-lid.xml17
-rw-r--r--graphics/particles/casket-monster.xml19
-rw-r--r--graphics/particles/casket-trap_96x96.pngbin0 -> 57126 bytes
-rw-r--r--graphics/particles/channelling-cast.particle.xml28
-rw-r--r--graphics/particles/channelling-raise.particle.xml28
-rw-r--r--graphics/particles/chillfog.particle.xml20
-rw-r--r--graphics/particles/circle-magic-trail.pngbin0 -> 676 bytes
-rw-r--r--graphics/particles/circle-magic.pngbin0 -> 41506 bytes
-rw-r--r--graphics/particles/circle-magic.xml24
-rw-r--r--graphics/particles/circle.particle.xml24
-rw-r--r--graphics/particles/colorful-orbits.particle.xml112
-rw-r--r--graphics/particles/comet-clockwise-bg.pngbin0 -> 877 bytes
-rw-r--r--graphics/particles/comet-clockwise-fg.pngbin0 -> 1008 bytes
-rw-r--r--graphics/particles/comet-counterclockwise-bg.pngbin0 -> 843 bytes
-rw-r--r--graphics/particles/comet-counterclockwise-fg.pngbin0 -> 930 bytes
-rw-r--r--graphics/particles/cookingfire.hoveringpot.particle.xml67
-rw-r--r--graphics/particles/cookingfire.particle.xml67
-rw-r--r--graphics/particles/crit.particle.xml34
-rw-r--r--graphics/particles/cursed-waterfall.particle.xml66
-rw-r--r--graphics/particles/dark-aura.particle.xml52
-rw-r--r--graphics/particles/dark-talisman.xml39
-rw-r--r--graphics/particles/dark-teleport.particle.xml57
-rw-r--r--graphics/particles/demonfire.particle.xml61
-rw-r--r--graphics/particles/demonic-aura.particle.xml36
-rw-r--r--graphics/particles/doom.particle.xml38
-rw-r--r--graphics/particles/doomsday.xml71
-rw-r--r--graphics/particles/electricity-spark.pngbin0 -> 557 bytes
-rw-r--r--graphics/particles/electricity.blue.large.xml17
-rw-r--r--graphics/particles/electricity.blue.xml17
-rw-r--r--graphics/particles/electricity.particle.pngbin0 -> 522 bytes
-rw-r--r--graphics/particles/electricity.red.large.xml17
-rw-r--r--graphics/particles/electricity.red.xml17
-rw-r--r--graphics/particles/enchanted-door-broken.particle.xml30
-rw-r--r--graphics/particles/enchanted-door.particle.xml64
-rw-r--r--graphics/particles/epilogue.pngbin0 -> 85174 bytes
-rw-r--r--graphics/particles/epilogue.xml64
-rw-r--r--graphics/particles/evil-summon.particle.xml56
-rw-r--r--graphics/particles/evilobelisk.particle.xml38
-rw-r--r--graphics/particles/fire-burst.xml47
-rw-r--r--graphics/particles/fire-explosion.xml47
-rw-r--r--graphics/particles/fireplace.particle.xml25
-rw-r--r--graphics/particles/firespot.particle.xml21
-rw-r--r--graphics/particles/flame.particle.xml24
-rw-r--r--graphics/particles/flowing-blood.xml11
-rw-r--r--graphics/particles/fog-medium-a.pngbin0 -> 1604 bytes
-rw-r--r--graphics/particles/fog-medium-b.pngbin0 -> 1186 bytes
-rw-r--r--graphics/particles/fog-medium-c.pngbin0 -> 773 bytes
-rw-r--r--graphics/particles/forge.particle.xml36
-rw-r--r--graphics/particles/fountain-blood.pngbin0 -> 5817 bytes
-rw-r--r--graphics/particles/fountain-blood.xml37
-rw-r--r--graphics/particles/fountain.particle.xml32
-rw-r--r--graphics/particles/fullbubble-16px.pngbin0 -> 582 bytes
-rw-r--r--graphics/particles/gate-opening.xml10
-rw-r--r--graphics/particles/geyser.particle.xml17
-rw-r--r--graphics/particles/glow-medium.pngbin0 -> 709 bytes
-rw-r--r--graphics/particles/glow-small.pngbin0 -> 365 bytes
-rw-r--r--graphics/particles/gloworb-medium.pngbin0 -> 805 bytes
-rw-r--r--graphics/particles/gloworb-small.pngbin0 -> 416 bytes
-rw-r--r--graphics/particles/golbenez.particle.xml38
-rw-r--r--graphics/particles/green-bubbles.particle.xml36
-rw-r--r--graphics/particles/ground-spawn.particle.xml28
-rw-r--r--graphics/particles/hadesblaze.particle.xml39
-rw-r--r--graphics/particles/heartnecklace.particle.xml22
-rw-r--r--graphics/particles/heat.xml50
-rw-r--r--graphics/particles/hellblaze.particle.xml67
-rw-r--r--graphics/particles/hex-facet-50.pngbin0 -> 574 bytes
-rw-r--r--graphics/particles/hex-facet.pngbin0 -> 534 bytes
-rw-r--r--graphics/particles/hillunderfall.particle.xml17
-rw-r--r--graphics/particles/hillunderfall2.particle.xml41
-rw-r--r--graphics/particles/hit.particle.xml52
-rw-r--r--graphics/particles/hot_coals.pngbin0 -> 2813 bytes
-rw-r--r--graphics/particles/hug.particle.xml18
-rw-r--r--graphics/particles/large-explosion.xml47
-rw-r--r--graphics/particles/leaf.pngbin0 -> 415 bytes
-rw-r--r--graphics/particles/levelup.particle.xml18
-rw-r--r--graphics/particles/light-large.pngbin0 -> 960 bytes
-rw-r--r--graphics/particles/lightning-map.pngbin0 -> 2522 bytes
-rw-r--r--graphics/particles/lightning-map.xml25
-rw-r--r--graphics/particles/lightning1-240.pngbin0 -> 1926 bytes
-rw-r--r--graphics/particles/lightning1.xml16
-rw-r--r--graphics/particles/lightning2-263.pngbin0 -> 2478 bytes
-rw-r--r--graphics/particles/lightning2.xml16
-rw-r--r--graphics/particles/lightning3-275.pngbin0 -> 1409 bytes
-rw-r--r--graphics/particles/lightning3.xml16
-rw-r--r--graphics/particles/lobbed-object.xml29
-rw-r--r--graphics/particles/luvia-attack.particle.xml44
-rw-r--r--graphics/particles/magic-blue-teleport.particle.xml50
-rw-r--r--graphics/particles/magic-building-aura.particle.xml75
-rw-r--r--graphics/particles/magic-dark-explosion.particle.xml58
-rw-r--r--graphics/particles/magic.astral-summon.xml123
-rw-r--r--graphics/particles/magic.black.xml18
-rw-r--r--graphics/particles/magic.blue.xml18
-rw-r--r--graphics/particles/magic.dark-summon.xml123
-rw-r--r--graphics/particles/magic.darkred.xml18
-rw-r--r--graphics/particles/magic.default.xml18
-rw-r--r--graphics/particles/magic.enhance.xml18
-rw-r--r--graphics/particles/magic.generic.xml95
-rw-r--r--graphics/particles/magic.golden.xml18
-rw-r--r--graphics/particles/magic.green.xml18
-rw-r--r--graphics/particles/magic.grow-plant.xml123
-rw-r--r--graphics/particles/magic.hit.evil.xml59
-rw-r--r--graphics/particles/magic.hit.xml59
-rw-r--r--graphics/particles/magic.red.xml18
-rw-r--r--graphics/particles/magic.shield-ends.xml267
-rw-r--r--graphics/particles/magic.shield.xml235
-rw-r--r--graphics/particles/magic.teleport.xml19
-rw-r--r--graphics/particles/magic.white.xml18
-rw-r--r--graphics/particles/manaseed.particle.xml19
-rw-r--r--graphics/particles/medium-blindinglight.xml21
-rw-r--r--graphics/particles/medium-explosion.xml47
-rw-r--r--graphics/particles/medium-smoke.xml21
-rw-r--r--graphics/particles/mist-face-a.pngbin0 -> 3635 bytes
-rw-r--r--graphics/particles/mist-face-b.pngbin0 -> 3886 bytes
-rw-r--r--graphics/particles/monster-angry-fire-goblin.particle.xml24
-rw-r--r--graphics/particles/monster-angry-green-slime.particle.xml23
-rw-r--r--graphics/particles/monster-angry-sea-slime.particle.xml23
-rw-r--r--graphics/particles/monster-ball-lightning-blue.particle.xml19
-rw-r--r--graphics/particles/monster-ball-lightning-red.particle.xml19
-rw-r--r--graphics/particles/monster-ball-lightning.particle.pngbin0 -> 542 bytes
-rw-r--r--graphics/particles/monster-ball-lightning.particle.xml19
-rw-r--r--graphics/particles/monster-goblin-firebreath.particle.xml34
-rw-r--r--graphics/particles/monster-leaf.particle.xml95
-rw-r--r--graphics/particles/monster-lizard-firebreath.particle.xml36
-rw-r--r--graphics/particles/monster-luvia.particle.xml64
-rw-r--r--graphics/particles/monster-moonshroom.particle.xml24
-rw-r--r--graphics/particles/monster-mouboo-demonic.particle.xml50
-rw-r--r--graphics/particles/monster-pumpkin-explosion.particle.xml53
-rw-r--r--graphics/particles/monster-reaper.particle.xml36
-rw-r--r--graphics/particles/monster-snail-trail.particle.xml17
-rw-r--r--graphics/particles/monster-souleater.particle.xml36
-rw-r--r--graphics/particles/monster-soulsnake.particle.xml36
-rw-r--r--graphics/particles/monster-troll-foefire.particle.pngbin0 -> 1777 bytes
-rw-r--r--graphics/particles/monster-troll-foefire.particle.xml34
-rw-r--r--graphics/particles/monster-undeadtroll-foefire.particle.xml34
-rw-r--r--graphics/particles/monster-virus-foefire.particle.xml31
-rw-r--r--graphics/particles/monster-witchguard.particle.xml31
-rw-r--r--graphics/particles/moonshroom-attack.particle.xml30
-rw-r--r--graphics/particles/necroblast.particle.xml61
-rw-r--r--graphics/particles/nomadpipe.particle.xml51
-rw-r--r--graphics/particles/object-getitem.particle.xml37
-rw-r--r--graphics/particles/orange-violent-glow.particle.xml38
-rw-r--r--graphics/particles/orb-large.pngbin0 -> 874 bytes
-rw-r--r--graphics/particles/orb-medium.pngbin0 -> 176 bytes
-rw-r--r--graphics/particles/orb-small.pngbin0 -> 125 bytes
-rw-r--r--graphics/particles/pentagram-blacklinedraw.particle.xml127
-rw-r--r--graphics/particles/pentagram-buildup-short.xml118
-rw-r--r--graphics/particles/pentagram-burst.xml142
-rw-r--r--graphics/particles/pentagram-raise.particle.xml124
-rw-r--r--graphics/particles/pentagram-redlinedraw.particle.xml127
-rw-r--r--graphics/particles/peppermint.particle.xml8
-rw-r--r--graphics/particles/peppermint.pngbin0 -> 772 bytes
-rw-r--r--graphics/particles/pink-violent-glow.particle.xml38
-rw-r--r--graphics/particles/playerglow.particle.xml26
-rw-r--r--graphics/particles/polter.particle.xml24
-rw-r--r--graphics/particles/pool-1-crozenite.particle.xml9
-rw-r--r--graphics/particles/pool-2-bromenal.particle.xml9
-rw-r--r--graphics/particles/pool-3-silver.particle.xml9
-rw-r--r--graphics/particles/pool-4-gold.particle.xml9
-rw-r--r--graphics/particles/pool-horiz-2.xml10
-rw-r--r--graphics/particles/pool-horiz.xml9
-rw-r--r--graphics/particles/pool-undyed.pngbin0 -> 4486 bytes
-rw-r--r--graphics/particles/pool-vert-2.xml10
-rw-r--r--graphics/particles/pool-vert.xml10
-rw-r--r--graphics/particles/pool_32x59.particle.pngbin0 -> 4416 bytes
-rw-r--r--graphics/particles/pool_65x27.particle.pngbin0 -> 4450 bytes
-rw-r--r--graphics/particles/portal-door.particle.xml44
-rw-r--r--graphics/particles/portal.particle.xml39
-rw-r--r--graphics/particles/power-circle.particle.xml43
-rw-r--r--graphics/particles/puff-blue.pngbin0 -> 2773 bytes
-rw-r--r--graphics/particles/python.pngbin0 -> 800431 bytes
-rw-r--r--graphics/particles/python.xml9
-rw-r--r--graphics/particles/questdone.particle.xml18
-rw-r--r--graphics/particles/questup.particle.xml18
-rw-r--r--graphics/particles/rain.xml17
-rw-r--r--graphics/particles/raindrop.pngbin0 -> 290 bytes
-rw-r--r--graphics/particles/single-heart.pngbin0 -> 476 bytes
-rw-r--r--graphics/particles/skillup.particle.xml18
-rw-r--r--graphics/particles/small-explosion.particle.xml47
-rw-r--r--graphics/particles/small-green-bubbles.particle.xml34
-rw-r--r--graphics/particles/smoke-large-grey.pngbin0 -> 804 bytes
-rw-r--r--graphics/particles/snow.particle.xml19
-rw-r--r--graphics/particles/snowball-crit.particle.xml47
-rw-r--r--graphics/particles/snowball.particle.xml8
-rw-r--r--graphics/particles/snowball.pngbin0 -> 2813 bytes
-rw-r--r--graphics/particles/snowflake.pngbin0 -> 523 bytes
-rw-r--r--graphics/particles/soulmenhir.particle.xml38
-rw-r--r--graphics/particles/soulpool.pngbin0 -> 471322 bytes
-rw-r--r--graphics/particles/soulpool.xml14
-rw-r--r--graphics/particles/sparkle.big.green.particle.xml19
-rw-r--r--graphics/particles/sparkle.green.particle.xml19
-rw-r--r--graphics/particles/sparkle.pngbin0 -> 497 bytes
-rw-r--r--graphics/particles/spectre.particle.xml24
-rw-r--r--graphics/particles/sphere-white.particle.xml25
-rw-r--r--graphics/particles/star-medium.pngbin0 -> 821 bytes
-rw-r--r--graphics/particles/star-small.pngbin0 -> 243 bytes
-rw-r--r--graphics/particles/stoneprojectile.particle.xml8
-rw-r--r--graphics/particles/stoneprojectile.pngbin0 -> 1266 bytes
-rw-r--r--graphics/particles/thelost-attack.particle.xml30
-rw-r--r--graphics/particles/undead-witch-attack.particle.xml30
-rw-r--r--graphics/particles/vline-small.pngbin0 -> 126 bytes
-rw-r--r--graphics/particles/voidportal.particle.xml32
-rw-r--r--graphics/particles/warparea.particle.xml19
-rw-r--r--graphics/particles/waterfall-1x2.particle.xml41
-rw-r--r--graphics/particles/waterfall-1x3.particle.xml41
-rw-r--r--graphics/particles/waterfall-2x1.particle.xml41
-rw-r--r--graphics/particles/waterfall-2x2.particle.xml41
-rw-r--r--graphics/particles/waterfall-2x3.particle.xml41
-rw-r--r--graphics/particles/waterfall-2x4.particle.xml41
-rw-r--r--graphics/particles/waterfall-a.pngbin0 -> 1858 bytes
-rw-r--r--graphics/particles/waterfall.particle.xml57
-rw-r--r--graphics/particles/whirlpool.particle.xml26
-rw-r--r--graphics/particles/wisp.particle.xml24
-rw-r--r--graphics/particles/wispdance.particle.xml49
243 files changed, 7058 insertions, 0 deletions
diff --git a/graphics/particles/angel.particle.xml b/graphics/particles/angel.particle.xml
new file mode 100644
index 00000000..b42a9696
--- /dev/null
+++ b/graphics/particles/angel.particle.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+Light blue particles which fly up to the sky. About one tile wide, three tiles
+high and supposed to give an object which is about half as large as a player
+character some magical aura.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="16"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="20" max="24"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#ffffff"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/aniblaze-large.png b/graphics/particles/aniblaze-large.png
new file mode 100644
index 00000000..439bec33
--- /dev/null
+++ b/graphics/particles/aniblaze-large.png
Binary files differ
diff --git a/graphics/particles/aniblaze-medium.png b/graphics/particles/aniblaze-medium.png
new file mode 100644
index 00000000..f49dea36
--- /dev/null
+++ b/graphics/particles/aniblaze-medium.png
Binary files differ
diff --git a/graphics/particles/aniblaze.png b/graphics/particles/aniblaze.png
new file mode 100644
index 00000000..7249001c
--- /dev/null
+++ b/graphics/particles/aniblaze.png
Binary files differ
diff --git a/graphics/particles/anibubble_8px.png b/graphics/particles/anibubble_8px.png
new file mode 100644
index 00000000..3e2ba19d
--- /dev/null
+++ b/graphics/particles/anibubble_8px.png
Binary files differ
diff --git a/graphics/particles/anibubble_8px_green.png b/graphics/particles/anibubble_8px_green.png
new file mode 100644
index 00000000..2d4e2103
--- /dev/null
+++ b/graphics/particles/anibubble_8px_green.png
Binary files differ
diff --git a/graphics/particles/apple.particle.xml b/graphics/particles/apple.particle.xml
new file mode 100644
index 00000000..f3fdcc73
--- /dev/null
+++ b/graphics/particles/apple.particle.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-13" max="30"/>
+ <property name="position-y" min="15" max="18"/>
+ <property name="position-z" min="35" max="88"/>
+ <property name="image" value="graphics/particles/apple.png"/>
+ <property name="output" min="-2350" max="1"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="gravity" value="0.01"/>
+ <property name="fade-in" value="50"/>
+ <property name="lifetime" value="1070"/>
+ <property name="fade-out" value="20"/>
+ <property name="bounce" min="0.2" max="0.2"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-15" max="0"/>
+ <property name="position-y" min="0" max="3"/>
+ <property name="position-z" min="15" max="15"/>
+ <property name="image" value="graphics/particles/apple.png"/>
+ <property name="output" min="-3000" max="1"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="gravity" value="0.01"/>
+ <property name="fade-in" value="30"/>
+ <property name="lifetime" value="870"/>
+ <property name="fade-out" value="20"/>
+ <property name="bounce" min="0.3" max="0.3"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="13" max="30"/>
+ <property name="position-y" min="0" max="3"/>
+ <property name="position-z" min="15" max="15"/>
+ <property name="image" value="graphics/particles/apple.png"/>
+ <property name="output" min="-3000" max="1"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="gravity" value="0.01"/>
+ <property name="fade-in" value="30"/>
+ <property name="lifetime" value="870"/>
+ <property name="fade-out" value="20"/>
+ <property name="bounce" min="0.3" max="0.3"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/apple.png b/graphics/particles/apple.png
new file mode 100644
index 00000000..fc49ad49
--- /dev/null
+++ b/graphics/particles/apple.png
Binary files differ
diff --git a/graphics/particles/arrow-banshee.particle.xml b/graphics/particles/arrow-banshee.particle.xml
new file mode 100644
index 00000000..3f156558
--- /dev/null
+++ b/graphics/particles/arrow-banshee.particle.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="128">
+ <rotation imageset="graphics/particles/arrowh-banshee.png" width="16" height="16">
+ <sequence start="0" end="7"/>
+ </rotation>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#512C75,222222"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="2"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#262B2F,333333"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="2"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#222222"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="2"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/arrow-down.png b/graphics/particles/arrow-down.png
new file mode 100644
index 00000000..85d63f17
--- /dev/null
+++ b/graphics/particles/arrow-down.png
Binary files differ
diff --git a/graphics/particles/arrow-hail.xml b/graphics/particles/arrow-hail.xml
new file mode 100644
index 00000000..0b148030
--- /dev/null
+++ b/graphics/particles/arrow-hail.xml
@@ -0,0 +1,18 @@
+<?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/graphics/particles/arrow.particle.xml b/graphics/particles/arrow.particle.xml
new file mode 100644
index 00000000..37409035
--- /dev/null
+++ b/graphics/particles/arrow.particle.xml
@@ -0,0 +1,8 @@
+<?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/graphics/particles/arrowd.png b/graphics/particles/arrowd.png
new file mode 100644
index 00000000..2eabaeb9
--- /dev/null
+++ b/graphics/particles/arrowd.png
Binary files differ
diff --git a/graphics/particles/arrowh-banshee.png b/graphics/particles/arrowh-banshee.png
new file mode 100644
index 00000000..6ec17c16
--- /dev/null
+++ b/graphics/particles/arrowh-banshee.png
Binary files differ
diff --git a/graphics/particles/arrowh-green-slime.particle.xml b/graphics/particles/arrowh-green-slime.particle.xml
new file mode 100644
index 00000000..993e7eff
--- /dev/null
+++ b/graphics/particles/arrowh-green-slime.particle.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="128">
+ <rotation imageset="graphics/particles/arrowh-slime.png|R:#72982c,8bd936" width="16" height="16">
+ <sequence start="0" end="7"/>
+ </rotation>
+ </particle>
+</effect>
diff --git a/graphics/particles/arrowh-sea-slime.particle.xml b/graphics/particles/arrowh-sea-slime.particle.xml
new file mode 100644
index 00000000..202f4ab6
--- /dev/null
+++ b/graphics/particles/arrowh-sea-slime.particle.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="128">
+ <rotation imageset="graphics/particles/arrowh-slime.png|R:#4da4b3,69def2" width="16" height="16">
+ <sequence start="0" end="7"/>
+ </rotation>
+ </particle>
+</effect>
diff --git a/graphics/particles/arrowh-slime.particle.xml b/graphics/particles/arrowh-slime.particle.xml
new file mode 100644
index 00000000..c80d65fb
--- /dev/null
+++ b/graphics/particles/arrowh-slime.particle.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="128">
+ <rotation imageset="graphics/particles/arrowh-slime.png|R:#72982c,ffffff" width="16" height="16">
+ <sequence start="0" end="7"/>
+ </rotation>
+ </particle>
+</effect>
diff --git a/graphics/particles/arrowh-slime.png b/graphics/particles/arrowh-slime.png
new file mode 100644
index 00000000..b37b97d6
--- /dev/null
+++ b/graphics/particles/arrowh-slime.png
Binary files differ
diff --git a/graphics/particles/arrowh.png b/graphics/particles/arrowh.png
new file mode 100644
index 00000000..30425ea3
--- /dev/null
+++ b/graphics/particles/arrowh.png
Binary files differ
diff --git a/graphics/particles/arrowu.png b/graphics/particles/arrowu.png
new file mode 100644
index 00000000..e456212b
--- /dev/null
+++ b/graphics/particles/arrowu.png
Binary files differ
diff --git a/graphics/particles/attack.particle.xml b/graphics/particles/attack.particle.xml
new file mode 100644
index 00000000..452e9df7
--- /dev/null
+++ b/graphics/particles/attack.particle.xml
@@ -0,0 +1,53 @@
+<?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>
diff --git a/graphics/particles/bat-shadow.png b/graphics/particles/bat-shadow.png
new file mode 100644
index 00000000..1e068c73
--- /dev/null
+++ b/graphics/particles/bat-shadow.png
Binary files differ
diff --git a/graphics/particles/black-glow.particle.xml b/graphics/particles/black-glow.particle.xml
new file mode 100644
index 00000000..3b0c01b8
--- /dev/null
+++ b/graphics/particles/black-glow.particle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+Orange-ish particles that fly up to the sky; based on Crush's Soul Menhir effect.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" min="16" max="48"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="10" max="25"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#000000"/>
+ <property name="lifetime" value="35"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <animation imageset="graphics/particles/sparkle.png|W:#000000" width="15" height="15">
+ <sequence start="0" end="3" delay="50"/>
+ <frame index="0" delay="100"/>
+ </animation>
+ <property name="lifetime" value="35"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/blaze.png b/graphics/particles/blaze.png
new file mode 100644
index 00000000..946e6d8a
--- /dev/null
+++ b/graphics/particles/blaze.png
Binary files differ
diff --git a/graphics/particles/blue-magic-cast.particle.xml b/graphics/particles/blue-magic-cast.particle.xml
new file mode 100644
index 00000000..1f2542b2
--- /dev/null
+++ b/graphics/particles/blue-magic-cast.particle.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<!--
+ Sparks and blue orbs raising slowly above the caster
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="1">
+ <emitter>
+ <property name="position-z" min="0" max="32"/>
+ <property name="position-y" min="-32" max="32"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="5"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="130"/>
+ <emitter>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#A3EAFF,FFFFFF"/>
+ <property name="lifetime" value="400"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="6"/>
+ <property name="bounce" min="0" max="0.8"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#262B2F,333333"/>
+ <property name="lifetime" value="400"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="6"/>
+ <property name="bounce" min="0" max="0.8"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-z" min="14" max="18"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="5"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="60"/>
+ <emitter>
+ <property name="position-y" min="16" max="32"/>
+ <property name="gravity" value="-0.11"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#CDF5FF,FFFFFF"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="4" max="8"/>
+ <property name="bounce" min="0" max="0.6"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#A0CDF4"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="2" max="6"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#83C0F4"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="2" max="6"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#262B2F,333333"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="2" max="6"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.1"/>
+ <property name="image" value="graphics/particles/vline-small.png|W:#A3EAFF"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" min="0" max="8"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/bonfire-shifted.particle.xml b/graphics/particles/bonfire-shifted.particle.xml
new file mode 100644
index 00000000..7af3e097
--- /dev/null
+++ b/graphics/particles/bonfire-shifted.particle.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<!--
+Special fire animation for bonfire tile. Can be used only on the open air.
+This one can be placed directly on the border between four tiles
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" value="-5"/>
+ <property name="position-y" min="-4" max="-4"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0" max="0.05"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="30"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="15"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="5"/>
+ <property name="position-y" min="-4" max="-2"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0" max="0.05"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="30"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="15"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" min="-4" max="0"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0.0" max="0.05"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="30"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="15"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" min="-10" max="-20"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="50"/>
+ <property name="power" min="0.2" max="0.4"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/aniblaze-medium.png|W:#746767" width="16" height="16">
+ <sequence start="0" end="8" delay="90"/>
+ <frame index="14" delay="200"/>
+ </animation>
+ <property name="lifetime" value="50"/>
+ <property name="output" min="0" max="2"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="180"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="180"/>
+ <property name="power" value="0.5"/>
+ <property name="gravity" value="-0.01"/>
+ <animation imageset="graphics/particles/fog-medium-c.png" width="32" height="32">
+ <frame index="0" delay="100"/>
+ <frame index="0" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="80"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="230"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="2" max="3"/>
+ <property name="position-y" value="-10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="180"/>
+ <property name="power" value="0.2"/>
+ <property name="gravity" value="-0.01"/>
+ <animation imageset="graphics/particles/orb-small.png|W:#f4c874" width="4" height="4">
+ <frame index="0" delay="100"/>
+ <frame index="0" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="60"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="1"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-3" max="4"/>
+ <property name="position-y" value="-9"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="180"/>
+ <property name="power" value="0.2"/>
+ <property name="gravity" value="-0.01"/>
+ <animation imageset="graphics/particles/orb-small.png|W:#e87a54" width="4" height="4">
+ <frame index="0" delay="100"/>
+ <frame index="0" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="60"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="150"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/bonfire.particle.xml b/graphics/particles/bonfire.particle.xml
new file mode 100644
index 00000000..c02afb60
--- /dev/null
+++ b/graphics/particles/bonfire.particle.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0"?>
+<!--
+Special fire animation for bonfire tile. Can be used only on the open air.
+-->
+<effect>
+ <particle position-x="15" position-y="0" position-z="15">
+ <emitter>
+ <property name="position-x" value="-5"/>
+ <property name="position-y" min="-4" max="-4"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0" max="0.05"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="30"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="15"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="5"/>
+ <property name="position-y" min="-4" max="-2"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0" max="0.05"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="30"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="15"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" min="-4" max="0"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0.0" max="0.05"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="30"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="15"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" min="-10" max="-20"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="50"/>
+ <property name="power" min="0.2" max="0.4"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/aniblaze-medium.png|W:#746767" width="16" height="16">
+ <sequence start="0" end="8" delay="90"/>
+ <frame index="14" delay="200"/>
+ </animation>
+ <property name="lifetime" value="50"/>
+ <property name="output" min="0" max="2"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="180"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="180"/>
+ <property name="power" value="0.5"/>
+ <property name="gravity" value="-0.01"/>
+ <animation imageset="graphics/particles/fog-medium-c.png" width="32" height="32">
+ <frame index="0" delay="100"/>
+ <frame index="0" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="80"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="230"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="2" max="3"/>
+ <property name="position-y" value="-10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="180"/>
+ <property name="power" value="0.2"/>
+ <property name="gravity" value="-0.01"/>
+ <animation imageset="graphics/particles/orb-small.png|W:#f4c874" width="4" height="4">
+ <frame index="0" delay="100"/>
+ <frame index="0" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="60"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="1"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-3" max="4"/>
+ <property name="position-y" value="-9"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="180"/>
+ <property name="power" value="0.2"/>
+ <property name="gravity" value="-0.01"/>
+ <animation imageset="graphics/particles/orb-small.png|W:#e87a54" width="4" height="4">
+ <frame index="0" delay="100"/>
+ <frame index="0" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="60"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="150"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/bubble_12px.png b/graphics/particles/bubble_12px.png
new file mode 100644
index 00000000..786cf619
--- /dev/null
+++ b/graphics/particles/bubble_12px.png
Binary files differ
diff --git a/graphics/particles/bubble_32px.png b/graphics/particles/bubble_32px.png
new file mode 100644
index 00000000..438b7963
--- /dev/null
+++ b/graphics/particles/bubble_32px.png
Binary files differ
diff --git a/graphics/particles/bubble_8px.png b/graphics/particles/bubble_8px.png
new file mode 100644
index 00000000..c805908a
--- /dev/null
+++ b/graphics/particles/bubble_8px.png
Binary files differ
diff --git a/graphics/particles/casket-lid.xml b/graphics/particles/casket-lid.xml
new file mode 100644
index 00000000..80a79c4a
--- /dev/null
+++ b/graphics/particles/casket-lid.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- The lid opening portion of the casket trap-->
+ <particle position-x="0" position-y="0" position-z="43" lifetime="80">
+ <emitter>
+ <property name="position-y" value="37"/>
+ <property name="lifetime" value="80"/>
+ <property name="output" value="1"/>
+ <property name="output-pause" value="12"/>
+ <animation imageset="graphics/particles/casket-trap_96x96.png" width="96" height="96">
+ <frame index="10" delay="250"/>
+ <frame index="11" delay="400"/>
+ <frame index="10" delay="150"/>
+ </animation>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/casket-monster.xml b/graphics/particles/casket-monster.xml
new file mode 100644
index 00000000..8857f029
--- /dev/null
+++ b/graphics/particles/casket-monster.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- The monster portion of the casket trap-->
+ <particle position-x="100" position-y="0" position-z="97" lifetime="80">
+ <emitter>
+ <property name="position-y" value="114"/>
+ <property name="lifetime" value="80"/>
+ <property name="output" value="1"/>
+ <property name="output-pause" value="12"/>
+ <animation imageset="graphics/particles/casket-trap_96x96.png" width="96" height="96">
+ <frame index="0" delay="250"/>
+ <sequence start="1" end="3" delay="70"/>
+ <frame index="4" delay="120"/>
+ <frame index="1" delay="70"/>
+ <frame index="0" delay="150"/>
+ </animation>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/casket-trap_96x96.png b/graphics/particles/casket-trap_96x96.png
new file mode 100644
index 00000000..ffba9984
--- /dev/null
+++ b/graphics/particles/casket-trap_96x96.png
Binary files differ
diff --git a/graphics/particles/channelling-cast.particle.xml b/graphics/particles/channelling-cast.particle.xml
new file mode 100644
index 00000000..2bbc357b
--- /dev/null
+++ b/graphics/particles/channelling-cast.particle.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+ A large blue magical explosion
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="20" lifetime="1">
+ <emitter>
+ <property name="position-z" min="0" max="32"/>
+ <property name="position-y" min="-32" max="32"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="5"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="600"/>
+ <emitter>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#60DAFF,FFFFFF"/>
+ <property name="lifetime" value="400"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="2"/>
+ <property name="bounce" min="0" max="0.8"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/channelling-raise.particle.xml b/graphics/particles/channelling-raise.particle.xml
new file mode 100644
index 00000000..f8cfbdae
--- /dev/null
+++ b/graphics/particles/channelling-raise.particle.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+ Blue lines raising to the sky
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="20" lifetime="1">
+ <emitter>
+ <property name="position-z" min="-32" max="32"/>
+ <property name="position-y" min="-32" max="32"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="10"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="300"/>
+ <emitter>
+ <property name="gravity" value="-0.1"/>
+ <property name="image" value="graphics/particles/vline-small.png|W:#A3EAFF"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" min="0" max="4"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/chillfog.particle.xml b/graphics/particles/chillfog.particle.xml
new file mode 100644
index 00000000..b92ad39d
--- /dev/null
+++ b/graphics/particles/chillfog.particle.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+Wight blaze: inspired by Demon fire
+-->
+<effect>
+ <particle position-x="10" position-y="5" position-z="38">
+ <emitter>
+ <property name="position-y" value="-10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="300" max="60"/>
+ <property name="power" min="0.5" max="1.0"/>
+ <property name="gravity" value=".02"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png|W:#124ea3"/>
+ <property name="lifetime" value="100"/>
+ <property name="output" min="1" max="4"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="450"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/circle-magic-trail.png b/graphics/particles/circle-magic-trail.png
new file mode 100644
index 00000000..4922c339
--- /dev/null
+++ b/graphics/particles/circle-magic-trail.png
Binary files differ
diff --git a/graphics/particles/circle-magic.png b/graphics/particles/circle-magic.png
new file mode 100644
index 00000000..39b9a722
--- /dev/null
+++ b/graphics/particles/circle-magic.png
Binary files differ
diff --git a/graphics/particles/circle-magic.xml b/graphics/particles/circle-magic.xml
new file mode 100644
index 00000000..ce597fba
--- /dev/null
+++ b/graphics/particles/circle-magic.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="16" position-y="24" position-z="0">
+ <animation imageset="graphics/particles/circle-magic.png" width="78" height="55">
+ <sequence start="0" end="9" delay="80"/>
+ </animation>
+ <emitter>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" value="0"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" value="30"/>
+ <emitter>
+ <property name="vertical-angle" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" value="1"/>
+ <animation imageset="graphics/particles/circle-magic-trail.png" width="6" height="17">
+ <sequence start="0" end="9" delay="80"/>
+ <end/>
+ </animation>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/circle.particle.xml b/graphics/particles/circle.particle.xml
new file mode 100644
index 00000000..b42aecf8
--- /dev/null
+++ b/graphics/particles/circle.particle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+A circle on the ground 60 pixels in diameter made from particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-y" value="-16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="30"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="3"/>
+ <emitter>
+ <property name="gravity" value="-0.7"/>
+ <property name="momentum" value="0.3"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00ffff"/>
+ <property name="lifetime" value="50"/>
+ <property name="fade-out" value="50"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/colorful-orbits.particle.xml b/graphics/particles/colorful-orbits.particle.xml
new file mode 100644
index 00000000..e7a96936
--- /dev/null
+++ b/graphics/particles/colorful-orbits.particle.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0"?>
+<!--
+6 differently colored objects which orbit around a centerpoint in different
+circular orbits forming a sphere with 80 pixels diameter. Beautiful but I can't
+imagine any application for this effect as it is. It is basically a proof of
+concept.
+
+Uses exactly 247 particles. Does not work with particleFastPhysics on 2.
+
+Want it bigger or smaller? When you half the orbit (distance) just double the
+acceleration and vice versa.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="40" lifetime="1">
+ <!-- BLUE -->
+ <emitter>
+ <property name="position-x" value="40"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="0"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#0000ff"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" value="0"/>
+ <property name="power" value="3"/>
+ <property name="acceleration" value="0.2"/>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#0000ff,ffffff"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <!-- CYAN-->
+ <emitter>
+ <property name="position-x" value="-40"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="0"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#00ffff"/>
+ <property name="horizontal-angle" value="270"/>
+ <property name="vertical-angle" value="0"/>
+ <property name="power" value="3"/>
+ <property name="acceleration" value="0.2"/>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#00ffff,ffffff"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <!-- GREEN -->
+ <emitter>
+ <property name="position-x" value="28.28"/>
+ <property name="position-y" value="-28.28"/>
+ <property name="position-z" value="0"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#00ff00"/>
+ <property name="horizontal-angle" value="0"/>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" value="3"/>
+ <property name="acceleration" value="0.2"/>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#00ff00,ffffff"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <!-- YELLOW -->
+ <emitter>
+ <property name="position-x" value="-28.28"/>
+ <property name="position-y" value="28.28"/>
+ <property name="position-z" value="0"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#ffff00"/>
+ <property name="horizontal-angle" value="0"/>
+ <property name="vertical-angle" value="270"/>
+ <property name="power" value="3"/>
+ <property name="acceleration" value="0.2"/>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#ffff00,ffffff"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <!-- RED -->
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="40"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#ff0000"/>
+ <property name="horizontal-angle" value="45"/>
+ <property name="vertical-angle" value="0"/>
+ <property name="power" value="3"/>
+ <property name="acceleration" value="0.2"/>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#ff0000,ffffff"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <!-- MAGENTA -->
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="-40"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#ff00ff"/>
+ <property name="horizontal-angle" value="225"/>
+ <property name="vertical-angle" value="0"/>
+ <property name="power" value="3"/>
+ <property name="acceleration" value="0.2"/>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#ff00ff,ffffff"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/comet-clockwise-bg.png b/graphics/particles/comet-clockwise-bg.png
new file mode 100644
index 00000000..12f8eabb
--- /dev/null
+++ b/graphics/particles/comet-clockwise-bg.png
Binary files differ
diff --git a/graphics/particles/comet-clockwise-fg.png b/graphics/particles/comet-clockwise-fg.png
new file mode 100644
index 00000000..64dffe94
--- /dev/null
+++ b/graphics/particles/comet-clockwise-fg.png
Binary files differ
diff --git a/graphics/particles/comet-counterclockwise-bg.png b/graphics/particles/comet-counterclockwise-bg.png
new file mode 100644
index 00000000..459ac814
--- /dev/null
+++ b/graphics/particles/comet-counterclockwise-bg.png
Binary files differ
diff --git a/graphics/particles/comet-counterclockwise-fg.png b/graphics/particles/comet-counterclockwise-fg.png
new file mode 100644
index 00000000..cfa6a7a4
--- /dev/null
+++ b/graphics/particles/comet-counterclockwise-fg.png
Binary files differ
diff --git a/graphics/particles/cookingfire.hoveringpot.particle.xml b/graphics/particles/cookingfire.hoveringpot.particle.xml
new file mode 100644
index 00000000..59f42fac
--- /dev/null
+++ b/graphics/particles/cookingfire.hoveringpot.particle.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<!--
+A fire at the ground and some steam above it designed for use with the brass
+cauldron from the woodland_indoor tileset.
+-->
+<effect>
+ <particle position-x="0" position-y="-6" position-z="8">
+ <emitter>
+ <property name="position-x" min="6" max="28"/>
+ <property name="position-y" min="-6" max="12"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0" max="0.25"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="10"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="output" min="0" max="4"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="30"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="16" max="24"/>
+ <property name="position-y" min="-18" max="-10"/>
+ <property name="position-z" min="64" max="64"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="-2" max="1"/>
+ <property name="lifetime" min="20" max="60"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="16" max="24"/>
+ <property name="position-y" min="-18" max="-10"/>
+ <property name="position-z" min="64" max="64"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="-2" max="1"/>
+ <property name="lifetime" min="40" max="100"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="16" max="24"/>
+ <property name="position-y" min="-18" max="-10"/>
+ <property name="position-z" min="64" max="64"/>
+ <property name="image" value="graphics/particles/fog-medium-c.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="-2" max="1"/>
+ <property name="lifetime" min="40" max="100"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/cookingfire.particle.xml b/graphics/particles/cookingfire.particle.xml
new file mode 100644
index 00000000..04bc4f66
--- /dev/null
+++ b/graphics/particles/cookingfire.particle.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<!--
+A fire at the ground and some steam above it designed for use with the brass
+cauldron from the woodland_indoor tileset.
+-->
+<effect>
+ <particle position-x="0" position-y="-6" position-z="8">
+ <emitter>
+ <property name="position-x" min="6" max="28"/>
+ <property name="position-y" min="-6" max="0"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0" max="0.25"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="10"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="output" min="0" max="4"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="30"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="16" max="24"/>
+ <property name="position-y" min="-18" max="-10"/>
+ <property name="position-z" min="32" max="32"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="-2" max="1"/>
+ <property name="lifetime" min="20" max="60"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="16" max="24"/>
+ <property name="position-y" min="-18" max="-10"/>
+ <property name="position-z" min="32" max="32"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="-2" max="1"/>
+ <property name="lifetime" min="40" max="100"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="16" max="24"/>
+ <property name="position-y" min="-18" max="-10"/>
+ <property name="position-z" min="32" max="32"/>
+ <property name="image" value="graphics/particles/fog-medium-c.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="-2" max="1"/>
+ <property name="lifetime" min="40" max="100"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/crit.particle.xml b/graphics/particles/crit.particle.xml
new file mode 100644
index 00000000..7f534477
--- /dev/null
+++ b/graphics/particles/crit.particle.xml
@@ -0,0 +1,34 @@
+<?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="70" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="1" max="4"/>
+ <property name="bounce" value="0.75"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#ff0000,ffff00"/>
+ <property name="lifetime" min="120" max="180"/>
+ <property name="fade-out" value="120"/>
+ <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="70" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="1" max="4"/>
+ <property name="bounce" value="0.75"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-medium.png|W:#ff0000,ffff00"/>
+ <property name="lifetime" min="120" max="180"/>
+ <property name="fade-out" value="120"/>
+ <property name="output" min="12" max="24"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/cursed-waterfall.particle.xml b/graphics/particles/cursed-waterfall.particle.xml
new file mode 100644
index 00000000..6550b742
--- /dev/null
+++ b/graphics/particles/cursed-waterfall.particle.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!--
+Purple particles falling as if they were going along a waterfall
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" value="16"/>
+ <property name="position-z" value="156"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="16" max="24"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="0.9"/>
+ <property name="momentum" value="0.7"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#663399"/>
+ <property name="lifetime" value="200"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="0.9"/>
+ <property name="momentum" value="0.7"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#663399"/>
+ <property name="lifetime" value="200"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-16"/>
+ <property name="position-z" value="156"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="16" max="24"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="0.9"/>
+ <property name="momentum" value="0.7"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#663399"/>
+ <property name="lifetime" value="200"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="0.9"/>
+ <property name="momentum" value="0.7"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#663399"/>
+ <property name="lifetime" value="200"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/dark-aura.particle.xml b/graphics/particles/dark-aura.particle.xml
new file mode 100644
index 00000000..77827240
--- /dev/null
+++ b/graphics/particles/dark-aura.particle.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="-10" position-z="16">
+ <emitter>
+ <property name="position-z" min="16" max="48"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="10" max="25"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <property name="follow-parent"/>
+ <emitter>
+ <property name="gravity" value="-0.06"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#401c52"/>
+ <property name="lifetime" value="35"/>
+ <property name="fade-in" value="2"/>
+ <property name="fade-out" value="10"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="120"/>
+ <property name="randomness" value="200"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="follow-parent"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#401c52"/>
+ <property name="lifetime" value="25"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="120"/>
+ <property name="randomness" value="200"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="follow-parent"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-large.png|W:#2c0c31"/>
+ <property name="lifetime" value="95"/>
+ <property name="fade-in" value="5"/>
+ <property name="position-y" value="40"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="50" max="100"/>
+ <property name="follow-parent"/>
+ <property name="gravity" value="-0.005"/>
+ <property name="acceleration" value="0.02"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/dark-talisman.xml b/graphics/particles/dark-talisman.xml
new file mode 100644
index 00000000..0c479df8
--- /dev/null
+++ b/graphics/particles/dark-talisman.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--Dark Talisman FX effect by Hello=) of TMW-->
+<effect>
+ <particle position-x="16" position-y="24" position-z="12">
+ <animation imageset="graphics/particles/circle-magic.png|W:#AEAEAE" width="78" height="55">
+ <sequence start="0" end="9" delay="120"/>
+ </animation>
+ <emitter>
+ <property name="position-z" min="16" max="48"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="10" max="25"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.4"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#B56565"/>
+ <property name="lifetime" value="25"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.4"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#B37010"/>
+ <property name="lifetime" value="25"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/dark-teleport.particle.xml b/graphics/particles/dark-teleport.particle.xml
new file mode 100644
index 00000000..68479b95
--- /dev/null
+++ b/graphics/particles/dark-teleport.particle.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<!--
+ Flying shadow-bats and dark fog
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="1">
+ <emitter>
+ <property name="position-z" min="14" max="18"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="5"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="64"/>
+ <emitter>
+ <property name="gravity" value="-0.09"/>
+ <animation imageset="graphics/particles/bat-shadow.png" width="24" height="16">
+ <sequence start="0" end="1" delay="50"/>
+ </animation>
+ <property name="lifetime" value="150"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="150"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="4" max="8"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.97"/>
+ <property name="randomness" value="50"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/fog-medium-b.png|W:#333333"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="4" max="8"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.9"/>
+ <property name="randomness" value="50"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/fog-medium-b.png|W:#333333"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#333333"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="4" max="8"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.9"/>
+ <property name="randomness" value="50"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/demonfire.particle.xml b/graphics/particles/demonfire.particle.xml
new file mode 100644
index 00000000..1b624494
--- /dev/null
+++ b/graphics/particles/demonfire.particle.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!--
+Demon fire: blue / black / purple flames and sparkles
+-->
+<effect>
+ <particle position-x="16" position-y="0" position-z="12">
+ <emitter>
+ <property name="position-y" min="-10" max="-20"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="50"/>
+ <property name="power" min="0.2" max="0.4"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/aniblaze-medium.png|W:#746767" width="16" height="16">
+ <sequence start="0" end="8" delay="90"/>
+ <frame index="14" delay="200"/>
+ </animation>
+ <property name="lifetime" value="50"/>
+ <property name="output" min="0" max="2"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="180"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="180"/>
+ <property name="power" value="0.6"/>
+ <property name="gravity" value="-0.01"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png|W:#5A40A1"/>
+ <property name="lifetime" value="30"/>
+ <property name="output" min="1" max="2"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="230"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="2" max="4"/>
+ <property name="position-y" value="-8"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="180"/>
+ <property name="power" value="0.5"/>
+ <property name="gravity" value="-0.01"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#73B5E8,FFFFFF"/>
+ <property name="lifetime" value="60"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="150"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-3" max="4"/>
+ <property name="position-y" value="-9"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="180"/>
+ <property name="power" value="0.2"/>
+ <property name="gravity" value="-0.01"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#2e2e2e"/>
+ <property name="lifetime" value="60"/>
+ <property name="output" value="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="150"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/demonic-aura.particle.xml b/graphics/particles/demonic-aura.particle.xml
new file mode 100644
index 00000000..e9e7ec2f
--- /dev/null
+++ b/graphics/particles/demonic-aura.particle.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+ Purple-ish ghost faces rise up from the ground
+-->
+<effect>
+ <particle position-x="16" position-y="16" position-z="0">
+ <emitter>
+ <property name="position-x" min="-24" max="24"/>
+ <property name="position-z" min="2" max="32"/>
+ <property name="gravity" value="-0.01"/>
+ <property name="lifetime" value="180"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ <property name="output-pause" min="11" max="61"/>
+ <property name="follow-parent"/>
+ <animation imageset="graphics/particles/mist-face-a.png|W:#855385" width="30" height="30">
+ <sequence start="0" end="2" delay="300"/>
+ <frame index="3"/>
+ </animation>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-24" max="24"/>
+ <property name="position-z" min="2" max="32"/>
+ <property name="gravity" value="-0.01"/>
+ <property name="lifetime" value="180"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ <property name="output-pause" min="17" max="67"/>
+ <property name="follow-parent"/>
+ <animation imageset="graphics/particles/mist-face-b.png|W:#5b3558" width="30" height="30">
+ <sequence start="0" end="2" delay="300"/>
+ <frame index="3"/>
+ </animation>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/doom.particle.xml b/graphics/particles/doom.particle.xml
new file mode 100644
index 00000000..f77a7172
--- /dev/null
+++ b/graphics/particles/doom.particle.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+Light blue particles which fly up to the sky. About one tile wide, three tiles
+high and supposed to give an object which is about half as large as a player
+character some magical aura.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="16"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="20" max="24"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#ff0044"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ff0022"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/doomsday.xml b/graphics/particles/doomsday.xml
new file mode 100644
index 00000000..8e6a5bed
--- /dev/null
+++ b/graphics/particles/doomsday.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!--
+A red and yellow blaze. Does not really look like fire but looks awesome
+nevertheless. Maybe we could modify this effect and use it for some persistent
+AoE fire magic spell.
+
+It is about 100 pixels wide and 200 pixels high, takes about 280 particles and
+lowers my FPS by about 30%.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="0" max="32"/>
+ <property name="position-y" min="0" max="8"/>
+ <property name="position-z" min="80" max="88"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/glow-medium.png|W:#dd3311"/>
+ <property name="lifetime" min="60" max="160"/>
+ <property name="fade-in" value="30"/>
+ <property name="fade-out" value="30"/>
+ <property name="output" min="1" max="2"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="1" max="3"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="48"/>
+ <property name="position-y" min="48" max="58"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/glow-medium.png|W:#ffff00"/>
+ <property name="lifetime" min="40" max="140"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="30"/>
+ <property name="output" min="0" max="1"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="48"/>
+ <property name="position-y" min="48" max="58"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#dd3311"/>
+ <property name="lifetime" min="60" max="160"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="50"/>
+ <property name="output" min="-1" max="1"/>
+ <property name="randomness" value="200"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="48"/>
+ <property name="position-y" min="48" max="58"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#ddff00"/>
+ <property name="lifetime" min="60" max="160"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="50"/>
+ <property name="output" min="-1" max="1"/>
+ <property name="randomness" value="200"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/electricity-spark.png b/graphics/particles/electricity-spark.png
new file mode 100644
index 00000000..9e5ff3b1
--- /dev/null
+++ b/graphics/particles/electricity-spark.png
Binary files differ
diff --git a/graphics/particles/electricity.blue.large.xml b/graphics/particles/electricity.blue.large.xml
new file mode 100644
index 00000000..5d140478
--- /dev/null
+++ b/graphics/particles/electricity.blue.large.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="lifetime" value="80"/>
+ <property name="output" value="2"/>
+ <property name="position-x" min="-32" max="32"/>
+ <property name="position-y" min="-32" max="32"/>
+ <property name="gravity" value="-1.5"/>
+ <property name="momentum" value="0.3"/>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#0000FF" width="15" height="15">
+ <sequence start="0" end="7" delay="20"/>
+ </animation>
+ <property name="fade-out" value="30"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/electricity.blue.xml b/graphics/particles/electricity.blue.xml
new file mode 100644
index 00000000..192e067f
--- /dev/null
+++ b/graphics/particles/electricity.blue.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="300">
+ <emitter>
+ <property name="lifetime" value="30"/>
+ <property name="output" value="1"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="gravity" value="-2"/>
+ <property name="momentum" value="0.3"/>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#0000FF" width="15" height="15">
+ <sequence start="0" end="7" delay="20"/>
+ </animation>
+ <property name="fade-out" value="30"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/electricity.particle.png b/graphics/particles/electricity.particle.png
new file mode 100644
index 00000000..8b3313fe
--- /dev/null
+++ b/graphics/particles/electricity.particle.png
Binary files differ
diff --git a/graphics/particles/electricity.red.large.xml b/graphics/particles/electricity.red.large.xml
new file mode 100644
index 00000000..462826c0
--- /dev/null
+++ b/graphics/particles/electricity.red.large.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="lifetime" value="80"/>
+ <property name="output" value="2"/>
+ <property name="position-x" min="-32" max="32"/>
+ <property name="position-y" min="-32" max="32"/>
+ <property name="gravity" value="-1.5"/>
+ <property name="momentum" value="0.3"/>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#FF0000" width="15" height="15">
+ <sequence start="0" end="7" delay="20"/>
+ </animation>
+ <property name="fade-out" value="30"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/electricity.red.xml b/graphics/particles/electricity.red.xml
new file mode 100644
index 00000000..a831d38f
--- /dev/null
+++ b/graphics/particles/electricity.red.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="300">
+ <emitter>
+ <property name="lifetime" value="30"/>
+ <property name="output" value="1"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="gravity" value="-2"/>
+ <property name="momentum" value="0.3"/>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#FF0000" width="15" height="15">
+ <sequence start="0" end="7" delay="20"/>
+ </animation>
+ <property name="fade-out" value="30"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/enchanted-door-broken.particle.xml b/graphics/particles/enchanted-door-broken.particle.xml
new file mode 100644
index 00000000..63a0c7ea
--- /dev/null
+++ b/graphics/particles/enchanted-door-broken.particle.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+ An evil shield just being broken.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="1">
+ <emitter>
+ <property name="position-z" min="32" max="64"/>
+ <property name="position-y" min="-32" max="32"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="5"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="300"/>
+ <emitter>
+ <property name="gravity" value="0.1"/>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#3E2C51" width="9" height="11">
+ <sequence start="0" end="7" delay="40"/>
+ </animation>
+ <property name="lifetime" value="250"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="4"/>
+ <property name="bounce" min="0" max="0.8"/>
+ <property name="horizontal-angle" min="35" max="145"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/enchanted-door.particle.xml b/graphics/particles/enchanted-door.particle.xml
new file mode 100644
index 00000000..d3ab5362
--- /dev/null
+++ b/graphics/particles/enchanted-door.particle.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<!--
+Dark purple aura
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-24" max="24"/>
+ <property name="position-z" min="2" max="32"/>
+ <property name="position-y" value="32"/>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" value="40"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="2"/>
+ <emitter>
+ <property name="gravity" value="-0.1"/>
+ <property name="momentum" value="0.7"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png|W:#855385,5b3558"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="200"/>
+ <property name="fade-out" value="250"/>
+ <property name="output" min="0" max="1"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.1"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/vline-small.png|W:#944ADE"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="50"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" min="10" max="20"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-24" max="24"/>
+ <property name="position-z" min="2" max="32"/>
+ <property name="gravity" value="-0.01"/>
+ <property name="lifetime" value="180"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ <property name="output-pause" min="11" max="61"/>
+ <property name="follow-parent"/>
+ <animation imageset="graphics/particles/mist-face-a.png|W:#855385" width="30" height="30">
+ <sequence start="0" end="2" delay="300"/>
+ <frame index="3"/>
+ </animation>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-24" max="24"/>
+ <property name="position-z" min="2" max="32"/>
+ <property name="gravity" value="-0.01"/>
+ <property name="lifetime" value="180"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ <property name="output-pause" min="17" max="67"/>
+ <property name="follow-parent"/>
+ <animation imageset="graphics/particles/mist-face-b.png|W:#5b3558" width="30" height="30">
+ <sequence start="0" end="2" delay="300"/>
+ <frame index="3"/>
+ </animation>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/epilogue.png b/graphics/particles/epilogue.png
new file mode 100644
index 00000000..6cd49cb2
--- /dev/null
+++ b/graphics/particles/epilogue.png
Binary files differ
diff --git a/graphics/particles/epilogue.xml b/graphics/particles/epilogue.xml
new file mode 100644
index 00000000..0b7d4ae0
--- /dev/null
+++ b/graphics/particles/epilogue.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="270" lifetime="60000">
+ <animation imageset="graphics/particles/epilogue.png" width="800" height="30">
+ <frame index="0" delay="2100"/>
+ <!-- 2.1 -->
+ <frame index="4" delay="200"/>
+ <!-- 2.3 -->
+ <frame index="1" delay="2500"/>
+ <!-- 4.8 -->
+ <frame index="2" delay="2100"/>
+ <!-- 6.9 -->
+ <frame index="3" delay="3600"/>
+ <!-- 10.5 -->
+ <frame index="4" delay="500"/>
+ <!-- 11.0 -->
+ <frame index="5" delay="3200"/>
+ <!-- 14.2 -->
+ <frame index="6" delay="3600"/>
+ <!-- 17.8 -->
+ <frame index="7" delay="5800"/>
+ <!-- 20.0 -->
+ <frame index="8" delay="400"/>
+ <!-- 20.4 -->
+ <frame index="9" delay="2000"/>
+ <!-- 22.4 -->
+ <frame index="10" delay="2900"/>
+ <!-- 25.3 -->
+ <frame index="11" delay="2300"/>
+ <!-- 27.6 -->
+ <frame index="12" delay="1700"/>
+ <!-- 29.0 -->
+ <frame index="13" delay="400"/>
+ <!-- 29.4 -->
+ <frame index="14" delay="2400"/>
+ <!-- 31.8 -->
+ <frame index="15" delay="1800"/>
+ <!-- 33.6 -->
+ <frame index="16" delay="400"/>
+ <!-- 34.0 -->
+ <frame index="17" delay="2200"/>
+ <!-- 36.2 -->
+ <frame index="18" delay="3300"/>
+ <!-- 39.5 -->
+ <frame index="19" delay="600"/>
+ <!-- 40.1 -->
+ <frame index="20" delay="3400"/>
+ <!-- 43.5 -->
+ <frame index="21" delay="2400"/>
+ <!-- 45.9 -->
+ <frame index="22" delay="400"/>
+ <!-- 46.3 -->
+ <frame index="23" delay="2400"/>
+ <!-- 48.7 -->
+ <frame index="24" delay="3100"/>
+ <!-- 51.8 -->
+ <frame index="25" delay="3300"/>
+ <!-- 55.1 -->
+ <frame index="26" delay="300"/>
+ <!-- 55.4 -->
+ <frame index="27"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/evil-summon.particle.xml b/graphics/particles/evil-summon.particle.xml
new file mode 100644
index 00000000..96b05b73
--- /dev/null
+++ b/graphics/particles/evil-summon.particle.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<!--
+ Sparks and dark orbs raising slowly above the caster
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="1">
+ <emitter>
+ <property name="position-z" min="14" max="18"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="5"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="64"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-large.png|W:#401c52"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="4"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#512C75,222222"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="4"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#333333" width="15" height="15">
+ <sequence start="0" end="7" delay="10"/>
+ <frame index="0" delay="10"/>
+ </animation>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="4"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/evilobelisk.particle.xml b/graphics/particles/evilobelisk.particle.xml
new file mode 100644
index 00000000..f5603022
--- /dev/null
+++ b/graphics/particles/evilobelisk.particle.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+Red particles which fly up to the sky. About one tile wide, three tiles
+high and supposed to give an object which is about half as large as a player
+character some magical aura.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="16"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="20" max="24"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#f05050"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#f05050"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/fire-burst.xml b/graphics/particles/fire-burst.xml
new file mode 100644
index 00000000..b710c89b
--- /dev/null
+++ b/graphics/particles/fire-burst.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+An explosion of white particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="20" lifetime="1">
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="35" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ <property name="gravity" value="0.1"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="20"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="35" max="50"/>
+ <property name="fade-out" value="10"/>
+ </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"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="65" 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/smoke-large-grey.png"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="1" max="2"/>
+ <property name="fade-out" value="80"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/fire-explosion.xml b/graphics/particles/fire-explosion.xml
new file mode 100644
index 00000000..056b7f63
--- /dev/null
+++ b/graphics/particles/fire-explosion.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+An explosion of white particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="20" lifetime="1">
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="-10" max="10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="5"/>
+ <property name="gravity" value="0.1"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="20"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="300" max="330"/>
+ <property name="fade-out" value="10"/>
+ </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="8"/>
+ <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"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-10" max="10"/>
+ <property name="position-y" min="-10" max="10"/>
+ <property name="vertical-angle" min="65" 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/smoke-large-grey.png"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="10" max="15"/>
+ <property name="fade-out" value="80"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/fireplace.particle.xml b/graphics/particles/fireplace.particle.xml
new file mode 100644
index 00000000..9d78d4ac
--- /dev/null
+++ b/graphics/particles/fireplace.particle.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+A one tile wide rectangular fire effect intended for use with the fireplace
+from the woodland_indoor tileset.
+-->
+<effect>
+ <particle position-x="0" position-y="32" position-z="16">
+ <emitter>
+ <property name="position-x" min="0" max="32"/>
+ <property name="position-y" min="-24" max="-8"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0.1" max="0.3"/>
+ <property name="gravity" value="-0.04"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="20"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="25" max="35"/>
+ <property name="output" min="0" max="20"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="15"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/firespot.particle.xml b/graphics/particles/firespot.particle.xml
new file mode 100644
index 00000000..42af9b58
--- /dev/null
+++ b/graphics/particles/firespot.particle.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="32" position-z="16">
+ <emitter>
+ <property name="position-x" min="0" max="16"/>
+ <property name="position-y" min="-24" max="-5"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0.1" max="0.3"/>
+ <property name="gravity" value="-0.04"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="20"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="25" max="35"/>
+ <property name="output" min="0" max="20"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="15"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/flame.particle.xml b/graphics/particles/flame.particle.xml
new file mode 100644
index 00000000..78eb8a7c
--- /dev/null
+++ b/graphics/particles/flame.particle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+Small flame with a point-like source designed for the lamps on the cave
+tileset but it should also work to visualize some kind of torch or - when
+launched by a parent emitter - a small fireball.
+-->
+<effect>
+ <particle position-x="17" position-y="0" position-z="32">
+ <emitter>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0.1" max="0.3"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="30"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="35" max="50"/>
+ <property name="output" min="0" max="2"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/flowing-blood.xml b/graphics/particles/flowing-blood.xml
new file mode 100644
index 00000000..3858c592
--- /dev/null
+++ b/graphics/particles/flowing-blood.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- Blood animation -->
+ <particle position-x="0" position-y="-20" position-z="0">
+ <animation imageset="graphics/particles/fountain-blood.png" width="128" height="96">
+ <frame index="0" delay="120"/>
+ <frame index="1" delay="120"/>
+ <frame index="2" delay="120"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/fog-medium-a.png b/graphics/particles/fog-medium-a.png
new file mode 100644
index 00000000..f2b29eb6
--- /dev/null
+++ b/graphics/particles/fog-medium-a.png
Binary files differ
diff --git a/graphics/particles/fog-medium-b.png b/graphics/particles/fog-medium-b.png
new file mode 100644
index 00000000..f2a344a1
--- /dev/null
+++ b/graphics/particles/fog-medium-b.png
Binary files differ
diff --git a/graphics/particles/fog-medium-c.png b/graphics/particles/fog-medium-c.png
new file mode 100644
index 00000000..db3413e9
--- /dev/null
+++ b/graphics/particles/fog-medium-c.png
Binary files differ
diff --git a/graphics/particles/forge.particle.xml b/graphics/particles/forge.particle.xml
new file mode 100644
index 00000000..10c8cfd6
--- /dev/null
+++ b/graphics/particles/forge.particle.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+Smoke and embers for a glowing forge effect
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-14" max="36"/>
+ <property name="position-y" min="-30" max="-20"/>
+ <property name="output-pause" value="250"/>
+ <property name="output" value="5"/>
+ <property name="image" value="graphics/particles/fog-medium-c.png|W:#9999bb"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="0.5"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="lifetime" value="500"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ </particle>
+ <!-- reduce to sparks -->
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="8" max="28"/>
+ <property name="position-y" min="30" max="-13"/>
+ <animation imageset="graphics/particles/hot_coals.png" width="8" height="8">
+ <sequence start="0" end="28" delay="100"/>
+ <frame index="28" delay="1000"/>
+ </animation>
+ <property name="lifetime" value="2800"/>
+ <property name="output" value="10"/>
+ <property name="output-pause" value="200"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/fountain-blood.png b/graphics/particles/fountain-blood.png
new file mode 100644
index 00000000..482c21e2
--- /dev/null
+++ b/graphics/particles/fountain-blood.png
Binary files differ
diff --git a/graphics/particles/fountain-blood.xml b/graphics/particles/fountain-blood.xml
new file mode 100644
index 00000000..2bc9bb88
--- /dev/null
+++ b/graphics/particles/fountain-blood.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+A geysir which appears at regular intervals and becomes stronger and weaker.
+An example of changing emitters.
+-->
+<effect>
+ <particle position-x="-30" position-y="80" position-z="0">
+ <emitter>
+ <property name="output" value="2" change-func="sine" change-amplitude="3" change-period="900"/>
+ <property name="power" min="1.5" max="2.5" change-func="sine" change-amplitude="3" change-period="900"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="85" max="90"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#b30505,f70707"/>
+ <property name="gravity" value="0.1"/>
+ </emitter>
+ </particle>
+ <particle position-x="200" position-y="200" position-z="0">
+ <emitter>
+ <property name="output" value="2" change-func="sine" change-amplitude="3" change-period="1200"/>
+ <property name="power" min="1.5" max="2.5" change-func="sine" change-amplitude="3" change-period="1200"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="85" max="90"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#b30505,f70707"/>
+ <property name="gravity" value="0.1"/>
+ </emitter>
+ </particle>
+ <particle position-x="200" position-y="50" position-z="0">
+ <emitter>
+ <property name="output" value="2" change-func="sine" change-amplitude="3" change-period="600"/>
+ <property name="power" min="1.5" max="2.5" change-func="sine" change-amplitude="3" change-period="600"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="85" max="90"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#b30505,f70707"/>
+ <property name="gravity" value="0.1"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/fountain.particle.xml b/graphics/particles/fountain.particle.xml
new file mode 100644
index 00000000..5ab02632
--- /dev/null
+++ b/graphics/particles/fountain.particle.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+Fancy fireworks effect which fills the whole screen.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="32">
+ <emitter>
+ <property name="position-x" min="0" max="32"/>
+ <property name="position-y" min="0" max="32"/>
+ <property name="position-z" min="0" max="32"/>
+ <property name="image" value="graphics/particles/star-medium.png|W:#00ffff,ffffff"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="power" min="6" max="7"/>
+ <property name="gravity" value="0.1"/>
+ <property name="lifetime" value="300"/>
+ <property name="output" min="0" max="1"/>
+ <emitter>
+ <property name="position-x" value="0"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="0"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#00ffff,ffffff"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" value="1"/>
+ <property name="randomness" value="100"/>
+ <property name="lifetime" min="20" max="30"/>
+ <property name="output" min="0" max="1"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/fullbubble-16px.png b/graphics/particles/fullbubble-16px.png
new file mode 100644
index 00000000..aa1651f8
--- /dev/null
+++ b/graphics/particles/fullbubble-16px.png
Binary files differ
diff --git a/graphics/particles/gate-opening.xml b/graphics/particles/gate-opening.xml
new file mode 100644
index 00000000..3a04b2a8
--- /dev/null
+++ b/graphics/particles/gate-opening.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- The gate opening animation -->
+ <particle position-x="0" position-y="0" position-z="32">
+ <animation imageset="graphics/sprites/npcs/npc-gate_224x192.png" width="224" height="192">
+ <sequence start="0" end="4" delay="100"/>
+ <frame index="5"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/geyser.particle.xml b/graphics/particles/geyser.particle.xml
new file mode 100644
index 00000000..1844de9b
--- /dev/null
+++ b/graphics/particles/geyser.particle.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+A geysir which appears at regular intervals and becomes stronger and weaker.
+An example of changing emitters.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="output" value="2" change-func="sine" change-amplitude="3" change-period="800"/>
+ <property name="power" min="1.5" max="2.5" change-func="sine" change-amplitude="3" change-period="800"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="85" max="90"/>
+ <property name="image" value="graphics/particles/orb-medium.png"/>
+ <property name="gravity" value="0.1"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/glow-medium.png b/graphics/particles/glow-medium.png
new file mode 100644
index 00000000..580e6c6b
--- /dev/null
+++ b/graphics/particles/glow-medium.png
Binary files differ
diff --git a/graphics/particles/glow-small.png b/graphics/particles/glow-small.png
new file mode 100644
index 00000000..c625f06d
--- /dev/null
+++ b/graphics/particles/glow-small.png
Binary files differ
diff --git a/graphics/particles/gloworb-medium.png b/graphics/particles/gloworb-medium.png
new file mode 100644
index 00000000..d437ca58
--- /dev/null
+++ b/graphics/particles/gloworb-medium.png
Binary files differ
diff --git a/graphics/particles/gloworb-small.png b/graphics/particles/gloworb-small.png
new file mode 100644
index 00000000..fc7158d2
--- /dev/null
+++ b/graphics/particles/gloworb-small.png
Binary files differ
diff --git a/graphics/particles/golbenez.particle.xml b/graphics/particles/golbenez.particle.xml
new file mode 100644
index 00000000..901cbb56
--- /dev/null
+++ b/graphics/particles/golbenez.particle.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+Light red particles which fly up to the sky. About one tile wide, three tiles
+high and supposed to give an object which is about half as large as a player
+character some magical aura.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="16"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="20" max="24"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.5"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#580000,A40000,C02020,ff6060"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-in" value="1"/>
+ <property name="fade-out" value="5"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="100"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="0.2"/>
+ <property name="momentum" value="0.1"/>
+ <property name="image" value="graphics/particles/orb-large.png"/>
+ <property name="lifetime" value="5"/>
+ <property name="fade-in" value="1"/>
+ <property name="fade-out" value="5"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="100"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/green-bubbles.particle.xml b/graphics/particles/green-bubbles.particle.xml
new file mode 100644
index 00000000..f4a0582a
--- /dev/null
+++ b/graphics/particles/green-bubbles.particle.xml
@@ -0,0 +1,36 @@
+<?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/graphics/particles/ground-spawn.particle.xml b/graphics/particles/ground-spawn.particle.xml
new file mode 100644
index 00000000..e5c89a11
--- /dev/null
+++ b/graphics/particles/ground-spawn.particle.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+ A little blue magical eruption.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="20" lifetime="1">
+ <emitter>
+ <property name="position-z" min="0" max="32"/>
+ <property name="position-y" min="-32" max="32"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="3"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="150"/>
+ <emitter>
+ <property name="gravity" value="0.13"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#60DAFF,FFFFFF"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="2"/>
+ <property name="bounce" min="0" max="0.6"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/hadesblaze.particle.xml b/graphics/particles/hadesblaze.particle.xml
new file mode 100644
index 00000000..dee524a7
--- /dev/null
+++ b/graphics/particles/hadesblaze.particle.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+A huge, blue blaze-like effect about 100 pixels wide and 300 pixels high.
+Takes exactly 1161 particles and reduces my framerate to one third but looks
+really awesome. Maybe we can use this effect at some "special place". Maybe
+some evil magicans laboratory or a demonic temple or something like that.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="16"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="30" max="34"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="2"/>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#00ffff"/>
+ <property name="lifetime" value="180"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="150"/>
+ <property name="output" value="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/glow-medium.png|W:#0000ff"/>
+ <property name="lifetime" value="200"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="150"/>
+ <property name="output" value="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/heartnecklace.particle.xml b/graphics/particles/heartnecklace.particle.xml
new file mode 100644
index 00000000..fd63fdbc
--- /dev/null
+++ b/graphics/particles/heartnecklace.particle.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+Green stars which are supposed to engulf a character
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="image" value="graphics/particles/single-heart.png"/>
+ <property name="vertical-angle" value="90"/>
+ <property name="gravity" min="-0.5" max="-0.6"/>
+ <property name="momentum" value="0.0001"/>
+ <property name="lifetime" value="166"/>
+ <property name="output" min="-2" max="1"/>
+ <property name="output-pause" min="15" max="24"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="position-y" min="16" max="32"/>
+ <property name="position-z" min="16" max="32"/>
+ <property name="fade-in" min="2" max="10"/>
+ <property name="fade-out" min="5" max="30"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/heat.xml b/graphics/particles/heat.xml
new file mode 100644
index 00000000..3895e16a
--- /dev/null
+++ b/graphics/particles/heat.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+Green poison bubbles
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="100">
+ <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/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <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>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-c.png|W:#fffacc,fffdeb"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="gravity" value="-0.1"/>
+ <property name="lifetime" value="35"/>
+ <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/graphics/particles/hellblaze.particle.xml b/graphics/particles/hellblaze.particle.xml
new file mode 100644
index 00000000..b9ab089c
--- /dev/null
+++ b/graphics/particles/hellblaze.particle.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<!--
+A red and yellow blaze. Does not really look like fire but looks awesome
+nevertheless. Maybe we could modify this effect and use it for some persistent
+AoE fire magic spell.
+
+It is about 100 pixels wide and 200 pixels high, takes about 280 particles and
+lowers my FPS by about 30%.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="150">
+ <emitter>
+ <property name="position-z" value="-150"/>
+ <property name="position-y" value="32"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/glow-medium.png|W:#dd3311"/>
+ <property name="lifetime" min="60" max="160"/>
+ <property name="fade-in" value="30"/>
+ <property name="fade-out" value="30"/>
+ <property name="output" min="1" max="2"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="1" max="3"/>
+ </emitter>
+ <emitter>
+ <property name="position-z" value="-150"/>
+ <property name="position-y" value="32"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/glow-medium.png|W:#ffff00"/>
+ <property name="lifetime" min="40" max="140"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="30"/>
+ <property name="output" min="0" max="1"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ </emitter>
+ <emitter>
+ <property name="position-z" value="-150"/>
+ <property name="position-y" value="32"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#dd3311"/>
+ <property name="lifetime" min="60" max="160"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="50"/>
+ <property name="output" min="-1" max="1"/>
+ <property name="randomness" value="200"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ </emitter>
+ <emitter>
+ <property name="position-z" value="-150"/>
+ <property name="position-y" value="32"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#ddff00"/>
+ <property name="lifetime" min="60" max="160"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="50"/>
+ <property name="output" min="-1" max="1"/>
+ <property name="randomness" value="200"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/hex-facet-50.png b/graphics/particles/hex-facet-50.png
new file mode 100644
index 00000000..8a832610
--- /dev/null
+++ b/graphics/particles/hex-facet-50.png
Binary files differ
diff --git a/graphics/particles/hex-facet.png b/graphics/particles/hex-facet.png
new file mode 100644
index 00000000..e00676c9
--- /dev/null
+++ b/graphics/particles/hex-facet.png
Binary files differ
diff --git a/graphics/particles/hillunderfall.particle.xml b/graphics/particles/hillunderfall.particle.xml
new file mode 100644
index 00000000..cdd89f24
--- /dev/null
+++ b/graphics/particles/hillunderfall.particle.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-26" max="39"/>
+ <property name="position-y" min="-28" max="-24"/>
+ <property name="position-z" min="122" max="132"/>
+ <property name="image" value="graphics/particles/waterfall-a.png"/>
+ <property name="output" min="2" max="2"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0.8" max="1.0"/>
+ <property name="gravity" value="0.05"/>
+ <property name="fade-in" value="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/hillunderfall2.particle.xml b/graphics/particles/hillunderfall2.particle.xml
new file mode 100644
index 00000000..c28e4f4d
--- /dev/null
+++ b/graphics/particles/hillunderfall2.particle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-26" max="39"/>
+ <property name="position-y" min="-28" max="-24"/>
+ <property name="position-z" min="78" max="88"/>
+ <property name="image" value="graphics/particles/waterfall-a.png"/>
+ <property name="output" min="2" max="2"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0.8" max="1.0"/>
+ <property name="gravity" value="0.05"/>
+ <property name="fade-in" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-42" max="50"/>
+ <property name="position-y" min="34" max="44"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-40" max="48"/>
+ <property name="position-y" min="34" max="44"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/hit.particle.xml b/graphics/particles/hit.particle.xml
new file mode 100644
index 00000000..fc59c8ff
--- /dev/null
+++ b/graphics/particles/hit.particle.xml
@@ -0,0 +1,52 @@
+<?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>
diff --git a/graphics/particles/hot_coals.png b/graphics/particles/hot_coals.png
new file mode 100644
index 00000000..b2791e3a
--- /dev/null
+++ b/graphics/particles/hot_coals.png
Binary files differ
diff --git a/graphics/particles/hug.particle.xml b/graphics/particles/hug.particle.xml
new file mode 100644
index 00000000..551d0a4c
--- /dev/null
+++ b/graphics/particles/hug.particle.xml
@@ -0,0 +1,18 @@
+<?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/single-heart.png"/>
+ <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="32"/>
+ <property name="position-z" min="16" max="32"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/large-explosion.xml b/graphics/particles/large-explosion.xml
new file mode 100644
index 00000000..45cf6fbb
--- /dev/null
+++ b/graphics/particles/large-explosion.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+An explosion
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="20" lifetime="1">
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="-10" max="10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="5"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/smoke-large-grey.png"/>
+ <property name="lifetime" min="50" max="800"/>
+ <property name="output" min="300" max="330"/>
+ <property name="fade-out" value="10"/>
+ <property name="bounce" value="0.8"/>
+ </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="60"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="0.8"/>
+ <property name="gravity" value="0.01"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="lifetime" min="70" max="180"/>
+ <property name="output" min="10" max="22"/>
+ <property name="fade-out" value="10"/>
+ <property name="bounce" value="0.8"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-10" max="10"/>
+ <property name="position-y" min="-10" max="10"/>
+ <property name="position-z" min="30" max="40"/>
+ <property name="vertical-angle" min="15" max="40"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="0.7"/>
+ <property name="gravity" value="0.001"/>
+ <property name="image" value="graphics/particles/blaze.png"/>
+ <property name="lifetime" min="0" max="140"/>
+ <property name="output" min="20" max="35"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/leaf.png b/graphics/particles/leaf.png
new file mode 100644
index 00000000..feb28b40
--- /dev/null
+++ b/graphics/particles/leaf.png
Binary files differ
diff --git a/graphics/particles/levelup.particle.xml b/graphics/particles/levelup.particle.xml
new file mode 100644
index 00000000..17e10f82
--- /dev/null
+++ b/graphics/particles/levelup.particle.xml
@@ -0,0 +1,18 @@
+<?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>
diff --git a/graphics/particles/light-large.png b/graphics/particles/light-large.png
new file mode 100644
index 00000000..9159ebf0
--- /dev/null
+++ b/graphics/particles/light-large.png
Binary files differ
diff --git a/graphics/particles/lightning-map.png b/graphics/particles/lightning-map.png
new file mode 100644
index 00000000..02accca8
--- /dev/null
+++ b/graphics/particles/lightning-map.png
Binary files differ
diff --git a/graphics/particles/lightning-map.xml b/graphics/particles/lightning-map.xml
new file mode 100644
index 00000000..c7cb2f69
--- /dev/null
+++ b/graphics/particles/lightning-map.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+An storm
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-1000" max="1000"/>
+ <property name="position-y" min="-1000" max="1000"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0" max="0"/>
+ <property name="gravity" value="0"/>
+ <property name="power" min="0.1" max="0.3"/>
+ <property name="gravity" value="-0.04"/>
+ <property name="image" value="graphics/particles/lightning-map.png"/>
+ <property name="lifetime" min="3" max="5"/>
+ <property name="output" min="5" max="8"/>
+ <property name="output-pause" min="800" max="1000"/>
+ <property name="fade-in" value="1"/>
+ <property name="fade-out" value="1"/>
+ <property name="randomness" value="30"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/lightning1-240.png b/graphics/particles/lightning1-240.png
new file mode 100644
index 00000000..74c22d6c
--- /dev/null
+++ b/graphics/particles/lightning1-240.png
Binary files differ
diff --git a/graphics/particles/lightning1.xml b/graphics/particles/lightning1.xml
new file mode 100644
index 00000000..0fe869b0
--- /dev/null
+++ b/graphics/particles/lightning1.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!--
+An explosion of white particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="120" lifetime="1">
+ <emitter>
+ <property name="power" min="0" max="0"/>
+ <property name="gravity" value="0"/>
+ <property name="image" value="graphics/particles/lightning1-240.png"/>
+ <property name="lifetime" min="5" max="10"/>
+ <property name="output" value="1"/>
+ <property name="fade-out" value="8"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/lightning2-263.png b/graphics/particles/lightning2-263.png
new file mode 100644
index 00000000..2a4900da
--- /dev/null
+++ b/graphics/particles/lightning2-263.png
Binary files differ
diff --git a/graphics/particles/lightning2.xml b/graphics/particles/lightning2.xml
new file mode 100644
index 00000000..6f5d059d
--- /dev/null
+++ b/graphics/particles/lightning2.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!--
+An explosion of white particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="131" lifetime="1">
+ <emitter>
+ <property name="power" min="0" max="0"/>
+ <property name="gravity" value="0"/>
+ <property name="image" value="graphics/particles/lightning2-263.png"/>
+ <property name="lifetime" min="5" max="10"/>
+ <property name="output" value="1"/>
+ <property name="fade-out" value="8"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/lightning3-275.png b/graphics/particles/lightning3-275.png
new file mode 100644
index 00000000..c0f7ecec
--- /dev/null
+++ b/graphics/particles/lightning3-275.png
Binary files differ
diff --git a/graphics/particles/lightning3.xml b/graphics/particles/lightning3.xml
new file mode 100644
index 00000000..3734f1f8
--- /dev/null
+++ b/graphics/particles/lightning3.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!--
+An explosion of white particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="137" lifetime="1">
+ <emitter>
+ <property name="power" min="0" max="0"/>
+ <property name="gravity" value="0"/>
+ <property name="image" value="graphics/particles/lightning3-275.png"/>
+ <property name="lifetime" min="5" max="10"/>
+ <property name="output" value="1"/>
+ <property name="fade-out" value="8"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/lobbed-object.xml b/graphics/particles/lobbed-object.xml
new file mode 100644
index 00000000..5ce4ef77
--- /dev/null
+++ b/graphics/particles/lobbed-object.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="1200">
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="45" max="60"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="0.8"/>
+ <property name="gravity" value="0.01"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="lifetime" min="7" max="18"/>
+ <property name="fade-out" value="6"/>
+ <property name="bounce" value="0.8"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-10" max="10"/>
+ <property name="position-y" min="-10" max="10"/>
+ <property name="position-z" min="30" max="40"/>
+ <property name="vertical-angle" min="15" max="40"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="0.7"/>
+ <property name="gravity" value="0.001"/>
+ <property name="image" value="graphics/particles/blaze.png"/>
+ <property name="lifetime" min="0" max="14"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/luvia-attack.particle.xml b/graphics/particles/luvia-attack.particle.xml
new file mode 100644
index 00000000..6118686b
--- /dev/null
+++ b/graphics/particles/luvia-attack.particle.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+ Luvia's missile attack
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="102">
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#60DAFF,FFFFFF"/>
+ <property name="lifetime" value="50"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="3" max="5"/>
+ <property name="power" min="1" max="6"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-large.png|W:#130F16"/>
+ <property name="lifetime" value="60"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="1"/>
+ <property name="horizontal-angle" min="-10" max="-10"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#333333" width="15" height="15">
+ <sequence start="0" end="7" delay="10"/>
+ <frame index="0" delay="10"/>
+ </animation>
+ <property name="lifetime" value="50"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="2" max="3"/>
+ <property name="power" min="1" max="4"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic-blue-teleport.particle.xml b/graphics/particles/magic-blue-teleport.particle.xml
new file mode 100644
index 00000000..a2f46c1d
--- /dev/null
+++ b/graphics/particles/magic-blue-teleport.particle.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+ Sparks and blue orbs raising slowly above the caster
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="1">
+ <emitter>
+ <property name="position-z" min="14" max="18"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="5"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="64"/>
+ <emitter>
+ <property name="position-y" min="16" max="32"/>
+ <property name="gravity" value="-0.11"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#CDF5FF,FFFFFF"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="2" max="4"/>
+ <property name="bounce" min="0" max="0.6"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="0.07"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#99E8FF,FFFFFF"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="1" max="4"/>
+ <property name="bounce" min="0" max="0.75"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.1"/>
+ <property name="image" value="graphics/particles/vline-small.png|W:#A3EAFF"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="1" max="2"/>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" min="2" max="10"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic-building-aura.particle.xml b/graphics/particles/magic-building-aura.particle.xml
new file mode 100644
index 00000000..2038154c
--- /dev/null
+++ b/graphics/particles/magic-building-aura.particle.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<!--
+Light blue,white and green particles which fly up to the sky. Magical aura for buildings
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="1" max="100"/>
+ <property name="lifetime" value="100"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#00ffff"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00ffff"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#ffffff"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#72982c"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#72982c"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic-dark-explosion.particle.xml b/graphics/particles/magic-dark-explosion.particle.xml
new file mode 100644
index 00000000..7c1b65f5
--- /dev/null
+++ b/graphics/particles/magic-dark-explosion.particle.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!--
+ Sparks and dark orbs raising slowly above the caster
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="1">
+ <emitter>
+ <property name="position-z" min="14" max="18"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="image" value="graphics/particles/orb-large.png|W:#130F16"/>
+ <property name="lifetime" value="120"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="7" max="9"/>
+ <property name="power" min="4" max="12"/>
+ <property name="gravity" value="0.07"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="gravity" value="0.01"/>
+ </emitter>
+ <emitter>
+ <property name="position-z" min="14" max="18"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="0"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="84"/>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#512C75,222222"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="10"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#333333" width="15" height="15">
+ <sequence start="0" end="7" delay="10"/>
+ <frame index="0" delay="10"/>
+ </animation>
+ <property name="lifetime" value="90"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="3"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic.astral-summon.xml b/graphics/particles/magic.astral-summon.xml
new file mode 100644
index 00000000..d4151600
--- /dev/null
+++ b/graphics/particles/magic.astral-summon.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="1">
+ <emitter>
+ <animation imageset="graphics/particles/sparkle.png|W:#0000e0,7080ff" 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="30" max="60"/>
+ <property name="output" min="6" max="20"/>
+ <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>
+ <emitter>
+ <property name="position-y" value="-16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="60"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="150"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="77"/>
+ <property name="fade-in" value="57"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="180"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="36"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="252"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-76"/>
+ <property name="position-x" value="0"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="108"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="324"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic.black.xml b/graphics/particles/magic.black.xml
new file mode 100644
index 00000000..88c8f9b8
--- /dev/null
+++ b/graphics/particles/magic.black.xml
@@ -0,0 +1,18 @@
+<?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:#000000" 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="0" 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/graphics/particles/magic.blue.xml b/graphics/particles/magic.blue.xml
new file mode 100644
index 00000000..d047dcd9
--- /dev/null
+++ b/graphics/particles/magic.blue.xml
@@ -0,0 +1,18 @@
+<?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:#0000e0,7080ff" 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/graphics/particles/magic.dark-summon.xml b/graphics/particles/magic.dark-summon.xml
new file mode 100644
index 00000000..174d19ec
--- /dev/null
+++ b/graphics/particles/magic.dark-summon.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="1">
+ <emitter>
+ <animation imageset="graphics/particles/sparkle.png|W:#ff0000,000000" 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="30" max="60"/>
+ <property name="output" min="6" max="20"/>
+ <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>
+ <emitter>
+ <property name="position-y" value="-16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="60"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="150"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <property name="lifetime" value="77"/>
+ <property name="fade-in" value="57"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="180"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="36"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="252"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-76"/>
+ <property name="position-x" value="0"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="108"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="324"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic.darkred.xml b/graphics/particles/magic.darkred.xml
new file mode 100644
index 00000000..96460946
--- /dev/null
+++ b/graphics/particles/magic.darkred.xml
@@ -0,0 +1,18 @@
+<?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:#ff0000,000000" 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/graphics/particles/magic.default.xml b/graphics/particles/magic.default.xml
new file mode 100644
index 00000000..0363f067
--- /dev/null
+++ b/graphics/particles/magic.default.xml
@@ -0,0 +1,18 @@
+<?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:#0020ff,20f0ff" 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/graphics/particles/magic.enhance.xml b/graphics/particles/magic.enhance.xml
new file mode 100644
index 00000000..18fb52ca
--- /dev/null
+++ b/graphics/particles/magic.enhance.xml
@@ -0,0 +1,18 @@
+<?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:#a0a000,ffdf10" 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/graphics/particles/magic.generic.xml b/graphics/particles/magic.generic.xml
new file mode 100644
index 00000000..eb123202
--- /dev/null
+++ b/graphics/particles/magic.generic.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="128">
+ <emitter>
+ <!-- red -->
+ <animation imageset="graphics/particles/sparkle.png|W:#b00000,ff8020" 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="output-pause" min="0" max="12"/>
+ <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>
+ <emitter>
+ <!-- green -->
+ <animation imageset="graphics/particles/sparkle.png|W:#00a000,30ff30" 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="output-pause" min="0" max="12"/>
+ <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>
+ <emitter>
+ <!-- blue -->
+ <animation imageset="graphics/particles/sparkle.png|W:#0000e0,7080ff" 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="output-pause" min="0" max="12"/>
+ <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>
+ <emitter>
+ <!-- yellow -->
+ <animation imageset="graphics/particles/sparkle.png|W:#9090000,ffff00" 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="output-pause" min="0" max="12"/>
+ <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>
+ <emitter>
+ <!-- cyan -->
+ <animation imageset="graphics/particles/sparkle.png|W:#008080,00ffff" 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="output-pause" min="0" max="12"/>
+ <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>
+ <emitter>
+ <!-- magenta -->
+ <animation imageset="graphics/particles/sparkle.png|W:#800080,ff00ff" 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="output-pause" min="0" max="12"/>
+ <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/graphics/particles/magic.golden.xml b/graphics/particles/magic.golden.xml
new file mode 100644
index 00000000..18fb52ca
--- /dev/null
+++ b/graphics/particles/magic.golden.xml
@@ -0,0 +1,18 @@
+<?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:#a0a000,ffdf10" 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/graphics/particles/magic.green.xml b/graphics/particles/magic.green.xml
new file mode 100644
index 00000000..6641c6e8
--- /dev/null
+++ b/graphics/particles/magic.green.xml
@@ -0,0 +1,18 @@
+<?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:#00a000,30ff30" 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/graphics/particles/magic.grow-plant.xml b/graphics/particles/magic.grow-plant.xml
new file mode 100644
index 00000000..175c8fee
--- /dev/null
+++ b/graphics/particles/magic.grow-plant.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="1">
+ <emitter>
+ <animation imageset="graphics/particles/sparkle.png|W:#b00000,ff8020" 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="30" max="60"/>
+ <property name="output" min="6" max="20"/>
+ <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>
+ <emitter>
+ <property name="position-y" value="-16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="60"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="150"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <property name="lifetime" value="77"/>
+ <property name="fade-in" value="57"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="180"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="36"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="252"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-76"/>
+ <property name="position-x" value="0"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="108"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="324"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00a000,30ff30"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic.hit.evil.xml b/graphics/particles/magic.hit.evil.xml
new file mode 100644
index 00000000..7392c63c
--- /dev/null
+++ b/graphics/particles/magic.hit.evil.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="1">
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="1" max="5"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="4"/>
+ <property name="gravity" value="100"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="30" max="60"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="1" max="5"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="4"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-medium.png|W:#000000"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="40" max="55"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="1" max="5"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="4"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#000000"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="60" max="80"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="1" max="5"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ <property name="gravity" value="0.1"/>
+ <animation imageset="graphics/particles/electricity-spark.png" width="15" height="15">
+ <sequence start="0" end="7" delay="10"/>
+ <frame index="0" delay="10"/>
+ </animation>
+ <property name="lifetime" min="10" max="800"/>
+ <property name="output" min="5" max="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic.hit.xml b/graphics/particles/magic.hit.xml
new file mode 100644
index 00000000..1141116c
--- /dev/null
+++ b/graphics/particles/magic.hit.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="1">
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="1" max="5"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="3"/>
+ <property name="gravity" value="100"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#000000"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="30" max="60"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="1" max="5"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="3"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/star-medium.png|W:#000000"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="30" max="50"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="1" max="5"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="3"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#000000"/>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="40" max="60"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="1" max="5"/>
+ <property name="vertical-angle" min="45" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ <property name="gravity" value="0.1"/>
+ <animation imageset="graphics/particles/electricity-spark.png" width="15" height="15">
+ <sequence start="0" end="7" delay="10"/>
+ <frame index="0" delay="10"/>
+ </animation>
+ <property name="lifetime" min="10" max="800"/>
+ <property name="output" min="12" max="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic.red.xml b/graphics/particles/magic.red.xml
new file mode 100644
index 00000000..59a494ae
--- /dev/null
+++ b/graphics/particles/magic.red.xml
@@ -0,0 +1,18 @@
+<?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:#b00000,ff8020" 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/graphics/particles/magic.shield-ends.xml b/graphics/particles/magic.shield-ends.xml
new file mode 100644
index 00000000..41d83e73
--- /dev/null
+++ b/graphics/particles/magic.shield-ends.xml
@@ -0,0 +1,267 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="85" lifetime="1">
+ <emitter>
+ <property name="vertical-angle" value="270"/>
+ <property name="power" value="4"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="1" max="1"/>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="-11" max="11"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="4" end="4" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="11" max="33"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="3" end="3" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="34" max="56"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="2" end="2" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="56" max="78"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="1" end="1" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="79" max="101"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="0" end="0" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="101" max="123"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="7" end="7" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="124" max="146"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="6" end="6" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="146" max="168"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="0" end="0" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="169" max="191"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="4" end="4" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="191" max="213"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="3" end="3" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="214" max="236"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="2" end="2" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="236" max="258"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="1" end="1" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="259" max="281"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="0" end="0" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="281" max="303"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="7" end="7" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="304" max="326"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="6" end="6" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="326" max="348"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="10" max="15"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="0" end="0" delay="10000"/>
+ </animation>
+ <property name="position-z" min="-85" max="0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="40"/>
+ <property name="fade-out" value="40"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic.shield.xml b/graphics/particles/magic.shield.xml
new file mode 100644
index 00000000..b964298b
--- /dev/null
+++ b/graphics/particles/magic.shield.xml
@@ -0,0 +1,235 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="1">
+ <emitter>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" value="4"/>
+ <property name="lifetime" value="25"/>
+ <property name="output" min="1" max="1"/>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="-11" max="11"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="4" end="4" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="11" max="33"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="3" end="3" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="34" max="56"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="2" end="2" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="56" max="78"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="1" end="1" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="79" max="101"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="0" end="0" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="101" max="123"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="7" end="7" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="124" max="146"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="6" end="6" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="146" max="168"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="5" end="5" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="169" max="191"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="4" end="4" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="191" max="213"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="3" end="3" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="214" max="236"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="2" end="2" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="236" max="258"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="1" end="1" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="259" max="281"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="0" end="0" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="281" max="303"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="7" end="7" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="304" max="326"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="6" end="6" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="vertical-angle" value="0"/>
+ <property name="horizontal-angle" min="326" max="348"/>
+ <property name="power" min="18" max="20"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" min="0" max="2"/>
+ <emitter>
+ <animation imageset="graphics/particles/hex-facet-50.png|W:#ff0000" width="9" height="11">
+ <sequence start="5" end="5" delay="10000"/>
+ </animation>
+ <property name="lifetime" value="40"/>
+ <property name="fade-in" value="5"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic.teleport.xml b/graphics/particles/magic.teleport.xml
new file mode 100644
index 00000000..7b4a1ef2
--- /dev/null
+++ b/graphics/particles/magic.teleport.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="16">
+ <emitter>
+ <animation imageset="graphics/particles/puff-blue.png" width="17" height="17">
+ <sequence start="0" end="9" delay="30"/>
+ <frame index="0" delay="300"/>
+ <end/>
+ </animation>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" value="4"/>
+ <property name="lifetime" value="30"/>
+ <property name="output" min="2" max="5"/>
+ <property name="position-x" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="0" max="3"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/magic.white.xml b/graphics/particles/magic.white.xml
new file mode 100644
index 00000000..ef3d387f
--- /dev/null
+++ b/graphics/particles/magic.white.xml
@@ -0,0 +1,18 @@
+<?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/graphics/particles/manaseed.particle.xml b/graphics/particles/manaseed.particle.xml
new file mode 100644
index 00000000..71545064
--- /dev/null
+++ b/graphics/particles/manaseed.particle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!--
+A one tile wide rectangular fire effect intended for use with the fireplace
+from the woodland_indoor tileset.
+-->
+<effect>
+ <particle position-x="0" position-y="8" position-z="16">
+ <emitter>
+ <property name="randomness" value="100"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#990000,ffffff"/>
+ <property name="gravity" value="-0.001"/>
+ <property name="lifetime" value="200"/>
+ <property name="output-pause" value="10"/>
+ <property name="output" min="0" max="1"/>
+ <property name="fade-out" value="100"/>
+ <property name="bounce" value="1"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/medium-blindinglight.xml b/graphics/particles/medium-blindinglight.xml
new file mode 100644
index 00000000..7c9480ab
--- /dev/null
+++ b/graphics/particles/medium-blindinglight.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+A medium blinding light, that stay on the ground, like a layer of clouds.
+-->
+<effect>
+ <particle position-x="-16" position-y="0" position-z="40" lifetime="1">
+ <emitter>
+ <property name="position-x" min="-2" max="2"/>
+ <property name="position-y" min="-2" max="2"/>
+ <property name="vertical-angle" min="-60" max="60"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="3"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/light-large.png"/>
+ <property name="lifetime" min="3000" max="4000"/>
+ <property name="output" min="10" max="800"/>
+ <property name="fade-out" value="10"/>
+ <property name="bounce" value="0.1"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/medium-explosion.xml b/graphics/particles/medium-explosion.xml
new file mode 100644
index 00000000..ff37b920
--- /dev/null
+++ b/graphics/particles/medium-explosion.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+An explosion
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="20" lifetime="1">
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="-10" max="10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="5"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/smoke-large-grey.png"/>
+ <property name="lifetime" min="50" max="800"/>
+ <property name="output" min="100" max="230"/>
+ <property name="fade-out" value="10"/>
+ <property name="bounce" value="0.8"/>
+ </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="60"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="0.8"/>
+ <property name="gravity" value="0.01"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="lifetime" min="70" max="180"/>
+ <property name="output" min="3" max="12"/>
+ <property name="fade-out" value="10"/>
+ <property name="bounce" value="0.8"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-10" max="10"/>
+ <property name="position-y" min="-10" max="10"/>
+ <property name="position-z" min="30" max="40"/>
+ <property name="vertical-angle" min="15" max="40"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="0.7"/>
+ <property name="gravity" value="0.001"/>
+ <property name="image" value="graphics/particles/blaze.png"/>
+ <property name="lifetime" min="0" max="140"/>
+ <property name="output" min="10" max="15"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/medium-smoke.xml b/graphics/particles/medium-smoke.xml
new file mode 100644
index 00000000..72e3a940
--- /dev/null
+++ b/graphics/particles/medium-smoke.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+An explosion
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="20" lifetime="1">
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="-10" max="10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="5"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/smoke-large-grey.png"/>
+ <property name="lifetime" min="50" max="800"/>
+ <property name="output" min="10" max="130"/>
+ <property name="fade-out" value="10"/>
+ <property name="bounce" value="0.8"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/mist-face-a.png b/graphics/particles/mist-face-a.png
new file mode 100644
index 00000000..d0674db2
--- /dev/null
+++ b/graphics/particles/mist-face-a.png
Binary files differ
diff --git a/graphics/particles/mist-face-b.png b/graphics/particles/mist-face-b.png
new file mode 100644
index 00000000..9ab270c9
--- /dev/null
+++ b/graphics/particles/mist-face-b.png
Binary files differ
diff --git a/graphics/particles/monster-angry-fire-goblin.particle.xml b/graphics/particles/monster-angry-fire-goblin.particle.xml
new file mode 100644
index 00000000..a3052d5a
--- /dev/null
+++ b/graphics/particles/monster-angry-fire-goblin.particle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+A fire effect intended for use with the fire goblin mob
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-11" max="13"/>
+ <property name="position-y" min="-22" max="-26"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0.1" max="0.3"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/aniblaze.png|W:#BF0019,FF6715,FFE659" width="8" height="8">
+ <sequence start="0" end="14" delay="20"/>
+ <frame index="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="25" max="35"/>
+ <property name="output" min="0" max="7"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="5"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-angry-green-slime.particle.xml b/graphics/particles/monster-angry-green-slime.particle.xml
new file mode 100644
index 00000000..ed1d0f8c
--- /dev/null
+++ b/graphics/particles/monster-angry-green-slime.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+A bubble effect intended for use with the igreen slime mob.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-7" max="7"/>
+ <property name="position-y" min="-14" max="-22"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0.1" max="0.3"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/anibubble_8px_green.png" width="8" height="8">
+ <sequence start="0" end="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="15" max="25"/>
+ <property name="output" min="0" max="7"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="5"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-angry-sea-slime.particle.xml b/graphics/particles/monster-angry-sea-slime.particle.xml
new file mode 100644
index 00000000..b5ae198e
--- /dev/null
+++ b/graphics/particles/monster-angry-sea-slime.particle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+A bubble effect intended for use with the sea slime mob.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-11" max="13"/>
+ <property name="position-y" min="-14" max="-22"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" min="0.1" max="0.3"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/anibubble_8px.png" width="8" height="8">
+ <sequence start="0" end="14" delay="1000"/>
+ </animation>
+ <property name="lifetime" min="15" max="25"/>
+ <property name="output" min="0" max="7"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="5"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-ball-lightning-blue.particle.xml b/graphics/particles/monster-ball-lightning-blue.particle.xml
new file mode 100644
index 00000000..17c2387e
--- /dev/null
+++ b/graphics/particles/monster-ball-lightning-blue.particle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="10">
+ <emitter>
+ <property name="position-z" min="16" max="48"/>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#0000FF" width="15" height="15">
+ <sequence start="0" end="7" delay="20"/>
+ </animation>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="gravity" value="0.1"/>
+ <property name="randomness" value="125"/>
+ <property name="lifetime" value="75"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="alpha" value="0.6"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-ball-lightning-red.particle.xml b/graphics/particles/monster-ball-lightning-red.particle.xml
new file mode 100644
index 00000000..5681dacd
--- /dev/null
+++ b/graphics/particles/monster-ball-lightning-red.particle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="10">
+ <emitter>
+ <property name="position-z" min="16" max="48"/>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#FF0000" width="15" height="15">
+ <sequence start="0" end="7" delay="20"/>
+ </animation>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="gravity" value="0.1"/>
+ <property name="randomness" value="125"/>
+ <property name="lifetime" value="75"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="alpha" value="0.6"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-ball-lightning.particle.png b/graphics/particles/monster-ball-lightning.particle.png
new file mode 100644
index 00000000..06a7f733
--- /dev/null
+++ b/graphics/particles/monster-ball-lightning.particle.png
Binary files differ
diff --git a/graphics/particles/monster-ball-lightning.particle.xml b/graphics/particles/monster-ball-lightning.particle.xml
new file mode 100644
index 00000000..46235336
--- /dev/null
+++ b/graphics/particles/monster-ball-lightning.particle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="10">
+ <emitter>
+ <property name="position-z" min="16" max="48"/>
+ <animation imageset="graphics/particles/monster-ball-lightning.particle.png" width="15" height="15">
+ <sequence start="0" end="7" delay="20"/>
+ </animation>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="gravity" value="0.1"/>
+ <property name="randomness" value="125"/>
+ <property name="lifetime" value="75"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="alpha" value="0.6"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-goblin-firebreath.particle.xml b/graphics/particles/monster-goblin-firebreath.particle.xml
new file mode 100644
index 00000000..7ac82b5b
--- /dev/null
+++ b/graphics/particles/monster-goblin-firebreath.particle.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+A horizontal flame burst with a range of about 60 pixels.
+Creates up to 400 particles but only for a very brief moment.
+used for the fire breath attack of the fire goblins.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="25">
+ <emitter>
+ <property name="position-x" min="0" max="0"/>
+ <property name="position-y" min="-8" max="-8"/>
+ <property name="horizontal-angle" min="80" max="100"/>
+ <property name="vertical-angle" min="-20" max="20"/>
+ <property name="power" min="1" max="1.5"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/aniblaze-medium.png|W:#ffff00,ff0000" width="16" height="16">
+ <frame index="0" delay="5"/>
+ <frame index="1" delay="10"/>
+ <frame index="2" delay="15"/>
+ <frame index="3" delay="25"/>
+ <frame index="4" delay="35"/>
+ <frame index="5" delay="60"/>
+ <frame index="6" delay="95"/>
+ <frame index="7" delay="160"/>
+ <frame index="8" delay="9999"/>
+ </animation>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="5" max="10"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="60"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-leaf.particle.xml b/graphics/particles/monster-leaf.particle.xml
new file mode 100644
index 00000000..9fa201ce
--- /dev/null
+++ b/graphics/particles/monster-leaf.particle.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="40">
+ <emitter>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" min="0.4" max="2"/>
+ <property name="lifetime" value="160"/>
+ <property name="fade-out" value="40"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="-20" max="1"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="alpha" value="0.5"/>
+ <animation imageset="graphics/particles/leaf.png|W:#6a9419" width="8" height="8">
+ <sequence start="0" end="6" delay="50"/>
+ </animation>
+ <property name="follow-parent"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" min="0.4" max="2"/>
+ <property name="lifetime" value="160"/>
+ <property name="fade-out" value="40"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="-20" max="1"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="alpha" value="0.5"/>
+ <animation imageset="graphics/particles/leaf.png|W:#945019" width="8" height="8">
+ <sequence start="0" end="6" delay="50"/>
+ </animation>
+ <property name="follow-parent"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" min="0.4" max="2"/>
+ <property name="lifetime" value="160"/>
+ <property name="fade-out" value="40"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="-20" max="1"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="alpha" value="0.5"/>
+ <animation imageset="graphics/particles/leaf.png|W:#791b1b" width="8" height="8">
+ <sequence start="0" end="6" delay="50"/>
+ </animation>
+ <property name="follow-parent"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" min="0.4" max="2"/>
+ <property name="lifetime" value="160"/>
+ <property name="fade-out" value="40"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="-20" max="1"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="alpha" value="0.5"/>
+ <animation imageset="graphics/particles/leaf.png|W:#465018" width="8" height="8">
+ <sequence start="0" end="6" delay="50"/>
+ </animation>
+ <property name="follow-parent"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" min="0.4" max="2"/>
+ <property name="lifetime" value="160"/>
+ <property name="fade-out" value="40"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="-20" max="1"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="alpha" value="0.5"/>
+ <animation imageset="graphics/particles/leaf.png|W:#a05e00" width="8" height="8">
+ <sequence start="0" end="6" delay="50"/>
+ </animation>
+ <property name="follow-parent"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-lizard-firebreath.particle.xml b/graphics/particles/monster-lizard-firebreath.particle.xml
new file mode 100644
index 00000000..5c9152ac
--- /dev/null
+++ b/graphics/particles/monster-lizard-firebreath.particle.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+A horizontal flame burst with a range of about 60 pixels.
+Creates up to 400 particles but only for a very brief moment.
+used for the fire breath attack of the fire lizard. mostly a copy&paste from the fire goblin, just with
+positions and vectors tuned.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="25">
+ <emitter>
+ <property name="position-x" min="0" max="0"/>
+ <property name="position-y" min="14" max="14"/>
+ <property name="position-z" min="40" max="40"/>
+ <property name="horizontal-angle" min="90" max="100"/>
+ <property name="vertical-angle" min="-30" max="-20"/>
+ <property name="power" min="2" max="4"/>
+ <property name="momentum" value="0.97"/>
+ <property name="gravity" value="-0.04"/>
+ <animation imageset="graphics/particles/aniblaze-medium.png|W:#ffff00,cc0000" width="16" height="16">
+ <frame index="0" delay="5"/>
+ <frame index="1" delay="10"/>
+ <frame index="2" delay="15"/>
+ <frame index="3" delay="25"/>
+ <frame index="4" delay="35"/>
+ <frame index="5" delay="60"/>
+ <frame index="6" delay="95"/>
+ <frame index="7" delay="160"/>
+ <frame index="8" delay="9999"/>
+ </animation>
+ <property name="lifetime" min="0" max="80"/>
+ <property name="output" min="5" max="10"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="60"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-luvia.particle.xml b/graphics/particles/monster-luvia.particle.xml
new file mode 100644
index 00000000..dae3cf33
--- /dev/null
+++ b/graphics/particles/monster-luvia.particle.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<!--
+Dark Purple particles flying around the target, giving a demonic aura.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="12"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="4" max="6"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="position-z" min="14" max="18"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="5"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#401c52"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="4"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#512C75,222222"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="4"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#333333" width="15" height="15">
+ <sequence start="0" end="7" delay="10"/>
+ <frame index="0" delay="10"/>
+ </animation>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="4"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="50"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-moonshroom.particle.xml b/graphics/particles/monster-moonshroom.particle.xml
new file mode 100644
index 00000000..c3da0639
--- /dev/null
+++ b/graphics/particles/monster-moonshroom.particle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+A small cloud particle effect intended for use with the Moonshroom mob
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="48">
+ <emitter>
+ <property name="position-x" min="-16" max="32"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" min="0.4" max="2"/>
+ <property name="lifetime" value="160"/>
+ <property name="fade-out" value="40"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="-20" max="1"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="alpha" value="0.5"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#ffff00,ffffff"/>
+ <property name="follow-parent"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-mouboo-demonic.particle.xml b/graphics/particles/monster-mouboo-demonic.particle.xml
new file mode 100644
index 00000000..96fbad18
--- /dev/null
+++ b/graphics/particles/monster-mouboo-demonic.particle.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+A smoke effect intended for use with the Demonic Mouboo mob
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-25" max="25"/>
+ <property name="position-y" min="-40" max="60"/>
+ <property name="position-z" min="64" max="64"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png|W:#1a1a1b"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="0.4"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="1" max="3"/>
+ <property name="lifetime" min="20" max="60"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-25" max="25"/>
+ <property name="position-y" min="-40" max="60"/>
+ <property name="position-z" min="64" max="64"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png|W:#1a1a1b"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="0.4"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="1" max="3"/>
+ <property name="lifetime" min="40" max="100"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-25" max="25"/>
+ <property name="position-y" min="-40" max="60"/>
+ <property name="position-z" min="64" max="64"/>
+ <property name="image" value="graphics/particles/fog-medium-c.png|W:#1a1a1b"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="0.4"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="1" max="3"/>
+ <property name="lifetime" min="40" max="100"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-pumpkin-explosion.particle.xml b/graphics/particles/monster-pumpkin-explosion.particle.xml
new file mode 100644
index 00000000..699c3f2d
--- /dev/null
+++ b/graphics/particles/monster-pumpkin-explosion.particle.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!--
+ Small yellow orbs and brown sparks
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="1">
+ <emitter>
+ <property name="position-z" min="14" max="18"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="5"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="22"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#F8C429"/>
+ <property name="lifetime" value="70"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="15"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="2"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="100"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#5C3A1B,293D0D"/>
+ <property name="lifetime" value="70"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="15"/>
+ <property name="output" min="0" max="2"/>
+ <property name="power" min="0" max="2"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="100"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#FFFF19"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="15"/>
+ <property name="output" min="1" max="3"/>
+ <property name="power" min="0" max="2"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.96"/>
+ <property name="randomness" value="100"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-reaper.particle.xml b/graphics/particles/monster-reaper.particle.xml
new file mode 100644
index 00000000..dfcfa029
--- /dev/null
+++ b/graphics/particles/monster-reaper.particle.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+Purple-ish ghost faces rise up from the ground
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-24" max="24"/>
+ <property name="position-z" min="2" max="32"/>
+ <property name="gravity" value="-0.01"/>
+ <property name="lifetime" value="180"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ <property name="output-pause" min="11" max="61"/>
+ <property name="follow-parent"/>
+ <animation imageset="graphics/particles/mist-face-a.png|W:#855385" width="30" height="30">
+ <sequence start="0" end="2" delay="300"/>
+ <frame index="3"/>
+ </animation>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-24" max="24"/>
+ <property name="position-z" min="2" max="32"/>
+ <property name="gravity" value="-0.01"/>
+ <property name="lifetime" value="180"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ <property name="output-pause" min="17" max="67"/>
+ <property name="follow-parent"/>
+ <animation imageset="graphics/particles/mist-face-b.png|W:#5b3558" width="30" height="30">
+ <sequence start="0" end="2" delay="300"/>
+ <frame index="3"/>
+ </animation>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-snail-trail.particle.xml b/graphics/particles/monster-snail-trail.particle.xml
new file mode 100644
index 00000000..e86b02b1
--- /dev/null
+++ b/graphics/particles/monster-snail-trail.particle.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!-- A thin trail of slime. -->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-y" min="-1" max="5"/>
+ <property name="position-x" min="-3" max="3"/>
+ <property name="lifetime" value="400"/>
+ <property name="fade-out" value="100"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="1" max="5"/>
+ <property name="output-pause" min="30" max="80"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#96A776,B9FF30,BDDF8F"/>
+ <property name="alpha" value=".1"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-souleater.particle.xml b/graphics/particles/monster-souleater.particle.xml
new file mode 100644
index 00000000..e0be7247
--- /dev/null
+++ b/graphics/particles/monster-souleater.particle.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+Purple particles flying around the target.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="56"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="4" max="6"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="0.1"/>
+ <property name="momentum" value="0.6"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#4300A7"/>
+ <property name="lifetime" value="50"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="0.1"/>
+ <property name="momentum" value="0.6"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#4300A7"/>
+ <property name="lifetime" value="75"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-soulsnake.particle.xml b/graphics/particles/monster-soulsnake.particle.xml
new file mode 100644
index 00000000..4359c5a5
--- /dev/null
+++ b/graphics/particles/monster-soulsnake.particle.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!--
+Light blue particles raising from the target, giving the target a magical aura
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="16"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="20" max="24"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.4"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#00ffff"/>
+ <property name="lifetime" value="30"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.4"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00ffff"/>
+ <property name="lifetime" value="50"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-troll-foefire.particle.png b/graphics/particles/monster-troll-foefire.particle.png
new file mode 100644
index 00000000..8928db3c
--- /dev/null
+++ b/graphics/particles/monster-troll-foefire.particle.png
Binary files differ
diff --git a/graphics/particles/monster-troll-foefire.particle.xml b/graphics/particles/monster-troll-foefire.particle.xml
new file mode 100644
index 00000000..6e3bcce2
--- /dev/null
+++ b/graphics/particles/monster-troll-foefire.particle.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+A horizontal flame burst with a range of about 60 pixels.
+Creates up to 400 particles but only for a very brief moment.
+used for the foefire attack of the Trolls.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="25">
+ <emitter>
+ <property name="position-x" min="0" max="0"/>
+ <property name="position-y" min="-8" max="-8"/>
+ <property name="horizontal-angle" min="80" max="100"/>
+ <property name="vertical-angle" min="-20" max="20"/>
+ <property name="power" min="1" max="1.5"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/monster-troll-foefire.particle.png|W:#00FFFF,0000ff" width="24" height="24">
+ <frame index="0" delay="5"/>
+ <frame index="1" delay="10"/>
+ <frame index="2" delay="15"/>
+ <frame index="3" delay="25"/>
+ <frame index="4" delay="35"/>
+ <frame index="5" delay="60"/>
+ <frame index="6" delay="95"/>
+ <frame index="7" delay="160"/>
+ <frame index="8" delay="9999"/>
+ </animation>
+ <property name="lifetime" min="0" max="110"/>
+ <property name="output" min="5" max="10"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="90"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-undeadtroll-foefire.particle.xml b/graphics/particles/monster-undeadtroll-foefire.particle.xml
new file mode 100644
index 00000000..b90cc99a
--- /dev/null
+++ b/graphics/particles/monster-undeadtroll-foefire.particle.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+A horizontal flame burst with a range of about 60 pixels.
+Creates up to 400 particles but only for a very brief moment.
+used for the fire breath attack of the fire goblins.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="25">
+ <emitter>
+ <property name="position-x" min="0" max="0"/>
+ <property name="position-y" min="-8" max="-8"/>
+ <property name="horizontal-angle" min="80" max="100"/>
+ <property name="vertical-angle" min="-20" max="20"/>
+ <property name="power" min="1" max="1.5"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/monster-troll-foefire.particle.png|W:#36FF00,13B302" width="24" height="24">
+ <frame index="0" delay="5"/>
+ <frame index="1" delay="10"/>
+ <frame index="2" delay="15"/>
+ <frame index="3" delay="25"/>
+ <frame index="4" delay="35"/>
+ <frame index="5" delay="60"/>
+ <frame index="6" delay="95"/>
+ <frame index="7" delay="160"/>
+ <frame index="8" delay="9999"/>
+ </animation>
+ <property name="lifetime" min="0" max="110"/>
+ <property name="output" min="5" max="10"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="90"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-virus-foefire.particle.xml b/graphics/particles/monster-virus-foefire.particle.xml
new file mode 100644
index 00000000..fdb76438
--- /dev/null
+++ b/graphics/particles/monster-virus-foefire.particle.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+A horizontal flame burst with a range of about 60 pixels.
+Creates up to 400 particles but only for a very brief moment.
+used for the foefire attack of the Virus.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="25">
+ <emitter>
+ <property name="position-x" min="0" max="0"/>
+ <property name="position-y" min="-8" max="-8"/>
+ <property name="horizontal-angle" min="80" max="100"/>
+ <property name="vertical-angle" min="-20" max="20"/>
+ <property name="power" min="1" max="1.5"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="-0.02"/>
+ <animation imageset="graphics/particles/mist-face-b.particle.png|W:#00FF22" width="30" height="30">
+ <frame index="0" delay="20"/>
+ <frame index="1" delay="30"/>
+ <frame index="2" delay="35"/>
+ <frame index="3" delay="45"/>
+ <frame index="2" delay="105"/>
+ <frame index="3" delay="9999"/>
+ </animation>
+ <property name="lifetime" min="0" max="110"/>
+ <property name="output" min="5" max="10"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="90"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/monster-witchguard.particle.xml b/graphics/particles/monster-witchguard.particle.xml
new file mode 100644
index 00000000..38284e35
--- /dev/null
+++ b/graphics/particles/monster-witchguard.particle.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+Dark Purple particles flying around the target, giving a demonic aura.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="12"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="2" max="4"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <animation imageset="graphics/particles/electricity.particle.png|W:#555555" width="15" height="15">
+ <sequence start="0" end="7" delay="10"/>
+ <frame index="0" delay="10"/>
+ </animation>
+ <property name="lifetime" value="25"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="25"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="0" max="2"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="50"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/moonshroom-attack.particle.xml b/graphics/particles/moonshroom-attack.particle.xml
new file mode 100644
index 00000000..95eed9e1
--- /dev/null
+++ b/graphics/particles/moonshroom-attack.particle.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+A energy ball like particle effect intended for use of the Moonshroom's attacks.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="8" lifetime="102">
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#f7fe70,dfeb01"/>
+ <property name="lifetime" value="200"/>
+ <property name="fade-out" value="100"/>
+ <property name="output" min="1" max="2"/>
+ <property name="power" min="1" max="3"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-large.png|W:#f7fe70,dfeb01"/>
+ <property name="lifetime" value="225"/>
+ <property name="fade-out" value="100"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" value="1"/>
+ <property name="horizontal-angle" min="-10" max="-10"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="75"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/necroblast.particle.xml b/graphics/particles/necroblast.particle.xml
new file mode 100644
index 00000000..44a64ecd
--- /dev/null
+++ b/graphics/particles/necroblast.particle.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!--
+Wight blaze: inspired by Demon fire
+-->
+<effect>
+ <particle position-x="10" position-y="0" position-z="47">
+ <emitter>
+ <property name="position-y" min="-10" max="-20"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="300" max="60"/>
+ <property name="power" min="0.4" max="1.2"/>
+ <property name="gravity" value=".02"/>
+ <animation imageset="graphics/particles/aniblaze-medium.png|W:#440808" width="16" height="16">
+ <sequence start="0" end="8" delay="90"/>
+ <frame index="14" delay="200"/>
+ </animation>
+ <property name="lifetime" value="120"/>
+ <property name="output" min="1" max="3"/>
+ <property name="fade-in" value="25"/>
+ <property name="fade-out" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="300" max="60"/>
+ <property name="power" min="0.4" max="1.2"/>
+ <property name="gravity" value=".02"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png|W:#994040"/>
+ <property name="lifetime" value="100"/>
+ <property name="output" min="1" max="3"/>
+ <property name="fade-in" value="25"/>
+ <property name="fade-out" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="2" max="4"/>
+ <property name="position-y" value="-8"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="300" max="60"/>
+ <property name="power" min="0.4" max="1.2"/>
+ <property name="gravity" value=".02"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#994040,5b0000"/>
+ <property name="lifetime" value="110"/>
+ <property name="output" value="2"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="300"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-3" max="4"/>
+ <property name="position-y" value="-9"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="300" max="60"/>
+ <property name="power" min="0.4" max="1.2"/>
+ <property name="gravity" value=".02"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#bc0000"/>
+ <property name="lifetime" value="120"/>
+ <property name="output" value="2"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="300"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/nomadpipe.particle.xml b/graphics/particles/nomadpipe.particle.xml
new file mode 100644
index 00000000..9c850371
--- /dev/null
+++ b/graphics/particles/nomadpipe.particle.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!--
+Small smoke puffs emitted in irregular pulses. Designed for the pipe of the
+nomad NPC.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="44">
+ <emitter>
+ <property name="position-x" value="24"/>
+ <property name="output" value="1"/>
+ <property name="output-pause" min="300" max="330"/>
+ <property name="lifetime" value="10"/>
+ <emitter>
+ <property name="image" value="graphics/particles/fog-medium-a.png|W:#9999bb"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="0.5"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="0" max="2"/>
+ <property name="lifetime" min="20" max="200"/>
+ <property name="fade-out" value="100"/>
+ <property name="randomness" value="50"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/fog-medium-b.png|W:#9999bb"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="0.5"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="0" max="2"/>
+ <property name="lifetime" min="20" max="200"/>
+ <property name="fade-out" value="100"/>
+ <property name="randomness" value="50"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/fog-medium-c.png|W:#9999bb"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="50" max="90"/>
+ <property name="power" value="0.5"/>
+ <property name="momentum" value="0.99"/>
+ <property name="gravity" value="0"/>
+ <property name="output" min="0" max="2"/>
+ <property name="lifetime" min="20" max="200"/>
+ <property name="fade-out" value="100"/>
+ <property name="randomness" value="50"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/object-getitem.particle.xml b/graphics/particles/object-getitem.particle.xml
new file mode 100644
index 00000000..5c047ee2
--- /dev/null
+++ b/graphics/particles/object-getitem.particle.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+ Small green orbs and orange stars swirling around the player.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="16" lifetime="1">
+ <emitter>
+ <property name="position-z" min="14" max="18"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="3"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="16"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#57CA00"/>
+ <property name="lifetime" value="70"/>
+ <property name="output" min="1" max="2"/>
+ <property name="power" min="0" max="2"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="100"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#FF6633,FFFFFF"/>
+ <property name="lifetime" value="70"/>
+ <property name="output" min="1" max="2"/>
+ <property name="power" min="0" max="2"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="100"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/orange-violent-glow.particle.xml b/graphics/particles/orange-violent-glow.particle.xml
new file mode 100644
index 00000000..5e4d8cc8
--- /dev/null
+++ b/graphics/particles/orange-violent-glow.particle.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+Orange-ish particles that fly up to the sky; based on Crush's Soul Menhir effect.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" min="16" max="48"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="10" max="25"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.4"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#ffa000"/>
+ <property name="lifetime" value="25"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.4"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffa000"/>
+ <property name="lifetime" value="25"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/orb-large.png b/graphics/particles/orb-large.png
new file mode 100644
index 00000000..8886997f
--- /dev/null
+++ b/graphics/particles/orb-large.png
Binary files differ
diff --git a/graphics/particles/orb-medium.png b/graphics/particles/orb-medium.png
new file mode 100644
index 00000000..4c1edc35
--- /dev/null
+++ b/graphics/particles/orb-medium.png
Binary files differ
diff --git a/graphics/particles/orb-small.png b/graphics/particles/orb-small.png
new file mode 100644
index 00000000..179be0d5
--- /dev/null
+++ b/graphics/particles/orb-small.png
Binary files differ
diff --git a/graphics/particles/pentagram-blacklinedraw.particle.xml b/graphics/particles/pentagram-blacklinedraw.particle.xml
new file mode 100644
index 00000000..3b557296
--- /dev/null
+++ b/graphics/particles/pentagram-blacklinedraw.particle.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<!--
+Pentagram on floor effect with flashes along the lines.
+Based on the one by fate with simplified structure and modified to be a permanent effect.
+Particle count fluctuates around 800-1000
+
+ (0, -76.0),
+
+(-57, -35), (57, -35),
+
+
+ (-35, 33)] [(35, 33),
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-y" value="-16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="60"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="5"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <property name="lifetime" value="77"/>
+ <property name="fade-in" value="57"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="57"/>
+ <property name="position-y" value="-35"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="180"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-57"/>
+ <property name="position-y" value="-35"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="36"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="35"/>
+ <property name="position-y" value="33"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="252"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-76"/>
+ <property name="position-x" value="0"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="108"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-35"/>
+ <property name="position-y" value="33"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="324"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#000000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/pentagram-buildup-short.xml b/graphics/particles/pentagram-buildup-short.xml
new file mode 100644
index 00000000..587179a1
--- /dev/null
+++ b/graphics/particles/pentagram-buildup-short.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<!--
+ (0, -76.0),
+
+(-57, -35), (57, -35),
+
+
+ (-35, 33)] [(35, 33),
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="1">
+ <emitter>
+ <property name="position-y" value="-16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="60"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="150"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="77"/>
+ <property name="fade-in" value="57"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="180"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="36"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="252"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-76"/>
+ <property name="position-x" value="0"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="108"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="324"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/pentagram-burst.xml b/graphics/particles/pentagram-burst.xml
new file mode 100644
index 00000000..0f39c0f5
--- /dev/null
+++ b/graphics/particles/pentagram-burst.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<!--
+330 particles total.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0" lifetime="1">
+ <emitter>
+ <property name="position-y" value="-16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="60"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="130"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="120"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="80"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="180"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <property name="output" value="40"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="120"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="80"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="36"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <property name="output" value="40"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="120"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="80"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="252"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <property name="output" value="40"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="120"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="80"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-76"/>
+ <property name="position-x" value="0"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="108"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <property name="output" value="40"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="120"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="80"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="324"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <property name="output" value="40"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="120"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="80"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/pentagram-raise.particle.xml b/graphics/particles/pentagram-raise.particle.xml
new file mode 100644
index 00000000..4cb60d54
--- /dev/null
+++ b/graphics/particles/pentagram-raise.particle.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0"?>
+<!--
+Pentagram on floor effect.
+based on the one by fate with simplified structure and modified to be a permanent effect.
+1201 particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-y" value="-16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="60"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="5"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="60"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <property name="horizontal-angle" value="180"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="60"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-57"/>
+ <property name="position-y" value="-35"/>
+ <property name="lifetime" value="1"/>
+ <property name="horizontal-angle" value="36"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="60"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <property name="horizontal-angle" value="252"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="60"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-76"/>
+ <property name="position-x" value="0"/>
+ <property name="lifetime" value="1"/>
+ <property name="horizontal-angle" value="108"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="60"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-35"/>
+ <property name="position-y" value="33"/>
+ <property name="lifetime" value="1"/>
+ <property name="horizontal-angle" value="324"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0" max="114"/>
+ <emitter>
+ <property name="gravity" min="-0.005" max="-0.002"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="80" max="100"/>
+ <property name="power" min="0.01" max="0.4"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#800000,d02020"/>
+ <property name="lifetime" value="60"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/pentagram-redlinedraw.particle.xml b/graphics/particles/pentagram-redlinedraw.particle.xml
new file mode 100644
index 00000000..95a90e5b
--- /dev/null
+++ b/graphics/particles/pentagram-redlinedraw.particle.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<!--
+Pentagram on floor effect with flashes along the lines.
+Based on the one by fate with simplified structure and modified to be a permanent effect.
+Particle count fluctuates around 800-1000
+
+ (0, -76.0),
+
+(-57, -35), (57, -35),
+
+
+ (-35, 33)] [(35, 33),
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-y" value="-16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="60"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="5"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <property name="lifetime" value="77"/>
+ <property name="fade-in" value="57"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="57"/>
+ <property name="position-y" value="-35"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="180"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-57"/>
+ <property name="position-y" value="-35"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="36"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="35"/>
+ <property name="position-y" value="33"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="252"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-76"/>
+ <property name="position-x" value="0"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="108"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-x" value="-35"/>
+ <property name="position-y" value="33"/>
+ <property name="output" min="-50" max="1"/>
+ <property name="lifetime" value="1"/>
+ <emitter>
+ <property name="horizontal-angle" value="324"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="2"/>
+ <property name="lifetime" value="57"/>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ff0000"/>
+ <property name="lifetime" value="20"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" value="1"/>
+ </emitter>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/peppermint.particle.xml b/graphics/particles/peppermint.particle.xml
new file mode 100644
index 00000000..cee8d109
--- /dev/null
+++ b/graphics/particles/peppermint.particle.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="128">
+ <rotation imageset="graphics/particles/peppermint.png" width="8" height="8">
+ <sequence start="0" end="7"/>
+ </rotation>
+ </particle>
+</effect>
diff --git a/graphics/particles/peppermint.png b/graphics/particles/peppermint.png
new file mode 100644
index 00000000..83498b5f
--- /dev/null
+++ b/graphics/particles/peppermint.png
Binary files differ
diff --git a/graphics/particles/pink-violent-glow.particle.xml b/graphics/particles/pink-violent-glow.particle.xml
new file mode 100644
index 00000000..a588722f
--- /dev/null
+++ b/graphics/particles/pink-violent-glow.particle.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+Pink-ish particles that fly up to the sky; based on Crush's Soul Menhir effect.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" min="16" max="48"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="10" max="25"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.4"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#da69e5"/>
+ <property name="lifetime" value="25"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.4"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#da69e5"/>
+ <property name="lifetime" value="25"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ <property name="randomness" value="200"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/playerglow.particle.xml b/graphics/particles/playerglow.particle.xml
new file mode 100644
index 00000000..bae38447
--- /dev/null
+++ b/graphics/particles/playerglow.particle.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+Proof of concept of animated stationary particle effects (a bat ) and some
+orbiting yellow particles. Rather useless but could be used as a template for
+more useful status effect particle effects.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="64" lifetime="-1">
+ <animation imageset="graphics/sprites/monster-bat.png" width="37" height="38">
+ <sequence start="1" end="4" delay="50"/>
+ </animation>
+ <emitter>
+ <property name="position-x" min="-1" max="1"/>
+ <property name="position-y" min="-1" max="1"/>
+ <property name="position-z" min="0" max="0"/>
+ <property name="power" min="0" max="3"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="output" value="1"/>
+ <property name="lifetime" value="60"/>
+ <property name="fade-out" value="30"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="momentum" value="0.998"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#ffff00"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/polter.particle.xml b/graphics/particles/polter.particle.xml
new file mode 100644
index 00000000..110d163a
--- /dev/null
+++ b/graphics/particles/polter.particle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+A circle on the ground 60 pixels in diameter made from particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="48">
+ <emitter>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" min="0.4" max="2"/>
+ <property name="lifetime" value="160"/>
+ <property name="fade-out" value="40"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="-20" max="1"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="alpha" value="0.5"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#77ffdd,77ddff"/>
+ <property name="follow-parent"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/pool-1-crozenite.particle.xml b/graphics/particles/pool-1-crozenite.particle.xml
new file mode 100644
index 00000000..e1523d6c
--- /dev/null
+++ b/graphics/particles/pool-1-crozenite.particle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- Crozenite pool -->
+ <particle position-x="16" position-y="0" position-z="44">
+ <animation imageset="graphics/particles/pool-undyed.png|W:#332f27,584a31,af7817,ffffff" width="65" height="27">
+ <sequence start="0" end="7" delay="235"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/pool-2-bromenal.particle.xml b/graphics/particles/pool-2-bromenal.particle.xml
new file mode 100644
index 00000000..ff1224bd
--- /dev/null
+++ b/graphics/particles/pool-2-bromenal.particle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- Crozenite pool -->
+ <particle position-x="16" position-y="0" position-z="44">
+ <animation imageset="graphics/particles/pool-undyed.png|W:#3f2e26,644435,7c513c,ffffff" width="65" height="27">
+ <sequence start="0" end="7" delay="235"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/pool-3-silver.particle.xml b/graphics/particles/pool-3-silver.particle.xml
new file mode 100644
index 00000000..15ae2e46
--- /dev/null
+++ b/graphics/particles/pool-3-silver.particle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- Crozenite pool -->
+ <particle position-x="16" position-y="0" position-z="44">
+ <animation imageset="graphics/particles/pool-undyed.png|W:#4c4c4c,737373,999999,ffffff" width="65" height="27">
+ <sequence start="0" end="7" delay="235"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/pool-4-gold.particle.xml b/graphics/particles/pool-4-gold.particle.xml
new file mode 100644
index 00000000..d4b9fa12
--- /dev/null
+++ b/graphics/particles/pool-4-gold.particle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- Crozenite pool -->
+ <particle position-x="16" position-y="0" position-z="44">
+ <animation imageset="graphics/particles/pool-undyed.png|W:#998100,bfa100,e6c100,ffffff" width="65" height="27">
+ <sequence start="0" end="7" delay="235"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/pool-horiz-2.xml b/graphics/particles/pool-horiz-2.xml
new file mode 100644
index 00000000..1215c72f
--- /dev/null
+++ b/graphics/particles/pool-horiz-2.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- The gate opening animation -->
+ <particle position-x="16" position-y="0" position-z="44">
+ <animation imageset="graphics/particles/pool_65x27.particle.png" width="65" height="27">
+ <sequence start="3" end="7" delay="235"/>
+ <sequence start="0" end="2" delay="235"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/pool-horiz.xml b/graphics/particles/pool-horiz.xml
new file mode 100644
index 00000000..39420d6e
--- /dev/null
+++ b/graphics/particles/pool-horiz.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- The gate opening animation -->
+ <particle position-x="16" position-y="0" position-z="44">
+ <animation imageset="graphics/particles/pool_65x27.particle.png" width="65" height="27">
+ <sequence start="0" end="7" delay="235"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/pool-undyed.png b/graphics/particles/pool-undyed.png
new file mode 100644
index 00000000..59302739
--- /dev/null
+++ b/graphics/particles/pool-undyed.png
Binary files differ
diff --git a/graphics/particles/pool-vert-2.xml b/graphics/particles/pool-vert-2.xml
new file mode 100644
index 00000000..64f8fb36
--- /dev/null
+++ b/graphics/particles/pool-vert-2.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- The gate opening animation -->
+ <particle position-x="0" position-y="0" position-z="60">
+ <animation imageset="graphics/particles/pool_32x59.particle.png" width="32" height="59">
+ <sequence start="4" end="7" delay="235"/>
+ <sequence start="0" end="3" delay="235"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/pool-vert.xml b/graphics/particles/pool-vert.xml
new file mode 100644
index 00000000..cbc4f859
--- /dev/null
+++ b/graphics/particles/pool-vert.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- The gate opening animation -->
+ <particle position-x="0" position-y="0" position-z="60">
+ <animation imageset="graphics/particles/pool_32x59.particle.png" width="32" height="59">
+ <sequence start="2" end="7" delay="235"/>
+ <sequence start="0" end="1" delay="235"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/pool_32x59.particle.png b/graphics/particles/pool_32x59.particle.png
new file mode 100644
index 00000000..ad362139
--- /dev/null
+++ b/graphics/particles/pool_32x59.particle.png
Binary files differ
diff --git a/graphics/particles/pool_65x27.particle.png b/graphics/particles/pool_65x27.particle.png
new file mode 100644
index 00000000..299e4f25
--- /dev/null
+++ b/graphics/particles/pool_65x27.particle.png
Binary files differ
diff --git a/graphics/particles/portal-door.particle.xml b/graphics/particles/portal-door.particle.xml
new file mode 100644
index 00000000..46ca3c24
--- /dev/null
+++ b/graphics/particles/portal-door.particle.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="15" position-y="0" position-z="38">
+ <emitter>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="8" max="10"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <!-- <property name="position-x" value="-5"/> -->
+ <property name="position-y" min="0" max="30"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" value="0.3"/>
+ <property name="gravity" value="-0.01"/>
+ <animation imageset="graphics/particles/aniblaze-medium.png|W:#a831cf" width="16" height="16">
+ <sequence start="0" end="8" delay="60"/>
+ <frame index="8" delay="900"/>
+ </animation>
+ <property name="lifetime" value="60"/>
+ <property name="output" min="0" max="2"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="20" max="-20"/>
+ <property name="position-y" min="-40" max="35"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" value="0.1"/>
+ <property name="gravity" value="-0.03"/>
+ <animation imageset="graphics/particles/fog-medium-b.png|W:#535cd5" width="32" height="32">
+ <frame index="0" delay="90"/>
+ <frame index="0" delay="900"/>
+ </animation>
+ <property name="lifetime" value="60"/>
+ <property name="output" min="0" max="2"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="130"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/portal.particle.xml b/graphics/particles/portal.particle.xml
new file mode 100644
index 00000000..1892af9a
--- /dev/null
+++ b/graphics/particles/portal.particle.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+A red and yellow blaze. Does not really look like fire but looks awesome
+nevertheless. Maybe we could modify this effect and use it for some persistent
+AoE fire magic spell.
+
+It is about 100 pixels wide and 200 pixels high, takes about 280 particles and
+lowers my FPS by about 30%.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="150">
+ <emitter>
+ <property name="position-z" value="-150"/>
+ <property name="position-y" value="32"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/glow-medium.png|W:#000099"/>
+ <property name="lifetime" min="60" max="140"/>
+ <property name="fade-in" value="30"/>
+ <property name="fade-out" value="30"/>
+ <property name="output" min="1" max="2"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="1" max="3"/>
+ </emitter>
+ <emitter>
+ <property name="position-z" value="-150"/>
+ <property name="position-y" value="32"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="momentum" value="0.95"/>
+ <property name="image" value="graphics/particles/glow-medium.png|W:#000022"/>
+ <property name="lifetime" min="40" max="140"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="30"/>
+ <property name="output" min="0" max="1"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="2"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/power-circle.particle.xml b/graphics/particles/power-circle.particle.xml
new file mode 100644
index 00000000..58b43654
--- /dev/null
+++ b/graphics/particles/power-circle.particle.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!--
+
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-y" value="-32"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="40"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.1"/>
+ <property name="momentum" value="0.2"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#60DAFF,FFFFFF"/>
+ <property name="lifetime" value="30"/>
+ <property name="fade-in" value="5"/>
+ <property name="fade-out" value="10"/>
+ <property name="output" min="0" max="1"/>
+ <property name="randomness" min="100" max="200"/>
+ </emitter>
+ </emitter>
+ <emitter>
+ <property name="position-y" value="-32"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" value="40"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="2"/>
+ <emitter>
+ <property name="gravity" value="-0.1"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/vline-small.png|W:#A3EAFF"/>
+ <property name="lifetime" value="100"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="90"/>
+ <property name="output" min="0" max="1"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/puff-blue.png b/graphics/particles/puff-blue.png
new file mode 100644
index 00000000..08f78984
--- /dev/null
+++ b/graphics/particles/puff-blue.png
Binary files differ
diff --git a/graphics/particles/python.png b/graphics/particles/python.png
new file mode 100644
index 00000000..a66b2e8b
--- /dev/null
+++ b/graphics/particles/python.png
Binary files differ
diff --git a/graphics/particles/python.xml b/graphics/particles/python.xml
new file mode 100644
index 00000000..459d50df
--- /dev/null
+++ b/graphics/particles/python.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="270" lifetime="300">
+ <animation imageset="graphics/particles/python.png" width="512" height="512">
+ <sequence start="0" end="8" delay="40"/>
+ <frame index="8"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/questdone.particle.xml b/graphics/particles/questdone.particle.xml
new file mode 100644
index 00000000..c8b003c1
--- /dev/null
+++ b/graphics/particles/questdone.particle.xml
@@ -0,0 +1,18 @@
+<?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:#000000,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>
diff --git a/graphics/particles/questup.particle.xml b/graphics/particles/questup.particle.xml
new file mode 100644
index 00000000..d4a59a75
--- /dev/null
+++ b/graphics/particles/questup.particle.xml
@@ -0,0 +1,18 @@
+<?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:#009600,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>
diff --git a/graphics/particles/rain.xml b/graphics/particles/rain.xml
new file mode 100644
index 00000000..4717325d
--- /dev/null
+++ b/graphics/particles/rain.xml
@@ -0,0 +1,17 @@
+<?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="25" max="30"/>
+ <property name="position-x" min="60" max="120"/>
+ <property name="position-y" min="-30" max="30"/>
+ <property name="vertical-angle" value="260"/>
+ <property name="power" value="20"/>
+ <property name="output" min="0" max="1"/>
+ <property name="gravity" value="0.04"/>
+ <property name="image" value="graphics/particles/raindrop.png"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/raindrop.png b/graphics/particles/raindrop.png
new file mode 100644
index 00000000..89fa8064
--- /dev/null
+++ b/graphics/particles/raindrop.png
Binary files differ
diff --git a/graphics/particles/single-heart.png b/graphics/particles/single-heart.png
new file mode 100644
index 00000000..1b342385
--- /dev/null
+++ b/graphics/particles/single-heart.png
Binary files differ
diff --git a/graphics/particles/skillup.particle.xml b/graphics/particles/skillup.particle.xml
new file mode 100644
index 00000000..897d03d4
--- /dev/null
+++ b/graphics/particles/skillup.particle.xml
@@ -0,0 +1,18 @@
+<?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>
diff --git a/graphics/particles/small-explosion.particle.xml b/graphics/particles/small-explosion.particle.xml
new file mode 100644
index 00000000..c0411819
--- /dev/null
+++ b/graphics/particles/small-explosion.particle.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+An explosion
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="20" lifetime="1">
+ <emitter>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="vertical-angle" min="-10" max="10"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="5"/>
+ <property name="gravity" value="0.1"/>
+ <property name="image" value="graphics/particles/smoke-large-grey.png"/>
+ <property name="lifetime" min="50" max="800"/>
+ <property name="output" min="9" max="9"/>
+ <property name="fade-out" value="10"/>
+ <property name="bounce" value="0.8"/>
+ </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="60"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="0.8"/>
+ <property name="gravity" value="0.01"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="lifetime" min="70" max="180"/>
+ <property name="output" min="3" max="6"/>
+ <property name="fade-out" value="10"/>
+ <property name="bounce" value="0.8"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-10" max="10"/>
+ <property name="position-y" min="-10" max="10"/>
+ <property name="position-z" min="30" max="40"/>
+ <property name="vertical-angle" min="15" max="40"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="0" max="0.7"/>
+ <property name="gravity" value="0.001"/>
+ <property name="image" value="graphics/particles/blaze.png"/>
+ <property name="lifetime" min="0" max="140"/>
+ <property name="output" min="6" max="9"/>
+ <property name="fade-out" value="100"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/small-green-bubbles.particle.xml b/graphics/particles/small-green-bubbles.particle.xml
new file mode 100644
index 00000000..1826500d
--- /dev/null
+++ b/graphics/particles/small-green-bubbles.particle.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+Green slow-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="5" delay="30"/>
+ <frame index="6" delay="20"/>
+ <frame index="7" delay="-1"/>
+ </animation>
+ <property name="lifetime" value="29"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="10"/>
+ <property name="output" min="-3" max="1"/>
+ <property name="output-pause" min="30" max="80"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/smoke-large-grey.png b/graphics/particles/smoke-large-grey.png
new file mode 100644
index 00000000..58099ed0
--- /dev/null
+++ b/graphics/particles/smoke-large-grey.png
Binary files differ
diff --git a/graphics/particles/snow.particle.xml b/graphics/particles/snow.particle.xml
new file mode 100644
index 00000000..d6def9c1
--- /dev/null
+++ b/graphics/particles/snow.particle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!--
+Snowflakes which cover 200x200 tiles which is enough for most reasonably-sized
+maps. Most people think it sucks.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="512">
+ <emitter>
+ <property name="position-x" min="0.0" max="6400"/>
+ <property name="position-y" min="0.0" max="6400"/>
+ <property name="gravity" value="0.03"/>
+ <property name="momentum" value="0.97"/>
+ <!--<property name="randomnes" value="100"/>-->
+ <property name="image" value="graphics/particles/snowflake.png"/>
+ <property name="output" min="0" max="3"/>
+ <property name="fade-in" value="100"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/snowball-crit.particle.xml b/graphics/particles/snowball-crit.particle.xml
new file mode 100644
index 00000000..b13547c1
--- /dev/null
+++ b/graphics/particles/snowball-crit.particle.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+Snowball hit effect by Hello=) of TMW. Derived from arrow-banshee.particle.xml
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="45">
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#C0F0FF,B7D0E0"/>
+ <property name="gravity" value="0.2"/>
+ <property name="lifetime" value="35"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="10"/>
+ <property name="output" min="1" max="2"/>
+ <property name="power" min="2" max="4.5"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="100"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#C1F3FF,B7D2E0"/>
+ <property name="gravity" value="0.25"/>
+ <property name="lifetime" value="35"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="10"/>
+ <property name="output" min="1" max="2"/>
+ <property name="power" min="2" max="4.5"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="100"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#C2F0FF,B7D2E0"/>
+ <property name="gravity" value="0.23"/>
+ <property name="lifetime" value="35"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="10"/>
+ <property name="output" min="1" max="2"/>
+ <property name="power" min="2" max="4.5"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="100"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/snowball.particle.xml b/graphics/particles/snowball.particle.xml
new file mode 100644
index 00000000..cbb6ffc1
--- /dev/null
+++ b/graphics/particles/snowball.particle.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="128">
+ <rotation imageset="graphics/particles/snowball.png" width="16" height="16">
+ <sequence start="0" end="7"/>
+ </rotation>
+ </particle>
+</effect>
diff --git a/graphics/particles/snowball.png b/graphics/particles/snowball.png
new file mode 100644
index 00000000..628ac5b0
--- /dev/null
+++ b/graphics/particles/snowball.png
Binary files differ
diff --git a/graphics/particles/snowflake.png b/graphics/particles/snowflake.png
new file mode 100644
index 00000000..6989c2c0
--- /dev/null
+++ b/graphics/particles/snowflake.png
Binary files differ
diff --git a/graphics/particles/soulmenhir.particle.xml b/graphics/particles/soulmenhir.particle.xml
new file mode 100644
index 00000000..7ec06263
--- /dev/null
+++ b/graphics/particles/soulmenhir.particle.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+Light blue particles which fly up to the sky. About one tile wide, three tiles
+high and supposed to give an object which is about half as large as a player
+character some magical aura.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-z" value="16"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" min="20" max="24"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="1"/>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/gloworb-medium.png|W:#00ffff"/>
+ <property name="lifetime" value="50"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="5" max="15"/>
+ </emitter>
+ <emitter>
+ <property name="gravity" value="-0.2"/>
+ <property name="momentum" value="0.9"/>
+ <property name="image" value="graphics/particles/orb-small.png|W:#00ffff"/>
+ <property name="lifetime" value="50"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="5" max="15"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/soulpool.png b/graphics/particles/soulpool.png
new file mode 100644
index 00000000..4471f3e0
--- /dev/null
+++ b/graphics/particles/soulpool.png
Binary files differ
diff --git a/graphics/particles/soulpool.xml b/graphics/particles/soulpool.xml
new file mode 100644
index 00000000..3707b2ac
--- /dev/null
+++ b/graphics/particles/soulpool.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<effect>
+ <!-- Soulpool animation -->
+ <particle position-x="0" position-y="0" position-z="0">
+ <animation imageset="graphics/particles/soulpool.png" width="492" height="328">
+ <frame index="0" delay="120"/>
+ <frame index="3" delay="120"/>
+ <frame index="1" delay="120"/>
+ <frame index="4" delay="120"/>
+ <frame index="2" delay="120"/>
+ <frame index="5" delay="120"/>
+ </animation>
+ </particle>
+</effect>
diff --git a/graphics/particles/sparkle.big.green.particle.xml b/graphics/particles/sparkle.big.green.particle.xml
new file mode 100644
index 00000000..2f2c7b1a
--- /dev/null
+++ b/graphics/particles/sparkle.big.green.particle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <animation imageset="graphics/particles/sparkle.png|W:#99ff66" width="15" height="15">
+ <sequence start="0" end="3" delay="100"/>
+ <frame index="0" delay="200"/>
+ </animation>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" min="0.5" max="0.5"/>
+ <property name="lifetime" min="15" max="25"/>
+ <property name="output" min="1" max="1"/>
+ <property name="output-pause" value="1"/>
+ <property name="position-x" min="-20" max="20"/>
+ <property name="position-y" min="-20" max="20"/>
+ <property name="position-z" min="29" max="40"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/sparkle.green.particle.xml b/graphics/particles/sparkle.green.particle.xml
new file mode 100644
index 00000000..e78a1473
--- /dev/null
+++ b/graphics/particles/sparkle.green.particle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <animation imageset="graphics/particles/sparkle.png|W:#99ff66" width="15" height="15">
+ <sequence start="0" end="3" delay="100"/>
+ <frame index="0" delay="200"/>
+ </animation>
+ <property name="vertical-angle" value="90"/>
+ <property name="power" min="0.5" max="0.5"/>
+ <property name="lifetime" min="15" max="25"/>
+ <property name="output" min="1" max="1"/>
+ <property name="output-pause" value="2"/>
+ <property name="position-x" min="-8" max="8"/>
+ <property name="position-y" min="-8" max="8"/>
+ <property name="position-z" min="29" max="40"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/sparkle.png b/graphics/particles/sparkle.png
new file mode 100644
index 00000000..e131c678
--- /dev/null
+++ b/graphics/particles/sparkle.png
Binary files differ
diff --git a/graphics/particles/spectre.particle.xml b/graphics/particles/spectre.particle.xml
new file mode 100644
index 00000000..632e5801
--- /dev/null
+++ b/graphics/particles/spectre.particle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+A circle on the ground 60 pixels in diameter made from particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="48">
+ <emitter>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" min="0.4" max="2"/>
+ <property name="lifetime" value="160"/>
+ <property name="fade-out" value="40"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="-20" max="1"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="alpha" value="0.5"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#ff77dd,dd77ff"/>
+ <property name="follow-parent"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/sphere-white.particle.xml b/graphics/particles/sphere-white.particle.xml
new file mode 100644
index 00000000..d9326523
--- /dev/null
+++ b/graphics/particles/sphere-white.particle.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+A sphere large enough for a player character. Useful to visualize a barrier.
+481 particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="32">
+ <emitter>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="power" value="17"/>
+ <property name="lifetime" value="1"/>
+ <property name="output" value="3"/>
+ <property name="follow-parent"/>
+ <emitter>
+ <property name="image" value="graphics/particles/gloworb-small.png|W:#ffffff"/>
+ <property name="lifetime" value="80"/>
+ <property name="fade-in" value="40"/>
+ <property name="fade-out" value="40"/>
+ <property name="output" value="1"/>
+ <property name="follow-parent"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/star-medium.png b/graphics/particles/star-medium.png
new file mode 100644
index 00000000..01d8c156
--- /dev/null
+++ b/graphics/particles/star-medium.png
Binary files differ
diff --git a/graphics/particles/star-small.png b/graphics/particles/star-small.png
new file mode 100644
index 00000000..da4b93cd
--- /dev/null
+++ b/graphics/particles/star-small.png
Binary files differ
diff --git a/graphics/particles/stoneprojectile.particle.xml b/graphics/particles/stoneprojectile.particle.xml
new file mode 100644
index 00000000..1eeadfb3
--- /dev/null
+++ b/graphics/particles/stoneprojectile.particle.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="128">
+ <rotation imageset="graphics/particles/stoneprojectile.png" width="16" height="16">
+ <sequence start="0" end="7"/>
+ </rotation>
+ </particle>
+</effect>
diff --git a/graphics/particles/stoneprojectile.png b/graphics/particles/stoneprojectile.png
new file mode 100644
index 00000000..44c500fa
--- /dev/null
+++ b/graphics/particles/stoneprojectile.png
Binary files differ
diff --git a/graphics/particles/thelost-attack.particle.xml b/graphics/particles/thelost-attack.particle.xml
new file mode 100644
index 00000000..07159b68
--- /dev/null
+++ b/graphics/particles/thelost-attack.particle.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+ The Lost's missile attack
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="32" lifetime="102">
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#b00000,c70000"/>
+ <property name="lifetime" value="200"/>
+ <property name="fade-out" value="100"/>
+ <property name="output" min="0" max="2"/>
+ <property name="power" min="1" max="3"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-large.png|W:#b00000,c70000,ee7e00"/>
+ <property name="lifetime" value="225"/>
+ <property name="fade-out" value="100"/>
+ <property name="output" value="1"/>
+ <property name="power" value="1"/>
+ <property name="horizontal-angle" min="-10" max="-10"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="75"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/undead-witch-attack.particle.xml b/graphics/particles/undead-witch-attack.particle.xml
new file mode 100644
index 00000000..5a5f8767
--- /dev/null
+++ b/graphics/particles/undead-witch-attack.particle.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+A energy ball like particle effect intended for use of the Undead-Witch's attacks.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="8" lifetime="102">
+ <emitter>
+ <property name="image" value="graphics/particles/star-small.png|W:#111111,222222,333333,444444,555555,aaaaaa"/>
+ <property name="lifetime" value="200"/>
+ <property name="fade-out" value="100"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" min="1" max="3"/>
+ <property name="horizontal-angle" min="-15" max="-175"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="200"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ <emitter>
+ <property name="image" value="graphics/particles/orb-large.png|W:#111111,222222,333333"/>
+ <property name="lifetime" value="225"/>
+ <property name="fade-out" value="100"/>
+ <property name="output" min="0" max="1"/>
+ <property name="power" value="1"/>
+ <property name="horizontal-angle" min="-10" max="-10"/>
+ <property name="momentum" value="0.95"/>
+ <property name="randomness" value="75"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/vline-small.png b/graphics/particles/vline-small.png
new file mode 100644
index 00000000..427e6282
--- /dev/null
+++ b/graphics/particles/vline-small.png
Binary files differ
diff --git a/graphics/particles/voidportal.particle.xml b/graphics/particles/voidportal.particle.xml
new file mode 100644
index 00000000..8d6a0edb
--- /dev/null
+++ b/graphics/particles/voidportal.particle.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<effect>
+ <!--
+A black circle about 100 pixels in diameter with an unsharp border which emits
+white particles. Looks like a portal to another dimension. It takes about 420
+particles and reduces the FPS by about 30%.
+
+Could be used for a monster spawn area.
+-->
+ <particle position-x="0" position-y="0" position-z="64">
+ <emitter>
+ <property name="power" min="1" max="2"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="position-x" min="-18" max="18"/>
+ <property name="position-z" min="-18" max="18"/>
+ <property name="image" value="graphics/particles/glow-medium.png|W:#000000"/>
+ <property name="output" min="1" max="2"/>
+ <property name="acceleration" value="0.05"/>
+ <property name="lifetime" value="80"/>
+ </emitter>
+ <emitter>
+ <property name="power" value="0.2"/>
+ <property name="vertical-angle" min="-80" max="80"/>
+ <property name="horizontal-angle" min="10" max="170"/>
+ <property name="momentum" value="1.03"/>
+ <property name="image" value="graphics/particles/orb-medium.png|W:#ffffff"/>
+ <property name="lifetime" value="90"/>
+ <property name="fade-out" value="45"/>
+ <property name="output" value="3"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/warparea.particle.xml b/graphics/particles/warparea.particle.xml
new file mode 100644
index 00000000..d3988c1d
--- /dev/null
+++ b/graphics/particles/warparea.particle.xml
@@ -0,0 +1,19 @@
+<?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-medium.png"/>
+ <property name="gravity" value="-0.03"/>
+ <property name="lifetime" value="50"/>
+ <property name="output" min="0" max="1"/>
+ <property name="output-pause" min="10" max="15"/>
+ <property name="fade-in" value="10"/>
+ <property name="fade-out" value="10"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/waterfall-1x2.particle.xml b/graphics/particles/waterfall-1x2.particle.xml
new file mode 100644
index 00000000..9fe21913
--- /dev/null
+++ b/graphics/particles/waterfall-1x2.particle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-4" max="14"/>
+ <property name="position-y" min="-28" max="-24"/>
+ <property name="position-z" min="52" max="62"/>
+ <property name="image" value="graphics/particles/waterfall-a.png"/>
+ <property name="output" min="0" max="1"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0.8" max="1.0"/>
+ <property name="gravity" value="0.05"/>
+ <property name="fade-in" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="26"/>
+ <property name="position-y" min="20" max="30"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="26"/>
+ <property name="position-y" min="20" max="30"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/waterfall-1x3.particle.xml b/graphics/particles/waterfall-1x3.particle.xml
new file mode 100644
index 00000000..3be4f8b4
--- /dev/null
+++ b/graphics/particles/waterfall-1x3.particle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-4" max="14"/>
+ <property name="position-y" min="-28" max="-24"/>
+ <property name="position-z" min="72" max="82"/>
+ <property name="image" value="graphics/particles/waterfall-a.png"/>
+ <property name="output" min="0" max="1"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0.8" max="1.0"/>
+ <property name="gravity" value="0.05"/>
+ <property name="fade-in" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="26"/>
+ <property name="position-y" min="34" max="44"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="1"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="26"/>
+ <property name="position-y" min="34" max="44"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="1"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/waterfall-2x1.particle.xml b/graphics/particles/waterfall-2x1.particle.xml
new file mode 100644
index 00000000..1cca7cc3
--- /dev/null
+++ b/graphics/particles/waterfall-2x1.particle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-24" max="30"/>
+ <property name="position-y" min="-28" max="-24"/>
+ <property name="position-z" min="27" max="37"/>
+ <property name="image" value="graphics/particles/waterfall-a.png"/>
+ <property name="output" min="2" max="2"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0.8" max="1.0"/>
+ <property name="gravity" value="0.05"/>
+ <property name="fade-in" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-40" max="48"/>
+ <property name="position-y" min="20" max="30"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="2" max="3"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-40" max="48"/>
+ <property name="position-y" min="20" max="30"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="2" max="3"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/waterfall-2x2.particle.xml b/graphics/particles/waterfall-2x2.particle.xml
new file mode 100644
index 00000000..985d8330
--- /dev/null
+++ b/graphics/particles/waterfall-2x2.particle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-24" max="30"/>
+ <property name="position-y" min="-24" max="-20"/>
+ <property name="position-z" min="55" max="65"/>
+ <property name="image" value="graphics/particles/waterfall-a.png"/>
+ <property name="output" min="2" max="2"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0.8" max="1.0"/>
+ <property name="gravity" value="0.05"/>
+ <property name="fade-in" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-40" max="48"/>
+ <property name="position-y" min="30" max="40"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-40" max="48"/>
+ <property name="position-y" min="30" max="40"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/waterfall-2x3.particle.xml b/graphics/particles/waterfall-2x3.particle.xml
new file mode 100644
index 00000000..4b7c4e9d
--- /dev/null
+++ b/graphics/particles/waterfall-2x3.particle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-24" max="30"/>
+ <property name="position-y" min="-28" max="-24"/>
+ <property name="position-z" min="0" max="100"/>
+ <property name="image" value="graphics/particles/waterfall-a.png"/>
+ <property name="output" min="2" max="2"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0.7" max="1.0"/>
+ <property name="gravity" value="0.05"/>
+ <property name="fade-in" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-40" max="48"/>
+ <property name="position-y" min="34" max="44"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-40" max="48"/>
+ <property name="position-y" min="34" max="44"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/waterfall-2x4.particle.xml b/graphics/particles/waterfall-2x4.particle.xml
new file mode 100644
index 00000000..6eec650a
--- /dev/null
+++ b/graphics/particles/waterfall-2x4.particle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="-24" max="30"/>
+ <property name="position-y" min="-62" max="-58"/>
+ <property name="position-z" min="105" max="115"/>
+ <property name="image" value="graphics/particles/waterfall-a.png"/>
+ <property name="output" min="2" max="2"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0.8" max="1.0"/>
+ <property name="gravity" value="0.05"/>
+ <property name="fade-in" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-40" max="48"/>
+ <property name="position-y" min="20" max="30"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-40" max="48"/>
+ <property name="position-y" min="20" max="30"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/waterfall-a.png b/graphics/particles/waterfall-a.png
new file mode 100644
index 00000000..dd1f048a
--- /dev/null
+++ b/graphics/particles/waterfall-a.png
Binary files differ
diff --git a/graphics/particles/waterfall.particle.xml b/graphics/particles/waterfall.particle.xml
new file mode 100644
index 00000000..501f6400
--- /dev/null
+++ b/graphics/particles/waterfall.particle.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<!--
+A waterfall viewed from the front with some steam at the bottom. A little more
+than one tile wide and about 3 tiles high.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="0">
+ <emitter>
+ <property name="position-x" min="0" max="32"/>
+ <property name="position-y" min="0" max="8"/>
+ <property name="position-z" min="80" max="88"/>
+ <property name="image" value="graphics/particles/waterfall-a.png"/>
+ <property name="output" min="1" max="1"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" min="0" max="0"/>
+ <property name="power" min="0.8" max="1.0"/>
+ <property name="gravity" value="0.05"/>
+ <property name="fade-in" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="48"/>
+ <property name="position-y" min="48" max="58"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-a.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="48"/>
+ <property name="position-y" min="48" max="58"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-b.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ <emitter>
+ <property name="position-x" min="-16" max="48"/>
+ <property name="position-y" min="48" max="58"/>
+ <property name="position-z" min="0" max="8"/>
+ <property name="image" value="graphics/particles/fog-medium-c.png"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="90"/>
+ <property name="power" value="1.0"/>
+ <property name="output" min="1" max="2"/>
+ <property name="lifetime" min="20" max="40"/>
+ <property name="fade-out" value="20"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/whirlpool.particle.xml b/graphics/particles/whirlpool.particle.xml
new file mode 100644
index 00000000..5b18dfe5
--- /dev/null
+++ b/graphics/particles/whirlpool.particle.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+White bubbles which come out of the ground and fill exactly one tile.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="1">
+ <emitter>
+ <property name="position-x" min="0" max="32"/>
+ <property name="position-y" min="0" max="48"/>
+ <animation imageset="graphics/particles/bubble_8px.png" width="8" height="8">
+ <frame index="0" delay="50"/>
+ <frame index="1" delay="50"/>
+ <frame index="2" delay="50"/>
+ <frame index="3" delay="50"/>
+ <frame index="4" delay="50"/>
+ <frame index="5" delay="50"/>
+ <frame index="6" delay="50"/>
+ <frame index="7" delay="-1"/>
+ </animation>
+ <property name="lifetime" value="100"/>
+ <property name="output" min="-1" max="1"/>
+ <property name="fade-in" value="0"/>
+ <property name="fade-out" value="0"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/wisp.particle.xml b/graphics/particles/wisp.particle.xml
new file mode 100644
index 00000000..d9ca2851
--- /dev/null
+++ b/graphics/particles/wisp.particle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+A circle on the ground 60 pixels in diameter made from particles.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="48">
+ <emitter>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-y" min="-16" max="16"/>
+ <property name="position-z" min="-16" max="16"/>
+ <property name="horizontal-angle" min="0" max="360"/>
+ <property name="vertical-angle" min="0" max="360"/>
+ <property name="power" min="0.4" max="2"/>
+ <property name="lifetime" value="160"/>
+ <property name="fade-out" value="40"/>
+ <property name="fade-in" value="40"/>
+ <property name="output" min="-20" max="1"/>
+ <property name="acceleration" value="0.1"/>
+ <property name="alpha" value="0.5"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#ffff00,ffffff"/>
+ <property name="follow-parent"/>
+ </emitter>
+ </particle>
+</effect>
diff --git a/graphics/particles/wispdance.particle.xml b/graphics/particles/wispdance.particle.xml
new file mode 100644
index 00000000..3069fa3a
--- /dev/null
+++ b/graphics/particles/wispdance.particle.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!--
+Two orbiting particles high above ground which leave a trail of falling sparks
+and thus create a falling double helix.
+
+About 180 particles on max detail.
+
+ Does not work with particleFastPhysics on 2.
+-->
+<effect>
+ <particle position-x="0" position-y="0" position-z="200" lifetime="1">
+ <!-- PURPLE -->
+ <emitter>
+ <property name="position-x" value="60"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="20"/>
+ <property name="image" value="graphics/particles/orb-large.png|W:#dd66ff,ffffff"/>
+ <property name="horizontal-angle" value="90"/>
+ <property name="vertical-angle" value="0"/>
+ <property name="power" value="3"/>
+ <property name="acceleration" value="0.1"/>
+ <emitter>
+ <property name="output" min="-2" max="2"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#dd66ff,ffffff"/>
+ <property name="lifetime" min="200" max="250"/>
+ <property name="fade-out" value="200"/>
+ <property name="gravity" value="0.005"/>
+ </emitter>
+ </emitter>
+ <!-- CYAN-->
+ <emitter>
+ <property name="position-x" value="-60"/>
+ <property name="position-y" value="0"/>
+ <property name="position-z" value="20"/>
+ <property name="image" value="graphics/particles/orb-large.png|W:#00ffff,ffffff"/>
+ <property name="horizontal-angle" value="270"/>
+ <property name="vertical-angle" value="0"/>
+ <property name="power" value="3"/>
+ <property name="acceleration" value="0.1"/>
+ <emitter>
+ <property name="output" min="-2" max="2"/>
+ <property name="image" value="graphics/particles/star-small.png|W:#00ffff,ffffff"/>
+ <property name="lifetime" min="200" max="250"/>
+ <property name="fade-out" value="200"/>
+ <property name="gravity" value="0.005"/>
+ </emitter>
+ </emitter>
+ </particle>
+</effect>