← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/bug-1733064-program-redesign into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-1733064-program-redesign into lp:widelands.

Commit message:
Orthogonal design for mapobject program names

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1733064 in widelands: "Make programs orthogonal"
  https://bugs.launchpad.net/widelands/+bug/1733064

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-1733064-program-redesign/+merge/349100

Made the design for worker, critter, building and immovable programs orthogonal. We still have multiple parsers, but that's a problem for the future.

I had planned to postpone this until after Build 20, but since we now have somebody starting a new tribe on the Forum and I don't want to have to convert a 5th tribe...
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1733064-program-redesign into lp:widelands.
=== modified file 'data/tribes/buildings/productionsites/atlanteans/blackroot_farm/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/blackroot_farm/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/atlanteans/blackroot_farm/init.lua	2018-07-08 18:06:37 +0000
@@ -47,25 +47,25 @@
          -- TRANSLATORS: Completed/Skipped/Did not start working because ...
          descname = _"working",
          actions = {
-            "call=plant_blackroot",
-            "call=harvest_blackroot",
+            "call=plant",
+            "call=harvest",
             "return=skipped"
          }
       },
-      plant_blackroot = {
+      plant = {
          -- TRANSLATORS: Completed/Skipped/Did not start planting blackroot because ...
          descname = _"planting blackroot",
          actions = {
             "sleep=20000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
-      harvest_blackroot = {
+      harvest = {
          -- TRANSLATORS: Completed/Skipped/Did not start harvesting blackroot because ...
          descname = _"harvesting blackroot",
          actions = {
             "sleep=5000",
-            "worker=harvest"
+            "callworker=harvest"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/atlanteans/farm/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/farm/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/atlanteans/farm/init.lua	2018-07-08 18:06:37 +0000
@@ -51,25 +51,25 @@
          -- TRANSLATORS: Completed/Skipped/Did not start working because ...
          descname = _"working",
          actions = {
-            "call=plant_corn",
-            "call=harvest_corn",
+            "call=plant",
+            "call=harvest",
             "return=skipped"
          }
       },
-      plant_corn = {
+      plant = {
          -- TRANSLATORS: Completed/Skipped/Did not start planting corn because ...
          descname = _"planting corn",
          actions = {
             "sleep=14000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
-      harvest_corn = {
+      harvest = {
          -- TRANSLATORS: Completed/Skipped/Did not start harvesting corn because ...
          descname = _"harvesting corn",
          actions = {
             "sleep=4000",
-            "worker=harvest"
+            "callworker=harvest"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/atlanteans/fishbreeders_house/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/fishbreeders_house/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/atlanteans/fishbreeders_house/init.lua	2018-07-08 18:06:37 +0000
@@ -42,7 +42,7 @@
          descname = _"breeding fish",
          actions = {
             "sleep=24000",
-            "worker=breed"
+            "callworker=breed"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/atlanteans/fishers_house/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/fishers_house/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/atlanteans/fishers_house/init.lua	2018-07-08 18:06:37 +0000
@@ -47,7 +47,7 @@
          descname = _"fishing",
          actions = {
             "sleep=16000",
-            "worker=fish"
+            "callworker=fish"
          }
       },
 

=== modified file 'data/tribes/buildings/productionsites/atlanteans/foresters_house/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/foresters_house/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/atlanteans/foresters_house/init.lua	2018-07-08 18:06:37 +0000
@@ -43,7 +43,7 @@
          descname = _"planting trees",
          actions = {
             "sleep=11000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/atlanteans/gold_spinning_mill/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/gold_spinning_mill/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/atlanteans/gold_spinning_mill/init.lua	2018-07-08 18:06:37 +0000
@@ -53,7 +53,7 @@
             "sleep=15000",
             "return=skipped unless economy needs gold_thread",
             "consume=gold",
-            "play_sound=sound/atlanteans goldspin 192",
+            "playsound=sound/atlanteans goldspin 192",
             "animate=working 25000",
             "produce=gold_thread"
          }

=== modified file 'data/tribes/buildings/productionsites/atlanteans/horsefarm/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/horsefarm/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/atlanteans/horsefarm/init.lua	2018-07-08 18:06:37 +0000
@@ -55,7 +55,7 @@
             "sleep=15000",
             "return=skipped unless economy needs atlanteans_horse",
             "consume=corn water",
-            "play_sound=sound/farm horse 192",
+            "playsound=sound/farm horse 192",
             "animate=working 15000", -- Feeding cute little foals ;)
             "recruit=atlanteans_horse"
          }

=== modified file 'data/tribes/buildings/productionsites/atlanteans/hunters_house/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/hunters_house/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/atlanteans/hunters_house/init.lua	2018-07-08 18:06:37 +0000
@@ -44,7 +44,7 @@
          descname = _"hunting",
          actions = {
             "sleep=35000",
-            "worker=hunt"
+            "callworker=hunt"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/atlanteans/mill/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/mill/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/atlanteans/mill/init.lua	2018-07-08 18:06:37 +0000
@@ -68,7 +68,7 @@
             "return=skipped unless economy needs cornmeal",
             "sleep=3500",
             "consume=corn",
-            "play_sound=sound/mill mill_turning 240",
+            "playsound=sound/mill mill_turning 240",
             "animate=working 15000",
             "produce=cornmeal"
          }
@@ -81,7 +81,7 @@
             "return=skipped when site has corn and economy needs cornmeal and not economy needs blackroot_flour",
             "sleep=3500",
             "consume=blackroot",
-            "play_sound=sound/mill mill_turning 240",
+            "playsound=sound/mill mill_turning 240",
             "animate=working 15000",
             "produce=blackroot_flour"
          }

=== modified file 'data/tribes/buildings/productionsites/atlanteans/quarry/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/quarry/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/atlanteans/quarry/init.lua	2018-07-08 18:06:37 +0000
@@ -53,7 +53,7 @@
          actions = {
            -- This order is on purpose so that the productivity
            -- drops fast once all rocks are gone.
-            "worker=cut_granite",
+            "callworker=cut_granite",
             "sleep=25000"
          }
       },

=== modified file 'data/tribes/buildings/productionsites/atlanteans/sawmill/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/sawmill/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/atlanteans/sawmill/init.lua	2018-07-08 18:06:37 +0000
@@ -55,7 +55,7 @@
             "sleep=16500", -- Much faster than barbarians' wood hardener
             "return=skipped unless economy needs planks",
             "consume=log:2",
-            "play_sound=sound/atlanteans/saw benchsaw 192",
+            "playsound=sound/atlanteans/saw benchsaw 192",
             "animate=working 20000", -- Much faster than barbarians' wood hardener
             "produce=planks"
          }

=== modified file 'data/tribes/buildings/productionsites/atlanteans/scouts_house/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/scouts_house/init.lua	2016-09-03 14:59:10 +0000
+++ data/tribes/buildings/productionsites/atlanteans/scouts_house/init.lua	2018-07-08 18:06:37 +0000
@@ -46,10 +46,10 @@
          actions = {
             "sleep=30000",
             "consume=smoked_fish",
-            "worker=scout",
+            "callworker=scout",
             "sleep=30000",
             "consume=atlanteans_bread",
-            "worker=scout"
+            "callworker=scout"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/atlanteans/shipyard/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/shipyard/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/atlanteans/shipyard/init.lua	2018-07-08 18:06:37 +0000
@@ -72,7 +72,7 @@
          -- TRANSLATORS: Completed/Skipped/Did not start constructing a ship because ...
          descname = _"constructing a ship",
          actions = {
-            "check_map=seafaring",
+            "checkmap=seafaring",
             "construct=atlanteans_shipconstruction buildship 6",
             "animate=working 35000",
             "return=completed"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/smelting_works/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/smelting_works/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/atlanteans/smelting_works/init.lua	2018-07-08 18:06:37 +0000
@@ -69,9 +69,9 @@
             "sleep=5000",  -- penalty for unavailable iron_ore (2x)
             "consume=iron_ore coal",
             "sleep=20000",
-            "play_sound=sound/metal fizzle 150",
+            "playsound=sound/metal fizzle 150",
             "animate=working 35000",
-            "play_sound=sound/metal ironping 80",
+            "playsound=sound/metal ironping 80",
             "produce=iron"
          }
       },
@@ -83,9 +83,9 @@
             "sleep=10000",  -- penalty for unavailable gold_ore
             "consume=gold_ore coal",
             "sleep=15000",
-            "play_sound=sound/metal fizzle 150",
+            "playsound=sound/metal fizzle 150",
             "animate=working 35000",
-            "play_sound=sound/metal goldping 80",
+            "playsound=sound/metal goldping 80",
             "produce=gold"
          }
       },

=== modified file 'data/tribes/buildings/productionsites/atlanteans/toolsmithy/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/toolsmithy/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/atlanteans/toolsmithy/init.lua	2018-07-08 18:06:37 +0000
@@ -87,7 +87,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=bread_paddle"
          }
@@ -100,7 +100,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=buckets"
          }
@@ -113,7 +113,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=fire_tongs"
          }
@@ -126,7 +126,7 @@
             "sleep=5000",
             "consume=spidercloth:2",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=fishing_net"
          }
@@ -139,7 +139,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=hammer"
          }
@@ -152,7 +152,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=hook_pole"
          }
@@ -165,7 +165,7 @@
             "sleep=5000",
             "consume=log spidercloth",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=hunting_bow"
          }
@@ -178,7 +178,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=milking_tongs"
          }
@@ -191,7 +191,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=pick"
          }
@@ -204,7 +204,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=saw"
          }
@@ -217,7 +217,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=scythe"
          }
@@ -230,7 +230,7 @@
             "sleep=5000",
             "consume=iron log",
             "sleep=27000",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=shovel"
          }

=== modified file 'data/tribes/buildings/productionsites/atlanteans/weaponsmithy/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/weaponsmithy/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/atlanteans/weaponsmithy/init.lua	2018-07-08 18:06:37 +0000
@@ -76,9 +76,9 @@
             "return=skipped unless economy needs trident_light",
             "sleep=27000",    -- +7 enlarge
             "consume=iron planks",
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 28000",  -- +7 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=trident_light"
          }
@@ -91,9 +91,9 @@
             "return=skipped unless economy needs trident_long",
             "consume=iron coal planks",
             "sleep=47000",  -- +15 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 46000",  -- +10 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=trident_long"
          }
@@ -106,9 +106,9 @@
             "return=skipped unless economy needs trident_steel",
             "consume=iron:2 coal planks",
             "sleep=50000",  -- +18 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 51000",  -- +15 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=trident_steel"
          }
@@ -121,9 +121,9 @@
             "return=skipped unless economy needs trident_double",
             "consume=iron coal:2 planks gold",
             "sleep=55000",  -- +23 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 51000",  -- +15 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=trident_double"
          }
@@ -136,9 +136,9 @@
            "return=skipped unless economy needs trident_heavy_double",
             "consume=iron:2 coal:2 planks gold",
             "sleep=55000",  -- +23 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 56000",  -- +20 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=trident_heavy_double"
          }

=== modified file 'data/tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua	2017-06-26 19:48:43 +0000
+++ data/tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua	2018-07-08 18:06:37 +0000
@@ -71,7 +71,7 @@
             "return=skipped unless economy needs spidercloth",
             "sleep=10000",
             "consume=spider_silk",
-            "play_sound=sound/mill weaving 120",
+            "playsound=sound/mill weaving 120",
             "animate=working 20000",
             "sleep=17000",
             "produce=spidercloth"
@@ -85,7 +85,7 @@
             "return=skipped unless economy needs tabard",
             "sleep=10000",
             "consume=spider_silk",
-            "play_sound=sound/mill weaving 120",
+            "playsound=sound/mill weaving 120",
             "animate=working 26000",
             "sleep=19000",
             "produce=tabard"
@@ -99,7 +99,7 @@
             "return=skipped unless economy needs tabard_golden",
             "consume=spider_silk gold_thread",
             "sleep=15000",
-            "play_sound=sound/mill weaving 120",
+            "playsound=sound/mill weaving 120",
             "animate=working 30000",
             "sleep=15000",
             "produce=tabard_golden"

=== modified file 'data/tribes/buildings/productionsites/atlanteans/woodcutters_house/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/woodcutters_house/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/atlanteans/woodcutters_house/init.lua	2018-07-08 18:06:37 +0000
@@ -43,7 +43,7 @@
          descname = _"felling trees",
          actions = {
             "sleep=30000", -- Barbarian lumberjack sleeps 25000
-            "worker=harvest"
+            "callworker=harvest"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/barbarians/ax_workshop/init.lua'
--- data/tribes/buildings/productionsites/barbarians/ax_workshop/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/ax_workshop/init.lua	2018-07-08 18:06:37 +0000
@@ -80,9 +80,9 @@
             "return=skipped unless economy needs ax",
             "sleep=36000", -- +10 enlarge
             "consume=coal iron",
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 28000",  -- +6 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=ax"
          }
@@ -95,9 +95,9 @@
             "return=skipped unless economy needs ax_sharp",
             "consume=coal iron:2",
             "sleep=37000", -- +11 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 30000", -- +8 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=ax_sharp"
          }
@@ -110,9 +110,9 @@
             "return=skipped unless economy needs ax_broad",
             "consume=coal:2 iron:2",
             "sleep=38000", -- +12 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 32000", -- +10 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=ax_broad"
          }

=== modified file 'data/tribes/buildings/productionsites/barbarians/big_inn/init.lua'
--- data/tribes/buildings/productionsites/barbarians/big_inn/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/big_inn/init.lua	2018-07-08 18:06:37 +0000
@@ -73,7 +73,7 @@
             "return=skipped unless economy needs ration",
             "sleep=23000",
             "consume=barbarians_bread,fish,meat",
-            "play_sound=sound/barbarians/taverns tavern 100",
+            "playsound=sound/barbarians/taverns tavern 100",
             "sleep=10000",
             "produce=ration"
          }
@@ -86,7 +86,7 @@
             "return=skipped unless economy needs snack",
             "sleep=5000",
             "consume=barbarians_bread fish,meat beer",
-            "play_sound=sound/barbarians/taverns biginn 100",
+            "playsound=sound/barbarians/taverns biginn 100",
             "sleep=32000",
             "produce=snack"
          }
@@ -99,7 +99,7 @@
             "return=skipped unless economy needs meal",
             "sleep=5000",
             "consume=barbarians_bread fish,meat beer_strong",
-            "play_sound=sound/barbarians/taverns biginn 100",
+            "playsound=sound/barbarians/taverns biginn 100",
             "sleep=35000",
             "produce=meal"
          }

=== modified file 'data/tribes/buildings/productionsites/barbarians/cattlefarm/init.lua'
--- data/tribes/buildings/productionsites/barbarians/cattlefarm/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/cattlefarm/init.lua	2018-07-08 18:06:37 +0000
@@ -55,7 +55,7 @@
             "sleep=15000",
             "return=skipped unless economy needs barbarians_ox",
             "consume=wheat water",
-            "play_sound=sound/farm ox 192",
+            "playsound=sound/farm ox 192",
             "animate=working 15000", -- Animation of feeding the cattle
             "recruit=barbarians_ox"
          }

=== modified file 'data/tribes/buildings/productionsites/barbarians/farm/init.lua'
--- data/tribes/buildings/productionsites/barbarians/farm/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/barbarians/farm/init.lua	2018-07-08 18:06:37 +0000
@@ -59,25 +59,25 @@
          -- TRANSLATORS: Completed/Skipped/Did not start working because ...
          descname = _"working",
          actions = {
-            "call=plant_wheat",
-            "call=harvest_wheat",
+            "call=plant",
+            "call=harvest",
             "return=skipped"
          }
       },
-      plant_wheat = {
+      plant = {
          -- TRANSLATORS: Completed/Skipped/Did not start planting wheat because ...
          descname = _"planting wheat",
          actions = {
             "sleep=14000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
-      harvest_wheat = {
+      harvest = {
          -- TRANSLATORS: Completed/Skipped/Did not start harvesting wheat because ...
          descname = _"harvesting wheat",
          actions = {
             "sleep=4000",
-            "worker=harvest",
+            "callworker=harvest",
             "animate=working 30000"
          }
       },

=== modified file 'data/tribes/buildings/productionsites/barbarians/fishers_hut/init.lua'
--- data/tribes/buildings/productionsites/barbarians/fishers_hut/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/barbarians/fishers_hut/init.lua	2018-07-08 18:06:37 +0000
@@ -53,7 +53,7 @@
          descname = _"fishing",
          actions = {
             "sleep=18000",
-            "worker=fish"
+            "callworker=fish"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/barbarians/gamekeepers_hut/init.lua'
--- data/tribes/buildings/productionsites/barbarians/gamekeepers_hut/init.lua	2017-10-01 23:56:55 +0000
+++ data/tribes/buildings/productionsites/barbarians/gamekeepers_hut/init.lua	2018-07-08 18:06:37 +0000
@@ -49,7 +49,7 @@
          descname = _"working",
          actions = {
             "sleep=52500",
-            "worker=release"
+            "callworker=release"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/barbarians/hunters_hut/init.lua'
--- data/tribes/buildings/productionsites/barbarians/hunters_hut/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/barbarians/hunters_hut/init.lua	2018-07-08 18:06:37 +0000
@@ -55,7 +55,7 @@
          descname = _"hunting",
          actions = {
             "sleep=35000",
-            "worker=hunt"
+            "callworker=hunt"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/barbarians/inn/init.lua'
--- data/tribes/buildings/productionsites/barbarians/inn/init.lua	2016-10-26 19:21:32 +0000
+++ data/tribes/buildings/productionsites/barbarians/inn/init.lua	2018-07-08 18:06:37 +0000
@@ -70,7 +70,7 @@
             "return=skipped unless economy needs ration",
             "sleep=5000",
             "consume=barbarians_bread,fish,meat",
-            "play_sound=sound/barbarians/taverns inn 100",
+            "playsound=sound/barbarians/taverns inn 100",
             "animate=working 18000",
             "sleep=10000",
             "produce=ration"
@@ -84,7 +84,7 @@
             "return=skipped unless economy needs snack",
             "sleep=5000",
             "consume=barbarians_bread fish,meat beer",
-            "play_sound=sound/barbarians/taverns inn 100",
+            "playsound=sound/barbarians/taverns inn 100",
             "animate=working 22000",
             "sleep=10000",
             "produce=snack"

=== modified file 'data/tribes/buildings/productionsites/barbarians/lime_kiln/init.lua'
--- data/tribes/buildings/productionsites/barbarians/lime_kiln/init.lua	2017-06-26 19:48:43 +0000
+++ data/tribes/buildings/productionsites/barbarians/lime_kiln/init.lua	2018-07-08 18:06:37 +0000
@@ -57,9 +57,9 @@
             "sleep=50000",
             "return=skipped unless economy needs grout",
             "consume=coal granite:2 water:2",
-            "play_sound=sound/barbarians stonegrind 100",
+            "playsound=sound/barbarians stonegrind 100",
             "animate=working 29000",
-            "play_sound=sound/barbarians mortar 80",
+            "playsound=sound/barbarians mortar 80",
             "sleep=3000",
             "produce=grout:2"
          }

=== modified file 'data/tribes/buildings/productionsites/barbarians/lumberjacks_hut/init.lua'
--- data/tribes/buildings/productionsites/barbarians/lumberjacks_hut/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/barbarians/lumberjacks_hut/init.lua	2018-07-08 18:06:37 +0000
@@ -50,7 +50,7 @@
          descname = _"felling trees",
          actions = {
             "sleep=25000", -- Sleeps shorter than any other tribes.
-            "worker=chop"
+            "callworker=harvest"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/barbarians/metal_workshop/init.lua'
--- data/tribes/buildings/productionsites/barbarians/metal_workshop/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/metal_workshop/init.lua	2018-07-08 18:06:37 +0000
@@ -96,7 +96,7 @@
             "return=skipped unless economy needs bread_paddle",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=bread_paddle"
          }
@@ -108,7 +108,7 @@
             "return=skipped unless economy needs felling_ax",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=felling_ax"
          }
@@ -120,7 +120,7 @@
             "return=skipped unless economy needs fire_tongs",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=fire_tongs"
          }
@@ -132,7 +132,7 @@
             "return=skipped unless economy needs fishing_rod",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=fishing_rod"
          }
@@ -144,7 +144,7 @@
             "return=skipped unless economy needs hammer",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=hammer"
          }
@@ -156,7 +156,7 @@
             "return=skipped unless economy needs hunting_spear",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=hunting_spear"
          }
@@ -168,7 +168,7 @@
             "return=skipped unless economy needs kitchen_tools",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=kitchen_tools"
          }
@@ -180,7 +180,7 @@
             "return=skipped unless economy needs pick",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=pick"
          }
@@ -192,7 +192,7 @@
             "return=skipped unless economy needs scythe",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=scythe"
          }
@@ -204,7 +204,7 @@
             "return=skipped unless economy needs shovel",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=shovel"
          }

=== modified file 'data/tribes/buildings/productionsites/barbarians/quarry/init.lua'
--- data/tribes/buildings/productionsites/barbarians/quarry/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/barbarians/quarry/init.lua	2018-07-08 18:06:37 +0000
@@ -60,7 +60,7 @@
          actions = {
            -- This order is on purpose so that the productivity
            -- drops fast once all rocks are gone.
-            "worker=cut_granite",
+            "callworker=cut_granite",
             "sleep=25000"
          }
       },

=== modified file 'data/tribes/buildings/productionsites/barbarians/rangers_hut/init.lua'
--- data/tribes/buildings/productionsites/barbarians/rangers_hut/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/barbarians/rangers_hut/init.lua	2018-07-08 18:06:37 +0000
@@ -49,7 +49,7 @@
          descname = _"planting trees",
          actions = {
             "sleep=16000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/barbarians/reed_yard/init.lua'
--- data/tribes/buildings/productionsites/barbarians/reed_yard/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/reed_yard/init.lua	2018-07-08 18:06:37 +0000
@@ -43,25 +43,25 @@
          -- TRANSLATORS: Completed/Skipped/Did not start working because ...
          descname = _"working",
          actions = {
-            "call=plant_reed",
-            "call=harvest_reed",
+            "call=plant",
+            "call=harvest",
             "return=skipped"
          }
       },
-      plant_reed = {
+      plant = {
          -- TRANSLATORS: Completed/Skipped/Did not start planting reed because ...
          descname = _"planting reed",
          actions = {
             "sleep=18000", -- orig sleep=20000 but gardener animation was increased by 2sec
-            "worker=plantreed"
+            "callworker=plant"
          }
       },
-      harvest_reed = {
+      harvest = {
          -- TRANSLATORS: Completed/Skipped/Did not start harvesting reed because ...
          descname = _"harvesting reed",
          actions = {
             "sleep=5000",
-            "worker=harvestreed"
+            "callworker=harvest"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/barbarians/scouts_hut/init.lua'
--- data/tribes/buildings/productionsites/barbarians/scouts_hut/init.lua	2016-09-03 14:59:10 +0000
+++ data/tribes/buildings/productionsites/barbarians/scouts_hut/init.lua	2018-07-08 18:06:37 +0000
@@ -50,7 +50,7 @@
          actions = {
             "sleep=30000",
             "consume=ration",
-            "worker=scout"
+            "callworker=scout"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/barbarians/shipyard/init.lua'
--- data/tribes/buildings/productionsites/barbarians/shipyard/init.lua	2018-05-27 06:34:40 +0000
+++ data/tribes/buildings/productionsites/barbarians/shipyard/init.lua	2018-07-08 18:06:37 +0000
@@ -71,7 +71,7 @@
          -- TRANSLATORS: Completed/Skipped/Did not start constructing a ship because ...
          descname = _"constructing a ship",
          actions = {
-            "check_map=seafaring",
+            "checkmap=seafaring",
             "construct=barbarians_shipconstruction buildship 6",
             "animate=working 35000",
             "return=completed"

=== modified file 'data/tribes/buildings/productionsites/barbarians/smelting_works/init.lua'
--- data/tribes/buildings/productionsites/barbarians/smelting_works/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/smelting_works/init.lua	2018-07-08 18:06:37 +0000
@@ -73,9 +73,9 @@
             "sleep=5000",  -- penalty for unavailable iron_ore (2x)
             "consume=coal iron_ore",
             "sleep=27000",
-            "play_sound=sound/metal furnace 192",
+            "playsound=sound/metal furnace 192",
             "animate=working 35000",
-            "play_sound=sound/metal ironping 80",
+            "playsound=sound/metal ironping 80",
             "produce=iron"
          }
       },
@@ -87,9 +87,9 @@
             "sleep=10000",  -- penalty for unavailable gold_ore
             "consume=coal gold_ore",
             "sleep=22000",
-            "play_sound=sound/metal furnace 192",
+            "playsound=sound/metal furnace 192",
             "animate=working 35000",
-            "play_sound=sound/metal goldping 80",
+            "playsound=sound/metal goldping 80",
             "produce=gold"
          }
       },

=== modified file 'data/tribes/buildings/productionsites/barbarians/tavern/init.lua'
--- data/tribes/buildings/productionsites/barbarians/tavern/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/tavern/init.lua	2018-07-08 18:06:37 +0000
@@ -63,7 +63,7 @@
             "sleep=14000",
             "return=skipped unless economy needs ration",
             "consume=barbarians_bread,fish,meat",
-            "play_sound=sound/barbarians/taverns tavern 100",
+            "playsound=sound/barbarians/taverns tavern 100",
             "animate=working 19000",
             "produce=ration"
          },

=== modified file 'data/tribes/buildings/productionsites/barbarians/warmill/init.lua'
--- data/tribes/buildings/productionsites/barbarians/warmill/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/warmill/init.lua	2018-07-08 18:06:37 +0000
@@ -87,9 +87,9 @@
             "return=skipped unless economy needs ax",
             "sleep=36000", -- +10 enlarge
             "consume=coal iron",
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 28000",  -- +6 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=ax"
          }
@@ -102,9 +102,9 @@
             "return=skipped unless economy needs ax_sharp",
             "consume=coal iron:2",
             "sleep=37000", -- +11 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 30000", -- +8 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=ax_sharp"
          }
@@ -117,9 +117,9 @@
             "return=skipped unless economy needs ax_broad",
             "consume=coal:2 iron:2",
             "sleep=38000", -- +12 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 32000", -- +10 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=ax_broad"
          }
@@ -132,9 +132,9 @@
             "return=skipped unless economy needs ax_bronze",
             "consume=coal:2 iron:2",
             "sleep=39000", -- +13 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 34000", -- +12 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=ax_bronze"
          }
@@ -147,9 +147,9 @@
             "return=skipped unless economy needs ax_battle",
             "consume=coal gold iron:2",
             "sleep=41000", -- +15 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 37000", -- +15 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=ax_battle"
          }
@@ -162,9 +162,9 @@
             "return=skipped unless economy needs ax_warriors",
             "consume=coal:2 gold:2 iron:2",
             "sleep=43000", -- +17 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 40000", -- +18 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=ax_warriors"
          }

=== modified file 'data/tribes/buildings/productionsites/barbarians/weaving_mill/init.lua'
--- data/tribes/buildings/productionsites/barbarians/weaving_mill/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/weaving_mill/init.lua	2018-07-08 18:06:37 +0000
@@ -56,10 +56,10 @@
          descname = _"weaving",
          actions = {
             "sleep=25000",
-            "check_map=seafaring",
+            "checkmap=seafaring",
             "return=skipped unless economy needs cloth",
             "consume=thatch_reed",
-            "play_sound=sound/barbarians weaver 120",
+            "playsound=sound/barbarians weaver 120",
             "animate=working 20000",
             "produce=cloth"
          }

=== modified file 'data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua'
--- data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/barbarians/wood_hardener/init.lua	2018-07-08 18:06:37 +0000
@@ -62,7 +62,7 @@
             "sleep=43000",
             "return=skipped unless economy needs blackwood",
             "consume=log:2",
-            "play_sound=sound/barbarians blackwood 80",
+            "playsound=sound/barbarians blackwood 80",
             "animate=working 24000",
             "produce=blackwood"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/brewery/init.lua'
--- data/tribes/buildings/productionsites/empire/brewery/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/brewery/init.lua	2018-07-08 18:06:37 +0000
@@ -56,7 +56,7 @@
             "sleep=30000",
             "return=skipped unless economy needs beer",
             "consume=water wheat",
-            "play_sound=sound/empire beerbubble 180",
+            "playsound=sound/empire beerbubble 180",
             "animate=working 30000",
             "produce=beer"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/donkeyfarm/init.lua'
--- data/tribes/buildings/productionsites/empire/donkeyfarm/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/donkeyfarm/init.lua	2018-07-08 18:06:37 +0000
@@ -55,7 +55,7 @@
             "sleep=15000",
             "return=skipped unless economy needs empire_donkey",
             "consume=wheat water",
-            "play_sound=sound/farm donkey 192",
+            "playsound=sound/farm donkey 192",
             "animate=working 15000", -- Feeding cute little baby donkeys ;)
             "recruit=empire_donkey"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/farm/init.lua'
--- data/tribes/buildings/productionsites/empire/farm/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/empire/farm/init.lua	2018-07-08 18:06:37 +0000
@@ -50,25 +50,25 @@
          -- TRANSLATORS: Completed/Skipped/Did not start working because ...
          descname = _"working",
          actions = {
-            "call=plant_wheat",
-            "call=harvest_wheat",
+            "call=plant",
+            "call=harvest",
             "return=skipped"
          }
       },
-      plant_wheat = {
+      plant = {
          -- TRANSLATORS: Completed/Skipped/Did not start planting wheat because ...
          descname = _"planting wheat",
          actions = {
             "sleep=14000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
-      harvest_wheat = {
+      harvest = {
          -- TRANSLATORS: Completed/Skipped/Did not start harvesting wheat because ...
          descname = _"harvesting wheat",
          actions = {
             "sleep=4000",
-            "worker=harvest"
+            "callworker=harvest"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/empire/fishers_house/init.lua'
--- data/tribes/buildings/productionsites/empire/fishers_house/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/empire/fishers_house/init.lua	2018-07-08 18:06:37 +0000
@@ -45,7 +45,7 @@
          descname = _"fishing",
          actions = {
             "sleep=17000",
-            "worker=fish"
+            "callworker=fish"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/empire/foresters_house/init.lua'
--- data/tribes/buildings/productionsites/empire/foresters_house/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/empire/foresters_house/init.lua	2018-07-08 18:06:37 +0000
@@ -43,7 +43,7 @@
          descname = _"planting trees",
          actions = {
             "sleep=11000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/empire/hunters_house/init.lua'
--- data/tribes/buildings/productionsites/empire/hunters_house/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/empire/hunters_house/init.lua	2018-07-08 18:06:37 +0000
@@ -44,7 +44,7 @@
          descname = _"hunting",
          actions = {
             "sleep=35000",
-            "worker=hunt"
+            "callworker=hunt"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/empire/inn/init.lua'
--- data/tribes/buildings/productionsites/empire/inn/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/inn/init.lua	2018-07-08 18:06:37 +0000
@@ -66,7 +66,7 @@
             "return=skipped unless economy needs ration",
             "sleep=10000",
             "consume=empire_bread,fish,meat",
-            "play_sound=sound/empire/taverns ration 100",
+            "playsound=sound/empire/taverns ration 100",
             "animate=working 19000",
             "sleep=4000",
             "produce=ration"
@@ -80,7 +80,7 @@
             "return=skipped unless economy needs meal",
             "sleep=10000",
             "consume=empire_bread fish,meat",
-            "play_sound=sound/empire/taverns meal 100",
+            "playsound=sound/empire/taverns meal 100",
             "animate=working 25000",
             "sleep=5000",
             "produce=meal"

=== modified file 'data/tribes/buildings/productionsites/empire/lumberjacks_house/init.lua'
--- data/tribes/buildings/productionsites/empire/lumberjacks_house/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/empire/lumberjacks_house/init.lua	2018-07-08 18:06:37 +0000
@@ -43,7 +43,7 @@
          descname = _"felling trees",
          actions = {
             "sleep=30000", -- Barbarian lumberjack sleeps 25000
-            "worker=chop"
+            "callworker=harvest"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/empire/mill/init.lua'
--- data/tribes/buildings/productionsites/empire/mill/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/mill/init.lua	2018-07-08 18:06:37 +0000
@@ -55,7 +55,7 @@
             "sleep=5000",
             "return=skipped unless economy needs flour",
             "consume=wheat",
-            "play_sound=sound/mill mill_turning 240",
+            "playsound=sound/mill mill_turning 240",
             "animate=working 10000",
             "produce=flour"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/piggery/init.lua'
--- data/tribes/buildings/productionsites/empire/piggery/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/piggery/init.lua	2018-07-08 18:06:37 +0000
@@ -56,7 +56,7 @@
             "sleep=25000",
             "return=skipped unless economy needs meat",
             "consume=water wheat",
-            "play_sound=sound/farm farm_animal 180",
+            "playsound=sound/farm farm_animal 180",
             "animate=working 30000",
             "produce=meat"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/quarry/init.lua'
--- data/tribes/buildings/productionsites/empire/quarry/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/empire/quarry/init.lua	2018-07-08 18:06:37 +0000
@@ -58,7 +58,7 @@
          actions = {
            -- This order is on purpose so that the productivity
            -- drops fast once all rocks are gone.
-            "worker=cut_granite",
+            "callworker=cut_granite",
             "sleep=25000"
          }
       },
@@ -68,7 +68,7 @@
          actions = {
            -- This order is on purpose so that the productivity
            -- drops fast once all rocks are gone.
-            "worker=cut_marble",
+            "callworker=cut_marble",
             "sleep=25000"
          }
       },

=== modified file 'data/tribes/buildings/productionsites/empire/sawmill/init.lua'
--- data/tribes/buildings/productionsites/empire/sawmill/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/empire/sawmill/init.lua	2018-07-08 18:06:37 +0000
@@ -55,7 +55,7 @@
             "sleep=16500", -- Much faster than barbarians' wood hardener
             "return=skipped unless economy needs planks",
             "consume=log:2",
-            "play_sound=sound/sawmill sawmill 180",
+            "playsound=sound/sawmill sawmill 180",
             "animate=working 20000", -- Much faster than barbarians' wood hardener
             "produce=planks"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/scouts_house/init.lua'
--- data/tribes/buildings/productionsites/empire/scouts_house/init.lua	2016-09-03 14:59:10 +0000
+++ data/tribes/buildings/productionsites/empire/scouts_house/init.lua	2018-07-08 18:06:37 +0000
@@ -46,7 +46,7 @@
          actions = {
             "sleep=30000",
             "consume=ration",
-            "worker=scout"
+            "callworker=scout"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/empire/sheepfarm/init.lua'
--- data/tribes/buildings/productionsites/empire/sheepfarm/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/empire/sheepfarm/init.lua	2018-07-08 18:06:37 +0000
@@ -56,7 +56,7 @@
             "sleep=25000",
             "return=skipped unless economy needs wool",
             "consume=water wheat",
-            "play_sound=sound/farm sheep 192",
+            "playsound=sound/farm sheep 192",
             "animate=working 30000",
             "produce=wool"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/shipyard/init.lua'
--- data/tribes/buildings/productionsites/empire/shipyard/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/shipyard/init.lua	2018-07-08 18:06:37 +0000
@@ -71,7 +71,7 @@
          -- TRANSLATORS: Completed/Skipped/Did not start constructing a ship because ...
          descname = _"constructing a ship",
          actions = {
-            "check_map=seafaring",
+            "checkmap=seafaring",
             "construct=empire_shipconstruction buildship 6",
             "animate=working 35000",
             "return=completed"

=== modified file 'data/tribes/buildings/productionsites/empire/smelting_works/init.lua'
--- data/tribes/buildings/productionsites/empire/smelting_works/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/smelting_works/init.lua	2018-07-08 18:06:37 +0000
@@ -74,9 +74,9 @@
             "sleep=5000",  -- penalty for unavailable iron_ore (2x)
             "consume=iron_ore coal",
             "sleep=20000",
-            "play_sound=sound/metal fizzle 150",
+            "playsound=sound/metal fizzle 150",
             "animate=working 35000",
-            "play_sound=sound/metal ironping 80",
+            "playsound=sound/metal ironping 80",
             "produce=iron"
          }
       },
@@ -88,9 +88,9 @@
             "sleep=10000",  -- penalty for unavailable gold_ore
             "consume=gold_ore coal",
             "sleep=15000",
-            "play_sound=sound/metal fizzle 150",
+            "playsound=sound/metal fizzle 150",
             "animate=working 35000",
-            "play_sound=sound/metal goldping 80",
+            "playsound=sound/metal goldping 80",
             "produce=gold"
          }
       },

=== modified file 'data/tribes/buildings/productionsites/empire/stonemasons_house/init.lua'
--- data/tribes/buildings/productionsites/empire/stonemasons_house/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/stonemasons_house/init.lua	2018-07-08 18:06:37 +0000
@@ -56,7 +56,7 @@
             "sleep=50000",
             "return=skipped unless economy needs marble_column",
             "consume=marble:2",
-            "play_sound=sound/stonecutting stonemason 192",
+            "playsound=sound/stonecutting stonemason 192",
             "animate=working 32000",
             "produce=marble_column"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/tavern/init.lua'
--- data/tribes/buildings/productionsites/empire/tavern/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/tavern/init.lua	2018-07-08 18:06:37 +0000
@@ -59,7 +59,7 @@
             "sleep=14000",
             "return=skipped unless economy needs ration",
             "consume=empire_bread,fish,meat",
-            "play_sound=sound/empire/taverns ration 100",
+            "playsound=sound/empire/taverns ration 100",
             "animate=working 19000",
             "produce=ration"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/toolsmithy/init.lua'
--- data/tribes/buildings/productionsites/empire/toolsmithy/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/toolsmithy/init.lua	2018-07-08 18:06:37 +0000
@@ -85,7 +85,7 @@
             "return=skipped unless economy needs felling_ax",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=felling_ax"
          }
@@ -97,7 +97,7 @@
             "return=skipped unless economy needs basket",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=basket"
          }
@@ -109,7 +109,7 @@
             "return=skipped unless economy needs bread_paddle",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=bread_paddle"
          }
@@ -121,7 +121,7 @@
             "return=skipped unless economy needs fire_tongs",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=fire_tongs"
          }
@@ -133,7 +133,7 @@
             "return=skipped unless economy needs fishing_rod",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=fishing_rod"
          }
@@ -145,7 +145,7 @@
             "return=skipped unless economy needs hammer",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=hammer"
          }
@@ -157,7 +157,7 @@
             "return=skipped unless economy needs hunting_spear",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=hunting_spear"
          }
@@ -169,7 +169,7 @@
             "return=skipped unless economy needs kitchen_tools",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=kitchen_tools"
          }
@@ -181,7 +181,7 @@
             "return=skipped unless economy needs pick",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=pick"
          }
@@ -193,7 +193,7 @@
             "return=skipped unless economy needs saw",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=saw"
          }
@@ -205,7 +205,7 @@
             "return=skipped unless economy needs scythe",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=scythe"
          }
@@ -217,7 +217,7 @@
             "return=skipped unless economy needs shovel",
             "sleep=32000",
             "consume=iron log",
-            "play_sound=sound/smiths toolsmith 192",
+            "playsound=sound/smiths toolsmith 192",
             "animate=working 35000",
             "produce=shovel"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/vineyard/init.lua'
--- data/tribes/buildings/productionsites/empire/vineyard/init.lua	2017-09-18 16:32:43 +0000
+++ data/tribes/buildings/productionsites/empire/vineyard/init.lua	2018-07-08 18:06:37 +0000
@@ -49,25 +49,25 @@
          -- TRANSLATORS: Completed/Skipped/Did not start working because ...
          descname = _"working",
          actions = {
-            "call=plant_vine",
-            "call=harvest_vine",
+            "call=plant",
+            "call=harvest",
             "return=skipped"
          }
       },
-      plant_vine = {
+      plant = {
          -- TRANSLATORS: Completed/Skipped/Did not start planting grapevines because ...
          descname = _"planting grapevines",
          actions = {
             "sleep=20000",
-            "worker=plantvine"
+            "callworker=plant"
          }
       },
-      harvest_vine = {
+      harvest = {
          -- TRANSLATORS: Completed/Skipped/Did not start harvesting grapevines because ...
          descname = _"harvesting grapes",
          actions = {
             "sleep=5000",
-            "worker=harvestvine"
+            "callworker=harvest"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/empire/weaponsmithy/init.lua'
--- data/tribes/buildings/productionsites/empire/weaponsmithy/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/weaponsmithy/init.lua	2018-07-08 18:06:37 +0000
@@ -81,9 +81,9 @@
             "return=skipped unless economy needs spear_wooden",
             "sleep=27000",  -- +7 enlarge
             "consume=planks",
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 28000",  -- +7 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=spear_wooden"
          }
@@ -96,9 +96,9 @@
             "return=skipped unless economy needs spear",
             "consume=coal iron planks",
             "sleep=47000",  -- +15 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 46000",  -- +10 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=spear"
          }
@@ -111,9 +111,9 @@
             "return=skipped unless economy needs spear_advanced",
             "consume=coal iron:2 planks",
             "sleep=50000",  -- +18 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 51000",  -- +15 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=spear_advanced"
          }
@@ -126,9 +126,9 @@
             "return=skipped unless economy needs spear_heavy",
             "consume=coal:2 gold iron planks",
             "sleep=55000",  -- +23 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 51000",  -- +15 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=spear_heavy"
          }
@@ -141,9 +141,9 @@
             "return=skipped unless economy needs spear_war",
             "consume=coal:2 gold iron:2 planks",
             "sleep=55000",  -- +23 enlarge
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 56000",  -- +20 enlarge
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=spear_war"
          }

=== modified file 'data/tribes/buildings/productionsites/empire/weaving_mill/init.lua'
--- data/tribes/buildings/productionsites/empire/weaving_mill/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/weaving_mill/init.lua	2018-07-08 18:06:37 +0000
@@ -63,7 +63,7 @@
             "return=skipped unless economy needs cloth",
             "consume=wool",
             "sleep=15000",
-            "play_sound=sound/mill weaving 120",
+            "playsound=sound/mill weaving 120",
             "animate=working 15000", -- Unsure of balancing CW
             "sleep=5000",
             "produce=cloth"

=== modified file 'data/tribes/buildings/productionsites/empire/winery/init.lua'
--- data/tribes/buildings/productionsites/empire/winery/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/productionsites/empire/winery/init.lua	2018-07-08 18:06:37 +0000
@@ -58,7 +58,7 @@
             -- Grapes are only needed for wine, so no need to check if wine is needed
             "sleep=30000",
             "consume=grape:2",
-            "play_sound=sound/empire winebubble 180",
+            "playsound=sound/empire winebubble 180",
             "animate=working 30000",
             "produce=wine"
          }

=== modified file 'data/tribes/buildings/productionsites/frisians/aqua_farm/init.lua'
--- data/tribes/buildings/productionsites/frisians/aqua_farm/init.lua	2018-05-29 20:22:39 +0000
+++ data/tribes/buildings/productionsites/frisians/aqua_farm/init.lua	2018-07-08 18:06:37 +0000
@@ -67,7 +67,7 @@
             "sleep=23000",
             "return=failed unless site has water:3",
             "return=failed unless site has fruit",
-            "worker=breed_in_pond",
+            "callworker=breed_in_pond",
             "consume=fruit water:3",
          },
       },
@@ -77,7 +77,7 @@
          actions = {
             "return=skipped unless economy needs fish",
             "sleep=9000",
-            "worker=fish_in_pond",
+            "callworker=fish_in_pond",
          },
       },
    },

=== modified file 'data/tribes/buildings/productionsites/frisians/armor_smithy_large/init.lua'
--- data/tribes/buildings/productionsites/frisians/armor_smithy_large/init.lua	2018-05-22 06:15:07 +0000
+++ data/tribes/buildings/productionsites/frisians/armor_smithy_large/init.lua	2018-07-08 18:06:37 +0000
@@ -78,9 +78,9 @@
             "return=skipped unless economy needs sword_broad",
             "sleep=39000",
             "consume=coal iron:2 gold",
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 34000",
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=sword_broad"
          },
@@ -93,9 +93,9 @@
             "return=skipped unless economy needs sword_double",
             "consume=coal:2 iron:2 gold",
             "sleep=41000",
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 37000",
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=sword_double"
          },

=== modified file 'data/tribes/buildings/productionsites/frisians/armor_smithy_small/init.lua'
--- data/tribes/buildings/productionsites/frisians/armor_smithy_small/init.lua	2018-05-22 06:15:07 +0000
+++ data/tribes/buildings/productionsites/frisians/armor_smithy_small/init.lua	2018-07-08 18:06:37 +0000
@@ -77,9 +77,9 @@
             "return=skipped unless economy needs sword_short",
             "sleep=37000",
             "consume=coal iron",
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 30000",
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=sword_short"
          },
@@ -92,9 +92,9 @@
             "return=skipped unless economy needs sword_long",
             "consume=coal iron:2",
             "sleep=38000",
-            "play_sound=sound/smiths smith 192",
+            "playsound=sound/smiths smith 192",
             "animate=working 32000",
-            "play_sound=sound/smiths sharpening 120",
+            "playsound=sound/smiths sharpening 120",
             "sleep=9000",
             "produce=sword_long"
          },

=== modified file 'data/tribes/buildings/productionsites/frisians/beekeepers_house/init.lua'
--- data/tribes/buildings/productionsites/frisians/beekeepers_house/init.lua	2018-05-29 20:22:39 +0000
+++ data/tribes/buildings/productionsites/frisians/beekeepers_house/init.lua	2018-07-08 18:06:37 +0000
@@ -51,7 +51,7 @@
          descname = _"working",
          actions = {
             "sleep=45000",
-            "worker=bees"
+            "callworker=bees"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/frisians/berry_farm/init.lua'
--- data/tribes/buildings/productionsites/frisians/berry_farm/init.lua	2018-04-27 22:30:41 +0000
+++ data/tribes/buildings/productionsites/frisians/berry_farm/init.lua	2018-07-08 18:06:37 +0000
@@ -47,7 +47,7 @@
          descname = _"planting bushes",
          actions = {
             "sleep=21000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/frisians/clay_pit/init.lua'
--- data/tribes/buildings/productionsites/frisians/clay_pit/init.lua	2018-05-23 05:05:34 +0000
+++ data/tribes/buildings/productionsites/frisians/clay_pit/init.lua	2018-07-08 18:06:37 +0000
@@ -61,7 +61,7 @@
             "sleep=20000",
             "return=skipped unless economy needs clay or site has water",
             "return=failed unless site has water",
-            "worker=dig",
+            "callworker=dig",
             "consume=water",
             "sleep=2000",
             "animate=working 17000",

=== modified file 'data/tribes/buildings/productionsites/frisians/collectors_house/init.lua'
--- data/tribes/buildings/productionsites/frisians/collectors_house/init.lua	2018-05-29 20:22:39 +0000
+++ data/tribes/buildings/productionsites/frisians/collectors_house/init.lua	2018-07-08 18:06:37 +0000
@@ -51,7 +51,7 @@
          descname = _"gathering berries",
          actions = {
             "sleep=21000",
-            "worker=harvest",
+            "callworker=harvest",
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/frisians/farm/init.lua'
--- data/tribes/buildings/productionsites/frisians/farm/init.lua	2018-04-27 22:30:41 +0000
+++ data/tribes/buildings/productionsites/frisians/farm/init.lua	2018-07-08 18:06:37 +0000
@@ -68,7 +68,7 @@
          descname = _"planting barley",
          actions = {
             "sleep=18000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
       harvest_barley = {
@@ -76,7 +76,7 @@
          descname = _"harvesting barley",
          actions = {
             "sleep=8000",
-            "worker=harvest",
+            "callworker=harvest",
             "animate=working 40000",
             "produce=barley" --produces 2 barley per field
          }

=== modified file 'data/tribes/buildings/productionsites/frisians/fishers_house/init.lua'
--- data/tribes/buildings/productionsites/frisians/fishers_house/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/frisians/fishers_house/init.lua	2018-07-08 18:06:37 +0000
@@ -51,7 +51,7 @@
          descname = _"fishing",
          actions = {
             "sleep=16000",
-            "worker=fish"
+            "callworker=fish"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/frisians/foresters_house/init.lua'
--- data/tribes/buildings/productionsites/frisians/foresters_house/init.lua	2018-04-27 22:30:41 +0000
+++ data/tribes/buildings/productionsites/frisians/foresters_house/init.lua	2018-07-08 18:06:37 +0000
@@ -46,7 +46,7 @@
          descname = _"planting trees",
          actions = {
             "sleep=12000",
-            "worker=plant"
+            "callworker=plant"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/frisians/hunters_house/init.lua'
--- data/tribes/buildings/productionsites/frisians/hunters_house/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/frisians/hunters_house/init.lua	2018-07-08 18:06:37 +0000
@@ -51,11 +51,11 @@
          descname = _"hunting",
          actions = {
             "sleep=35000",
-            "worker=hunt",
-            "sleep=35000",
-            "worker=hunt",
-            "sleep=35000",
-            "worker=hunt",
+            "callworker=hunt",
+            "sleep=35000",
+            "callworker=hunt",
+            "sleep=35000",
+            "callworker=hunt",
             "produce=fur"
          }
       },

=== modified file 'data/tribes/buildings/productionsites/frisians/quarry/init.lua'
--- data/tribes/buildings/productionsites/frisians/quarry/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/frisians/quarry/init.lua	2018-07-08 18:06:37 +0000
@@ -60,7 +60,7 @@
          actions = {
            -- This order is on purpose so that the productivity
            -- drops fast once all rocks are gone.
-            "worker=cut_granite",
+            "callworker=cut_granite",
             "sleep=25000"
          }
       },

=== modified file 'data/tribes/buildings/productionsites/frisians/reed_farm/init.lua'
--- data/tribes/buildings/productionsites/frisians/reed_farm/init.lua	2018-05-05 20:46:20 +0000
+++ data/tribes/buildings/productionsites/frisians/reed_farm/init.lua	2018-07-08 18:06:37 +0000
@@ -62,7 +62,7 @@
          descname = _"planting reed",
          actions = {
             "sleep=18000",
-            "worker=plantreed"
+            "callworker=plantreed"
          }
       },
       harvest_reed = {
@@ -70,7 +70,7 @@
          descname = _"harvesting reed",
          actions = {
             "sleep=5000",
-            "worker=harvestreed"
+            "callworker=harvestreed"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/frisians/scouts_house/init.lua'
--- data/tribes/buildings/productionsites/frisians/scouts_house/init.lua	2018-04-27 22:30:41 +0000
+++ data/tribes/buildings/productionsites/frisians/scouts_house/init.lua	2018-07-08 18:06:37 +0000
@@ -48,7 +48,7 @@
          actions = {
             "sleep=30000",
             "consume=ration",
-            "worker=scout"
+            "callworker=scout"
          }
       },
    },

=== modified file 'data/tribes/buildings/productionsites/frisians/shipyard/init.lua'
--- data/tribes/buildings/productionsites/frisians/shipyard/init.lua	2018-04-27 22:30:41 +0000
+++ data/tribes/buildings/productionsites/frisians/shipyard/init.lua	2018-07-08 18:06:37 +0000
@@ -65,7 +65,7 @@
          -- TRANSLATORS: Completed/Skipped/Did not start constructing a ship because ...
          descname = _"constructing a ship",
          actions = {
-            "check_map=seafaring",
+            "checkmap=seafaring",
             "construct=frisians_shipconstruction buildship 6",
             "sleep=35000",
             "return=completed"

=== modified file 'data/tribes/buildings/productionsites/frisians/woodcutters_house/init.lua'
--- data/tribes/buildings/productionsites/frisians/woodcutters_house/init.lua	2018-05-24 10:19:21 +0000
+++ data/tribes/buildings/productionsites/frisians/woodcutters_house/init.lua	2018-07-08 18:06:37 +0000
@@ -49,7 +49,7 @@
          descname = _"felling trees",
          actions = {
             "sleep=30000",
-            "worker=chop"
+            "callworker=chop"
          }
       },
    },

=== modified file 'data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua'
--- data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua	2017-04-06 20:06:06 +0000
+++ data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua	2018-07-08 18:06:37 +0000
@@ -155,16 +155,16 @@
          descname = _"sleeping",
          actions = {
             "sleep=5000",
-            "check_soldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
+            "checksoldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
          }
       },
       upgrade_soldier_attack_0 = {
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("atlanteans_building", "upgrading soldier attack from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier attack 0",
+            "checksoldier=soldier attack 0",
             "sleep=30000",
-            "check_soldier=soldier attack 0",
+            "checksoldier=soldier attack 0",
             "consume=atlanteans_bread smoked_fish,smoked_meat trident_long",
             "train=soldier attack 0 1"
          }
@@ -173,9 +173,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("atlanteans_building", "upgrading soldier attack from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier attack 1",
+            "checksoldier=soldier attack 1",
             "sleep=30000",
-            "check_soldier=soldier attack 1",
+            "checksoldier=soldier attack 1",
             "consume=atlanteans_bread smoked_fish,smoked_meat trident_steel",
             "train=soldier attack 1 2"
          }
@@ -184,9 +184,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("atlanteans_building", "upgrading soldier attack from level 2 to level 3"),
          actions = {
-            "check_soldier=soldier attack 2",
+            "checksoldier=soldier attack 2",
             "sleep=30000",
-            "check_soldier=soldier attack 2",
+            "checksoldier=soldier attack 2",
             "consume=atlanteans_bread smoked_fish,smoked_meat trident_double",
             "train=soldier attack 2 3"
          }
@@ -195,9 +195,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("atlanteans_building", "upgrading soldier attack from level 3 to level 4"),
          actions = {
-            "check_soldier=soldier attack 3",
+            "checksoldier=soldier attack 3",
             "sleep=30000",
-            "check_soldier=soldier attack 3",
+            "checksoldier=soldier attack 3",
             "consume=atlanteans_bread smoked_fish,smoked_meat trident_heavy_double",
             "train=soldier attack 3 4"
          }

=== modified file 'data/tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua'
--- data/tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua	2018-07-08 18:06:37 +0000
@@ -92,16 +92,16 @@
          descname = _"sleeping",
          actions = {
             "sleep=5000",
-            "check_soldier=soldier attack 9" -- dummy check to get sleep rated as skipped - else it will change statistics
+            "checksoldier=soldier attack 9" -- dummy check to get sleep rated as skipped - else it will change statistics
          }
       },
       upgrade_soldier_defense_0 = {
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("atlanteans_building", "upgrading soldier defense from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier defense 0", -- Fails when aren't any soldier of level 0 defense
+            "checksoldier=soldier defense 0", -- Fails when aren't any soldier of level 0 defense
             "sleep=30000",
-            "check_soldier=soldier defense 0", -- Because the soldier can be expulsed by the player
+            "checksoldier=soldier defense 0", -- Because the soldier can be expulsed by the player
             "consume=atlanteans_bread smoked_fish,smoked_meat shield_steel",
             "train=soldier defense 0 1"
          }
@@ -110,9 +110,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("atlanteans_building", "upgrading soldier defense from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier defense 1", -- Fails when aren't any soldier of level 1 defense
+            "checksoldier=soldier defense 1", -- Fails when aren't any soldier of level 1 defense
             "sleep=30000",
-            "check_soldier=soldier defense 1", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier defense 1", -- Because the soldier can be expelled by the player
             "consume=atlanteans_bread smoked_fish,smoked_meat shield_advanced",
             "train=soldier defense 1 2"
          }
@@ -121,9 +121,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("atlanteans_building", "upgrading soldier health from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier health 0", -- Fails when aren't any soldier of level 0 health
+            "checksoldier=soldier health 0", -- Fails when aren't any soldier of level 0 health
             "sleep=30000",
-            "check_soldier=soldier health 0", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier health 0", -- Because the soldier can be expelled by the player
             "consume=smoked_fish,smoked_meat:2 tabard_golden",
             "train=soldier health 0 1"
          }
@@ -132,9 +132,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("atlanteans_building", "upgrading soldier evade from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier evade 0", -- Fails when aren't any soldier of level 0 evade
+            "checksoldier=soldier evade 0", -- Fails when aren't any soldier of level 0 evade
             "sleep=30000",
-            "check_soldier=soldier evade 0", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier evade 0", -- Because the soldier can be expelled by the player
             "consume=atlanteans_bread smoked_fish,smoked_meat:2",
             "train=soldier evade 0 1"
          }
@@ -143,9 +143,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("atlanteans_building", "upgrading soldier evade from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier evade 1", -- Fails when aren't any soldier of level 1 evade
+            "checksoldier=soldier evade 1", -- Fails when aren't any soldier of level 1 evade
             "sleep=30000",
-            "check_soldier=soldier evade 1", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier evade 1", -- Because the soldier can be expelled by the player
             "consume=atlanteans_bread:2 smoked_fish,smoked_meat:2",
             "train=soldier evade 1 2"
          }

=== modified file 'data/tribes/buildings/trainingsites/barbarians/battlearena/init.lua'
--- data/tribes/buildings/trainingsites/barbarians/battlearena/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/trainingsites/barbarians/battlearena/init.lua	2018-07-08 18:06:37 +0000
@@ -81,16 +81,16 @@
          descname = _"sleeping",
          actions = {
             "sleep=5000",
-            "check_soldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
+            "checksoldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
          }
       },
       upgrade_soldier_evade_0 = {
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier evade from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier evade 0", -- Fails when aren't any soldier of level 0 evade
+            "checksoldier=soldier evade 0", -- Fails when aren't any soldier of level 0 evade
             "sleep=15000",
-            "check_soldier=soldier evade 0", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier evade 0", -- Because the soldier can be expelled by the player
             "consume=barbarians_bread fish,meat beer_strong",
             "animate=working 15000",
             "train=soldier evade 0 1"
@@ -100,9 +100,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier evade from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier evade 1", -- Fails when aren't any soldier of level 1 evade
+            "checksoldier=soldier evade 1", -- Fails when aren't any soldier of level 1 evade
             "sleep=15000",
-            "check_soldier=soldier evade 1", -- Because the soldier can be expulsed by the player
+            "checksoldier=soldier evade 1", -- Because the soldier can be expulsed by the player
             "consume=barbarians_bread:2 fish,meat beer_strong",
             "animate=working 15000",
             "train=soldier evade 1 2"

=== modified file 'data/tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua'
--- data/tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua	2017-04-06 20:06:06 +0000
+++ data/tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua	2018-07-08 18:06:37 +0000
@@ -101,16 +101,16 @@
          descname = _"sleeping",
          actions = {
             "sleep=5000",
-            "check_soldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
+            "checksoldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
          }
       },
       upgrade_soldier_attack_0 = {
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier attack from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier attack 0", -- Fails when aren't any soldier of level 0 attack
+            "checksoldier=soldier attack 0", -- Fails when aren't any soldier of level 0 attack
             "sleep=30000",
-            "check_soldier=soldier attack 0", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier attack 0", -- Because the soldier can be expelled by the player
             "consume=ax_sharp fish,meat barbarians_bread",
             "train=soldier attack 0 1"
          }
@@ -119,9 +119,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier attack from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier attack 1",
+            "checksoldier=soldier attack 1",
             "sleep=30000",
-            "check_soldier=soldier attack 1",
+            "checksoldier=soldier attack 1",
             "consume=ax_broad fish,meat barbarians_bread",
             "train=soldier attack 1 2"
          }
@@ -130,9 +130,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier attack from level 2 to level 3"),
          actions = {
-            "check_soldier=soldier attack 2",
+            "checksoldier=soldier attack 2",
             "sleep=30000",
-            "check_soldier=soldier attack 2",
+            "checksoldier=soldier attack 2",
             "consume=ax_bronze fish,meat barbarians_bread",
             "train=soldier attack 2 3"
          }
@@ -141,9 +141,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier attack from level 3 to level 4"),
          actions = {
-            "check_soldier=soldier attack 3",
+            "checksoldier=soldier attack 3",
             "sleep=30000",
-            "check_soldier=soldier attack 3",
+            "checksoldier=soldier attack 3",
             "consume=ax_battle fish,meat:2 barbarians_bread",
             "train=soldier attack 3 4"
          }
@@ -152,9 +152,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier attack from level 4 to level 5"),
          actions = {
-            "check_soldier=soldier attack 4",
+            "checksoldier=soldier attack 4",
             "sleep=30000",
-            "check_soldier=soldier attack 4",
+            "checksoldier=soldier attack 4",
             "consume=ax_warriors fish,meat barbarians_bread:2",
             "train=soldier attack 4 5"
          }
@@ -163,9 +163,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier health from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier health 0",
+            "checksoldier=soldier health 0",
             "sleep=30000",
-            "check_soldier=soldier health 0",
+            "checksoldier=soldier health 0",
             "consume=helmet barbarians_bread,fish,meat",
             "train=soldier health 0 1"
          }
@@ -174,9 +174,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier health from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier health 1",
+            "checksoldier=soldier health 1",
             "sleep=30000",
-            "check_soldier=soldier health 1",
+            "checksoldier=soldier health 1",
             "consume=helmet_mask fish,meat barbarians_bread",
             "train=soldier health 1 2"
          }
@@ -185,9 +185,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("barbarians_building", "upgrading soldier health from level 2 to level 3"),
          actions = {
-            "check_soldier=soldier health 2",
+            "checksoldier=soldier health 2",
             "sleep=30000",
-            "check_soldier=soldier health 2",
+            "checksoldier=soldier health 2",
             "consume=helmet_warhelm fish,meat:2 barbarians_bread",
             "train=soldier health 2 3"
          }

=== modified file 'data/tribes/buildings/trainingsites/empire/arena/init.lua'
--- data/tribes/buildings/trainingsites/empire/arena/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/trainingsites/empire/arena/init.lua	2018-07-08 18:06:37 +0000
@@ -72,16 +72,16 @@
          descname = _"sleeping",
          actions = {
             "sleep=5000",
-            "check_soldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
+            "checksoldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
          }
       },
       upgrade_soldier_evade_0 = {
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier evade from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier evade 0", -- Fails when aren't any soldier of level 0 evade
+            "checksoldier=soldier evade 0", -- Fails when aren't any soldier of level 0 evade
             "sleep=30000",
-            "check_soldier=soldier evade 0", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier evade 0", -- Because the soldier can be expelled by the player
             "consume=empire_bread:2 fish,meat",
             "train=soldier evade 0 1"
          }

=== modified file 'data/tribes/buildings/trainingsites/empire/colosseum/init.lua'
--- data/tribes/buildings/trainingsites/empire/colosseum/init.lua	2017-09-03 07:59:51 +0000
+++ data/tribes/buildings/trainingsites/empire/colosseum/init.lua	2018-07-08 18:06:37 +0000
@@ -66,16 +66,16 @@
          descname = _"sleeping",
          actions = {
             "sleep=5000",
-            "check_soldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
+            "checksoldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
          }
       },
       upgrade_soldier_evade_0 = {
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier evade from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier evade 0", -- Fails when aren't any soldier of level 0 evade
+            "checksoldier=soldier evade 0", -- Fails when aren't any soldier of level 0 evade
             "sleep=30000",
-            "check_soldier=soldier evade 0", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier evade 0", -- Because the soldier can be expelled by the player
             "consume=empire_bread:2 fish,meat",
             "train=soldier evade 0 1"
          }
@@ -84,9 +84,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier evade from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier evade 1", -- Fails when aren't any soldier of level 1 evade
+            "checksoldier=soldier evade 1", -- Fails when aren't any soldier of level 1 evade
             "sleep=30000",
-            "check_soldier=soldier evade 1", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier evade 1", -- Because the soldier can be expelled by the player
             "consume=empire_bread:2 fish,meat:2",
             "train=soldier evade 1 2"
          }

=== modified file 'data/tribes/buildings/trainingsites/empire/trainingcamp/init.lua'
--- data/tribes/buildings/trainingsites/empire/trainingcamp/init.lua	2017-04-06 20:06:06 +0000
+++ data/tribes/buildings/trainingsites/empire/trainingcamp/init.lua	2018-07-08 18:06:37 +0000
@@ -95,16 +95,16 @@
          descname = _"sleeping",
          actions = {
             "sleep=5000",
-            "check_soldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
+            "checksoldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
          }
       },
       upgrade_soldier_attack_0 = {
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier attack from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier attack 0", -- Fails when aren't any soldier of level 0 attack
+            "checksoldier=soldier attack 0", -- Fails when aren't any soldier of level 0 attack
             "sleep=30000",
-            "check_soldier=soldier attack 0", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier attack 0", -- Because the soldier can be expelled by the player
             "consume=spear empire_bread fish,meat",
             "train=soldier attack 0 1"
          }
@@ -113,9 +113,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier attack from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier attack 1",
+            "checksoldier=soldier attack 1",
             "sleep=30000",
-            "check_soldier=soldier attack 1",
+            "checksoldier=soldier attack 1",
             "consume=spear_advanced empire_bread fish,meat",
             "train=soldier attack 1 2"
          }
@@ -124,9 +124,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier attack from level 2 to level 3"),
          actions = {
-            "check_soldier=soldier attack 2",
+            "checksoldier=soldier attack 2",
             "sleep=30000",
-            "check_soldier=soldier attack 2",
+            "checksoldier=soldier attack 2",
             "consume=spear_heavy empire_bread fish,meat:2",
             "train=soldier attack 2 3"
          }
@@ -135,9 +135,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier attack from level 3 to level 4"),
          actions = {
-            "check_soldier=soldier attack 3",
+            "checksoldier=soldier attack 3",
             "sleep=30000",
-            "check_soldier=soldier attack 3",
+            "checksoldier=soldier attack 3",
             "consume=spear_war empire_bread:2 fish,meat",
             "train=soldier attack 3 4"
          }
@@ -146,9 +146,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier health from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier health 0",
+            "checksoldier=soldier health 0",
             "sleep=30000",
-            "check_soldier=soldier health 0",
+            "checksoldier=soldier health 0",
             "consume=armor_helmet empire_bread,fish,meat",
             "train=soldier health 0 1"
          }
@@ -157,9 +157,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier health from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier health 1",
+            "checksoldier=soldier health 1",
             "sleep=30000",
-            "check_soldier=soldier health 1",
+            "checksoldier=soldier health 1",
             "consume=armor empire_bread fish,meat",
             "train=soldier health 1 2"
          }
@@ -168,9 +168,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier health from level 2 to level 3"),
          actions = {
-            "check_soldier=soldier health 2",
+            "checksoldier=soldier health 2",
             "sleep=30000",
-            "check_soldier=soldier health 2",
+            "checksoldier=soldier health 2",
             "consume=armor_chain empire_bread:2 fish,meat:2",
             "train=soldier health 2 3"
          }
@@ -179,9 +179,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext("empire_building", "upgrading soldier health from level 3 to level 4"),
          actions = {
-            "check_soldier=soldier health 3",
+            "checksoldier=soldier health 3",
             "sleep=30000",
-            "check_soldier=soldier health 3",
+            "checksoldier=soldier health 3",
             "consume=armor_gilded empire_bread:2 fish,meat:2",
             "train=soldier health 3 4"
          }

=== modified file 'data/tribes/buildings/trainingsites/frisians/training_arena/init.lua'
--- data/tribes/buildings/trainingsites/frisians/training_arena/init.lua	2018-05-17 10:02:26 +0000
+++ data/tribes/buildings/trainingsites/frisians/training_arena/init.lua	2018-07-08 18:06:37 +0000
@@ -112,16 +112,16 @@
          descname = _"sleeping",
          actions = {
             "sleep=5000",
-            "check_soldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
+            "checksoldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
          }
       },
       upgrade_soldier_attack_3 = {
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier attack from level 3 to level 4"),
          actions = {
-            "check_soldier=soldier attack 3",
+            "checksoldier=soldier attack 3",
             "animate=working 22800",
-            "check_soldier=soldier attack 3", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier attack 3", -- Because the soldier can be expelled by the player
             "consume=sword_long honey_bread mead:2 smoked_fish,smoked_meat",
             "train=soldier attack 3 4"
          }
@@ -130,9 +130,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier attack from level 4 to level 5"),
          actions = {
-            "check_soldier=soldier attack 4",
+            "checksoldier=soldier attack 4",
             "animate=working 15600",
-            "check_soldier=soldier attack 4", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier attack 4", -- Because the soldier can be expelled by the player
             "consume=sword_broad honey_bread mead:2 smoked_fish,smoked_meat",
             "train=soldier attack 4 5",
             "produce=scrap_iron:2"
@@ -142,9 +142,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier attack from level 5 to level 6"),
          actions = {
-            "check_soldier=soldier attack 5",
+            "checksoldier=soldier attack 5",
             "animate=working 15600",
-            "check_soldier=soldier attack 5", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier attack 5", -- Because the soldier can be expelled by the player
             "consume=sword_double honey_bread mead:2 smoked_fish,smoked_meat",
             "train=soldier attack 5 6",
             "produce=scrap_iron scrap_metal_mixed"
@@ -154,9 +154,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier defense from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier defense 1",
+            "checksoldier=soldier defense 1",
             "animate=working 22800",
-            "check_soldier=soldier defense 1", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier defense 1", -- Because the soldier can be expelled by the player
             "consume=fur_garment_golden honey_bread,mead smoked_fish,smoked_meat",
             "train=soldier defense 1 2",
             "produce=scrap_iron fur_garment_old"
@@ -166,9 +166,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier health from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier health 1",
+            "checksoldier=soldier health 1",
             "animate=working 22800",
-            "check_soldier=soldier health 1", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier health 1", -- Because the soldier can be expelled by the player
             "consume=helmet_golden honey_bread,mead smoked_fish,smoked_meat",
             "train=soldier health 1 2",
             "produce=scrap_iron:2"

=== modified file 'data/tribes/buildings/trainingsites/frisians/training_camp/init.lua'
--- data/tribes/buildings/trainingsites/frisians/training_camp/init.lua	2018-05-17 10:02:26 +0000
+++ data/tribes/buildings/trainingsites/frisians/training_camp/init.lua	2018-07-08 18:06:37 +0000
@@ -114,16 +114,16 @@
          descname = _"sleeping",
          actions = {
             "sleep=5000",
-            "check_soldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
+            "checksoldier=soldier attack 9", -- dummy check to get sleep rated as skipped - else it will change statistics
          }
       },
       upgrade_soldier_attack_0 = {
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier attack from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier attack 0", -- Fails when aren't any soldier of level 0 attack
+            "checksoldier=soldier attack 0", -- Fails when aren't any soldier of level 0 attack
             "animate=working 26400",
-            "check_soldier=soldier attack 0", -- Because the soldier can be expelled by the player
+            "checksoldier=soldier attack 0", -- Because the soldier can be expelled by the player
             "consume=sword_long bread_frisians,beer,smoked_fish,smoked_meat",
             "train=soldier attack 0 1",
             "produce=scrap_iron"
@@ -133,9 +133,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier attack from level 1 to level 2"),
          actions = {
-            "check_soldier=soldier attack 1",
+            "checksoldier=soldier attack 1",
             "animate=working 22800",
-            "check_soldier=soldier attack 1",
+            "checksoldier=soldier attack 1",
             "consume=sword_broad bread_frisians beer smoked_fish,smoked_meat",
             "train=soldier attack 1 2",
             "produce=scrap_iron:2"
@@ -145,9 +145,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier attack from level 2 to level 3"),
          actions = {
-            "check_soldier=soldier attack 2",
+            "checksoldier=soldier attack 2",
             "animate=working 22800",
-            "check_soldier=soldier attack 2",
+            "checksoldier=soldier attack 2",
             "consume=sword_double bread_frisians beer smoked_fish,smoked_meat",
             "train=soldier attack 2 3",
             "produce=scrap_iron scrap_metal_mixed"
@@ -157,9 +157,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier health from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier health 0",
+            "checksoldier=soldier health 0",
             "animate=working 30000",
-            "check_soldier=soldier health 0",
+            "checksoldier=soldier health 0",
             "consume=helmet bread_frisians,beer smoked_fish,smoked_meat",
             "train=soldier health 0 1"
          }
@@ -168,9 +168,9 @@
          -- TRANSLATORS: Completed/Skipped/Did not start upgrading ... because ...
          descname = pgettext ("frisians_building", "upgrading soldier defense from level 0 to level 1"),
          actions = {
-            "check_soldier=soldier defense 0",
+            "checksoldier=soldier defense 0",
             "animate=working 26400",
-            "check_soldier=soldier defense 0",
+            "checksoldier=soldier defense 0",
             "consume=fur_garment_studded bread_frisians,beer smoked_fish,smoked_meat",
             "train=soldier defense 0 1",
             "produce=fur_garment_old"

=== modified file 'data/tribes/immovables/shipconstruction_atlanteans/init.lua'
--- data/tribes/immovables/shipconstruction_atlanteans/init.lua	2017-11-12 16:21:28 +0000
+++ data/tribes/immovables/shipconstruction_atlanteans/init.lua	2018-07-08 18:06:37 +0000
@@ -10,7 +10,7 @@
    attributes = { "shipconstruction" },
    programs = {
       program = {
-         "construction=idle 5000 210000",
+         "construct=idle 5000 210000",
          "transform=bob tribe:atlanteans_ship",
       }
    },

=== modified file 'data/tribes/immovables/shipconstruction_barbarians/init.lua'
--- data/tribes/immovables/shipconstruction_barbarians/init.lua	2017-11-12 16:21:28 +0000
+++ data/tribes/immovables/shipconstruction_barbarians/init.lua	2018-07-08 18:06:37 +0000
@@ -10,7 +10,7 @@
    attributes = { "shipconstruction" },
    programs = {
       program = {
-         "construction=idle 5000 210000",
+         "construct=idle 5000 210000",
          "transform=bob tribe:barbarians_ship",
       }
    },

=== modified file 'data/tribes/immovables/shipconstruction_empire/init.lua'
--- data/tribes/immovables/shipconstruction_empire/init.lua	2017-11-12 16:21:28 +0000
+++ data/tribes/immovables/shipconstruction_empire/init.lua	2018-07-08 18:06:37 +0000
@@ -10,7 +10,7 @@
    attributes = { "shipconstruction" },
    programs = {
       program = {
-         "construction=idle 5000 210000",
+         "construct=idle 5000 210000",
          "transform=bob tribe:empire_ship",
       }
    },

=== modified file 'data/tribes/immovables/shipconstruction_frisians/init.lua'
--- data/tribes/immovables/shipconstruction_frisians/init.lua	2018-02-08 11:26:22 +0000
+++ data/tribes/immovables/shipconstruction_frisians/init.lua	2018-07-08 18:06:37 +0000
@@ -11,7 +11,7 @@
    attributes = { "shipconstruction" },
    programs = {
       program = {
-         "construction=idle 5000 210000",
+         "construct=idle 5000 210000",
          "transform=bob tribe:frisians_ship",
       }
    },

=== modified file 'data/tribes/workers/atlanteans/blackroot_farmer/init.lua'
--- data/tribes/workers/atlanteans/blackroot_farmer/init.lua	2017-11-12 11:04:00 +0000
+++ data/tribes/workers/atlanteans/blackroot_farmer/init.lua	2018-07-08 18:06:37 +0000
@@ -41,20 +41,20 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:2",
-         "walk coords",
-         "animation planting 4000",
-         "plant attrib:seed_blackroot",
-         "animation planting 4000",
+         "findspace=size:any radius:2",
+         "walk=coords",
+         "animate=planting 4000",
+         "plant=attrib:seed_blackroot",
+         "animate=planting 4000",
          "return"
       },
       harvest = {
-         "findobject attrib:ripe_blackroot radius:2",
-         "walk object",
-         "animation harvesting 10000",
-         "object harvest",
-         "animation gathering 2000",
-         "createware blackroot",
+         "findobject=attrib:ripe_blackroot radius:2",
+         "walk=object",
+         "animate=harvesting 10000",
+         "callobject=harvest",
+         "animate=gathering 2000",
+         "createware=blackroot",
          "return"
       }
    },

=== modified file 'data/tribes/workers/atlanteans/farmer/init.lua'
--- data/tribes/workers/atlanteans/farmer/init.lua	2017-11-12 11:04:00 +0000
+++ data/tribes/workers/atlanteans/farmer/init.lua	2018-07-08 18:06:37 +0000
@@ -41,21 +41,21 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:2",
-         "walk coords",
-         "animation planting 4000",
-         "plant attrib:seed_corn",
-         "animation planting 4000",
+         "findspace=size:any radius:2",
+         "walk=coords",
+         "animate=planting 4000",
+         "plant=attrib:seed_corn",
+         "animate=planting 4000",
          "return"
       },
       harvest = {
-         "findobject attrib:ripe_corn radius:2",
-         "walk object",
-         "play_sound sound/farm scythe 220",
-         "animation harvesting 10000",
-         "object harvest",
-         "animation gathering 4000",
-         "createware corn",
+         "findobject=attrib:ripe_corn radius:2",
+         "walk=object",
+         "playsound=sound/farm scythe 220",
+         "animate=harvesting 10000",
+         "callobject=harvest",
+         "animate=gathering 4000",
+         "createware=corn",
          "return"
       }
    },

=== modified file 'data/tribes/workers/atlanteans/fishbreeder/init.lua'
--- data/tribes/workers/atlanteans/fishbreeder/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/atlanteans/fishbreeder/init.lua	2018-07-08 18:06:37 +0000
@@ -29,10 +29,10 @@
 
    programs = {
       breed = {
-         "findspace size:any radius:7 breed resource:fish",
-         "walk coords",
-         "animation freeing 3000", -- Play a freeing animation
-         "breed fish 1",
+         "findspace=size:any radius:7 breed resource:fish",
+         "walk=coords",
+         "animate=freeing 3000", -- Play a freeing animation
+         "breed=fish 1",
          "return"
       }
    },

=== modified file 'data/tribes/workers/atlanteans/fisher/init.lua'
--- data/tribes/workers/atlanteans/fisher/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/atlanteans/fisher/init.lua	2018-07-08 18:06:37 +0000
@@ -31,13 +31,13 @@
 
    programs = {
       fish = {
-         "findspace size:any radius:7 resource:fish",
-         "walk coords",
-         "play_sound sound/fisher fisher_throw_net 192",
-         "mine fish 1",
-         "animation fishing 3000",
-         "play_sound sound/fisher fisher_pull_net 192",
-         "createware fish",
+         "findspace=size:any radius:7 resource:fish",
+         "walk=coords",
+         "playsound=sound/fisher fisher_throw_net 192",
+         "mine=fish 1",
+         "animate=fishing 3000",
+         "playsound=sound/fisher fisher_pull_net 192",
+         "createware=fish",
          "return"
       }
    },

=== modified file 'data/tribes/workers/atlanteans/forester/init.lua'
--- data/tribes/workers/atlanteans/forester/init.lua	2018-01-12 19:56:39 +0000
+++ data/tribes/workers/atlanteans/forester/init.lua	2018-07-08 18:06:37 +0000
@@ -41,12 +41,12 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:5 avoid:field saplingsearches:12",
-         "walk coords",
-         "animation dig 2000", -- Play a planting animation
-         "animation planting 1000", -- Play a planting animation
-         "plant attrib:tree_sapling",
-         "animation water 2000",
+         "findspace=size:any radius:5 avoid:field saplingsearches:12",
+         "walk=coords",
+         "animate=dig 2000", -- Play a planting animation
+         "animate=planting 1000", -- Play a planting animation
+         "plant=attrib:tree_sapling",
+         "animate=water 2000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/atlanteans/geologist/init.lua'
--- data/tribes/workers/atlanteans/geologist/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/atlanteans/geologist/init.lua	2018-07-08 18:06:37 +0000
@@ -35,15 +35,15 @@
       -- The specialized geologist command walks the geologist around his starting
       -- location, executing the search program from time to time.
       expedition = {
-         "geologist 15 5 search"
+         "repeatsearch= 15 5 search"
       },
       -- Search program, executed when we have found a place to hack on
       search = {
-         "animation hacking 5000",
-         "animation idle 2000",
-         "play_sound sound/hammering geologist_hammer 192",
-         "animation hacking 3000",
-         "geologist_find"
+         "animate=hacking 5000",
+         "animate=idle 2000",
+         "playsound=sound/hammering geologist_hammer 192",
+         "animate=hacking 3000",
+         "findresources"
       }
    },
 

=== modified file 'data/tribes/workers/atlanteans/hunter/init.lua'
--- data/tribes/workers/atlanteans/hunter/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/atlanteans/hunter/init.lua	2018-07-08 18:06:37 +0000
@@ -27,11 +27,11 @@
 
    programs = {
       hunt = {
-         "findobject type:bob radius:13 attrib:eatable",
-         "walk object",
-         "animation idle 1500",
-         "object remove",
-         "createware meat",
+         "findobject=type:bob radius:13 attrib:eatable",
+         "walk=object",
+         "animate=idle 1500",
+         "removeobject",
+         "createware=meat",
          "return"
       }
    },

=== modified file 'data/tribes/workers/atlanteans/scout/init.lua'
--- data/tribes/workers/atlanteans/scout/init.lua	2017-12-16 14:48:15 +0000
+++ data/tribes/workers/atlanteans/scout/init.lua	2018-07-08 18:06:37 +0000
@@ -23,7 +23,7 @@
 
    programs = {
       scout = {
-         "scout 15 75000", -- radius 15, 75 seconds until return
+         "scout=15 75000", -- radius 15, 75 seconds until return
          "return"
       }
    },

=== modified file 'data/tribes/workers/atlanteans/shipwright/init.lua'
--- data/tribes/workers/atlanteans/shipwright/init.lua	2017-11-12 11:04:00 +0000
+++ data/tribes/workers/atlanteans/shipwright/init.lua	2018-07-08 18:06:37 +0000
@@ -31,12 +31,12 @@
 
    programs = {
       buildship = {
-         "walk object-or-coords",
-         "plant attrib:shipconstruction unless object",
-         "play_sound sound/sawmill sawmill 230",
-         "animation idle 500",
+         "walk=object-or-coords",
+         "plant=attrib:shipconstruction unless object",
+         "playsound=sound/sawmill sawmill 230",
+         "animate=idle 500",
          "construct",
-         "animation idle 5000",
+         "animate=idle 5000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/atlanteans/stonecutter/init.lua'
--- data/tribes/workers/atlanteans/stonecutter/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/atlanteans/stonecutter/init.lua	2018-07-08 18:06:37 +0000
@@ -31,12 +31,12 @@
 
    programs = {
       cut_granite = {
-         "findobject attrib:rocks radius:6",
-         "walk object",
-         "play_sound sound/atlanteans/cutting stonecutter 192",
-         "animation hacking 12000",
-         "object shrink",
-         "createware granite",
+         "findobject=attrib:rocks radius:6",
+         "walk=object",
+         "playsound=sound/atlanteans/cutting stonecutter 192",
+         "animate=hacking 12000",
+         "callobject=shrink",
+         "createware=granite",
          "return"
       }
    },

=== modified file 'data/tribes/workers/atlanteans/woodcutter/init.lua'
--- data/tribes/workers/atlanteans/woodcutter/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/atlanteans/woodcutter/init.lua	2018-07-08 18:06:37 +0000
@@ -31,14 +31,14 @@
 
    programs = {
       harvest = {
-         "findobject attrib:tree radius:10",
-         "walk object",
-         "play_sound sound/atlanteans/saw sawing 230",
-         "animation sawing 10000",
-         "play_sound sound/woodcutting tree-falling 130",
-         "object fall",
-         "animation idle 2000",
-         "createware log",
+         "findobject=attrib:tree radius:10",
+         "walk=object",
+         "playsound=sound/atlanteans/saw sawing 230",
+         "animate=sawing 10000",
+         "playsound=sound/woodcutting tree-falling 130",
+         "callobject=fall",
+         "animate=idle 2000",
+         "createware=log",
          "return"
       }
    },

=== modified file 'data/tribes/workers/barbarians/farmer/init.lua'
--- data/tribes/workers/barbarians/farmer/init.lua	2017-11-12 11:04:00 +0000
+++ data/tribes/workers/barbarians/farmer/init.lua	2018-07-08 18:06:37 +0000
@@ -41,21 +41,21 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:2 space",
-         "walk coords",
-         "animation planting 4000",
-         "plant attrib:seed_wheat",
-         "animation planting 4000",
+         "findspace=size:any radius:2 space",
+         "walk=coords",
+         "animate=planting 4000",
+         "plant=attrib:seed_wheat",
+         "animate=planting 4000",
          "return"
       },
       harvest = {
-         "findobject attrib:ripe_wheat radius:2",
-         "walk object",
-         "play_sound sound/farm scythe 220",
-         "animation harvesting 10000",
-         "object harvest",
-         "animation gathering 4000",
-         "createware wheat",
+         "findobject=attrib:ripe_wheat radius:2",
+         "walk=object",
+         "playsound=sound/farm scythe 220",
+         "animate=harvesting 10000",
+         "callobject=harvest",
+         "animate=gathering 4000",
+         "createware=wheat",
          "return"
       }
    },

=== modified file 'data/tribes/workers/barbarians/fisher/init.lua'
--- data/tribes/workers/barbarians/fisher/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/barbarians/fisher/init.lua	2018-07-08 18:06:37 +0000
@@ -31,13 +31,13 @@
 
    programs = {
       fish = {
-         "findspace size:any radius:7 resource:fish",
-         "walk coords",
-         "play_sound sound/fisher fisher_throw_net 192",
-         "mine fish 1",
-         "animation fishing 3000",
-         "play_sound sound/fisher fisher_pull_net 192",
-         "createware fish",
+         "findspace=size:any radius:7 resource:fish",
+         "walk=coords",
+         "playsound=sound/fisher fisher_throw_net 192",
+         "mine=fish 1",
+         "animate=fishing 3000",
+         "playsound=sound/fisher fisher_pull_net 192",
+         "createware=fish",
          "return"
       }
    },

=== modified file 'data/tribes/workers/barbarians/gamekeeper/init.lua'
--- data/tribes/workers/barbarians/gamekeeper/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/barbarians/gamekeeper/init.lua	2018-07-08 18:06:37 +0000
@@ -35,12 +35,11 @@
 
    programs = {
       release = {
-         "setbobdescription wildboar stag sheep",
-         "findspace size:any radius:3",
-         "walk coords",
-         "animation releasein 2000",
-         "create_bob",
-         "animation releaseout 2000",
+         "findspace=size:any radius:3",
+         "walk=coords",
+         "animate=releasein 2000",
+         "createbob=bunny chamois deer elk reindeer sheep stag wildboar wisent",
+         "animate=releaseout 2000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/barbarians/gardener/init.lua'
--- data/tribes/workers/barbarians/gardener/init.lua	2017-11-12 11:04:00 +0000
+++ data/tribes/workers/barbarians/gardener/init.lua	2018-07-08 18:06:37 +0000
@@ -35,21 +35,21 @@
    },
 
    programs = {
-      plantreed = {
-         "findspace size:any radius:1",
-         "walk coords",
-         "animation planting 1500",
-         "plant attrib:seed_reed",
-         "animation planting 1500",
+      plant = {
+         "findspace=size:any radius:1",
+         "walk=coords",
+         "animate=planting 1500",
+         "plant=attrib:seed_reed",
+         "animate=planting 1500",
          "return"
       },
-      harvestreed = {
-         "findobject attrib:ripe_reed radius:1",
-         "walk object",
-         "animation harvesting 12000",
-         "object harvest",
-         "animation harvesting 1",
-         "createware thatch_reed",
+      harvest = {
+         "findobject=attrib:ripe_reed radius:1",
+         "walk=object",
+         "animate=harvesting 12000",
+         "callobject=harvest",
+         "animate=harvesting 1",
+         "createware=thatch_reed",
          "return"
       },
    },

=== modified file 'data/tribes/workers/barbarians/geologist/init.lua'
--- data/tribes/workers/barbarians/geologist/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/barbarians/geologist/init.lua	2018-07-08 18:06:37 +0000
@@ -35,15 +35,15 @@
       -- The specialized geologist command walks the geologist around his starting
       -- location, executing the search program from time to time.
       expedition = {
-         "geologist 15 5 search"
+         "repeatsearch=15 5 search"
       },
       -- Search program, executed when we have found a place to hack on
       search = {
-         "animation hacking 5000",
-         "animation idle 2000",
-         "play_sound sound/hammering geologist_hammer 192",
-         "animation hacking 3000",
-         "geologist_find"
+         "animate=hacking 5000",
+         "animate=idle 2000",
+         "playsound=sound/hammering geologist_hammer 192",
+         "animate=hacking 3000",
+         "findresources"
       }
    },
 

=== modified file 'data/tribes/workers/barbarians/hunter/init.lua'
--- data/tribes/workers/barbarians/hunter/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/barbarians/hunter/init.lua	2018-07-08 18:06:37 +0000
@@ -27,11 +27,11 @@
 
    programs = {
       hunt = {
-         "findobject type:bob radius:13 attrib:eatable",
-         "walk object",
-         "animation idle 1000",
-         "object remove",
-         "createware meat",
+         "findobject=type:bob radius:13 attrib:eatable",
+         "walk=object",
+         "animate=idle 1000",
+         "removeobject",
+         "createware=meat",
          "return"
       }
    },

=== modified file 'data/tribes/workers/barbarians/lumberjack/init.lua'
--- data/tribes/workers/barbarians/lumberjack/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/barbarians/lumberjack/init.lua	2018-07-08 18:06:37 +0000
@@ -31,16 +31,16 @@
    },
 
    programs = {
-      chop = {
-         "findobject attrib:tree radius:10",
-         "walk object",
-         "play_sound sound/woodcutting woodcutting 255",
-         "animation hacking 10000",
---         "play_sound sound/spoken timber 192",
-         "play_sound sound/woodcutting tree-falling 130",
-         "object fall",
-         "animation idle 2000",
-         "createware log",
+      harvest = {
+         "findobject=attrib:tree radius:10",
+         "walk=object",
+         "playsound=sound/woodcutting woodcutting 255",
+         "animate=hacking 10000",
+         -- "playsound=sound/spoken timber 192",
+         "playsound=sound/woodcutting tree-falling 130",
+         "callobject=fall",
+         "animate=idle 2000",
+         "createware=log",
          "return"
       }
    },

=== modified file 'data/tribes/workers/barbarians/ranger/init.lua'
--- data/tribes/workers/barbarians/ranger/init.lua	2018-01-12 19:56:39 +0000
+++ data/tribes/workers/barbarians/ranger/init.lua	2018-07-08 18:06:37 +0000
@@ -41,12 +41,12 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:5 avoid:field saplingsearches:5",
-         "walk coords",
-         "animation dig 2000",
-         "animation planting 1000",
-         "plant attrib:tree_sapling",
-         "animation water 2000",
+         "findspace=size:any radius:5 avoid:field saplingsearches:5",
+         "walk=coords",
+         "animate=dig 2000",
+         "animate=planting 1000",
+         "plant=attrib:tree_sapling",
+         "animate=water 2000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/barbarians/scout/init.lua'
--- data/tribes/workers/barbarians/scout/init.lua	2017-12-16 14:48:15 +0000
+++ data/tribes/workers/barbarians/scout/init.lua	2018-07-08 18:06:37 +0000
@@ -25,7 +25,7 @@
 
    programs = {
       scout = {
-         "scout 15 75000", -- radius 15, 75 seconds until return
+         "scout=15 75000", -- radius 15, 75 seconds until return
          "return"
       }
    },

=== modified file 'data/tribes/workers/barbarians/shipwright/init.lua'
--- data/tribes/workers/barbarians/shipwright/init.lua	2017-11-12 11:04:00 +0000
+++ data/tribes/workers/barbarians/shipwright/init.lua	2018-07-08 18:06:37 +0000
@@ -35,12 +35,12 @@
 
    programs = {
       buildship = {
-         "walk object-or-coords",
-         "plant attrib:shipconstruction unless object",
-         "play_sound sound/sawmill sawmill 230",
-         "animation work 500",
+         "walk=object-or-coords",
+         "plant=attrib:shipconstruction unless object",
+         "playsound=sound/sawmill sawmill 230",
+         "animate=work 500",
          "construct",
-         "animation work 5000",
+         "animate=work 5000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/barbarians/stonemason/init.lua'
--- data/tribes/workers/barbarians/stonemason/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/barbarians/stonemason/init.lua	2018-07-08 18:06:37 +0000
@@ -32,12 +32,12 @@
 
    programs = {
       cut_granite = {
-         "findobject attrib:rocks radius:6",
-         "walk object",
-         "play_sound sound/stonecutting stonecutter 192",
-         "animation hacking 10000",
-         "object shrink",
-         "createware granite",
+         "findobject=attrib:rocks radius:6",
+         "walk=object",
+         "playsound=sound/stonecutting stonecutter 192",
+         "animate=hacking 10000",
+         "callobject=shrink",
+         "createware=granite",
          "return"
       }
    },

=== modified file 'data/tribes/workers/empire/farmer/init.lua'
--- data/tribes/workers/empire/farmer/init.lua	2017-11-12 11:04:00 +0000
+++ data/tribes/workers/empire/farmer/init.lua	2018-07-08 18:06:37 +0000
@@ -41,21 +41,21 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:2 space",
-         "walk coords",
-         "animation planting 4000",
-         "plant attrib:seed_wheat",
-         "animation planting 4000",
+         "findspace=size:any radius:2 space",
+         "walk=coords",
+         "animate=planting 4000",
+         "plant=attrib:seed_wheat",
+         "animate=planting 4000",
          "return",
       },
       harvest = {
-         "findobject attrib:ripe_wheat radius:2",
-         "walk object",
-         "play_sound sound/farm scythe 220",
-         "animation harvesting 10000",
-         "object harvest",
-         "animation gathering 4000",
-         "createware wheat",
+         "findobject=attrib:ripe_wheat radius:2",
+         "walk=object",
+         "playsound=sound/farm scythe 220",
+         "animate=harvesting 10000",
+         "callobject=harvest",
+         "animate=gathering 4000",
+         "createware=wheat",
          "return"
       }
    },

=== modified file 'data/tribes/workers/empire/fisher/init.lua'
--- data/tribes/workers/empire/fisher/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/empire/fisher/init.lua	2018-07-08 18:06:37 +0000
@@ -31,13 +31,13 @@
 
    programs = {
       fish = {
-         "findspace size:any radius:7 resource:fish",
-         "walk coords",
-         "play_sound sound/fisher fisher_throw_net 192",
-         "mine fish 1",
-         "animation fishing 3000", -- Play a fishing animation
-         "play_sound sound/fisher fisher_pull_net 192",
-         "createware fish",
+         "findspace=size:any radius:7 resource:fish",
+         "walk=coords",
+         "playsound=sound/fisher fisher_throw_net 192",
+         "mine=fish 1",
+         "animate=fishing 3000", -- Play a fishing animation
+         "playsound=sound/fisher fisher_pull_net 192",
+         "createware=fish",
          "return"
       }
    },

=== modified file 'data/tribes/workers/empire/forester/init.lua'
--- data/tribes/workers/empire/forester/init.lua	2018-01-12 19:56:39 +0000
+++ data/tribes/workers/empire/forester/init.lua	2018-07-08 18:06:37 +0000
@@ -41,12 +41,12 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:5 avoid:field saplingsearches:8",
-         "walk coords",
-         "animation dig 2000",
-         "animation planting 1000",
-         "plant attrib:tree_sapling",
-         "animation water 2000",
+         "findspace=size:any radius:5 avoid:field saplingsearches:8",
+         "walk=coords",
+         "animate=dig 2000",
+         "animate=planting 1000",
+         "plant=attrib:tree_sapling",
+         "animate=water 2000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/empire/geologist/init.lua'
--- data/tribes/workers/empire/geologist/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/empire/geologist/init.lua	2018-07-08 18:06:37 +0000
@@ -35,15 +35,15 @@
       -- The specialized geologist command walks the geologist around his starting
       -- location, executing the search program from time to time.
       expedition = {
-         "geologist 15 5 search"
+         "repeatsearch=15 5 search"
       },
       -- Search program, executed when we have found a place to hack on
       search = {
-         "animation hacking 5000",
-         "animation idle 2000",
-         "play_sound sound/hammering geologist_hammer 192",
-         "animation hacking 3000",
-         "geologist_find"
+         "animate=hacking 5000",
+         "animate=idle 2000",
+         "playsound=sound/hammering geologist_hammer 192",
+         "animate=hacking 3000",
+         "findresources"
       }
    },
 

=== modified file 'data/tribes/workers/empire/hunter/init.lua'
--- data/tribes/workers/empire/hunter/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/empire/hunter/init.lua	2018-07-08 18:06:37 +0000
@@ -26,11 +26,11 @@
    },
    programs = {
       hunt = {
-         "findobject type:bob radius:13 attrib:eatable",
-         "walk object",
-         "animation idle 1000",
-         "object remove",
-         "createware meat",
+         "findobject=type:bob radius:13 attrib:eatable",
+         "walk=object",
+         "animate=idle 1000",
+         "removeobject",
+         "createware=meat",
          "return"
       }
    },

=== modified file 'data/tribes/workers/empire/lumberjack/init.lua'
--- data/tribes/workers/empire/lumberjack/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/empire/lumberjack/init.lua	2018-07-08 18:06:37 +0000
@@ -31,16 +31,16 @@
    },
 
    programs = {
-      chop = {
-         "findobject attrib:tree radius:10",
-         "walk object",
-         "play_sound sound/woodcutting fast_woodcutting 250",
-         "animation hacking 10000",
---         "play_sound sound/spoken timber 156",
-         "play_sound sound/woodcutting tree-falling 130",
-         "object fall",
-         "animation idle 2000",
-         "createware log",
+      harvest = {
+         "findobject=attrib:tree radius:10",
+         "walk=object",
+         "playsound=sound/woodcutting fast_woodcutting 250",
+         "animate=hacking 10000",
+         --  "playsound=sound/spoken timber 156",
+         "playsound=sound/woodcutting tree-falling 130",
+         "callobject=fall",
+         "animate=idle 2000",
+         "createware=log",
          "return"
       }
    },

=== modified file 'data/tribes/workers/empire/scout/init.lua'
--- data/tribes/workers/empire/scout/init.lua	2017-12-16 14:48:15 +0000
+++ data/tribes/workers/empire/scout/init.lua	2018-07-08 18:06:37 +0000
@@ -25,7 +25,7 @@
 
    programs = {
       scout = {
-         "scout 15 75000", -- radius 15, 75 seconds until return
+         "scout=15 75000", -- radius 15, 75 seconds until return
          "return"
       }
    },

=== modified file 'data/tribes/workers/empire/shipwright/init.lua'
--- data/tribes/workers/empire/shipwright/init.lua	2017-11-12 11:04:00 +0000
+++ data/tribes/workers/empire/shipwright/init.lua	2018-07-08 18:06:37 +0000
@@ -35,12 +35,12 @@
 
    programs = {
       buildship = {
-         "walk object-or-coords",
-         "plant attrib:shipconstruction unless object",
-         "play_sound sound/sawmill sawmill 230",
-         "animation work 500",
+         "walk=object-or-coords",
+         "plant=attrib:shipconstruction unless object",
+         "playsound=sound/sawmill sawmill 230",
+         "animate=work 500",
          "construct",
-         "animation work 5000",
+         "animate=work 5000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/empire/stonemason/init.lua'
--- data/tribes/workers/empire/stonemason/init.lua	2017-02-12 09:10:57 +0000
+++ data/tribes/workers/empire/stonemason/init.lua	2018-07-08 18:06:37 +0000
@@ -32,21 +32,21 @@
 
    programs = {
       cut_granite = {
-         "findobject attrib:rocks radius:6",
-         "walk object",
-         "play_sound sound/stonecutting stonecutter 220",
-         "animation hacking 10000",
-         "object shrink",
-         "createware granite",
+         "findobject=attrib:rocks radius:6",
+         "walk=object",
+         "playsound=sound/stonecutting stonecutter 220",
+         "animate=hacking 10000",
+         "callobject=shrink",
+         "createware=granite",
          "return"
       },
       cut_marble = {
-         "findobject attrib:rocks radius:6",
-         "walk object",
-         "play_sound sound/stonecutting stonecutter 220",
-         "animation hacking 10000",
-         "object shrink",
-         "createware marble",
+         "findobject= attrib:rocks radius:6",
+         "walk=object",
+         "playsound=sound/stonecutting stonecutter 220",
+         "animate=hacking 10000",
+         "callobject=shrink",
+         "createware=marble",
          "return"
       }
    },

=== modified file 'data/tribes/workers/empire/vinefarmer/init.lua'
--- data/tribes/workers/empire/vinefarmer/init.lua	2017-11-12 11:04:00 +0000
+++ data/tribes/workers/empire/vinefarmer/init.lua	2018-07-08 18:06:37 +0000
@@ -41,21 +41,21 @@
    },
 
    programs = {
-      plantvine = {
-         "findspace size:any radius:1",
-         "walk coords",
-         "animation dig 2000",
-         "plant attrib:seed_grapes",
-         "animation planting 3000",
+      plant = {
+         "findspace=size:any radius:1",
+         "walk=coords",
+         "animate=dig 2000",
+         "plant=attrib:seed_grapes",
+         "animate=planting 3000",
          "return"
       },
-      harvestvine = {
-         "findobject attrib:ripe_grapes radius:1",
-         "walk object",
-         "animation gathering 10000",
-         "object harvest",
-         "animation gathering 2000",
-         "createware grape",
+      harvest = {
+         "findobject=attrib:ripe_grapes radius:1",
+         "walk=object",
+         "animate=gathering 10000",
+         "callobject=harvest",
+         "animate=gathering 2000",
+         "createware=grape",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/beekeeper/init.lua'
--- data/tribes/workers/frisians/beekeeper/init.lua	2018-02-17 15:41:29 +0000
+++ data/tribes/workers/frisians/beekeeper/init.lua	2018-07-08 18:06:37 +0000
@@ -29,10 +29,10 @@
 
    programs = {
       bees = {
-         "findobject attrib:flowering radius:5",
-         "walk object",
-         "animation beeswarm 10000",
-         "createware honey",
+         "findobject=attrib:flowering radius:5",
+         "walk=object",
+         "animate=beeswarm 10000",
+         "createware=honey",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/berry_farmer/init.lua'
--- data/tribes/workers/frisians/berry_farmer/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/berry_farmer/init.lua	2018-07-08 18:06:37 +0000
@@ -39,12 +39,12 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:4",
-         "walk coords",
-         "animation dig 2000",
-         "animation planting 1000",
-         "plant attrib:seed_berrybush",
-         "animation water 2000",
+         "findspace=size:any radius:4",
+         "walk=coords",
+         "animate=dig 2000",
+         "animate=planting 1000",
+         "plant=attrib:seed_berrybush",
+         "animate=water 2000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/claydigger/init.lua'
--- data/tribes/workers/frisians/claydigger/init.lua	2018-05-23 05:05:34 +0000
+++ data/tribes/workers/frisians/claydigger/init.lua	2018-07-08 18:06:37 +0000
@@ -30,10 +30,10 @@
 
    programs = {
       dig = {
-         "findspace size:any radius:4",
-         "walk coords",
-         "animation dig 8000",
-         "plant attrib:pond_dry",
+         "findspace=size:any radius:4",
+         "walk=coords",
+         "animate=dig 8000",
+         "plant=attrib:pond_dry",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/farmer/init.lua'
--- data/tribes/workers/frisians/farmer/init.lua	2018-04-27 22:30:41 +0000
+++ data/tribes/workers/frisians/farmer/init.lua	2018-07-08 18:06:37 +0000
@@ -40,20 +40,20 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:2 space",
-         "walk coords",
-         "animation planting 8000",
-         "plant attrib:seed_barley",
-         "animation planting 8000",
+         "findspace=size:any radius:2 space",
+         "walk=coords",
+         "animate=planting 8000",
+         "plant=attrib:seed_barley",
+         "animate=planting 40800000",
          "return"
       },
       harvest = {
-         "findobject attrib:ripe_barley radius:2",
-         "walk object",
-         "animation harvesting 10000",
-         "object harvest",
-         "animation gathering 8000",
-         "createware barley",
+         "findobject=attrib:ripe_barley radius:2",
+         "walk=object",
+         "animate=harvesting 10000",
+         "callobject=harvest",
+         "animate=gathering 8000",
+         "createware=barley",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/fisher/init.lua'
--- data/tribes/workers/frisians/fisher/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/fisher/init.lua	2018-07-08 18:06:37 +0000
@@ -35,26 +35,26 @@
 
    programs = {
       fish = {
-         "findspace size:any radius:8 resource:fish",
-         "walk coords",
-         "mine fish 1",
-         "animation fishing 3000",
-         "createware fish",
+         "findspace=size:any radius:8 resource:fish",
+         "walk=coords",
+         "mine=fish 1",
+         "animate=fishing 3000",
+         "createware=fish",
          "return"
       },
       fish_in_pond = {
-         "findobject attrib:pond_mature radius:8",
-         "walk object",
-         "animation fishing 3000",
-         "object fall_dry",
-         "createware fish",
+         "findobject=attrib:pond_mature radius:8",
+         "walk=object",
+         "animate=fishing 3000",
+         "callobject=fall_dry",
+         "createware=fish",
          "return"
       },
       breed_in_pond = {
-         "findobject attrib:pond_dry radius:8",
-         "walk object",
-         "animation release 2000",
-         "object with_fish",
+         "findobject=attrib:pond_dry radius:8",
+         "walk=object",
+         "animate=release 2000",
+         "callobject=with_fish",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/forester/init.lua'
--- data/tribes/workers/frisians/forester/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/forester/init.lua	2018-07-08 18:06:37 +0000
@@ -39,12 +39,12 @@
 
    programs = {
       plant = {
-         "findspace size:any radius:5 avoid:field saplingsearches:7",
-         "walk coords",
-         "animation dig 2000",
-         "animation planting 1000",
-         "plant attrib:tree_sapling",
-         "animation water 2000",
+         "findspace=size:any radius:5 avoid:field saplingsearches:7",
+         "walk=coords",
+         "animate=dig 2000",
+         "animate=planting 1000",
+         "plant=attrib:tree_sapling",
+         "animate=water 2000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/fruit_collector/init.lua'
--- data/tribes/workers/frisians/fruit_collector/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/fruit_collector/init.lua	2018-07-08 18:06:37 +0000
@@ -31,12 +31,12 @@
 
    programs = {
       harvest = {
-         "findobject attrib:ripe_bush radius:6",
-         "walk object",
-         "animation gather 8000",
-         "object harvest",
-         "animation idle 1000",
-         "createware fruit",
+         "findobject=attrib:ripe_bush radius:6",
+         "walk=object",
+         "animate=gather 8000",
+         "callobject=harvest",
+         "animate=idle 1000",
+         "createware=fruit",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/geologist/init.lua'
--- data/tribes/workers/frisians/geologist/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/geologist/init.lua	2018-07-08 18:06:37 +0000
@@ -30,15 +30,15 @@
 
    programs = {
       expedition = {
-         "geologist 15 5 search"
+         "repeatsearch=15 5 search"
       },
       search = {
-         "animation hacking 3000",
-         "animation idle 1000",
-         "animation hacking 2000",
-         "animation idle 1000",
-         "animation hacking 3000",
-         "geologist_find"
+         "animate=hacking 3000",
+         "animate=idle 1000",
+         "animate=hacking 2000",
+         "animate=idle 1000",
+         "animate=hacking 3000",
+         "findresources"
       }
    },
 

=== modified file 'data/tribes/workers/frisians/hunter/init.lua'
--- data/tribes/workers/frisians/hunter/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/hunter/init.lua	2018-07-08 18:06:37 +0000
@@ -26,11 +26,11 @@
 
    programs = {
       hunt = {
-         "findobject type:bob radius:14 attrib:eatable",
-         "walk object",
-         "animation idle 1000",
-         "object remove",
-         "createware meat",
+         "findobject=type:bob radius:14 attrib:eatable",
+         "walk=object",
+         "animate=idle 1000",
+         "callobject=remove",
+         "createware=meat",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/reed_farmer/init.lua'
--- data/tribes/workers/frisians/reed_farmer/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/reed_farmer/init.lua	2018-07-08 18:06:37 +0000
@@ -40,20 +40,20 @@
 
    programs = {
       plantreed = {
-         "findspace size:any radius:1",
-         "walk coords",
-         "animation dig 2000",
-         "animation planting 1000",
-         "plant attrib:seed_reed",
+         "findspace=size:any radius:1",
+         "walk=coords",
+         "animate=dig 2000",
+         "animate=planting 1000",
+         "plant=attrib:seed_reed",
          "return"
       },
       harvestreed = {
-         "findobject attrib:ripe_reed radius:1",
-         "walk object",
-         "animation harvesting 12000",
-         "object harvest",
-         "animation harvesting 1",
-         "createware thatch_reed",
+         "findobject=attrib:ripe_reed radius:1",
+         "walk=object",
+         "animate=harvesting 12000",
+         "callobject=harvest",
+         "animate=harvesting 1",
+         "createware=thatch_reed",
          "return"
       },
    },

=== modified file 'data/tribes/workers/frisians/scout/init.lua'
--- data/tribes/workers/frisians/scout/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/scout/init.lua	2018-07-08 18:06:37 +0000
@@ -24,7 +24,7 @@
 
    programs = {
       scout = {
-         "scout 15 75000", -- radius 15, 75 seconds until return
+         "scout=15 75000", -- radius 15, 75 seconds until return
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/shipwright/init.lua'
--- data/tribes/workers/frisians/shipwright/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/shipwright/init.lua	2018-07-08 18:06:37 +0000
@@ -34,11 +34,11 @@
 
    programs = {
       buildship = {
-         "walk object-or-coords",
-         "plant attrib:shipconstruction unless object",
-         "animation work 500",
+         "walk=object-or-coords",
+         "plant=attrib:shipconstruction unless object",
+         "animate=work 500",
          "construct",
-         "animation work 5000",
+         "animate=work 5000",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/stonemason/init.lua'
--- data/tribes/workers/frisians/stonemason/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/stonemason/init.lua	2018-07-08 18:06:37 +0000
@@ -30,11 +30,11 @@
 
    programs = {
       cut_granite = {
-         "findobject attrib:rocks radius:6",
-         "walk object",
-         "animation hacking 10000",
-         "object shrink",
-         "createware granite",
+         "findobject=attrib:rocks radius:6",
+         "walk=object",
+         "animate=hacking 10000",
+         "callobject=shrink",
+         "createware=granite",
          "return"
       }
    },

=== modified file 'data/tribes/workers/frisians/woodcutter/init.lua'
--- data/tribes/workers/frisians/woodcutter/init.lua	2018-02-06 11:17:48 +0000
+++ data/tribes/workers/frisians/woodcutter/init.lua	2018-07-08 18:06:37 +0000
@@ -31,12 +31,12 @@
 
    programs = {
       chop = {
-         "findobject attrib:tree radius:10",
-         "walk object",
-         "animation hacking 10000",
-         "object fall",
-         "animation idle 2000",
-         "createware log",
+         "findobject=attrib:tree radius:10",
+         "walk=object",
+         "animate=hacking 10000",
+         "callobject=fall",
+         "animate=idle 2000",
+         "createware=log",
          "return"
       }
    },

=== modified file 'doc/sphinx/source/productionsite_program.rst'
--- doc/sphinx/source/productionsite_program.rst	2017-08-28 06:34:49 +0000
+++ doc/sphinx/source/productionsite_program.rst	2018-07-08 18:06:37 +0000
@@ -66,7 +66,7 @@
          "return=skipped unless economy needs snack",
          "sleep=5000",
          "consume=barbarians_bread fish,meat beer",
-         "play_sound=sound/barbarians/taverns inn 100",
+         "playsound=sound/barbarians/taverns inn 100",
          "animate=working 22000",
          "sleep=10000",
          "produce=snack"
@@ -82,15 +82,16 @@
 ^^^^^^^^^^^^^
 - `return`_
 - `call`_
-- `worker`_
+- `callworker`_
 - `sleep`_
 - `animate`_
 - `consume`_
 - `produce`_
 - `mine`_
-- `check_soldier`_
+- `checksoldier`_
+- `checkmap`_
 - `train`_
-- `play_sound`_
+- `playsound`_
 
 
 return
@@ -168,8 +169,8 @@
 ``failure_handling_directive``
     If omitted, the value ``Ignore`` is used for ``failure_handling_method``.
 
-worker
-------
+callworker
+----------
 Calls a program of the productionsite's main worker.
 
 Parameter syntax::
@@ -271,17 +272,25 @@
 is to guarantee that you can eventually extend a mine, even though it was
 exhausted for a while already.
 
-check_soldier
--------------
+checksoldier
+------------
 Returns failure unless there are a specified amount of soldiers with specified level of specified properties. This command type is subject to change.
 
+checkmap
+--------
+Checks the map for properties. At the moment, only 'seafaring' is available as parameter.
+
+Parameter syntax::
+
+  parameters ::= seafaring
+
 train
 -----
 Increases the level of a specified property of a soldier. No further documentation available.
 
-play_sound
-----------
-Plays a soundFX.
+playsound
+---------
+Plays a sound effect.
 
 Parameter syntax::
 

=== modified file 'src/graphic/animation.cc'
--- src/graphic/animation.cc	2018-04-07 16:59:00 +0000
+++ src/graphic/animation.cc	2018-07-08 18:06:37 +0000
@@ -100,7 +100,7 @@
 	std::vector<const Image*> pcmasks_;
 
 	// name of sound effect that will be played at frame 0.
-	// TODO(sirver): this should be done using play_sound in a program instead of
+	// TODO(sirver): this should be done using playsound in a program instead of
 	// binding it to the animation.
 	std::string sound_effect_;
 	bool play_once_;

=== modified file 'src/logic/map_objects/immovable.cc'
--- src/logic/map_objects/immovable.cc	2018-04-07 16:59:00 +0000
+++ src/logic/map_objects/immovable.cc	2018-07-08 18:06:37 +0000
@@ -170,10 +170,10 @@
 			action = new ActRemove(arguments.get(), *immovable);
 		} else if (parts[0] == "seed") {
 			action = new ActSeed(arguments.get(), *immovable);
-		} else if (parts[0] == "play_sound") {
+		} else if (parts[0] == "playsound") {
 			action = new ActPlaySound(arguments.get(), *immovable);
-		} else if (parts[0] == "construction") {
-			action = new ActConstruction(arguments.get(), *immovable);
+		} else if (parts[0] == "construct") {
+			action = new ActConstruct(arguments.get(), *immovable);
 		} else {
 			throw GameDataError("unknown command type \"%s\" in immovable \"%s\"", parts[0].c_str(),
 			                    immovable->name().c_str());
@@ -476,10 +476,10 @@
                                   const Vector2f& point_on_dst,
                                   const float scale,
                                   RenderTarget* dst) {
-	const ImmovableProgram::ActConstruction* constructionact = nullptr;
+	const ImmovableProgram::ActConstruct* constructionact = nullptr;
 	if (program_ptr_ < program_->size())
 		constructionact =
-		   dynamic_cast<const ImmovableProgram::ActConstruction*>(&(*program_)[program_ptr_]);
+		   dynamic_cast<const ImmovableProgram::ActConstruct*>(&(*program_)[program_ptr_]);
 
 	const uint32_t steptime = constructionact ? constructionact->buildtime() : 5000;
 
@@ -804,7 +804,7 @@
 		g_sound_handler.load_fx_if_needed(
 		   FileSystem::fs_dirname(name), FileSystem::fs_filename(name.c_str()), name);
 	} catch (const WException& e) {
-		throw GameDataError("play_sound: %s", e.what());
+		throw GameDataError("playsound: %s", e.what());
 	}
 }
 
@@ -1037,7 +1037,7 @@
 	immovable.program_step(game);
 }
 
-ImmovableProgram::ActConstruction::ActConstruction(char* parameters, ImmovableDescr& descr) {
+ImmovableProgram::ActConstruct::ActConstruct(char* parameters, ImmovableDescr& descr) {
 	try {
 		if (descr.owner_type() != MapObjectDescr::OwnerType::kTribe)
 			throw GameDataError("only usable for tribe immovable");
@@ -1058,23 +1058,23 @@
 		animid_ = descr.get_animation(animation_name);
 
 	} catch (const WException& e) {
-		throw GameDataError("construction: %s", e.what());
+		throw GameDataError("construct: %s", e.what());
 	}
 }
 
 constexpr uint8_t kCurrentPacketVersionConstructionData = 1;
 
-struct ActConstructionData : ImmovableActionData {
+struct ActConstructData : ImmovableActionData {
 	const char* name() const override {
-		return "construction";
+		return "construct";
 	}
 	void save(FileWrite& fw, Immovable& imm) override {
 		fw.unsigned_8(kCurrentPacketVersionConstructionData);
 		delivered.save(fw, imm.get_owner()->tribe());
 	}
 
-	static ActConstructionData* load(FileRead& fr, Immovable& imm) {
-		ActConstructionData* d = new ActConstructionData;
+	static ActConstructData* load(FileRead& fr, Immovable& imm) {
+		ActConstructData* d = new ActConstructData;
 
 		try {
 			uint8_t packet_version = fr.unsigned_8();
@@ -1082,12 +1082,12 @@
 				d->delivered.load(fr, imm.get_owner()->tribe());
 			} else {
 				throw UnhandledVersionError(
-				   "ActConstructionData", packet_version, kCurrentPacketVersionConstructionData);
+				   "ActConstructData", packet_version, kCurrentPacketVersionConstructionData);
 			}
 		} catch (const WException& e) {
 			delete d;
 			d = nullptr;
-			throw GameDataError("ActConstructionData: %s", e.what());
+			throw GameDataError("ActConstructData: %s", e.what());
 		}
 
 		return d;
@@ -1096,11 +1096,11 @@
 	Buildcost delivered;
 };
 
-void ImmovableProgram::ActConstruction::execute(Game& g, Immovable& imm) const {
-	ActConstructionData* d = imm.get_action_data<ActConstructionData>();
+void ImmovableProgram::ActConstruct::execute(Game& g, Immovable& imm) const {
+	ActConstructData* d = imm.get_action_data<ActConstructData>();
 	if (!d) {
 		// First execution
-		d = new ActConstructionData;
+		d = new ActConstructData;
 		imm.set_action_data(d);
 
 		imm.start_animation(g, animid_);
@@ -1147,7 +1147,7 @@
  * If the immovable is not currently in construction mode, return \c false.
  */
 bool Immovable::construct_remaining_buildcost(Game& /* game */, Buildcost* buildcost) {
-	ActConstructionData* d = get_action_data<ActConstructionData>();
+	ActConstructData* d = get_action_data<ActConstructData>();
 	if (!d)
 		return false;
 
@@ -1168,7 +1168,7 @@
  * If the immovable is not currently in construction mode, return \c false.
  */
 bool Immovable::construct_ware(Game& game, DescriptionIndex index) {
-	ActConstructionData* d = get_action_data<ActConstructionData>();
+	ActConstructData* d = get_action_data<ActConstructData>();
 	if (!d)
 		return false;
 
@@ -1188,8 +1188,8 @@
 	Buildcost remaining;
 	construct_remaining_buildcost(game, &remaining);
 
-	const ImmovableProgram::ActConstruction* action =
-	   dynamic_cast<const ImmovableProgram::ActConstruction*>(&(*program_)[program_ptr_]);
+	const ImmovableProgram::ActConstruct* action =
+	   dynamic_cast<const ImmovableProgram::ActConstruct*>(&(*program_)[program_ptr_]);
 	assert(action != nullptr);
 
 	if (remaining.empty()) {
@@ -1204,8 +1204,9 @@
 
 ImmovableActionData*
 ImmovableActionData::load(FileRead& fr, Immovable& imm, const std::string& name) {
-	if (name == "construction")
-		return ActConstructionData::load(fr, imm);
+	// TODO(GunChleoc): Use "construct" only after Build 20
+	if (name == "construction" || name == "construct")
+		return ActConstructData::load(fr, imm);
 	else {
 		log("ImmovableActionData::load: type %s not known", name.c_str());
 		return nullptr;

=== modified file 'src/logic/map_objects/immovable.h'
--- src/logic/map_objects/immovable.h	2018-04-07 16:59:00 +0000
+++ src/logic/map_objects/immovable.h	2018-07-08 18:06:37 +0000
@@ -176,7 +176,7 @@
 	const MapObjectDescr::OwnerType owner_type_;
 
 	/// Buildcost for externally constructible immovables (for ship construction)
-	/// \see ActConstruction
+	/// \see ActConstruct
 	Buildcost buildcost_;
 
 	std::string species_;
@@ -261,7 +261,7 @@
 
 /* GCC 4.0 has problems with friend declarations: It doesn't allow
  * substructures of friend classes private access but we rely on this behaviour
- * for ImmovableProgram::ActConstruction. As a dirty workaround, we make the
+ * for ImmovableProgram::ActConstruct. As a dirty workaround, we make the
  * following variables public for this versions but keep the protected for
  * other GCC versions.
  * See the related bug lp:688832.

=== modified file 'src/logic/map_objects/immovable_program.h'
--- src/logic/map_objects/immovable_program.h	2018-04-07 16:59:00 +0000
+++ src/logic/map_objects/immovable_program.h	2018-07-08 18:06:37 +0000
@@ -164,8 +164,8 @@
 	 *    decay-time:
 	 *       Time until construction decays one step if no progress has been made.
 	 */
-	struct ActConstruction : public Action {
-		ActConstruction(char* parameters, ImmovableDescr&);
+	struct ActConstruct : public Action {
+		ActConstruct(char* parameters, ImmovableDescr&);
 		void execute(Game&, Immovable&) const override;
 
 		Duration buildtime() const {

=== modified file 'src/logic/map_objects/tribes/production_program.cc'
--- src/logic/map_objects/tribes/production_program.cc	2018-04-27 06:11:05 +0000
+++ src/logic/map_objects/tribes/production_program.cc	2018-07-08 18:06:37 +0000
@@ -645,7 +645,7 @@
 	}
 }
 
-ProductionProgram::ActWorker::ActWorker(char* parameters,
+ProductionProgram::ActCallWorker::ActCallWorker(char* parameters,
                                         const std::string& production_program_name,
                                         ProductionSiteDescr* descr,
                                         const Tribes& tribes) {
@@ -680,12 +680,12 @@
 	}
 }
 
-void ProductionProgram::ActWorker::execute(Game& game, ProductionSite& ps) const {
+void ProductionProgram::ActCallWorker::execute(Game& game, ProductionSite& ps) const {
 	// Always main worker is doing stuff
 	ps.working_positions_[0].worker->update_task_buildingwork(game);
 }
 
-bool ProductionProgram::ActWorker::get_building_work(Game& game,
+bool ProductionProgram::ActCallWorker::get_building_work(Game& game,
                                                      ProductionSite& psite,
                                                      Worker& worker) const {
 	ProductionSite::State& state = psite.top_state();
@@ -699,7 +699,7 @@
 	}
 }
 
-void ProductionProgram::ActWorker::building_work_failed(Game& game,
+void ProductionProgram::ActCallWorker::building_work_failed(Game& game,
                                                         ProductionSite& psite,
                                                         Worker&) const {
 	psite.program_end(game, Failed);
@@ -1270,7 +1270,7 @@
 		if (*endp || level != value)
 			throw GameDataError("expected %s but found \"%s\"", "level", parameters);
 	} catch (const WException& e) {
-		throw GameDataError("check_soldier: %s", e.what());
+		throw GameDataError("checksoldier: %s", e.what());
 	}
 }
 
@@ -1426,7 +1426,7 @@
 
 		g_sound_handler.load_fx_if_needed(filepath, filename, name);
 	} catch (const WException& e) {
-		throw GameDataError("play_sound: %s", e.what());
+		throw GameDataError("playsound: %s", e.what());
 	}
 }
 
@@ -1638,25 +1638,25 @@
 		} else if (boost::iequals(parts[0], "recruit")) {
 			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
 			   new ActRecruit(arguments.get(), *building, egbase.tribes())));
-		} else if (boost::iequals(parts[0], "worker")) {
+		} else if (boost::iequals(parts[0], "callworker")) {
 			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
-			   new ActWorker(arguments.get(), name(), building, egbase.tribes())));
+			   new ActCallWorker(arguments.get(), name(), building, egbase.tribes())));
 		} else if (boost::iequals(parts[0], "mine")) {
 			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
 			   new ActMine(arguments.get(), egbase.world(), name(), building)));
-		} else if (boost::iequals(parts[0], "check_soldier")) {
+		} else if (boost::iequals(parts[0], "checksoldier")) {
 			actions_.push_back(
 			   std::unique_ptr<ProductionProgram::Action>(new ActCheckSoldier(arguments.get())));
 		} else if (boost::iequals(parts[0], "train")) {
 			actions_.push_back(
 			   std::unique_ptr<ProductionProgram::Action>(new ActTrain(arguments.get())));
-		} else if (boost::iequals(parts[0], "play_sound")) {
+		} else if (boost::iequals(parts[0], "playsound")) {
 			actions_.push_back(
 			   std::unique_ptr<ProductionProgram::Action>(new ActPlaySound(arguments.get())));
 		} else if (boost::iequals(parts[0], "construct")) {
 			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
 			   new ActConstruct(arguments.get(), name(), building)));
-		} else if (boost::iequals(parts[0], "check_map")) {
+		} else if (boost::iequals(parts[0], "checkmap")) {
 			actions_.push_back(
 			   std::unique_ptr<ProductionProgram::Action>(new ActCheckMap(arguments.get())));
 		} else {

=== modified file 'src/logic/map_objects/tribes/production_program.h'
--- src/logic/map_objects/tribes/production_program.h	2018-04-07 16:59:00 +0000
+++ src/logic/map_objects/tribes/production_program.h	2018-07-08 18:06:37 +0000
@@ -276,8 +276,8 @@
 	/// Parameter semantics:
 	///    program:
 	///       The name of a program defined in the productionsite's main worker.
-	struct ActWorker : public Action {
-		ActWorker(char* parameters,
+	struct ActCallWorker : public Action {
+		ActCallWorker(char* parameters,
 		          const std::string& production_program_name,
 		          ProductionSiteDescr*,
 		          const Tribes& tribes);

=== modified file 'src/logic/map_objects/tribes/productionsite.h'
--- src/logic/map_objects/tribes/productionsite.h	2018-04-07 16:59:00 +0000
+++ src/logic/map_objects/tribes/productionsite.h	2018-07-08 18:06:37 +0000
@@ -147,7 +147,7 @@
 	friend struct ProductionProgram::ActReturn;
 	friend struct ProductionProgram::ActReturn::WorkersNeedExperience;
 	friend struct ProductionProgram::ActCall;
-	friend struct ProductionProgram::ActWorker;
+	friend struct ProductionProgram::ActCallWorker;
 	friend struct ProductionProgram::ActSleep;
 	friend struct ProductionProgram::ActCheckMap;
 	friend struct ProductionProgram::ActAnimate;

=== modified file 'src/logic/map_objects/tribes/worker.cc'
--- src/logic/map_objects/tribes/worker.cc	2018-05-05 17:10:37 +0000
+++ src/logic/map_objects/tribes/worker.cc	2018-07-08 18:06:37 +0000
@@ -69,7 +69,7 @@
 namespace Widelands {
 
 /**
- * createware \<waretype\>
+ * createware=\<waretype\>
  *
  * The worker will create and carry an ware of the given type.
  *
@@ -100,7 +100,7 @@
 /**
  * Mine on the current coordinates for resources decrease, go home.
  *
- * Syntax in conffile: mine \<resource\> \<area\>
+ * Syntax in conffile: mine=\<resource\> \<area\>
  *
  * \param g
  * \param state
@@ -194,7 +194,7 @@
 /**
  * Breed on the current coordinates for resource increase, go home.
  *
- * Syntax in conffile: breed \<resource\> \<area\>
+ * Syntax in conffile: breed=\<resource\> \<area\>
  *
  * \param g
  * \param state
@@ -297,34 +297,9 @@
 	return true;
 }
 
-/**
- * setbobdescription \<bob name\> \<bob name\> ...
- *
- * Randomly select a bob name that can be used in subsequent commands
- * (e.g. create_bob).
- *
- * sparamv = possible bobs
- */
-bool Worker::run_setbobdescription(Game& game, State& state, const Action& action) {
-	int32_t const idx = game.logic_rand() % action.sparamv.size();
-
-	const std::string& bob = action.sparamv[idx];
-	state.ivar2 = game.world().get_critter(bob.c_str());
-
-	if (state.ivar2 < 0) {
-		molog("  WARNING: Unknown bob %s\n", bob.c_str());
-		send_signal(game, "fail");
-		pop_task(game);
-		return true;
-	}
-
-	++state.ivar1;
-	schedule_act(game, 10);
-	return true;
-}
-
-/**
- * findobject key:value key:value ...
+
+/**
+ * findobject=key:value key:value ...
  *
  * Find and select an object based on a number of predicates.
  * The object can be used in other commands like walk or object.
@@ -660,7 +635,7 @@
 }
 
 /**
- * walk \<where\>
+ * walk=\<where\>
  *
  * Walk to a previously selected destination. where can be one of:
  * object  walk to a previously found and selected object
@@ -727,14 +702,14 @@
 }
 
 /**
- * animation \<name\> \<duration\>
+ * animate=\<name\> \<duration\>
  *
  * Play the given animation for the given amount of time.
  *
  * iparam1 = anim id
  * iparam2 = duration
  */
-bool Worker::run_animation(Game& game, State& state, const Action& action) {
+bool Worker::run_animate(Game& game, State& state, const Action& action) {
 	set_animation(game, action.iparam1);
 
 	++state.ivar1;
@@ -754,13 +729,13 @@
 }
 
 /**
- * object \<command\>
+ * callobject=\<command\>
  *
  * Cause the currently selected object to execute the given program.
  *
  * sparam1 = object command name
  */
-bool Worker::run_object(Game& game, State& state, const Action& action) {
+bool Worker::run_callobject(Game& game, State& state, const Action& action) {
 	MapObject* const obj = state.objvar1.get(game);
 
 	if (!obj) {
@@ -912,11 +887,26 @@
 }
 
 /**
- * Plants a bob (critter usually, maybe also worker later on). The immovable
- * type must have been selected by a previous command (i.e. setbobdescription).
+ * createbob=\<bob name\> \<bob name\> ...
+ *
+ * Plants a bob (critter usually, maybe also worker later on), randomly celected from one of the given types.
+ *
+ * sparamv = possible bobs
  */
-bool Worker::run_create_bob(Game& game, State& state, const Action&) {
-	game.create_critter(get_position(), state.ivar2);
+bool Worker::run_createbob(Game& game, State& state, const Action& action) {
+	int32_t const idx = game.logic_rand() % action.sparamv.size();
+
+	const std::string& bob = action.sparamv[idx];
+	const DescriptionIndex critter = game.world().get_critter(bob.c_str());
+
+	if (critter == INVALID_INDEX) {
+		molog("  WARNING: Unknown bob %s\n", bob.c_str());
+		send_signal(game, "fail");
+		pop_task(game);
+		return true;
+	}
+
+	game.create_critter(get_position(), critter);
 	++state.ivar1;
 	schedule_act(game, 10);
 	return true;
@@ -937,7 +927,7 @@
 }
 
 /**
- * geologist \<repeat #\> \<radius\> \<subcommand\>
+ * geologist=\<repeat #\> \<radius\> \<subcommand\>
  *
  * Walk around the starting point randomly within a certain radius, and
  * execute the subcommand for some of the fields.
@@ -946,7 +936,7 @@
  * iparam2 = radius
  * sparam1 = subcommand
  */
-bool Worker::run_geologist(Game& game, State& state, const Action& action) {
+bool Worker::run_repeatsearch(Game& game, State& state, const Action& action) {
 	molog("  Start Geologist (%i attempts, %i radius -> %s)\n", action.iparam1, action.iparam2,
 	      action.sparam1.c_str());
 
@@ -959,7 +949,7 @@
  * Check resources at the current position, and plant a marker object when
  * possible.
  */
-bool Worker::run_geologist_find(Game& game, State& state, const Action&) {
+bool Worker::run_findresources(Game& game, State& state, const Action&) {
 	const FCoords position = game.map().get_fcoords(get_position());
 	BaseImmovable const* const imm = position.field->get_immovable();
 	const World& world = game.world();
@@ -1015,7 +1005,7 @@
  * Demand from the g_sound_handler to play a certain sound effect.
  * Whether the effect actually gets played is decided only by the sound server.
  */
-bool Worker::run_play_sound(Game& game, State& state, const Action& action) {
+bool Worker::run_playsound(Game& game, State& state, const Action& action) {
 	Notifications::publish(NoteSound(action.sparam1, get_position(), action.iparam1));
 
 	++state.ivar1;
@@ -1885,7 +1875,7 @@
 /**
  * Follow the steps of a configuration-defined program.
  * ivar1 is the next action to be performed.
- * ivar2 is used to store description indices selected by plant/setbobdescription
+ * ivar2 is used to store description indices selected by plant
  * objvar1 is used to store objects found by findobject
  * coords is used to store target coordinates found by findspace
  */
@@ -2626,7 +2616,7 @@
    "scout", static_cast<Bob::Ptr>(&Worker::scout_update), nullptr, nullptr, true};
 
 /**
- * scout \<radius\> \<time\>
+ * scout=\<radius\> \<time\>
  *
  * Find a spot that is in the fog of war and go there to see what's up.
  *

=== modified file 'src/logic/map_objects/tribes/worker.h'
--- src/logic/map_objects/tribes/worker.h	2018-04-07 16:59:00 +0000
+++ src/logic/map_objects/tribes/worker.h	2018-07-08 18:06:37 +0000
@@ -240,20 +240,19 @@
 	bool run_mine(Game&, State&, const Action&);
 	bool run_breed(Game&, State&, const Action&);
 	bool run_createware(Game&, State&, const Action&);
-	bool run_setbobdescription(Game&, State&, const Action&);
 	bool run_findobject(Game&, State&, const Action&);
 	bool run_findspace(Game&, State&, const Action&);
 	bool run_walk(Game&, State&, const Action&);
-	bool run_animation(Game&, State&, const Action&);
+	bool run_animate(Game&, State&, const Action&);
 	bool run_return(Game&, State&, const Action&);
-	bool run_object(Game&, State&, const Action&);
+	bool run_callobject(Game&, State&, const Action&);
 	bool run_plant(Game&, State&, const Action&);
-	bool run_create_bob(Game&, State&, const Action&);
+	bool run_createbob(Game&, State&, const Action&);
 	bool run_removeobject(Game&, State&, const Action&);
-	bool run_geologist(Game&, State&, const Action&);
-	bool run_geologist_find(Game&, State&, const Action&);
+	bool run_repeatsearch(Game&, State&, const Action&);
+	bool run_findresources(Game&, State&, const Action&);
 	bool run_scout(Game&, State&, const Action&);
-	bool run_play_sound(Game&, State&, const Action&);
+	bool run_playsound(Game&, State&, const Action&);
 	bool run_construct(Game&, State&, const Action&);
 
 	// Forester considers multiple spaces in findspace, unlike others.

=== modified file 'src/logic/map_objects/tribes/worker_program.cc'
--- src/logic/map_objects/tribes/worker_program.cc	2018-04-27 06:11:05 +0000
+++ src/logic/map_objects/tribes/worker_program.cc	2018-07-08 18:06:37 +0000
@@ -47,12 +47,12 @@
          "program_name3",
       }
       program_name2 = {
-         "command1 parameter1:value1 parameter2:value2",
-         "command2 parameter1",
+         "command1=parameter1:value1 parameter2:value2",
+         "command2=parameter1",
       },
       program_name3 = {
          "command3",
-         "command4 parameter1 parameter2 parameter3",
+         "command4=parameter1 parameter2 parameter3",
       }
    },
 
@@ -61,20 +61,19 @@
 - `createware`_
 - `mine`_
 - `breed`_
-- `setbobdescription`_
 - `findobject`_
 - `findspace`_
 - `walk`_
-- `animation`_
+- `animate`_
 - `return`_
-- `object`_
+- `callobject`_
 - `plant`_
-- `create_bob`_
-- `object remove`_
-- `geologist`_
-- `geologist_find`_
+- `createbob`_
+- `removeobject`_
+- `repeatsearch`_
+- `findresources`_
 - `scout`_
-- `play_sound`_
+- `playsound`_
 - `construct`_
 */
 
@@ -82,20 +81,19 @@
    {"mine", &WorkerProgram::parse_mine},
    {"breed", &WorkerProgram::parse_breed},
    {"createware", &WorkerProgram::parse_createware},
-   {"setbobdescription", &WorkerProgram::parse_setbobdescription},
    {"findobject", &WorkerProgram::parse_findobject},
    {"findspace", &WorkerProgram::parse_findspace},
    {"walk", &WorkerProgram::parse_walk},
-   {"animation", &WorkerProgram::parse_animation},
+   {"animate", &WorkerProgram::parse_animate},
    {"return", &WorkerProgram::parse_return},
-   {"object", &WorkerProgram::parse_object},
+   {"callobject", &WorkerProgram::parse_callobject},
    {"plant", &WorkerProgram::parse_plant},
-   {"create_bob", &WorkerProgram::parse_create_bob},
+   {"createbob", &WorkerProgram::parse_createbob},
    {"removeobject", &WorkerProgram::parse_removeobject},
-   {"geologist", &WorkerProgram::parse_geologist},
-   {"geologist_find", &WorkerProgram::parse_geologist_find},
+   {"repeatsearch", &WorkerProgram::parse_repeatsearch},
+   {"findresources", &WorkerProgram::parse_findresources},
    {"scout", &WorkerProgram::parse_scout},
-   {"play_sound", &WorkerProgram::parse_play_sound},
+   {"playsound", &WorkerProgram::parse_playsound},
    {"construct", &WorkerProgram::parse_construct},
 
    {nullptr, nullptr}};
@@ -111,7 +109,7 @@
 			break;
 		}
 		try {
-			const std::vector<std::string> cmd(split_string(string, " \t\r\n"));
+			std::vector<std::string> cmd(split_string(string, "="));
 			if (cmd.empty()) {
 				continue;
 			}
@@ -130,6 +128,15 @@
 				throw wexception("unknown command type \"%s\"", cmd[0].c_str());
 			}
 
+			// TODO(GunChleoc): Quick and dirty solution, don't do it like that when we unify the program parsers
+			if (cmd.size() == 2) {
+				const std::vector<std::string> parameters(split_string(cmd[1], " \t\n"));
+				cmd.pop_back();
+				for (const std::string& parameter: parameters) {
+					cmd.push_back(parameter);
+				}
+			}
+
 			(this->*parsemap_[mapidx].function)(&act, cmd);
 
 			actions_.push_back(act);
@@ -143,20 +150,20 @@
 /* RST
 createware
 ^^^^^^^^^^
-.. function:: createware \<ware_name\>
+.. function:: createware=\<ware_name\>
 
    :arg string ware_name: The ware type to create, e.g. ``wheat``.
 
    The worker will create and carry a ware of the given type. Example::
 
       harvest = {
-         "findobject attrib:ripe_wheat radius:2",
-         "walk object",
-         "play_sound sound/farm scythe 220",
-         "animation harvesting 10000",
-         "object harvest",
-         "animation gathering 4000",
-         "createware wheat", -- Create 1 wheat and start carrying it
+         "findobject=attrib:ripe_wheat radius:2",
+         "walk=object",
+         "playsound=sound/farm scythe 220",
+         "animate=harvesting 10000",
+         "callobject=harvest",
+         "animate=gathering 4000",
+         "createware=wheat", -- Create 1 wheat and start carrying it
          "return"
       },
 */
@@ -165,7 +172,7 @@
  */
 void WorkerProgram::parse_createware(Worker::Action* act, const std::vector<std::string>& cmd) {
 	if (cmd.size() != 2)
-		throw wexception("Usage: createware <ware type>");
+		throw wexception("Usage: createware=<ware type>");
 
 	act->function = &Worker::run_createware;
 	act->iparam1 = tribes_.safe_ware_index(cmd[1]);
@@ -174,7 +181,7 @@
 /* RST
 mine
 ^^^^
-.. function:: mine \<resource_name\> \<area\>
+.. function:: mine=\<resource_name\> \<area\>
 
    :arg string resource_name: The map resource to mine, e.g. ``fish``.
 
@@ -184,13 +191,13 @@
    Example::
 
       fish = {
-         "findspace size:any radius:7 resource:fish",
-         "walk coords",
-         "play_sound sound/fisher fisher_throw_net 192",
-         "mine fish 1", -- Remove a fish in an area of 1
-         "animation fishing 3000",
-         "play_sound sound/fisher fisher_pull_net 192",
-         "createware fish",
+         "findspace=size:any radius:7 resource:fish",
+         "walk=coords",
+         "playsound=sound/fisher fisher_throw_net 192",
+         "mine fish=1", -- Remove a fish in an area of 1
+         "animate=fishing 3000",
+         "playsound=sound/fisher fisher_pull_net 192",
+         "createware=fish",
          "return"
       },
 */
@@ -200,7 +207,7 @@
  */
 void WorkerProgram::parse_mine(Worker::Action* act, const std::vector<std::string>& cmd) {
 	if (cmd.size() != 3)
-		throw wexception("Usage: mine <ware type> <area>");
+		throw wexception("Usage: mine=<ware type> <area>");
 
 	act->function = &Worker::run_mine;
 	act->sparam1 = cmd[1];
@@ -214,7 +221,7 @@
 /* RST
 breed
 ^^^^^
-.. function:: breed \<resource_name\> \<area\>
+.. function:: breed=\<resource_name\> \<area\>
 
    :arg string resource_name: The map resource to breed, e.g. ``fish``.
 
@@ -224,10 +231,10 @@
    resources increase. Example::
 
       breed = {
-         "findspace size:any radius:7 breed resource:fish",
-         "walk coords",
-         "animation freeing 3000",
-         "breed fish 1", -- Add a fish in an area of 1
+         "findspace=size:any radius:7 breed resource:fish",
+         "walk=coords",
+         "animate=freeing 3000",
+         "breed=fish 1", -- Add a fish in an area of 1
          "return"
       },
 */
@@ -237,7 +244,7 @@
  */
 void WorkerProgram::parse_breed(Worker::Action* act, const std::vector<std::string>& cmd) {
 	if (cmd.size() != 3)
-		throw wexception("Usage: breed <ware type> <area>");
+		throw wexception("Usage: breed=<ware type> <area>");
 
 	act->function = &Worker::run_breed;
 	act->sparam1 = cmd[1];
@@ -248,45 +255,11 @@
 		throw wexception("Bad area '%s'", cmd[2].c_str());
 }
 
-/* RST
-setbobdescription
-^^^^^^^^^^^^^^^^^
-.. function:: setbobdescription \<bob_name\> [\<bob_name\> ...]
-
-   :arg string bob_name: The bob type to add to the selection. Specify as many bob
-      types as you want.
-
-   Randomly select a bob name that can be used in subsequent commands,
-   e.g. create_bob. Used for releasing animals. Example::
-
-      release = {
-         "setbobdescription wildboar stag sheep", -- A wildboar, stag or sheep will be selected
-         "findspace size:any radius:3",
-         "walk coords",
-         "animation releasein 2000",
-         "create_bob",
-         "animation releaseout 2000",
-         "return"
-      },
-*/
-/**
- * sparamv = possible bobs
- */
-void WorkerProgram::parse_setbobdescription(Worker::Action* act,
-                                            const std::vector<std::string>& cmd) {
-	if (cmd.size() < 2)
-		throw wexception("Usage: setbobdescription <bob name> <bob name> ...");
-
-	act->function = &Worker::run_setbobdescription;
-
-	for (uint32_t i = 1; i < cmd.size(); ++i)
-		act->sparamv.push_back(cmd[i]);
-}
 
 /* RST
 findobject
 ^^^^^^^^^^
-.. function:: findobject radius:\<distance\> [type:\<map_object_type\>] [attrib:\<attribute\>]
+.. function:: findobject=radius:\<distance\> [type:\<map_object_type\>] [attrib:\<attribute\>]
 
    :arg int radius: Search for an object within the given radius around the worker.
    :arg string type: The type of map object to search for. Defaults to ``immovable``.
@@ -294,24 +267,24 @@
 
    Find and select an object based on a number of predicates, which can be specified
    in arbitrary order. The object can then be used in other commands like ``walk``
-   or ``object``. Examples::
+   or ``callobject``. Examples::
 
       cut_granite = {
-         "findobject attrib:rocks radius:6", -- Find rocks on the map within a radius of 6 from your building
-         "walk object", -- Now walk to those rocks
-         "play_sound sound/atlanteans/cutting stonecutter 192",
-         "animation hacking 12000",
-         "object shrink",
-         "createware granite",
+         "findobject=attrib:rocks radius:6", -- Find rocks on the map within a radius of 6 from your building
+         "walk=object", -- Now walk to those rocks
+         "playsound=sound/atlanteans/cutting stonecutter 192",
+         "animate=hacking 12000",
+         "callobject=shrink",
+         "createware=granite",
          "return"
       },
 
       hunt = {
-         "findobject type:bob radius:13 attrib:eatable", -- Find an eatable bob (animal) within a radius of 13 from your building
-         "walk object", -- Walk to where the animal is
-         "animation idle 1500",
-         "object remove",
-         "createware meat",
+         "findobject=type:bob radius:13 attrib:eatable", -- Find an eatable bob (animal) within a radius of 13 from your building
+         "walk=object", -- Walk to where the animal is
+         "animate=idle 1500",
+         "removeobject",
+         "createware=meat",
          "return"
       },
 */
@@ -358,7 +331,7 @@
 /* RST
 findspace
 ^^^^^^^^^
-.. function:: findspace size:\<plot\> radius:\<distance\> [breed] [resource:\<name\>] [avoid:\<immovable_attribute\>] [space]
+.. function:: findspace=size:\<plot\> radius:\<distance\> [breed] [resource:\<name\>] [avoid:\<immovable_attribute\>] [saplingsearches:\<number\>] [space]
 
    :arg string size: The size or building plot type of the free space.
       The possible values are:
@@ -382,6 +355,9 @@
    :arg string avoid: A field containing an immovable that has this attribute will
       not be used.
 
+   :arg int saplingsearches: The higher the number, the better the accuracy
+      for finding a better spot for immovables that have terrain affinity, e.g. trees.
+
    :arg empty space: Find only fields that are walkable in such a way that all
       neighbors are also walkable (an exception is made if one of the neighboring
       fields is owned by this worker's location).
@@ -390,29 +366,29 @@
    The field can then be used in other commands like ``walk``. Examples::
 
       breed = {
-         "findspace size:any radius:7 breed resource:fish", -- Find any field that can have fish in it for adding a fish to it below
-         "walk coords",
-         "animation freeing 3000",
-         "breed fish 1",
-         "return"
-      },
-
-      plant = {
-         "findspace size:any radius:5 avoid:field", -- Don't get in the way of the farmer's crops when planting trees
-         "walk coords",
-         "animation dig 2000",
-         "animation planting 1000",
-         "plant attrib:tree_sapling",
-         "animation water 2000",
-         "return"
-      },
-
-      plant = {
-         "findspace size:any radius:2 space", -- The farmer will want to walk to this field again later for harvesting his crop
-         "walk coords",
-         "animation planting 4000",
-         "plant attrib:seed_wheat",
-         "animation planting 4000",
+         "findspace=size:any radius:7 breed resource:fish", -- Find any field that can have fish in it for adding a fish to it below
+         "walk=coords",
+         "animate=freeing 3000",
+         "breed=fish 1",
+         "return"
+      },
+
+      plant = {
+         "findspace=size:any radius:5 avoid:field saplingsearches:8", -- Don't get in the way of the farmer's crops when planting trees. Retry 8 times.
+         "walk=coords",
+         "animate=dig 2000",
+         "animate=planting 1000",
+         "plant=attrib:tree_sapling",
+         "animate=water 2000",
+         "return"
+      },
+
+      plant = {
+         "findspace=size:any radius:2 space", -- The farmer will want to walk to this field again later for harvesting his crop
+         "walk coords",
+         "animate=planting 4000",
+         "plant=attrib:seed_wheat",
+         "animate=planting 4000",
          "return",
       },
 */
@@ -499,7 +475,7 @@
 /* RST
 walk
 ^^^^
-.. function:: walk \<destination_type\>
+.. function:: walk=\<destination_type\>
 
    :arg string destination_type: Defines where to walk to. Possible destinations are:
 
@@ -511,31 +487,31 @@
    Walk to a previously selected destination. Examples::
 
       plant = {
-         "findspace size:any radius:2",
-         "walk coords", -- Walk to the space found by the command above
-         "animation planting 4000",
-         "plant attrib:seed_blackroot",
-         "animation planting 4000",
+         "findspace=size:any radius:2",
+         "walk=coords", -- Walk to the space found by the command above
+         "animate=planting 4000",
+         "plant=attrib:seed_blackroot",
+         "animate=planting 4000",
          "return"
       },
 
       harvest = {
-         "findobject attrib:ripe_blackroot radius:2",
+         "findobject=attrib:ripe_blackroot radius:2",
          "walk object", -- Walk to the blackroot field found by the command above
-         "animation harvesting 10000",
-         "object harvest",
-         "animation gathering 2000",
-         "createware blackroot",
+         "animate=harvesting 10000",
+         "callobject=harvest",
+         "animate=gathering 2000",
+         "createware=blackroot",
          "return"
       },
 
       buildship = {
-         "walk object-or-coords", -- Walk to coordinates from 1. or to object from 2.
-         "plant attrib:shipconstruction unless object", -- 2. This will create an object for us if we don't have one yet
-         "play_sound sound/sawmill sawmill 230",
-         "animation work 500",
+         "walk=object-or-coords", -- Walk to coordinates from 1. or to object from 2.
+         "plant=attrib:shipconstruction unless object", -- 2. This will create an object for us if we don't have one yet
+         "playsound=sound/sawmill sawmill 230",
+         "animate=work 500",
          "construct", -- 1. This will find a space for us if no object has been planted yet
-         "animation work 5000",
+         "animate=work 5000",
          "return"
       },
 */
@@ -544,7 +520,7 @@
  */
 void WorkerProgram::parse_walk(Worker::Action* act, const std::vector<std::string>& cmd) {
 	if (cmd.size() != 2)
-		throw wexception("Usage: walk <where>");
+		throw wexception("Usage: walk=<where>");
 
 	act->function = &Worker::run_walk;
 
@@ -559,9 +535,9 @@
 }
 
 /* RST
-animation
-^^^^^^^^^
-.. function:: animation \<name\> \<duration\>
+animate
+^^^^^^^
+.. function:: animate=\<name\> \<duration\>
 
    :arg string name: The name of the animation.
    :arg int duration: The time in milliseconds for which the animation will be played.
@@ -569,11 +545,11 @@
    Play the given animation for the given duration. Example::
 
       plantvine = {
-         "findspace size:any radius:1",
-         "walk coords",
-         "animation dig 2000", -- Play a digging animation for 2 seconds.
-         "plant attrib:seed_grapes",
-         "animation planting 3000", -- Play a planting animation for 3 seconds.
+         "findspace=size:any radius:1",
+         "walk=coords",
+         "animate=dig 2000", -- Play a digging animation for 2 seconds.
+         "plant=attrib:seed_grapes",
+         "animate=planting 3000", -- Play a planting animation for 3 seconds.
          "return"
       },
 */
@@ -581,18 +557,18 @@
  * iparam1 = anim id
  * iparam2 = duration
  */
-void WorkerProgram::parse_animation(Worker::Action* act, const std::vector<std::string>& cmd) {
+void WorkerProgram::parse_animate(Worker::Action* act, const std::vector<std::string>& cmd) {
 	char* endp;
 
 	if (cmd.size() != 3)
-		throw GameDataError("Usage: animation <name> <time>");
+		throw GameDataError("Usage: animate=<name> <time>");
 
 	if (!worker_.is_animation_known(cmd[1])) {
 		throw GameDataError("unknown animation \"%s\" in worker program for worker \"%s\"",
 		                    cmd[1].c_str(), worker_.name().c_str());
 	}
 
-	act->function = &Worker::run_animation;
+	act->function = &Worker::run_animate;
 	act->iparam1 = worker_.get_animation(cmd[1]);
 
 	act->iparam2 = strtol(cmd[2].c_str(), &endp, 0);
@@ -611,7 +587,7 @@
    Return home and then drop any ware we're carrying onto our building's flag. Example::
 
       scout = {
-         "scout 15 75000",
+         "scout=15 75000",
          "return" -- Go home
       }
 */
@@ -624,34 +600,34 @@
 }
 
 /* RST
-object
-^^^^^^
-.. function:: object \<program_name\>
+callobject
+^^^^^^^^^^^
+.. function:: callobject=\<program_name\>
 
    :arg string program_name: The name of the program to be executed.
 
    Cause the currently selected object to execute its given program. Example::
 
-      chop = {
-         "findobject attrib:tree radius:10",
-         "walk object",
-         "play_sound sound/woodcutting fast_woodcutting 250",
-         "animation hacking 10000",
-         "play_sound sound/woodcutting tree-falling 130",
-         "object fall", -- Cause the tree to fall
-         "animation idle 2000",
-         "createware log",
+      harvest = {
+         "findobject=attrib:tree radius:10",
+         "walk=object",
+         "playsound=sound/woodcutting fast_woodcutting 250",
+         "animate=hacking 10000",
+         "playsound=sound/woodcutting tree-falling 130",
+         "callobject=fall", -- Cause the tree to fall
+         "animate=idle 2000",
+         "createware=log",
          "return"
       }
 */
 /**
- * sparam1 = object command name
+ * sparam1 = callobject command name
  */
-void WorkerProgram::parse_object(Worker::Action* act, const std::vector<std::string>& cmd) {
+void WorkerProgram::parse_callobject(Worker::Action* act, const std::vector<std::string>& cmd) {
 	if (cmd.size() != 2)
-		throw wexception("Usage: object <program name>");
+		throw wexception("Usage: callobject=<program name>");
 
-	act->function = &Worker::run_object;
+	act->function = &Worker::run_callobject;
 	act->sparam1 = cmd[1];
 }
 
@@ -670,31 +646,31 @@
    the fertility of the area. Examples::
 
       plant = {
-         "findspace size:any radius:5 avoid:field",
-         "walk coords",
-         "animation dig 2000",
-         "animation planting 1000",
-         "plant attrib:tree_sapling", -- Plant any random sapling tree
-         "animation water 2000",
+         "findspace=size:any radius:5 avoid:field",
+         "walk=coords",
+         "animate=dig 2000",
+         "animate=planting 1000",
+         "plant=attrib:tree_sapling", -- Plant any random sapling tree
+         "animate=water 2000",
          "return"
       },
 
       plant = {
-         "findspace size:any radius:2 space",
-         "walk coords",
-         "animation planting 4000",
-         "plant attrib:seed_wheat", -- Plant a random wheat field immovable that the worker's tribe knows about
-         "animation planting 4000",
+         "findspace=size:any radius:2 space",
+         "walk=coords",
+         "animate=planting 4000",
+         "plant=attrib:seed_wheat", -- Plant the tiny field immovable that the worker's tribe knows about
+         "animate=planting 4000",
          "return",
       },
 
       buildship = {
-         "walk object-or-coords",
-         "plant attrib:shipconstruction unless object", -- Only create a shipconstruction if we don't already have one
-         "play_sound sound/sawmill sawmill 230",
-         "animation work 500",
+         "walk=object-or-coords",
+         "plant=attrib:shipconstruction unless object", -- Only create a shipconstruction if we don't already have one
+         "playsound=sound/sawmill sawmill 230",
+         "animate=work 500",
          "construct",
-         "animation work 5000",
+         "animate=work 5000",
          "return"
       }
 */
@@ -705,7 +681,7 @@
 void WorkerProgram::parse_plant(Worker::Action* act, const std::vector<std::string>& cmd) {
 	if (cmd.size() < 2)
 		throw wexception(
-		   "Usage: plant plant attrib:<attribute> [attrib:<attribute> ...] [unless object]");
+		   "Usage: plant plant=attrib:<attribute> [attrib:<attribute> ...] [unless object]");
 
 	act->function = &Worker::run_plant;
 	act->iparam1 = Worker::Action::plantAlways;
@@ -741,40 +717,50 @@
 }
 
 /* RST
-create_bob
-^^^^^^^^^^
-.. function:: create_bob
+createbob
+^^^^^^^^^
+.. function:: createbob=\<bob_name\> [\<bob_name\> ...]
+
+	:arg string bob_name: The bob type to add to the selection. Specify as many bob
+      types as you want.
 
    Adds a bob (usually an animal) to the map at the worker's current location.
-   The list of possible bobs must have been selected by a previous command. Example::
+   Randomly select from the list of ``bob_name``s. Example::
 
       release = {
-         "setbobdescription wildboar stag sheep", -- We want to release a wildboar, stag or sheep into the wild
-         "findspace size:any radius:3",
-         "walk coords",
-         "animation releasein 2000",
-         "create_bob", -- Now release a wildboar, stag or sheep into the wild
-         "animation releaseout 2000",
+         "findspace=size:any radius:3",
+         "walk=coords",
+         "animate=releasein 2000",
+         "createbob=wildboar stag sheep", -- Release a wildboar, stag or sheep into the wild
+         "animate=releaseout 2000",
          "return"
       }
 */
-void WorkerProgram::parse_create_bob(Worker::Action* act, const std::vector<std::string>&) {
-	act->function = &Worker::run_create_bob;
+// TODO(GunChleoc): attrib:eatable would be much better, then depend on terrain too
+void WorkerProgram::parse_createbob(Worker::Action* act, const std::vector<std::string>& cmd) {
+	if (cmd.size() < 2)
+		throw wexception("Usage: createbob=<bob name> <bob name> ...");
+
+	act->function = &Worker::run_createbob;
+
+	for (uint32_t i = 1; i < cmd.size(); ++i) {
+		act->sparamv.push_back(cmd[i]);
+	}
 }
 
 /* RST
-object remove
-^^^^^^^^^^^^^
-.. function:: object remove
+removeobject
+^^^^^^^^^^^^
+.. function:: removeobject
 
    Remove the currently selected object. Example::
 
       hunt = {
-         "findobject type:bob radius:13 attrib:eatable", -- Select an object to remove
-         "walk object",
-         "animation idle 1000",
-         "object remove", -- The selected eatable map object has been hunted, so remove it from the map
-         "createware meat",
+         "findobject=type:bob radius:13 attrib:eatable", -- Select an object to remove
+         "walk=object",
+         "animate=idle 1000",
+         "removeobject", -- The selected eatable map object has been hunted, so remove it from the map
+         "createware=meat",
          "return"
       }
 */
@@ -783,20 +769,20 @@
 }
 
 /* RST
-geologist
-^^^^^^^^^
-.. function:: geologist \<repetitions\> \<radius\> \<program_name\>
-
-   :arg int repetitions: The number of times that the geologist will move to a
-      different spot on the map to execute ``program_name``.
-
-   :arg int radius: The radius of map fields for the geologist not to stray from.
+repeatsearch
+^^^^^^^^^^^^
+.. function:: repeatsearch=\<repetitions\> \<radius\> \<program_name\>
+
+   :arg int repetitions: The number of times that the worker will move to a
+      different spot on the map to execute ``program_name``. Used by geologists.
+
+   :arg int radius: The radius of map fields for the worker not to stray from.
 
    Walk around the starting point randomly within a certain radius, and execute
    your ``program_name`` for some of the fields. Example::
 
       expedition = {
-         "geologist 15 5 search"
+         "repeatsearch=15 5 search"
       },
 */
 /**
@@ -804,13 +790,13 @@
  * iparam2 = radius
  * sparam1 = subcommand
  */
-void WorkerProgram::parse_geologist(Worker::Action* act, const std::vector<std::string>& cmd) {
+void WorkerProgram::parse_repeatsearch(Worker::Action* act, const std::vector<std::string>& cmd) {
 	char* endp;
 
 	if (cmd.size() != 4)
-		throw wexception("Usage: geologist <repeat #> <radius> <subcommand>");
+		throw wexception("Usage: repeatsearch=<repeat #> <radius> <subcommand>");
 
-	act->function = &Worker::run_geologist;
+	act->function = &Worker::run_repeatsearch;
 
 	act->iparam1 = strtol(cmd[1].c_str(), &endp, 0);
 	if (*endp)
@@ -824,32 +810,32 @@
 }
 
 /* RST
-geologist_find
-^^^^^^^^^^^^^^
-.. function:: geologist_find
+findresources
+^^^^^^^^^^^^^
+.. function:: findresources
 
    Check the current position for map resources (e.g. coal or water), and plant
    a marker object when possible. Example::
 
       search = {
-         "animation hacking 5000",
-         "animation idle 2000",
-         "play_sound sound/hammering geologist_hammer 192",
-         "animation hacking 3000",
-         "geologist_find" -- Plant a resource marker at the current location, according to what has been found.
+         "animate=hacking 5000",
+         "animate=idle 2000",
+         "playsound=sound/hammering geologist_hammer 192",
+         "animate=hacking 3000",
+         "findresources" -- Plant a resource marker at the current location, according to what has been found.
       }
 */
-void WorkerProgram::parse_geologist_find(Worker::Action* act, const std::vector<std::string>& cmd) {
+void WorkerProgram::parse_findresources(Worker::Action* act, const std::vector<std::string>& cmd) {
 	if (cmd.size() != 1)
-		throw wexception("Usage: geologist_find");
+		throw wexception("Usage: findresources");
 
-	act->function = &Worker::run_geologist_find;
+	act->function = &Worker::run_findresources;
 }
 
 /* RST
 scout
 ^^^^^
-.. function:: scout \<radius\> \<time\>
+.. function:: scout=\<radius\> \<time\>
 
    :arg int radius: The radius of map fields for the scout to explore.
 
@@ -858,7 +844,7 @@
    Sends a scout out to run around scouting the area. Example::
 
       scout = {
-         "scout 15 75000", -- Scout within a radius of 15 for 75 seconds
+         "scout=15 75000", -- Scout within a radius of 15 for 75 seconds
          "return"
       },
 */
@@ -868,7 +854,7 @@
  */
 void WorkerProgram::parse_scout(Worker::Action* act, const std::vector<std::string>& cmd) {
 	if (cmd.size() != 3)
-		throw wexception("Usage: scout <radius> <time>");
+		throw wexception("Usage: scout=<radius> <time>");
 
 	act->iparam1 = atoi(cmd[1].c_str());
 	act->iparam2 = atoi(cmd[2].c_str());
@@ -876,9 +862,9 @@
 }
 
 /* RST
-play_sound
+playsound
 ^^^^^^^^^^
-.. function:: play_sound \<sound_dir\> \<sound_name\> [priority]
+.. function:: playsound=\<sound_dir\> \<sound_name\> [priority]
 
    :arg string sound_dir: The directory (folder) that the sound files are in,
       relative to the data directory.
@@ -891,25 +877,25 @@
    Play a sound effect. Example::
 
       harvest = {
-         "findobject attrib:ripe_wheat radius:2",
-         "walk object",
-         "play_sound sound/farm scythe 220", -- Almost certainly play a swishy harvesting sound
-         "animation harvesting 10000",
-         "object harvest",
-         "animation gathering 4000",
-         "createware wheat",
+         "findobject=attrib:ripe_wheat radius:2",
+         "walk=object",
+         "playsound=sound/farm scythe 220", -- Almost certainly play a swishy harvesting sound
+         "animate=harvesting 10000",
+         "callobject=harvest",
+         "animate=gathering 4000",
+         "createware=wheat",
          "return"
       }
 */
-void WorkerProgram::parse_play_sound(Worker::Action* act, const std::vector<std::string>& cmd) {
+void WorkerProgram::parse_playsound(Worker::Action* act, const std::vector<std::string>& cmd) {
 	if (cmd.size() < 3 || cmd.size() > 4)
-		throw wexception("Usage: play_sound <sound_dir> <sound_name> [priority]");
+		throw wexception("Usage: playsound <sound_dir> <sound_name> [priority]");
 
 	act->sparam1 = cmd[1] + "/" + cmd[2];
 
 	g_sound_handler.load_fx_if_needed(cmd[1], cmd[2], act->sparam1);
 
-	act->function = &Worker::run_play_sound;
+	act->function = &Worker::run_playsound;
 	act->iparam1 = cmd.size() == 3 ? 64 :  //  50% chance to play, only one instance at a time
 	                  atoi(cmd[3].c_str());
 }
@@ -923,12 +909,12 @@
    This is used in ship building. Example::
 
       buildship = {
-         "walk object-or-coords", -- Walk to coordinates from 1. or to object from 2.
-         "plant attrib:shipconstruction unless object", -- 2. This will create an object for us if we don't have one yet
-         "play_sound sound/sawmill sawmill 230",
-         "animation work 500",
+         "walk=object-or-coords", -- Walk to coordinates from 1. or to object from 2.
+         "plant=attrib:shipconstruction unless object", -- 2. This will create an object for us if we don't have one yet
+         "playsound=sound/sawmill sawmill 230",
+         "animate=work 500",
          "construct", -- 1. Add the current ware to the shipconstruction. This will find a space for us if no shipconstruction object has been planted yet
-         "animation work 5000",
+         "animate=work 5000",
          "return"
       },
 */

=== modified file 'src/logic/map_objects/tribes/worker_program.h'
--- src/logic/map_objects/tribes/worker_program.h	2018-04-07 16:59:00 +0000
+++ src/logic/map_objects/tribes/worker_program.h	2018-07-08 18:06:37 +0000
@@ -77,20 +77,19 @@
 	void parse_mine(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_breed(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_createware(Worker::Action* act, const std::vector<std::string>& cmd);
-	void parse_setbobdescription(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_findobject(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_findspace(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_walk(Worker::Action* act, const std::vector<std::string>& cmd);
-	void parse_animation(Worker::Action* act, const std::vector<std::string>& cmd);
+	void parse_animate(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_return(Worker::Action* act, const std::vector<std::string>& cmd);
-	void parse_object(Worker::Action* act, const std::vector<std::string>& cmd);
+	void parse_callobject(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_plant(Worker::Action* act, const std::vector<std::string>& cmd);
-	void parse_create_bob(Worker::Action* act, const std::vector<std::string>& cmd);
+	void parse_createbob(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_removeobject(Worker::Action* act, const std::vector<std::string>& cmd);
-	void parse_geologist(Worker::Action* act, const std::vector<std::string>& cmd);
-	void parse_geologist_find(Worker::Action* act, const std::vector<std::string>& cmd);
+	void parse_repeatsearch(Worker::Action* act, const std::vector<std::string>& cmd);
+	void parse_findresources(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_scout(Worker::Action* act, const std::vector<std::string>& cmd);
-	void parse_play_sound(Worker::Action* act, const std::vector<std::string>& cmd);
+	void parse_playsound(Worker::Action* act, const std::vector<std::string>& cmd);
 	void parse_construct(Worker::Action* act, const std::vector<std::string>& cmd);
 
 	const std::string name_;

=== modified file 'src/logic/map_objects/world/critter.cc'
--- src/logic/map_objects/world/critter.cc	2018-04-27 06:11:05 +0000
+++ src/logic/map_objects/world/critter.cc	2018-07-08 18:06:37 +0000
@@ -181,7 +181,7 @@
 
 Follow the steps of a configuration-defined program.
 ivar1 is the next action to be performed.
-ivar2 is used to store description indices selected by plant/setbobdescription
+ivar2 is used to store description indices selected by plant
 objvar1 is used to store objects found by findobject
 coords is used to store target coordinates found by findspace
 

=== modified file 'src/sound/sound_handler.h'
--- src/sound/sound_handler.h	2018-04-15 07:02:05 +0000
+++ src/sound/sound_handler.h	2018-07-08 18:06:37 +0000
@@ -84,7 +84,7 @@
  * \par Sound effects
  *
  * Buildings and workers can use sound effects in their programs. To do so, use
- * e.g. "play_sound blacksmith_hammer" in the appropriate conf file. The conf file
+ * e.g. "playsound blacksmith_hammer" in the appropriate conf file. The conf file
  * parser will then load one or more audio files for 'hammering blacksmith'
  * from the building's/worker's configuration directory and store them in an
  * FXset for later access, similar to the way music is stored in songsets.


Follow ups