Index: data/core/macros/animation-utils.cfg
===================================================================
--- data/core/macros/animation-utils.cfg	(revision 56196)
+++ data/core/macros/animation-utils.cfg	(working copy)
@@ -30,38 +30,28 @@
     [leading_anim]
         start_time=-126
         [frame]
-            duration=1
-            image={HALFWAYS_IMAGE}
+            image={HALFWAYS_IMAGE}:1
         [/frame]
         [frame]
-            duration=100
-            image={FULL_IMAGE}
+            image={FULL_IMAGE}:250
         [/frame]
         [frame]
-            duration=150
-            image={FULL_IMAGE}
+            image={HALFWAYS_IMAGE}:1
         [/frame]
-        [frame]
-            duration=1
-            image={HALFWAYS_IMAGE}
-        [/frame]
 
+        halo_start_time=-120
         [halo_frame]
-            begin=-120
-            end=-100
+            duration=20
             halo=""     # Deliberate null image ref.
             # Intended to keep the next image from persisting onscreen.
             halo_x,halo_y={OFFSET_POSITION}
         [/halo_frame]
         [halo_frame]
-            begin=-100
-            end=160
             halo="halo/misc/leadership-flare-[1~13].png:20"
             halo_x,halo_y={OFFSET_POSITION}
         [/halo_frame]
         [halo_frame]
-            begin=160
-            end=200
+            duration=40
             halo=""     # Deliberate null image ref.
             # Intended to keep the previous image from persisting onscreen.
             halo_x,halo_y={OFFSET_POSITION}
@@ -75,31 +65,26 @@
     [defend]
         start_time=-126
         [frame]
-            duration=1
-            image={BASE_IMAGE}
+            image={BASE_IMAGE}:1
         [/frame]
         [frame]
-            duration=100
-            image={REACTION_IMAGE}
+            image={REACTION_IMAGE}:100
         [/frame]
         [if]
             hits=hit
             [frame]
-                duration=150
-                image={REACTION_IMAGE}
+                image={REACTION_IMAGE}:150
                 sound={HIT_SOUND}
             [/frame]
         [/if]
         [else]
             hits=miss,kill
             [frame]
-                duration=150
-                image={REACTION_IMAGE}
+                image={REACTION_IMAGE}:150
             [/frame]
         [/else]
         [frame]
-            duration=1
-            image={BASE_IMAGE}
+            image={BASE_IMAGE}:1
         [/frame]
     [/defend]
 #enddef
@@ -112,31 +97,26 @@
         start_time=-126
         {FILTER}
         [frame]
-            duration=1
-            image={BASE_IMAGE}
+            image={BASE_IMAGE}:1
         [/frame]
         [frame]
-            duration=100
-            image={REACTION_IMAGE}
+            image={REACTION_IMAGE}:100
         [/frame]
         [if]
             hits=hit
             [frame]
-                duration=150
-                image={REACTION_IMAGE}
+                image={REACTION_IMAGE}:150
                 sound={HIT_SOUND}
             [/frame]
         [/if]
         [else]
             hits=miss,kill
             [frame]
-                duration=150
-                image={REACTION_IMAGE}
+                image={REACTION_IMAGE}:150
             [/frame]
         [/else]
         [frame]
-            duration=1
-            image={BASE_IMAGE}
+            image={BASE_IMAGE}:1
         [/frame]
     [/defend]
 #enddef
@@ -151,31 +131,26 @@
             range={RANGE}
         [/filter_attack]
         [frame]
-            duration=1
-            image={BASE_IMAGE}
+            image={BASE_IMAGE}:1
         [/frame]
         [frame]
-            duration=100
-            image={REACTION_IMAGE}
+            image={REACTION_IMAGE}:100
         [/frame]
         [if]
             hits=hit
             [frame]
-                duration=150
-                image={REACTION_IMAGE}
+                image={REACTION_IMAGE}:150
                 sound={HIT_SOUND}
             [/frame]
         [/if]
         [else]
             hits=miss,kill
             [frame]
-                duration=150
-                image={REACTION_IMAGE}
+                image={REACTION_IMAGE}:150
             [/frame]
         [/else]
         [frame]
-            duration=1
-            image={BASE_IMAGE}
+            image={BASE_IMAGE}:1
         [/frame]
     [/defend]
 #enddef
@@ -185,62 +160,52 @@
         direction=sw,s,se
         start_time=-126
         [frame]
-            duration=1
-            image={BASE_SE_IMAGE}
+            image={BASE_SE_IMAGE}:1
         [/frame]
         [frame]
-            duration=100
-            image={REACTION_SE_IMAGE}
+            image={REACTION_SE_IMAGE}:100
         [/frame]
         [if]
             hits=hit
             [frame]
-                duration=150
-                image={REACTION_SE_IMAGE}
+                image={REACTION_SE_IMAGE}:150
                 sound={HITSOUND}
             [/frame]
         [/if]
         [else]
             hits=miss,kill
             [frame]
-                duration=150
-                image={REACTION_SE_IMAGE}
+                image={REACTION_SE_IMAGE}:150
             [/frame]
         [/else]
         [frame]
-            duration=1
-            image={BASE_SE_IMAGE}
+            image={BASE_SE_IMAGE}:1
         [/frame]
     [/defend]
     [defend]
         direction=nw,n,ne
         start_time=-126
         [frame]
-            duration=1
-            image={BASE_NE_IMAGE}
+            image={BASE_NE_IMAGE}:1
         [/frame]
         [frame]
-            duration=100
-            image={REACTION_NE_IMAGE}
+            image={REACTION_NE_IMAGE}:100
         [/frame]
         [if]
             hits=hit
             [frame]
-                duration=150
-                image={REACTION_NE_IMAGE}
+                image={REACTION_NE_IMAGE}:150
                 sound={HITSOUND}
             [/frame]
         [/if]
         [else]
             hits=miss,kill
             [frame]
-                duration=150
-                image={REACTION_NE_IMAGE}
+                image={REACTION_NE_IMAGE}:150
             [/frame]
         [/else]
         [frame]
-            duration=1
-            image={BASE_NE_IMAGE}
+            image={BASE_NE_IMAGE}:1
         [/frame]
     [/defend]
 #enddef
@@ -253,31 +218,26 @@
         [/filter_attack]
         start_time=-126
         [frame]
-            duration=1
-            image={BASE_SE_IMAGE}
+            image={BASE_SE_IMAGE}:1
         [/frame]
         [frame]
-            duration=100
-            image={REACTION_SE_IMAGE}
+            image={REACTION_SE_IMAGE}:100
         [/frame]
         [if]
             hits=hit
             [frame]
-                duration=150
-                image={REACTION_SE_IMAGE}
+                image={REACTION_SE_IMAGE}:150
                 sound={HITSOUND}
             [/frame]
         [/if]
         [else]
             hits=miss,kill
             [frame]
-                duration=150
-                image={REACTION_SE_IMAGE}
+                image={REACTION_SE_IMAGE}:150
             [/frame]
         [/else]
         [frame]
-            duration=1
-            image={BASE_SE_IMAGE}
+            image={BASE_SE_IMAGE}:1
         [/frame]
     [/defend]
     [defend]
@@ -287,31 +247,26 @@
         [/filter_attack]
         start_time=-126
         [frame]
-            duration=1
-            image={BASE_NE_IMAGE}
+            image={BASE_NE_IMAGE}:1
         [/frame]
         [frame]
-            duration=100
-            image={REACTION_NE_IMAGE}
+            image={REACTION_NE_IMAGE}:100
         [/frame]
         [if]
             hits=hit
             [frame]
-                duration=150
-                image={REACTION_NE_IMAGE}
+                image={REACTION_NE_IMAGE}:150
                 sound={HITSOUND}
             [/frame]
         [/if]
         [else]
             hits=miss,kill
             [frame]
-                duration=150
-                image={REACTION_NE_IMAGE}
+                image={REACTION_NE_IMAGE}:150
             [/frame]
         [/else]
         [frame]
-            duration=1
-            image={BASE_NE_IMAGE}
+            image={BASE_NE_IMAGE}:1
         [/frame]
     [/defend]
 #enddef
@@ -430,83 +385,21 @@
     [if]
         direction=n,ne,nw
 
+        missile_start_time=-300
         [missile_frame]
-            begin=-300
-            end=-230
-            image="projectiles/wailprojectile-n-1.png"
-            image_diagonal="projectiles/wailprojectile-ne-1.png"
+            image="projectiles/wailprojectile-n-[1~6].png:[70*2,160,40*3]"
+            image_diagonal="projectiles/wailprojectile-ne-[1~6].png:[70*2,160,40*3]"
         [/missile_frame]
-        [missile_frame]
-            begin=-230
-            end=-160
-            image="projectiles/wailprojectile-n-2.png"
-            image_diagonal="projectiles/wailprojectile-ne-2.png"
-        [/missile_frame]
-        [missile_frame]
-            begin=-160
-            end=0
-            image="projectiles/wailprojectile-n-3.png"
-            image_diagonal="projectiles/wailprojectile-ne-3.png"
-        [/missile_frame]
-        [missile_frame]
-            begin=0
-            end=40
-            image="projectiles/wailprojectile-n-4.png"
-            image_diagonal="projectiles/wailprojectile-ne-4.png"
-        [/missile_frame]
-        [missile_frame]
-            begin=40
-            end=80
-            image="projectiles/wailprojectile-n-5.png"
-            image_diagonal="projectiles/wailprojectile-ne-5.png"
-        [/missile_frame]
-        [missile_frame]
-            begin=80
-            end=120
-            image="projectiles/wailprojectile-n-6.png"
-            image_diagonal="projectiles/wailprojectile-ne-6.png"
-        [/missile_frame]
     [/if]
     [else]
         direction=s,se,sw
         ### The price of asymmetrical projectiles - here, we use a conditional because the game automatically flips the images for the south frame.  We have a separate set of images for the south part, which are not only flipped vertically, but also have their angle corrected for the sw direction.
 
+        missile_start_time=-300
         [missile_frame]
-            begin=-300
-            end=-230
-            image="projectiles/wailprojectile-s-1.png"
-            image_diagonal="projectiles/wailprojectile-se-1.png"
+            image="projectiles/wailprojectile-s-[1~6].png:[70*2,160,40*3]"
+            image_diagonal="projectiles/wailprojectile-se-[1~6].png:[70*2,160,40*3]"
         [/missile_frame]
-        [missile_frame]
-            begin=-230
-            end=-160
-            image="projectiles/wailprojectile-s-2.png"
-            image_diagonal="projectiles/wailprojectile-se-2.png"
-        [/missile_frame]
-        [missile_frame]
-            begin=-160
-            end=0
-            image="projectiles/wailprojectile-s-3.png"
-            image_diagonal="projectiles/wailprojectile-se-3.png"
-        [/missile_frame]
-        [missile_frame]
-            begin=0
-            end=40
-            image="projectiles/wailprojectile-s-4.png"
-            image_diagonal="projectiles/wailprojectile-se-4.png"
-        [/missile_frame]
-        [missile_frame]
-            begin=40
-            end=80
-            image="projectiles/wailprojectile-s-5.png"
-            image_diagonal="projectiles/wailprojectile-se-5.png"
-        [/missile_frame]
-        [missile_frame]
-            begin=80
-            end=120
-            image="projectiles/wailprojectile-s-6.png"
-            image_diagonal="projectiles/wailprojectile-se-6.png"
-        [/missile_frame]
     [/else]
 #enddef
 
@@ -519,7 +412,7 @@
         direction=n,ne,nw
 
         [missile_frame]
-            halo="halo/holy/light-beam-[1~6].png:30,halo/holy/light-beam-7.png:130,halo/holy/light-beam-[6~1].png:70"
+            halo="halo/holy/light-beam-[1~7].png:[30*6,130],halo/holy/light-beam-[6~1].png:70"
             offset=1.0
         [/missile_frame]
     [/if]
@@ -527,7 +420,7 @@
         direction=s,se,sw
 
         [missile_frame]
-            halo="halo/holy/light-beam-[1~6].png~FL(vert):30,halo/holy/light-beam-7.png~FL(vert):130,halo/holy/light-beam-[6~1].png~FL(vert):70"
+            halo="halo/holy/light-beam-[1~7].png~FL(vert):[30*6,130],halo/holy/light-beam-[6~1].png~FL(vert):70"
             offset=1.0
         [/missile_frame]
     [/else]
@@ -535,11 +428,13 @@
 
 #define MISSILE_FRAME_FIRE_BREATH N_OFFSET_POSITION S_OFFSET_POSITION N_DIAGONAL_OFFSET_POSITION S_DIAGONAL_OFFSET_POSITION
     # Animate a projectile for a fire-breath attack.
+
+    missile_start_time=-400
+
     [if]
         direction=n
 
         [missile_frame]
-            begin=-400
             halo=projectiles/fire-breath-n-[1~5].png:80
             halo_x,halo_y={N_OFFSET_POSITION}
         [/missile_frame]
@@ -548,7 +443,6 @@
         direction=s
 
         [missile_frame]
-            begin=-400
             halo=projectiles/fire-breath-s-[1~5].png:80
             halo_x,halo_y={S_OFFSET_POSITION}
         [/missile_frame]
@@ -557,7 +451,6 @@
         direction=ne,nw
 
         [missile_frame]
-            begin=-400
             halo=projectiles/fire-breath-ne-[1~5].png:80
             halo_x,halo_y={N_DIAGONAL_OFFSET_POSITION}
         [/missile_frame]
@@ -566,7 +459,6 @@
         direction=se,sw
 
         [missile_frame]
-            begin=-400
             halo=projectiles/fire-breath-se-[1~5].png:80
             halo_x,halo_y={S_DIAGONAL_OFFSET_POSITION}
         [/missile_frame]
@@ -575,8 +467,8 @@
 
 #define MISSILE_FRAME_FIRE_BREATH_N OFFSET_POSITION
     # Animate a projectile for a fire-breath attack.
+    missile_start_time=-400
     [missile_frame]
-        begin=-400
         halo=projectiles/fire-breath-n-[1~5].png:80
         halo_x,halo_y={OFFSET_POSITION}
     [/missile_frame]
@@ -584,8 +476,8 @@
 
 #define MISSILE_FRAME_FIRE_BREATH_S OFFSET_POSITION
     # Animate a projectile for a fire-breath attack.
+    missile_start_time=-400
     [missile_frame]
-        begin=-400
         halo=projectiles/fire-breath-s-[1~5].png:80
         halo_x,halo_y={OFFSET_POSITION}
     [/missile_frame]
@@ -593,8 +485,8 @@
 
 #define MISSILE_FRAME_FIRE_BREATH_N_DIAGONAL OFFSET_POSITION
     # Animate a projectile for a fire-breath attack.
+    missile_start_time=-400
     [missile_frame]
-        begin=-400
         halo=projectiles/fire-breath-ne-[1~5].png:80
         halo_x,halo_y={OFFSET_POSITION}
     [/missile_frame]
@@ -602,8 +494,8 @@
 
 #define MISSILE_FRAME_FIRE_BREATH_S_DIAGONAL OFFSET_POSITION
     # Animate a projectile for a fire-breath attack.
+    missile_start_time=-400
     [missile_frame]
-        begin=-400
         halo=projectiles/fire-breath-se-[1~5].png:80
         halo_x,halo_y={OFFSET_POSITION}
     [/missile_frame]
@@ -611,62 +503,35 @@
 
 #define MISSILE_FRAME_FAERIE_FIRE
     # Animate a projectile for a faerie-fire attack.
+    missile_start_time=-500
     [missile_frame]
-        begin=-500
-        end=-350
+        duration=250
         image="projectiles/icemissile-n-1.png"
         image_diagonal="projectiles/icemissile-ne-1.png"
         halo=halo/elven/ice-halo[1~3].png:[100,100,25]
         halo_x,halo_y=0,0
     [/missile_frame]
     [missile_frame]
-        begin=-350
-        end=-200
+        duration=150
         image="projectiles/icemissile-n-2.png"
         image_diagonal="projectiles/icemissile-ne-2.png"
         halo=halo/elven/ice-halo[3,4].png:75
         halo_x,halo_y=0,0
     [/missile_frame]
     [missile_frame]
-        begin=-200
-        end=-50
+        duration=150
         image="projectiles/icemissile-n-3.png"
         image_diagonal="projectiles/icemissile-ne-3.png"
-        halo=halo/elven/ice-halo[5,1,2].png:[100,100,50]
+        halo=halo/elven/ice-halo[5,1,2].png:50
         halo_x,halo_y=0,0
     [/missile_frame]
     [missile_frame]
-        begin=-50
-        end=0
-        image="projectiles/icemissile-n-4.png"
-        image_diagonal="projectiles/icemissile-ne-4.png"
-        halo=halo/elven/ice-halo6.png
+        duration=200
+        image="projectiles/icemissile-n-[4~7].png"
+        image_diagonal="projectiles/icemissile-ne-[4~7].png"
+        halo=halo/elven/ice-halo[6~9].png
         halo_x,halo_y=0,0
     [/missile_frame]
-    [missile_frame]
-        begin=25
-        end=75
-        image="projectiles/icemissile-n-5.png"
-        image_diagonal="projectiles/icemissile-ne-5.png"
-        halo=halo/elven/ice-halo7.png
-        halo_x,halo_y=0,0
-    [/missile_frame]
-    [missile_frame]
-        begin=75
-        end=125
-        image="projectiles/icemissile-n-6.png"
-        image_diagonal="projectiles/icemissile-ne-6.png"
-        halo=halo/elven/ice-halo8.png
-        halo_x,halo_y=0,0
-    [/missile_frame]
-    [missile_frame]
-        begin=125
-        end=175
-        image="projectiles/icemissile-n-7.png"
-        image_diagonal="projectiles/icemissile-ne-7.png"
-        halo=halo/elven/ice-halo9.png
-        halo_x,halo_y=0,0
-    [/missile_frame]
 #enddef
 
 #define MISSILE_FRAME_FIREBALL
@@ -679,38 +544,11 @@
         hits=yes
 
         [missile_frame]
-            duration=40
-            image="projectiles/fireball-n-1.png"
-            image_diagonal="projectiles/fireball-nw-1.png"
-            offset=0.0~0.10
+            image="projectiles/fireball-[n-1,n-2,n,n-2,n-1].png:[40,100,125,55,30]"
+            image_diagonal="projectiles/fireball-[nw-1,nw-2,nw,nw-2,nw-1].png:[40,100,125,55,30]"
+            offset=0.0~0.9
         [/missile_frame]
-        [missile_frame]
-            duration=100
-            image="projectiles/fireball-n-2.png"
-            image_diagonal="projectiles/fireball-nw-2.png"
-            offset=0.1~0.30
-        [/missile_frame]
-        [missile_frame]
-            duration=125
-            image="projectiles/fireball-n.png"
-            image_diagonal="projectiles/fireball-nw.png"
-            offset=0.3~0.60
-        [/missile_frame]
-        [missile_frame]
-            duration=55
-            image="projectiles/fireball-n-2.png"
-            image_diagonal="projectiles/fireball-nw-2.png"
-            offset=0.7~0.8
-        [/missile_frame]
-        [missile_frame]
-            duration=30
-            image="projectiles/fireball-n-1.png"
-            image_diagonal="projectiles/fireball-nw-1.png"
-            offset=0.8~0.9
-        [/missile_frame]
-
 		[missile_frame]
-            duration=960
             halo="projectiles/fireball-impact-[1~16].png:60"
             offset=1.0
         [/missile_frame]
@@ -720,38 +558,11 @@
         hits=yes
 
         [missile_frame]
-            duration=40
-            image="projectiles/fireball-n-1.png"
-            image_diagonal="projectiles/fireball-nw-1.png"
-            offset=0.0~0.10
+            image="projectiles/fireball-[n-1,n-2,n,n-2,n-1].png:[40,100,125,55,30]"
+            image_diagonal="projectiles/fireball-[nw-1,nw-2,nw,nw-2,nw-1].png:[40,100,125,55,30]"
+            offset=0.0~0.9
         [/missile_frame]
-        [missile_frame]
-            duration=100
-            image="projectiles/fireball-n-2.png"
-            image_diagonal="projectiles/fireball-nw-2.png"
-            offset=0.1~0.30
-        [/missile_frame]
-        [missile_frame]
-            duration=125
-            image="projectiles/fireball-n.png"
-            image_diagonal="projectiles/fireball-nw.png"
-            offset=0.3~0.60
-        [/missile_frame]
-        [missile_frame]
-            duration=55
-            image="projectiles/fireball-n-2.png"
-            image_diagonal="projectiles/fireball-nw-2.png"
-            offset=0.7~0.8
-        [/missile_frame]
-        [missile_frame]
-            duration=30
-            image="projectiles/fireball-n-1.png"
-            image_diagonal="projectiles/fireball-nw-1.png"
-            offset=0.8~0.9
-        [/missile_frame]
-
 		[missile_frame]
-            duration=960
             halo="projectiles/fireball-impact-[1~16].png~FL(vert):60"
             offset=1.0
         [/missile_frame]
@@ -789,19 +600,18 @@
 #enddef
 
 #define MISSILE_FRAME_ICE
+    missile_start_time=-200
     [if]
         hits=yes
         [missile_frame]
-            begin=-200
-            end=0
+            duration=200
             image="projectiles/whitemissile-n.png"
             image_diagonal="projectiles/whitemissile-ne.png"
             sound=magicmissile.wav
             offset=0.0~0.8
         [/missile_frame]
         [missile_frame]
-            begin=0
-            end=400
+            duration=400
             halo="projectiles/whitemissile-impact-[1~8].png:50"
             offset=0.8,0.92,0.94,0.96,0.98,1.0,1.02,1.04
         [/missile_frame]
@@ -809,8 +619,7 @@
     [else]
         hits=no
         [missile_frame]
-            begin=-200
-            end=0
+            duration=200
             image="projectiles/whitemissile-n.png"
             image_diagonal="projectiles/whitemissile-ne.png"
             sound=magicmissile.wav
@@ -822,97 +631,30 @@
 
 #define MISSILE_FRAME_HATCHET
     # Animate a projectile for a thrown-hatchet attack.
+    missile_start_time=-200
     [missile_frame]
-        begin=-200
-        end=-150
-        image="projectiles/hatchet-2.png"
-        image_diagonal="projectiles/hatchet-2.png"
+        duration=200
+        image="projectiles/hatchet-[2~4,1].png"
+        image_diagonal="projectiles/hatchet-[2~4,1].png"
     [/missile_frame]
-    [missile_frame]
-        begin=-150
-        end=-100
-        image="projectiles/hatchet-3.png"
-        image_diagonal="projectiles/hatchet-3.png"
-    [/missile_frame]
-    [missile_frame]
-        begin=-100
-        end=-50
-        image="projectiles/hatchet-4.png"
-        image_diagonal="projectiles/hatchet-4.png"
-    [/missile_frame]
-    [missile_frame]
-        begin=-50
-        end=0
-        image="projectiles/hatchet-1.png"
-        image_diagonal="projectiles/hatchet-1.png"
-    [/missile_frame]
 #enddef
 
 #define FIRE_BURST_SMALL
+    missile_start_time=0
     [missile_frame]
-        begin=0
-        end=75
-        image="projectiles/fire-burst-small-1.png"
-        image_diagonal="projectiles/fire-burst-small-1.png"
-        offset=0.8
+        duration=600
+        image="projectiles/fire-burst-small-[1~8].png"
+        image_diagonal="projectiles/fire-burst-small-[1~8].png"
+        offset=0.8~1.0
     [/missile_frame]
-    [missile_frame]
-        begin=75
-        end=150
-        image="projectiles/fire-burst-small-2.png"
-        image_diagonal="projectiles/fire-burst-small-2.png"
-        offset=0.83
-    [/missile_frame]
-    [missile_frame]
-        begin=150
-        end=225
-        image="projectiles/fire-burst-small-3.png"
-        image_diagonal="projectiles/fire-burst-small-3.png"
-        offset=0.86
-    [/missile_frame]
-    [missile_frame]
-        begin=225
-        end=300
-        image="projectiles/fire-burst-small-4.png"
-        image_diagonal="projectiles/fire-burst-small-4.png"
-        offset=0.89
-    [/missile_frame]
-    [missile_frame]
-        begin=300
-        end=375
-        image="projectiles/fire-burst-small-5.png"
-        image_diagonal="projectiles/fire-burst-small-5.png"
-        offset=0.92
-    [/missile_frame]
-    [missile_frame]
-        begin=375
-        end=450
-        image="projectiles/fire-burst-small-6.png"
-        image_diagonal="projectiles/fire-burst-small-6.png"
-        offset=0.95
-    [/missile_frame]
-    [missile_frame]
-        begin=450
-        end=525
-        image="projectiles/fire-burst-small-7.png"
-        image_diagonal="projectiles/fire-burst-small-7.png"
-        offset=0.98
-    [/missile_frame]
-    [missile_frame]
-        begin=525
-        end=600
-        image="projectiles/fire-burst-small-8.png"
-        image_diagonal="projectiles/fire-burst-small-8.png"
-        offset=1.0
-    [/missile_frame]
 #enddef
 
 #define LIGHTNING_BOLT DIRECTION_NUMBER
+    missile_start_time=-250
     [if]
         direction=sw,s,se
 
         [missile_frame]
-            begin=-250
             halo=halo/lightning-bolt-{DIRECTION_NUMBER}-[1~4].png~FL(vert):100
             halo_y=-125
             offset=1.0
@@ -922,7 +664,6 @@
         direction=nw,n,ne
 
         [missile_frame]
-            begin=-250
             halo=halo/lightning-bolt-{DIRECTION_NUMBER}-[1~4].png:100
             halo_y=-125
             offset=1.0
@@ -986,7 +727,6 @@
 #define MERMAID_STAFF_FLARE OFFSET_X OFFSET_Y
     flare_start_time=-420
     [flare_frame]
-        duration=420
         halo=halo/merfolk/staff-flare-[1~7].png:60
         halo_x,halo_y={OFFSET_X},{OFFSET_Y}
     [/flare_frame]
@@ -998,14 +738,9 @@
 #define MERMAID_WATER_BLAST_HALO
     water_start_time=-420
     [water_frame]
-        duration=360
-        halo=halo/merfolk/water-halo-[1~6].png:60
+        halo=halo/merfolk/water-halo-[1~7].png:60
     [/water_frame]
     [water_frame]
-        duration=60
-        halo=halo/merfolk/water-halo-7.png
-    [/water_frame]
-    [water_frame]
         duration=10
     [/water_frame]
 #enddef
@@ -1055,46 +790,36 @@
 #enddef
 
 #define MISSILE_FRAME_STONE_HIT OFFSET_X OFFSET_Y
+    sling_stone_start_time=-201
     [sling_stone_frame]
-        begin=-201
-        end=-200
-        image="misc/blank-hex.png"
+        image="misc/blank-hex.png:1"
     [/sling_stone_frame]
     [sling_stone_frame]
-        begin=-200
-        end=0
-        halo="projectiles/stone.png"
+        halo="projectiles/stone.png:200"
         halo_x={OFFSET_X}~0
         halo_y={OFFSET_Y}~0
         y=0~-5,-5~-8,-8~-9,-9~-10,-10~-9,-9~-8,-8~-5,-5~0
         offset=0.0~1.0
     [/sling_stone_frame]
     [sling_stone_frame]
-        begin=0
-        end=1
-        image="misc/blank-hex.png"
+        image="misc/blank-hex.png:1"
     [/sling_stone_frame]
 #enddef
 
 #define MISSILE_FRAME_STONE_MISS OFFSET_X OFFSET_Y
+    sling_stone_start_time=-201
     [sling_stone_frame]
-        begin=-201
-        end=-200
-        image="misc/blank-hex.png"
+        image="misc/blank-hex.png:1"
     [/sling_stone_frame]
     [sling_stone_frame]
-        begin=-200
-        end=100
-        halo="projectiles/stone.png"
+        halo="projectiles/stone.png:300"
         halo_x={OFFSET_X}~0
         halo_y={OFFSET_Y}~0
         y=0~-5,-5~-8,-8~-9,-9~-10,-10~-9,-9~-8,-8~-5,-5~0
         offset=0.0~1.5
     [/sling_stone_frame]
     [sling_stone_frame]
-        begin=100
-        end=101
-        image="misc/blank-hex.png"
+        image="misc/blank-hex.png:1"
     [/sling_stone_frame]
 #enddef
 
@@ -1113,113 +838,35 @@
         terrain_type={DRAKE_UNWALKABLE_TERRAINS}
         submerge=0.01
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-1.png"
+            image="units/drakes/{DRAKE_NAME}-fly-[1~5,4].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-2.png"
+            image="units/drakes/{DRAKE_NAME}-fly-[3,2]-upstroke.png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-3-upstroke.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-2-upstroke.png"
-        [/frame]
     [/standing_anim]
     [pre_movement_anim]
         start_time=0
         terrain_type=!,{DRAKE_UNWALKABLE_TERRAINS}
         [frame]
-            duration=50
-            image="units/drakes/{DRAKE_NAME}-takeoff-1.png"
+            image="units/drakes/{DRAKE_NAME}-takeoff-[1~4].png:50"
         [/frame]
-        [frame]
-            duration=50
-            image="units/drakes/{DRAKE_NAME}-takeoff-2.png"
-        [/frame]
-        [frame]
-            duration=50
-            image="units/drakes/{DRAKE_NAME}-takeoff-3.png"
-        [/frame]
-        [frame]
-            duration=50
-            image="units/drakes/{DRAKE_NAME}-takeoff-4.png"
-        [/frame]
     [/pre_movement_anim]
     [movement_anim]
         start_time=0
         submerge=0.01
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-1.png"
+            image="units/drakes/{DRAKE_NAME}-fly-[1~5,4].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-2.png"
+            image="units/drakes/{DRAKE_NAME}-fly-[3,2]-upstroke.png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-3-upstroke.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-2-upstroke.png"
-        [/frame]
     [/movement_anim]
     [post_movement_anim]
         terrain_type=!,{DRAKE_UNWALKABLE_TERRAINS}
         start_time=0
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-4.png"
+            image="units/drakes/{DRAKE_NAME}-takeoff-[4~1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-1.png"
-        [/frame]
     [/post_movement_anim]
 #enddef
 
@@ -1236,7 +883,7 @@
         impact_burst_start_time=-160
         [impact_burst_frame]
             duration=320
-            halo=misc/blank-hex.png:1,projectiles/fire-burst-small-[1~8].png:[39,40,40,40,40,40,40,39],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-burst-small-[1~8].png:[39,40*6,39],misc/blank-hex.png:1
             offset=1.0
             layer=1
         [/impact_burst_frame]
@@ -1248,35 +895,35 @@
         flame_trail_5_start_time=-250
         [flame_trail_1_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.25:200
         [/flame_trail_1_frame]
         [flame_trail_2_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.20:200
         [/flame_trail_2_frame]
         [flame_trail_3_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.15:200
         [/flame_trail_3_frame]
         [flame_trail_4_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.10:200
         [/flame_trail_4_frame]
         [flame_trail_5_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.05:200
@@ -1284,46 +931,15 @@
 
         start_time=-900
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-1.png"
+            image="units/drakes/{DRAKE_NAME}-fire-inhale-1.png:100"
             sound=flame-big.ogg
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
+            image="units/drakes/{DRAKE_NAME}-fire-inhale-[2~4,2].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-3.png"
+            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-[1~3,2,1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-1.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-1.png"
-        [/frame]
     [/attack_anim]
 
     [attack_anim]
@@ -1342,35 +958,35 @@
         flame_trail_5_start_time=-250
         [flame_trail_1_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.5:200
         [/flame_trail_1_frame]
         [flame_trail_2_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.4:200
         [/flame_trail_2_frame]
         [flame_trail_3_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.3:200
         [/flame_trail_3_frame]
         [flame_trail_4_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.2:200
         [/flame_trail_4_frame]
         [flame_trail_5_frame]
             duration=500
-            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50,50,50,50,50,50,50,50,49],misc/blank-hex.png:1
+            halo=misc/blank-hex.png:1,projectiles/fire-breath-[1~10].png:[49,50*8,49],misc/blank-hex.png:1
             halo_x={OFFSET_X}~0:300,0
             halo_y={OFFSET_Y}~0:300,0
             offset=0.0~1.0:300,1.0~1.1:200
@@ -1378,46 +994,15 @@
 
         start_time=-900
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-1.png"
+            image="units/drakes/{DRAKE_NAME}-fire-inhale-1.png:100"
             sound=flame-big-miss.ogg
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
+            image="units/drakes/{DRAKE_NAME}-fire-inhale-[2~4,2].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-3.png"
+            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-[1~3,2,1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-1.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-{DIRECTION_SUFFIX}-1.png"
-        [/frame]
     [/attack_anim]
 #enddef
 
@@ -1427,9 +1012,8 @@
             name=fire breath
         [/filter_attack]
         direction=se,sw
+        missile_start_time=-400
         [missile_frame]
-            begin=-400
-            end=100
             halo=projectiles/fire-breath-se-[1~5].png:80
             halo_x,halo_y={OFFSET_POSITION}
         [/missile_frame]
@@ -1453,45 +1037,11 @@
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-1.png"
+            image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
+            image="units/drakes/{DRAKE_NAME}-fire-se-[1~3,2,1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-1.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-1.png"
-        [/frame]
     [/attack_anim]
 #enddef
 
@@ -1501,9 +1051,8 @@
             name=fire breath
         [/filter_attack]
         direction=ne,nw
+        missile_start_time=-400
         [missile_frame]
-            begin=-400
-            end=100
             halo=projectiles/fire-breath-ne-[1~5].png:80
             halo_x,halo_y={OFFSET_POSITION}
         [/missile_frame]
@@ -1527,45 +1076,11 @@
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-1.png"
+            image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
+            image="units/drakes/{DRAKE_NAME}-fire-se-[1~3,2,1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-1.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-se-1.png"
-        [/frame]
     [/attack_anim]
 #enddef
 
@@ -1575,9 +1090,8 @@
             name=fire breath
         [/filter_attack]
         direction=s
+        missile_start_time=-400
         [missile_frame]
-            begin=-400
-            end=100
             halo=projectiles/fire-breath-s-[1~5].png:80
             halo_x,halo_y={OFFSET_POSITION}
         [/missile_frame]
@@ -1601,45 +1115,11 @@
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-1.png"
+            image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
+            image="units/drakes/{DRAKE_NAME}-fire-s-[1~3,2,1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-1.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-1.png"
-        [/frame]
     [/attack_anim]
 #enddef
 
@@ -1649,9 +1129,8 @@
             name=fire breath
         [/filter_attack]
         direction=n
+        missile_start_time=-400
         [missile_frame]
-            begin=-400
-            end=100
             halo=projectiles/fire-breath-n-[1~5].png:80
             halo_x,halo_y={OFFSET_POSITION}
         [/missile_frame]
@@ -1675,45 +1154,11 @@
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-1.png"
+            image="units/drakes/{DRAKE_NAME}-fire-inhale-[1~4,2].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
+            image="units/drakes/{DRAKE_NAME}-fire-s-[1~3,2,1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-inhale-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-1.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fire-s-1.png"
-        [/frame]
     [/attack_anim]
 #enddef
 
@@ -1721,37 +1166,11 @@
     [movement_anim]
         start_time=0
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-1.png"
+            image="units/drakes/{DRAKE_NAME}-fly-[1~5,4].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-2.png"
+            image="units/drakes/{DRAKE_NAME}-fly-[3,2]-upstroke.png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-3-upstroke.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-fly-2-upstroke.png"
-        [/frame]
     [/movement_anim]
 #enddef
 
@@ -1760,40 +1179,14 @@
         #landing, only do it when we're not already flying
         terrain_type={DRAKE_UNWALKABLE_TERRAINS}
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-4.png"
+            image="units/drakes/{DRAKE_NAME}-takeoff-[4~1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-1.png"
-        [/frame]
     [/draw_weapon_anim]
     [sheath_weapon_anim]
         #landing, only do it when we're not already flying
         terrain_type={DRAKE_UNWALKABLE_TERRAINS}
         [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-1.png"
+            image="units/drakes/{DRAKE_NAME}-takeoff-[1~4].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/drakes/{DRAKE_NAME}-takeoff-4.png"
-        [/frame]
     [/sheath_weapon_anim]
 #enddef
Index: data/core/macros/teleport-utils.cfg
===================================================================
--- data/core/macros/teleport-utils.cfg	(revision 56196)
+++ data/core/macros/teleport-utils.cfg	(working copy)
@@ -75,48 +75,48 @@
             [/teleport_sparkle_3_frame]
 
             [frame]
-                	duration=100
-			image_mod=~MASK(masks/teleport-mask-0.png)
+                duration=100
+                image_mod=~MASK(masks/teleport-mask-0.png)
             [/frame]
             [frame]
-                	duration=100
-			image_mod=~MASK(masks/teleport-mask-1.png)
+                duration=100
+                image_mod=~MASK(masks/teleport-mask-1.png)
             [/frame]
         	[frame]
-            	duration=100
-			image_mod=~MASK(masks/teleport-mask-2.png)
+                duration=100
+                image_mod=~MASK(masks/teleport-mask-2.png)
         	[/frame]
         	[frame]
-            	duration=100
-			image_mod=~MASK(masks/teleport-mask-3.png)
+                duration=100
+                image_mod=~MASK(masks/teleport-mask-3.png)
         	[/frame]
         	[frame]
             	duration=100
             	image_mod=~MASK(masks/teleport-mask-4.png)
         	[/frame]
         	[frame]
-            	duration=100
-            	image_mod=~MASK(masks/teleport-mask-5.png)
+                duration=100
+                image_mod=~MASK(masks/teleport-mask-5.png)
         	[/frame]
         	[frame]
             	duration=100
             	image_mod=~MASK(masks/teleport-mask-6.png)
         	[/frame]
         	[frame]
-            	duration=100
-            	image_mod=~MASK(masks/teleport-mask-7.png)
+                duration=100
+                image_mod=~MASK(masks/teleport-mask-7.png)
         	[/frame]
         	[frame]
-            	duration=100
-            	image_mod=~MASK(masks/teleport-mask-8.png)
+                duration=100
+                image_mod=~MASK(masks/teleport-mask-8.png)
         	[/frame]
         	[frame]
-            	duration=100
-            	image_mod=~MASK(masks/teleport-mask-9.png)
+                duration=100
+                image_mod=~MASK(masks/teleport-mask-9.png)
         	[/frame]
         	[frame]
-            	duration=200
-            	image="misc/blank-hex.png"
+                duration=200
+                image="misc/blank-hex.png"
         	[/frame]
 #enddef
 
@@ -220,8 +220,8 @@
 
         [animation]
             apply_to=pre_teleport
-		{TELEPORT_OUT_ANIMATION}
-    	  [/animation]
+		    {TELEPORT_OUT_ANIMATION}
+    	[/animation]
 
         [animation]
         	apply_to=post_teleport
@@ -248,13 +248,13 @@
 
         [animation]
             apply_to=pre_teleport
-		{TELEPORT_OUT_ANIMATION}
-    	  [/animation]
+            {TELEPORT_OUT_ANIMATION}
+    	[/animation]
 
         [animation]
         	apply_to=post_teleport
         	{TELEPORT_IN_ANIMATION}
-         [/animation]
+        [/animation]
 	[/effect]
 [/object]
 #enddef
Index: data/core/macros/animation-utils2.cfg
===================================================================
--- data/core/macros/animation-utils2.cfg	(revision 56196)
+++ data/core/macros/animation-utils2.cfg	(working copy)
@@ -8,32 +8,14 @@
     [if]
         direction=s,se,sw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-magic1.png
+            image={BASE_IMAGE_NAME}-se-magic[1,2,1].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-magic2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-magic1.png
-        [/frame]
     [/if]
     [else]
         direction=n,ne,nw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-magic1.png
+            image={BASE_IMAGE_NAME}-ne-magic[1,2,1].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-magic2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-magic1.png
-        [/frame]
     [/else]
 #enddef
 
@@ -60,80 +42,14 @@
     [if]
         direction=s,se,sw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}[1~9].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}9.png
-        [/frame]
     [/if]
     [else]
         direction=n,ne,nw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}[1~9].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}9.png
-        [/frame]
     [/else]
 #enddef
 
@@ -160,88 +76,14 @@
     [if]
         direction=s,se,sw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}[1~10].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}10.png
-        [/frame]
     [/if]
     [else]
         direction=n,ne,nw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}[1~10].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}10.png
-        [/frame]
     [/else]
 #enddef
 
@@ -269,174 +111,26 @@
     [if]
         direction=se,sw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}[1~10].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}10.png
-        [/frame]
     [/if]
     [else]
         direction=s
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}[1~10].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}10.png
-        [/frame]
     [/else]
     [else]
         direction=n
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}[1~10].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}10.png
-        [/frame]
     [/else]
     [else]
         direction=ne,nw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}[1~10].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}10.png
-        [/frame]
     [/else]
 #enddef
 
@@ -464,206 +158,26 @@
     [if]
         direction=se,sw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}[1~12].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}10.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}11.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-se-{TAIL_IMAGE_NAME}12.png
-        [/frame]
     [/if]
     [else]
         direction=s
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}[1~12].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}10.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}11.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-s-{TAIL_IMAGE_NAME}12.png
-        [/frame]
     [/else]
     [else]
         direction=n
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}[1~12].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}10.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}11.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-n-{TAIL_IMAGE_NAME}12.png
-        [/frame]
     [/else]
     [else]
         direction=ne,nw
         [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}1.png
+            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}[1~12].png:100
         [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}2.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}3.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}4.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}5.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}6.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}7.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}8.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}9.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}10.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}11.png
-        [/frame]
-        [frame]
-            duration=100
-            image={BASE_IMAGE_NAME}-ne-{TAIL_IMAGE_NAME}12.png
-        [/frame]
     [/else]
 #enddef
 
@@ -673,56 +187,14 @@
         [if]
             direction=s,se,sw
             [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-se-die1.png
+                image={BASE_IMAGE_NAME}-se-die[1~4,3,4].png:100
             [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-se-die2.png
-            [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-se-die3.png
-            [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-se-die4.png
-            [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-se-die3.png
-            [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-se-die4.png
-            [/frame]
         [/if]
         [else]
             direction=n,ne,nw
             [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-ne-die1.png
+                image={BASE_IMAGE_NAME}-ne-die[1~4,3,4].png:100
             [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-ne-die2.png
-            [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-ne-die3.png
-            [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-ne-die4.png
-            [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-ne-die3.png
-            [/frame]
-            [frame]
-                duration=100
-                image={BASE_IMAGE_NAME}-ne-die4.png
-            [/frame]
         [/else]
     [/death]
 #enddef
@@ -733,56 +205,14 @@
         [if]
             direction=s,se,sw
             [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob1.png
+                image={BASE_IMAGE_NAME}-se-bob[1~6].png:200
             [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob2.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob3.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob4.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob5.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob6.png
-            [/frame]
         [/if]
         [else]
             direction=n,ne,nw
             [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob1.png
+                image={BASE_IMAGE_NAME}-ne-bob[1~6].png:200
             [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob2.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob3.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob4.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob5.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob6.png
-            [/frame]
         [/else]
     [/standing_anim]
 #enddef
@@ -793,72 +223,14 @@
         [if]
             direction=s,se,sw
             [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob1.png
+                image={BASE_IMAGE_NAME}-se-bob[1~8].png:200
             [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob2.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob3.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob4.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob5.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob6.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob7.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-se-bob8.png
-            [/frame]
         [/if]
         [else]
             direction=n,ne,nw
             [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob1.png
+                image={BASE_IMAGE_NAME}-ne-bob[1~8].png:200
             [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob2.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob3.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob4.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob5.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob6.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob7.png
-            [/frame]
-            [frame]
-                duration=200
-                image={BASE_IMAGE_NAME}-ne-bob8.png
-            [/frame]
         [/else]
     [/standing_anim]
 #enddef
@@ -869,72 +241,14 @@
         [if]
             direction=s,se,sw
             [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run1.png
+                image={BASE_IMAGE_NAME}-se-run[1~8].png:50
             [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run2.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run3.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run4.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run5.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run6.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run7.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run8.png
-            [/frame]
         [/if]
         [else]
             direction=n,ne,nw
             [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run1.png
+                image={BASE_IMAGE_NAME}-ne-run[1~8].png:50
             [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run2.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run3.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run4.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run5.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run6.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run7.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run8.png
-            [/frame]
         [/else]
     [/movement_anim]
 #enddef
@@ -945,41 +259,8 @@
         [if]
             direction=s,se,sw
             [frame]
-                duration=67
-                image={BASE_IMAGE_NAME}-se-run1.png
+                image={BASE_IMAGE_NAME}-se-run[1~9].png:67
             [/frame]
-            [frame]
-                duration=67
-                image={BASE_IMAGE_NAME}-se-run2.png
-            [/frame]
-            [frame]
-                duration=66
-                image={BASE_IMAGE_NAME}-se-run3.png
-            [/frame]
-            [frame]
-                duration=67
-                image={BASE_IMAGE_NAME}-se-run4.png
-            [/frame]
-            [frame]
-                duration=67
-                image={BASE_IMAGE_NAME}-se-run5.png
-            [/frame]
-            [frame]
-                duration=66
-                image={BASE_IMAGE_NAME}-se-run6.png
-            [/frame]
-            [frame]
-                duration=67
-                image={BASE_IMAGE_NAME}-se-run7.png
-            [/frame]
-            [frame]
-                duration=67
-                image={BASE_IMAGE_NAME}-se-run8.png
-            [/frame]
-            [frame]
-                duration=66
-                image={BASE_IMAGE_NAME}-se-run9.png
-            [/frame]
         [/if]
     [/movement_anim]
 #enddef
@@ -990,104 +271,14 @@
         [if]
             direction=s,se,sw
             [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run1.png
+                image={BASE_IMAGE_NAME}-se-run[1~12].png:50
             [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run2.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run3.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run4.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run5.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run6.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run7.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run8.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run9.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run10.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run11.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-se-run12.png
-            [/frame]
         [/if]
         [else]
             direction=n,ne,nw
             [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run1.png
+                image={BASE_IMAGE_NAME}-ne-run[1~12].png:50
             [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run2.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run3.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run4.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run5.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run6.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run7.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run8.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run9.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run10.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run11.png
-            [/frame]
-            [frame]
-                duration=50
-                image={BASE_IMAGE_NAME}-ne-run12.png
-            [/frame]
         [/else]
     [/movement_anim]
 #enddef
Index: data/core/units/humans/Mage_Great.cfg
===================================================================
--- data/core/units/humans/Mage_Great.cfg	(revision 56196)
+++ data/core/units/humans/Mage_Great.cfg	(working copy)
@@ -64,68 +64,49 @@
         {MISSILE_FRAME_FIREBALL}
         start_time=-575
         [frame]
-            duration=50
-            image="units/human-magi/great-mage.png"
+            image="units/human-magi/great-mage.png:50"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-magi/great-mage-attack-magic-1.png"
+            image="units/human-magi/great-mage-attack-magic-1.png:100"
             sound=fire.wav
         [/frame]
         [frame]
-            duration=150
-            image="units/human-magi/great-mage-attack-magic-2.png"
+            image="units/human-magi/great-mage-attack-magic-[2,1].png:[150,75]"
         [/frame]
         [frame]
-            duration=75
-            image="units/human-magi/great-mage-attack-magic-1.png"
+            image="units/human-magi/great-mage.png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/human-magi/great-mage.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=staff
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-magi/great-mage.png"
+            image="units/human-magi/great-mage.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-magi/great-mage-attack-staff-1.png"
+            image="units/human-magi/great-mage-attack-staff-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/great-mage-attack-staff-2.png"
+                image="units/human-magi/great-mage-attack-staff-2.png:200"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/great-mage-attack-staff-2.png"
+                image="units/human-magi/great-mage-attack-staff-2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-magi/great-mage-attack-magic-1.png"
+            image="units/human-magi/great-mage-attack-magic-1.png:75"
         [/frame]
         [frame]
-            begin=175
-            end=250
-            image="units/human-magi/great-mage.png"
+            image="units/human-magi/great-mage.png:75"
         [/frame]
     [/attack_anim]
     [female]
@@ -153,46 +134,43 @@
             [/filter_attack]
             {MISSILE_FRAME_FIREBALL}
             [frame]
-                image="units/human-magi/great-mage+female.png"
+                image="units/human-magi/great-mage+female.png:50"
             [/frame]
             [frame]
-                image="units/human-magi/great-mage+female-attack-magic-1.png"
+                image="units/human-magi/great-mage+female-attack-magic-1.png:100"
             [/frame]
             [frame]
-                image="units/human-magi/great-mage+female-attack-magic-2.png"
+                image="units/human-magi/great-mage+female-attack-magic-[2,1].png:[150,75]"
             [/frame]
             [frame]
-                image="units/human-magi/great-mage+female-attack-magic-1.png"
+                image="units/human-magi/great-mage+female.png:75"
             [/frame]
-            [frame]
-                image="units/human-magi/great-mage+female.png"
-            [/frame]
         [/attack_anim]
         [attack_anim]
             [filter_attack]
                 name=staff
             [/filter_attack]
             [frame]
-                image="units/human-magi/great-mage+female.png"
+                image="units/human-magi/great-mage+female.png:50"
             [/frame]
             [frame]
-                image="units/human-magi/great-mage+female-attack-staff-1.png"
+                image="units/human-magi/great-mage+female-attack-staff-1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/great-mage+female-attack-staff-2.png"
+                    image="units/human-magi/great-mage+female-attack-staff-2.png:200"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/great-mage+female-attack-staff-2.png"
+                    image="units/human-magi/great-mage+female-attack-staff-2.png:200"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-magi/great-mage+female-attack-magic-1.png"
+                image="units/human-magi/great-mage+female-attack-magic-1.png:75"
             [/frame]
             [frame]
-                image="units/human-magi/great-mage+female.png"
+                image="units/human-magi/great-mage+female.png:75"
             [/frame]
         [/attack_anim]
     [/female]
Index: data/core/units/humans/Peasant.cfg
===================================================================
--- data/core/units/humans/Peasant.cfg	(revision 56196)
+++ data/core/units/humans/Peasant.cfg	(working copy)
@@ -52,89 +52,37 @@
     [/attack]
     [idle_anim]
         {STANDARD_IDLE_FILTER}
+        start_time=0
         [frame]
-            begin=0
-            end=100
-            image="units/human-peasants/peasant-idle-1.png"
+            image="units/human-peasants/peasant-idle-[1~7,4,2,1].png:[100*4,200*3,100*3]"
         [/frame]
-        [frame]
-            begin=100
-            end=200
-            image="units/human-peasants/peasant-idle-2.png"
-        [/frame]
-        [frame]
-            begin=200
-            end=300
-            image="units/human-peasants/peasant-idle-3.png"
-        [/frame]
-        [frame]
-            begin=300
-            end=400
-            image="units/human-peasants/peasant-idle-4.png"
-        [/frame]
-        [frame]
-            begin=400
-            end=600
-            image="units/human-peasants/peasant-idle-5.png"
-        [/frame]
-        [frame]
-            begin=600
-            end=800
-            image="units/human-peasants/peasant-idle-6.png"
-        [/frame]
-        [frame]
-            begin=800
-            end=1000
-            image="units/human-peasants/peasant-idle-7.png"
-        [/frame]
-        [frame]
-            begin=1000
-            end=1100
-            image="units/human-peasants/peasant-idle-4.png"
-        [/frame]
-        [frame]
-            begin=1100
-            end=1200
-            image="units/human-peasants/peasant-idle-2.png"
-        [/frame]
-        [frame]
-            begin=1200
-            end=1300
-            image="units/human-peasants/peasant-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=pitchfork
             range=ranged
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/pitchfork-n.png"
             image_diagonal="projectiles/pitchfork-ne.png"
         [/missile_frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-peasants/peasant-attack2.png"
+            image="units/human-peasants/peasant-attack2.png:100"
             sound={SOUND_LIST:THROW}
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=50
-                image="units/human-peasants/peasant-ranged.png"
+                image="units/human-peasants/peasant-ranged.png:150"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=50
-                image="units/human-peasants/peasant-ranged.png"
+                image="units/human-peasants/peasant-ranged.png:150"
             [/frame]
         [/else]
     [/attack_anim]
@@ -143,38 +91,29 @@
             name=pitchfork
             range=melee
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-peasants/peasant.png"
+            image="units/human-peasants/peasant.png:50"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-200
-                end=50
-                image="units/human-peasants/peasant-attack.png"
+                image="units/human-peasants/peasant-attack.png:250"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-200
-                end=50
-                image="units/human-peasants/peasant-attack.png"
+                image="units/human-peasants/peasant-attack.png:250"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=150
-            image="units/human-peasants/peasant-attack2.png"
+            image="units/human-peasants/peasant-attack2.png:100"
         [/frame]
         [frame]
-            begin=150
-            end=200
-            image="units/human-peasants/peasant.png"
+            image="units/human-peasants/peasant.png:50"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Outlaw_Bandit.cfg
===================================================================
--- data/core/units/humans/Outlaw_Bandit.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw_Bandit.cfg	(working copy)
@@ -45,48 +45,24 @@
         offset=0.0~0.2,0.2~0.6,0.6~0.4,0.4~0.0
         start_time=-500
         [frame]
-            duration=100
-            image="units/human-outlaws/bandit-melee-1.png"
+            image="units/human-outlaws/bandit-melee-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-outlaws/bandit-melee-2.png"
+                image="units/human-outlaws/bandit-melee-2.png:100"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=100
-                image="units/human-outlaws/bandit-melee-2.png"
+                image="units/human-outlaws/bandit-melee-2.png:100"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/human-outlaws/bandit-melee-3.png"
+            image="units/human-outlaws/bandit-melee-[3~8].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/bandit-melee-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/bandit-melee-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/bandit-melee-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/bandit-melee-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/bandit-melee-8.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Iron_Mauler.cfg
===================================================================
--- data/core/units/humans/Loyalist_Iron_Mauler.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Iron_Mauler.cfg	(working copy)
@@ -42,33 +42,26 @@
         [filter_attack]
             name=mace
         [/filter_attack]
+        start_time=-260
         [frame]
-            begin=-260
-            end=-100
-            image="units/human-loyalists/siegetrooper-attack-1.png"
+            image="units/human-loyalists/siegetrooper-attack-1.png:160"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/siegetrooper-attack-2.png"
+                image="units/human-loyalists/siegetrooper-attack-2.png:200"
                 sound=mace.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/siegetrooper-attack-2.png"
+                image="units/human-loyalists/siegetrooper-attack-2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/siegetrooper.png"
+            image="units/human-loyalists/siegetrooper.png:100"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Shock_Trooper.cfg
===================================================================
--- data/core/units/humans/Loyalist_Shock_Trooper.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Shock_Trooper.cfg	(working copy)
@@ -45,48 +45,23 @@
         [filter_attack]
             name=morning star
         [/filter_attack]
+        start_time=-260
         [if]
             hits=yes
             [frame]
-                begin=-260
-                end=-175
-                image="units/human-loyalists/shocktrooper-attack-1.png"
+                image="units/human-loyalists/shocktrooper-attack-1.png:85"
                 sound=flail.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-260
-                end=-175
-                image="units/human-loyalists/shocktrooper-attack-1.png"
+                image="units/human-loyalists/shocktrooper-attack-1.png:85"
                 sound=flail-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-175
-            end=-75
-            image="units/human-loyalists/shocktrooper-attack-2.png"
+            image="units/human-loyalists/shocktrooper-attack-[2~6].png:[100,125,50*3]"
         [/frame]
-        [frame]
-            begin=-75
-            end=50
-            image="units/human-loyalists/shocktrooper-attack-3.png"
-        [/frame]
-        [frame]
-            begin=50
-            end=100
-            image="units/human-loyalists/shocktrooper-attack-4.png"
-        [/frame]
-        [frame]
-            begin=100
-            end=150
-            image="units/human-loyalists/shocktrooper-attack-5.png"
-        [/frame]
-        [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/shocktrooper-attack-6.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Heavy_Infantryman.cfg
===================================================================
--- data/core/units/humans/Loyalist_Heavy_Infantryman.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Heavy_Infantryman.cfg	(working copy)
@@ -46,105 +46,33 @@
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-1.png"
+            image="units/human-loyalists/heavy-infantry-idle-[1~9,8~1].png:[100*3,300,100*3,1000*3,100*7]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-3.png"
-        [/frame]
-        [frame]
-            duration=300
-            image="units/human-loyalists/heavy-infantry-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-7.png"
-        [/frame]
-        [frame]
-            duration=1000
-            image="units/human-loyalists/heavy-infantry-idle-8.png"
-        [/frame]
-        [frame]
-            duration=1000
-            image="units/human-loyalists/heavy-infantry-idle-9.png"
-        [/frame]
-        [frame]
-            duration=1000
-            image="units/human-loyalists/heavy-infantry-idle-8.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/heavy-infantry-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=mace
         [/filter_attack]
+        start_time=-230
         [frame]
-            begin=-230
-            end=-100
-            image="units/human-loyalists/heavyinfantry-attack-1.png"
+            image="units/human-loyalists/heavyinfantry-attack-1.png:130"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/heavyinfantry-attack-2.png"
+                image="units/human-loyalists/heavyinfantry-attack-2.png:200"
                 sound=mace.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/heavyinfantry-attack-2.png"
+                image="units/human-loyalists/heavyinfantry-attack-2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/heavyinfantry.png"
+            image="units/human-loyalists/heavyinfantry.png:100"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Outlaw_Thug.cfg
===================================================================
--- data/core/units/humans/Outlaw_Thug.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw_Thug.cfg	(working copy)
@@ -47,95 +47,31 @@
         offset=0.0~0.2,0.2~0.6,0.6~0.4,0.4~0.0
         start_time=-500
         [frame]
-            duration=100
-            image="units/human-outlaws/thug-melee-1.png"
+            image="units/human-outlaws/thug-melee-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-outlaws/thug-melee-2.png"
+                image="units/human-outlaws/thug-melee-2.png:100"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=100
-                image="units/human-outlaws/thug-melee-2.png"
+                image="units/human-outlaws/thug-melee-2.png:100"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/human-outlaws/thug-melee-3.png"
+            image="units/human-outlaws/thug-melee-[3~8].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-melee-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-melee-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-melee-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-melee-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-melee-8.png"
-        [/frame]
     [/attack_anim]
     [idle_anim]
         {STANDARD_IDLE_FILTER}
+        start_time=0
         [frame]
-            duration=100
-            image="units/human-outlaws/thug-idle-1.png"
+            image="units/human-outlaws/thug-idle-[1~5,4,5,4,5,2,1].png:[100*3,400,300,400,300,600,100*3]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-idle-3.png"
-        [/frame]
-        [frame]
-            duration=400
-            image="units/human-outlaws/thug-idle-4.png"
-        [/frame]
-        [frame]
-            duration=300
-            image="units/human-outlaws/thug-idle-5.png"
-        [/frame]
-        [frame]
-            duration=400
-            image="units/human-outlaws/thug-idle-4.png"
-        [/frame]
-        [frame]
-            duration=300
-            image="units/human-outlaws/thug-idle-5.png"
-        [/frame]
-        [frame]
-            duration=600
-            image="units/human-outlaws/thug-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thug-idle-1.png"
-        [/frame]
     [/idle_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Master_Bowman.cfg
===================================================================
--- data/core/units/humans/Loyalist_Master_Bowman.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Master_Bowman.cfg	(working copy)
@@ -55,95 +55,45 @@
         start_time=0
         [frame]
             duration=1000
-            image="units/human-loyalists/masterbowman-idle-1.png"
+            image="units/human-loyalists/masterbowman-idle-[1~4,3,4,3,4,3,4,1].png:[1000,400,100,200,100,200,100,200,100,400,100]"
         [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/masterbowman-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/masterbowman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-loyalists/masterbowman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/masterbowman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-loyalists/masterbowman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/masterbowman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-loyalists/masterbowman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/masterbowman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/masterbowman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/masterbowman-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=bow
         [/filter_attack]
         start_time=-445
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
         [frame]
-            duration=65
-            image="units/human-loyalists/masterbowman-bow.png"
+            image="units/human-loyalists/masterbowman-bow.png:65"
         [/frame]
         [frame]
-            duration=75
-            image="units/human-loyalists/masterbowman-bow-attack-1.png"
+            image="units/human-loyalists/masterbowman-bow-attack-[1,2].png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/masterbowman-bow-attack-2.png"
-        [/frame]
         [if]
             hits=no
             [frame]
-                duration=100
-                image="units/human-loyalists/masterbowman-bow-attack-3.png"
+                image="units/human-loyalists/masterbowman-bow-attack-3.png:100"
                 sound=bow-miss.ogg
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-loyalists/masterbowman-bow-attack-3.png"
+                image="units/human-loyalists/masterbowman-bow-attack-3.png:100"
                 sound=bow.ogg
             [/frame]
         [/else]
         [frame]
-            duration=130
-            image="units/human-loyalists/masterbowman-bow-attack-4.png"
+            image="units/human-loyalists/masterbowman-bow-attack-4.png:130"
         [/frame]
         [frame]
-            duration=65
-            image="units/human-loyalists/masterbowman-bow-attack-1.png"
+            image="units/human-loyalists/masterbowman-bow-attack-1.png:65"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -153,40 +103,30 @@
         start_time=-275
 
         [frame]
-            duration=50
-            image="units/human-loyalists/masterbowman-melee-defend-1.png"
+            image="units/human-loyalists/masterbowman-melee-defend-1.png:50"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-loyalists/masterbowman-melee-attack-1.png"
+            image="units/human-loyalists/masterbowman-melee-attack-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-loyalists/masterbowman-melee-attack-2.png"
+                image="units/human-loyalists/masterbowman-melee-attack-2.png:100"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=100
-                image="units/human-loyalists/masterbowman-melee-attack-2.png"
+                image="units/human-loyalists/masterbowman-melee-attack-2.png:100"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/human-loyalists/masterbowman-melee-attack-3.png"
+            image="units/human-loyalists/masterbowman-melee-attack-[3,4].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-loyalists/masterbowman-melee-attack-4.png"
+            image="units/human-loyalists/masterbowman-melee-defend-1.png:50"
         [/frame]
-        [frame]
-            duration=50
-            image="units/human-loyalists/masterbowman-melee-defend-1.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Outlaw_Assassin.cfg
===================================================================
--- data/core/units/humans/Outlaw_Assassin.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw_Assassin.cfg	(working copy)
@@ -63,116 +63,91 @@
         [filter_attack]
             name=knife
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/dagger-n.png"
             image_diagonal="projectiles/dagger-ne.png"
         [/missile_frame]
+        start_time=-350
         [if]
             hits=yes
             [frame]
-                begin=-350
-                end=-100
-                image="units/human-outlaws/assassin-throwknife1.png"
+                image="units/human-outlaws/assassin-throwknife1.png:250"
                 sound=throwing-knife.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-350
-                end=-100
-                image="units/human-outlaws/assassin-throwknife1.png"
+                image="units/human-outlaws/assassin-throwknife1.png:250"
                 sound=throwing-knife-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-100
-            end=50
-            image="units/human-outlaws/assassin-throwknife2.png"
+            image="units/human-outlaws/assassin-throwknife2.png:150"
         [/frame]
         {SOUND:POISON}
         [frame]
-            begin=50
-            end=50
-            image="units/human-outlaws/assassin.png"
+            image="units/human-outlaws/assassin.png:100"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=dagger
         [/filter_attack]
+        start_time=-225
         [frame]
-            begin=-225
-            end=-200
-            image="units/human-outlaws/assassin.png"
+            image="units/human-outlaws/assassin.png:25"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-outlaws/assassin-melee-2-1.png"
+            image="units/human-outlaws/assassin-melee-2-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=150
-                image="units/human-outlaws/assassin-melee-2-2.png"
+                image="units/human-outlaws/assassin-melee-2-2.png:250"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=150
-                image="units/human-outlaws/assassin-melee-2-2.png"
+                image="units/human-outlaws/assassin-melee-2-2.png:250"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-outlaws/assassin.png"
+            image="units/human-outlaws/assassin.png:50"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=dagger
         [/filter_attack]
+        start_time=-225
         [frame]
-            begin=-225
-            end=-200
-            image="units/human-outlaws/assassin.png"
+            image="units/human-outlaws/assassin.png:25"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-outlaws/assassin-melee-1-1.png"
+            image="units/human-outlaws/assassin-melee-1-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=150
-                image="units/human-outlaws/assassin-melee-1-2.png"
+                image="units/human-outlaws/assassin-melee-1-2.png:250"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=150
-                image="units/human-outlaws/assassin-melee-1-2.png"
+                image="units/human-outlaws/assassin-melee-1-2.png:250"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-outlaws/assassin.png"
+            image="units/human-outlaws/assassin.png:50"
         [/frame]
     [/attack_anim]
     [female]
@@ -200,19 +175,19 @@
             [/filter_attack]
             [if]
                 [frame]
-                    image="units/human-outlaws/assassin+female-throwknife1.png"
+                    image="units/human-outlaws/assassin+female-throwknife1.png:250"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-outlaws/assassin+female-throwknife1.png"
+                    image="units/human-outlaws/assassin+female-throwknife1.png:250"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/assassin+female-throwknife2.png"
+                image="units/human-outlaws/assassin+female-throwknife2.png:150"
             [/frame]
             [frame]
-                image="units/human-outlaws/assassin+female.png"
+                image="units/human-outlaws/assassin+female.png:100"
             [/frame]
         [/attack_anim]
         [attack_anim]
@@ -220,23 +195,23 @@
                 name=dagger
             [/filter_attack]
             [frame]
-                image="units/human-outlaws/assassin+female.png"
+                image="units/human-outlaws/assassin+female.png:25"
             [/frame]
             [frame]
-                image="units/human-outlaws/assassin+female-melee-2-1.png"
+                image="units/human-outlaws/assassin+female-melee-2-1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-outlaws/assassin+female-melee-2-2.png"
+                    image="units/human-outlaws/assassin+female-melee-2-2.png:250"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-outlaws/assassin+female-melee-2-2.png"
+                    image="units/human-outlaws/assassin+female-melee-2-2.png:250"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/assassin+female.png"
+                image="units/human-outlaws/assassin+female.png:50"
             [/frame]
         [/attack_anim]
         [attack_anim]
@@ -244,23 +219,23 @@
                 name=dagger
             [/filter_attack]
             [frame]
-                image="units/human-outlaws/assassin+female.png"
+                image="units/human-outlaws/assassin+female.png:25"
             [/frame]
             [frame]
-                image="units/human-outlaws/assassin+female-melee-1-1.png"
+                image="units/human-outlaws/assassin+female-melee-1-1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-outlaws/assassin+female-melee-1-2.png"
+                    image="units/human-outlaws/assassin+female-melee-1-2.png:250"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-outlaws/assassin+female-melee-1-2.png"
+                    image="units/human-outlaws/assassin+female-melee-1-2.png:250"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/assassin+female.png"
+                image="units/human-outlaws/assassin+female.png:50"
             [/frame]
         [/attack_anim]
     [/female]
Index: data/core/units/humans/Loyalist_Master_at_Arms.cfg
===================================================================
--- data/core/units/humans/Loyalist_Master_at_Arms.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Master_at_Arms.cfg	(working copy)
@@ -60,312 +60,129 @@
     [victory_anim]
         start_time=0
         [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-1.png"
+            image="units/human-loyalists/master-at-arms-victory-[1~6,5~1].png:[100*5,1000,100*5]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-5.png"
-        [/frame]
-        [frame]
-            duration=1000
-            image="units/human-loyalists/master-at-arms-victory-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-1.png"
-        [/frame]
     [/victory_anim]
     [idle_anim]
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-1.png"
+            image="units/human-loyalists/master-at-arms-victory-[1~6,5~1].png:[100*5,1000,100*5]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-5.png"
-        [/frame]
-        [frame]
-            duration=1000
-            image="units/human-loyalists/master-at-arms-victory-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/master-at-arms-victory-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=crossbow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-600
         [frame]
-            begin=-600
-            end=-500
-            image="units/human-loyalists/master-at-arms-crossbow-1.png"
+            image="units/human-loyalists/master-at-arms-crossbow-[1,2].png:100"
         [/frame]
-        [frame]
-            begin=-500
-            end=-400
-            image="units/human-loyalists/master-at-arms-crossbow-2.png"
-        [/frame]
         {SOUND:HIT_AND_MISS crossbow.ogg crossbow-miss.ogg -400}
         [frame]
-            begin=-400
-            end=-300
-            image="units/human-loyalists/master-at-arms-crossbow-3.png"
+            image="units/human-loyalists/master-at-arms-crossbow-[3~6,3~1].png:[100,200*2,100*4]"
         [/frame]
-        [frame]
-            begin=-300
-            end=-100
-            image="units/human-loyalists/master-at-arms-crossbow-4.png"
-        [/frame]
-        [frame]
-            begin=-100
-            end=100
-            image="units/human-loyalists/master-at-arms-crossbow-5.png"
-        [/frame]
-        [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/master-at-arms-crossbow-6.png"
-        [/frame]
-        [frame]
-            begin=200
-            end=300
-            image="units/human-loyalists/master-at-arms-crossbow-3.png"
-        [/frame]
-        [frame]
-            begin=300
-            end=400
-            image="units/human-loyalists/master-at-arms-crossbow-2.png"
-        [/frame]
-        [frame]
-            begin=400
-            end=500
-            image="units/human-loyalists/master-at-arms-crossbow-1.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=saber
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-175
-            image="units/human-loyalists/master-at-arms.png"
+            image="units/human-loyalists/master-at-arms.png:25"
         [/frame]
         [frame]
-            begin=-175
-            end=-125
-            image="units/human-loyalists/master-at-arms-melee-2-1.png"
+            image="units/human-loyalists/master-at-arms-melee-2-[1,2].png:50"
         [/frame]
-        [frame]
-            begin=-125
-            end=-75
-            image="units/human-loyalists/master-at-arms-melee-2-2.png"
-        [/frame]
         [if]
             hits=no
             [frame]
-                begin=-75
-                end=75
-                image="units/human-loyalists/master-at-arms-melee-3-3.png"
+                image="units/human-loyalists/master-at-arms-melee-3-3.png:150"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-75
-                end=75
-                image="units/human-loyalists/master-at-arms-melee-1-3.png"
+                image="units/human-loyalists/master-at-arms-melee-1-3.png:150"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/else]
         [frame]
-            begin=75
-            end=125
-            image="units/human-loyalists/master-at-arms-recover-1.png"
+            image="units/human-loyalists/master-at-arms-recover-[1,2].png:50"
         [/frame]
         [frame]
-            begin=125
-            end=175
-            image="units/human-loyalists/master-at-arms-recover-2.png"
+            image="units/human-loyalists/master-at-arms.png:25"
         [/frame]
-        [frame]
-            begin=175
-            end=200
-            image="units/human-loyalists/master-at-arms.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=saber
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-175
-            image="units/human-loyalists/master-at-arms.png"
+            image="units/human-loyalists/master-at-arms.png:25"
         [/frame]
         [frame]
-            begin=-175
-            end=-125
-            image="units/human-loyalists/master-at-arms-melee-2-1.png"
+            image="units/human-loyalists/master-at-arms-melee-2-[1,2].png:50"
         [/frame]
-        [frame]
-            begin=-125
-            end=-75
-            image="units/human-loyalists/master-at-arms-melee-2-2.png"
-        [/frame]
         [if]
             hits=no
             [frame]
-                begin=-75
-                end=75
-                image="units/human-loyalists/master-at-arms-melee-2-3.png"
+                image="units/human-loyalists/master-at-arms-melee-2-3.png:150"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-75
-                end=75
-                image="units/human-loyalists/master-at-arms-melee-1-3.png"
+                image="units/human-loyalists/master-at-arms-melee-1-3.png:150"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/else]
         [frame]
-            begin=75
-            end=125
-            image="units/human-loyalists/master-at-arms-recover-1.png"
+            image="units/human-loyalists/master-at-arms-recover-[1,2].png:50"
         [/frame]
         [frame]
-            begin=125
-            end=175
-            image="units/human-loyalists/master-at-arms-recover-2.png"
+            image="units/human-loyalists/master-at-arms.png:25"
         [/frame]
-        [frame]
-            begin=175
-            end=200
-            image="units/human-loyalists/master-at-arms.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=saber
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-175
-            image="units/human-loyalists/master-at-arms.png"
+            image="units/human-loyalists/master-at-arms.png:25"
         [/frame]
         [frame]
-            begin=-175
-            end=-125
-            image="units/human-loyalists/master-at-arms-melee-1-1.png"
+            image="units/human-loyalists/master-at-arms-melee-1-[1,2].png:50"
         [/frame]
-        [frame]
-            begin=-125
-            end=-75
-            image="units/human-loyalists/master-at-arms-melee-1-2.png"
-        [/frame]
         [if]
             hits=no
             [frame]
-                begin=-75
-                end=75
-                image="units/human-loyalists/master-at-arms-melee-1-3.png"
+                image="units/human-loyalists/master-at-arms-melee-1-3.png:150"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-75
-                end=75
-                image="units/human-loyalists/master-at-arms-melee-1-3.png"
+                image="units/human-loyalists/master-at-arms-melee-1-3.png:150"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/else]
         [frame]
-            begin=75
-            end=125
-            image="units/human-loyalists/master-at-arms-recover-1.png"
+            image="units/human-loyalists/master-at-arms-recover-[1,2].png:50"
         [/frame]
         [frame]
-            begin=125
-            end=175
-            image="units/human-loyalists/master-at-arms-recover-2.png"
+            image="units/human-loyalists/master-at-arms.png:25"
         [/frame]
-        [frame]
-            begin=175
-            end=200
-            image="units/human-loyalists/master-at-arms.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Grand_Marshal.cfg
===================================================================
--- data/core/units/humans/Loyalist_Grand_Marshal.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Grand_Marshal.cfg	(working copy)
@@ -66,124 +66,64 @@
         number=3
     [/attack]
     [death]
+        start_time=0
         [frame]
-            begin=0
-            end=75
-            image="units/human-loyalists/marshal-die-1.png"
+            image="units/human-loyalists/marshal-die-[1~10].png:[75*8,175,125]"
         [/frame]
-        [frame]
-            begin=75
-            end=150
-            image="units/human-loyalists/marshal-die-2.png"
-        [/frame]
-        [frame]
-            begin=150
-            end=225
-            image="units/human-loyalists/marshal-die-3.png"
-        [/frame]
-        [frame]
-            begin=225
-            end=300
-            image="units/human-loyalists/marshal-die-4.png"
-        [/frame]
-        [frame]
-            begin=300
-            end=375
-            image="units/human-loyalists/marshal-die-5.png"
-        [/frame]
-        [frame]
-            begin=375
-            end=450
-            image="units/human-loyalists/marshal-die-6.png"
-        [/frame]
-        [frame]
-            begin=450
-            end=525
-            image="units/human-loyalists/marshal-die-7.png"
-        [/frame]
-        [frame]
-            begin=525
-            end=600
-            image="units/human-loyalists/marshal-die-8.png"
-        [/frame]
-        [frame]
-            begin=600
-            end=875
-            image="units/human-loyalists/marshal-die-9.png"
-        [/frame]
-        [frame]
-            begin=875
-            end=1000
-            image="units/human-loyalists/marshal-die-10.png"
-        [/frame]
     [/death]
     [attack_anim]
         [filter_attack]
             name=crossbow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-400
         [frame]
-            begin=-400
-            end=-300
-            image="units/human-loyalists/marshal-crossbow.png"
+            image="units/human-loyalists/marshal-crossbow.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-300
-                end=-150
-                image="units/human-loyalists/marshal-crossbow-attack1.png"
+                image="units/human-loyalists/marshal-crossbow-attack1.png:150"
                 sound=crossbow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-300
-                end=-150
-                image="units/human-loyalists/marshal-crossbow-attack1.png"
+                image="units/human-loyalists/marshal-crossbow-attack1.png:150"
                 sound=crossbow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-150
-            end=0
-            image="units/human-loyalists/marshal-crossbow-attack2.png"
+            image="units/human-loyalists/marshal-crossbow-attack2.png:150"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-300
         [frame]
-            begin=-300
-            end=-250
-            image="units/human-loyalists/marshal.png"
+            image="units/human-loyalists/marshal.png:50"
             offset=0.0~0.1
         [/frame]
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/marshal-defend-1.png"
+            image="units/human-loyalists/marshal-defend-1.png:50"
             offset=0.1~0.15
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/marshal-attack-sword1.png"
+            image="units/human-loyalists/marshal-attack-sword1.png:100"
             offset=0.15~0.35
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=-25
-                image="units/human-loyalists/marshal-attack-sword2.png"
+                image="units/human-loyalists/marshal-attack-sword2.png:75"
                 sound={SOUND_LIST:SWORD_SWISH}
                 offset=0.35~0.45
             [/frame]
@@ -191,41 +131,17 @@
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=-25
-                image="units/human-loyalists/marshal-attack-sword2.png"
+                image="units/human-loyalists/marshal-attack-sword2.png:75"
                 sound={SOUND_LIST:MISS}
                 offset=0.35~0.45
             [/frame]
         [/else]
         [frame]
-            begin=-25
-            end=75
-            image="units/human-loyalists/marshal-attack-sword3.png"
-            offset=0.45~0.5
+            image="units/human-loyalists/marshal-attack-sword[3,4*2,5].png:[100,20,30,75]"
+            offset=0.45~0.5,0.5,0.5~0.4,0.4~0.2
         [/frame]
         [frame]
-            begin=75
-            end=95
-            image="units/human-loyalists/marshal-attack-sword4.png"
-            offset=0.5
-        [/frame]
-        [frame]
-            begin=95
-            end=125
-            image="units/human-loyalists/marshal-attack-sword4.png"
-            offset=0.5~0.4
-        [/frame]
-        [frame]
-            begin=125
-            end=200
-            image="units/human-loyalists/marshal-attack-sword5.png"
-            offset=0.4~0.2
-        [/frame]
-        [frame]
-            begin=150
-            end=225
-            image="units/human-loyalists/marshal.png"
+            image="units/human-loyalists/marshal.png:75"
             offset=0.2~0.0
         [/frame]
     [/attack_anim]
Index: data/core/units/humans/Loyalist_Longbowman.cfg
===================================================================
--- data/core/units/humans/Loyalist_Longbowman.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Longbowman.cfg	(working copy)
@@ -55,95 +55,45 @@
         start_time=0
         [frame]
             duration=1000
-            image="units/human-loyalists/longbowman-idle-1.png"
+            image="units/human-loyalists/longbowman-idle-[1~4,3,4,3,4,3,4,1].png:[1000,400,100,200,100,200,100,200,100,400,100]"
         [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/longbowman-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/longbowman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-loyalists/longbowman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/longbowman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-loyalists/longbowman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/longbowman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-loyalists/longbowman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/longbowman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/longbowman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/longbowman-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=bow
         [/filter_attack]
         start_time=-445
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
         [frame]
-            duration=65
-            image="units/human-loyalists/longbowman-bow.png"
+            image="units/human-loyalists/longbowman-bow.png:65"
         [/frame]
         [frame]
-            duration=75
-            image="units/human-loyalists/longbowman-bow-attack-1.png"
+            image="units/human-loyalists/longbowman-bow-attack-[1,2].png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/longbowman-bow-attack-2.png"
-        [/frame]
         [if]
             hits=no
             [frame]
-                duration=100
-                image="units/human-loyalists/longbowman-bow-attack-3.png"
+                image="units/human-loyalists/longbowman-bow-attack-3.png:100"
                 sound=bow-miss.ogg
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-loyalists/longbowman-bow-attack-3.png"
+                image="units/human-loyalists/longbowman-bow-attack-3.png:100"
                 sound=bow.ogg
             [/frame]
         [/else]
         [frame]
-            duration=130
-            image="units/human-loyalists/longbowman-bow-attack-4.png"
+            image="units/human-loyalists/longbowman-bow-attack-4.png:130"
         [/frame]
         [frame]
-            duration=65
-            image="units/human-loyalists/longbowman-bow-attack-1.png"
+            image="units/human-loyalists/longbowman-bow-attack-1.png:65"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -153,40 +103,30 @@
         start_time=-275
 
         [frame]
-            duration=50
-            image="units/human-loyalists/longbowman-melee-defend-1.png"
+            image="units/human-loyalists/longbowman-melee-defend-1.png:50"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-loyalists/longbowman-melee-attack-1.png"
+            image="units/human-loyalists/longbowman-melee-attack-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-loyalists/longbowman-melee-attack-2.png"
+                image="units/human-loyalists/longbowman-melee-attack-2.png:100"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=100
-                image="units/human-loyalists/longbowman-melee-attack-2.png"
+                image="units/human-loyalists/longbowman-melee-attack-2.png:100"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/human-loyalists/longbowman-melee-attack-3.png"
+            image="units/human-loyalists/longbowman-melee-attack-[3,4].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-loyalists/longbowman-melee-attack-4.png"
+            image="units/human-loyalists/longbowman-melee-defend-1.png:50"
         [/frame]
-        [frame]
-            duration=50
-            image="units/human-loyalists/longbowman-melee-defend-1.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Horse_Knight.cfg
===================================================================
--- data/core/units/humans/Horse_Knight.cfg	(revision 56196)
+++ data/core/units/humans/Horse_Knight.cfg	(working copy)
@@ -62,68 +62,54 @@
         [filter_attack]
             name=lance
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/knight.png"
+            image="units/human-loyalists/knight.png:50"
             sound=horse-canter.wav
         [/frame]
         [if]
             hits=no
             [frame]
-                begin=-200
-                end=150
-                image="units/human-loyalists/knight-moving.png"
+                image="units/human-loyalists/knight-moving.png:350"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-200
-                end=150
-                image="units/human-loyalists/knight-moving.png"
+                image="units/human-loyalists/knight-moving.png:350"
                 sound=spear.ogg
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/knight.png"
+            image="units/human-loyalists/knight.png:50"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-loyalists/knight.png"
+            image="units/human-loyalists/knight.png:50"
             sound=horse-canter.wav
         [/frame]
         [if]
             hits=no
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/knight-attack.png"
+                image="units/human-loyalists/knight-attack.png:300"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/knight-attack.png"
+                image="units/human-loyalists/knight-attack.png:300"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/knight.png"
+            image="units/human-loyalists/knight.png:50"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Woodsman_Poacher.cfg
===================================================================
--- data/core/units/humans/Woodsman_Poacher.cfg	(revision 56196)
+++ data/core/units/humans/Woodsman_Poacher.cfg	(working copy)
@@ -63,77 +63,58 @@
         [filter_attack]
             name=bow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-400
         [if]
             hits=yes
             [frame]
-                begin=-400
-                end=-250
-                image="units/human-outlaws/poacher-attack1.png"
+                image="units/human-outlaws/poacher-attack1.png:150"
                 sound=bow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-400
-                end=-250
-                image="units/human-outlaws/poacher-attack1.png"
+                image="units/human-outlaws/poacher-attack1.png:150"
                 sound=bow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-250
-            end=-100
-            image="units/human-outlaws/poacher-attack2.png"
+            image="units/human-outlaws/poacher-attack[2,3].png:[150,100]"
         [/frame]
         [frame]
-            begin=-100
-            end=0
-            image="units/human-outlaws/poacher-attack3.png"
+            image="units/human-outlaws/poacher.png:100"
         [/frame]
-        [frame]
-            begin=0
-            end=100
-            image="units/human-outlaws/poacher.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=dagger
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-150
-            image="units/human-outlaws/poacher-dagger.png"
+            image="units/human-outlaws/poacher-dagger.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=50
-                image="units/human-outlaws/poacher-attack.png"
+                image="units/human-outlaws/poacher-attack.png:200"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=50
-                image="units/human-outlaws/poacher-attack.png"
+                image="units/human-outlaws/poacher-attack.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=150
-            image="units/human-outlaws/poacher-dagger.png"
+            image="units/human-outlaws/poacher-dagger.png:100"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Duelist.cfg
===================================================================
--- data/core/units/humans/Loyalist_Duelist.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Duelist.cfg	(working copy)
@@ -39,46 +39,10 @@
         {ABILITY_SKIRMISHER}
     [/abilities]
     [death]
+        start_time=0
         [frame]
-            begin=0
-            end=100
-            image="units/human-loyalists/duelist-die1.png"
+            image="units/human-loyalists/duelist-die[1~8].png:100"
         [/frame]
-        [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/duelist-die2.png"
-        [/frame]
-        [frame]
-            begin=200
-            end=300
-            image="units/human-loyalists/duelist-die3.png"
-        [/frame]
-        [frame]
-            begin=300
-            end=400
-            image="units/human-loyalists/duelist-die4.png"
-        [/frame]
-        [frame]
-            begin=400
-            end=500
-            image="units/human-loyalists/duelist-die5.png"
-        [/frame]
-        [frame]
-            begin=500
-            end=600
-            image="units/human-loyalists/duelist-die6.png"
-        [/frame]
-        [frame]
-            begin=600
-            end=700
-            image="units/human-loyalists/duelist-die7.png"
-        [/frame]
-        [frame]
-            begin=700
-            end=800
-            image="units/human-loyalists/duelist-die8.png"
-        [/frame]
     [/death]
     [attack]
         name=saber
@@ -102,27 +66,24 @@
         [filter_attack]
             name=crossbow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-350
         [if]
             hits=yes
             [frame]
-                begin=-350
-                end=50
-                image="units/human-loyalists/duelist-ranged.png"
+                image="units/human-loyalists/duelist-ranged.png:400"
                 sound=crossbow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-350
-                end=50
-                image="units/human-loyalists/duelist-ranged.png"
+                image="units/human-loyalists/duelist-ranged.png:400"
                 sound=crossbow-miss.ogg
             [/frame]
         [/else]
@@ -131,33 +92,26 @@
         [filter_attack]
             name=saber
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-150
-            image="units/human-loyalists/duelist.png"
+            image="units/human-loyalists/duelist.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=50
-                image="units/human-loyalists/duelist-attack.png"
+                image="units/human-loyalists/duelist-attack.png:200"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=50
-                image="units/human-loyalists/duelist-attack.png"
+                image="units/human-loyalists/duelist-attack.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=150
-            image="units/human-loyalists/duelist.png"
+            image="units/human-loyalists/duelist.png:100"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Royal_Warrior.cfg
===================================================================
--- data/core/units/humans/Royal_Warrior.cfg	(revision 56196)
+++ data/core/units/humans/Royal_Warrior.cfg	(working copy)
@@ -43,38 +43,29 @@
         [filter_attack]
             name=mace
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-loyalists/royal-warrior.png"
+            image="units/human-loyalists/royal-warrior.png:50"
         [/frame]
         [frame]
-            begin=-150
-            end=-75
-            image="units/human-loyalists/royal-warrior-attack1.png"
+            image="units/human-loyalists/royal-warrior-attack1.png:75"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-75
-                end=100
-                image="units/human-loyalists/royal-warrior-attack2.png"
+                image="units/human-loyalists/royal-warrior-attack2.png:175"
                 sound=mace.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-75
-                end=100
-                image="units/human-loyalists/royal-warrior-attack2.png"
+                image="units/human-loyalists/royal-warrior-attack2.png:175"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-loyalists/royal-warrior.png"
+            image="units/human-loyalists/royal-warrior.png:75"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_General.cfg
===================================================================
--- data/core/units/humans/Loyalist_General.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_General.cfg	(working copy)
@@ -74,117 +74,62 @@
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-loyalists/general-idle-1.png"
+            image="units/human-loyalists/general-idle-[1~4,6,4,5~1].png:[100,300,500,100,400*2,300,500,100*3]"
         [/frame]
-        [frame]
-            duration=300
-            image="units/human-loyalists/general-idle-2.png"
-        [/frame]
-        [frame]
-            duration=500
-            image="units/human-loyalists/general-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/general-idle-4.png"
-        [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/general-idle-6.png"
-        [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/general-idle-4.png"
-        [/frame]
-        [frame]
-            duration=300
-            image="units/human-loyalists/general-idle-5.png"
-        [/frame]
-        [frame]
-            duration=500
-            image="units/human-loyalists/general-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/general-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/general-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/general-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=crossbow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-400
         [frame]
-            begin=-400
-            end=-300
-            image="units/human-loyalists/general-crossbow.png"
+            image="units/human-loyalists/general-crossbow.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-300
-                end=-150
-                image="units/human-loyalists/general-crossbow-attack1.png"
+                image="units/human-loyalists/general-crossbow-attack1.png:150"
                 sound=crossbow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-300
-                end=-150
-                image="units/human-loyalists/general-crossbow-attack1.png"
+                image="units/human-loyalists/general-crossbow-attack1.png:150"
                 sound=crossbow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-150
-            end=0
-            image="units/human-loyalists/general-crossbow-attack2.png"
+            image="units/human-loyalists/general-crossbow-attack2.png:150"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-300
         [frame]
-            begin=-300
-            end=-250
-            image="units/human-loyalists/general.png"
+            image="units/human-loyalists/general.png:50"
             offset=0.0~0.1
         [/frame]
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/general-defend-1.png"
+            image="units/human-loyalists/general-defend-1.png:50"
             offset=0.1~0.15
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/general-attack-sword1.png"
+            image="units/human-loyalists/general-attack-sword1.png:100"
             offset=0.15~0.35
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=-25
-                image="units/human-loyalists/general-attack-sword2.png"
+                image="units/human-loyalists/general-attack-sword2.png:75"
                 sound={SOUND_LIST:SWORD_SWISH}
                 offset=0.35~0.45
             [/frame]
@@ -192,41 +137,17 @@
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=-25
-                image="units/human-loyalists/general-attack-sword2.png"
+                image="units/human-loyalists/general-attack-sword2.png:75"
                 sound={SOUND_LIST:MISS}
                 offset=0.35~0.45
             [/frame]
         [/else]
         [frame]
-            begin=-25
-            end=75
-            image="units/human-loyalists/general-attack-sword3.png"
-            offset=0.45~0.5
+            image="units/human-loyalists/general-attack-sword[3,4*2,5].png:[100,20,30,75]"
+            offset=0.45~0.5,0.5,0.5~0.4,0.4~0.2
         [/frame]
         [frame]
-            begin=75
-            end=95
-            image="units/human-loyalists/general-attack-sword4.png"
-            offset=0.5
-        [/frame]
-        [frame]
-            begin=95
-            end=125
-            image="units/human-loyalists/general-attack-sword4.png"
-            offset=0.5~0.4
-        [/frame]
-        [frame]
-            begin=125
-            end=200
-            image="units/human-loyalists/general-attack-sword5.png"
-            offset=0.4~0.2
-        [/frame]
-        [frame]
-            begin=150
-            end=225
-            image="units/human-loyalists/general.png"
+            image="units/human-loyalists/general.png:75"
             offset=0.2~0.0
         [/frame]
     [/attack_anim]
Index: data/core/units/humans/Loyalist_Pikeman.cfg
===================================================================
--- data/core/units/humans/Loyalist_Pikeman.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Pikeman.cfg	(working copy)
@@ -34,31 +34,10 @@
         pierce=60
     [/resistance]
     [death]
+        start_time=0
         [frame]
-            begin=0
-            end=80
-            image="units/human-loyalists/pikeman-die-1.png"
+            image="units/human-loyalists/pikeman-die-[1~5].png:80"
         [/frame]
-        [frame]
-            begin=80
-            end=160
-            image="units/human-loyalists/pikeman-die-2.png"
-        [/frame]
-        [frame]
-            begin=160
-            end=240
-            image="units/human-loyalists/pikeman-die-3.png"
-        [/frame]
-        [frame]
-            begin=240
-            end=320
-            image="units/human-loyalists/pikeman-die-4.png"
-        [/frame]
-        [frame]
-            begin=320
-            end=400
-            image="units/human-loyalists/pikeman-die-5.png"
-        [/frame]
     [/death]
     [attack]
         name=pike
@@ -75,66 +54,34 @@
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-loyalists/pikeman-idle-1.png"
+            image="units/human-loyalists/pikeman-idle-[1~4,3~1].png:[100*3,1000,100*3]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/pikeman-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/pikeman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=1000
-            image="units/human-loyalists/pikeman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/pikeman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/pikeman-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/pikeman-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=pike
         [/filter_attack]
         direction=ne,nw
+        start_time=-250
         [frame]
-            begin=-250
-            end=-150
-            image="units/human-loyalists/pikeman.png"
+            image="units/human-loyalists/pikeman.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/pikeman-attack-ne.png"
+                image="units/human-loyalists/pikeman-attack-ne.png:250"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/pikeman-attack-ne.png"
+                image="units/human-loyalists/pikeman-attack-ne.png:250"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-loyalists/pikeman.png"
+            image="units/human-loyalists/pikeman.png:75"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -142,33 +89,26 @@
             name=pike
         [/filter_attack]
         direction=se,sw
+        start_time=-250
         [frame]
-            begin=-250
-            end=-150
-            image="units/human-loyalists/pikeman.png"
+            image="units/human-loyalists/pikeman.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/pikeman-attack-se.png"
+                image="units/human-loyalists/pikeman-attack-se.png:250"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/pikeman-attack-se.png"
+                image="units/human-loyalists/pikeman-attack-se.png:250"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-loyalists/pikeman.png"
+            image="units/human-loyalists/pikeman.png:75"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -176,38 +116,29 @@
             name=pike
         [/filter_attack]
         direction=n
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/pikeman.png"
+            image="units/human-loyalists/pikeman.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/pikeman-attack-ne.png"
+            image="units/human-loyalists/pikeman-attack-ne.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/pikeman-attack-n.png"
+                image="units/human-loyalists/pikeman-attack-n.png:200"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/pikeman-attack-n.png"
+                image="units/human-loyalists/pikeman-attack-n.png:200"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-loyalists/pikeman.png"
+            image="units/human-loyalists/pikeman.png:75"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -215,38 +146,29 @@
             name=pike
         [/filter_attack]
         direction=s
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/pikeman.png"
+            image="units/human-loyalists/pikeman.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/pikeman-attack-se.png"
+            image="units/human-loyalists/pikeman-attack-se.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/pikeman-attack-s.png"
+                image="units/human-loyalists/pikeman-attack-s.png:200"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/pikeman-attack-s.png"
+                image="units/human-loyalists/pikeman-attack-s.png:200"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-loyalists/pikeman.png"
+            image="units/human-loyalists/pikeman.png:75"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Woodsman_Huntsman.cfg
===================================================================
--- data/core/units/humans/Woodsman_Huntsman.cfg	(revision 56196)
+++ data/core/units/humans/Woodsman_Huntsman.cfg	(working copy)
@@ -70,83 +70,62 @@
         [filter_attack]
             name=bow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-400
         [frame]
-            begin=-400
-            end=-325
-            image="units/human-outlaws/huntsman-bow.png"
+            image="units/human-outlaws/huntsman-bow.png:75"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-325
-                end=-250
-                image="units/human-outlaws/huntsman-attack1.png"
+                image="units/human-outlaws/huntsman-attack1.png:75"
                 sound=bow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-325
-                end=-250
-                image="units/human-outlaws/huntsman-attack1.png"
+                image="units/human-outlaws/huntsman-attack1.png:75"
                 sound=bow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-250
-            end=-100
-            image="units/human-outlaws/huntsman-attack2.png"
+            image="units/human-outlaws/huntsman-attack[2,3].png:[150,100]"
         [/frame]
         [frame]
-            begin=-100
-            end=0
-            image="units/human-outlaws/huntsman-attack3.png"
+            image="units/human-outlaws/huntsman-bow.png:100"
         [/frame]
-        [frame]
-            begin=0
-            end=100
-            image="units/human-outlaws/huntsman-bow.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=dagger
         [/filter_attack]
         hits=yes
+        start_time=-200
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-outlaws/huntsman.png"
+            image="units/human-outlaws/huntsman.png:50"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=100
-                image="units/human-outlaws/huntsman-attack-melee.png"
+                image="units/human-outlaws/huntsman-attack-melee.png:250"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=100
-                image="units/human-outlaws/huntsman-attack-melee.png"
+                image="units/human-outlaws/huntsman-attack-melee.png:250"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=150
-            image="units/human-outlaws/huntsman.png"
+            image="units/human-outlaws/huntsman.png:50"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Horse_Lancer.cfg
===================================================================
--- data/core/units/humans/Horse_Lancer.cfg	(revision 56196)
+++ data/core/units/humans/Horse_Lancer.cfg	(working copy)
@@ -44,54 +44,42 @@
     [/attack]
     {DEFENSE_ANIM "units/human-loyalists/lancer-defend.png" "units/human-loyalists/lancer.png" {SOUND_LIST:HORSE_HIT} }
     [movement_anim]
+        start_time=0
         [frame]
-            begin=0
-            end=150
-            image="units/human-loyalists/lancer-moving.png"
+            image="units/human-loyalists/lancer-moving.png:150"
         [/frame]
     [/movement_anim]
     [attack_anim]
         [filter_attack]
             name=lance
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-225
-            image="units/human-loyalists/lancer.png"
+            image="units/human-loyalists/lancer.png:25"
             sound=horse-canter.wav
         [/frame]
         [frame]
-            begin=-225
-            end=-150
-            image="units/human-loyalists/lancer-moving.png"
+            image="units/human-loyalists/lancer-moving.png:75"
         [/frame]
         [if]
             hits=no
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/lancer-attack.png"
+                image="units/human-loyalists/lancer-attack.png:300"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/lancer-attack.png"
+                image="units/human-loyalists/lancer-attack.png:300"
                 sound=spear.ogg
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/lancer-moving.png"
+            image="units/human-loyalists/lancer-moving.png:50"
         [/frame]
         [frame]
-            begin=200
-            end=225
-            image="units/human-loyalists/lancer.png"
+            image="units/human-loyalists/lancer.png:25"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Javelineer.cfg
===================================================================
--- data/core/units/humans/Loyalist_Javelineer.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Javelineer.cfg	(working copy)
@@ -59,92 +59,67 @@
         [filter_attack]
             name=javelin
         [/filter_attack]
+        missile_start_time=0
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/spear-n.png"
             image_diagonal="projectiles/spear-ne.png"
         [/missile_frame]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-150
-            image="units/human-loyalists/javelineer-attack-ranged-1.png"
+            image="units/human-loyalists/javelineer-attack-ranged-1.png:100"
         [/frame]
         [frame]
-            begin=-150
-            end=-50
-            image="units/human-loyalists/javelineer-attack-ranged-2.png"
+            image="units/human-loyalists/javelineer-attack-ranged-2.png:100"
             sound={SOUND_LIST:THROW}
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-50
-                end=50
-                image="units/human-loyalists/javelineer-attack-ranged-3.png"
+                image="units/human-loyalists/javelineer-attack-ranged-3.png:100"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-50
-                end=50
-                image="units/human-loyalists/javelineer-attack-ranged-3.png"
+                image="units/human-loyalists/javelineer-attack-ranged-3.png:100"
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=100
-            image="units/human-loyalists/javelineer-attack-ranged-4.png"
+            image="units/human-loyalists/javelineer-attack-ranged-4.png:50"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=spear
         [/filter_attack]
+        start_time=-300
         [frame]
-            begin=-300
-            end=-200
-            image="units/human-loyalists/javelineer-attack-melee-1.png"
+            image="units/human-loyalists/javelineer-attack-melee-[1,2].png:100"
         [/frame]
-        [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/javelineer-attack-melee-2.png"
-        [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/javelineer-attack-melee-3.png"
+                image="units/human-loyalists/javelineer-attack-melee-3.png:200"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/javelineer-attack-melee-3.png"
+                image="units/human-loyalists/javelineer-attack-melee-3.png:200"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-loyalists/javelineer-attack-ranged-1.png"
+            image="units/human-loyalists/javelineer-attack-ranged-1.png:75"
         [/frame]
         [frame]
-            begin=175
-            end=250
-            image="units/human-loyalists/javelineer-attack-melee-1.png"
+            image="units/human-loyalists/javelineer-attack-melee-1.png:75"
         [/frame]
         [frame]
-            begin=250
-            end=300
-            image="units/human-loyalists/javelineer.png"
+            image="units/human-loyalists/javelineer.png:50"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Mage.cfg
===================================================================
--- data/core/units/humans/Mage.cfg	(revision 56196)
+++ data/core/units/humans/Mage.cfg	(working copy)
@@ -68,81 +68,58 @@
         {MAGIC_MISSILE 11 -20}
         {MAGIC_MISSILE_STAFF_FLARE -750 600 11 -20}
 
+        start_time=-800
         [frame]
-            begin=-800
-            end=-700
-            image="units/human-magi/mage-attack-magic1.png"
+            image="units/human-magi/mage-attack-magic[1,2].png:[100,350]"
         [/frame]
-        [frame]
-            begin=-700
-            end=-350
-            image="units/human-magi/mage-attack-magic2.png"
-        [/frame]
         [if]
             hits=no
             [frame]
-                begin=-350
-                end=-100
-                image="units/human-magi/mage-attack-magic2.png"
+                image="units/human-magi/mage-attack-magic2.png:250"
                 sound=magic-missile-[1~3]-miss.ogg
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-350
-                end=-100
-                image="units/human-magi/mage-attack-magic2.png"
+                image="units/human-magi/mage-attack-magic2.png:250"
                 sound=magic-missile-[1~3].ogg
             [/frame]
         [/else]
         [frame]
-            begin=-100
-            end=100
-            image="units/human-magi/mage-attack-magic1.png"
+            image="units/human-magi/mage-attack-magic1.png:200"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=staff
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-magi/mage.png"
+            image="units/human-magi/mage.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-magi/mage-attack-staff1.png"
+            image="units/human-magi/mage-attack-staff1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/mage-attack-staff2.png"
+                image="units/human-magi/mage-attack-staff2.png:200"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/mage-attack-staff2.png"
+                image="units/human-magi/mage-attack-staff2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=150
-            image="units/human-magi/mage-attack-magic1.png"
+            image="units/human-magi/mage-attack-magic1.png:50"
         [/frame]
         [frame]
-            begin=150
-            end=200
-            image="units/human-magi/mage.png"
+            image="units/human-magi/mage.png:50"
         [/frame]
     [/attack_anim]
     [female]
@@ -172,23 +149,20 @@
             {MAGIC_MISSILE 11 -20}
             {MAGIC_MISSILE_STAFF_FLARE -750 600 11 -20}
             [frame]
-                image="units/human-magi/mage+female-attack-magic1.png"
+                image="units/human-magi/mage+female-attack-magic[1,2].png:[100,350]"
             [/frame]
-            [frame]
-                image="units/human-magi/mage+female-attack-magic2.png"
-            [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/mage+female-attack-magic2.png"
+                    image="units/human-magi/mage+female-attack-magic2.png:250"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/mage+female-attack-magic2.png"
+                    image="units/human-magi/mage+female-attack-magic2.png:250"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-magi/mage+female-attack-magic1.png"
+                image="units/human-magi/mage+female-attack-magic1.png:200"
             [/frame]
         [/attack_anim]
         [attack_anim]
@@ -196,26 +170,26 @@
                 name=staff
             [/filter_attack]
             [frame]
-                image="units/human-magi/mage+female.png"
+                image="units/human-magi/mage+female.png:50"
             [/frame]
             [frame]
-                image="units/human-magi/mage+female-attack-staff1.png"
+                image="units/human-magi/mage+female-attack-staff1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/mage+female-attack-staff2.png"
+                    image="units/human-magi/mage+female-attack-staff2.png:200"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/mage+female-attack-staff2.png"
+                    image="units/human-magi/mage+female-attack-staff2.png:200"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-magi/mage+female-attack-magic1.png"
+                image="units/human-magi/mage+female-attack-magic1.png:50"
             [/frame]
             [frame]
-                image="units/human-magi/mage+female.png"
+                image="units/human-magi/mage+female.png:50"
             [/frame]
         [/attack_anim]
     [/female]
Index: data/core/units/humans/Mage_White.cfg
===================================================================
--- data/core/units/humans/Mage_White.cfg	(revision 56196)
+++ data/core/units/humans/Mage_White.cfg	(working copy)
@@ -40,32 +40,17 @@
         arcane=60
     [/resistance]
     [healing_anim]
+        start_time=-525
         [frame]
-            begin=-525
-            end=-450
-            image="units/human-magi/white-mage-magic-1.png"
+            image="units/human-magi/white-mage-magic-[1,2].png:75"
         [/frame]
         [frame]
-            begin=-450
-            end=-375
-            image="units/human-magi/white-mage-magic-2.png"
-        [/frame]
-        [frame]
-            begin=-375
-            end=150
             image="units/human-magi/white-mage-magic-3.png"
             halo=halo/holy/halo[6,1~6].png:75
         [/frame]
         [frame]
-            begin=150
-            end=225
-            image="units/human-magi/white-mage-magic-2.png"
+            image="units/human-magi/white-mage-magic-[2,1].png:75"
         [/frame]
-        [frame]
-            begin=225
-            end=300
-            image="units/human-magi/white-mage-magic-1.png"
-        [/frame]
     [/healing_anim]
     [attack]
         name=staff
@@ -93,28 +78,18 @@
         [/filter_attack]
         {MISSILE_FRAME_LIGHT_BEAM}
 
+        start_time=-300
         [frame]
-            begin=-300
-            end=-225
-            image="units/human-magi/white-mage-magic-1.png"
+            image="units/human-magi/white-mage-magic-[1,2].png:75"
         [/frame]
         [frame]
-            begin=-225
-            end=-150
-            image="units/human-magi/white-mage-magic-2.png"
-        [/frame]
-        [frame]
-            begin=-150
-            end=-75
-            image="units/human-magi/white-mage-magic-3.png"
+            image="units/human-magi/white-mage-magic-3.png:75"
             halo=halo/holy/halo6.png
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-75
-                end=0
-                image="units/human-magi/white-mage-magic-3.png"
+                image="units/human-magi/white-mage-magic-3.png:75"
                 sound={SOUND_LIST:HOLY}
                 halo=halo/holy/halo1.png
             [/frame]
@@ -122,95 +97,47 @@
         [else]
             hits=no
             [frame]
-                begin=-75
-                end=0
-                image="units/human-magi/white-mage-magic-3.png"
+                image="units/human-magi/white-mage-magic-3.png:75"
                 sound={SOUND_LIST:HOLY_MISS}
                 halo=halo/holy/halo1.png
             [/frame]
         [/else]
         [frame]
-            begin=0
-            end=75
             image="units/human-magi/white-mage-magic-3.png"
-            halo=halo/holy/halo3.png
+            halo=halo/holy/halo[3,5,6].png:[75*2,50]
         [/frame]
         [frame]
-            begin=75
-            end=150
-            image="units/human-magi/white-mage-magic-3.png"
-            halo=halo/holy/halo5.png
+            image="units/human-magi/white-mage-magic-[2,1].png:50"
         [/frame]
-
-        [frame]
-            begin=150
-            end=200
-            image="units/human-magi/white-mage-magic-3.png"
-            halo=halo/holy/halo6.png
-        [/frame]
-        [frame]
-            begin=200
-            end=250
-            image="units/human-magi/white-mage-magic-2.png"
-        [/frame]
-        [frame]
-            begin=250
-            end=300
-            image="units/human-magi/white-mage-magic-1.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=staff
         [/filter_attack]
+        start_time=-325
         [frame]
-            begin=-325
-            end=-300
-            image="units/human-magi/white-mage.png"
+            image="units/human-magi/white-mage.png:25"
         [/frame]
         [frame]
-            begin=-300
-            end=-200
-            image="units/human-magi/white-mage-melee-1.png"
+            image="units/human-magi/white-mage-melee-[1,2].png:100"
         [/frame]
-        [frame]
-            begin=-200
-            end=-100
-            image="units/human-magi/white-mage-melee-2.png"
-        [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=50
-                image="units/human-magi/white-mage-melee-3.png"
+                image="units/human-magi/white-mage-melee-3.png:150"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=50
-                image="units/human-magi/white-mage-melee-3.png"
+                image="units/human-magi/white-mage-melee-3.png:150"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=150
-            image="units/human-magi/white-mage-melee-4.png"
+            image="units/human-magi/white-mage-melee-[4~6].png:100"
         [/frame]
-        [frame]
-            begin=150
-            end=250
-            image="units/human-magi/white-mage-melee-5.png"
-        [/frame]
-        [frame]
-            begin=250
-            end=350
-            image="units/human-magi/white-mage-melee-6.png"
-        [/frame]
     [/attack_anim]
     [female]
         name= _ "female^White Mage"
@@ -236,38 +163,14 @@
         [/portrait]
         [healing_anim]
             [frame]
-                image="units/human-magi/white-mage+female-magic-1.png"
+                image="units/human-magi/white-mage+female-magic-[1,2].png:75"
             [/frame]
             [frame]
-                image="units/human-magi/white-mage+female-magic-2.png"
-            [/frame]
-            [frame]
                 image="units/human-magi/white-mage+female-magic-3.png"
             [/frame]
             [frame]
-                image="units/human-magi/white-mage+female-magic-3.png"
+                image="units/human-magi/white-mage+female-magic-[2,1].png:75"
             [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-2.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-1.png"
-            [/frame]
         [/healing_anim]
         [attack_anim]
             [filter_attack]
@@ -275,72 +178,51 @@
             [/filter_attack]
             {MISSILE_FRAME_LIGHT_BEAM}
             [frame]
-                image="units/human-magi/white-mage+female-magic-1.png"
+                image="units/human-magi/white-mage+female-magic-[1,2].png:75"
             [/frame]
             [frame]
-                image="units/human-magi/white-mage+female-magic-2.png"
+                image="units/human-magi/white-mage+female-magic-3.png:75"
             [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-3.png"
-            [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/white-mage+female-magic-3.png"
+                    image="units/human-magi/white-mage+female-magic-3.png:75"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/white-mage+female-magic-3.png"
+                    image="units/human-magi/white-mage+female-magic-3.png:75"
                 [/frame]
             [/else]
             [frame]
                 image="units/human-magi/white-mage+female-magic-3.png"
             [/frame]
             [frame]
-                image="units/human-magi/white-mage+female-magic-3.png"
+                image="units/human-magi/white-mage+female-magic-[2,1].png:50"
             [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-2.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-magic-1.png"
-            [/frame]
         [/attack_anim]
         [attack_anim]
             [filter_attack]
                 name=staff
             [/filter_attack]
             [frame]
-                image="units/human-magi/white-mage+female.png"
+                image="units/human-magi/white-mage+female.png:25"
             [/frame]
             [frame]
-                image="units/human-magi/white-mage+female-melee-1.png"
+                image="units/human-magi/white-mage+female-melee-[1,2].png:100"
             [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-melee-2.png"
-            [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/white-mage+female-melee-3.png"
+                    image="units/human-magi/white-mage+female-melee-3.png:150"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/white-mage+female-melee-3.png"
+                    image="units/human-magi/white-mage+female-melee-3.png:150"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-magi/white-mage+female-melee-4.png"
+                image="units/human-magi/white-mage+female-melee-[4~6].png:100"
             [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-melee-5.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-mage+female-melee-6.png"
-            [/frame]
         [/attack_anim]
     [/female]
 [/unit_type]
Index: data/core/units/humans/Outlaw.cfg
===================================================================
--- data/core/units/humans/Outlaw.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw.cfg	(working copy)
@@ -51,14 +51,13 @@
         [filter_attack]
             name=sling
         [/filter_attack]
+        start_time=-400
         offset=0.0
         [if]
             hits=yes
             {MISSILE_FRAME_STONE_HIT 5 -6}
             [frame]
-                begin=-400
-                end=-150
-                image="units/human-outlaws/outlaw-attack1.png"
+                image="units/human-outlaws/outlaw-attack1.png:250"
                 sound=sling.ogg
             [/frame]
         [/if]
@@ -66,49 +65,38 @@
             hits=no
             {MISSILE_FRAME_STONE_MISS 5 -6}
             [frame]
-                begin=-400
-                end=-150
-                image="units/human-outlaws/outlaw-attack1.png"
+                image="units/human-outlaws/outlaw-attack1.png:250"
                 sound=sling-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-150
-            end=50
-            image="units/human-outlaws/outlaw-attack2.png"
+            image="units/human-outlaws/outlaw-attack2.png:200"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=mace-spiked
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-outlaws/outlaw-melee-1.png"
+            image="units/human-outlaws/outlaw-melee-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=50
-                image="units/human-outlaws/outlaw-melee-2.png"
+                image="units/human-outlaws/outlaw-melee-2.png:150"
                 sound=mace.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=50
-                image="units/human-outlaws/outlaw-melee-2.png"
+                image="units/human-outlaws/outlaw-melee-2.png:150"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=150
-            image="units/human-outlaws/outlaw-melee-3.png"
+            image="units/human-outlaws/outlaw-melee-3.png:100"
         [/frame]
     [/attack_anim]
     [female]
@@ -137,17 +125,17 @@
             [if]
                 {MISSILE_FRAME_STONE_HIT 5 -6}
                 [frame]
-                    image="units/human-outlaws/outlaw+female-attack1.png"
+                    image="units/human-outlaws/outlaw+female-attack1.png:250"
                 [/frame]
             [/if]
             [else]
                 {MISSILE_FRAME_STONE_MISS 5 -6}
                 [frame]
-                    image="units/human-outlaws/outlaw+female-attack1.png"
+                    image="units/human-outlaws/outlaw+female-attack1.png:250"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/outlaw+female-attack2.png"
+                image="units/human-outlaws/outlaw+female-attack2.png:200"
             [/frame]
         [/attack_anim]
         [attack_anim]
@@ -155,89 +143,28 @@
                 name=mace-spiked
             [/filter_attack]
             [frame]
-                image="units/human-outlaws/outlaw+female-melee-1.png"
+                image="units/human-outlaws/outlaw+female-melee-1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-outlaws/outlaw+female-melee-2.png"
+                    image="units/human-outlaws/outlaw+female-melee-2.png:150"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-outlaws/outlaw+female-melee-2.png"
+                    image="units/human-outlaws/outlaw+female-melee-2.png:150"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/outlaw+female-melee-3.png"
+                image="units/human-outlaws/outlaw+female-melee-3.png:100"
             [/frame]
         [/attack_anim]
     [/female]
     [idle_anim]
         {STANDARD_IDLE_FILTER}
+        start_time=0
         [frame]
-            begin=0
-            end=100
-            image="units/human-outlaws/outlaw-idle-1.png"
+            image="units/human-outlaws/outlaw-idle-[1,7,5~1,6~1].png:[100*9,500,100*3]"
         [/frame]
-        [frame]
-            begin=100
-            end=200
-            image="units/human-outlaws/outlaw-idle-7.png"
-        [/frame]
-        [frame]
-            begin=200
-            end=300
-            image="units/human-outlaws/outlaw-idle-5.png"
-        [/frame]
-        [frame]
-            begin=300
-            end=400
-            image="units/human-outlaws/outlaw-idle-4.png"
-        [/frame]
-        [frame]
-            begin=400
-            end=500
-            image="units/human-outlaws/outlaw-idle-3.png"
-        [/frame]
-        [frame]
-            begin=500
-            end=600
-            image="units/human-outlaws/outlaw-idle-2.png"
-        [/frame]
-        [frame]
-            begin=600
-            end=700
-            image="units/human-outlaws/outlaw-idle-1.png"
-        [/frame]
-        [frame]
-            begin=700
-            end=800
-            image="units/human-outlaws/outlaw-idle-6.png"
-        [/frame]
-        [frame]
-            begin=800
-            end=900
-            image="units/human-outlaws/outlaw-idle-5.png"
-        [/frame]
-        [frame]
-            begin=900
-            end=1400
-            image="units/human-outlaws/outlaw-idle-4.png"
-        [/frame]
-        [frame]
-            begin=1400
-            end=1500
-            image="units/human-outlaws/outlaw-idle-3.png"
-        [/frame]
-        [frame]
-            begin=1500
-            end=1600
-            image="units/human-outlaws/outlaw-idle-2.png"
-        [/frame]
-        [frame]
-            begin=1600
-            end=1700
-            image="units/human-outlaws/outlaw-idle-1.png"
-        [/frame]
     [/idle_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Halberdier.cfg
===================================================================
--- data/core/units/humans/Loyalist_Halberdier.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Halberdier.cfg	(working copy)
@@ -61,104 +61,40 @@
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-1.png"
+            image="units/human-loyalists/halberdier-idle-[1~12,2,1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-4.png"
-        [/frame]
-        [frame]
-            duration=700
-            image="units/human-loyalists/halberdier-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-8.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-9.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-10.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-11.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-12.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/halberdier-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=halberd
             type=blade
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/halberdier-slash-se-1.png"
+            image="units/human-loyalists/halberdier-slash-se-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/halberdier-slash-se-2.png"
+                image="units/human-loyalists/halberdier-slash-se-2.png:200"
                 sound=axe.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/halberdier-slash-se-2.png"
+                image="units/human-loyalists/halberdier-slash-se-2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/halberdier-pierce-se.png"
+            image="units/human-loyalists/halberdier-pierce-se.png:100"
         [/frame]
         [frame]
-            begin=200
-            end=250
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:50"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -167,38 +103,29 @@
             type=pierce
         [/filter_attack]
         direction=ne,nw
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/halberdier.png"
+            image="units/human-loyalists/halberdier.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/halberdier-pierce-ne.png"
+                image="units/human-loyalists/halberdier-pierce-ne.png:200"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/halberdier-pierce-ne.png"
+                image="units/human-loyalists/halberdier-pierce-ne.png:200"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:75"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -207,38 +134,29 @@
             type=pierce
         [/filter_attack]
         direction=se,sw
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/halberdier.png"
+            image="units/human-loyalists/halberdier.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/halberdier-pierce-se.png"
+                image="units/human-loyalists/halberdier-pierce-se.png:200"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/halberdier-pierce-se.png"
+                image="units/human-loyalists/halberdier-pierce-se.png:200"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:75"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -248,31 +166,22 @@
         [/filter_attack]
         direction=n
         hits=yes
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/halberdier.png"
+            image="units/human-loyalists/halberdier.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/halberdier-pierce-ne.png"
+            image="units/human-loyalists/halberdier-pierce-ne.png:100"
         [/frame]
         [frame]
-            begin=-100
-            end=100
-            image="units/human-loyalists/halberdier-pierce-n.png"
+            image="units/human-loyalists/halberdier-pierce-n.png:200"
             sound=spear.ogg
         [/frame]
         [frame]
-            begin=100
-            end=150
-            image="units/human-loyalists/halberdier-pierce-ne.png"
+            image="units/human-loyalists/halberdier-pierce-ne.png:50"
         [/frame]
         [frame]
-            begin=150
-            end=175
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:25"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -282,31 +191,22 @@
         [/filter_attack]
         direction=n
         hits=no
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/halberdier.png"
+            image="units/human-loyalists/halberdier.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/halberdier-pierce-ne.png"
+            image="units/human-loyalists/halberdier-pierce-ne.png:100"
         [/frame]
         [frame]
-            begin=-150
-            end=100
-            image="units/human-loyalists/halberdier-pierce-n.png"
+            image="units/human-loyalists/halberdier-pierce-n.png:250"
             sound=spear-miss.ogg
         [/frame]
         [frame]
-            begin=100
-            end=150
-            image="units/human-loyalists/halberdier-pierce-ne.png"
+            image="units/human-loyalists/halberdier-pierce-ne.png:50"
         [/frame]
         [frame]
-            begin=150
-            end=175
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:25"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -315,43 +215,32 @@
             type=pierce
         [/filter_attack]
         direction=s
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/halberdier.png"
+            image="units/human-loyalists/halberdier.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:50"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/halberdier-pierce-s.png"
+                image="units/human-loyalists/halberdier-pierce-s.png:250"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/halberdier-pierce-s.png"
+                image="units/human-loyalists/halberdier-pierce-s.png:250"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=150
-            image="units/human-loyalists/halberdier-pierce-se.png"
+            image="units/human-loyalists/halberdier-pierce-se.png:50"
         [/frame]
         [frame]
-            begin=150
-            end=175
-            image="units/human-loyalists/halberdier-defend.png"
+            image="units/human-loyalists/halberdier-defend.png:25"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Outlaw_Ruffian.cfg
===================================================================
--- data/core/units/humans/Outlaw_Ruffian.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw_Ruffian.cfg	(working copy)
@@ -46,52 +46,24 @@
         [/filter_attack]
         start_time=-500
         [frame]
-            duration=100
-            image="units/human-peasants/ruffian-attack-1.png"
+            image="units/human-peasants/ruffian-attack-[1~5].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-peasants/ruffian-attack-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-peasants/ruffian-attack-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-peasants/ruffian-attack-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-peasants/ruffian-attack-5.png"
-        [/frame]
         [if]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-peasants/ruffian-attack-6.png"
+                image="units/human-peasants/ruffian-attack-6.png:100"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=100
-                image="units/human-peasants/ruffian-attack-6.png"
+                image="units/human-peasants/ruffian-attack-6.png:100"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/human-peasants/ruffian-attack-7.png"
+            image="units/human-peasants/ruffian-attack-[7~9].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-peasants/ruffian-attack-8.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-peasants/ruffian-attack-9.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Woodsman.cfg
===================================================================
--- data/core/units/humans/Woodsman.cfg	(revision 56196)
+++ data/core/units/humans/Woodsman.cfg	(working copy)
@@ -59,153 +59,68 @@
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-peasants/woodsman-idle-1.png"
+            image="units/human-peasants/woodsman-idle-[1~14,3~1].png:[100,150,200,150*2,200,1200,200,1200,150*2,100*2,1300,200*2,150]"
         [/frame]
-        [frame]
-            duration=150
-            image="units/human-peasants/woodsman-idle-2.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-peasants/woodsman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=150
-            image="units/human-peasants/woodsman-idle-4.png"
-        [/frame]
-        [frame]
-            duration=150
-            image="units/human-peasants/woodsman-idle-5.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-peasants/woodsman-idle-6.png"
-        [/frame]
-        [frame]
-            duration=1200
-            image="units/human-peasants/woodsman-idle-7.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-peasants/woodsman-idle-8.png"
-        [/frame]
-        [frame]
-            duration=1200
-            image="units/human-peasants/woodsman-idle-9.png"
-        [/frame]
-        [frame]
-            duration=150
-            image="units/human-peasants/woodsman-idle-10.png"
-        [/frame]
-        [frame]
-            duration=150
-            image="units/human-peasants/woodsman-idle-11.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-peasants/woodsman-idle-12.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-peasants/woodsman-idle-13.png"
-        [/frame]
-        [frame]
-            duration=1300
-            image="units/human-peasants/woodsman-idle-14.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-peasants/woodsman-idle-3.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-peasants/woodsman-idle-2.png"
-        [/frame]
-        [frame]
-            duration=150
-            image="units/human-peasants/woodsman-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=bow
         [/filter_attack]
         start_time=-445
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
         [frame]
-            duration=65
-            image="units/human-peasants/woodsman-bow.png"
+            image="units/human-peasants/woodsman-bow.png:65"
         [/frame]
         [frame]
-            duration=75
-            image="units/human-peasants/woodsman-bow-attack-1.png"
+            image="units/human-peasants/woodsman-bow-attack-[1,2].png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/human-peasants/woodsman-bow-attack-2.png"
-        [/frame]
         [if]
             hits=no
             [frame]
-                duration=100
-                image="units/human-peasants/woodsman-bow-attack-3.png"
+                image="units/human-peasants/woodsman-bow-attack-3.png:100"
                 sound=bow-miss.ogg
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-peasants/woodsman-bow-attack-3.png"
+                image="units/human-peasants/woodsman-bow-attack-3.png:100"
                 sound=bow.ogg
             [/frame]
         [/else]
         [frame]
-            duration=130
-            image="units/human-peasants/woodsman-bow-attack-4.png"
+            image="units/human-peasants/woodsman-bow-attack-[4,1].png:[130,65]"
         [/frame]
-        [frame]
-            duration=65
-            image="units/human-peasants/woodsman-bow-attack-1.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=dagger
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-150
-            image="units/human-peasants/woodsman.png"
+            image="units/human-peasants/woodsman.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=50
-                image="units/human-peasants/woodsman-melee-1.png"
+                image="units/human-peasants/woodsman-melee-1.png:200"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=50
-                image="units/human-peasants/woodsman-melee-2.png"
+                image="units/human-peasants/woodsman-melee-2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=150
-            image="units/human-peasants/woodsman.png"
+            image="units/human-peasants/woodsman.png:100"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Lieutenant.cfg
===================================================================
--- data/core/units/humans/Loyalist_Lieutenant.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Lieutenant.cfg	(working copy)
@@ -58,173 +58,75 @@
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-loyalists/lieutenant-idle-1.png"
+            image="units/human-loyalists/lieutenant-idle-[1~8,7~5,9,1].png:[100*2,300,50*4,500,100*5]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/lieutenant-idle-2.png"
-        [/frame]
-        [frame]
-            duration=300
-            image="units/human-loyalists/lieutenant-idle-3.png"
-        [/frame]
-        [frame]
-            duration=50
-            image="units/human-loyalists/lieutenant-idle-4.png"
-        [/frame]
-        [frame]
-            duration=50
-            image="units/human-loyalists/lieutenant-idle-5.png"
-        [/frame]
-        [frame]
-            duration=50
-            image="units/human-loyalists/lieutenant-idle-6.png"
-        [/frame]
-        [frame]
-            duration=50
-            image="units/human-loyalists/lieutenant-idle-7.png"
-        [/frame]
-        [frame]
-            duration=500
-            image="units/human-loyalists/lieutenant-idle-8.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/lieutenant-idle-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/lieutenant-idle-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/lieutenant-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/lieutenant-idle-9.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/lieutenant-idle-1.png"
-        [/frame]
     [/idle_anim]
 
     [death]
         start_time=0
         [frame]
-            duration=75
-            image="units/human-loyalists/lieutenant-die-1.png"
+            image="units/human-loyalists/lieutenant-die-[1~9].png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/lieutenant-die-2.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/lieutenant-die-3.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/lieutenant-die-4.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/lieutenant-die-5.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/lieutenant-die-6.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/lieutenant-die-7.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/lieutenant-die-8.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/lieutenant-die-9.png"
-        [/frame]
     [/death]
     [attack_anim]
         [filter_attack]
             name=crossbow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-400
         [frame]
-            begin=-400
-            end=-300
-            image="units/human-loyalists/lieutenant-crossbow.png"
+            image="units/human-loyalists/lieutenant-crossbow.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-300
-                end=-150
-                image="units/human-loyalists/lieutenant-crossbow-attack1.png"
+                image="units/human-loyalists/lieutenant-crossbow-attack1.png:150"
                 sound=crossbow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-300
-                end=-150
-                image="units/human-loyalists/lieutenant-crossbow-attack1.png"
+                image="units/human-loyalists/lieutenant-crossbow-attack1.png:150"
                 sound=crossbow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-150
-            end=0
-            image="units/human-loyalists/lieutenant-crossbow-attack2.png"
+            image="units/human-loyalists/lieutenant-crossbow-attack2.png:150"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-225
         [frame]
-            begin=-225
-            end=-175
-            image="units/human-loyalists/lieutenant.png"
+            image="units/human-loyalists/lieutenant.png:50"
         [/frame]
         [frame]
-            begin=-175
-            end=-100
-            image="units/human-loyalists/lieutenant-attack-sword-1.png"
+            image="units/human-loyalists/lieutenant-attack-sword-1.png:75"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=50
-                image="units/human-loyalists/lieutenant-attack-sword-2.png"
+                image="units/human-loyalists/lieutenant-attack-sword-2.png:150"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=50
-                image="units/human-loyalists/lieutenant-attack-sword-2.png"
+                image="units/human-loyalists/lieutenant-attack-sword-2.png:150"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=150
-            image="units/human-loyalists/lieutenant-attack-sword-3.png"
+            image="units/human-loyalists/lieutenant-attack-sword-3.png:100"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Outlaw_Thief.cfg
===================================================================
--- data/core/units/humans/Outlaw_Thief.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw_Thief.cfg	(working copy)
@@ -34,153 +34,73 @@
     [death]
         start_time=0
         [frame]
-            duration=100
-            image="units/human-outlaws/thief-die-1.png"
+            image="units/human-outlaws/thief-die-[1~7].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-die-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-die-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-die-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-die-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-die-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-die-7.png"
-        [/frame]
     [/death]
     [defend]
         hits=miss
+        start_time=-126
         [frame]
-            begin=-126
-            end=-125
-            image="units/human-outlaws/thief.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
         [frame]
-            begin=-125
-            end=-42
-            image="units/human-outlaws/thief-defend-1-1.png"
+            image="units/human-outlaws/thief-defend-1-[1,2,1].png:[83*2,84]"
         [/frame]
         [frame]
-            begin=-42
-            end=41
-            image="units/human-outlaws/thief-defend-1-2.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
-        [frame]
-            begin=41
-            end=125
-            image="units/human-outlaws/thief-defend-1-1.png"
-        [/frame]
-        [frame]
-            begin=125
-            end=126
-            image="units/human-outlaws/thief.png"
-        [/frame]
     [/defend]
     [defend]
         hits=miss
+        start_time=-126
         [frame]
-            begin=-126
-            end=-125
-            image="units/human-outlaws/thief.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
         [frame]
-            begin=-125
-            end=-42
-            image="units/human-outlaws/thief-defend-2-1.png"
+            image="units/human-outlaws/thief-defend-2-[1,2,1].png:[83*2,84]"
         [/frame]
         [frame]
-            begin=-42
-            end=41
-            image="units/human-outlaws/thief-defend-2-2.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
-        [frame]
-            begin=41
-            end=125
-            image="units/human-outlaws/thief-defend-2-1.png"
-        [/frame]
-        [frame]
-            begin=125
-            end=126
-            image="units/human-outlaws/thief.png"
-        [/frame]
     [/defend]
     [defend]
         hits=miss
+        start_time=-126
         [frame]
-            begin=-126
-            end=-125
-            image="units/human-outlaws/thief.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
         [frame]
-            begin=-125
-            end=-42
-            image="units/human-outlaws/thief-defend-3-1.png"
+            image="units/human-outlaws/thief-defend-3-[1,2,1].png:[83*2,84]"
         [/frame]
         [frame]
-            begin=-42
-            end=41
-            image="units/human-outlaws/thief-defend-3-2.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
-        [frame]
-            begin=41
-            end=125
-            image="units/human-outlaws/thief-defend-3-1.png"
-        [/frame]
-        [frame]
-            begin=125
-            end=126
-            image="units/human-outlaws/thief.png"
-        [/frame]
     [/defend]
     [defend]
         hits=kill
+        start_time=-126
         [frame]
-            begin=-126
-            end=-125
-            image="units/human-outlaws/thief.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
         [frame]
-            begin=-125
-            end=125
-            image="units/human-outlaws/thief-defend.png"
+            image="units/human-outlaws/thief-defend.png:250"
         [/frame]
         [frame]
-            begin=125
-            end=126
-            image="units/human-outlaws/thief.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
     [/defend]
     [defend]
         hits=hit
+        start_time=-126
         [frame]
-            begin=-126
-            end=-125
-            image="units/human-outlaws/thief.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
         [frame]
-            begin=-125
-            end=125
-            image="units/human-outlaws/thief-defend.png"
+            image="units/human-outlaws/thief-defend.png:250"
             sound={SOUND_LIST:HUMAN_HIT}
         [/frame]
         [frame]
-            begin=125
-            end=126
-            image="units/human-outlaws/thief.png"
+            image="units/human-outlaws/thief.png:1"
         [/frame]
     [/defend]
     [attack]
@@ -199,33 +119,26 @@
         [filter_attack]
             name=dagger
         [/filter_attack]
+        start_time=-150
         [frame]
-            begin=-150
-            end=-100
-            image="units/human-outlaws/thief.png"
+            image="units/human-outlaws/thief.png:50"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-outlaws/thief-attack.png"
+                image="units/human-outlaws/thief-attack.png:200"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-outlaws/thief-attack.png"
+                image="units/human-outlaws/thief-attack.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=150
-            image="units/human-outlaws/thief.png"
+            image="units/human-outlaws/thief.png:50"
         [/frame]
     [/attack_anim]
     [idle_anim]
@@ -234,143 +147,24 @@
 
         #pulls a "moneybag" out of hammerspace
         [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-1.png"
+            image="units/human-outlaws/thief-idle-[1~7].png:[100*4,200,150,500]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-4.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-outlaws/thief-idle-5.png"
-        [/frame]
-        [frame]
-            duration=150
-            image="units/human-outlaws/thief-idle-6.png"
-        [/frame]
-        [frame]
-            duration=500
-            image="units/human-outlaws/thief-idle-7.png"
-        [/frame]
 
         #begin toss of pouch
         [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-8.png"
+            image="units/human-outlaws/thief-idle-[8~12,11~8].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-9.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-10.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-11.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-12.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-11.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-10.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-9.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-8.png"
-        [/frame]
 
         #catches it for a moment, and does a second toss
         [frame]
             duration=300
-            image="units/human-outlaws/thief-idle-7.png"
+            image="units/human-outlaws/thief-idle-[7~12,11~8].png:[300,100*10]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-8.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-9.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-10.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-11.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-12.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-11.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-10.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-9.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-8.png"
-        [/frame]
 
         #catches it, and returns it to hammerspace
         [frame]
-            duration=500
-            image="units/human-outlaws/thief-idle-7.png"
+            image="units/human-outlaws/thief-idle-[7~1].png:[500,150,200,100*4]"
         [/frame]
-        [frame]
-            duration=150
-            image="units/human-outlaws/thief-idle-6.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-outlaws/thief-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/thief-idle-1.png"
-        [/frame]
     [/idle_anim]
 
     [female]
@@ -394,106 +188,63 @@
         [death]
             start_time=0
             [frame]
-                duration=100
-                image="units/human-outlaws/thief+female-die-1.png"
+                image="units/human-outlaws/thief+female-die-[1~7].png:100"
             [/frame]
-            [frame]
-                duration=100
-                image="units/human-outlaws/thief+female-die-2.png"
-            [/frame]
-            [frame]
-                duration=100
-                image="units/human-outlaws/thief+female-die-3.png"
-            [/frame]
-            [frame]
-                duration=100
-                image="units/human-outlaws/thief+female-die-4.png"
-            [/frame]
-            [frame]
-                duration=100
-                image="units/human-outlaws/thief+female-die-5.png"
-            [/frame]
-            [frame]
-                duration=100
-                image="units/human-outlaws/thief+female-die-6.png"
-            [/frame]
-            [frame]
-                duration=100
-                image="units/human-outlaws/thief+female-die-7.png"
-            [/frame]
         [/death]
         [defend]
             [frame]
-                image="units/human-outlaws/thief+female.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female-defend-1-1.png"
+                image="units/human-outlaws/thief+female-defend-1-[1,2,1].png:[83*2,84]"
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female-defend-1-2.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-defend-1-1.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female.png"
-            [/frame]
         [/defend]
         [defend]
             [frame]
-                image="units/human-outlaws/thief+female.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female-defend-2-1.png"
+                image="units/human-outlaws/thief+female-defend-2-[1,2,1].png:[83*2,84]"
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female-defend-2-2.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-defend-2-1.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female.png"
-            [/frame]
         [/defend]
         [defend]
             [frame]
-                image="units/human-outlaws/thief+female.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female-defend-3-1.png"
+                image="units/human-outlaws/thief+female-defend-3-[1,2,1].png:[83*2,84]"
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female-defend-3-2.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-defend-3-1.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female.png"
-            [/frame]
         [/defend]
         [defend]
             [frame]
-                image="units/human-outlaws/thief+female.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female-defend.png"
+                image="units/human-outlaws/thief+female-defend.png:250"
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
         [/defend]
         [defend]
             [frame]
-                image="units/human-outlaws/thief+female.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female-defend.png"
+                image="units/human-outlaws/thief+female-defend.png:250"
                 sound={SOUND_LIST:HUMAN_FEMALE_HIT}
             [/frame]
             [frame]
-                image="units/human-outlaws/thief+female.png"
+                image="units/human-outlaws/thief+female.png:1"
             [/frame]
         [/defend]
         [attack_anim]
@@ -501,129 +252,42 @@
                 name=dagger
             [/filter_attack]
             [frame]
-                image="units/human-outlaws/thief+female.png"
+                image="units/human-outlaws/thief+female.png:50"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-outlaws/thief+female-attack.png"
+                    image="units/human-outlaws/thief+female-attack.png:200"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-outlaws/thief+female-attack.png"
+                    image="units/human-outlaws/thief+female-attack.png:200"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/thief+female.png"
+                image="units/human-outlaws/thief+female.png:50"
             [/frame]
         [/attack_anim]
         [idle_anim]
             #pulls a "moneybag" out of hammerspace
             [frame]
-                image="units/human-outlaws/thief+female-idle-1.png"
+                image="units/human-outlaws/thief+female-idle-[1~7].png:[100*4,200,150,500]"
             [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-2.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-3.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-4.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-5.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-6.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-7.png"
-            [/frame]
 
             #begin toss of pouch
             [frame]
-                image="units/human-outlaws/thief+female-idle-8.png"
+                image="units/human-outlaws/thief+female-idle-[8~12,11~8].png:100"
             [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-9.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-10.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-11.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-12.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-11.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-10.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-9.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-8.png"
-            [/frame]
 
             #catches it for a moment, and does a second toss
             [frame]
-                image="units/human-outlaws/thief+female-idle-7.png"
+                image="units/human-outlaws/thief+female-idle-[7~12,11~8].png:[300,100*10]"
             [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-8.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-9.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-10.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-11.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-12.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-11.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-10.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-9.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-8.png"
-            [/frame]
 
             #catches it, and returns it to hammerspace
             [frame]
-                image="units/human-outlaws/thief+female-idle-7.png"
+                image="units/human-outlaws/thief+female-idle-[7~1].png:[500,150,200,100*4]"
             [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-6.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-5.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-4.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-3.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-2.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/thief+female-idle-1.png"
-            [/frame]
         [/idle_anim]
     [/female]
 [/unit_type]
Index: data/core/units/humans/Mage_Silver.cfg
===================================================================
--- data/core/units/humans/Mage_Silver.cfg	(revision 56196)
+++ data/core/units/humans/Mage_Silver.cfg	(working copy)
@@ -74,81 +74,58 @@
         {MAGIC_MISSILE 14 -23}
         {MAGIC_MISSILE_STAFF_FLARE -750 600 14 -23}
 
+        start_time=-800
         [frame]
-            begin=-800
-            end=-700
-            image="units/human-magi/silver-mage-attack-magic1.png"
+            image="units/human-magi/silver-mage-attack-magic[1,2].png:[100,350]"
         [/frame]
-        [frame]
-            begin=-700
-            end=-350
-            image="units/human-magi/silver-mage-attack-magic2.png"
-        [/frame]
         [if]
             hits=no
             [frame]
-                begin=-350
-                end=-100
-                image="units/human-magi/silver-mage-attack-magic2.png"
+                image="units/human-magi/silver-mage-attack-magic2.png:250"
                 sound=magic-missile-[1~3]-miss.ogg
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-350
-                end=-100
-                image="units/human-magi/silver-mage-attack-magic2.png"
+                image="units/human-magi/silver-mage-attack-magic2.png:250"
                 sound=magic-missile-[1~3].ogg
             [/frame]
         [/else]
         [frame]
-            begin=-100
-            end=100
-            image="units/human-magi/silver-mage-attack-magic1.png"
+            image="units/human-magi/silver-mage-attack-magic1.png:200"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=staff
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-magi/silver-mage.png"
+            image="units/human-magi/silver-mage.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-magi/silver-mage-attack-staff1.png"
+            image="units/human-magi/silver-mage-attack-staff1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/silver-mage-attack-staff2.png"
+                image="units/human-magi/silver-mage-attack-staff2.png:200"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/silver-mage-attack-staff2.png"
+                image="units/human-magi/silver-mage-attack-staff2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-magi/silver-mage-attack-magic1.png"
+            image="units/human-magi/silver-mage-attack-magic1.png:75"
         [/frame]
         [frame]
-            begin=175
-            end=250
-            image="units/human-magi/silver-mage.png"
+            image="units/human-magi/silver-mage.png:75"
         [/frame]
     [/attack_anim]
     [animation]
@@ -179,41 +156,11 @@
         [/teleport_sparkle_3_frame]
 
         [frame]
-            duration=200
-            image="units/human-magi/silver-mage-teleport-1.png"
+            image="units/human-magi/silver-mage-teleport-[1~8].png:[200,100*7]"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-2.png"
+            image="misc/blank-hex.png:300"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-8.png"
-        [/frame]
-        [frame]
-            duration=300
-            image="misc/blank-hex.png"
-        [/frame]
     [/animation]
 
     [animation]
@@ -243,41 +190,11 @@
             halo_y=-30~30
         [/teleport_sparkle_3_frame]
         [frame]
-            duration=300
-            image="misc/blank-hex.png"
+            image="misc/blank-hex.png:300"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-8.png"
+            image="units/human-magi/silver-mage-teleport-[8~1].png:[100*7,200]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/silver-mage-teleport-2.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-magi/silver-mage-teleport-1.png"
-        [/frame]
     [/animation]
     [female]
         name= _ "female^Silver Mage"
@@ -309,23 +226,20 @@
             {MAGIC_MISSILE 14 -23}
             {MAGIC_MISSILE_STAFF_FLARE -750 600 14 -23}
             [frame]
-                image="units/human-magi/silver-mage+female-attack-magic1.png"
+                image="units/human-magi/silver-mage+female-attack-magic[1,2].png:[100,350]"
             [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-attack-magic2.png"
-            [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/silver-mage+female-attack-magic2.png"
+                    image="units/human-magi/silver-mage+female-attack-magic2.png:250"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/silver-mage+female-attack-magic2.png"
+                    image="units/human-magi/silver-mage+female-attack-magic2.png:250"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-magi/silver-mage+female-attack-magic1.png"
+                image="units/human-magi/silver-mage+female-attack-magic1.png:200"
             [/frame]
         [/attack_anim]
         [attack_anim]
@@ -333,56 +247,35 @@
                 name=staff
             [/filter_attack]
             [frame]
-                image="units/human-magi/silver-mage+female.png"
+                image="units/human-magi/silver-mage+female.png:50"
             [/frame]
             [frame]
-                image="units/human-magi/silver-mage+female-attack-staff1.png"
+                image="units/human-magi/silver-mage+female-attack-staff1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/silver-mage+female-attack-staff2.png"
+                    image="units/human-magi/silver-mage+female-attack-staff2.png:200"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/silver-mage+female-attack-staff2.png"
+                    image="units/human-magi/silver-mage+female-attack-staff2.png:200"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-magi/silver-mage+female-attack-magic1.png"
+                image="units/human-magi/silver-mage+female-attack-magic1.png:75"
             [/frame]
             [frame]
-                image="units/human-magi/silver-mage+female.png"
+                image="units/human-magi/silver-mage+female.png:75"
             [/frame]
         [/attack_anim]
         [animation]
             apply_to=pre_teleport
             [frame]
-                image="units/human-magi/silver-mage+female-teleport-1.png"
+                image="units/human-magi/silver-mage+female-teleport-[1~8].png:[100*7,200]"
             [/frame]
             [frame]
-                image="units/human-magi/silver-mage+female-teleport-2.png"
             [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-4.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-5.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-6.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-7.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-8.png"
-            [/frame]
-            [frame]
-            [/frame]
         [/animation]
 
         [animation]
@@ -390,29 +283,8 @@
             [frame]
             [/frame]
             [frame]
-                image="units/human-magi/silver-mage+female-teleport-8.png"
+                image="units/human-magi/silver-mage+female-teleport-[8~1].png:[100*7,200]"
             [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-7.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-6.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-5.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-4.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-2.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/silver-mage+female-teleport-1.png"
-            [/frame]
         [/animation]
     [/female]
 [/unit_type]
Index: data/core/units/humans/Mage_Arch.cfg
===================================================================
--- data/core/units/humans/Mage_Arch.cfg	(revision 56196)
+++ data/core/units/humans/Mage_Arch.cfg	(working copy)
@@ -40,41 +40,8 @@
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-magi/arch-mage-idle-1.png"
+            image="units/human-magi/arch-mage-idle-[1~5,4~1].png:[100*4,2000,100*4]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/arch-mage-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/arch-mage-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/arch-mage-idle-4.png"
-        [/frame]
-        [frame]
-            duration=2000
-            image="units/human-magi/arch-mage-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/arch-mage-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/arch-mage-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/arch-mage-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-magi/arch-mage-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack]
         name=staff
@@ -103,68 +70,49 @@
         {MISSILE_FRAME_FIREBALL}
         start_time=-575
         [frame]
-            duration=50
-            image="units/human-magi/arch-mage.png"
+            image="units/human-magi/arch-mage.png:50"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-magi/arch-mage-attack-magic-1.png"
+            image="units/human-magi/arch-mage-attack-magic-1.png:100"
             sound=fire.wav
         [/frame]
         [frame]
-            duration=150
-            image="units/human-magi/arch-mage-attack-magic-2.png"
+            image="units/human-magi/arch-mage-attack-magic-[2,1].png:[150,75]"
         [/frame]
         [frame]
-            duration=75
-            image="units/human-magi/arch-mage-attack-magic-1.png"
+            image="units/human-magi/arch-mage.png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/human-magi/arch-mage.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=staff
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-magi/arch-mage.png"
+            image="units/human-magi/arch-mage.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-magi/arch-mage-attack-staff-1.png"
+            image="units/human-magi/arch-mage-attack-staff-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/arch-mage-attack-staff-2.png"
+                image="units/human-magi/arch-mage-attack-staff-2.png:200"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/arch-mage-attack-staff-2.png"
+                image="units/human-magi/arch-mage-attack-staff-2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-magi/arch-mage-attack-magic-1.png"
+            image="units/human-magi/arch-mage-attack-magic-1.png:75"
         [/frame]
         [frame]
-            begin=175
-            end=250
-            image="units/human-magi/arch-mage.png"
+            image="units/human-magi/arch-mage.png:75"
         [/frame]
     [/attack_anim]
     [female]
@@ -192,46 +140,43 @@
             [/filter_attack]
             {MISSILE_FRAME_FIREBALL}
             [frame]
-                image="units/human-magi/arch-mage+female.png"
+                image="units/human-magi/arch-mage+female.png:50"
             [/frame]
             [frame]
-                image="units/human-magi/arch-mage+female-attack-magic-1.png"
+                image="units/human-magi/arch-mage+female-attack-magic-1.png:100"
             [/frame]
             [frame]
-                image="units/human-magi/arch-mage+female-attack-magic-2.png"
+                image="units/human-magi/arch-mage+female-attack-magic-[2,1].png:[150,75]"
             [/frame]
             [frame]
-                image="units/human-magi/arch-mage+female-attack-magic-1.png"
+                image="units/human-magi/arch-mage+female.png:75"
             [/frame]
-            [frame]
-                image="units/human-magi/arch-mage+female.png"
-            [/frame]
         [/attack_anim]
         [attack_anim]
             [filter_attack]
                 name=staff
             [/filter_attack]
             [frame]
-                image="units/human-magi/arch-mage+female.png"
+                image="units/human-magi/arch-mage+female.png:50"
             [/frame]
             [frame]
-                image="units/human-magi/arch-mage+female-attack-staff-1.png"
+                image="units/human-magi/arch-mage+female-attack-staff-1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/arch-mage+female-attack-staff-2.png"
+                    image="units/human-magi/arch-mage+female-attack-staff-2.png:200"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/arch-mage+female-attack-staff-2.png"
+                    image="units/human-magi/arch-mage+female-attack-staff-2.png:200"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-magi/arch-mage+female-attack-magic-1.png"
+                image="units/human-magi/arch-mage+female-attack-magic-1.png:75"
             [/frame]
             [frame]
-                image="units/human-magi/arch-mage+female.png"
+                image="units/human-magi/arch-mage+female.png:75"
             [/frame]
         [/attack_anim]
         #
@@ -241,32 +186,8 @@
         #
         [idle_anim]
             [frame]
-                image="units/human-magi/arch-mage+female.png"
+                image="units/human-magi/arch-mage+female.png:[100*4,2000,100*4]"
             [/frame]
-            [frame]
-                image="units/human-magi/arch-mage+female.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/arch-mage+female.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/arch-mage+female.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/arch-mage+female.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/arch-mage+female.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/arch-mage+female.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/arch-mage+female.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/arch-mage+female.png"
-            [/frame]
         [/idle_anim]
     [/female]
 [/unit_type]
Index: data/core/units/humans/Horse_Paladin.cfg
===================================================================
--- data/core/units/humans/Horse_Paladin.cfg	(revision 56196)
+++ data/core/units/humans/Horse_Paladin.cfg	(working copy)
@@ -68,10 +68,9 @@
         number=2
     [/attack]
     [movement_anim]
+        start_time=0
         [frame]
-            begin=0
-            end=150
-            image="units/human-loyalists/paladin-moving.png"
+            image="units/human-loyalists/paladin-moving.png:150"
         [/frame]
     [/movement_anim]
     {DEFENSE_ANIM "units/human-loyalists/paladin-defend.png" "units/human-loyalists/paladin.png" {SOUND_LIST:HORSE_HIT} }
@@ -79,34 +78,27 @@
         [filter_attack]
             name=lance
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/paladin.png"
+            image="units/human-loyalists/paladin.png:50"
             sound=horse-canter.wav
         [/frame]
         [if]
             hits=no
             [frame]
-                begin=-200
-                end=150
-                image="units/human-loyalists/paladin-moving.png"
+                image="units/human-loyalists/paladin-moving.png:350"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-200
-                end=150
-                image="units/human-loyalists/paladin-moving.png"
+                image="units/human-loyalists/paladin-moving.png:350"
                 sound=spear.ogg
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/paladin.png"
+            image="units/human-loyalists/paladin.png:50"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -114,33 +106,25 @@
             name=sword
         [/filter_attack]
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-loyalists/paladin.png"
+            image="units/human-loyalists/paladin.png:50"
             sound=horse-canter.wav
         [/frame]
         [if]
             hits=no
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/paladin-attack-sword.png"
+                image="units/human-loyalists/paladin-attack-sword.png:250"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/paladin-attack-sword.png"
+                image="units/human-loyalists/paladin-attack-sword.png:250"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/paladin.png"
+            image="units/human-loyalists/paladin.png:100"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Dragoon.cfg
===================================================================
--- data/core/units/humans/Loyalist_Dragoon.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Dragoon.cfg	(working copy)
@@ -32,10 +32,9 @@
         image="portraits/humans/transparent/cavalier.png"
     [/portrait]
     [movement_anim]
+        start_time=0
         [frame]
-            begin=0
-            end=150
-            image="units/human-loyalists/dragoon-moving.png"
+            image="units/human-loyalists/dragoon-moving.png:150"
         [/frame]
     [/movement_anim]
     {DEFENSE_ANIM "units/human-loyalists/dragoon-defend.png" "units/human-loyalists/dragoon.png" {SOUND_LIST:HORSE_HIT} }
@@ -66,93 +65,37 @@
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-loyalists/dragoon-idle-1.png"
+            image="units/human-loyalists/dragoon-idle-[1~6,2,1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/dragoon-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/dragoon-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/dragoon-idle-4.png"
-        [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/dragoon-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/dragoon-idle-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/dragoon-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/dragoon-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=crossbow
         [/filter_attack]
+        start_time=-1100
         [frame]
-            begin=-1100
-            end=-1000
-            image="units/human-loyalists/dragoon-ranged-1.png"
+            image="units/human-loyalists/dragoon-ranged-[1~5].png:100"
         [/frame]
-        [frame]
-            begin=-1000
-            end=-900
-            image="units/human-loyalists/dragoon-ranged-2.png"
-        [/frame]
-        [frame]
-            begin=-800
-            end=-700
-            image="units/human-loyalists/dragoon-ranged-3.png"
-        [/frame]
-        [frame]
-            begin=-700
-            end=-600
-            image="units/human-loyalists/dragoon-ranged-4.png"
-        [/frame]
-        [frame]
-            begin=-600
-            end=-500
-            image="units/human-loyalists/dragoon-ranged-5.png"
-        [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-500
-                end=-300
-                image="units/human-loyalists/dragoon-ranged-6.png"
+                image="units/human-loyalists/dragoon-ranged-6.png:200"
                 sound=crossbow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-500
-                end=-300
-                image="units/human-loyalists/dragoon-ranged-6.png"
+                image="units/human-loyalists/dragoon-ranged-6.png:200"
                 sound=crossbow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-300
-            end=-0
-            image="units/human-loyalists/dragoon-ranged-7.png"
+            image="units/human-loyalists/dragoon-ranged-7.png:300"
         [/frame]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
@@ -161,44 +104,33 @@
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-225
         [frame]
-            begin=-225
-            end=-200
-            image="units/human-loyalists/dragoon.png"
+            image="units/human-loyalists/dragoon.png:25"
         [/frame]
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-loyalists/dragoon-moving.png"
+            image="units/human-loyalists/dragoon-moving.png:50"
             sound=horse-canter.wav
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/dragoon-attack.png"
+                image="units/human-loyalists/dragoon-attack.png:300"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/dragoon-attack.png"
+                image="units/human-loyalists/dragoon-attack.png:300"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/dragoon-moving.png"
+            image="units/human-loyalists/dragoon-moving.png:50"
         [/frame]
         [frame]
-            begin=200
-            end=225
-            image="units/human-loyalists/dragoon.png"
+            image="units/human-loyalists/dragoon.png:25"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Mage_of_Light.cfg
===================================================================
--- data/core/units/humans/Mage_of_Light.cfg	(revision 56196)
+++ data/core/units/humans/Mage_of_Light.cfg	(working copy)
@@ -43,32 +43,17 @@
         arcane=40
     [/resistance]
     [healing_anim]
+        start_time=-525
         [frame]
-            begin=-525
-            end=-450
-            image="units/human-magi/white-cleric-magic-1.png"
+            image="units/human-magi/white-cleric-magic-[1,2].png:75"
         [/frame]
         [frame]
-            begin=-450
-            end=-375
-            image="units/human-magi/white-cleric-magic-2.png"
-        [/frame]
-        [frame]
-            begin=-375
-            end=150
             image="units/human-magi/white-cleric-magic-3.png"
             halo=halo/holy/halo[6,1~6].png:75
         [/frame]
         [frame]
-            begin=150
-            end=225
-            image="units/human-magi/white-cleric-magic-2.png"
+            image="units/human-magi/white-cleric-magic-[2,1].png:75"
         [/frame]
-        [frame]
-            begin=225
-            end=300
-            image="units/human-magi/white-cleric-magic-1.png"
-        [/frame]
     [/healing_anim]
     [attack]
         name=morning star
@@ -96,28 +81,18 @@
         [/filter_attack]
         {MISSILE_FRAME_LIGHT_BEAM}
 
+        start_time=-300
         [frame]
-            begin=-300
-            end=-225
-            image="units/human-magi/white-cleric-magic-1.png"
+            image="units/human-magi/white-cleric-magic-[1,2].png:75"
         [/frame]
         [frame]
-            begin=-225
-            end=-150
-            image="units/human-magi/white-cleric-magic-2.png"
-        [/frame]
-        [frame]
-            begin=-150
-            end=-75
-            image="units/human-magi/white-cleric-magic-3.png"
+            image="units/human-magi/white-cleric-magic-3.png:75"
             halo=halo/holy/halo6.png
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-75
-                end=0
-                image="units/human-magi/white-cleric-magic-3.png"
+                image="units/human-magi/white-cleric-magic-3.png:75"
                 sound={SOUND_LIST:HOLY}
                 halo=halo/holy/halo1.png
             [/frame]
@@ -125,85 +100,42 @@
         [else]
             hits=no
             [frame]
-                begin=-75
-                end=0
-                image="units/human-magi/white-cleric-magic-3.png"
+                image="units/human-magi/white-cleric-magic-3.png:75"
                 sound={SOUND_LIST:HOLY_MISS}
                 halo=halo/holy/halo1.png
             [/frame]
         [/else]
         [frame]
-            begin=0
-            end=75
             image="units/human-magi/white-cleric-magic-3.png"
-            halo=halo/holy/halo3.png
+            halo=halo/holy/halo[3,5,6].png:[75*2,50]
         [/frame]
         [frame]
-            begin=75
-            end=150
-            image="units/human-magi/white-cleric-magic-3.png"
-            halo=halo/holy/halo5.png
+            image="units/human-magi/white-cleric-magic-[2,1].png:50"
         [/frame]
-
-        [frame]
-            begin=150
-            end=200
-            image="units/human-magi/white-cleric-magic-3.png"
-            halo=halo/holy/halo6.png
-        [/frame]
-        [frame]
-            begin=200
-            end=250
-            image="units/human-magi/white-cleric-magic-2.png"
-        [/frame]
-        [frame]
-            begin=250
-            end=300
-            image="units/human-magi/white-cleric-magic-1.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=morning star
         [/filter_attack]
+
+        start_time=-200
         [if]
             hits=yes
             [frame]
-                begin=-200
-                end=-175
-                image="units/human-magi/white-cleric-magic-3.png"
+                image="units/human-magi/white-cleric-magic-3.png:25"
                 sound=flail.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-200
-                end=-175
-                image="units/human-magi/white-cleric-magic-3.png"
+                image="units/human-magi/white-cleric-magic-3.png:25"
                 sound=flail-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-175
-            end=-100
-            image="units/human-magi/white-cleric-mace-1.png"
+            image="units/human-magi/white-cleric-mace-[1~4].png:[75*3,100]"
         [/frame]
-        [frame]
-            begin=-100
-            end=25
-            image="units/human-magi/white-cleric-mace-2.png"
-        [/frame]
-        [frame]
-            begin=25
-            end=100
-            image="units/human-magi/white-cleric-mace-3.png"
-        [/frame]
-        [frame]
-            begin=100
-            end=200
-            image="units/human-magi/white-cleric-mace-4.png"
-        [/frame]
     [/attack_anim]
     [female]
         name= _ "female^Mage of Light"
@@ -226,38 +158,14 @@
         [/portrait]
         [healing_anim]
             [frame]
-                image="units/human-magi/white-cleric+female-magic-1.png"
+                image="units/human-magi/white-cleric+female-magic-[1,2].png:75"
             [/frame]
             [frame]
-                image="units/human-magi/white-cleric+female-magic-2.png"
-            [/frame]
-            [frame]
                 image="units/human-magi/white-cleric+female-magic-3.png"
             [/frame]
             [frame]
-                image="units/human-magi/white-cleric+female-magic-3.png"
+                image="units/human-magi/white-cleric+female-magic-[2,1].png:75"
             [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-2.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-1.png"
-            [/frame]
         [/healing_anim]
         [attack_anim]
             [filter_attack]
@@ -265,39 +173,27 @@
             [/filter_attack]
             {MISSILE_FRAME_LIGHT_BEAM}
             [frame]
-                image="units/human-magi/white-cleric+female-magic-1.png"
+                image="units/human-magi/white-cleric+female-magic-[1,2].png:75"
             [/frame]
             [frame]
-                image="units/human-magi/white-cleric+female-magic-2.png"
+                image="units/human-magi/white-cleric+female-magic-3.png:75"
             [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-3.png"
-            [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/white-cleric+female-magic-3.png"
+                    image="units/human-magi/white-cleric+female-magic-3.png:75"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/white-cleric+female-magic-3.png"
+                    image="units/human-magi/white-cleric+female-magic-3.png:75"
                 [/frame]
             [/else]
             [frame]
                 image="units/human-magi/white-cleric+female-magic-3.png"
             [/frame]
             [frame]
-                image="units/human-magi/white-cleric+female-magic-3.png"
+                image="units/human-magi/white-cleric+female-magic-[2,1].png:50"
             [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-2.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-magic-1.png"
-            [/frame]
         [/attack_anim]
         [attack_anim]
             [filter_attack]
@@ -306,27 +202,18 @@
             [if]
                 hits=yes
                 [frame]
-                    image="units/human-magi/white-cleric+female-magic-3.png"
+                    image="units/human-magi/white-cleric+female-magic-3.png:25"
                 [/frame]
             [/if]
             [else]
                 hits=no
                 [frame]
-                    image="units/human-magi/white-cleric+female-magic-3.png"
+                    image="units/human-magi/white-cleric+female-magic-3.png:25"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-magi/white-cleric+female-mace-1.png"
+                image="units/human-magi/white-cleric+female-mace-[1~4].png:[75*3,100]"
             [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-mace-2.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-mace-3.png"
-            [/frame]
-            [frame]
-                image="units/human-magi/white-cleric+female-mace-4.png"
-            [/frame]
         [/attack_anim]
     [/female]
 [/unit_type]
Index: data/core/units/humans/Woodsman_Ranger.cfg
===================================================================
--- data/core/units/humans/Woodsman_Ranger.cfg	(revision 56196)
+++ data/core/units/humans/Woodsman_Ranger.cfg	(working copy)
@@ -75,55 +75,36 @@
         [filter_attack]
             name=bow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-400
         [frame]
-            begin=-400
-            end=-325
-            image="units/human-outlaws/ranger-bow.png"
+            image="units/human-outlaws/ranger-bow.png:75"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-325
-                end=-250
-                image="units/human-outlaws/ranger-bow-attack1.png"
+                image="units/human-outlaws/ranger-bow-attack1.png:75"
                 sound=bow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-325
-                end=-250
-                image="units/human-outlaws/ranger-bow-attack1.png"
+                image="units/human-outlaws/ranger-bow-attack1.png:75"
                 sound=bow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-250
-            end=-100
-            image="units/human-outlaws/ranger-bow-attack2.png"
+            image="units/human-outlaws/ranger-bow-attack[2~4].png:[150,75*2]"
         [/frame]
         [frame]
-            begin=-100
-            end=-25
-            image="units/human-outlaws/ranger-bow-attack3.png"
+            image="units/human-outlaws/ranger-bow.png:50"
         [/frame]
-        [frame]
-            begin=-25
-            end=50
-            image="units/human-outlaws/ranger-bow-attack4.png"
-        [/frame]
-        [frame]
-            begin=50
-            end=100
-            image="units/human-outlaws/ranger-bow.png"
-        [/frame]
     [/attack_anim]
 
     [attack_anim]
@@ -133,40 +114,30 @@
         start_time=-275
 
         [frame]
-            duration=50
-            image="units/human-outlaws/ranger-sword-defend-1.png"
+            image="units/human-outlaws/ranger-sword-defend-1.png:50"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-outlaws/ranger-sword-attack1.png"
+            image="units/human-outlaws/ranger-sword-attack1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-outlaws/ranger-sword-attack2.png"
+                image="units/human-outlaws/ranger-sword-attack2.png:100"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=100
-                image="units/human-outlaws/ranger-sword-attack2.png"
+                image="units/human-outlaws/ranger-sword-attack2.png:100"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/human-outlaws/ranger-sword-attack3.png"
+            image="units/human-outlaws/ranger-sword-attack[3,4].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-outlaws/ranger-sword-attack4.png"
+            image="units/human-outlaws/ranger-sword-defend-1.png:50"
         [/frame]
-        [frame]
-            duration=50
-            image="units/human-outlaws/ranger-sword-defend-1.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Spearman.cfg
===================================================================
--- data/core/units/humans/Loyalist_Spearman.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Spearman.cfg	(working copy)
@@ -34,109 +34,29 @@
     [standing_anim]
         start_time=0
         [frame]
-            duration=400
-            image="units/human-loyalists/spearman.png"
+            image="units/human-loyalists/spearman.png:400"
         [/frame]
         [frame]
-            duration=150
-            image="units/human-loyalists/spearman-stand-1.png"
+            image="units/human-loyalists/spearman-stand-[1~6].png:[150*2,300,100*3]"
         [/frame]
-        [frame]
-            duration=150
-            image="units/human-loyalists/spearman-stand-2.png"
-        [/frame]
-        [frame]
-            duration=300
-            image="units/human-loyalists/spearman-stand-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-stand-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-stand-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-stand-6.png"
-        [/frame]
     [/standing_anim]
     [idle_anim]
         {STANDARD_IDLE_FILTER}
         [frame]
-            duration=100
-            image="units/human-loyalists/spearman-idle1.png"
+            image="units/human-loyalists/spearman-idle[1~4,3,2].png:[100*3,400,100*2]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-idle2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-idle3.png"
-        [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/spearman-idle4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-idle3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-idle2.png"
-        [/frame]
     [/idle_anim]
     [idle_anim]
         {STANDARD_IDLE_FILTER}
         [frame]
-            duration=100
-            image="units/human-loyalists/spearman-idle2-1.png"
+            image="units/human-loyalists/spearman-idle2-[1~6].png:[100*4,400,100]"
         [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/spearman-idle2-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-idle2-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-idle2-4.png"
-        [/frame]
-        [frame]
-            duration=400
-            image="units/human-loyalists/spearman-idle2-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/spearman-idle2-6.png"
-        [/frame]
     [/idle_anim]
     [death]
+        start_time=0
         [frame]
-            begin=0
-            end=125
-            image="units/human-loyalists/spearman-death1.png"
+            image="units/human-loyalists/spearman-death[1~4].png:125"
         [/frame]
-        [frame]
-            begin=125
-            end=250
-            image="units/human-loyalists/spearman-death2.png"
-        [/frame]
-        [frame]
-            begin=250
-            end=375
-            image="units/human-loyalists/spearman-death3.png"
-        [/frame]
-        [frame]
-            begin=375
-            end=500
-            image="units/human-loyalists/spearman-death4.png"
-        [/frame]
     [/death]
     {DEFENSE_ANIM "units/human-loyalists/spearman-defend.png" "units/human-loyalists/spearman-defend-2.png" {SOUND_LIST:HUMAN_HIT} }
     [attack]
@@ -164,44 +84,35 @@
         [filter_attack]
             name=javelin
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/spear-n.png"
             image_diagonal="projectiles/spear-ne.png"
         [/missile_frame]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-150
-            image="units/human-loyalists/spearman-death1.png"
+            image="units/human-loyalists/spearman-death1.png:100"
             sound={SOUND_LIST:THROW}
         [/frame]
         [frame]
-            begin=-150
-            end=-100
-            image="units/human-loyalists/spearman-attack-ranged.png"
+            image="units/human-loyalists/spearman-attack-ranged.png:50"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=-50
-                image="units/human-loyalists/spearman-attack-ranged.png"
+                image="units/human-loyalists/spearman-attack-ranged.png:50"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=-50
-                image="units/human-loyalists/spearman-attack-ranged.png"
+                image="units/human-loyalists/spearman-attack-ranged.png:50"
             [/frame]
         [/else]
         [frame]
-            begin=-50
-            end=50
-            image="units/human-loyalists/spearman-attack-ranged2.png"
+            image="units/human-loyalists/spearman-attack-ranged2.png:100"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -212,106 +123,51 @@
         direction=s
         offset="0~0.5,0.5~0"
         [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-1.png"
+            image="units/human-loyalists/spearman-attack-s-[1~4].png:25"
         [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-2.png"
-        [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-3.png"
-        [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-4.png"
-        [/frame]
         [if]
             hits=yes
             [frame]
-                duration=25
-                image="units/human-loyalists/spearman-attack-s-5.png"
+                image="units/human-loyalists/spearman-attack-s-5.png:25"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=25
-                image="units/human-loyalists/spearman-attack-s-5.png"
+                image="units/human-loyalists/spearman-attack-s-5.png:25"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-6.png"
+            image="units/human-loyalists/spearman-attack-s-[6~14].png:25"
         [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-7.png"
-        [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-8.png"
-        [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-9.png"
-        [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-10.png"
-        [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-11.png"
-        [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-12.png"
-        [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-13.png"
-        [/frame]
-        [frame]
-            duration=25
-            image="units/human-loyalists/spearman-attack-s-14.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=spear
         [/filter_attack]
         direction=n
+        start_time=-200
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/spearman.png"
+            image="units/human-loyalists/spearman.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/spearman-attack-n.png"
+                image="units/human-loyalists/spearman-attack-n.png:200"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/spearman-attack-n.png"
+                image="units/human-loyalists/spearman-attack-n.png:200"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=150
-            image="units/human-loyalists/spearman.png"
+            image="units/human-loyalists/spearman.png:50"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -319,33 +175,26 @@
             name=spear
         [/filter_attack]
         direction=ne,nw
+        start_time=-200
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/spearman.png"
+            image="units/human-loyalists/spearman.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/spearman-attack-ne.png"
+                image="units/human-loyalists/spearman-attack-ne.png:200"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-loyalists/spearman-attack-ne.png"
+                image="units/human-loyalists/spearman-attack-ne.png:200"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=150
-            image="units/human-loyalists/spearman.png"
+            image="units/human-loyalists/spearman.png:50"
         [/frame]
     [/attack_anim]
     [attack_anim]
@@ -356,60 +205,24 @@
         direction=se,sw
         offset="0~0.4,0.4~0"
         [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-1.png"
+            image="units/human-loyalists/spearman-attack-se-[1~3].png:32"
         [/frame]
-        [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-2.png"
-        [/frame]
-        [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-3.png"
-        [/frame]
         [if]
             hits=yes
             [frame]
-                duration=32
-                image="units/human-loyalists/spearman-attack-se-4.png"
+                image="units/human-loyalists/spearman-attack-se-4.png:32"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=32
-                image="units/human-loyalists/spearman-attack-se-4.png"
+                image="units/human-loyalists/spearman-attack-se-4.png:32"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-5.png"
+            image="units/human-loyalists/spearman-attack-se-[5~11].png:32"
         [/frame]
-        [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-6.png"
-        [/frame]
-        [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-7.png"
-        [/frame]
-        [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-8.png"
-        [/frame]
-        [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-9.png"
-        [/frame]
-        [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-10.png"
-        [/frame]
-        [frame]
-            duration=32
-            image="units/human-loyalists/spearman-attack-se-11.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Outlaw_Highwayman.cfg
===================================================================
--- data/core/units/humans/Outlaw_Highwayman.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw_Highwayman.cfg	(working copy)
@@ -49,36 +49,7 @@
         start_time=-500
         {SOUND:HIT_AND_MISS mace.wav {SOUND_LIST:MISS} 500}
         [frame]
-            duration=100
-            image="units/human-outlaws/highwayman-melee-1.png"
+            image="units/human-outlaws/highwayman-melee-[1~8].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/highwayman-melee-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/highwayman-melee-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/highwayman-melee-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/highwayman-melee-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/highwayman-melee-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/highwayman-melee-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/highwayman-melee-8.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Royal_Guard.cfg
===================================================================
--- data/core/units/humans/Loyalist_Royal_Guard.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Royal_Guard.cfg	(working copy)
@@ -48,30 +48,23 @@
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-300
         [frame]
-            begin=-300
-            end=-250
-            image="units/human-loyalists/royalguard.png"
+            image="units/human-loyalists/royalguard.png:50"
             offset=0.0~0.1
         [/frame]
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/royalguard-defend-1.png"
+            image="units/human-loyalists/royalguard-defend-1.png:50"
             offset=0.1~0.15
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-loyalists/royalguard-attack-sword1.png"
+            image="units/human-loyalists/royalguard-attack-sword1.png:100"
             offset=0.15~0.35
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=-25
-                image="units/human-loyalists/royalguard-attack-sword2.png"
+                image="units/human-loyalists/royalguard-attack-sword2.png:75"
                 sound={SOUND_LIST:SWORD_SWISH}
                 offset=0.35~0.45
             [/frame]
@@ -79,41 +72,17 @@
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=-25
-                image="units/human-loyalists/royalguard-attack-sword2.png"
+                image="units/human-loyalists/royalguard-attack-sword2.png:75"
                 sound={SOUND_LIST:MISS}
                 offset=0.35~0.45
             [/frame]
         [/else]
         [frame]
-            begin=-25
-            end=75
-            image="units/human-loyalists/royalguard-attack-sword3.png"
-            offset=0.45~0.5
+            image="units/human-loyalists/royalguard-attack-sword[3,4,4,5].png:[100,20,30,75]"
+            offset=0.45~0.5,0.5,0.5~0.4,0.4~0.2
         [/frame]
         [frame]
-            begin=75
-            end=95
-            image="units/human-loyalists/royalguard-attack-sword4.png"
-            offset=0.5
-        [/frame]
-        [frame]
-            begin=95
-            end=125
-            image="units/human-loyalists/royalguard-attack-sword4.png"
-            offset=0.5~0.4
-        [/frame]
-        [frame]
-            begin=125
-            end=200
-            image="units/human-loyalists/royalguard-attack-sword5.png"
-            offset=0.4~0.2
-        [/frame]
-        [frame]
-            begin=150
-            end=225
-            image="units/human-loyalists/royalguard.png"
+            image="units/human-loyalists/royalguard.png:75"
             offset=0.2~0.0
         [/frame]
     [/attack_anim]
Index: data/core/units/humans/Loyalist_Swordsman.cfg
===================================================================
--- data/core/units/humans/Loyalist_Swordsman.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Swordsman.cfg	(working copy)
@@ -46,128 +46,38 @@
     [/attack]
     [idle_anim]
         {STANDARD_IDLE_FILTER}
+        start_time=0
         [frame]
-            begin=0
-            end=100
-            image="units/human-loyalists/swordsman-idle-1.png"
+            image="units/human-loyalists/swordsman-idle-[1~12,4,12,3~1].png:[100*12,400,100*4]"
         [/frame]
-        [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/swordsman-idle-2.png"
-        [/frame]
-        [frame]
-            begin=200
-            end=300
-            image="units/human-loyalists/swordsman-idle-3.png"
-        [/frame]
-        [frame]
-            begin=300
-            end=400
-            image="units/human-loyalists/swordsman-idle-4.png"
-        [/frame]
-        [frame]
-            begin=400
-            end=500
-            image="units/human-loyalists/swordsman-idle-5.png"
-        [/frame]
-        [frame]
-            begin=500
-            end=600
-            image="units/human-loyalists/swordsman-idle-6.png"
-        [/frame]
-        [frame]
-            begin=600
-            end=700
-            image="units/human-loyalists/swordsman-idle-7.png"
-        [/frame]
-        [frame]
-            begin=700
-            end=800
-            image="units/human-loyalists/swordsman-idle-8.png"
-        [/frame]
-        [frame]
-            begin=800
-            end=900
-            image="units/human-loyalists/swordsman-idle-9.png"
-        [/frame]
-        [frame]
-            begin=900
-            end=1000
-            image="units/human-loyalists/swordsman-idle-10.png"
-        [/frame]
-        [frame]
-            begin=1000
-            end=1100
-            image="units/human-loyalists/swordsman-idle-11.png"
-        [/frame]
-        [frame]
-            begin=1100
-            end=1200
-            image="units/human-loyalists/swordsman-idle-12.png"
-        [/frame]
-        [frame]
-            begin=1200
-            end=1600
-            image="units/human-loyalists/swordsman-idle-4.png"
-        [/frame]
-        [frame]
-            begin=1600
-            end=1700
-            image="units/human-loyalists/swordsman-idle-12.png"
-        [/frame]
-        [frame]
-            begin=1700
-            end=1800
-            image="units/human-loyalists/swordsman-idle-3.png"
-        [/frame]
-        [frame]
-            begin=1800
-            end=1900
-            image="units/human-loyalists/swordsman-idle-2.png"
-        [/frame]
-        [frame]
-            begin=1900
-            end=2000
-            image="units/human-loyalists/swordsman-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-175
-            image="units/human-loyalists/swordsman.png"
+            image="units/human-loyalists/swordsman.png:25"
         [/frame]
         [frame]
-            begin=-175
-            end=-75
-            image="units/human-loyalists/swordsman-attack-1.png"
+            image="units/human-loyalists/swordsman-attack-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-75
-                end=75
-                image="units/human-loyalists/swordsman-attack-2.png"
+                image="units/human-loyalists/swordsman-attack-2.png:150"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-75
-                end=75
-                image="units/human-loyalists/swordsman-attack-2.png"
+                image="units/human-loyalists/swordsman-attack-2.png:150"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=75
-            end=200
-            image="units/human-loyalists/swordsman-attack-3.png"
+            image="units/human-loyalists/swordsman-attack-3.png:125"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Horse_Grand_Knight.cfg
===================================================================
--- data/core/units/humans/Horse_Grand_Knight.cfg	(revision 56196)
+++ data/core/units/humans/Horse_Grand_Knight.cfg	(working copy)
@@ -52,10 +52,9 @@
         number=2
     [/attack]
     [movement_anim]
+        start_time=0
         [frame]
-            begin=0
-            end=150
-            image="units/human-loyalists/grand-knight-moving.png"
+            image="units/human-loyalists/grand-knight-moving.png:150"
         [/frame]
     [/movement_anim]
     {DEFENSE_ANIM "units/human-loyalists/grand-knight-defend.png" "units/human-loyalists/grand-knight.png" {SOUND_LIST:HORSE_HIT} }
@@ -63,68 +62,54 @@
         [filter_attack]
             name=lance
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/grand-knight.png"
+            image="units/human-loyalists/grand-knight.png:50"
             sound=horse-canter.wav
         [/frame]
         [if]
             hits=no
             [frame]
-                begin=-200
-                end=150
-                image="units/human-loyalists/grand-knight-moving.png"
+                image="units/human-loyalists/grand-knight-moving.png:350"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-200
-                end=150
-                image="units/human-loyalists/grand-knight-moving.png"
+                image="units/human-loyalists/grand-knight-moving.png:350"
                 sound=spear.ogg
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/grand-knight.png"
+            image="units/human-loyalists/grand-knight.png:50"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-loyalists/grand-knight.png"
+            image="units/human-loyalists/grand-knight.png:50"
             sound=horse-canter.wav
         [/frame]
         [if]
             hits=no
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/grand-knight-attack-sword.png"
+                image="units/human-loyalists/grand-knight-attack-sword.png:250"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                begin=-150
-                end=100
-                image="units/human-loyalists/grand-knight-attack-sword.png"
+                image="units/human-loyalists/grand-knight-attack-sword.png:250"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/grand-knight.png"
+            image="units/human-loyalists/grand-knight.png:100"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Bowman.cfg
===================================================================
--- data/core/units/humans/Loyalist_Bowman.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Bowman.cfg	(working copy)
@@ -54,49 +54,37 @@
         [filter_attack]
             name=bow
         [/filter_attack]
-        start_time=-445
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-445
         [frame]
-            duration=65
-            image="units/human-loyalists/bowman-bow.png"
+            image="units/human-loyalists/bowman-bow.png:65"
         [/frame]
         [frame]
-            duration=75
-            image="units/human-loyalists/bowman-bow-attack-1.png"
+            image="units/human-loyalists/bowman-bow-attack-[1,2].png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/human-loyalists/bowman-bow-attack-2.png"
-        [/frame]
         [if]
             hits=no
             [frame]
-                duration=100
-                image="units/human-loyalists/bowman-bow-attack-3.png"
+                image="units/human-loyalists/bowman-bow-attack-3.png:100"
                 sound=bow-miss.ogg
             [/frame]
         [/if]
         [else]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-loyalists/bowman-bow-attack-3.png"
+                image="units/human-loyalists/bowman-bow-attack-3.png:100"
                 sound=bow.ogg
             [/frame]
         [/else]
         [frame]
             duration=130
-            image="units/human-loyalists/bowman-bow-attack-4.png"
+            image="units/human-loyalists/bowman-bow-attack-[4,1].png:[130,65]"
         [/frame]
-        [frame]
-            duration=65
-            image="units/human-loyalists/bowman-bow-attack-1.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
@@ -105,40 +93,30 @@
         start_time=-275
 
         [frame]
-            duration=50
-            image="units/human-loyalists/bowman-melee-defend-1.png"
+            image="units/human-loyalists/bowman-melee-defend-1.png:50"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-loyalists/bowman-melee-attack-1.png"
+            image="units/human-loyalists/bowman-melee-attack-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                duration=100
-                image="units/human-loyalists/bowman-melee-attack-2.png"
+                image="units/human-loyalists/bowman-melee-attack-2.png:100"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=100
-                image="units/human-loyalists/bowman-melee-attack-2.png"
+                image="units/human-loyalists/bowman-melee-attack-2.png:100"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            duration=100
-            image="units/human-loyalists/bowman-melee-attack-3.png"
+            image="units/human-loyalists/bowman-melee-attack-[3,4].png:100"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-loyalists/bowman-melee-attack-4.png"
+            image="units/human-loyalists/bowman-melee-defend-1.png:50"
         [/frame]
-        [frame]
-            duration=50
-            image="units/human-loyalists/bowman-melee-defend-1.png"
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Mage_Red.cfg
===================================================================
--- data/core/units/humans/Mage_Red.cfg	(revision 56196)
+++ data/core/units/humans/Mage_Red.cfg	(working copy)
@@ -64,68 +64,50 @@
 
         start_time=-575
         [frame]
-            duration=50
-            image="units/human-magi/red-mage.png"
+            image="units/human-magi/red-mage.png:50"
         [/frame]
         [frame]
-            duration=100
-            image="units/human-magi/red-mage-attack-magic-1.png"
+            image="units/human-magi/red-mage-attack-magic-1.png:100"
             sound=fire.wav
         [/frame]
         [frame]
-            duration=150
-            image="units/human-magi/red-mage-attack-magic-2.png"
+            image="units/human-magi/red-mage-attack-magic-[2,1].png:[150,75]"
         [/frame]
         [frame]
-            duration=75
-            image="units/human-magi/red-mage-attack-magic-1.png"
+            image="units/human-magi/red-mage.png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/human-magi/red-mage.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=staff
         [/filter_attack]
+
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-magi/red-mage.png"
+            image="units/human-magi/red-mage.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-magi/red-mage-attack-staff-1.png"
+            image="units/human-magi/red-mage-attack-staff-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/red-mage-attack-staff-2.png"
+                image="units/human-magi/red-mage-attack-staff-2.png:200"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/red-mage-attack-staff-2.png"
+                image="units/human-magi/red-mage-attack-staff-2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=175
-            image="units/human-magi/red-mage-attack-magic-1.png"
+            image="units/human-magi/red-mage-attack-magic-1.png:75"
         [/frame]
         [frame]
-            begin=175
-            end=250
-            image="units/human-magi/red-mage.png"
+            image="units/human-magi/red-mage.png:75"
         [/frame]
     [/attack_anim]
     [female]
@@ -153,46 +135,43 @@
             [/filter_attack]
             {MISSILE_FRAME_FIREBALL}
             [frame]
-                image="units/human-magi/red-mage+female.png"
+                image="units/human-magi/red-mage+female.png:50"
             [/frame]
             [frame]
-                image="units/human-magi/red-mage+female-attack-magic-1.png"
+                image="units/human-magi/red-mage+female-attack-magic-1.png:100"
             [/frame]
             [frame]
-                image="units/human-magi/red-mage+female-attack-magic-2.png"
+                image="units/human-magi/red-mage+female-attack-magic-[2,1].png:[150,75]"
             [/frame]
             [frame]
-                image="units/human-magi/red-mage+female-attack-magic-1.png"
+                image="units/human-magi/red-mage+female.png:75"
             [/frame]
-            [frame]
-                image="units/human-magi/red-mage+female.png"
-            [/frame]
         [/attack_anim]
         [attack_anim]
             [filter_attack]
                 name=staff
             [/filter_attack]
             [frame]
-                image="units/human-magi/red-mage+female.png"
+                image="units/human-magi/red-mage+female.png:50"
             [/frame]
             [frame]
-                image="units/human-magi/red-mage+female-attack-staff-1.png"
+                image="units/human-magi/red-mage+female-attack-staff-1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-magi/red-mage+female-attack-staff-2.png"
+                    image="units/human-magi/red-mage+female-attack-staff-2.png:200"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-magi/red-mage+female-attack-staff-2.png"
+                    image="units/human-magi/red-mage+female-attack-staff-2.png:200"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-magi/red-mage+female-attack-magic-1.png"
+                image="units/human-magi/red-mage+female-attack-magic-1.png:75"
             [/frame]
             [frame]
-                image="units/human-magi/red-mage+female.png"
+                image="units/human-magi/red-mage+female.png:75"
             [/frame]
         [/attack_anim]
     [/female]
Index: data/core/units/humans/Loyalist_Cavalier.cfg
===================================================================
--- data/core/units/humans/Loyalist_Cavalier.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Cavalier.cfg	(working copy)
@@ -33,10 +33,9 @@
         image="portraits/humans/transparent/cavalier.png"
     [/portrait]
     [movement_anim]
+        start_time=0
         [frame]
-            begin=0
-            end=150
-            image="units/human-loyalists/cavalier-moving.png"
+            image="units/human-loyalists/cavalier-moving.png:150"
         [/frame]
     [/movement_anim]
     {DEFENSE_ANIM "units/human-loyalists/cavalier-defend.png" "units/human-loyalists/cavalier.png" {SOUND_LIST:HORSE_HIT} }
@@ -67,57 +66,30 @@
         [filter_attack]
             name=crossbow
         [/filter_attack]
+        start_time=-1100
         [frame]
-            begin=-1100
-            end=-1000
-            image="units/human-loyalists/cavalier-ranged-1.png"
+            image="units/human-loyalists/cavalier-ranged-[1~5].png:100"
         [/frame]
-        [frame]
-            begin=-1000
-            end=-900
-            image="units/human-loyalists/cavalier-ranged-2.png"
-        [/frame]
-        [frame]
-            begin=-800
-            end=-700
-            image="units/human-loyalists/cavalier-ranged-3.png"
-        [/frame]
-        [frame]
-            begin=-700
-            end=-600
-            image="units/human-loyalists/cavalier-ranged-4.png"
-        [/frame]
-        [frame]
-            begin=-600
-            end=-500
-            image="units/human-loyalists/cavalier-ranged-5.png"
-        [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-500
-                end=-300
-                image="units/human-loyalists/cavalier-ranged-6.png"
+                image="units/human-loyalists/cavalier-ranged-6.png:200"
                 sound=crossbow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-500
-                end=-300
-                image="units/human-loyalists/cavalier-ranged-6.png"
+                image="units/human-loyalists/cavalier-ranged-6.png:200"
                 sound=crossbow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-300
-            end=-0
-            image="units/human-loyalists/cavalier-ranged-7.png"
+            image="units/human-loyalists/cavalier-ranged-7.png:300"
         [/frame]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
@@ -126,44 +98,33 @@
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-225
         [frame]
-            begin=-225
-            end=-200
-            image="units/human-loyalists/cavalier.png"
+            image="units/human-loyalists/cavalier.png:25"
         [/frame]
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-loyalists/cavalier-moving.png"
+            image="units/human-loyalists/cavalier-moving.png:50"
             sound=horse-canter.wav
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/cavalier-attack.png"
+                image="units/human-loyalists/cavalier-attack.png:300"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/cavalier-attack.png"
+                image="units/human-loyalists/cavalier-attack.png:300"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/cavalier-moving.png"
+            image="units/human-loyalists/cavalier-moving.png:50"
         [/frame]
         [frame]
-            begin=200
-            end=225
-            image="units/human-loyalists/cavalier.png"
+            image="units/human-loyalists/cavalier.png:25"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Outlaw_Rogue.cfg
===================================================================
--- data/core/units/humans/Outlaw_Rogue.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw_Rogue.cfg	(working copy)
@@ -59,95 +59,62 @@
         [filter_attack]
             name=knife
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/dagger-n.png"
             image_diagonal="projectiles/dagger-ne.png"
         [/missile_frame]
+        start_time=-200
         [if]
             hits=yes
             [frame]
-                begin=-200
-                end=-100
-                image="units/human-outlaws/rogue-ranged.png"
+                image="units/human-outlaws/rogue-ranged.png:100"
                 sound=throwing-knife.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-200
-                end=-100
-                image="units/human-outlaws/rogue-ranged.png"
+                image="units/human-outlaws/rogue-ranged.png:100"
                 sound=throwing-knife-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-100
-            end=50
-            image="units/human-outlaws/rogue-ranged.png"
+            image="units/human-outlaws/rogue-ranged.png:150"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=dagger
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-outlaws/rogue.png"
+            image="units/human-outlaws/rogue.png:50"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=100
-                image="units/human-outlaws/rogue-attack.png"
+                image="units/human-outlaws/rogue-attack.png:250"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=100
-                image="units/human-outlaws/rogue-attack.png"
+                image="units/human-outlaws/rogue-attack.png:250"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=200
-            image="units/human-outlaws/rogue.png"
+            image="units/human-outlaws/rogue.png:100"
         [/frame]
     [/attack_anim]
     [death]
         start_time=0
         [frame]
-            duration=100
-            image="units/human-outlaws/rogue-die-1.png"
+            image="units/human-outlaws/rogue-die-[1~6].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/rogue-die-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/rogue-die-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/rogue-die-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/rogue-die-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/rogue-die-6.png"
-        [/frame]
     [/death]
     [female]
         name= _ "female^Rogue"
@@ -174,16 +141,16 @@
             [/filter_attack]
             [if]
                 [frame]
-                    image="units/human-outlaws/rogue+female-ranged.png"
+                    image="units/human-outlaws/rogue+female-ranged.png:100"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-outlaws/rogue+female-ranged.png"
+                    image="units/human-outlaws/rogue+female-ranged.png:100"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/rogue+female-ranged.png"
+                image="units/human-outlaws/rogue+female-ranged.png:150"
             [/frame]
         [/attack_anim]
         [attack_anim]
@@ -191,41 +158,26 @@
                 name=dagger
             [/filter_attack]
             [frame]
-                image="units/human-outlaws/rogue+female.png"
+                image="units/human-outlaws/rogue+female.png:50"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-outlaws/rogue+female-attack.png"
+                    image="units/human-outlaws/rogue+female-attack.png:250"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-outlaws/rogue+female-attack.png"
+                    image="units/human-outlaws/rogue+female-attack:250.png"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/rogue+female.png"
+                image="units/human-outlaws/rogue+female.png:100"
             [/frame]
         [/attack_anim]
         [death]
             [frame]
-                image="units/human-outlaws/rogue+female-die-1.png"
+                image="units/human-outlaws/rogue+female-die-[1~6].png:100"
             [/frame]
-            [frame]
-                image="units/human-outlaws/rogue+female-die-2.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/rogue+female-die-3.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/rogue+female-die-4.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/rogue+female-die-5.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/rogue+female-die-6.png"
-            [/frame]
         [/death]
     [/female]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Cavalryman.cfg
===================================================================
--- data/core/units/humans/Loyalist_Cavalryman.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Cavalryman.cfg	(working copy)
@@ -48,16 +48,10 @@
         cold=80
     [/resistance]
     [death]
+        start_time=0
         [frame]
-            begin=0
-            end=200
-            image="units/human-loyalists/cavalryman-die-1.png"
+            image="units/human-loyalists/cavalryman-die-[1,2].png:200"
         [/frame]
-        [frame]
-            begin=200
-            end=400
-            image="units/human-loyalists/cavalryman-die-2.png"
-        [/frame]
     [/death]
     [attack]
         name=sword
@@ -72,44 +66,33 @@
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-225
         [frame]
-            begin=-225
-            end=-200
-            image="units/human-loyalists/cavalryman.png"
+            image="units/human-loyalists/cavalryman.png:25"
         [/frame]
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-loyalists/cavalryman-moving.png"
+            image="units/human-loyalists/cavalryman-moving.png:50"
             sound=horse-canter.wav
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/cavalryman-attack.png"
+                image="units/human-loyalists/cavalryman-attack.png:300"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=150
-                image="units/human-loyalists/cavalryman-attack.png"
+                image="units/human-loyalists/cavalryman-attack.png:300"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/cavalryman-moving.png"
+            image="units/human-loyalists/cavalryman-moving.png:50"
         [/frame]
         [frame]
-            begin=200
-            end=225
-            image="units/human-loyalists/cavalryman.png"
+            image="units/human-loyalists/cavalryman.png:25"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Outlaw_Fugitive.cfg
===================================================================
--- data/core/units/humans/Outlaw_Fugitive.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw_Fugitive.cfg	(working copy)
@@ -59,13 +59,12 @@
             name=sling
         [/filter_attack]
         offset=0.0
+        start_time=-400
         [if]
             hits=yes
             {MISSILE_FRAME_STONE_HIT 5 -6}
             [frame]
-                begin=-400
-                end=-150
-                image="units/human-outlaws/fugitive-ranged-1.png"
+                image="units/human-outlaws/fugitive-ranged-1.png:250"
                 sound=sling.ogg
             [/frame]
         [/if]
@@ -73,49 +72,38 @@
             hits=no
             {MISSILE_FRAME_STONE_MISS 5 -6}
             [frame]
-                begin=-400
-                end=-150
-                image="units/human-outlaws/fugitive-ranged-1.png"
+                image="units/human-outlaws/fugitive-ranged-1.png:250"
                 sound=sling-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-150
-            end=50
-            image="units/human-outlaws/fugitive-ranged-2.png"
+            image="units/human-outlaws/fugitive-ranged-2.png:200"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=mace-spiked
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-outlaws/fugitive-melee-1.png"
+            image="units/human-outlaws/fugitive-melee-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=50
-                image="units/human-outlaws/fugitive-melee-2.png"
+                image="units/human-outlaws/fugitive-melee-2.png:150"
                 sound=mace.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=50
-                image="units/human-outlaws/fugitive-melee-2.png"
+                image="units/human-outlaws/fugitive-melee-2.png:150"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=150
-            image="units/human-outlaws/fugitive-melee-3.png"
+            image="units/human-outlaws/fugitive-melee-3.png:100"
         [/frame]
     [/attack_anim]
     [female]
@@ -144,17 +132,17 @@
             [if]
                 {MISSILE_FRAME_STONE_HIT 5 -6}
                 [frame]
-                    image="units/human-outlaws/fugitive+female-ranged-1.png"
+                    image="units/human-outlaws/fugitive+female-ranged-1.png:250"
                 [/frame]
             [/if]
             [else]
                 {MISSILE_FRAME_STONE_MISS 5 -6}
                 [frame]
-                    image="units/human-outlaws/fugitive+female-ranged-1.png"
+                    image="units/human-outlaws/fugitive+female-ranged-1.png:250"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/fugitive+female-ranged-2.png"
+                image="units/human-outlaws/fugitive+female-ranged-2.png:200"
             [/frame]
         [/attack_anim]
         [attack_anim]
@@ -162,20 +150,20 @@
                 name=mace-spiked
             [/filter_attack]
             [frame]
-                image="units/human-outlaws/fugitive+female-melee-1.png"
+                image="units/human-outlaws/fugitive+female-melee-1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-outlaws/fugitive+female-melee-2.png"
+                    image="units/human-outlaws/fugitive+female-melee-2.png:150"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-outlaws/fugitive+female-melee-2.png"
+                    image="units/human-outlaws/fugitive+female-melee-2.png:150"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/fugitive+female-melee-3.png"
+                image="units/human-outlaws/fugitive+female-melee-3.png:100"
             [/frame]
         [/attack_anim]
     [/female]
Index: data/core/units/humans/Loyalist_Fencer.cfg
===================================================================
--- data/core/units/humans/Loyalist_Fencer.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Fencer.cfg	(working copy)
@@ -41,134 +41,57 @@
     [standing_anim]
         start_time=0
         [frame]
-            duration=80
-            image="units/human-loyalists/fencer-stand-1.png"
+            image="units/human-loyalists/fencer-stand-[1,8].png:80"
         [/frame]
-        [frame]
-            duration=80
-            image="units/human-loyalists/fencer-stand-2.png"
-        [/frame]
-        [frame]
-            duration=80
-            image="units/human-loyalists/fencer-stand-3.png"
-        [/frame]
-        [frame]
-            duration=80
-            image="units/human-loyalists/fencer-stand-4.png"
-        [/frame]
-        [frame]
-            duration=80
-            image="units/human-loyalists/fencer-stand-5.png"
-        [/frame]
-        [frame]
-            duration=80
-            image="units/human-loyalists/fencer-stand-6.png"
-        [/frame]
-        [frame]
-            duration=80
-            image="units/human-loyalists/fencer-stand-7.png"
-        [/frame]
-        [frame]
-            duration=80
-            image="units/human-loyalists/fencer-stand-8.png"
-        [/frame]
     [/standing_anim]
     [defend]
         hits=miss
+        start_time=-126
         [frame]
-            begin=-126
-            end=-125
-            image="units/human-loyalists/fencer.png"
+            image="units/human-loyalists/fencer.png:1"
         [/frame]
         [frame]
-            begin=-125
-            end=-42
-            image="units/human-loyalists/fencer-defend-1-1.png"
+            image="units/human-loyalists/fencer-defend-1-[1,2,1].png:[83,83,84]"
         [/frame]
         [frame]
-            begin=-42
-            end=41
-            image="units/human-loyalists/fencer-defend-1-2.png"
+            image="units/human-loyalists/fencer-defend-1-1.png:1"
         [/frame]
-        [frame]
-            begin=41
-            end=125
-            image="units/human-loyalists/fencer-defend-1-1.png"
-        [/frame]
-        [frame]
-            begin=125
-            end=126
-            image="units/human-loyalists/fencer-defend-1-1.png"
-        [/frame]
     [/defend]
     [defend]
         hits=hit
+        start_time=-126
         [frame]
-            begin=-126
-            end=-125
-            image="units/human-loyalists/fencer.png"
+            image="units/human-loyalists/fencer.png:1"
         [/frame]
         [frame]
-            begin=-125
-            end=-25
-            image="units/human-loyalists/fencer-defend.png"
+            image="units/human-loyalists/fencer-defend.png:100"
         [/frame]
         [frame]
-            begin=-25
-            end=125
-            image="units/human-loyalists/fencer-defend.png"
+            image="units/human-loyalists/fencer-defend.png:150"
             sound={SOUND_LIST:HUMAN_HIT}
         [/frame]
         [frame]
-            begin=125
-            end=126
-            image="units/human-loyalists/fencer.png"
+            image="units/human-loyalists/fencer.png:1"
         [/frame]
     [/defend]
     [defend]
         hits=kill
+        start_time=-126
         [frame]
-            begin=-126
-            end=-125
-            image="units/human-loyalists/fencer.png"
+            image="units/human-loyalists/fencer.png:1"
         [/frame]
         [frame]
-            begin=-125
-            end=125
-            image="units/human-loyalists/fencer-defend.png"
+            image="units/human-loyalists/fencer-defend.png:250"
         [/frame]
         [frame]
-            begin=125
-            end=126
-            image="units/human-loyalists/fencer.png"
+            image="units/human-loyalists/fencer.png:1"
         [/frame]
     [/defend]
     [death]
+        start_time=0
         [frame]
-            begin=0
-            end=100
-            image="units/human-loyalists/fencer-die1.png"
+            image="units/human-loyalists/fencer-die[1~5].png:100"
         [/frame]
-        [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/fencer-die2.png"
-        [/frame]
-        [frame]
-            begin=200
-            end=300
-            image="units/human-loyalists/fencer-die3.png"
-        [/frame]
-        [frame]
-            begin=300
-            end=400
-            image="units/human-loyalists/fencer-die4.png"
-        [/frame]
-        [frame]
-            begin=400
-            end=500
-            image="units/human-loyalists/fencer-die5.png"
-        [/frame]
     [/death]
     [attack]
         name=saber
@@ -183,80 +106,22 @@
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-1.png"
+            image="units/human-loyalists/fencer-idle-[1~7,6~1].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-loyalists/fencer-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=saber
         [/filter_attack]
+        start_time=-300
         [frame]
-            begin=-300
-            end=-250
-            image="units/human-loyalists/fencer-attack-1.png"
-            offset=0.0~-0.07
+            image="units/human-loyalists/fencer-attack-[1,2].png:50"
+            offset=0.0~-0.07,-0.07~-0.15
         [/frame]
-        [frame]
-            begin=-250
-            end=-200
-            image="units/human-loyalists/fencer-attack-2.png"
-            offset=-0.07~-0.15
-        [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-200
-                end=-150
-                image="units/human-loyalists/fencer-attack-3.png"
+                image="units/human-loyalists/fencer-attack-3.png:50"
                 sound={SOUND_LIST:SWORD_SWISH}
                 offset=-0.15~-0.25
             [/frame]
@@ -264,54 +129,14 @@
         [else]
             hits=no
             [frame]
-                begin=-200
-                end=-150
-                image="units/human-loyalists/fencer-attack-3.png"
+                image="units/human-loyalists/fencer-attack-3.png:50"
                 sound={SOUND_LIST:MISS}
                 offset=-0.15~-0.25
             [/frame]
         [/else]
         [frame]
-            begin=-150
-            end=-100
-            image="units/human-loyalists/fencer-attack-4.png"
-            offset=-0.25~-0.2
+            image="units/human-loyalists/fencer-attack-4.png:50"
+            offset=-0.25~-0.2,-0.2~-0.1,-0.1~0.25,0.25~0.55,0.55~0.25,0.25~0.1,0.1~0.0
         [/frame]
-        [frame]
-            begin=-100
-            end=-50
-            image="units/human-loyalists/fencer-attack-5.png"
-            offset=-0.2~-0.1
-        [/frame]
-        [frame]
-            begin=-50
-            end=0
-            image="units/human-loyalists/fencer-attack-6.png"
-            offset=-0.1~0.25
-        [/frame]
-        [frame]
-            begin=0
-            end=50
-            image="units/human-loyalists/fencer-attack-7.png"
-            offset=0.25~0.55
-        [/frame]
-        [frame]
-            begin=50
-            end=100
-            image="units/human-loyalists/fencer-attack-8.png"
-            offset=0.55~0.25
-        [/frame]
-        [frame]
-            begin=100
-            end=150
-            image="units/human-loyalists/fencer-attack-9.png"
-            offset=0.25~0.1
-        [/frame]
-        [frame]
-            begin=150
-            end=200
-            image="units/human-loyalists/fencer-attack-1.png"
-            offset=0.1~0.0
-        [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Mage_Elder.cfg
===================================================================
--- data/core/units/humans/Mage_Elder.cfg	(revision 56196)
+++ data/core/units/humans/Mage_Elder.cfg	(working copy)
@@ -47,43 +47,32 @@
         [filter_attack]
             name=staff
         [/filter_attack]
+        start_time=-225
         [frame]
-            begin=-225
-            end=-200
-            image="units/human-magi/elder-mage-ranged1.png"
+            image="units/human-magi/elder-mage-ranged1.png:25"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-magi/elder-mage-melee1.png"
+            image="units/human-magi/elder-mage-melee1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/elder-mage-melee2.png"
+                image="units/human-magi/elder-mage-melee2.png:200"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-magi/elder-mage-melee2.png"
+                image="units/human-magi/elder-mage-melee2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=150
-            image="units/human-magi/elder-mage-ranged1.png"
+            image="units/human-magi/elder-mage-ranged1.png:50"
         [/frame]
         [frame]
-            begin=150
-            end=200
-            image="units/human-magi/elder-mage.png"
+            image="units/human-magi/elder-mage.png:50"
         [/frame]
     [/attack_anim]
 
@@ -95,44 +84,24 @@
 
         {LIGHTNING_BOLT {DIRECTION_NUMBER} }
 
+        start_time=-300
         [if]
             hits=yes
             [frame]
-                begin=-300
-                end=-200
-                image="units/human-magi/elder-mage-ranged1.png"
+                image="units/human-magi/elder-mage-ranged1.png:100"
                 sound=lightning.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-300
-                end=-200
-                image="units/human-magi/elder-mage-ranged1.png"
+                image="units/human-magi/elder-mage-ranged1.png:100"
                 sound=lightning-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-magi/elder-mage-ranged2.png"
+            image="units/human-magi/elder-mage-ranged[2,3~1].png:[100,200,100,50]"
         [/frame]
-        [frame]
-            begin=-100
-            end=100
-            image="units/human-magi/elder-mage-ranged3.png"
-        [/frame]
-        [frame]
-            begin=100
-            end=200
-            image="units/human-magi/elder-mage-ranged2.png"
-        [/frame]
-        [frame]
-            begin=200
-            end=250
-            image="units/human-magi/elder-mage-ranged1.png"
-        [/frame]
     [/attack_anim]
 #enddef
 
Index: data/core/units/humans/Woodsman_Trapper.cfg
===================================================================
--- data/core/units/humans/Woodsman_Trapper.cfg	(revision 56196)
+++ data/core/units/humans/Woodsman_Trapper.cfg	(working copy)
@@ -44,37 +44,8 @@
     [death]
         start_time=0
         [frame]
-            duration=100
-            image="units/human-outlaws/trapper-die-1.png"
+            image="units/human-outlaws/trapper-die-[1~8].png:100"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/trapper-die-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/trapper-die-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/trapper-die-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/trapper-die-5.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/trapper-die-6.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/trapper-die-7.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/trapper-die-8.png"
-        [/frame]
     [/death]
     [attack]
         name=dagger
@@ -97,110 +68,83 @@
         [filter_attack]
             name=bow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
         [if]
             hits=yes
             [frame]
-                begin=-400
-                end=-250
-                image="units/human-outlaws/trapper-attack1.png"
+                image="units/human-outlaws/trapper-attack1.png:150"
                 sound=bow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-400
-                end=-250
-                image="units/human-outlaws/trapper-attack1.png"
+                image="units/human-outlaws/trapper-attack1.png:150"
                 sound=bow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-250
-            end=-100
-            image="units/human-outlaws/trapper-attack2.png"
+            image="units/human-outlaws/trapper-attack[2,3].png:[150,100]"
         [/frame]
         [frame]
-            begin=-100
-            end=0
-            image="units/human-outlaws/trapper-attack3.png"
+            image="units/human-outlaws/trapper.png:100"
         [/frame]
-        [frame]
-            begin=0
-            end=100
-            image="units/human-outlaws/trapper.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=dagger
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-outlaws/trapper-dagger.png"
+            image="units/human-outlaws/trapper-dagger.png:50"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=100
-                image="units/human-outlaws/trapper-attack-melee-2.png"
+                image="units/human-outlaws/trapper-attack-melee-2.png:250"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=100
-                image="units/human-outlaws/trapper-attack-melee-2.png"
+                image="units/human-outlaws/trapper-attack-melee-2.png:250"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=150
-            image="units/human-outlaws/trapper-dagger.png"
+            image="units/human-outlaws/trapper-dagger.png:50"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=dagger
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-150
-            image="units/human-outlaws/trapper-dagger.png"
+            image="units/human-outlaws/trapper-dagger.png:50"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-150
-                end=100
-                image="units/human-outlaws/trapper-attack-melee.png"
+                image="units/human-outlaws/trapper-attack-melee.png:250"
                 sound=dagger-swish.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-150
-                end=100
-                image="units/human-outlaws/trapper-attack-melee.png"
+                image="units/human-outlaws/trapper-attack-melee.png:250"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=150
-            image="units/human-outlaws/trapper-dagger.png"
+            image="units/human-outlaws/trapper-dagger.png:50"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/humans/Outlaw_Footpad.cfg
===================================================================
--- data/core/units/humans/Outlaw_Footpad.cfg	(revision 56196)
+++ data/core/units/humans/Outlaw_Footpad.cfg	(working copy)
@@ -55,13 +55,12 @@
             name=sling
         [/filter_attack]
         offset=0.0
+        start_time=-400
         [if]
             hits=yes
             {MISSILE_FRAME_STONE_HIT 5 -6}
             [frame]
-                begin=-400
-                end=-150
-                image="units/human-outlaws/footpad-attack1.png"
+                image="units/human-outlaws/footpad-attack1.png:250"
                 sound=sling.ogg
             [/frame]
         [/if]
@@ -69,108 +68,50 @@
             hits=no
             {MISSILE_FRAME_STONE_MISS 5 -6}
             [frame]
-                begin=-400
-                end=-150
-                image="units/human-outlaws/footpad-attack1.png"
+                image="units/human-outlaws/footpad-attack1.png:250"
                 sound=sling-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-150
-            end=50
-            image="units/human-outlaws/footpad-attack2.png"
+            image="units/human-outlaws/footpad-attack2.png:200"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=club
         [/filter_attack]
+        start_time=-250
         [frame]
-            begin=-250
-            end=-200
-            image="units/human-outlaws/footpad.png"
+            image="units/human-outlaws/footpad.png:50"
         [/frame]
         [frame]
-            begin=-200
-            end=-100
-            image="units/human-outlaws/footpad-melee-1.png"
+            image="units/human-outlaws/footpad-melee-1.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=100
-                image="units/human-outlaws/footpad-melee-2.png"
+                image="units/human-outlaws/footpad-melee-2.png:200"
                 sound=staff.wav
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=100
-                image="units/human-outlaws/footpad-melee-2.png"
+                image="units/human-outlaws/footpad-melee-2.png:200"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=100
-            end=200
-            image="units/human-outlaws/footpad-melee-3.png"
+            image="units/human-outlaws/footpad-melee-[3,4].png:100"
         [/frame]
-        [frame]
-            begin=200
-            end=300
-            image="units/human-outlaws/footpad-melee-4.png"
-        [/frame]
     [/attack_anim]
     [idle_anim]
         {STANDARD_IDLE_FILTER}
         start_time=0
         [frame]
             duration=100
-            image="units/human-outlaws/footpad-idle-1.png"
+            image="units/human-outlaws/footpad-idle-[1~4,3,2,3,4~1].png:[100*3,200,100*3,200,100*3]"
         [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/footpad-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/footpad-idle-3.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-outlaws/footpad-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/footpad-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/footpad-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/footpad-idle-3.png"
-        [/frame]
-        [frame]
-            duration=200
-            image="units/human-outlaws/footpad-idle-4.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/footpad-idle-3.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/footpad-idle-2.png"
-        [/frame]
-        [frame]
-            duration=100
-            image="units/human-outlaws/footpad-idle-1.png"
-        [/frame]
     [/idle_anim]
     [female]
         name= _ "female^Footpad"
@@ -198,17 +139,17 @@
             [if]
                 {MISSILE_FRAME_STONE_HIT 5 -6}
                 [frame]
-                    image="units/human-outlaws/footpad+female-attack1.png"
+                    image="units/human-outlaws/footpad+female-attack1.png:250"
                 [/frame]
             [/if]
             [else]
                 {MISSILE_FRAME_STONE_MISS 5 -6}
                 [frame]
-                    image="units/human-outlaws/footpad+female-attack1.png"
+                    image="units/human-outlaws/footpad+female-attack1.png:250"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/footpad+female-attack2.png"
+                image="units/human-outlaws/footpad+female-attack2.png:200"
             [/frame]
         [/attack_anim]
         [attack_anim]
@@ -216,62 +157,29 @@
                 name=club
             [/filter_attack]
             [frame]
-                image="units/human-outlaws/footpad+female.png"
+                image="units/human-outlaws/footpad+female.png:50"
             [/frame]
             [frame]
-                image="units/human-outlaws/footpad+female-melee-1.png"
+                image="units/human-outlaws/footpad+female-melee-1.png:100"
             [/frame]
             [if]
                 [frame]
-                    image="units/human-outlaws/footpad+female-melee-2.png"
+                    image="units/human-outlaws/footpad+female-melee-2.png:200"
                 [/frame]
             [/if]
             [else]
                 [frame]
-                    image="units/human-outlaws/footpad+female-melee-2.png"
+                    image="units/human-outlaws/footpad+female-melee-2.png:200"
                 [/frame]
             [/else]
             [frame]
-                image="units/human-outlaws/footpad+female-melee-3.png"
+                image="units/human-outlaws/footpad+female-melee-[3,4].png:100"
             [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-melee-4.png"
-            [/frame]
         [/attack_anim]
         [idle_anim]
             [frame]
-                image="units/human-outlaws/footpad+female-idle-1.png"
+                image="units/human-outlaws/footpad+female-idle-[1~4,3,2,3,4~1].png:[100*3,200,100*3,200,100*3]"
             [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-2.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-3.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-4.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-3.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-2.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-3.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-4.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-3.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-2.png"
-            [/frame]
-            [frame]
-                image="units/human-outlaws/footpad+female-idle-1.png"
-            [/frame]
         [/idle_anim]
     [/female]
 [/unit_type]
Index: data/core/units/humans/Loyalist_Sergeant.cfg
===================================================================
--- data/core/units/humans/Loyalist_Sergeant.cfg	(revision 56196)
+++ data/core/units/humans/Loyalist_Sergeant.cfg	(working copy)
@@ -57,152 +57,73 @@
     [/attack]
     [idle_anim]
         {STANDARD_IDLE_FILTER}
+        start_time=0
         [frame]
-            begin=0
-            end=100
-            image="units/human-loyalists/sergeant-idle-1.png"
+            image="units/human-loyalists/sergeant-idle-[1~11,2,1].png:[100*4,200,100*3,300,100*4]"
         [/frame]
-        [frame]
-            begin=100
-            end=200
-            image="units/human-loyalists/sergeant-idle-2.png"
-        [/frame]
-        [frame]
-            begin=200
-            end=300
-            image="units/human-loyalists/sergeant-idle-3.png"
-        [/frame]
-        [frame]
-            begin=300
-            end=400
-            image="units/human-loyalists/sergeant-idle-4.png"
-        [/frame]
-        [frame]
-            begin=400
-            end=600
-            image="units/human-loyalists/sergeant-idle-5.png"
-        [/frame]
-        [frame]
-            begin=600
-            end=700
-            image="units/human-loyalists/sergeant-idle-6.png"
-        [/frame]
-        [frame]
-            begin=700
-            end=800
-            image="units/human-loyalists/sergeant-idle-7.png"
-        [/frame]
-        [frame]
-            begin=800
-            end=900
-            image="units/human-loyalists/sergeant-idle-8.png"
-        [/frame]
-        [frame]
-            begin=900
-            end=1200
-            image="units/human-loyalists/sergeant-idle-9.png"
-        [/frame]
-        [frame]
-            begin=1200
-            end=1300
-            image="units/human-loyalists/sergeant-idle-10.png"
-        [/frame]
-        [frame]
-            begin=1300
-            end=1400
-            image="units/human-loyalists/sergeant-idle-11.png"
-        [/frame]
-        [frame]
-            begin=1400
-            end=1500
-            image="units/human-loyalists/sergeant-idle-2.png"
-        [/frame]
-        [frame]
-            begin=1500
-            end=1600
-            image="units/human-loyalists/sergeant-idle-1.png"
-        [/frame]
     [/idle_anim]
     [attack_anim]
         [filter_attack]
             name=crossbow
         [/filter_attack]
+        missile_start_time=-150
         [missile_frame]
-            begin=-150
-            end=0
+            duration=150
             image="projectiles/missile-n.png"
             image_diagonal="projectiles/missile-ne.png"
         [/missile_frame]
+        start_time=-400
         [frame]
-            begin=-400
-            end=-300
-            image="units/human-loyalists/sergeant-crossbow.png"
+            image="units/human-loyalists/sergeant-crossbow.png:100"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-300
-                end=-150
-                image="units/human-loyalists/sergeant-crossbow-attack1.png"
+                image="units/human-loyalists/sergeant-crossbow-attack1.png:150"
                 sound=crossbow.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-300
-                end=-150
-                image="units/human-loyalists/sergeant-crossbow-attack1.png"
+                image="units/human-loyalists/sergeant-crossbow-attack1.png:150"
                 sound=crossbow-miss.ogg
             [/frame]
         [/else]
         [frame]
-            begin=-150
-            end=0
-            image="units/human-loyalists/sergeant-crossbow-attack2.png"
+            image="units/human-loyalists/sergeant-crossbow-attack2.png:150"
         [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
             name=sword
         [/filter_attack]
+        start_time=-200
         [frame]
-            begin=-200
-            end=-175
-            image="units/human-loyalists/sergeant.png"
+            image="units/human-loyalists/sergeant.png:25"
         [/frame]
         [frame]
-            begin=-175
-            end=-100
-            image="units/human-loyalists/sergeant-attack-sword-1.png"
+            image="units/human-loyalists/sergeant-attack-sword-1.png:75"
         [/frame]
         [if]
             hits=yes
             [frame]
-                begin=-100
-                end=50
-                image="units/human-loyalists/sergeant-attack-sword-2.png"
+                image="units/human-loyalists/sergeant-attack-sword-2.png:150"
                 sound={SOUND_LIST:SWORD_SWISH}
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                begin=-100
-                end=50
-                image="units/human-loyalists/sergeant-attack-sword-2.png"
+                image="units/human-loyalists/sergeant-attack-sword-2.png:150"
                 sound={SOUND_LIST:MISS}
             [/frame]
         [/else]
         [frame]
-            begin=50
-            end=150
-            image="units/human-loyalists/sergeant-attack-sword-3.png"
+            image="units/human-loyalists/sergeant-attack-sword-3.png:100"
         [/frame]
         [frame]
-            begin=150
-            end=175
-            image="units/human-loyalists/sergeant.png"
+            image="units/human-loyalists/sergeant.png:25"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: data/core/units/merfolk/Fighter.cfg
===================================================================
--- data/core/units/merfolk/Fighter.cfg	(revision 56196)
+++ data/core/units/merfolk/Fighter.cfg	(working copy)
@@ -47,49 +47,25 @@
         direction=se,sw
         start_time=-225
         [frame]
-            duration=75
-            image="units/merfolk/fighter-attack-1.png"
+            image="units/merfolk/fighter-attack-[1,2].png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/merfolk/fighter-attack-2.png"
-        [/frame]
         [if]
             hits=yes
             [frame]
-                duration=75
-                image="units/merfolk/fighter-attack-3.png"
+                image="units/merfolk/fighter-attack-3.png:75"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=75
-                image="units/merfolk/fighter-attack-3.png"
+                image="units/merfolk/fighter-attack-3.png:75"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            duration=75
-            image="units/merfolk/fighter-attack-4.png"
+            image="units/merfolk/fighter-attack-[4~6,2,1].png:75"
         [/frame]
-        [frame]
-            duration=75
-            image="units/merfolk/fighter-attack-5.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/merfolk/fighter-attack-6.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/merfolk/fighter-attack-2.png"
-        [/frame]
-        [frame]
-            duration=75
-            image="units/merfolk/fighter-attack-1.png"
-        [/frame]
     [/attack_anim]
     [attack_anim]
         [filter_attack]
@@ -98,28 +74,24 @@
         direction=n,ne,nw,s
         start_time=-200
         [frame]
-            duration=50
-            image="units/merfolk/fighter.png"
+            image="units/merfolk/fighter.png:50"
         [/frame]
         [if]
             hits=yes
             [frame]
-                duration=250
-                image="units/merfolk/fighter.png"
+                image="units/merfolk/fighter.png:250"
                 sound=spear.ogg
             [/frame]
         [/if]
         [else]
             hits=no
             [frame]
-                duration=250
-                image="units/merfolk/fighter.png"
+                image="units/merfolk/fighter.png:250"
                 sound=spear-miss.ogg
             [/frame]
         [/else]
         [frame]
-            duration=50
-            image="units/merfolk/fighter.png"
+            image="units/merfolk/fighter.png:50"
         [/frame]
     [/attack_anim]
 [/unit_type]
Index: src/unit_frame.cpp
===================================================================
--- src/unit_frame.cpp	(revision 56196)
+++ src/unit_frame.cpp	(working copy)
@@ -48,12 +48,54 @@
 		total += cur_halo->second;
 	}
 	return total;
+}
 
+progressive_image::progressive_image(const std::string & data,int duration) :
+	data_(),
+	input_(data)
+{
+		const std::vector<std::string> first_pass = utils::square_parenthetical_split(data);
+		const int time_chunk = std::max<int>(duration / (first_pass.size()?first_pass.size():1),1);
+
+		std::vector<std::string>::const_iterator tmp;
+		for(tmp=first_pass.begin();tmp != first_pass.end() ; ++tmp) {
+			std::vector<std::string> second_pass = utils::split(*tmp,':');
+			if(second_pass.size() > 1) {
+				data_.push_back(std::pair<image::locator,int>(second_pass[0],atoi(second_pass[1].c_str())));
+			} else {
+				data_.push_back(std::pair<image::locator,int>(second_pass[0],time_chunk));
+			}
+		}
 }
+int progressive_image::duration() const
+{
+	int total =0;
+	std::vector<std::pair<image::locator,int> >::const_iterator cur_halo;
+	for(cur_halo = data_.begin() ; cur_halo != data_.end() ; ++cur_halo) {
+		total += cur_halo->second;
+	}
+	return total;
+}
 
+const image::locator empty_image;
+
+const image::locator& progressive_image::get_current_element(int current_time) const
+{
+	int time = 0;
+	unsigned int sub_image = 0;
+	if(data_.empty()) return empty_image;
+	while(time < current_time&& sub_image < data_.size()) {
+		time += data_[sub_image].second;
+		++sub_image;
+
+	}
+	if(sub_image) sub_image--;
+	return data_[sub_image].first;
+}
+
 static const std::string empty_string;
 
-const std::string& progressive_string::get_current_element(int current_time)const
+const std::string& progressive_string::get_current_element(int current_time) const
 {
 	int time = 0;
 	unsigned int sub_halo = 0;
@@ -249,7 +291,10 @@
 	if (const config::attribute_value *v = cfg.get(frame_string + "duration")) {
 		duration(*v);
 	} else if (!cfg.get(frame_string + "end")) {
-		duration((progressive_string(halo_,1)).duration());
+		int halo_duration = (progressive_string(halo_,1)).duration();
+		int image_duration = (progressive_image(image_,1)).duration();
+		int image_diagonal_duration = (progressive_image(image_diagonal_,1)).duration();
+		duration(std::max(std::max(image_duration,image_diagonal_duration),halo_duration));
 		
 	} else {
 		duration(cfg[frame_string + "end"].to_int() - cfg[frame_string + "begin"].to_int());
@@ -262,13 +307,13 @@
 	}
 }
 
-frame_builder & frame_builder::image(const image::locator& image ,const std::string & image_mod)
+frame_builder & frame_builder::image(const std::string& image ,const std::string & image_mod)
 {
 	image_ = image;
 	image_mod_ = image_mod;
 	return *this;
 }
-frame_builder & frame_builder::image_diagonal(const image::locator& image_diagonal,const std::string& image_mod)
+frame_builder & frame_builder::image_diagonal(const std::string& image_diagonal,const std::string& image_mod)
 {
 	image_diagonal_ = image_diagonal;
 	image_mod_ = image_mod;
@@ -366,8 +411,8 @@
 
 frame_parsed_parameters::frame_parsed_parameters(const frame_builder & builder, int duration) :
 	duration_(duration ? duration :builder.duration_),
-	image_(builder.image_),
-	image_diagonal_(builder.image_diagonal_),
+	image_(builder.image_,duration),
+	image_diagonal_(builder.image_diagonal_,duration),
 	image_mod_(builder.image_mod_),
 	halo_(builder.halo_,duration_),
 	halo_x_(builder.halo_x_,duration_),
@@ -430,8 +475,8 @@
 {
 	frame_parameters result;
 	result.duration = duration_;
-	result.image = image_;
-	result.image_diagonal = image_diagonal_;
+	result.image = image_.get_current_element(current_time);
+	result.image_diagonal = image_diagonal_.get_current_element(current_time);
 	result.image_mod = image_mod_;
 	result.halo = halo_.get_current_element(current_time);
 	result.halo_x = halo_x_.get_current_element(current_time);
@@ -490,6 +535,8 @@
 	}
 
 	if(duration != duration_) {
+		image_ = progressive_image(image_.get_original(),duration);
+		image_diagonal_ = progressive_image(image_diagonal_.get_original(),duration);
 		halo_ = progressive_string(halo_.get_original(),duration);
 		halo_x_ = progressive_int(halo_x_.get_original(),duration);
 		halo_y_ = progressive_int(halo_y_.get_original(),duration);
Index: src/unit_animation.cpp
===================================================================
--- src/unit_animation.cpp	(revision 56196)
+++ src/unit_animation.cpp	(working copy)
@@ -360,7 +360,7 @@
 
 void unit_animation::fill_initial_animations( std::vector<unit_animation> & animations, const config & cfg)
 {
-	const image::locator default_image = image::locator(cfg["image"]);
+	const std::string default_image = cfg["image"];
 	std::vector<unit_animation>  animation_base;
 	std::vector<unit_animation>::const_iterator itor;
 	add_anims(animations,cfg);
@@ -601,7 +601,7 @@
 			anim["hits"] = true;
 			animations.push_back(unit_animation(anim));
 			animations.back().add_frame(225,frame_builder()
-					.image(animations.back().get_last_frame().parameters(0).image)
+					.image(animations.back().get_last_frame().parameters(0).image.get_filename())
 					.duration(225)
 					.blend("0.0,0.5:75,0.0:75,0.5:75,0.0",game_display::rgb(255,0,0)));
 		}
@@ -615,7 +615,7 @@
 				animations.push_back(unit_animation(tmp));
 				if(hit_type == "yes" || hit_type == "hit" || hit_type=="kill") {
 					animations.back().add_frame(225,frame_builder()
-							.image(animations.back().get_last_frame().parameters(0).image)
+							.image(animations.back().get_last_frame().parameters(0).image.get_filename())
 							.duration(225)
 							.blend("0.0,0.5:75,0.0:75,0.5:75,0.0",game_display::rgb(255,0,0)));
 				}
@@ -654,7 +654,7 @@
 		if (anim["layer"].empty()) anim["layer"] = default_layer;
 		animations.push_back(unit_animation(anim));
 		image::locator image_loc = animations.back().get_last_frame().parameters(0).image;
-		animations.back().add_frame(600,frame_builder().image(image_loc).duration(600).highlight("1~0:600"));
+		animations.back().add_frame(600,frame_builder().image(image_loc.get_filename()).duration(600).highlight("1~0:600"));
 		if(!cfg["die_sound"].empty()) {
 			animations.back().sub_anims_["_death_sound"] = particule();
 			animations.back().sub_anims_["_death_sound"].add_frame(1,frame_builder());
Index: src/serialization/string_utils.cpp
===================================================================
--- src/serialization/string_utils.cpp	(revision 56196)
+++ src/serialization/string_utils.cpp	(working copy)
@@ -165,26 +165,38 @@
 
 	while (true) {
 		if(i2 == val.end() || (!in_parenthesis && *i2 == separator)) {
+			//push back square contents
 			size_t size_square_exp = 0;
 			for (size_t i=0; i < square_left.size(); i++) {
 				std::string tmp_val(square_left[i]+1,square_right[i]);
 				std::vector< std::string > tmp = split(tmp_val);
 				std::vector<std::string>::const_iterator itor = tmp.begin();
 				for(; itor != tmp.end(); ++itor) {
-					size_t found = (*itor).find_first_of('~');
-					if (found == std::string::npos) {
-						std::string tmp = (*itor);
-						square_expansion.push_back(strip(tmp));
+					size_t found_tilde = (*itor).find_first_of('~');
+					if (found_tilde == std::string::npos) {
+						size_t found_asterisk = (*itor).find_first_of('*');
+						if (found_asterisk == std::string::npos) {
+							std::string tmp = (*itor);
+							square_expansion.push_back(strip(tmp));
+						}
+						else { //'*' multiple expansion
+							std::string s_begin = (*itor).substr(0,found_asterisk);
+							s_begin = strip(s_begin);
+							std::string s_end = (*itor).substr(found_asterisk+1);
+							s_end = strip(s_end);
+							for (int ast=atoi(s_end.c_str()); ast>0; --ast)
+								square_expansion.push_back(s_begin);
+						}
 					}
 					else { //expand number range
-						std::string s_begin = (*itor).substr(0,found);
+						std::string s_begin = (*itor).substr(0,found_tilde);
 						s_begin = strip(s_begin);
 						int begin = atoi(s_begin.c_str());
 						size_t padding = 0;
 						while (padding<s_begin.size() && s_begin[padding]=='0') {
 							padding++;
 						}
-						std::string s_end = (*itor).substr(found+1);
+						std::string s_end = (*itor).substr(found_tilde+1);
 						s_end = strip(s_end);
 						int end = atoi(s_end.c_str());
 						if (padding==0) {
@@ -209,6 +221,8 @@
 				}
 				size_square_exp = square_expansion.size();
 			}
+			
+			//combine square contents and rest of string for comma zone block
 			size_t j = 0;
 			size_t j_max = 0;
 			if (square_left.size() != 0)
Index: src/serialization/string_utils.hpp
===================================================================
--- src/serialization/string_utils.hpp	(revision 56196)
+++ src/serialization/string_utils.hpp	(working copy)
@@ -84,6 +84,7 @@
  * Separator must be specified and number of entries in each square bracket
  * must match in each section.
  * Leading zeros are preserved if specified between square brackets.
+ * An asterisk as in [a*n] indicates to expand 'a' n times
  * 
  * This is useful to expand animation WML code.
  * Examples:
@@ -97,6 +98,8 @@
  * <"abc3.png","abc2.png","abc1.png">
  * square_parenthetical_split("abc[de,xyz]") should return
  * <"abcde","abcxyz">
+ * square_parenthetical_split("abc[1*3]") should return
+ * <"abc1","abc1","abc1">
  */
 std::vector< std::string > square_parenthetical_split(std::string const &val,
 	const char separator = ',' , std::string const &left="([",
Index: src/unit_frame.hpp
===================================================================
--- src/unit_frame.hpp	(revision 56196)
+++ src/unit_frame.hpp	(working copy)
@@ -37,6 +37,18 @@
 		std::string input_;
 };
 
+class progressive_image {
+	public:
+		progressive_image(const std::string& data = "",int duration = 0);
+		int duration() const;
+		const image::locator & get_current_element(int time) const;
+		bool does_not_change() const { return data_.size() <= 1; }
+		std::string get_original() const { return input_; }
+	private:
+		std::vector<std::pair<image::locator,int> > data_;
+		std::string input_;
+};
+
 template <class T>
 class progressive_
 {
@@ -94,8 +106,8 @@
 		frame_builder(const config& cfg,const std::string &frame_string = "");
 		/** allow easy chained modifications will raised assert if used after initialization */
 		frame_builder & duration(const int duration);
-		frame_builder & image(const image::locator& image ,const std::string & image_mod="");
-		frame_builder & image_diagonal(const image::locator& image_diagonal,const std::string & image_mod="");
+		frame_builder & image(const std::string& image ,const std::string & image_mod="");
+		frame_builder & image_diagonal(const std::string& image_diagonal,const std::string & image_mod="");
 		frame_builder & sound(const std::string& sound);
 		frame_builder & text(const std::string& text,const  Uint32 text_color);
 		frame_builder & halo(const std::string &halo, const std::string &halo_x, const std::string& halo_y,const std::string& halo_mod);
@@ -115,8 +127,8 @@
 	private:
 		friend class frame_parsed_parameters;
 		int duration_;
-		image::locator image_;
-		image::locator image_diagonal_;
+		std::string image_;
+		std::string image_diagonal_;
 		std::string image_mod_;
 		std::string halo_;
 		std::string halo_x_;
@@ -162,8 +174,8 @@
 		bool need_update() const;
 	private:
 		int duration_;
-		image::locator image_;
-		image::locator image_diagonal_;
+		progressive_image image_;
+		progressive_image image_diagonal_;
 		std::string image_mod_;
 		progressive_string halo_;
 		progressive_int halo_x_;
