← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/spritesheet_generation into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/spritesheet_generation into lp:widelands.

Commit message:
Add support for spritesheets
- Add support for spritesheets and refactor animation classes
- New utility wl_create_spritesheet to create spritesheets for animations
- Animations are also cropped to save more space
- Spritesheet animations are kept in separate Lua tables for performance reasons
- New Lua function add_custom_worker to support writing tests
- Convert Barbarian Carrier and Wood Hardener as examples

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1638356 in widelands: "Implement support for Spritemaps"
  https://bugs.launchpad.net/widelands/+bug/1638356

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/spritesheet_generation/+merge/370824

Spritesheets :)

Note that the idle carrier gets a black background when zoomed out - this is a proof-of-concept that the correct mipmap files are being generated and used. The files at 0.5 scale can be deleted before merging.

The new tool still has a memory leak that I haven't found out how to fix yet.

Once this is in, we should look at exporting all 4 scales directly from Blender for maximum quality.
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/spritesheet_generation into lp:widelands.
=== modified file '.bzrignore'
--- .bzrignore	2017-04-20 11:02:01 +0000
+++ .bzrignore	2019-08-30 22:19:30 +0000
@@ -11,6 +11,7 @@
 update.sh
 widelands
 wl_map*_info
+wl_create_spritesheet
 locale
 VERSION
 

=== modified file 'compile.sh'
--- compile.sh	2019-07-20 13:07:07 +0000
+++ compile.sh	2019-08-30 22:19:30 +0000
@@ -301,6 +301,7 @@
     mv src/widelands ../widelands
 
     if [ $BUILD_WEBSITE = "ON" ]; then
+        mv ../build/src/website/wl_create_spritesheet ../wl_create_spritesheet
         mv ../build/src/website/wl_map_object_info ../wl_map_object_info
         mv ../build/src/website/wl_map_info ../wl_map_info
     fi

=== modified file 'data/tribes/barbarians.lua'
--- data/tribes/barbarians.lua	2019-05-26 01:46:18 +0000
+++ data/tribes/barbarians.lua	2019-08-30 22:19:30 +0000
@@ -1,12 +1,23 @@
 image_dirname = path.dirname(__file__) .. "images/barbarians/"
 
-animations = {}
-add_animation(animations, "frontier", image_dirname, "frontier", {1, 19})
-add_animation(animations, "flag", image_dirname, "flag", {10, 38}, 5)
-
 tribes:new_tribe {
    name = "barbarians",
-   animations = animations,
+   animations = {
+      flag = {
+         directory = image_dirname,
+         basename = "flag",
+         fps = 5,
+         frames = 16,
+         columns = 4,
+         rows = 4,
+         hotspot = { 11, 39 }
+      },
+      frontier = {
+         directory = image_dirname,
+         basename = "frontier",
+         hotspot = { 1, 19 }
+      },
+   },
 
    -- Image file paths for this tribe's road textures
    roads = {

=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_00.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_00.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_00_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_01.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_01.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_01_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_02.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_02.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_02_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_03.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_03.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_03_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_1.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_1.png	1970-01-01 00:00:00 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/build_1_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/build_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/build_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_00.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_00.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_00_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_01.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_01.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_01_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_02.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_02.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_02_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_03.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_03.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_03_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_04.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_04.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_04_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_05.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_05.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_05_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_06.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_06.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_06_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_07.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_07.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_07_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_08.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_08.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_08_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_09.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_09.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_09_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_1.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_1.png	1970-01-01 00:00:00 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_1.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_10.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_10.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_10.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_10_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_10_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_10_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_11.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_11.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_11.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_11_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_11_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_11_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_12.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_12.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_12.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_12_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_12_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_12_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_13.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_13.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_13.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_13_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_13_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_13_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_14.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_14.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_14.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_14_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_14_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_14_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_15.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_15.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_15.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_15_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_15_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_15_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_16.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_16.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_16.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_16_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_16_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_16_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_17.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_17.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_17.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_17_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_17_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_17_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_18.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_18.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_18.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_18_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_18_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_18_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_19.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_19.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_19.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_19_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_19_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_19_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_1_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/idle_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== modified file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua'
--- data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua	2019-05-29 18:29:28 +0000
+++ data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua	2019-08-30 22:19:30 +0000
@@ -19,22 +19,37 @@
    },
 
    animations = {
+      unoccupied = {
+         directory = dirname,
+         basename = "unoccupied",
+         hotspot = { 52, 64 },
+      }
+   },
+   spritesheets = {
       idle = {
-         pictures = path.list_files(dirname .. "idle_??.png"),
-         hotspot = { 52, 64 },
+         directory = dirname,
+         basename = "idle",
+         frames = 20,
+         columns = 4,
+         rows = 5,
+         hotspot = { 50, 65 }
       },
       build = {
-         pictures = path.list_files(dirname .. "build_??.png"),
-         hotspot = { 52, 64 },
+         directory = dirname,
+         basename = "build",
+         frames = 4,
+         columns = 2,
+         rows = 2,
+         hotspot = { 50, 61 }
       },
       working = {
-         pictures = path.list_files(dirname .. "working_??.png"),
-         hotspot = { 52, 64 },
-      },
-      unoccupied = {
-         pictures = path.list_files(dirname .. "unoccupied_??.png"),
-         hotspot = { 52, 64 },
-      },
+         directory = dirname,
+         basename = "working",
+         frames = 20,
+         columns = 4,
+         rows = 5,
+         hotspot = { 53, 65 }
+      }
    },
 
    aihints = {

=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_00.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_00.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_00_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_01.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_01.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_01_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_02.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_02.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_02_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_03.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_03.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_03_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_04.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_04.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_04_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_05.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_05.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_05_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_06.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_06.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_06_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_07.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_07.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_07_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_08.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_08.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_08_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_09.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_09.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_09_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_1.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_1.png	1970-01-01 00:00:00 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_1.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_10.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_10.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_10.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_10_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_10_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_10_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_11.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_11.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_11.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_11_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_11_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_11_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_12.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_12.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_12.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_12_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_12_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_12_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_13.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_13.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_13.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_13_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_13_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_13_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_14.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_14.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_14.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_14_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_14_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_14_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_15.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_15.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_15.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_15_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_15_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_15_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_16.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_16.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_16.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_16_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_16_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_16_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_17.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_17.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_17.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_17_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_17_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_17_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_18.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_18.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_18.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_18_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_18_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_18_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_19.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_19.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_19.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_19_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_19_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_19_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/working_1_pc.png'
Binary files data/tribes/buildings/productionsites/barbarians/wood_hardener/working_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/buildings/productionsites/barbarians/wood_hardener/working_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_00.png'
Binary files data/tribes/images/barbarians/flag_00.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_00_pc.png'
Binary files data/tribes/images/barbarians/flag_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_01.png'
Binary files data/tribes/images/barbarians/flag_01.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_01_pc.png'
Binary files data/tribes/images/barbarians/flag_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_02.png'
Binary files data/tribes/images/barbarians/flag_02.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_02_pc.png'
Binary files data/tribes/images/barbarians/flag_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_03.png'
Binary files data/tribes/images/barbarians/flag_03.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_03_pc.png'
Binary files data/tribes/images/barbarians/flag_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_04.png'
Binary files data/tribes/images/barbarians/flag_04.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_04_pc.png'
Binary files data/tribes/images/barbarians/flag_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_05.png'
Binary files data/tribes/images/barbarians/flag_05.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_05_pc.png'
Binary files data/tribes/images/barbarians/flag_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_06.png'
Binary files data/tribes/images/barbarians/flag_06.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_06_pc.png'
Binary files data/tribes/images/barbarians/flag_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_07.png'
Binary files data/tribes/images/barbarians/flag_07.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_07_pc.png'
Binary files data/tribes/images/barbarians/flag_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_08.png'
Binary files data/tribes/images/barbarians/flag_08.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_08_pc.png'
Binary files data/tribes/images/barbarians/flag_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_09.png'
Binary files data/tribes/images/barbarians/flag_09.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_09_pc.png'
Binary files data/tribes/images/barbarians/flag_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/images/barbarians/flag_1.png'
Binary files data/tribes/images/barbarians/flag_1.png	1970-01-01 00:00:00 +0000 and data/tribes/images/barbarians/flag_1.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_10.png'
Binary files data/tribes/images/barbarians/flag_10.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_10.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_10_pc.png'
Binary files data/tribes/images/barbarians/flag_10_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_10_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_11.png'
Binary files data/tribes/images/barbarians/flag_11.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_11.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_11_pc.png'
Binary files data/tribes/images/barbarians/flag_11_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_11_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_12.png'
Binary files data/tribes/images/barbarians/flag_12.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_12.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_12_pc.png'
Binary files data/tribes/images/barbarians/flag_12_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_12_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_13.png'
Binary files data/tribes/images/barbarians/flag_13.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_13.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_13_pc.png'
Binary files data/tribes/images/barbarians/flag_13_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_13_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_14.png'
Binary files data/tribes/images/barbarians/flag_14.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_14.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_14_pc.png'
Binary files data/tribes/images/barbarians/flag_14_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_14_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_15.png'
Binary files data/tribes/images/barbarians/flag_15.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_15.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/images/barbarians/flag_15_pc.png'
Binary files data/tribes/images/barbarians/flag_15_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/images/barbarians/flag_15_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/images/barbarians/flag_1_pc.png'
Binary files data/tribes/images/barbarians/flag_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/images/barbarians/flag_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/idle_0.5.png'
Binary files data/tribes/workers/barbarians/carrier/idle_0.5.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/idle_0.5.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/idle_0.5_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_0.5_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/idle_0.5_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_00.png'
Binary files data/tribes/workers/barbarians/carrier/idle_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_01.png'
Binary files data/tribes/workers/barbarians/carrier/idle_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_02.png'
Binary files data/tribes/workers/barbarians/carrier/idle_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_03.png'
Binary files data/tribes/workers/barbarians/carrier/idle_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_04.png'
Binary files data/tribes/workers/barbarians/carrier/idle_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_05.png'
Binary files data/tribes/workers/barbarians/carrier/idle_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_06.png'
Binary files data/tribes/workers/barbarians/carrier/idle_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_07.png'
Binary files data/tribes/workers/barbarians/carrier/idle_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_08.png'
Binary files data/tribes/workers/barbarians/carrier/idle_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_09.png'
Binary files data/tribes/workers/barbarians/carrier/idle_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/idle_1.png'
Binary files data/tribes/workers/barbarians/carrier/idle_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/idle_1.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_10.png'
Binary files data/tribes/workers/barbarians/carrier/idle_10.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_10.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_10_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_10_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_10_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_11.png'
Binary files data/tribes/workers/barbarians/carrier/idle_11.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_11.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_11_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_11_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_11_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_12.png'
Binary files data/tribes/workers/barbarians/carrier/idle_12.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_12.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_12_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_12_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_12_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_13.png'
Binary files data/tribes/workers/barbarians/carrier/idle_13.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_13.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_13_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_13_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_13_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_14.png'
Binary files data/tribes/workers/barbarians/carrier/idle_14.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_14.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_14_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_14_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_14_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_15.png'
Binary files data/tribes/workers/barbarians/carrier/idle_15.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_15.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_15_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_15_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_15_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_16.png'
Binary files data/tribes/workers/barbarians/carrier/idle_16.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_16.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_16_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_16_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_16_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_17.png'
Binary files data/tribes/workers/barbarians/carrier/idle_17.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_17.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_17_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_17_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_17_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_18.png'
Binary files data/tribes/workers/barbarians/carrier/idle_18.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_18.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_18_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_18_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_18_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_19.png'
Binary files data/tribes/workers/barbarians/carrier/idle_19.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_19.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_19_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_19_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_19_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/idle_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/idle_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_20.png'
Binary files data/tribes/workers/barbarians/carrier/idle_20.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_20.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_20_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_20_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_20_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_21.png'
Binary files data/tribes/workers/barbarians/carrier/idle_21.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_21.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_21_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_21_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_21_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_22.png'
Binary files data/tribes/workers/barbarians/carrier/idle_22.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_22.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_22_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_22_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_22_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_23.png'
Binary files data/tribes/workers/barbarians/carrier/idle_23.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_23.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_23_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_23_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_23_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_24.png'
Binary files data/tribes/workers/barbarians/carrier/idle_24.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_24.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_24_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_24_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_24_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_25.png'
Binary files data/tribes/workers/barbarians/carrier/idle_25.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_25.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_25_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_25_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_25_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_26.png'
Binary files data/tribes/workers/barbarians/carrier/idle_26.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_26.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_26_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_26_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_26_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_27.png'
Binary files data/tribes/workers/barbarians/carrier/idle_27.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_27.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_27_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_27_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_27_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_28.png'
Binary files data/tribes/workers/barbarians/carrier/idle_28.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_28.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_28_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_28_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_28_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_29.png'
Binary files data/tribes/workers/barbarians/carrier/idle_29.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_29.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_29_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_29_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_29_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_30.png'
Binary files data/tribes/workers/barbarians/carrier/idle_30.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_30.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_30_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_30_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_30_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_31.png'
Binary files data/tribes/workers/barbarians/carrier/idle_31.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_31.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_31_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_31_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_31_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_32.png'
Binary files data/tribes/workers/barbarians/carrier/idle_32.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_32.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_32_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_32_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_32_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_33.png'
Binary files data/tribes/workers/barbarians/carrier/idle_33.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_33.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_33_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_33_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_33_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_34.png'
Binary files data/tribes/workers/barbarians/carrier/idle_34.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_34.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_34_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_34_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_34_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_35.png'
Binary files data/tribes/workers/barbarians/carrier/idle_35.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_35.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_35_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_35_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_35_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_36.png'
Binary files data/tribes/workers/barbarians/carrier/idle_36.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_36.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_36_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_36_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_36_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_37.png'
Binary files data/tribes/workers/barbarians/carrier/idle_37.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_37.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_37_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_37_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_37_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_38.png'
Binary files data/tribes/workers/barbarians/carrier/idle_38.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_38.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_38_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_38_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_38_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_39.png'
Binary files data/tribes/workers/barbarians/carrier/idle_39.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_39.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_39_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_39_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_39_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_40.png'
Binary files data/tribes/workers/barbarians/carrier/idle_40.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_40.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_40_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_40_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_40_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_41.png'
Binary files data/tribes/workers/barbarians/carrier/idle_41.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_41.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_41_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_41_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_41_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_42.png'
Binary files data/tribes/workers/barbarians/carrier/idle_42.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_42.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_42_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_42_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_42_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_43.png'
Binary files data/tribes/workers/barbarians/carrier/idle_43.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_43.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_43_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_43_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_43_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_44.png'
Binary files data/tribes/workers/barbarians/carrier/idle_44.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_44.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_44_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_44_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_44_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_45.png'
Binary files data/tribes/workers/barbarians/carrier/idle_45.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_45.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_45_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_45_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_45_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_46.png'
Binary files data/tribes/workers/barbarians/carrier/idle_46.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_46.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_46_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_46_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_46_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_47.png'
Binary files data/tribes/workers/barbarians/carrier/idle_47.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_47.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_47_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_47_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_47_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_48.png'
Binary files data/tribes/workers/barbarians/carrier/idle_48.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_48.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_48_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_48_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_48_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_49.png'
Binary files data/tribes/workers/barbarians/carrier/idle_49.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_49.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_49_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_49_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_49_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_50.png'
Binary files data/tribes/workers/barbarians/carrier/idle_50.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_50.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_50_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_50_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_50_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_51.png'
Binary files data/tribes/workers/barbarians/carrier/idle_51.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_51.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_51_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_51_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_51_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_52.png'
Binary files data/tribes/workers/barbarians/carrier/idle_52.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_52.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_52_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_52_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_52_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_53.png'
Binary files data/tribes/workers/barbarians/carrier/idle_53.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_53.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_53_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_53_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_53_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_54.png'
Binary files data/tribes/workers/barbarians/carrier/idle_54.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_54.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_54_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_54_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_54_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_55.png'
Binary files data/tribes/workers/barbarians/carrier/idle_55.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_55.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_55_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_55_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_55_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_56.png'
Binary files data/tribes/workers/barbarians/carrier/idle_56.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_56.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_56_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_56_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_56_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_57.png'
Binary files data/tribes/workers/barbarians/carrier/idle_57.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_57.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_57_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_57_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_57_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_58.png'
Binary files data/tribes/workers/barbarians/carrier/idle_58.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_58.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_58_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_58_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_58_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_59.png'
Binary files data/tribes/workers/barbarians/carrier/idle_59.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_59.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_59_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_59_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_59_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_60.png'
Binary files data/tribes/workers/barbarians/carrier/idle_60.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_60.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_60_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_60_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_60_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_61.png'
Binary files data/tribes/workers/barbarians/carrier/idle_61.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_61.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_61_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_61_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_61_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_62.png'
Binary files data/tribes/workers/barbarians/carrier/idle_62.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_62.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_62_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_62_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_62_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_63.png'
Binary files data/tribes/workers/barbarians/carrier/idle_63.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_63.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_63_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_63_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_63_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_64.png'
Binary files data/tribes/workers/barbarians/carrier/idle_64.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_64.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_64_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_64_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_64_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_65.png'
Binary files data/tribes/workers/barbarians/carrier/idle_65.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_65.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_65_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_65_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_65_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_66.png'
Binary files data/tribes/workers/barbarians/carrier/idle_66.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_66.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_66_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_66_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_66_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_67.png'
Binary files data/tribes/workers/barbarians/carrier/idle_67.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_67.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_67_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_67_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_67_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_68.png'
Binary files data/tribes/workers/barbarians/carrier/idle_68.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_68.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_68_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_68_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_68_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_69.png'
Binary files data/tribes/workers/barbarians/carrier/idle_69.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_69.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_69_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_69_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_69_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_70.png'
Binary files data/tribes/workers/barbarians/carrier/idle_70.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_70.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_70_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_70_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_70_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_71.png'
Binary files data/tribes/workers/barbarians/carrier/idle_71.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_71.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_71_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_71_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_71_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_72.png'
Binary files data/tribes/workers/barbarians/carrier/idle_72.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_72.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_72_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_72_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_72_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_73.png'
Binary files data/tribes/workers/barbarians/carrier/idle_73.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_73.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_73_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_73_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_73_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_74.png'
Binary files data/tribes/workers/barbarians/carrier/idle_74.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_74.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_74_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_74_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_74_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_75.png'
Binary files data/tribes/workers/barbarians/carrier/idle_75.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_75.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_75_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_75_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_75_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_76.png'
Binary files data/tribes/workers/barbarians/carrier/idle_76.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_76.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_76_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_76_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_76_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_77.png'
Binary files data/tribes/workers/barbarians/carrier/idle_77.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_77.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_77_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_77_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_77_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_78.png'
Binary files data/tribes/workers/barbarians/carrier/idle_78.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_78.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_78_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_78_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_78_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_79.png'
Binary files data/tribes/workers/barbarians/carrier/idle_79.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_79.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_79_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_79_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_79_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_80.png'
Binary files data/tribes/workers/barbarians/carrier/idle_80.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_80.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_80_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_80_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_80_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_81.png'
Binary files data/tribes/workers/barbarians/carrier/idle_81.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_81.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_81_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_81_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_81_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_82.png'
Binary files data/tribes/workers/barbarians/carrier/idle_82.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_82.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_82_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_82_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_82_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_83.png'
Binary files data/tribes/workers/barbarians/carrier/idle_83.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_83.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_83_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_83_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_83_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_84.png'
Binary files data/tribes/workers/barbarians/carrier/idle_84.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_84.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_84_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_84_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_84_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_85.png'
Binary files data/tribes/workers/barbarians/carrier/idle_85.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_85.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_85_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_85_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_85_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_86.png'
Binary files data/tribes/workers/barbarians/carrier/idle_86.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_86.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_86_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_86_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_86_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_87.png'
Binary files data/tribes/workers/barbarians/carrier/idle_87.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_87.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_87_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_87_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_87_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_88.png'
Binary files data/tribes/workers/barbarians/carrier/idle_88.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_88.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_88_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_88_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_88_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_89.png'
Binary files data/tribes/workers/barbarians/carrier/idle_89.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_89.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_89_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_89_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_89_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_90.png'
Binary files data/tribes/workers/barbarians/carrier/idle_90.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_90.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_90_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_90_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_90_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_91.png'
Binary files data/tribes/workers/barbarians/carrier/idle_91.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_91.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_91_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_91_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_91_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_92.png'
Binary files data/tribes/workers/barbarians/carrier/idle_92.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_92.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_92_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_92_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_92_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_93.png'
Binary files data/tribes/workers/barbarians/carrier/idle_93.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_93.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_93_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_93_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_93_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_94.png'
Binary files data/tribes/workers/barbarians/carrier/idle_94.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_94.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_94_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_94_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_94_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_95.png'
Binary files data/tribes/workers/barbarians/carrier/idle_95.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_95.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_95_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_95_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_95_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_96.png'
Binary files data/tribes/workers/barbarians/carrier/idle_96.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_96.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_96_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_96_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_96_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_97.png'
Binary files data/tribes/workers/barbarians/carrier/idle_97.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_97.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_97_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_97_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_97_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_98.png'
Binary files data/tribes/workers/barbarians/carrier/idle_98.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_98.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_98_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_98_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_98_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_99.png'
Binary files data/tribes/workers/barbarians/carrier/idle_99.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_99.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/idle_99_pc.png'
Binary files data/tribes/workers/barbarians/carrier/idle_99_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/idle_99_pc.png	1970-01-01 00:00:00 +0000 differ
=== modified file 'data/tribes/workers/barbarians/carrier/init.lua'
--- data/tribes/workers/barbarians/carrier/init.lua	2019-04-21 12:23:33 +0000
+++ data/tribes/workers/barbarians/carrier/init.lua	2019-08-30 22:19:30 +0000
@@ -1,11 +1,5 @@
 dirname = path.dirname(__file__)
 
-animations = {}
-add_animation(animations, "idle", dirname, "idle", {14, 21}, 5)
-add_directional_animation(animations, "walk", dirname, "walk", {9, 19}, 10)
-add_directional_animation(animations, "walkload", dirname, "walkload", {7, 22}, 10)
-
-
 tribes:new_carrier_type {
    msgctxt = "barbarians_worker",
    name = "barbarians_carrier",
@@ -17,5 +11,36 @@
 
    buildcost = {}, -- This will give the worker the property "buildable"
 
-   animations = animations,
+   spritesheets = {
+      idle = {
+         directory = dirname,
+         basename = "idle",
+         fps = 5,
+         frames = 100,
+         columns = 10,
+         rows = 10,
+         hotspot = { 15, 22 }
+      },
+
+      walk = {
+         directory = dirname,
+         basename = "walk",
+         fps = 10,
+         frames = 10,
+         columns = 3,
+         rows = 4,
+         directional = true,
+         hotspot = { 10, 20 }
+      },
+      walkload = {
+         directory = dirname,
+         basename = "walkload",
+         fps = 10,
+         frames = 10,
+         columns = 3,
+         rows = 4,
+         directional = true,
+         hotspot = { 8, 23 }
+      }
+   }
 }

=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_00.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_01.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_02.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_03.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_04.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_05.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_06.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_07.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_08.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_09.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_e_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_e_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_e_1.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_e_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_e_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_e_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_e_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_00.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_01.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_02.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_03.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_04.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_05.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_06.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_07.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_08.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_09.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_ne_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_ne_1.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_ne_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_ne_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_ne_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_00.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_01.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_02.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_03.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_04.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_05.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_06.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_07.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_08.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_09.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_nw_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_nw_1.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_nw_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_nw_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_nw_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_00.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_01.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_02.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_03.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_04.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_05.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_06.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_07.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_08.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_09.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_se_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_se_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_se_1.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_se_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_se_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_se_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_se_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_00.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_01.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_02.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_03.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_04.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_05.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_06.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_07.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_08.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_09.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_sw_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_sw_1.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_sw_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_sw_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_sw_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_00.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_01.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_02.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_03.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_04.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_05.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_06.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_07.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_08.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_09.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walk_w_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walk_w_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_w_1.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_w_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walk_w_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walk_w_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walk_w_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_00.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_01.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_02.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_03.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_04.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_05.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_06.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_07.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_08.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_09.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_e_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_e_1.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_e_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_e_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_e_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_00.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_01.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_02.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_03.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_04.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_05.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_06.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_07.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_08.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_09.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_ne_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_ne_1.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_ne_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_ne_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_ne_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_00.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_01.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_02.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_03.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_04.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_05.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_06.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_07.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_08.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_09.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_nw_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_nw_1.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_nw_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_nw_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_nw_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_00.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_01.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_02.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_03.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_04.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_05.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_06.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_07.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_08.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_09.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_se_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_se_1.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_se_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_se_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_se_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_00.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_01.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_02.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_03.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_04.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_05.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_06.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_07.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_08.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_09.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_sw_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_sw_1.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_sw_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_sw_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_sw_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_00.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_00.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_00.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_00_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_00_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_00_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_01.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_01.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_01.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_01_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_01_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_01_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_02.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_02.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_02.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_02_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_02_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_02_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_03.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_03.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_03.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_03_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_03_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_03_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_04.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_04.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_04.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_04_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_04_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_04_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_05.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_05.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_05.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_05_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_05_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_05_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_06.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_06.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_06.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_06_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_06_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_06_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_07.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_07.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_07.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_07_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_07_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_07_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_08.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_08.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_08.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_08_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_08_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_08_pc.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_09.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_09.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_09.png	1970-01-01 00:00:00 +0000 differ
=== removed file 'data/tribes/workers/barbarians/carrier/walkload_w_09_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_09_pc.png	2019-03-30 06:46:25 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_09_pc.png	1970-01-01 00:00:00 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_w_1.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_1.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'data/tribes/workers/barbarians/carrier/walkload_w_1_pc.png'
Binary files data/tribes/workers/barbarians/carrier/walkload_w_1_pc.png	1970-01-01 00:00:00 +0000 and data/tribes/workers/barbarians/carrier/walkload_w_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== modified file 'doc/sphinx/source/animations.rst'
--- doc/sphinx/source/animations.rst	2019-05-25 08:51:42 +0000
+++ doc/sphinx/source/animations.rst	2019-08-30 22:19:30 +0000
@@ -7,10 +7,20 @@
 For information on how to create the animations' images with Blender, see
 `GraphicsDevelopment <https://wl.widelands.org/wiki/GraphicsDevelopment/>`_.
 
+The Blender export will give you a list of files for each animation.
+We call this a "file" animation.
+Once you have tested your animation in Widelands and are satisfied with the results,
+we recommend that you convert it to a :ref:`spritesheet <animations_spritesheets>`.
+This will save disk space and make animation loading faster.
+
 Animations are defined as `Lua tables <http://lua-users.org/wiki/TablesTutorial>`_.
 All :ref:`map objects <animations_map_object_types>` have a mandatory ``idle`` animation.
 They can then have further animations, depending on what their specific capabilities are.
 
+
+File Animations
+---------------
+
 We recommend that you use the :ref:`animations_convenience_functions` below for
 the Lua coding, but let's look at an example first to understand which options
 are available, and what your image files need to look like:
@@ -90,6 +100,71 @@
 ``walk_ne_1_01.png`` etc. for scale `1` and so on.
 
 
+.. _animations_spritesheets:
+
+Spritesheet Animations
+----------------------
+
+The same map object can have a mix of file and spritesheet animations.
+For converting a file animation to a spritesheet animation, use the command line
+to call ``./wl_create_spritesheet`` from the Widelands program directory.
+This will print the command line options to use for converting your animation.
+
+After conversion, you will need to delete the old files and copy over the new files,
+then delete the old animation code in the map object's ``init.lua`` file and add the new code.
+The tool will print the new code to the console for you, so all you need to do is copy/paste
+and then add any missing optional parameters back in.
+
+Note that except for flag and frontier animations, the table for spritesheets is
+called ``spritesheets``, not ``animations``!
+This distinction is necessary for performance reasons.
+
+Spritesheets have three additional mandatory parameters so that the engine can
+identify the individual textures in the sheet:
+
+**frames**
+  The number of frames (images) that this animation has. Equal to the number of
+  files in a file animation.
+
+**columns**
+  The number of image columns in the spritesheet.
+
+**rows**
+  The number of image rows in the spritesheet.
+
+
+Here's the example from above as spritesheets:
+
+.. code-block:: lua
+
+   spritesheets = {
+      idle = {
+         directory = path.dirname(__file__),
+         basename = "idle",
+         fps = 4,
+         frames = 150,
+         rows = 13,
+         columns = 12,
+         hotspot = { 5, 7 }
+         sound_effect = {
+            path = "sound/foo/bar",
+            priority = 128
+         },
+         representative_frame = 3,
+      },
+      walk = {
+         directory = path.dirname(__file__),
+         basename = "walk",
+         fps = 4,
+         frames = 10,
+         rows = 4,
+         columns = 3,
+         directional = true,
+         hotspot = { 5, 7 }
+      },
+      ...
+   }
+
 
 .. _animations_convenience_functions:
 

=== modified file 'src/graphic/CMakeLists.txt'
--- src/graphic/CMakeLists.txt	2019-06-01 14:07:35 +0000
+++ src/graphic/CMakeLists.txt	2019-08-30 22:19:30 +0000
@@ -1,3 +1,4 @@
+add_subdirectory(animation)
 add_subdirectory(styles)
 add_subdirectory(text)
 
@@ -310,10 +311,7 @@
 
 wl_library(graphic
   SRCS
-    animation.cc
-    animation.h
     default_resolution.h
-    diranimations.h
     graphic.cc
     graphic.h
     style_manager.cc
@@ -330,13 +328,13 @@
     base_scoped_timer
     build_info
     graphic_align
+    graphic_animation
     graphic_build_texture_atlas
     graphic_color
     graphic_draw_programs
     graphic_gl_utils
     graphic_image_cache
     graphic_image_io
-    graphic_playercolor
     graphic_render_queue
     graphic_styles
     graphic_surface
@@ -349,6 +347,5 @@
     notifications
     scripting_lua_interface
     scripting_lua_table
-    sound
 )
 

=== added directory 'src/graphic/animation'
=== added file 'src/graphic/animation/CMakeLists.txt'
--- src/graphic/animation/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ src/graphic/animation/CMakeLists.txt	2019-08-30 22:19:30 +0000
@@ -0,0 +1,26 @@
+wl_library(graphic_animation
+  SRCS
+    animation.cc
+    animation.h
+    animation_manager.cc
+    animation_manager.h
+    diranimations.h
+    diranimations.cc
+    nonpacked_animation.cc
+    nonpacked_animation.h
+    spritesheet_animation.cc
+    spritesheet_animation.h
+  DEPENDS
+    base_exceptions
+    base_geometry
+    base_macros
+    graphic
+    graphic_color
+    graphic_playercolor
+    graphic_surface
+    io_filesystem
+    logic_constants
+    note_sound
+    scripting_lua_table
+    sound
+)

=== added file 'src/graphic/animation/animation.cc'
--- src/graphic/animation/animation.cc	1970-01-01 00:00:00 +0000
+++ src/graphic/animation/animation.cc	2019-08-30 22:19:30 +0000
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2002-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#include "graphic/animation/animation.h"
+
+#include <cassert>
+#include <memory>
+
+#include "base/vector.h"
+#include "io/filesystem/layered_filesystem.h"
+#include "logic/game_data_error.h"
+#include "scripting/lua_table.h"
+#include "sound/note_sound.h"
+#include "sound/sound_handler.h"
+
+const std::map<float, std::string> Animation::kSupportedScales { {0.5, "_0.5"}, {1, "_1"}, {2, "_2"}, {4, "_4"}};
+
+Animation::MipMapEntry::MipMapEntry() : has_playercolor_masks(false) {
+}
+
+Animation::Animation(const LuaTable& table) :
+	representative_frame_(table.has_key("representative_frame") ? table.get_int("representative_frame") : 0),
+	hotspot_(table.get_vector<std::string, int>("hotspot")),
+	frametime_(table.has_key("fps") ? (1000 / get_positive_int(table, "fps")) : kFrameLength),
+	play_once_(table.has_key("play_once") ? table.get_bool("play_once") : false),
+	sound_effect_(kNoSoundEffect),
+	sound_priority_(kFxPriorityLowest) {
+	try {
+		// Sound
+		if (table.has_key("sound_effect")) {
+			std::unique_ptr<LuaTable> sound_effects = table.get_table("sound_effect");
+			sound_effect_ =
+			   SoundHandler::register_fx(SoundType::kAmbient, sound_effects->get_string("path"));
+
+			if (sound_effects->has_key<std::string>("priority")) {
+				sound_priority_ = sound_effects->get_int("priority");
+			}
+
+			if (sound_priority_ < kFxPriorityLowest) {
+				throw Widelands::GameDataError(
+				   "Minmum priority for sounds is %d, but only %d was specified for %s",
+				   kFxPriorityLowest, sound_priority_, sound_effects->get_string("path").c_str());
+			}
+		}
+	} catch (const LuaError& e) {
+		throw wexception("Error in animation table: %s", e.what());
+	}
+	assert(frametime_ > 0);
+}
+
+const Animation::MipMapEntry& Animation::mipmap_entry(float scale) const {
+	assert(mipmaps_.count(scale) == 1);
+	const MipMapEntry& mipmap = *mipmaps_.at(scale);
+	mipmap.ensure_graphics_are_loaded();
+	return mipmap;
+}
+
+Rectf Animation::source_rectangle(const int percent_from_bottom, float scale) const {
+	const MipMapEntry& mipmap = mipmap_entry(find_best_scale(scale));
+	const float h = percent_from_bottom * mipmap.height() / 100;
+	// Using floor for pixel perfect positioning
+	return Rectf(0.f, std::floor(mipmap.height() - h), mipmap.width(), h);
+}
+
+Rectf Animation::destination_rectangle(const Vector2f& position,
+                                                const Rectf& source_rect,
+                                                const float scale) const {
+	const float best_scale = find_best_scale(scale);
+	return Rectf(position.x - (hotspot_.x - source_rect.x / best_scale) * scale,
+	             position.y - (hotspot_.y - source_rect.y / best_scale) * scale,
+	             source_rect.w * scale / best_scale, source_rect.h * scale / best_scale);
+}
+
+uint16_t Animation::nr_frames() const {
+	assert(nr_frames_ > 0);
+	return nr_frames_;
+}
+
+int Animation::height() const {
+	return mipmap_entry(1.0f).height();
+}
+
+int Animation::width() const {
+	return mipmap_entry(1.0f).width();
+}
+
+uint32_t Animation::frametime() const {
+	assert(frametime_ > 0);
+	return frametime_;
+}
+
+const Vector2i& Animation::hotspot() const {
+	return hotspot_;
+}
+
+uint32_t Animation::current_frame(uint32_t time) const {
+	if (nr_frames() > 1) {
+		return (play_once_ && time / frametime_ > static_cast<uint32_t>(nr_frames() - 1)) ?
+		          static_cast<uint32_t>(nr_frames() - 1) :
+		          time / frametime_ % nr_frames();
+	}
+	return 0;
+}
+
+void Animation::add_available_scales(const std::string& basename, const std::string& directory) {
+	for (const auto& scale : kSupportedScales) {
+		add_scale_if_files_present(basename, directory, scale.first, scale.second);
+	}
+
+	if (mipmaps_.count(1.0f) == 0) {
+		// There might be only 1 scale
+		add_scale_if_files_present(basename, directory, 1.0f, "");
+		if (mipmaps_.count(1.0f) == 0) {
+			// No files found at all
+			throw Widelands::GameDataError(
+			   "Animation in directory '%s' with basename '%s' has no images for mandatory "
+			   "scale '1' in mipmap - supported scales are: 0.5, 1, 2, 4",
+			   directory.c_str(), basename.c_str());
+		}
+	}
+}
+
+// TODO(unknown): The chosen semantics of animation sound effects is problematic:
+// What if the game runs very slowly or very quickly?
+void Animation::trigger_sound(uint32_t time, const Widelands::Coords& coords) const {
+	if (sound_effect_ == kNoSoundEffect || coords == Widelands::Coords::null()) {
+		return;
+	}
+	if (current_frame(time) == 0) {
+		Notifications::publish(
+		   NoteSound(SoundType::kAmbient, sound_effect_, coords, sound_priority_));
+	}
+}
+
+std::set<float> Animation::available_scales() const  {
+	std::set<float> result;
+	for (const auto& scale : kSupportedScales) {
+		if (mipmaps_.count(scale.first) == 1) {
+			result.insert(scale.first);
+		}
+	}
+	return result;
+}
+
+void Animation::blit(uint32_t time,
+                              const Widelands::Coords& coords,
+                              const Rectf& source_rect,
+                              const Rectf& destination_rect,
+                              const RGBColor* clr,
+                              Surface* target,
+                              float scale) const {
+	mipmap_entry(find_best_scale(scale))
+	   .blit(current_frame(time), source_rect, destination_rect, clr, target);
+	trigger_sound(time, coords);
+}
+
+void Animation::load_default_scale_and_sounds() const {
+	mipmaps_.at(1.0f)->ensure_graphics_are_loaded();
+	if (sound_effect_ != kNoSoundEffect && !SoundHandler::is_backend_disabled()) {
+		g_sh->load_fx(SoundType::kAmbient, sound_effect_);
+	}
+}
+
+float Animation::find_best_scale(float scale) const {
+	assert(!mipmaps_.empty());
+	float result = mipmaps_.begin()->first;
+	for (const auto& mipmap : mipmaps_) {
+		// The map is reverse sorted, so we can break as soon as we are lower than the wanted scale
+		if (mipmap.first < scale) {
+			break;
+		}
+		result = mipmap.first;
+	}
+	return result;
+}
+
+int Animation::representative_frame() const {
+	return representative_frame_;
+}

=== renamed file 'src/graphic/animation.h' => 'src/graphic/animation/animation.h'
--- src/graphic/animation.h	2019-05-27 21:04:13 +0000
+++ src/graphic/animation/animation.h	2019-08-30 22:19:30 +0000
@@ -17,12 +17,12 @@
  *
  */
 
-#ifndef WL_GRAPHIC_ANIMATION_H
-#define WL_GRAPHIC_ANIMATION_H
+#ifndef WL_GRAPHIC_ANIMATION_ANIMATION_H
+#define WL_GRAPHIC_ANIMATION_ANIMATION_H
 
-#include <cstring>
 #include <map>
 #include <memory>
+#include <set>
 #include <string>
 #include <vector>
 
@@ -31,16 +31,14 @@
 #include "base/macros.h"
 #include "base/rect.h"
 #include "base/vector.h"
+#include "graphic/color.h"
+#include "graphic/image.h"
 #include "graphic/surface.h"
-#include "logic/widelands_geometry.h"
-
-class Image;
-class LuaTable;
-class Surface;
-struct RGBColor;
-
-/// FRAME_LENGTH is the default animation speed
-constexpr int FRAME_LENGTH = 250;
+#include "scripting/lua_table.h"
+#include "sound/constants.h"
+
+/// The default animation speed
+constexpr int kFrameLength = 250;
 
 /**
  * Representation of an Animation in the game. An animation is a looping set of
@@ -53,30 +51,44 @@
  */
 class Animation {
 public:
-	Animation(int representative_frame) : representative_frame_(representative_frame) {
-	}
-	virtual ~Animation() {
-	}
+	/// Whether we have an animation consisting of multiple files or of 1 single spritesheet file
+	enum class Type {
+		kFile,
+		kSpritesheet
+	};
+
+	/// The mipmap scales supported by the engine as float and filename suffix.
+	/// Ensure that this always matches supported_scales in data/scripting/mapobjects.lua.
+	static const std::map<float, std::string> kSupportedScales;
+	explicit Animation(const LuaTable& table);
+	virtual ~Animation() = default;
 
 	/// The height of this animation.
-	virtual float height() const = 0;
+	int height() const;
+	/// The width of this animation.
+	int width() const;
+	/// The hotspot of this animation for aligning it on the map.
+	const Vector2i& hotspot() const;
+
+	/// The frame to be blitted for the given 'time'
+	uint32_t current_frame(uint32_t time) const;
 
 	/// The size of the animation source images in pixels. Use 'percent_from_bottom' to crop the
 	/// animation.
-	virtual Rectf source_rectangle(int percent_from_bottom, float scale) const = 0;
+	Rectf source_rectangle(int percent_from_bottom, float scale) const;
 
 	/// Calculates the destination rectangle for blitting the animation in pixels.
 	/// 'position' is where the top left corner of the animation will end up,
 	/// 'source_rect' is the rectangle calculated by source_rectangle,
 	/// 'scale' is the zoom scale.
-	virtual Rectf
-	destination_rectangle(const Vector2f& position, const Rectf& source_rect, float scale) const = 0;
-
-	/// The number of animation frames of this animation.
-	virtual uint16_t nr_frames() const = 0;
-
-	/// The number of milliseconds each frame will be displayed.
-	virtual uint32_t frametime() const = 0;
+	Rectf
+	destination_rectangle(const Vector2f& position, const Rectf& source_rect, float scale) const;
+
+	/// The number of animation frames of this animation. Returns a positive integer.
+	uint16_t nr_frames() const;
+
+	/// The number of milliseconds each frame will be displayed. Returns a positive integer.
+	uint32_t frametime() const;
 
 	/// An image of the first frame, blended with the given player color.
 	/// The 'clr' is the player color used for blending - the parameter can be
@@ -89,66 +101,107 @@
 	/// The 'clr' is the player color used for blitting - the parameter can be 'nullptr',
 	/// in which case the neutral image will be blitted. The Surface is the 'target'
 	/// for the blit operation and must be non-null.
-	virtual void blit(uint32_t time,
+	void blit(uint32_t time,
 	                  const Widelands::Coords& coords,
 	                  const Rectf& source_rect,
 	                  const Rectf& destination_rect,
 	                  const RGBColor* clr,
-	                  Surface* target,
-	                  float scale) const = 0;
+	                  Surface* target, float scale) const;
+
+	/// We need to expose these for the packed animation,
+	/// so that the create_spritesheet utility can use them.
+	/// Do not use otherwise.
+	virtual std::vector<const Image*> images(float scale) const = 0;
+	/// We need to expose these for the packed animation,
+	/// so that the create_spritemap utility can use them.
+	/// Do not use otherwise.
+	virtual std::vector<const Image*> pc_masks(float scale) const = 0;
+
+	/// The scales for which this animation has exact images.
+	std::set<float> available_scales() const;
 
 	/// Load animation images into memory for default scale.
-	virtual void load_default_scale_and_sounds() const = 0;
+	void load_default_scale_and_sounds() const;
+
+	/// The frame to be shown in menus etc.
+	int representative_frame() const;
 
 protected:
+	/// Animation data for a particular scale
+	struct MipMapEntry {
+
+		MipMapEntry();
+		virtual ~MipMapEntry() {}
+
+		/// Loads the graphics if they are not yet loaded.
+		virtual void ensure_graphics_are_loaded() const = 0;
+
+		/// Load the needed graphics from disk.
+		virtual void load_graphics() = 0;
+
+		/// Blit the frame at the given index
+		virtual void blit(uint32_t idx,
+		          const Rectf& source_rect,
+		          const Rectf& destination_rect,
+		          const RGBColor* clr,
+		          Surface* target) const = 0;
+
+		/// The width of this mipmap entry's textures
+		virtual int width() const = 0;
+		/// The height of this mipmap entry's textures
+		virtual int height() const = 0;
+
+		/// Whether this texture set has player color masks provided
+		bool has_playercolor_masks;
+	};
+
+	/// Register animations for the scales listed in kSupportedScales if available. The scale of 1.0 is mandatory.
+	void add_available_scales(const std::string& basename, const std::string& directory);
+
 	/// Play the sound effect associated with this animation at the given time.
 	/// Any sound effects are played with stereo position according to 'coords'.
 	/// If 'coords' == Widelands::Coords::null(), skip playing any sound effects.
-	virtual void trigger_sound(uint32_t time, const Widelands::Coords& coords) const = 0;
-
-protected:
+	void trigger_sound(uint32_t time, const Widelands::Coords& coords) const;
+
+	/// Ensures that the graphics are loaded before returning the entry
+	const Animation::MipMapEntry& mipmap_entry(float scale) const;
+
+	/// The number of textures this animation will play
+	uint16_t nr_frames_;
+
+	/// Reverse sort the zoom scales for faster lookup
+	struct MipMapCompare {
+	  inline bool operator() (const float lhs, const float rhs) const
+	  {return lhs > rhs;}
+	};
+	/// Texture sets for different zoom scales
+	std::map<float, std::unique_ptr<MipMapEntry>, MipMapCompare> mipmaps_;
+
+private:
+	DISALLOW_COPY_AND_ASSIGN(Animation);
+
+	/// Look for a file or files for the given scale, and if we have any, add a mipmap entry for them.
+	virtual void add_scale_if_files_present(const std::string& basename, const std::string& directory,
+							   float scale_as_float, const std::string& scale_as_string) = 0;
+
+	/// Find the best scale for blitting at the given zoom 'scale'
+	float find_best_scale(float scale) const;
+
+	/// The frame to show in menus, in the in-game help etc.
 	int representative_frame_;
 
-private:
-	DISALLOW_COPY_AND_ASSIGN(Animation);
-};
-
-/**
- * The animation manager manages a list of all active animations.
- */
-class AnimationManager {
-public:
-	/**
-	 * Loads an animation, graphics sound and everything from a Lua table.
-	 *
-	 * The 'basename' is the filename prefix for loading the images, e.g. "idle" or "walk_ne".
-	 *
-	 * The Lua table must contain a table 'pictures' with image paths and a 'hotspot' table.
-	 *
-	 * Optional parameters in the Lua table are 'fps' and 'sound_effect'.
-	 */
-	uint32_t load(const LuaTable& table, const std::string& basename);
-	/// Same as above, but this animation will be used for getting a representative image by map
-	/// object name
-	uint32_t
-	load(const std::string& map_object_name, const LuaTable& table, const std::string& basename);
-
-	/// Returns the animation with the given ID or throws an exception if it is
-	/// unknown.
-	const Animation& get_animation(uint32_t id) const;
-
-	/// Returns the representative image, using the given player color.
-	/// If this image has been generated before, it is pulled from the cache using
-	/// the clr argument that was used previously.
-	const Image* get_representative_image(uint32_t id, const RGBColor* clr = nullptr);
-	const Image* get_representative_image(const std::string& map_object_name,
-	                                      const RGBColor* clr = nullptr);
-
-private:
-	std::vector<std::unique_ptr<Animation>> animations_;
-	std::map<std::pair<uint32_t, const RGBColor*>, std::unique_ptr<const Image>>
-	   representative_images_;
-	std::map<std::string, uint32_t> representative_animations_by_map_object_name_;
-};
-
-#endif  // end of include guard: WL_GRAPHIC_ANIMATION_H
+	/// For aligning the image on the map
+	Vector2i hotspot_ = Vector2i::zero();
+
+	/// The length of each frame
+	const uint32_t frametime_;
+	/// If this is 'true', don't loop the animation
+	const bool play_once_;
+
+	/// ID of sound effect that will be played at frame 0, or kNoSoundEffect if there is no sound effect to be played.
+	FxId sound_effect_;
+	/// How likely it is that the sound effect will be played
+	int32_t sound_priority_;
+};
+
+#endif  // end of include guard: WL_GRAPHIC_ANIMATION_ANIMATION_H

=== added file 'src/graphic/animation/animation_manager.cc'
--- src/graphic/animation/animation_manager.cc	1970-01-01 00:00:00 +0000
+++ src/graphic/animation/animation_manager.cc	2019-08-30 22:19:30 +0000
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2002-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#include "graphic/animation/animation_manager.h"
+
+#include <memory>
+
+#include "graphic/animation/nonpacked_animation.h"
+#include "graphic/animation/spritesheet_animation.h"
+#include "graphic/graphic.h"
+
+
+uint32_t AnimationManager::load(const LuaTable& table, const std::string& basename, Animation::Type type) {
+	switch (type) {
+	case Animation::Type::kFile:
+		animations_.push_back(std::unique_ptr<Animation>(new NonPackedAnimation(table, basename)));
+		break;
+	case Animation::Type::kSpritesheet:
+		animations_.push_back(std::unique_ptr<Animation>(new SpriteSheetAnimation(table, basename)));
+	}
+	return animations_.size();
+}
+uint32_t AnimationManager::load(const std::string& map_object_name,
+                                const LuaTable& table,
+                                const std::string& basename, Animation::Type type) {
+	const size_t result = load(table, basename, type);
+	representative_animations_by_map_object_name_.insert(std::make_pair(map_object_name, result));
+	return result;
+}
+
+const Animation& AnimationManager::get_animation(uint32_t id) const {
+	if (!id || id > animations_.size()) {
+		throw wexception("Requested unknown animation with id: %i", id);
+	}
+	return *animations_[id - 1];
+}
+
+const Image* AnimationManager::get_representative_image(uint32_t id, const RGBColor* clr) {
+	const auto hash = std::make_pair(id, clr);
+	if (representative_images_.count(hash) != 1) {
+		representative_images_.insert(std::make_pair(
+		   hash, std::unique_ptr<const Image>(
+		            std::move(g_gr->animations().get_animation(id).representative_image(clr)))));
+	}
+	return representative_images_.at(hash).get();
+}
+
+const Image* AnimationManager::get_representative_image(const std::string& map_object_name,
+                                                        const RGBColor* clr) {
+	if (representative_animations_by_map_object_name_.count(map_object_name) != 1) {
+		log("Warning: %s has no animation assigned for its representative image, or it's not a known "
+		    "map object\n",
+		    map_object_name.c_str());
+		return new Texture(0, 0);
+	}
+	return get_representative_image(
+	   representative_animations_by_map_object_name_.at(map_object_name), clr);
+}

=== added file 'src/graphic/animation/animation_manager.h'
--- src/graphic/animation/animation_manager.h	1970-01-01 00:00:00 +0000
+++ src/graphic/animation/animation_manager.h	2019-08-30 22:19:30 +0000
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2002-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#ifndef WL_GRAPHIC_ANIMATION_ANIMATION_MANAGER_H
+#define WL_GRAPHIC_ANIMATION_ANIMATION_MANAGER_H
+
+#include <map>
+#include <memory>
+#include <vector>
+
+#include "graphic/animation/animation.h"
+#include "graphic/color.h"
+#include "graphic/image.h"
+#include "scripting/lua_table.h"
+
+/**
+* The animation manager manages a list of all active animations.
+*/
+class AnimationManager {
+public:
+	/**
+	 * Loads an animation, graphics sound and everything from a Lua table.
+	 * For the contents of the Lua table, cf. doc/sphinx/source/animations.rst or https://www.widelands.org/documentation/animations/.
+	 *
+	 * The 'basename' is the filename prefix for loading the images, e.g. "idle" or "walk_ne".
+	 */
+	uint32_t load(const LuaTable& table, const std::string& basename, Animation::Type type);
+	/// Same as above, but this animation will be used for getting a representative image by map
+	/// object name
+	uint32_t load(const std::string& map_object_name, const LuaTable& table, const std::string& basename, Animation::Type type);
+
+	/// Returns the animation with the given ID or throws an exception if it is
+	/// unknown.
+	const Animation& get_animation(uint32_t id) const;
+
+	/// Returns the representative image for the animation with the given 'id', using the given player color.
+	/// If this image has already been generated, it is pulled from the cache using
+	/// the clr argument that was used previously.
+	const Image* get_representative_image(uint32_t id, const RGBColor* clr = nullptr);
+
+	/// Returns the representative image for the given map object, using the given player color.
+	/// If this image has already been generated, it is pulled from the cache using
+	/// the clr argument that was used previously.
+	const Image* get_representative_image(const std::string& map_object_name,
+	                                      const RGBColor* clr = nullptr);
+
+private:
+	/// A list of all known animations
+	std::vector<std::unique_ptr<Animation>> animations_;
+	/// Maps the animations' vector indices + player colors to their representative images
+	std::map<std::pair<uint32_t, const RGBColor*>, std::unique_ptr<const Image>>
+	   representative_images_;
+	/// Maps map object names to the ID of the animations that contain their representative images
+	std::map<std::string, uint32_t> representative_animations_by_map_object_name_;
+};
+
+#endif  // end of include guard: WL_GRAPHIC_ANIMATION_ANIMATION_MANAGER_H

=== added file 'src/graphic/animation/diranimations.cc'
--- src/graphic/animation/diranimations.cc	1970-01-01 00:00:00 +0000
+++ src/graphic/animation/diranimations.cc	2019-08-30 22:19:30 +0000
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2002-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#include "graphic/animation/diranimations.h"
+
+DirAnimations::DirAnimations(
+   uint32_t dir1, uint32_t dir2, uint32_t dir3, uint32_t dir4, uint32_t dir5, uint32_t dir6) {
+	animations_[0] = dir1;
+	animations_[1] = dir2;
+	animations_[2] = dir3;
+	animations_[3] = dir4;
+	animations_[4] = dir5;
+	animations_[5] = dir6;
+}

=== renamed file 'src/graphic/diranimations.h' => 'src/graphic/animation/diranimations.h'
--- src/graphic/diranimations.h	2019-02-23 11:00:49 +0000
+++ src/graphic/animation/diranimations.h	2019-08-30 22:19:30 +0000
@@ -17,8 +17,8 @@
  *
  */
 
-#ifndef WL_GRAPHIC_DIRANIMATIONS_H
-#define WL_GRAPHIC_DIRANIMATIONS_H
+#ifndef WL_GRAPHIC_ANIMATION_DIRANIMATIONS_H
+#define WL_GRAPHIC_ANIMATION_DIRANIMATIONS_H
 
 #include <string>
 
@@ -54,4 +54,4 @@
 	uint32_t animations_[6];
 };
 
-#endif  // end of include guard: WL_GRAPHIC_DIRANIMATIONS_H
+#endif  // end of include guard: WL_GRAPHIC_ANIMATION_DIRANIMATIONS_H

=== renamed file 'src/graphic/animation.cc' => 'src/graphic/animation/nonpacked_animation.cc'
--- src/graphic/animation.cc	2019-05-27 21:04:13 +0000
+++ src/graphic/animation/nonpacked_animation.cc	2019-08-30 22:19:30 +0000
@@ -17,124 +17,25 @@
  *
  */
 
-#include "graphic/animation.h"
+#include "graphic/animation/nonpacked_animation.h"
 
 #include <cassert>
 #include <cstdio>
 #include <limits>
 #include <memory>
-#include <set>
 
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/format.hpp>
 
-#include "base/i18n.h"
-#include "base/log.h"
 #include "base/macros.h"
-#include "graphic/diranimations.h"
 #include "graphic/graphic.h"
 #include "graphic/image.h"
-#include "graphic/image_cache.h"
 #include "graphic/playercolor.h"
 #include "graphic/texture.h"
 #include "io/filesystem/filesystem.h"
 #include "io/filesystem/layered_filesystem.h"
 #include "logic/game_data_error.h"
 #include "scripting/lua_table.h"
-#include "sound/note_sound.h"
-#include "sound/sound_handler.h"
-
-namespace {
-// The mipmap scales supported by the engine.
-// Ensure that this always matches supported_scales in data/scripting/mapobjects.lua.
-const std::set<float> kSupportedScales{0.5, 1, 2, 4};
-
-/**
- * Implements the Animation interface for an animation that is unpacked on disk, that
- * is every frame and every pc color frame is an singular file on disk.
- */
-class NonPackedAnimation : public Animation {
-public:
-	struct MipMapEntry {
-		explicit MipMapEntry(std::vector<std::string> files);
-
-		// Loads the graphics if they are not yet loaded.
-		void ensure_graphics_are_loaded() const;
-
-		// Load the needed graphics from disk.
-		void load_graphics();
-
-		void blit(uint32_t idx,
-		          const Rectf& source_rect,
-		          const Rectf& destination_rect,
-		          const RGBColor* clr,
-		          Surface* target) const;
-
-		// Whether this image set has player color masks provided
-		bool has_playercolor_masks;
-
-		// Image files on disk
-		std::vector<std::string> image_files;
-
-		// Loaded images for each frame
-		std::vector<const Image*> frames;
-
-	private:
-		// Player color mask files on disk
-		std::vector<std::string> playercolor_mask_image_files;
-
-		// Loaded player color mask images for each frame
-		std::vector<const Image*> playercolor_mask_frames;
-	};
-
-	~NonPackedAnimation() override {
-	}
-	explicit NonPackedAnimation(const LuaTable& table, const std::string& basename);
-
-	// Implements Animation.
-	float height() const override;
-	Rectf source_rectangle(int percent_from_bottom, float scale) const override;
-	Rectf destination_rectangle(const Vector2f& position,
-	                            const Rectf& source_rect,
-	                            float scale) const override;
-	uint16_t nr_frames() const override;
-	uint32_t frametime() const override;
-	const Image* representative_image(const RGBColor* clr) const override;
-	virtual void blit(uint32_t time,
-	                  const Widelands::Coords& coords,
-	                  const Rectf& source_rect,
-	                  const Rectf& destination_rect,
-	                  const RGBColor* clr,
-	                  Surface* target,
-	                  float scale) const override;
-	void load_default_scale_and_sounds() const override;
-
-private:
-	float find_best_scale(float scale) const;
-
-	// TODO(unknown): The chosen semantics of animation sound effects is problematic:
-	// What if the game runs very slowly or very quickly?
-	void trigger_sound(uint32_t framenumber, const Widelands::Coords& coords) const override;
-
-	uint32_t current_frame(uint32_t time) const;
-
-	uint32_t frametime_;
-	uint16_t nr_frames_;
-
-	Vector2i hotspot_;
-
-	struct MipMapCompare {
-		bool operator()(const float lhs, const float rhs) const {
-			return lhs > rhs;
-		}
-	};
-	std::map<float, std::unique_ptr<MipMapEntry>, MipMapCompare> mipmaps_;
-
-	// ID of sound effect that will be played at frame 0.
-	FxId sound_effect_;
-	int32_t sound_priority_;
-	bool play_once_;
-};
 
 /*
 ==============================================================================
@@ -144,8 +45,8 @@
 ==============================================================================
 */
 
-NonPackedAnimation::MipMapEntry::MipMapEntry(std::vector<std::string> files)
-   : has_playercolor_masks(false), image_files(files) {
+NonPackedAnimation::NonPackedMipMapEntry::NonPackedMipMapEntry(std::vector<std::string> files)
+   : Animation::MipMapEntry(), image_files(files) {
 	if (image_files.empty()) {
 		throw Widelands::GameDataError(
 		   "Animation without image files. For a scale of 1.0, the template should look similar to "
@@ -165,19 +66,15 @@
 	}
 
 	assert(!image_files.empty());
-	assert(playercolor_mask_image_files.size() == image_files.size() ||
-	       playercolor_mask_image_files.empty());
 }
 
-// Loads the graphics if they are not yet loaded.
-void NonPackedAnimation::MipMapEntry::ensure_graphics_are_loaded() const {
+void NonPackedAnimation::NonPackedMipMapEntry::ensure_graphics_are_loaded() const {
 	if (frames.empty()) {
-		const_cast<MipMapEntry*>(this)->load_graphics();
+		const_cast<NonPackedMipMapEntry*>(this)->load_graphics();
 	}
 }
 
-// Load the needed graphics from disk.
-void NonPackedAnimation::MipMapEntry::load_graphics() {
+void NonPackedAnimation::NonPackedMipMapEntry::load_graphics() {
 	if (image_files.empty()) {
 		throw Widelands::GameDataError("animation without image files.");
 	}
@@ -216,7 +113,7 @@
 	}
 }
 
-void NonPackedAnimation::MipMapEntry::blit(uint32_t idx,
+void NonPackedAnimation::NonPackedMipMapEntry::blit(uint32_t idx,
                                            const Rectf& source_rect,
                                            const Rectf& destination_rect,
                                            const RGBColor* clr,
@@ -233,6 +130,13 @@
 	}
 }
 
+int NonPackedAnimation::NonPackedMipMapEntry::width() const {
+	return frames.at(0)->width();
+}
+int NonPackedAnimation::NonPackedMipMapEntry::height() const {
+	return frames.at(0)->height();
+}
+
 /*
 ==============================================================================
 
@@ -242,102 +146,47 @@
 */
 
 NonPackedAnimation::NonPackedAnimation(const LuaTable& table, const std::string& basename)
-   : Animation(table.has_key("representative_frame") ? table.get_int("representative_frame") : 0),
-     frametime_(FRAME_LENGTH),
-     hotspot_(table.get_vector<std::string, int>("hotspot")),
-     sound_effect_(kNoSoundEffect),
-     sound_priority_(kFxPriorityLowest),
-     play_once_(false) {
+   : Animation(table) {
 	try {
-		// Sound
-		if (table.has_key("sound_effect")) {
-			std::unique_ptr<LuaTable> sound_effects = table.get_table("sound_effect");
-			sound_effect_ =
-			   SoundHandler::register_fx(SoundType::kAmbient, sound_effects->get_string("path"));
-
-			if (sound_effects->has_key<std::string>("priority")) {
-				sound_priority_ = sound_effects->get_int("priority");
-			}
-
-			if (sound_priority_ < kFxPriorityLowest) {
-				throw Widelands::GameDataError(
-				   "Minmum priority for sounds is %d, but only %d was specified for %s",
-				   kFxPriorityLowest, sound_priority_, sound_effects->get_string("path").c_str());
-			}
-		}
-
-		// Repetition
-		if (table.has_key("play_once")) {
-			play_once_ = table.get_bool("play_once");
-		}
-
 		// Get image files
 		if (table.has_key("pictures")) {
 			// TODO(GunChleoc): Old code - remove this option once conversion has been completed
 			mipmaps_.insert(std::make_pair(
-			   1.0f, std::unique_ptr<MipMapEntry>(
-			            new MipMapEntry(table.get_table("pictures")->array_entries<std::string>()))));
+			   1.0f, std::unique_ptr<NonPackedMipMapEntry>(
+			            new NonPackedMipMapEntry(table.get_table("pictures")->array_entries<std::string>()))));
 		} else {
 			if (basename.empty() || !table.has_key("directory")) {
 				throw Widelands::GameDataError(
 				   "Animation did not define both a basename and a directory for its image files");
 			}
-			const std::string directory = table.get_string("directory");
-
-			// List files for the given scale, and if we have any, add a mipmap entry for them.
-			auto add_scale = [this, basename, directory](
-			                    float scale_as_float, const std::string& scale_as_string) {
-				std::vector<std::string> filenames =
-				   g_fs->get_sequential_files(directory, basename + scale_as_string, "png");
-				if (!filenames.empty()) {
-					mipmaps_.insert(std::make_pair(
-					   scale_as_float, std::unique_ptr<MipMapEntry>(new MipMapEntry(filenames))));
-				}
-			};
-			add_scale(0.5f, "_0.5");
-			add_scale(1.0f, "_1");
-			add_scale(2.0f, "_2");
-			add_scale(4.0f, "_4");
-
-			if (mipmaps_.count(1.0f) == 0) {
-				// There might be only 1 scale
-				add_scale(1.0f, "");
-				if (mipmaps_.count(1.0f) == 0) {
-					// No files found at all
-					throw Widelands::GameDataError(
-					   "Animation in directory '%s' with basename '%s' has no images for mandatory "
-					   "scale '1' in mipmap - supported scales are: 0.5, 1, 2, 4",
-					   directory.c_str(), basename.c_str());
-				}
-			}
+			add_available_scales(basename, table.get_string("directory"));
 		}
 
-		// Frames and FPS
-		nr_frames_ = mipmaps_.begin()->second->image_files.size();
-		if (table.has_key("fps")) {
-			if (nr_frames_ == 1) {
+		// Frames
+		const NonPackedMipMapEntry& first = dynamic_cast<const NonPackedMipMapEntry&>(*mipmaps_.begin()->second.get());
+		nr_frames_ = first.image_files.size();
+		if (table.has_key("fps") && nr_frames_ == 1) {
 				throw Widelands::GameDataError("Animation with one picture %s must not have 'fps'",
-				                               mipmaps_.begin()->second->image_files.front().c_str());
-			}
-			frametime_ = 1000 / get_positive_int(table, "fps");
+				                               first.image_files.front().c_str());
 		}
 
-		if (representative_frame_ < 0 || representative_frame_ > nr_frames_ - 1) {
+		if (representative_frame() < 0 || representative_frame() > nr_frames_ - 1) {
 			throw wexception("Animation has %d as its representative frame, but the frame indices "
 			                 "available are 0 - %d",
-			                 representative_frame_, nr_frames_ - 1);
+			                 representative_frame(), nr_frames_ - 1);
 		}
 
 		// Perform some checks to make sure that the data is complete and consistent
 		const bool should_have_playercolor = mipmaps_.begin()->second->has_playercolor_masks;
 		for (const auto& mipmap : mipmaps_) {
-			if (mipmap.second->image_files.size() != nr_frames_) {
+			const NonPackedMipMapEntry& nonpacked_mipmap = dynamic_cast<const NonPackedMipMapEntry&>(*mipmap.second.get());
+			if (nonpacked_mipmap.image_files.size() != nr_frames_) {
 				throw Widelands::GameDataError(
 				   "Mismatched number of images for different scales in animation table: %" PRIuS
 				   " vs. %u at scale %.2f",
-				   mipmap.second->image_files.size(), nr_frames_, static_cast<double>(mipmap.first));
+				   nonpacked_mipmap.image_files.size(), nr_frames_, static_cast<double>(mipmap.first));
 			}
-			if (mipmap.second->has_playercolor_masks != should_have_playercolor) {
+			if (nonpacked_mipmap.has_playercolor_masks != should_have_playercolor) {
 				throw Widelands::GameDataError(
 				   "Mismatched existence of player colors in animation table for scales %.2f and %.2f",
 				   static_cast<double>(mipmaps_.begin()->first), static_cast<double>(mipmap.first));
@@ -352,40 +201,23 @@
 	}
 }
 
-float NonPackedAnimation::find_best_scale(float scale) const {
-	assert(!mipmaps_.empty());
-	float result = mipmaps_.begin()->first;
-	for (const auto& mipmap : mipmaps_) {
-		// The map is reverse sorted, so we can break as soon as we are lower than the wanted scale
-		if (mipmap.first < scale) {
-			break;
-		}
-		result = mipmap.first;
-	}
-	return result;
-}
-
-float NonPackedAnimation::height() const {
-	const MipMapEntry& mipmap = *mipmaps_.at(1.0f);
-	mipmap.ensure_graphics_are_loaded();
-	return mipmap.frames.front()->height();
-}
-
-uint16_t NonPackedAnimation::nr_frames() const {
-	return nr_frames_;
-}
-
-uint32_t NonPackedAnimation::frametime() const {
-	return frametime_;
+std::vector<const Image*> NonPackedAnimation::images(float scale) const {
+	const NonPackedMipMapEntry& mipmap = dynamic_cast<const NonPackedMipMapEntry&>(mipmap_entry(scale));
+	return mipmap.frames;
+}
+
+std::vector<const Image*> NonPackedAnimation::pc_masks(float scale) const {
+	const NonPackedMipMapEntry& mipmap = dynamic_cast<const NonPackedMipMapEntry&>(mipmap_entry(scale));
+	return mipmap.playercolor_mask_frames;
 }
 
 const Image* NonPackedAnimation::representative_image(const RGBColor* clr) const {
-	const MipMapEntry& mipmap = *mipmaps_.at(1.0f);
+	const NonPackedMipMapEntry& mipmap = dynamic_cast<const NonPackedMipMapEntry&>(mipmap_entry(1.0f));
 	std::vector<std::string> images = mipmap.image_files;
 	assert(!images.empty());
 	const Image* image = (mipmap.has_playercolor_masks && clr) ?
-	                        playercolor_image(*clr, images[representative_frame_]) :
-	                        g_gr->images().get(images[representative_frame_]);
+	                        playercolor_image(*clr, images[representative_frame()]) :
+	                        g_gr->images().get(images[representative_frame()]);
 
 	const int w = image->width();
 	const int h = image->height();
@@ -395,130 +227,12 @@
 	return rv;
 }
 
-uint32_t NonPackedAnimation::current_frame(uint32_t time) const {
-	if (nr_frames() > 1) {
-		return (play_once_ && time / frametime_ > static_cast<uint32_t>(nr_frames() - 1)) ?
-		          static_cast<uint32_t>(nr_frames() - 1) :
-		          time / frametime_ % nr_frames();
-	}
-	return 0;
-}
-
-void NonPackedAnimation::trigger_sound(uint32_t time, const Widelands::Coords& coords) const {
-	if (sound_effect_ == kNoSoundEffect || coords == Widelands::Coords::null()) {
-		return;
-	}
-
-	const uint32_t framenumber = current_frame(time);
-
-	if (framenumber == 0) {
-		Notifications::publish(
-		   NoteSound(SoundType::kAmbient, sound_effect_, coords, sound_priority_));
-	}
-}
-
-Rectf NonPackedAnimation::source_rectangle(const int percent_from_bottom, float scale) const {
-	const MipMapEntry& mipmap = *mipmaps_.at(find_best_scale(scale));
-	mipmap.ensure_graphics_are_loaded();
-	const Image* first_frame = mipmap.frames.front();
-	const float h = percent_from_bottom * first_frame->height() / 100;
-	// Using floor for pixel perfect positioning
-	return Rectf(0.f, std::floor(first_frame->height() - h), first_frame->width(), h);
-}
-
-Rectf NonPackedAnimation::destination_rectangle(const Vector2f& position,
-                                                const Rectf& source_rect,
-                                                const float scale) const {
-	const float best_scale = find_best_scale(scale);
-	return Rectf(position.x - (hotspot_.x - source_rect.x / best_scale) * scale,
-	             position.y - (hotspot_.y - source_rect.y / best_scale) * scale,
-	             source_rect.w * scale / best_scale, source_rect.h * scale / best_scale);
-}
-
-void NonPackedAnimation::blit(uint32_t time,
-                              const Widelands::Coords& coords,
-                              const Rectf& source_rect,
-                              const Rectf& destination_rect,
-                              const RGBColor* clr,
-                              Surface* target,
-                              float scale) const {
-	mipmaps_.at(find_best_scale(scale))
-	   ->blit(current_frame(time), source_rect, destination_rect, clr, target);
-	trigger_sound(time, coords);
-}
-
-void NonPackedAnimation::load_default_scale_and_sounds() const {
-	mipmaps_.at(1.0f)->ensure_graphics_are_loaded();
-	if (sound_effect_ != kNoSoundEffect && !SoundHandler::is_backend_disabled()) {
-		g_sh->load_fx(SoundType::kAmbient, sound_effect_);
-	}
-}
-
-}  // namespace
-
-/*
-==============================================================================
-
-DirAnimations IMPLEMENTAION
-
-==============================================================================
-*/
-
-DirAnimations::DirAnimations(
-   uint32_t dir1, uint32_t dir2, uint32_t dir3, uint32_t dir4, uint32_t dir5, uint32_t dir6) {
-	animations_[0] = dir1;
-	animations_[1] = dir2;
-	animations_[2] = dir3;
-	animations_[3] = dir4;
-	animations_[4] = dir5;
-	animations_[5] = dir6;
-}
-
-/*
-==============================================================================
-
-AnimationManager IMPLEMENTATION
-
-==============================================================================
-*/
-uint32_t AnimationManager::load(const LuaTable& table, const std::string& basename) {
-	animations_.push_back(std::unique_ptr<Animation>(new NonPackedAnimation(table, basename)));
-	return animations_.size();
-}
-uint32_t AnimationManager::load(const std::string& map_object_name,
-                                const LuaTable& table,
-                                const std::string& basename) {
-	animations_.push_back(std::unique_ptr<Animation>(new NonPackedAnimation(table, basename)));
-	const size_t result = animations_.size();
-	representative_animations_by_map_object_name_.insert(std::make_pair(map_object_name, result));
-	return result;
-}
-
-const Animation& AnimationManager::get_animation(uint32_t id) const {
-	if (!id || id > animations_.size())
-		throw Widelands::GameDataError("Requested unknown animation with id: %i", id);
-
-	return *animations_[id - 1];
-}
-
-const Image* AnimationManager::get_representative_image(uint32_t id, const RGBColor* clr) {
-	const auto hash = std::make_pair(id, clr);
-	if (representative_images_.count(hash) != 1) {
-		representative_images_.insert(std::make_pair(
-		   hash, std::unique_ptr<const Image>(
-		            std::move(g_gr->animations().get_animation(id).representative_image(clr)))));
-	}
-	return representative_images_.at(hash).get();
-}
-
-const Image* AnimationManager::get_representative_image(const std::string& map_object_name,
-                                                        const RGBColor* clr) {
-	if (representative_animations_by_map_object_name_.count(map_object_name) != 1) {
-		log("Warning: %s has no animation assigned for its representative image, or it's not a known "
-		    "map object\n",
-		    map_object_name.c_str());
-		return new Texture(0, 0);
-	}
-	return get_representative_image(
-	   representative_animations_by_map_object_name_.at(map_object_name), clr);
+void NonPackedAnimation::add_scale_if_files_present(const std::string& basename, const std::string& directory,
+			   float scale_as_float, const std::string& scale_as_string) {
+	std::vector<std::string> filenames =
+	   g_fs->get_sequential_files(directory, basename + scale_as_string, "png");
+	if (!filenames.empty()) {
+		mipmaps_.insert(std::make_pair(
+		   scale_as_float, std::unique_ptr<NonPackedMipMapEntry>(new NonPackedMipMapEntry(std::move(filenames)))));
+	}
 }

=== added file 'src/graphic/animation/nonpacked_animation.h'
--- src/graphic/animation/nonpacked_animation.h	1970-01-01 00:00:00 +0000
+++ src/graphic/animation/nonpacked_animation.h	2019-08-30 22:19:30 +0000
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2002-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#ifndef WL_GRAPHIC_ANIMATION_NONPACKED_ANIMATION_H
+#define WL_GRAPHIC_ANIMATION_NONPACKED_ANIMATION_H
+
+#include <map>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/rect.h"
+#include "base/vector.h"
+#include "graphic/animation/animation.h"
+#include "graphic/color.h"
+#include "graphic/image.h"
+#include "graphic/surface.h"
+#include "scripting/lua_table.h"
+
+/**
+ * Implements the Animation interface for an animation that is unpacked on disk, that
+ * is every frame and every pc color frame is an singular file on disk.
+ */
+class NonPackedAnimation : public Animation {
+public:
+	~NonPackedAnimation() override  = default;
+	explicit NonPackedAnimation(const LuaTable& table, const std::string& basename);
+
+	const Image* representative_image(const RGBColor* clr) const override;
+
+	std::vector<const Image*> images(float scale) const override;
+	std::vector<const Image*> pc_masks(float scale) const override;
+
+private:
+	void add_scale_if_files_present(const std::string& basename, const std::string& directory,
+								   float scale_as_float, const std::string& scale_as_string) override;
+
+	struct NonPackedMipMapEntry : Animation::MipMapEntry {
+		explicit NonPackedMipMapEntry(std::vector<std::string> files);
+		~NonPackedMipMapEntry() override = default;
+
+		void ensure_graphics_are_loaded() const override;
+		void load_graphics() override;
+
+		void blit(uint32_t idx,
+		          const Rectf& source_rect,
+		          const Rectf& destination_rect,
+		          const RGBColor* clr,
+		          Surface* target) const override;
+
+		int width() const override;
+		int height() const override;
+
+		/// Image files on disk
+		std::vector<std::string> image_files;
+
+		/// Loaded images for each frame
+		std::vector<const Image*> frames;
+
+		/// Loaded player color mask images for each frame
+		std::vector<const Image*> playercolor_mask_frames;
+
+	private:
+		/// Player color mask files on disk
+		std::vector<std::string> playercolor_mask_image_files;
+	};
+};
+#endif  // end of include guard: WL_GRAPHIC_ANIMATION_NONPACKED_ANIMATION_H

=== added file 'src/graphic/animation/spritesheet_animation.cc'
--- src/graphic/animation/spritesheet_animation.cc	1970-01-01 00:00:00 +0000
+++ src/graphic/animation/spritesheet_animation.cc	2019-08-30 22:19:30 +0000
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#include "graphic/animation/spritesheet_animation.h"
+
+#include <cassert>
+#include <cstdio>
+#include <limits>
+#include <memory>
+
+#include <boost/algorithm/string/replace.hpp>
+#include <boost/format.hpp>
+
+#include "base/log.h"
+#include "base/macros.h"
+#include "graphic/graphic.h"
+#include "graphic/image.h"
+#include "graphic/playercolor.h"
+#include "graphic/texture.h"
+#include "io/filesystem/filesystem.h"
+#include "io/filesystem/layered_filesystem.h"
+#include "logic/game_data_error.h"
+#include "scripting/lua_table.h"
+
+/*
+==============================================================================
+
+SpriteSheetAnimation::MipMapEntry IMPLEMENTATION
+
+==============================================================================
+*/
+
+SpriteSheetAnimation::SpriteSheetMipMapEntry::SpriteSheetMipMapEntry(const std::string& file, int init_rows, int init_columns)
+   : Animation::MipMapEntry(), sheet(nullptr), playercolor_mask_sheet(nullptr), rows(init_rows), columns(init_columns), w(0), h(0), sheet_file(file), playercolor_mask_sheet_file("") {
+
+	assert(g_fs->file_exists(file));
+
+	playercolor_mask_sheet_file = file;
+	boost::replace_last(playercolor_mask_sheet_file, ".png", "_pc.png");
+	if (g_fs->file_exists(playercolor_mask_sheet_file)) {
+		has_playercolor_masks = true;
+	} else {
+		playercolor_mask_sheet_file = "";
+	}
+}
+
+
+void SpriteSheetAnimation::SpriteSheetMipMapEntry::ensure_graphics_are_loaded() const {
+	if (sheet == nullptr) {
+		const_cast<SpriteSheetMipMapEntry*>(this)->load_graphics();
+	}
+}
+
+void SpriteSheetAnimation::SpriteSheetMipMapEntry::load_graphics() {
+	sheet = g_gr->images().get(sheet_file);
+
+	if (!playercolor_mask_sheet_file.empty()) {
+		playercolor_mask_sheet = g_gr->images().get(playercolor_mask_sheet_file);
+
+		if (sheet->width() != playercolor_mask_sheet->width()) {
+			throw Widelands::GameDataError(
+			   "animation sprite sheet has width %d but playercolor mask sheet has width %d. The sheet's image is %s",
+			   sheet->width(), playercolor_mask_sheet->width(), sheet_file.c_str());
+		}
+		if (sheet->height() != playercolor_mask_sheet->height()) {
+			throw Widelands::GameDataError(
+			   "animation sprite sheet has height %d but playercolor mask sheet has height %d. The sheet's image is %s",
+			   sheet->height(), playercolor_mask_sheet->height(), sheet_file.c_str());
+		}
+	}
+
+	// Frame width and height
+	w = sheet->width() / columns;
+	h = sheet->height() / rows;
+}
+
+void SpriteSheetAnimation::SpriteSheetMipMapEntry::blit(uint32_t idx,
+                                           const Rectf& source_rect,
+                                           const Rectf& destination_rect,
+                                           const RGBColor* clr,
+                                           Surface* target) const {
+	assert(sheet != nullptr);
+	assert(target);
+	assert(static_cast<int>(idx) <= columns * rows);
+
+	const int column = idx % columns;
+	const int row = idx / columns;
+
+	Rectf frame_rect(source_rect.x + column * width(), source_rect.y + row * height(),
+					 source_rect.w, source_rect.h);
+
+	if (!has_playercolor_masks || clr == nullptr) {
+		target->blit(destination_rect, *sheet, frame_rect, 1., BlendMode::UseAlpha);
+	} else {
+		assert(playercolor_mask_sheet != nullptr);
+		target->blit_blended(
+		   destination_rect, *sheet, *playercolor_mask_sheet, frame_rect, *clr);
+	}
+}
+
+int SpriteSheetAnimation::SpriteSheetMipMapEntry::width() const {
+	return w;
+}
+int SpriteSheetAnimation::SpriteSheetMipMapEntry::height() const {
+	return h;
+}
+
+/*
+==============================================================================
+
+SpriteSheetAnimation IMPLEMENTATION
+
+==============================================================================
+*/
+
+SpriteSheetAnimation::SpriteSheetAnimation(const LuaTable& table, const std::string& basename)
+   : Animation(table) {
+	try {
+		// Get image files
+		if (basename.empty() || !table.has_key("directory")) {
+			throw Widelands::GameDataError(
+			   "Animation did not define both a basename and a directory for its sprite sheet file");
+		}
+		const std::string directory = table.get_string("directory");
+
+		// Frames, rows and columns
+		nr_frames_ = table.get_int("frames");
+		rows_ = table.get_int("rows");
+		columns_ = table.get_int("columns");
+
+		add_available_scales(basename, directory);
+
+		// Perform some checks to make sure that the data is complete and consistent
+		const SpriteSheetMipMapEntry& first = dynamic_cast<const SpriteSheetMipMapEntry&>(*mipmaps_.begin()->second.get());
+		if (table.has_key("fps") && nr_frames_ == 1) {
+				throw Widelands::GameDataError("'%s' sprite sheet animation with one frame must not have 'fps'",
+				                               basename.c_str());
+		}
+
+		if (representative_frame() < 0 || representative_frame() > nr_frames_ - 1) {
+			throw Widelands::GameDataError("Animation has %d as its representative frame, but the frame indices "
+			                 "available are 0 - %d",
+			                 representative_frame(), nr_frames_ - 1);
+		}
+
+		if (rows_ * columns_ < nr_frames_) {
+			throw Widelands::GameDataError("Animation has %d frames, which does not fit into %d rows x %d columns",
+										   nr_frames_, rows_, columns_);
+		}
+
+		const bool should_have_playercolor = first.has_playercolor_masks;
+		for (const auto& mipmap : mipmaps_) {
+			if (first.has_playercolor_masks != should_have_playercolor) {
+				throw Widelands::GameDataError(
+				   "Mismatched existence of player colors in animation table for scales %.2f and %.2f",
+				   static_cast<double>(mipmaps_.begin()->first), static_cast<double>(mipmap.first));
+			}
+		}
+		if (mipmaps_.count(1.0f) != 1) {
+			throw Widelands::GameDataError(
+			   "All animations must provide images for the neutral scale (1.0)");
+		}
+	} catch (const LuaError& e) {
+		throw Widelands::GameDataError("Error in animation table: %s", e.what());
+	}
+}
+
+std::vector<const Image*> SpriteSheetAnimation::images(float) const {
+	// We only need to implement this if we add compressed spritemaps, or maybe for usage in a test
+	log("ERROR: Accessing image files is not supported by spritesheets\n");
+	NEVER_HERE();
+}
+
+std::vector<const Image*> SpriteSheetAnimation::pc_masks(float) const {
+	// We only need to implement this if we add compressed spritemaps, or maybe for usage in a test
+	log("ERROR: Accessing image files is not supported by spritesheets\n");
+	NEVER_HERE();
+}
+
+const Image* SpriteSheetAnimation::representative_image(const RGBColor* clr) const {
+	const SpriteSheetMipMapEntry& mipmap = dynamic_cast<const SpriteSheetMipMapEntry&>(mipmap_entry(1.0f));
+	const int column = representative_frame() % columns_;
+	const int row = representative_frame() / columns_;
+	const int w = width();
+	const int h = height();
+
+	Texture* rv = new Texture(w, h);
+	Rectf rect(Vector2f::zero(), w, h);
+	if (mipmap.has_playercolor_masks && clr) {
+		rv->fill_rect(rect, RGBAColor(0, 0, 0, 0));
+		rv->blit_blended(Rectf(column * w, row * h, w, h), *mipmap.sheet, *mipmap.playercolor_mask_sheet, rect, *clr);
+	} else {
+		rv->blit(Rectf(column * w, row * h, w, h), *mipmap.sheet, rect, 1., BlendMode::Copy);
+	}
+	return rv;
+}
+
+void SpriteSheetAnimation::add_scale_if_files_present(const std::string& basename, const std::string& directory,
+			   float scale_as_float, const std::string& scale_as_string) {
+	const std::string path =
+	   directory + g_fs->file_separator() + basename + scale_as_string + ".png";
+	if (g_fs->file_exists(path)) {
+		mipmaps_.insert(std::make_pair(
+		   scale_as_float, std::unique_ptr<SpriteSheetMipMapEntry>(new SpriteSheetMipMapEntry(path, rows_, columns_))));
+	}
+}

=== added file 'src/graphic/animation/spritesheet_animation.h'
--- src/graphic/animation/spritesheet_animation.h	1970-01-01 00:00:00 +0000
+++ src/graphic/animation/spritesheet_animation.h	2019-08-30 22:19:30 +0000
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#ifndef WL_GRAPHIC_ANIMATION_SPRITESHEET_ANIMATION_H
+#define WL_GRAPHIC_ANIMATION_SPRITESHEET_ANIMATION_H
+
+#include <map>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/rect.h"
+#include "base/vector.h"
+#include "graphic/animation/animation.h"
+#include "graphic/color.h"
+#include "graphic/image.h"
+#include "graphic/surface.h"
+#include "scripting/lua_table.h"
+
+/**
+ * Implements the Animation interface for an animation where the images are in a spritesheet.
+ */
+class SpriteSheetAnimation : public Animation {
+public:
+	~SpriteSheetAnimation() override = default;
+	explicit SpriteSheetAnimation(const LuaTable& table, const std::string& basename);
+
+	const Image* representative_image(const RGBColor* clr) const override;
+
+	std::vector<const Image*> images(float scale) const override;
+	std::vector<const Image*> pc_masks(float scale) const override;
+
+private:
+	void add_scale_if_files_present(const std::string& basename, const std::string& directory,
+								   float scale_as_float, const std::string& scale_as_string) override;
+
+	struct SpriteSheetMipMapEntry : Animation::MipMapEntry {
+		explicit SpriteSheetMipMapEntry(const std::string& file, int init_rows, int columns);
+
+		void ensure_graphics_are_loaded() const override;
+		void load_graphics() override;
+
+		void blit(uint32_t idx,
+		          const Rectf& source_rect,
+		          const Rectf& destination_rect,
+		          const RGBColor* clr,
+		          Surface* target) const override;
+
+		int width() const override;
+		int height() const override;
+
+		/// Loaded sprite sheet for all frames
+		const Image* sheet;
+
+		/// Loaded player color mask sprite sheet for all frames
+		const Image* playercolor_mask_sheet;
+
+		/// Number of rows for the spritesheets
+		const int rows;
+		/// Number of columns for the spritesheets
+		const int columns;
+		/// Texture width
+		int w;
+		/// Texture height
+		int h;
+
+	private:
+		/// Sprite sheet file name on disk
+		const std::string sheet_file;
+
+		/// Player color mask file on disk
+		std::string playercolor_mask_sheet_file;
+	};
+
+	/// Number of rows for the spritesheets
+	int rows_;
+	/// Number of columns for the spritesheets
+	int columns_;
+};
+#endif  // end of include guard: WL_GRAPHIC_ANIMATION_SPRITESHEET_ANIMATION_H

=== modified file 'src/graphic/graphic.cc'
--- src/graphic/graphic.cc	2019-03-12 20:55:44 +0000
+++ src/graphic/graphic.cc	2019-08-30 22:19:30 +0000
@@ -26,7 +26,7 @@
 #include "base/wexception.h"
 #include "build_info.h"
 #include "graphic/align.h"
-#include "graphic/animation.h"
+#include "graphic/animation/animation_manager.h"
 #include "graphic/build_texture_atlas.h"
 #include "graphic/gl/initialize.h"
 #include "graphic/gl/system_headers.h"

=== modified file 'src/graphic/rendertarget.cc'
--- src/graphic/rendertarget.cc	2019-05-27 14:28:34 +0000
+++ src/graphic/rendertarget.cc	2019-08-30 22:19:30 +0000
@@ -21,7 +21,8 @@
 
 #include "base/macros.h"
 #include "graphic/align.h"
-#include "graphic/animation.h"
+#include "graphic/animation/animation.h"
+#include "graphic/animation/animation_manager.h"
 #include "graphic/graphic.h"
 #include "graphic/surface.h"
 

=== modified file 'src/graphic/text/rt_render.cc'
--- src/graphic/text/rt_render.cc	2019-05-26 17:21:15 +0000
+++ src/graphic/text/rt_render.cc	2019-08-30 22:19:30 +0000
@@ -36,7 +36,8 @@
 #include "base/vector.h"
 #include "base/wexception.h"
 #include "graphic/align.h"
-#include "graphic/animation.h"
+#include "graphic/animation/animation.h"
+#include "graphic/animation/animation_manager.h"
 #include "graphic/graphic.h"
 #include "graphic/image_cache.h"
 #include "graphic/image_io.h"

=== modified file 'src/logic/CMakeLists.txt'
--- src/logic/CMakeLists.txt	2019-08-27 19:00:30 +0000
+++ src/logic/CMakeLists.txt	2019-08-30 22:19:30 +0000
@@ -230,6 +230,7 @@
     economy
     game_io
     graphic
+    graphic_animation
     graphic_color
     graphic_playercolor
     io_fileread

=== modified file 'src/logic/map_objects/bob.h'
--- src/logic/map_objects/bob.h	2019-04-24 06:01:37 +0000
+++ src/logic/map_objects/bob.h	2019-08-30 22:19:30 +0000
@@ -23,8 +23,7 @@
 #include "base/macros.h"
 #include "base/vector.h"
 #include "economy/route.h"
-#include "graphic/animation.h"
-#include "graphic/diranimations.h"
+#include "graphic/animation/diranimations.h"
 #include "logic/map_objects/draw_text.h"
 #include "logic/map_objects/map_object.h"
 #include "logic/map_objects/walkingdir.h"

=== modified file 'src/logic/map_objects/immovable.cc'
--- src/logic/map_objects/immovable.cc	2019-05-28 17:01:30 +0000
+++ src/logic/map_objects/immovable.cc	2019-08-30 22:19:30 +0000
@@ -30,6 +30,7 @@
 #include "base/macros.h"
 #include "base/wexception.h"
 #include "config.h"
+#include "graphic/animation/animation_manager.h"
 #include "graphic/graphic.h"
 #include "graphic/rendertarget.h"
 #include "helper.h"

=== modified file 'src/logic/map_objects/immovable.h'
--- src/logic/map_objects/immovable.h	2019-04-24 06:01:37 +0000
+++ src/logic/map_objects/immovable.h	2019-08-30 22:19:30 +0000
@@ -24,7 +24,6 @@
 #include <unordered_map>
 
 #include "base/macros.h"
-#include "graphic/animation.h"
 #include "logic/map_objects/buildcost.h"
 #include "logic/map_objects/draw_text.h"
 #include "logic/map_objects/map_object.h"

=== modified file 'src/logic/map_objects/map_object.cc'
--- src/logic/map_objects/map_object.cc	2019-05-27 21:04:13 +0000
+++ src/logic/map_objects/map_object.cc	2019-08-30 22:19:30 +0000
@@ -29,6 +29,7 @@
 
 #include "base/log.h"
 #include "base/wexception.h"
+#include "graphic/animation/animation_manager.h"
 #include "graphic/font_handler.h"
 #include "graphic/graphic.h"
 #include "graphic/rendertarget.h"
@@ -242,13 +243,20 @@
                     init_name,
                     init_descname,
                     table.has_key("helptext_script") ? table.get_string("helptext_script") : "") {
+	bool has_animations = false;
 	if (table.has_key("animations")) {
-		add_animations(*table.get_table("animations"));
+		has_animations = true;
+		add_animations(*table.get_table("animations"), Animation::Type::kFile);
+	}
+	if (table.has_key("spritesheets")) {
+		has_animations = true;
+		add_animations(*table.get_table("spritesheets"), Animation::Type::kSpritesheet);
+	}
+	if (has_animations) {
 		if (!is_animation_known("idle")) {
 			throw GameDataError(
 			   "Map object %s has animations but no idle animation", init_name.c_str());
 		}
-
 		assert(g_gr->animations().get_representative_image(name())->width() > 0);
 	}
 	if (table.has_key("icon")) {
@@ -273,7 +281,7 @@
 /**
  * Add all animations for this map object
  */
-void MapObjectDescr::add_animations(const LuaTable& table) {
+void MapObjectDescr::add_animations(const LuaTable& table, Animation::Type anim_type) {
 	for (const std::string& animname : table.keys<std::string>()) {
 		try {
 			std::unique_ptr<LuaTable> anim = table.get_table(animname);
@@ -293,7 +301,7 @@
 					const std::string directional_basename =
 					   basename + animation_direction_names[dir - 1];
 					anims_.insert(std::pair<std::string, uint32_t>(
-					   directional_animname, g_gr->animations().load(*anim, directional_basename)));
+					   directional_animname, g_gr->animations().load(*anim, directional_basename, anim_type)));
 				}
 			} else {
 				if (is_animation_known(animname)) {
@@ -302,10 +310,10 @@
 				}
 				if (animname == "idle") {
 					anims_.insert(std::pair<std::string, uint32_t>(
-					   animname, g_gr->animations().load(name_, *anim, basename)));
+					   animname, g_gr->animations().load(name_, *anim, basename, anim_type)));
 				} else {
 					anims_.insert(std::pair<std::string, uint32_t>(
-					   animname, g_gr->animations().load(*anim, basename)));
+					   animname, g_gr->animations().load(*anim, basename, anim_type)));
 				}
 			}
 		} catch (const std::exception& e) {

=== modified file 'src/logic/map_objects/map_object.h'
--- src/logic/map_objects/map_object.h	2019-05-25 08:51:42 +0000
+++ src/logic/map_objects/map_object.h	2019-08-30 22:19:30 +0000
@@ -32,6 +32,8 @@
 
 #include "base/log.h"
 #include "base/macros.h"
+#include "graphic/animation/animation.h"
+#include "graphic/animation/diranimations.h"
 #include "graphic/color.h"
 #include "graphic/image.h"
 #include "logic/cmd_queue.h"
@@ -43,7 +45,6 @@
 
 class FileRead;
 class RenderTarget;
-struct DirAnimations;
 
 namespace Widelands {
 
@@ -157,7 +158,7 @@
 	void assign_directional_animation(DirAnimations* anims, const std::string& basename);
 
 private:
-	void add_animations(const LuaTable& table);
+	void add_animations(const LuaTable& table, Animation::Type anim_type);
 
 	/// Throws an exception if the MapObjectDescr has no representative image
 	void check_representative_image();

=== modified file 'src/logic/map_objects/tribes/constructionsite.cc'
--- src/logic/map_objects/tribes/constructionsite.cc	2019-06-23 11:41:17 +0000
+++ src/logic/map_objects/tribes/constructionsite.cc	2019-08-30 22:19:30 +0000
@@ -27,7 +27,8 @@
 #include "base/macros.h"
 #include "base/wexception.h"
 #include "economy/wares_queue.h"
-#include "graphic/animation.h"
+#include "graphic/animation/animation.h"
+#include "graphic/animation/animation_manager.h"
 #include "graphic/graphic.h"
 #include "graphic/rendertarget.h"
 #include "logic/editor_game_base.h"
@@ -78,25 +79,25 @@
 		++animation_index;
 		assert(animation_index < animations.size());
 	}
-	const uint32_t anim_time = frame_index * FRAME_LENGTH;
+	const uint32_t anim_time = frame_index * kFrameLength;
 
 	if (frame_index > 0) {
 		// Not the first pic within this animation – draw the previous one
 		dst->blit_animation(point_on_dst, Widelands::Coords::null(), scale,
-		                    animations[animation_index].first, anim_time - FRAME_LENGTH,
+		                    animations[animation_index].first, anim_time - kFrameLength,
 		                    &player_color);
 	} else if (animation_index > 0) {
 		// The first pic, but not the first series of animations – draw the last pic of the previous
 		// series
 		dst->blit_animation(
 		   point_on_dst, Widelands::Coords::null(), scale, animations[animation_index - 1].first,
-		   FRAME_LENGTH * (animations[animation_index - 1].second - 1), &player_color);
+		   kFrameLength * (animations[animation_index - 1].second - 1), &player_color);
 	} else if (was) {
 		//  First pic in first series, but there was another building here before –
 		//  get its most fitting picture and draw it instead
 		const uint32_t unocc = was->get_unoccupied_animation();
 		dst->blit_animation(point_on_dst, Widelands::Coords::null(), scale, unocc,
-		                    FRAME_LENGTH * (g_gr->animations().get_animation(unocc).nr_frames() - 1),
+		                    kFrameLength * (g_gr->animations().get_animation(unocc).nr_frames() - 1),
 		                    &player_color);
 	}
 	// Now blit a segment of the current construction phase from the bottom.

=== modified file 'src/logic/map_objects/tribes/dismantlesite.cc'
--- src/logic/map_objects/tribes/dismantlesite.cc	2019-05-26 17:21:15 +0000
+++ src/logic/map_objects/tribes/dismantlesite.cc	2019-08-30 22:19:30 +0000
@@ -27,7 +27,6 @@
 #include "base/macros.h"
 #include "base/wexception.h"
 #include "economy/wares_queue.h"
-#include "graphic/animation.h"
 #include "graphic/rendertarget.h"
 #include "logic/editor_game_base.h"
 #include "logic/game.h"

=== modified file 'src/logic/map_objects/tribes/ship.h'
--- src/logic/map_objects/tribes/ship.h	2019-04-24 06:51:31 +0000
+++ src/logic/map_objects/tribes/ship.h	2019-08-30 22:19:30 +0000
@@ -25,7 +25,7 @@
 
 #include "base/macros.h"
 #include "economy/shippingitem.h"
-#include "graphic/diranimations.h"
+#include "graphic/animation/diranimations.h"
 #include "logic/map_objects/bob.h"
 
 namespace Widelands {

=== modified file 'src/logic/map_objects/tribes/soldier.cc'
--- src/logic/map_objects/tribes/soldier.cc	2019-05-27 14:25:47 +0000
+++ src/logic/map_objects/tribes/soldier.cc	2019-08-30 22:19:30 +0000
@@ -30,6 +30,7 @@
 #include "base/wexception.h"
 #include "economy/economy.h"
 #include "economy/flag.h"
+#include "graphic/animation/animation_manager.h"
 #include "graphic/graphic.h"
 #include "graphic/rendertarget.h"
 #include "helper.h"

=== modified file 'src/logic/map_objects/tribes/tribe_descr.cc'
--- src/logic/map_objects/tribes/tribe_descr.cc	2019-05-30 19:34:33 +0000
+++ src/logic/map_objects/tribes/tribe_descr.cc	2019-08-30 22:19:30 +0000
@@ -29,6 +29,7 @@
 #include "base/i18n.h"
 #include "base/macros.h"
 #include "base/wexception.h"
+#include "graphic/animation/animation_manager.h"
 #include "graphic/graphic.h"
 #include "io/filesystem/layered_filesystem.h"
 #include "logic/game.h"
@@ -67,11 +68,13 @@
 			std::unique_ptr<LuaTable> animations_table = items_table->get_table("frontier");
 			frontier_animation_id_ =
 			   g_gr->animations().load(name_ + std::string("_frontier"), *animations_table,
-			                           animations_table->get_string("basename"));
+			                           animations_table->get_string("basename"),
+									   animations_table->has_key("columns") ? Animation::Type::kSpritesheet : Animation::Type::kFile);
 			animations_table = items_table->get_table("flag");
 			flag_animation_id_ =
-			   g_gr->animations().load(name_ + std::string("_frontier"), *animations_table,
-			                           animations_table->get_string("basename"));
+			   g_gr->animations().load(name_ + std::string("_flag"), *animations_table,
+			                           animations_table->get_string("basename"),
+									   animations_table->has_key("columns") ? Animation::Type::kSpritesheet : Animation::Type::kFile);
 		}
 
 		items_table = table.get_table("roads");
@@ -121,26 +124,8 @@
 		items_table = table.get_table("workers_order");
 		for (const int key : items_table->keys<int>()) {
 			std::vector<DescriptionIndex> column;
-			std::vector<std::string> workernames =
-			   items_table->get_table(key)->array_entries<std::string>();
-			for (size_t rowindex = 0; rowindex < workernames.size(); ++rowindex) {
-				try {
-					DescriptionIndex workerindex = tribes_.safe_worker_index(workernames[rowindex]);
-					if (has_worker(workerindex)) {
-						throw GameDataError(
-						   "Duplicate definition of worker '%s'", workernames[rowindex].c_str());
-					}
-					workers_.insert(workerindex);
-					column.push_back(workerindex);
-
-					const WorkerDescr& worker_descr = *tribes_.get_worker_descr(workerindex);
-					if (worker_descr.is_buildable() && worker_descr.buildcost().empty()) {
-						worker_types_without_cost_.push_back(workerindex);
-					}
-				} catch (const WException& e) {
-					throw GameDataError(
-					   "Failed adding worker '%s: %s", workernames[rowindex].c_str(), e.what());
-				}
+			for (const std::string& workername : items_table->get_table(key)->array_entries<std::string>()) {
+				add_worker(workername, column);
 			}
 			if (!column.empty()) {
 				workers_order_.push_back(column);
@@ -448,6 +433,30 @@
 	}
 }
 
+void TribeDescr::add_worker(const std::string& workername, std::vector<DescriptionIndex>& workers_order_column) {
+	try {
+		DescriptionIndex workerindex = tribes_.safe_worker_index(workername);
+		if (has_worker(workerindex)) {
+			throw GameDataError(
+			   "Duplicate definition of worker '%s'", workername.c_str());
+		}
+		workers_.insert(workerindex);
+		workers_order_column.push_back(workerindex);
+
+		const WorkerDescr& worker_descr = *tribes_.get_worker_descr(workerindex);
+		if (worker_descr.is_buildable() && worker_descr.buildcost().empty()) {
+			worker_types_without_cost_.push_back(workerindex);
+		}
+	} catch (const WException& e) {
+		throw GameDataError(
+		   "Failed adding worker '%s: %s", workername.c_str(), e.what());
+	}
+}
+
+void TribeDescr::add_worker(const std::string& workername) {
+	add_worker(workername, workers_order_.back());
+}
+
 ToolbarImageset* TribeDescr::toolbar_image_set() const {
 	return toolbar_image_set_.get();
 }

=== modified file 'src/logic/map_objects/tribes/tribe_descr.h'
--- src/logic/map_objects/tribes/tribe_descr.h	2019-05-30 19:34:33 +0000
+++ src/logic/map_objects/tribes/tribe_descr.h	2019-08-30 22:19:30 +0000
@@ -25,7 +25,7 @@
 #include <vector>
 
 #include "base/macros.h"
-#include "graphic/animation.h"
+#include "graphic/animation/animation.h"
 #include "graphic/toolbar_imageset.h"
 #include "logic/map_objects/immovable.h"
 #include "logic/map_objects/tribes/building.h"
@@ -161,12 +161,18 @@
 		return ship_names_;
 	}
 
+	/// Registers a building with the tribe
 	void add_building(const std::string& buildingname);
+	/// Registers a worker with the tribe and adds it to the bottom of the last worker column
+	void add_worker(const std::string& workername);
 
 	// The custom toolbar imageset if any. Can be nullptr.
 	ToolbarImageset* toolbar_image_set() const;
 
 private:
+	/// Registers a worker with the tribe and adds it to the bottom of the given worker column
+	void add_worker(const std::string& workername, std::vector<DescriptionIndex>& workers_order_column);
+
 	// Helper function for adding a special worker type (carriers etc.)
 	DescriptionIndex add_special_worker(const std::string& workername);
 	// Helper function for adding a special building type (port etc.)

=== modified file 'src/logic/map_objects/tribes/tribes.cc'
--- src/logic/map_objects/tribes/tribes.cc	2019-06-23 12:45:29 +0000
+++ src/logic/map_objects/tribes/tribes.cc	2019-08-30 22:19:30 +0000
@@ -149,6 +149,16 @@
 	}
 }
 
+void Tribes::add_custom_worker(const LuaTable& table) {
+	const std::string tribename = table.get_string("tribename");
+	if (Widelands::tribe_exists(tribename)) {
+		TribeDescr* descr = tribes_->get_mutable(tribe_index(tribename));
+		descr->add_worker(table.get_string("workername"));
+	} else {
+		throw GameDataError("The tribe '%s'' has no preload file.", tribename.c_str());
+	}
+}
+
 size_t Tribes::nrbuildings() const {
 	return buildings_->size();
 }

=== modified file 'src/logic/map_objects/tribes/tribes.h'
--- src/logic/map_objects/tribes/tribes.h	2019-05-16 09:15:03 +0000
+++ src/logic/map_objects/tribes/tribes.h	2019-08-30 22:19:30 +0000
@@ -94,7 +94,10 @@
 	/// Adds a specific tribe's configuration.
 	void add_tribe(const LuaTable& table);
 
+	/// Registers a custom scenario building with the tribes
 	void add_custom_building(const LuaTable& table);
+	/// Registers a custom scenario worker with the tribes
+	void add_custom_worker(const LuaTable& table);
 
 	size_t nrbuildings() const;
 	size_t nrtribes() const;

=== modified file 'src/logic/map_objects/tribes/ware_descr.cc'
--- src/logic/map_objects/tribes/ware_descr.cc	2019-05-22 11:23:14 +0000
+++ src/logic/map_objects/tribes/ware_descr.cc	2019-08-30 22:19:30 +0000
@@ -24,7 +24,6 @@
 #include <boost/format.hpp>
 
 #include "base/i18n.h"
-#include "graphic/animation.h"
 #include "logic/game_data_error.h"
 #include "logic/map_objects/tribes/tribe_descr.h"
 

=== modified file 'src/logic/map_objects/tribes/worker_descr.cc'
--- src/logic/map_objects/tribes/worker_descr.cc	2019-05-25 08:51:42 +0000
+++ src/logic/map_objects/tribes/worker_descr.cc	2019-08-30 22:19:30 +0000
@@ -95,8 +95,6 @@
 	assign_directional_animation(&walk_anims_, "walk");
 
 	// Many workers don't carry wares, so they have no walkload animation.
-	std::unique_ptr<LuaTable> anims(table.get_table("animations"));
-	anims->do_not_warn_about_unaccessed_keys();
 	if (is_animation_known("walkload_e")) {
 		assign_directional_animation(&walkload_anims_, "walkload");
 	}

=== modified file 'src/logic/map_objects/tribes/worker_descr.h'
--- src/logic/map_objects/tribes/worker_descr.h	2019-05-26 11:45:16 +0000
+++ src/logic/map_objects/tribes/worker_descr.h	2019-08-30 22:19:30 +0000
@@ -24,7 +24,7 @@
 
 #include "ai/ai_hints.h"
 #include "base/macros.h"
-#include "graphic/diranimations.h"
+#include "graphic/animation/diranimations.h"
 #include "logic/map_objects/bob.h"
 #include "logic/map_objects/immovable.h"
 #include "scripting/lua_table.h"

=== modified file 'src/logic/map_objects/world/critter.h'
--- src/logic/map_objects/world/critter.h	2019-02-23 11:00:49 +0000
+++ src/logic/map_objects/world/critter.h	2019-08-30 22:19:30 +0000
@@ -21,7 +21,7 @@
 #define WL_LOGIC_MAP_OBJECTS_WORLD_CRITTER_H
 
 #include "base/macros.h"
-#include "graphic/diranimations.h"
+#include "graphic/animation/diranimations.h"
 #include "logic/map_objects/bob.h"
 
 class LuaTable;

=== modified file 'src/logic/map_objects/world/terrain_description.cc'
--- src/logic/map_objects/world/terrain_description.cc	2019-02-23 11:00:49 +0000
+++ src/logic/map_objects/world/terrain_description.cc	2019-08-30 22:19:30 +0000
@@ -24,7 +24,7 @@
 #include <boost/format.hpp>
 
 #include "base/i18n.h"
-#include "graphic/animation.h"
+#include "graphic/animation/animation.h"
 #include "graphic/graphic.h"
 #include "graphic/texture.h"
 #include "logic/game_data_error.h"
@@ -124,7 +124,7 @@
 	}
 
 	texture_paths_ = table.get_table("textures")->array_entries<std::string>();
-	frame_length_ = FRAME_LENGTH;
+	frame_length_ = kFrameLength;
 	if (texture_paths_.empty()) {
 		throw GameDataError("Terrain %s has no images.", name_.c_str());
 	} else if (texture_paths_.size() == 1) {

=== modified file 'src/scripting/lua_root.cc'
--- src/scripting/lua_root.cc	2019-03-01 04:19:53 +0000
+++ src/scripting/lua_root.cc	2019-08-30 22:19:30 +0000
@@ -540,6 +540,7 @@
    METHOD(LuaTribes, new_warehouse_type),
    METHOD(LuaTribes, new_worker_type),
    METHOD(LuaTribes, add_custom_building),
+	METHOD(LuaTribes, add_custom_worker),
    {0, 0},
 };
 const PropertyType<LuaTribes> LuaTribes::Properties[] = {
@@ -926,6 +927,41 @@
 	return 0;
 }
 
+
+/* RST
+   .. method:: add_custom_worker{table}
+
+      Adds a worker building to a tribe, e.g. for use in a scenario.
+      The worker must already be known to the tribes and should be defined in
+      the ``map:scripting/tribes/`` directory.
+
+      **Note:** This function *has* to be called from ``map:scripting/tribes/init.lua``.
+
+      The table has the following entries:
+
+      **tribename**
+         *Mandatory*. The name of the tribe that this worker will be added to.
+
+      **workername**
+         *Mandatory*. The name of the worker to be added to the tribe.
+
+      :returns: :const:`0`
+*/
+int LuaTribes::add_custom_worker(lua_State* L) {
+	if (lua_gettop(L) != 2) {
+		report_error(L, "Takes only one argument.");
+	}
+
+	try {
+		LuaTable table(L);  // Will pop the table eventually.
+		EditorGameBase& egbase = get_egbase(L);
+		egbase.mutable_tribes()->add_custom_worker(table);
+	} catch (std::exception& e) {
+		report_error(L, "%s", e.what());
+	}
+	return 0;
+}
+
 /*
  ==========================================================
  C METHODS

=== modified file 'src/scripting/lua_root.h'
--- src/scripting/lua_root.h	2019-02-23 11:00:49 +0000
+++ src/scripting/lua_root.h	2019-08-30 22:19:30 +0000
@@ -173,6 +173,7 @@
 	int new_warehouse_type(lua_State* L);
 	int new_worker_type(lua_State* L);
 	int add_custom_building(lua_State* L);
+	int add_custom_worker(lua_State* L);
 
 	/*
 	 * C methods

=== modified file 'src/website/CMakeLists.txt'
--- src/website/CMakeLists.txt	2019-05-04 15:37:33 +0000
+++ src/website/CMakeLists.txt	2019-08-30 22:19:30 +0000
@@ -1,3 +1,4 @@
+add_subdirectory(lua)
 add_subdirectory(json)
 
 wl_library(website_common
@@ -12,6 +13,23 @@
     io_filesystem
 )
 
+wl_binary(wl_create_spritesheet
+  SRCS
+    create_spritesheet.cc
+  DEPENDS
+    base_log
+    base_macros
+    graphic
+    graphic_animation
+    graphic_image_io
+    graphic_surface
+    io_filesystem
+    logic
+    logic_constants
+    lua_tree
+    website_common
+)
+
 
 wl_binary(wl_map_info
   SRCS

=== added file 'src/website/create_spritesheet.cc'
--- src/website/create_spritesheet.cc	1970-01-01 00:00:00 +0000
+++ src/website/create_spritesheet.cc	2019-08-30 22:19:30 +0000
@@ -0,0 +1,361 @@
+/*
+ * Copyright (C) 2018-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include <cassert>
+#include <memory>
+#include <vector>
+
+#include <SDL.h>
+#include <boost/algorithm/string.hpp>
+#include <boost/format.hpp>
+
+#include "base/log.h"
+#include "base/macros.h"
+#include "graphic/animation/animation.h"
+#include "graphic/animation/animation_manager.h"
+#include "graphic/graphic.h"
+#include "graphic/image.h"
+#include "graphic/image_io.h"
+#include "io/filesystem/filesystem.h"
+#include "io/filesystem/layered_filesystem.h"
+#include "logic/editor_game_base.h"
+#include "logic/map_objects/tribes/tribes.h"
+#include "logic/map_objects/world/critter.h"
+#include "logic/map_objects/world/world.h"
+#include "logic/widelands.h"
+#include "website/lua/lua_tree.h"
+#include "website/website_common.h"
+
+namespace {
+char const* const animation_direction_names[6] = {"_ne", "_e", "_se", "_sw", "_w", "_nw"};
+
+// Find trimmed rect according to transparent pixels.
+// Lock texture before you call this function.
+// TODO(GunChleoc): Revisit trimming when we have fresh Blender exports, to make sure that we won't jump a pixel when zooming
+void find_trim_rect(Texture* texture, Recti* rect) {
+	const int max_x = texture->width();
+	const int max_y = texture->height();
+
+	// Find left margin
+	bool found = false;
+	for (int x = 0; x < max_x && !found; ++x) {
+		for (int y = 0; y < max_y && !found; ++y) {
+			RGBAColor pixel = texture->get_pixel(x, y);
+			if (pixel.a != 0) {
+				rect->x = std::min(rect->x, x - 1);
+				found = true;
+			}
+		}
+	}
+	// Find right margin
+	found = false;
+	for (int x = max_x - 1; x >= 0 && !found; --x) {
+		for (int y = 0; y < max_y && !found; ++y) {
+			RGBAColor pixel = texture->get_pixel(x, y);
+			if (pixel.a != 0) {
+				rect->w = std::max(max_x, x + 1 - rect->x);
+				found = true;
+			}
+		}
+	}
+	// Find top margin
+	found = false;
+	for (int y = 0; y < max_y && !found; ++y) {
+		for (int x = 0; x < max_x && !found; ++x) {
+			RGBAColor pixel = texture->get_pixel(x, y);
+			if (pixel.a != 0) {
+				rect->y = std::min(rect->y, y - 1);
+				found = true;
+			}
+		}
+	}
+	// Find bottom margin
+	found = false;
+	for (int y = max_y - 1; y >= 0 && !found; --y) {
+		for (int x = 0; x < max_x && !found; ++x) {
+			RGBAColor pixel = texture->get_pixel(x, y);
+			if (pixel.a != 0) {
+				rect->h = std::max(max_y, y + 1 - rect->y);
+				found = true;
+			}
+		}
+	}
+}
+
+// Finds margins so that we can crop the animation to save space
+void find_margins(const std::vector<const Image*>& images, Recti* margins) {
+	for (const Image* image : images) {
+		std::unique_ptr<Texture> temp_texture(new Texture(image->width(), image->height()));
+		Rectf image_dimensions(Vector2f::zero(), image->width(), image->height());
+		temp_texture->blit(image_dimensions, *image, image_dimensions, 1., BlendMode::Copy);
+		temp_texture->lock();
+		find_trim_rect(temp_texture.get(), margins);
+	}
+}
+
+// Write a spritesheet of the given images into the given filename
+void write_spritesheet(std::vector<const Image*> imgs, const std::string& filename, const Recti& rect, int columns, int spritesheet_width, int spritesheet_height, FileSystem* out_filesystem) {
+	log("CREATING %d x %d spritesheet with %d columns, %" PRIuS " frames. Image size: %d x %d.\n", spritesheet_width, spritesheet_height, columns, imgs.size(), rect.w, rect.h);
+	std::unique_ptr<Texture> spritesheet(new Texture(spritesheet_width, spritesheet_height));
+	spritesheet->fill_rect(Rectf(Vector2f::zero(), spritesheet_width, spritesheet_height), RGBAColor(0, 0, 0, 0));
+	int row = 0;
+	int col = 0;
+	for (size_t i = 0; i < imgs.size(); ++i, ++col) {
+		if (col == columns) {
+			col = 0;
+			++row;
+		}
+		const Image* image = imgs[i];
+		const int x = col * rect.w;
+		const int y = row * rect.h;
+		log("Frame %" PRIuS " at: %d, %d, %d, %d\n", i, x, y, x + rect.w, y + rect.h);
+		spritesheet->blit(Rectf(x, y, rect.w, rect.h), *image, Rectf(rect.x, rect.y, rect.w, rect.h), 1., BlendMode::Copy);
+	}
+	std::unique_ptr<::StreamWrite> sw(out_filesystem->open_stream_write(filename));
+	save_to_png(spritesheet.get(), sw.get(), ColorType::RGBA);
+	log("Wrote spritesheet to %s/%s\n", out_filesystem->get_basename().c_str(), filename.c_str());
+}
+
+// Container for writing spritesheet files
+struct SpritesheetData {
+	explicit SpritesheetData(const std::string& fb,
+						   const std::vector<const Image*>& im,
+						   const std::vector<const Image*>& pc) :
+		filename_base(fb),
+		images(im),
+		pc_masks(pc) {}
+
+	const std::string filename_base;
+	const std::vector<const Image*> images;
+	const std::vector<const Image*> pc_masks;
+};
+
+// Reads animation data from engine and then creates spritesheets and the corresponding lua code.
+void write_animation_spritesheets(Widelands::EditorGameBase& egbase,
+                     const std::string& map_object_name,
+                     const std::string& animation_name,
+                     FileSystem* out_filesystem) {
+	const Widelands::Tribes& tribes = egbase.tribes();
+	const Widelands::World& world = egbase.world();
+	log("==========================================\n");
+
+	bool is_fontier_or_flag_animation = false;
+	uint32_t frontier_or_flag_animation_id = 0;
+
+	// Get the map object
+	const Widelands::MapObjectDescr* descr = nullptr;
+	if (tribes.building_exists(tribes.building_index(map_object_name))) {
+		descr = tribes.get_building_descr(tribes.building_index(map_object_name));
+	} else if (tribes.ware_exists(tribes.ware_index(map_object_name))) {
+		descr = tribes.get_ware_descr(tribes.ware_index(map_object_name));
+	} else if (tribes.worker_exists(tribes.worker_index(map_object_name))) {
+		descr = tribes.get_worker_descr(tribes.worker_index(map_object_name));
+	} else if (tribes.immovable_exists(tribes.immovable_index(map_object_name))) {
+		descr = tribes.get_immovable_descr(tribes.immovable_index(map_object_name));
+	} else if (tribes.ship_exists(tribes.ship_index(map_object_name))) {
+		descr = tribes.get_ship_descr(tribes.ship_index(map_object_name));
+	} else if (world.get_immovable_index(map_object_name) != Widelands::INVALID_INDEX) {
+		descr = world.get_immovable_descr(world.get_immovable_index(map_object_name));
+	} else if (world.get_critter_descr(map_object_name)) {
+		descr = world.get_critter_descr(map_object_name);
+	} else {
+		// Frontier and flag animations need special treatment
+		std::vector<std::string> map_object_name_vector;
+		boost::split(
+		   map_object_name_vector, map_object_name, boost::is_any_of("_"));
+		if (map_object_name_vector.size() == 2) {
+			const Widelands::TribeDescr* tribe =
+			   tribes.get_tribe_descr(tribes.tribe_index(map_object_name_vector.front()));
+			if (map_object_name_vector.back() == "frontier") {
+				is_fontier_or_flag_animation = true;
+				frontier_or_flag_animation_id = tribe->frontier_animation();
+			} else if (map_object_name_vector.back() == "flag") {
+				is_fontier_or_flag_animation = true;
+				frontier_or_flag_animation_id = tribe->flag_animation();
+			}
+		}
+	}
+	if (!is_fontier_or_flag_animation && descr == nullptr) {
+		log("ABORTING. Unable to find map object for '%s'!\n", map_object_name.c_str());
+		return;
+	}
+	assert(is_fontier_or_flag_animation || (descr->name() == map_object_name));
+
+	const bool is_directional = !is_fontier_or_flag_animation && descr->is_animation_known(animation_name + animation_direction_names[0]);
+
+	// Ensure that the animation exists
+	if (!is_fontier_or_flag_animation) {
+		if (!descr->is_animation_known(animation_name) && !descr->is_animation_known(animation_name + "_ne")) {
+			log("ABORTING. Unknown animation '%s' for '%s'\n", animation_name.c_str(),
+				map_object_name.c_str());
+			return;
+		}
+	}
+
+	// Representative animation for collecting global paramaters for the animation set
+	const Animation& representative_animation =
+			g_gr->animations().get_animation(is_fontier_or_flag_animation ?
+												 frontier_or_flag_animation_id :
+												 descr->get_animation(is_directional ?
+																		  animation_name + "_ne" :
+																		  animation_name, nullptr));
+
+	const int nr_frames = representative_animation.nr_frames();
+
+	// Only create spritesheet if animation has more than 1 frame.
+	if (nr_frames < 2) {
+		log("ABORTING. Animation '%s' for '%s' has less than 2 images and doesn't need a spritesheet.\n", animation_name.c_str(),
+			map_object_name.c_str());
+		return;
+	}
+
+	// Add global paramaters for this animation to Lua
+	std::unique_ptr<LuaTree::Element> lua_object(new LuaTree::Element());
+	LuaTree::Object* lua_animation = lua_object->add_object(animation_name);
+	lua_animation->add_raw("directory", "path.dirname(__file__)"); // NOCOM no idea why this is leaking memory
+	lua_animation->add_string("basename", animation_name);
+
+	// We only write FPS if the animation is not a build animation and does not use the default FPS.
+	if (animation_name != "build") {
+		uint32_t frametime = representative_animation.frametime();
+		assert(frametime > 0);
+		if (frametime != kFrameLength) {
+			assert(nr_frames > 1);
+			lua_animation->add_int("fps", 1000 / frametime);
+		}
+	}
+
+	log("WRITING '%s' animation for '%s'. It has %d pictures and %" PRIuS " scales.\n", animation_name.c_str(),
+		map_object_name.c_str(), nr_frames, representative_animation.available_scales().size());
+
+	const int columns = floor(sqrt(nr_frames));
+	int rows = 1;
+	while (rows * columns < nr_frames) {
+		++rows;
+	}
+
+	lua_animation->add_int("frames", nr_frames);
+	lua_animation->add_int("rows", rows);
+	lua_animation->add_int("columns", columns);
+
+	const int representative_frame = representative_animation.representative_frame();
+	if (representative_frame > 0) {
+		lua_animation->add_int("representative_frame", representative_frame);
+	}
+
+	if (is_directional) {
+		lua_animation->add_bool("directional", true);
+	}
+
+	// Create image files for each scale and find & write the hotspot
+	for (const float scale : representative_animation.available_scales()) {
+		// Collect animation data to write
+		std::vector<SpritesheetData> spritesheets_to_write;
+		if (is_directional) {
+			for (int dir = 1; dir <= 6; ++dir) {
+				const std::string directional_animname =
+				   animation_name + animation_direction_names[dir - 1];
+				if (!descr->is_animation_known(directional_animname)) {
+					throw wexception("Missing directional animation '%s\'",
+										directional_animname.c_str());
+				}
+				const std::string filename_base =
+				   (boost::format("%s%s_%d") % animation_name % animation_direction_names[dir - 1] % scale).str();
+				const Animation& directional_animation =
+				 g_gr->animations().get_animation(descr->get_animation(directional_animname, nullptr));
+				spritesheets_to_write.push_back(SpritesheetData(filename_base,
+										   directional_animation.images(scale),
+										   directional_animation.pc_masks(scale)));
+			}
+
+		} else {
+			spritesheets_to_write.push_back(SpritesheetData((boost::format("%s_%d") % animation_name % scale).str(),
+									   representative_animation.images(scale),
+									   representative_animation.pc_masks(scale)));
+		}
+
+		// Find margins for trimming
+		std::vector<const Image*> images = spritesheets_to_write.front().images;
+		Recti margins(images.front()->width() / 2, images.front()->height() / 2, images.front()->width() / 2, images.front()->height() / 2);
+		for (const auto& animation_data : spritesheets_to_write) {
+			find_margins(animation_data.images, &margins);
+		}
+
+		// Write the spritesheet(s)
+		const int spritesheet_width = columns * margins.w;
+		const int spritesheet_height = rows * margins.h;
+
+		if (spritesheet_width > kMinimumSizeForTextures || spritesheet_height > kMinimumSizeForTextures) {
+			egbase.cleanup_objects();
+			throw wexception("Unable to create spritesheet; either the width (%d) or the height (%d) are bigger than the minimum supported texture size (%d)", spritesheet_width, spritesheet_height, kMinimumSizeForTextures);
+		}
+
+		// Write spritesheets for animation and player colors
+		for (const auto& spritesheet_data : spritesheets_to_write) {
+			write_spritesheet(spritesheet_data.images, spritesheet_data.filename_base + ".png", margins, columns, spritesheet_width, spritesheet_height, out_filesystem);
+			if (!spritesheet_data.pc_masks.empty()) {
+				write_spritesheet(spritesheet_data.pc_masks, spritesheet_data.filename_base + "_pc.png", margins, columns, spritesheet_width, spritesheet_height, out_filesystem);
+			}
+		}
+
+		if (scale == 1.0f) {
+			// Adjust and write hostspot
+			LuaTree::Object* lua_table = lua_animation->add_object("hotspot");
+			const Vector2i& hotspot = representative_animation.hotspot();
+			lua_table->add_int("", hotspot.x - margins.x);
+			lua_table->add_int("", hotspot.y - margins.y);
+		}
+	}
+
+	log("LUA CODE:\n%s\n", lua_animation->as_string().c_str());
+	log("Done!\n");
+}
+
+}  // namespace
+
+/*
+ ==========================================================
+ MAIN
+ ==========================================================
+ */
+
+int main(int argc, char** argv) {
+	if (argc != 4) {
+		log("Usage: %s <mapobject_name> <animation_name> <existing-output-path>\n", argv[0]);
+		return 1;
+	}
+
+	const std::string map_object_name = argv[1];
+	const std::string animation_name = argv[2];
+	const std::string output_path = argv[3];
+
+	try {
+		initialize();
+		std::unique_ptr<FileSystem> out_filesystem(&FileSystem::create(output_path));
+		Widelands::EditorGameBase egbase(nullptr);
+		write_animation_spritesheets(egbase, map_object_name, animation_name, out_filesystem.get());
+		egbase.cleanup_objects();
+	} catch (std::exception& e) {
+		log("Exception: %s.\n", e.what());
+		cleanup();
+		return 1;
+	}
+	cleanup();
+	return 0;
+}

=== added directory 'src/website/lua'
=== added file 'src/website/lua/CMakeLists.txt'
--- src/website/lua/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ src/website/lua/CMakeLists.txt	2019-08-30 22:19:30 +0000
@@ -0,0 +1,10 @@
+wl_library(lua_tree
+  SRCS
+    lua_tree.cc
+    lua_tree.h
+    value.cc
+    value.h
+  DEPENDS
+    io_fileread
+    io_filesystem
+)

=== added file 'src/website/lua/lua_tree.cc'
--- src/website/lua/lua_tree.cc	1970-01-01 00:00:00 +0000
+++ src/website/lua/lua_tree.cc	2019-08-30 22:19:30 +0000
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2018-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#include "website/lua/lua_tree.h"
+
+#include <memory>
+
+#include "io/filewrite.h"
+
+// ########################## LuaTree Element #############################
+
+namespace LuaTree {
+const std::string LuaTree::Element::tab_ = "   ";
+
+LuaTree::Object* Element::add_object(const std::string& key) {
+	children_.push_back(std::unique_ptr<LuaTree::Object>(new LuaTree::Object(key, level_ + 1)));
+	return dynamic_cast<LuaTree::Object*>(children_.back().get());
+}
+
+void Element::add_bool(const std::string& key, bool value) {
+	if (key.empty()) {
+		keyless_values_.push_back(std::unique_ptr<LuaTree::Value>(new LuaTree::Boolean(value)));
+	} else {
+		values_.push_back(std::unique_ptr<KeyValuePair>(new KeyValuePair(key, new LuaTree::Boolean(value))));
+	}
+}
+
+void Element::add_double(const std::string& key, double value) {
+	if (key.empty()) {
+		keyless_values_.push_back(std::unique_ptr<LuaTree::Value>(new LuaTree::Boolean(value)));
+	} else {
+		values_.push_back(std::unique_ptr<KeyValuePair>(new KeyValuePair(key, new LuaTree::Double(value))));
+	}
+}
+void Element::add_int(const std::string& key, int value) {
+	if (key.empty()) {
+		keyless_values_.push_back(std::unique_ptr<LuaTree::Value>(new LuaTree::Int(value)));
+	} else {
+		values_.push_back(std::unique_ptr<KeyValuePair>(new KeyValuePair(key, new LuaTree::Int(value))));
+	}
+}
+void Element::add_empty(const std::string& key) {
+	if (key.empty()) {
+		keyless_values_.push_back(std::unique_ptr<LuaTree::Value>(new LuaTree::Empty()));
+	} else {
+		values_.push_back(std::unique_ptr<KeyValuePair>(new KeyValuePair(key, new LuaTree::Empty())));
+	}
+}
+void Element::add_string(const std::string& key, const std::string& value) {
+	if (key.empty()) {
+		keyless_values_.push_back(std::unique_ptr<LuaTree::Value>(new LuaTree::String(value)));
+	} else {
+		values_.push_back(std::unique_ptr<KeyValuePair>(new KeyValuePair(key, new LuaTree::String(value))));
+	}
+}
+
+void Element::add_raw(const std::string& key, const std::string& value) {
+	if (key.empty()) {
+		keyless_values_.push_back(std::unique_ptr<LuaTree::Value>(new LuaTree::Raw(value)));
+	} else {
+		values_.push_back(std::unique_ptr<KeyValuePair>(new KeyValuePair(key, new LuaTree::Raw(value))));
+	}
+}
+
+void Element::write_to_file(FileSystem& fs, const std::string& filename) const {
+	FileWrite file_writer;
+	file_writer.text(as_string());
+	file_writer.write(fs, filename);
+}
+
+std::string Element::as_string() const {
+	return children_as_string();
+}
+
+std::string Element::keyless_values_as_string() const {
+	std::string result = "{";
+	if (!keyless_values_.empty()) {
+		for (size_t i = 0; i < keyless_values_.size() - 1; ++i) {
+			const auto& element = keyless_values_.at(i);
+			const std::string element_as_string = element->as_string();
+			result += " " + element_as_string + ",";
+		}
+		const auto& element = keyless_values_.at(keyless_values_.size() - 1);
+		const std::string element_as_string = element->as_string();
+		result += " " + element_as_string;
+	}
+	result += (children_.empty() && values_.empty()) ? " }" : " },";
+	return result;
+}
+
+std::string Element::values_as_string(const std::string& tabs) const {
+	std::string result = "";
+	if (!values_.empty()) {
+		for (size_t i = 0; i < values_.size() - 1; ++i) {
+			const auto& element = values_.at(i);
+			const std::string element_as_string = element->value->as_string();
+			result +=
+			   tabs + tab_ + key_to_string(element->key, element_as_string.empty()) + element_as_string + ",\n";
+		}
+		const auto& element = values_.at(values_.size() - 1);
+		const std::string element_as_string = element->value->as_string();
+		result += tabs + tab_ + key_to_string(element->key, element_as_string.empty()) + element_as_string +
+		          (children_.empty() ? "\n" : ",\n");
+	}
+	return result;
+}
+
+std::string Element::children_as_string() const {
+	std::string result = "";
+	if (!children_.empty()) {
+		for (size_t i = 0; i < children_.size() - 1; ++i) {
+			result += children_.at(i)->as_string() + ",\n";
+		}
+		result += children_.at(children_.size() - 1)->as_string() + "\n";
+	}
+	return result;
+}
+
+std::string Element::key_to_string(const std::string& value, bool value_is_empty) {
+	return value + (value_is_empty ? "" : " = ");
+}
+
+// ########################## LuaTree Table #############################
+
+Object::Object(const std::string& key, int level) : LuaTree::Element(key, level) {
+}
+
+std::string Object::as_string() const {
+	std::string result = "";
+	std::string tabs = "";
+	for (int i = 0; i < level_; ++i) {
+		tabs += tab_;
+	}
+
+	if (!keyless_values_.empty()) {
+		result += tabs + (key_.empty() ? "" : key_to_string(key_));
+		result += keyless_values_as_string();
+	} else {
+		result += tabs + (key_.empty() ? "" : key_to_string(key_)) + "{\n";
+	}
+	result += values_as_string(tabs);
+	result += children_as_string();
+	if (keyless_values_.empty()) {
+		result += tabs + "}";
+	}
+	return result;
+}
+
+}  // namespace LuaTree

=== added file 'src/website/lua/lua_tree.h'
--- src/website/lua/lua_tree.h	1970-01-01 00:00:00 +0000
+++ src/website/lua/lua_tree.h	2019-08-30 22:19:30 +0000
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2018-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#ifndef WL_WEBSITE_LUA_LUA_TREE_H
+#define WL_WEBSITE_LUA_LUA_TREE_H
+
+#include <cassert>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "io/filesystem/filesystem.h"
+#include "website/lua/value.h"
+
+namespace LuaTree {
+
+class Object;
+
+class Element {
+protected:
+	// Constructor for child node
+	explicit Element(const std::string& key, int level) : key_(key), level_(level) {
+	}
+
+public:
+	// Constructor for root node
+	explicit Element() : LuaTree::Element("", -1) {
+	}
+
+	LuaTree::Object* add_object(const std::string& key = "");
+	void add_bool(const std::string& key, bool value);
+	void add_double(const std::string& key, double value);
+	void add_int(const std::string& key, int value);
+	void add_empty(const std::string& key);
+	void add_string(const std::string& key, const std::string& value);
+	void add_raw(const std::string& key, const std::string& value);
+
+	void write_to_file(FileSystem& fs, const std::string& filename) const;
+
+	virtual std::string as_string() const;
+
+protected:
+	static const std::string tab_;
+
+	struct KeyValuePair {
+		explicit KeyValuePair(const std::string& init_key, LuaTree::Value* init_value) :
+			key(init_key),
+			value(init_value) {}
+
+		const std::string key;
+		std::unique_ptr<LuaTree::Value> value;
+	};
+
+	std::string keyless_values_as_string() const;
+	std::string values_as_string(const std::string& tabs) const;
+	std::string children_as_string() const;
+	static std::string key_to_string(const std::string& value, bool value_is_empty = false);
+
+	std::string key_;
+	const int level_;
+	std::vector<std::unique_ptr<LuaTree::Element>> children_;
+	std::vector<std::unique_ptr<KeyValuePair>> values_;
+	std::vector<std::unique_ptr<LuaTree::Value>> keyless_values_;
+};
+
+class Object : public Element {
+	friend class LuaTree::Element;
+
+protected:
+	// Constructor for child node
+	explicit Object(const std::string& key, int level);
+
+public:
+	// Constructor for root node
+	explicit Object() : LuaTree::Element("", 0) {
+	}
+	std::string as_string() const override;
+};
+
+}  // namespace LuaTree
+#endif  // end of include guard: WL_WEBSITE_LUA_LUA_TREE_H

=== added file 'src/website/lua/value.cc'
--- src/website/lua/value.cc	1970-01-01 00:00:00 +0000
+++ src/website/lua/value.cc	2019-08-30 22:19:30 +0000
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2018-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#include "website/lua/value.h"
+
+#include <sstream>
+
+namespace LuaTree {
+
+Boolean::Boolean(bool value) : bool_value(value) {
+}
+std::string Boolean::as_string() const {
+	return bool_value ? "true" : "false";
+}
+
+Double::Double(double value) : double_value(value) {
+}
+std::string Double::as_string() const {
+	std::ostringstream strs;
+	strs << double_value;
+	return strs.str();
+}
+
+Int::Int(int value) : int_value(value) {}
+std::string Int::as_string() const {
+	std::ostringstream strs;
+	strs << int_value;
+	return strs.str();
+}
+
+std::string Empty::as_string() const {
+	return "nil";
+}
+
+String::String(const std::string& value) : string_value(value) {}
+std::string String::as_string() const {
+	return "\"" + string_value + "\"";
+}
+
+Raw::Raw(const std::string& value) : raw_value(value) {}
+std::string Raw::as_string() const {
+	return raw_value;
+}
+
+
+}  // namespace LuaTree

=== added file 'src/website/lua/value.h'
--- src/website/lua/value.h	1970-01-01 00:00:00 +0000
+++ src/website/lua/value.h	2019-08-30 22:19:30 +0000
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2018-2019 by the Widelands Development Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ */
+
+#ifndef WL_WEBSITE_LUA_VALUE_H
+#define WL_WEBSITE_LUA_VALUE_H
+
+#include <string>
+
+namespace LuaTree {
+
+/// Value types for LuaTree
+struct Value {
+	Value() = default;
+	virtual std::string as_string() const = 0;
+};
+
+struct Boolean : Value {
+	explicit Boolean(bool value);
+	std::string as_string() const override;
+private:
+	const bool bool_value;
+};
+
+struct Double : Value {
+	explicit Double(double value);
+	std::string as_string() const override;
+private:
+	const double double_value;
+};
+
+struct Empty : Value {
+	Empty() = default;
+	std::string as_string() const override;
+};
+
+struct Int : Value {
+	explicit Int(int value);
+	std::string as_string() const override;
+private:
+	const int int_value;
+};
+
+struct String : Value {
+	explicit String(const std::string& value);
+	std::string as_string() const override;
+private:
+	const std::string string_value;
+};
+
+struct Raw : Value {
+	explicit Raw(const std::string& value);
+	std::string as_string() const override;
+private:
+	const std::string raw_value;
+};
+
+
+}  // namespace LuaTree
+#endif  // end of include guard: WL_WEBSITE_LUA_VALUE_H

=== added file 'test/maps/plain.wmf/scripting/test_animations.lua'
--- test/maps/plain.wmf/scripting/test_animations.lua	1970-01-01 00:00:00 +0000
+++ test/maps/plain.wmf/scripting/test_animations.lua	2019-08-30 22:19:30 +0000
@@ -0,0 +1,21 @@
+run(function()
+   sleep(5000)
+
+   assert_equal(1, #p1:get_buildings("barbarians_headquarters"))
+
+   local hq = p1:get_buildings("barbarians_headquarters")[1]
+
+   hq:set_workers("barbarians_file_animation", 5)
+   assert_equal(5, hq:get_workers("barbarians_file_animation"))
+
+   -- This mine needs a miner, a chief miner and a master miner
+   p1:place_road(p1:place_flag(map:get_field(18,22)), "br", "br", "br", "br", "r", "r", "r")
+   p1:place_flag(map:get_field(20,26))
+   local building = p1:place_building("barbarians_spritesheet_animation", wl.Game().map:get_field(17, 21), false, true)
+
+   -- Make the worker walk out of the building and idle for a few times
+   sleep(5 * 40000)
+
+   print("# All Tests passed.")
+   wl.ui.MapView():close()
+end)

=== added directory 'test/maps/plain.wmf/scripting/tribes'
=== added directory 'test/maps/plain.wmf/scripting/tribes/file_animation'
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/helptexts.lua'
--- test/maps/plain.wmf/scripting/tribes/file_animation/helptexts.lua	1970-01-01 00:00:00 +0000
+++ test/maps/plain.wmf/scripting/tribes/file_animation/helptexts.lua	2019-08-30 22:19:30 +0000
@@ -0,0 +1,4 @@
+function worker_helptext()
+   -- TRANSLATORS: Helptext for a worker: Carrier
+   return pgettext("barbarians_worker", "Carries items along your roads.")
+end

=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_0.5_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/idle_1_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/init.lua'
--- test/maps/plain.wmf/scripting/tribes/file_animation/init.lua	1970-01-01 00:00:00 +0000
+++ test/maps/plain.wmf/scripting/tribes/file_animation/init.lua	2019-08-30 22:19:30 +0000
@@ -0,0 +1,36 @@
+dirname = "test/maps/plain.wmf/" .. path.dirname(__file__)
+
+animations = {}
+
+add_animation(animations, "idle", dirname, "idle", {14, 21}, 5)
+-- These won't be played in the test suite, just testing the table structure.
+animations["idle"]["sound_effect"] = {
+   path = "sound/hammering/hammering",
+   priority = 64
+}
+
+add_directional_animation(animations, "walk", dirname, "walk", {9, 19}, 10)
+add_directional_animation(animations, "walkload", dirname, "walkload", {7, 22}, 10)
+
+tribes:new_worker_type {
+   msgctxt = "barbarians_worker",
+   name = "barbarians_file_animation",
+   -- TRANSLATORS: This is a worker name used in lists of workers
+   descname = pgettext("barbarians_worker", "File Animation"),
+   helptext_script = dirname .. "helptexts.lua",
+   icon = dirname .. "menu.png",
+   vision_range = 2,
+
+   buildcost = {}, -- This will give the worker the property "buildable"
+
+   animations = animations,
+
+   programs = {
+      show_idle = {
+         "findspace=size:any radius:5",
+         "walk=coords",
+         "animate=idle 10000",
+         "return"
+      }
+   },
+}

=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/menu.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/menu.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/menu.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_e_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_ne_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_nw_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_se_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_sw_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walk_w_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_e_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_ne_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_nw_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_se_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_sw_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_01.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_01.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_01.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_01_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_01_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_01_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_02.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_02.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_02.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_02_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_02_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_02_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_03.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_03.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_03.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_03_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_03_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_03_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_04.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_04.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_04.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_04_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_04_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_04_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_05.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_05.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_05.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_05_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_05_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_05_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_06.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_06.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_06.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_06_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_06_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_06_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_07.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_07.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_07.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_07_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_07_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_07_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_08.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_08.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_08.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_08_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_08_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_08_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_09.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_09.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_09.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_09_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_09_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/file_animation/walkload_w_09_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/init.lua'
--- test/maps/plain.wmf/scripting/tribes/init.lua	1970-01-01 00:00:00 +0000
+++ test/maps/plain.wmf/scripting/tribes/init.lua	2019-08-30 22:19:30 +0000
@@ -0,0 +1,20 @@
+tribes = wl.Tribes()
+include "scripting/mapobjects.lua"
+
+-- ===================================
+--    Campaign Specific Data
+-- ===================================
+print_loading_message("Loading custom units", function()
+   include "map:scripting/tribes/file_animation/init.lua"
+   include "map:scripting/tribes/spritesheet_animation/init.lua"
+end)
+
+tribes:add_custom_worker {
+   tribename = "barbarians",
+   workername = "barbarians_file_animation",
+}
+
+tribes:add_custom_building {
+   tribename = "barbarians",
+   buildingname = "barbarians_spritesheet_animation",
+}

=== added directory 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation'
=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/build_1.png'
Binary files test/maps/plain.wmf/scripting/tribes/spritesheet_animation/build_1.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/spritesheet_animation/build_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/build_1_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/spritesheet_animation/build_1_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/spritesheet_animation/build_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/helptexts.lua'
--- test/maps/plain.wmf/scripting/tribes/spritesheet_animation/helptexts.lua	1970-01-01 00:00:00 +0000
+++ test/maps/plain.wmf/scripting/tribes/spritesheet_animation/helptexts.lua	2019-08-30 22:19:30 +0000
@@ -0,0 +1,29 @@
+-- This include can be removed when all help texts have been defined.
+include "tribes/scripting/help/global_helptexts.lua"
+
+function building_helptext_lore()
+   -- TRANSLATORS: Lore helptext for a building
+   return pgettext("barbarians_building", [[‘Then he hit the door with his ax and, behold,<br>]] ..
+            [[the door only trembled, but the shaft of the ax burst into a thousand pieces.’]])
+end
+
+function building_helptext_lore_author()
+   -- TRANSLATORS: Lore author helptext for a building
+   return pgettext("barbarians_building", [[Legend about a quarrel between the brothers Harthor and Manthor,<br>]] ..
+            [[Manthor is said to be the inventor of blackwood]])
+end
+
+function building_helptext_purpose()
+   -- TRANSLATORS: Purpose helptext for a building
+   return pgettext("barbarians_building", "Hardens logs by fire into blackwood, which is used to construct robust buildings.")
+end
+
+function building_helptext_note()
+   -- TRANSLATORS#: Note helptext for a building
+   return ""
+end
+
+function building_helptext_performance()
+   -- TRANSLATORS#: Performance helptext for a building
+   return no_performance_text_yet()
+end

=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/idle_1.png'
Binary files test/maps/plain.wmf/scripting/tribes/spritesheet_animation/idle_1.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/spritesheet_animation/idle_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/idle_1_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/spritesheet_animation/idle_1_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/spritesheet_animation/idle_1_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/init.lua'
--- test/maps/plain.wmf/scripting/tribes/spritesheet_animation/init.lua	1970-01-01 00:00:00 +0000
+++ test/maps/plain.wmf/scripting/tribes/spritesheet_animation/init.lua	2019-08-30 22:19:30 +0000
@@ -0,0 +1,89 @@
+dirname = "test/maps/plain.wmf/" .. path.dirname(__file__)
+
+tribes:new_productionsite_type {
+   msgctxt = "barbarians_building",
+   name = "barbarians_spritesheet_animation",
+   -- TRANSLATORS: This is a building name used in lists of buildings
+   descname = pgettext("barbarians_building", "Spritesheet Animation"),
+   helptext_script = dirname .. "helptexts.lua",
+   icon = dirname .. "menu.png",
+   size = "medium",
+
+   buildcost = {
+      log = 3,
+      granite = 1
+   },
+   return_on_dismantle = {
+      log = 1,
+      granite = 1
+   },
+
+   animations = {
+      unoccupied = {
+         pictures = path.list_files(dirname .. "unoccupied_??.png"),
+         hotspot = { 52, 64 },
+      }
+   },
+
+   spritesheets = {
+      idle = {
+         directory = dirname,
+         basename = "idle",
+         frames = 20,
+         columns = 4,
+         rows = 5,
+         hotspot = { 52, 64 }
+      },
+      build = {
+         directory = dirname,
+         basename = "build",
+         frames = 4,
+         columns = 2,
+         rows = 2,
+         hotspot = { 52, 64 }
+      },
+      working = {
+         directory = dirname,
+         basename = "working",
+         frames = 20,
+         columns = 4,
+         rows = 5,
+         hotspot = { 52, 64 },
+         -- These won't be played in the test suite, just testing the table structure.
+         sound_effect = {
+            path = "sound/hammering/hammering",
+            priority = 64
+         },
+         representative_frame = 3
+      }
+   },
+
+   aihints = {
+      basic_amount = 1,
+      very_weak_ai_limit = 1,
+      weak_ai_limit = 2
+   },
+
+   working_positions = {
+      barbarians_file_animation = 1
+   },
+
+   inputs = {
+      { name = "log", amount = 8 }
+   },
+   outputs = {
+      "blackwood"
+   },
+
+   programs = {
+      work = {
+         -- TRANSLATORS: Completed/Skipped/Did not start working because ...
+         descname = _"working",
+         actions = {
+            "callworker=show_idle",
+            "animate=working 17000",
+            "sleep=3000"
+         }
+      },
+   },
+}

=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/menu.png'
Binary files test/maps/plain.wmf/scripting/tribes/spritesheet_animation/menu.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/spritesheet_animation/menu.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/unoccupied_00.png'
Binary files test/maps/plain.wmf/scripting/tribes/spritesheet_animation/unoccupied_00.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/spritesheet_animation/unoccupied_00.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/unoccupied_00_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/spritesheet_animation/unoccupied_00_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/spritesheet_animation/unoccupied_00_pc.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/working_1.png'
Binary files test/maps/plain.wmf/scripting/tribes/spritesheet_animation/working_1.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/spritesheet_animation/working_1.png	2019-08-30 22:19:30 +0000 differ
=== added file 'test/maps/plain.wmf/scripting/tribes/spritesheet_animation/working_1_pc.png'
Binary files test/maps/plain.wmf/scripting/tribes/spritesheet_animation/working_1_pc.png	1970-01-01 00:00:00 +0000 and test/maps/plain.wmf/scripting/tribes/spritesheet_animation/working_1_pc.png	2019-08-30 22:19:30 +0000 differ

Follow ups