// DecGoal.cpp

#include "decgoal.h"
#include "DEF.H"
#include "DECOR.H"

short table_goal_nbop[] =
{
	0,		// term
	3,		// gohili
	3,		// gohili2
	3,		// goblupi
	4,		// putfloor
	4,		// putobject
	9,		// buildfloor
	9,		// buildobject
	2,		// action
	1,		// interrupt
	1,		// energy
	3,		// addmoves
	6,		// other
	0,		// finishmove
	2,		// take
	0,		// depose
	1,		// group
	2,		// work
	4,		// testobject
	2,		// fix
	6,		// otherfix
	3,		// addicons
	2,		// newblupi
	1,		// sound
	1,		// repeat
	1,		// otherloop
	0,		// nextloop
	2,		// arrangeobject
	0,		// labo
	2,		// cache
	0,		// delete
	3,		// electro
	3,		// newperso
	2,		// usinebuild
	2,		// usinefree
	2,		// explose1
	2,		// explose2
	1,		// vehicule
	4,		// takeobject
	3,		// floorjump
	2,		// adddrapeau
	2,		// amorce
	1,		// malade
	2,		// ifterm
	2,		// ifdebarque
	0,		// isnomalade
	2,		// skipskill
	2,		// teleporte
	0,		// actualise
	2,		// waitfree
};

// Va, mon petit.
static short table_goal_go[] =
{
	WM_ACTION_GO,
		GOAL_GOHILI,		0,0, false,
		GOAL_TERM,
	0
};

// Blupi va dans sa maison.
static short table_goal_maison[] =
{
	WM_ACTION_MAISON,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_CONTENT, DIRECT_E,
		GOAL_TERM,
	0
};

// Blupi bucheron.
static short table_goal_abat1[] =
{
	WM_ACTION_ABAT1,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	0,-1, CHOBJECT,6,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,30, -1,-1, DIMOBJY+20,1,-1*100,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,-1, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		-1,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_BUILDOBJECT,	-1,0, CHOBJECT,36, -1,-1, 80/10,10,-10*100,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_OTHER,			CHOBJECT,6,11,-1,-1, WM_ACTION_ABAT1,
		GOAL_TERM,
	0
};

static short table_goal_abat2[] =
{
	WM_ACTION_ABAT2,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	0,-1, CHOBJECT,7,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,31, -1,-1, DIMOBJY+20,1,-1*100,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,-1, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		-1,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_BUILDOBJECT,	-1,0, CHOBJECT,36, -1,-1, 80/10,10,-10*100,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_OTHER,			CHOBJECT,6,11,-1,-1, WM_ACTION_ABAT1,
		GOAL_TERM,
	0
};

static short table_goal_abat3[] =
{
	WM_ACTION_ABAT3,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	-1,0, CHOBJECT,8,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,32, -1,-1, DIMOBJY+20,1,-1*100,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		-1,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		-1,-1, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		-1,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_BUILDOBJECT,	-1,0, CHOBJECT,36, -1,-1, 80/10,10,-10*100,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_OTHER,			CHOBJECT,6,11,-1,-1, WM_ACTION_ABAT1,
		GOAL_TERM,
	0
};

static short table_goal_abat4[] =
{
	WM_ACTION_ABAT4,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,0, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	0,0, CHOBJECT,9,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,0,
		 GOAL_BUILDOBJECT,	0,0, CHOBJECT,33, -1,-1, DIMOBJY,1,-1*100,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_BUILDOBJECT,	0,0, CHOBJECT,36, -1,-1, 80/10,10,-10*100,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_OTHER,			CHOBJECT,6,11,-1,-1, WM_ACTION_ABAT1,
		GOAL_TERM,
	0
};

static short table_goal_abat5[] =
{
	WM_ACTION_ABAT5,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,0, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	0,0, CHOBJECT,10,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,0,
		 GOAL_BUILDOBJECT,	0,0, CHOBJECT,34, -1,-1, DIMOBJY,1,-1*100,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_BUILDOBJECT,	0,0, CHOBJECT,36, -1,-1, 80/10,10,-10*100,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_OTHER,			CHOBJECT,6,11,-1,-1, WM_ACTION_ABAT1,
		GOAL_TERM,
	0
};

static short table_goal_abat6[] =
{
	WM_ACTION_ABAT6,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,0, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	0,0, CHOBJECT,11,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,0,
		 GOAL_BUILDOBJECT,	0,0, CHOBJECT,35, -1,-1, DIMOBJY,1,-1*100,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ADDMOVES,		0,0, 1,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,

		GOAL_BUILDOBJECT,	0,0, CHOBJECT,36, -1,-1, 80/10,10,-10*100,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_OTHER,			CHOBJECT,6,11,-1,-1, WM_ACTION_ABAT1,
		GOAL_TERM,
	0
};

// Blupi tailleur de pierre.
static short table_goal_roc1[] =
{
	WM_ACTION_ROC1,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,38, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,39, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,40, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,41, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,42, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,43, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,44, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,37,43,-1,-1, WM_ACTION_ROC1,
		GOAL_TERM,
	0
};

static short table_goal_roc2[] =
{
	WM_ACTION_ROC2,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,39, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,40, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,41, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,42, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,43, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,44, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,37,43,-1,-1, WM_ACTION_ROC1,
		GOAL_TERM,
	0
};

static short table_goal_roc3[] =
{
	WM_ACTION_ROC3,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,40, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,41, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,42, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,43, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,44, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,37,43,-1,-1, WM_ACTION_ROC1,
		GOAL_TERM,
	0
};

static short table_goal_roc4[] =
{
	WM_ACTION_ROC4,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,41, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,42, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,43, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,44, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,37,43,-1,-1, WM_ACTION_ROC1,
		GOAL_TERM,
	0
};

static short table_goal_roc5[] =
{
	WM_ACTION_ROC5,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,42, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,43, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,44, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,37,43,-1,-1, WM_ACTION_ROC1,
		GOAL_TERM,
	0
};

static short table_goal_roc6[] =
{
	WM_ACTION_ROC6,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,43, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,44, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,37,43,-1,-1, WM_ACTION_ROC1,
		GOAL_TERM,
	0
};

static short table_goal_roc7[] =
{
	WM_ACTION_ROC7,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, true,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,44, -1,-1, 120/10,10,-10*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,

		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,37,43,-1,-1, WM_ACTION_ROC1,
		GOAL_TERM,
	0
};

// Construction d'une cabane.
static short table_goal_build1[] =
{
	WM_ACTION_BUILD1,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDFLOOR,	0,-1, CHFLOOR,16, CHMASK1,0, 16,14,1*100,  // briques
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
//?		GOAL_ENERGY,		MAXENERGY/4,
		// �chaffaudage
		GOAL_BUILDOBJECT,	-1,0, CHOBJECT,62, -1,-1, DIMOBJY/10,18,10*100,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,+1, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-2, true,
		GOAL_GOBLUPI,		-2,0, true,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		+2,0, true,
		GOAL_GOBLUPI,		0,+1, true,
		// maison
		GOAL_BUILDOBJECT,	-2,0, CHOBJECT,61, -1,-1, DIMOBJY/10,20,10*100,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Construction d'une nurserie.
static short table_goal_build2[] =
{
	WM_ACTION_BUILD2,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDFLOOR,	0,-1, CHFLOOR,52, CHMASK1,0, 16,14,1*100,  // nurserie
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_PUTOBJECT,		-1,0, -1,-1,  // enl�ve les planches
		GOAL_GOBLUPI,		-1,+1, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,+1, true,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Construction d'un laboratoire.
static short table_goal_build3[] =
{
	WM_ACTION_BUILD3,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDFLOOR,	0,-1, CHFLOOR,16, CHMASK1,0, 16,14,1*100,  // briques
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_GOBLUPI,		+1,0, true,
		// laboratoire
		GOAL_BUILDOBJECT,	-1,0, CHOBJECT,28, -1,-1, DIMOBJY/10,20,10*100,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Construction d'une mine.
static short table_goal_build4[] =
{
	WM_ACTION_BUILD4,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			2,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		// �chaffaudage
		GOAL_BUILDOBJECT,	0,-1, CHOBJECT,126, -1,-1, DIMOBJY/10,18,10*100,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-2, true,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_GOBLUPI,		0,+1, true,
		// mine
		GOAL_BUILDOBJECT,	-2,0, CHOBJECT,122, -1,-1, DIMOBJY/10,20,10*100,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Construction d'une usine.
static short table_goal_build5[] =
{
	WM_ACTION_BUILD5,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDFLOOR,	0,-1, CHFLOOR,16, CHMASK1,0, 16,14,1*100,  // briques
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_GOBLUPI,		+1,0, true,
		// usine
		GOAL_BUILDOBJECT,	-1,0, CHOBJECT,120, -1,-1, DIMOBJY/10,20,10*100,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_BUILDSOURD, DIRECT_O,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Construction d'un t�l�porteur.
static short table_goal_build6[] =
{
	WM_ACTION_BUILD6,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDFLOOR,	0,-1, CHFLOOR,80, CHMASK1,0, 16,14,1*100,  // t�l�porteur
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_PUTOBJECT,		-1,0, -1,-1,  // enl�ve les planches
		GOAL_GOBLUPI,		-1,+1, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_BUILDSEC, DIRECT_S,
		GOAL_GOBLUPI,		+1,+1, true,
		GOAL_FINISHMOVE,
		GOAL_GOBLUPI,		0,-2, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_S,
		GOAL_TERM,
	0
};

// Construction d'un mur.
static short table_goal_mur[] =
{
	WM_ACTION_MUR,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,26, -1,-1, DIMOBJY/5,40,5*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_PUTOBJECT,		0,0, -1,-1,  // enl�ve les pierres
		GOAL_GOBLUPI,		+1,+1, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_TCHAO, DIRECT_E,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Construction d'une tour.
static short table_goal_tour[] =
{
	WM_ACTION_TOUR,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,27, -1,-1, DIMOBJY/4,20,4*100,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_PUTOBJECT,		-1,0, -1,-1,  // enl�ve les pierres
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_PIOCHEPIERRE, DIRECT_E,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_BUILDBREF, DIRECT_O,
		GOAL_ACTION,		ACTION_STOP, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_ARRANGEOBJECT,	-1,-1,
		GOAL_ACTION,		ACTION_TCHAO, DIRECT_E,
		GOAL_TERM,
	0
};

// Construction d'une palissade.
static short table_goal_palis[] =
{
	WM_ACTION_PALIS,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,71, -1,-1, DIMOBJY/10,20,10*100,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_PIOCHE, DIRECT_E,
		GOAL_PUTOBJECT,		0,0, -1,-1,  // enl�ve les planches
		GOAL_GOBLUPI,		+1,+1, true,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Transporte (est).
static short table_goal_carry[] =
{
	WM_ACTION_CARRY,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			4,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, -2,-2, -1,-1, 9+18,1,1*100,
		 GOAL_ADDMOVES,		0,-1, 2,
		GOAL_ACTION,		ACTION_TAKE, DIRECT_E,
		GOAL_TAKE,			0,-1,
		GOAL_TERM,
	0
};

// Transporte (sud).
static short table_goal_carry2[] =
{
	WM_ACTION_CARRY2,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_S,
		GOAL_GROUP,			4,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, -2,-2, -1,-1, 9+18,1,1*100,
		 GOAL_ADDMOVES,		-1,0, 3,
		GOAL_ACTION,		ACTION_TAKE, DIRECT_S,
		GOAL_TAKE,			-1,0,
		GOAL_TERM,
	0
};

// Repose (est).
static short table_goal_depose[] =
{
	WM_ACTION_DEPOSE,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			6,
		 GOAL_IFTERM,		+1,0,  // emplacement libre ?
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_PUTOBJECT,	0,-1, -3,-3,  // l'objet transport�
		 GOAL_BUILDOBJECT,	0,-1, -2,-2, -1,-1, 11,1,1*100,
		 GOAL_ADDMOVES,		0,-1, 4,
		GOAL_DEPOSE,
		GOAL_ACTION,		ACTION_DEPOSE, DIRECT_E,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Repose (sud).
static short table_goal_depose2[] =
{
	WM_ACTION_DEPOSE2,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_S,
		GOAL_GROUP,			6,
		 GOAL_IFTERM,		0,+1,  // emplacement libre ?
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_PUTOBJECT,	-1,0, -3,-3,  // l'objet transport�
		 GOAL_BUILDOBJECT,	-1,0, -2,-2, -1,-1, 11,1,1*100,
		 GOAL_ADDMOVES,		-1,0, 5,
		GOAL_DEPOSE,
		GOAL_ACTION,		ACTION_DEPOSE, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Repose des oeufs sur la nurserie.
static short table_goal_newblupi[] =
{
	WM_ACTION_NEWBLUPI,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			5,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_PUTOBJECT,	0,-1, -3,-3,  // l'objet transport�
		 GOAL_BUILDOBJECT,	0,-1, -2,-2, -1,-1, 11,1,1*100,
		 GOAL_ADDMOVES,		0,-1, 4,
		GOAL_DEPOSE,
		GOAL_ACTION,		ACTION_DEPOSE, DIRECT_E,
		GOAL_FINISHMOVE,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_GROUP,			3,
		 GOAL_PUTOBJECT,	+1,-1, CHOBJECT,64,  // 4 oeufs
		 GOAL_BUILDFLOOR,	+1,-1, CHFLOOR,-1, -1,-1, 100,1,1*100,
		 GOAL_ADDICONS,		+1,-1, 3,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_FINISHMOVE,
		GOAL_NEWBLUPI,		+1,-1,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_TERM,
	0
};

// Cultive des tomates.
static short table_goal_cultive[] =
{
	WM_ACTION_CULTIVE,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+2,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_FIX,			-2,0,
		GOAL_REPEAT,		true,
		GOAL_OTHERFIX,		CHFLOOR,1,1,19,32, WM_ACTION_CULTIVE2,
		GOAL_TERM,
	0
};

static short table_goal_cultive2[] =
{
	WM_ACTION_CULTIVE2,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_BUILDFLOOR,	-1,-1, CHFLOOR,57, CHMASK1,0, 16,6,1*100,  // terre
		GOAL_ACTION,		ACTION_BECHE, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_BECHE, DIRECT_E,
		GOAL_FINISHMOVE,

		GOAL_BUILDOBJECT,	0,-1, CHOBJECT,57, -1,-1, DIMOBJY,1,1*100,
		GOAL_ACTION,		ACTION_ARROSE, DIRECT_E,
		GOAL_ACTION,		ACTION_ARROSE, DIRECT_E,
		GOAL_FINISHMOVE,

		GOAL_BUILDOBJECT,	0,-1, CHOBJECT,58, -1,-1, DIMOBJY,1,1*100,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_ARROSE, DIRECT_E,
		GOAL_ACTION,		ACTION_ARROSE, DIRECT_E,
		GOAL_FINISHMOVE,

		GOAL_BUILDOBJECT,	0,0, CHOBJECT,59, -1,-1, DIMOBJY,1,1*100,
		GOAL_ACTION,		ACTION_BECHE, DIRECT_E,
		GOAL_ACTION,		ACTION_BECHE, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_FINISHMOVE,

		GOAL_BUILDOBJECT,	0,-1, CHOBJECT,60, -1,-1, DIMOBJY,1,-1*100,
		GOAL_ACTION,		ACTION_ARROSE, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_ARROSE, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_FINISHMOVE,

		GOAL_BUILDFLOOR,	0,-1, CHFLOOR,1, CHMASK1,0, 16,1,1*100,  // herbe
		GOAL_FINISHMOVE,

		GOAL_OTHERFIX,		CHFLOOR,1,1,19,32, WM_ACTION_CULTIVE2,
		GOAL_TERM,
	0
};

// Bouffe des tomates (est).
static short table_goal_mange[] =
{
	WM_ACTION_MANGE,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	0,-1, CHOBJECT,60,  // tomates ?
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, -1,-1, -1,-1, DIMOBJY,1,-1*100,
		GOAL_ACTION,		ACTION_MANGE, DIRECT_E,
		GOAL_ACTION,		ACTION_MANGE, DIRECT_E,
		GOAL_ACTION,		ACTION_MANGE, DIRECT_E,

		GOAL_GROUP,			2,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	0,-1, -1,-1,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// Bouffe des tomates (sud).
static short table_goal_mange2[] =
{
	WM_ACTION_MANGE2,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_S,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	-1,0, CHOBJECT,60,  // tomates ?
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, -1,-1, -1,-1, DIMOBJY,1,-1*100,
		GOAL_ACTION,		ACTION_MANGE, DIRECT_E,
		GOAL_ACTION,		ACTION_MANGE, DIRECT_E,
		GOAL_ACTION,		ACTION_MANGE, DIRECT_E,

		GOAL_GROUP,			2,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-1,0, -1,-1,
		GOAL_ACTION,		ACTION_STOP, DIRECT_S,
		GOAL_TERM,
	0
};

// Boit � la bouteille (est).
static short table_goal_boit[] =
{
	WM_ACTION_BOIT,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			5,
		 GOAL_TESTOBJECT,	0,-1, CHOBJECT,80,  // bouteille ?
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_PUTOBJECT,	0,-1, -1,-1,
		 GOAL_ACTION,		ACTION_BOIT, DIRECT_E,
		GOAL_ACTION,		ACTION_BOIT, DIRECT_E,
		GOAL_ACTION,		ACTION_BOIT, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// Boit � la bouteille (sud).
static short table_goal_boit2[] =
{
	WM_ACTION_BOIT2,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_S,
		GOAL_GROUP,			5,
		 GOAL_TESTOBJECT,	-1,0, CHOBJECT,80,  // bouteille ?
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_PUTOBJECT,	-1,0, -1,-1,
		 GOAL_ACTION,		ACTION_BOIT, DIRECT_E,
		GOAL_ACTION,		ACTION_BOIT, DIRECT_E,
		GOAL_ACTION,		ACTION_BOIT, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_S,
		GOAL_TERM,
	0
};

// Cueille des fleurs.
static short table_goal_fleur1[] =
{
	WM_ACTION_FLEUR1,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, true,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	0,-1, CHOBJECT,81,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,82, -1,-1, DIMOBJY+20,1,-1*100,
		GOAL_SOUND,			SOUND_FLEUR,
		GOAL_ACTION,		ACTION_CUEILLE1, DIRECT_E,
		GOAL_ACTION,		ACTION_CUEILLE1, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_SOUND,			SOUND_FLEUR,
		GOAL_ACTION,		ACTION_CUEILLE1, DIRECT_S,
		GOAL_ACTION,		ACTION_CUEILLE1, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_SOUND,			SOUND_FLEUR,
		GOAL_ACTION,		ACTION_CUEILLE1, DIRECT_S,
		GOAL_ACTION,		ACTION_CUEILLE1, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,81,81,-1,-1, WM_ACTION_FLEUR1,
		GOAL_TERM,
	0
};

// Cueille des fleurs.
static short table_goal_fleur2[] =
{
	WM_ACTION_FLEUR2,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, true,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	0,-1, CHOBJECT,83,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,84, -1,-1, DIMOBJY+20,1,-1*100,
		GOAL_SOUND,			SOUND_FLEUR,
		GOAL_ACTION,		ACTION_CUEILLE2, DIRECT_E,
		GOAL_ACTION,		ACTION_CUEILLE2, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_SOUND,			SOUND_FLEUR,
		GOAL_ACTION,		ACTION_CUEILLE2, DIRECT_S,
		GOAL_ACTION,		ACTION_CUEILLE2, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_SOUND,			SOUND_FLEUR,
		GOAL_ACTION,		ACTION_CUEILLE2, DIRECT_S,
		GOAL_ACTION,		ACTION_CUEILLE2, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,83,83,-1,-1, WM_ACTION_FLEUR2,
		GOAL_TERM,
	0
};

// Cueille des fleurs.
static short table_goal_fleur3[] =
{
	WM_ACTION_FLEUR3,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, true,
		GOAL_GROUP,			4,
		 GOAL_TESTOBJECT,	0,-1, CHOBJECT,94,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,95, -1,-1, DIMOBJY+20,1,-1*100,
		GOAL_SOUND,			SOUND_FLEUR,
		GOAL_ACTION,		ACTION_CUEILLE3, DIRECT_E,
		GOAL_ACTION,		ACTION_CUEILLE3, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_SOUND,			SOUND_FLEUR,
		GOAL_ACTION,		ACTION_CUEILLE3, DIRECT_S,
		GOAL_ACTION,		ACTION_CUEILLE3, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_SOUND,			SOUND_FLEUR,
		GOAL_ACTION,		ACTION_CUEILLE3, DIRECT_S,
		GOAL_ACTION,		ACTION_CUEILLE3, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_OTHER,			CHOBJECT,94,94,-1,-1, WM_ACTION_FLEUR3,
		GOAL_TERM,
	0
};

// Transforme des fleurs.
static short table_goal_labo[] =
{
	WM_ACTION_LABO,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			6,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,29,  // ferme la porte
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,29, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,-1, 10,  // secoue
		 GOAL_CACHE,		true, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_O,
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			4,
		 GOAL_LABO,			
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,28,  // ouvre la porte
		 GOAL_CACHE,		false, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_IFTERM,		0,-1,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// Blupi fait p�ter la dynamite.
static short table_goal_dynamite[] =
{
	WM_ACTION_DYNAMITE,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			5,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_PUTOBJECT,	0,-1, -1,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,-1, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDICONS,		0,-1, 7,  // m�che
		GOAL_ACTION,		ACTION_MECHE, DIRECT_E,
		GOAL_SOUND,			SOUND_DYNAMITE,
		GOAL_GROUP,			4,
		 GOAL_PUTOBJECT,	0,-1, -1,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,-1, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDICONS,		0,-1, 6,  // explosion
		 GOAL_CACHE,		true, true,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			4+4,
		 GOAL_EXPLOSE1,		 0,-3,
		 GOAL_EXPLOSE1,		-2,-1,
		 GOAL_EXPLOSE1,		+2,-1,
		 GOAL_EXPLOSE1,		 0,+1,
		 GOAL_EXPLOSE2,		 0,-3,
		 GOAL_EXPLOSE2,		-2,-1,
		 GOAL_EXPLOSE2,		+2,-1,
		 GOAL_EXPLOSE2,		 0,+1,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			4+4,
		 GOAL_EXPLOSE1,		-2,-3,
		 GOAL_EXPLOSE1,		+2,-3,
		 GOAL_EXPLOSE1,		-2,+1,
		 GOAL_EXPLOSE1,		+2,+1,
		 GOAL_EXPLOSE2,		-2,-3,
		 GOAL_EXPLOSE2,		+2,-3,
		 GOAL_EXPLOSE2,		-2,+1,
		 GOAL_EXPLOSE2,		+2,+1,
		GOAL_ACTION,		ACTION_DYNAMITE, DIRECT_E,
		GOAL_GROUP,			3,
		 GOAL_FINISHMOVE,
		 GOAL_CACHE,		false, true,
		 GOAL_DELETE,		// blupi meurt brutalement
		GOAL_TERM,
	0
};

// Blupi fait p�ter la dynamite tr�s fort.
static short table_goal_dynamite2[] =
{
	WM_ACTION_DYNAMITE2,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
//?		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			5,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		 GOAL_PUTOBJECT,	0,-1, -1,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,-1, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDICONS,		0,-1, 7,  // m�che
		GOAL_ACTION,		ACTION_MECHE, DIRECT_E,
		GOAL_SOUND,			SOUND_DYNAMITE,
		GOAL_GROUP,			5,
		 GOAL_PUTOBJECT,	0,-1, -1,-1,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,-1, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDICONS,		0,-1, 6,  // explosion
		 GOAL_CACHE,		true, true,
		 GOAL_DEPOSE,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			4+4,
		 GOAL_EXPLOSE1,		 0,-3,
		 GOAL_EXPLOSE1,		-2,-1,
		 GOAL_EXPLOSE1,		+2,-1,
		 GOAL_EXPLOSE1,		 0,+1,
		 GOAL_EXPLOSE2,		 0,-3,
		 GOAL_EXPLOSE2,		-2,-1,
		 GOAL_EXPLOSE2,		+2,-1,
		 GOAL_EXPLOSE2,		 0,+1,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			4+4,
		 GOAL_EXPLOSE1,		-2,-3,
		 GOAL_EXPLOSE1,		+2,-3,
		 GOAL_EXPLOSE1,		-2,+1,
		 GOAL_EXPLOSE1,		+2,+1,
		 GOAL_EXPLOSE2,		-2,-3,
		 GOAL_EXPLOSE2,		+2,-3,
		 GOAL_EXPLOSE2,		-2,+1,
		 GOAL_EXPLOSE2,		+2,+1,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			12+12,
		 GOAL_EXPLOSE1,		-4,-3,
		 GOAL_EXPLOSE1,		-4,-1,
		 GOAL_EXPLOSE1,		-4,+1,
		 GOAL_EXPLOSE1,		-2,-5,
		 GOAL_EXPLOSE1,		-2,+3,
		 GOAL_EXPLOSE1,		 0,-5,
		 GOAL_EXPLOSE1,		 0,+3,
		 GOAL_EXPLOSE1,		+2,-5,
		 GOAL_EXPLOSE1,		+2,+3,
		 GOAL_EXPLOSE1,		+4,-3,
		 GOAL_EXPLOSE1,		+4,-1,
		 GOAL_EXPLOSE1,		+4,+1,
		 GOAL_EXPLOSE2,		-4,-3,
		 GOAL_EXPLOSE2,		-4,-1,
		 GOAL_EXPLOSE2,		-4,+1,
		 GOAL_EXPLOSE2,		-2,-5,
		 GOAL_EXPLOSE2,		-2,+3,
		 GOAL_EXPLOSE2,		 0,-5,
		 GOAL_EXPLOSE2,		 0,+3,
		 GOAL_EXPLOSE2,		+2,-5,
		 GOAL_EXPLOSE2,		+2,+3,
		 GOAL_EXPLOSE2,		+4,-3,
		 GOAL_EXPLOSE2,		+4,-1,
		 GOAL_EXPLOSE2,		+4,+1,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			16+16,
		 GOAL_EXPLOSE1,		-6,-3,
		 GOAL_EXPLOSE1,		-6,-1,
		 GOAL_EXPLOSE1,		-6,+1,
		 GOAL_EXPLOSE1,		-4,-5,
		 GOAL_EXPLOSE1,		-4,+3,
		 GOAL_EXPLOSE1,		-2,-7,
		 GOAL_EXPLOSE1,		-2,+5,
		 GOAL_EXPLOSE1,		 0,-7,
		 GOAL_EXPLOSE1,		 0,+5,
		 GOAL_EXPLOSE1,		+2,-7,
		 GOAL_EXPLOSE1,		+2,+5,
		 GOAL_EXPLOSE1,		+4,-5,
		 GOAL_EXPLOSE1,		+4,+3,
		 GOAL_EXPLOSE1,		+6,-3,
		 GOAL_EXPLOSE1,		+6,-1,
		 GOAL_EXPLOSE1,		+6,+1,
		 GOAL_EXPLOSE2,		-6,-3,
		 GOAL_EXPLOSE2,		-6,-1,
		 GOAL_EXPLOSE2,		-6,+1,
		 GOAL_EXPLOSE2,		-4,-5,
		 GOAL_EXPLOSE2,		-4,+3,
		 GOAL_EXPLOSE2,		-2,-7,
		 GOAL_EXPLOSE2,		-2,+5,
		 GOAL_EXPLOSE2,		 0,-7,
		 GOAL_EXPLOSE2,		 0,+5,
		 GOAL_EXPLOSE2,		+2,-7,
		 GOAL_EXPLOSE2,		+2,+5,
		 GOAL_EXPLOSE2,		+4,-5,
		 GOAL_EXPLOSE2,		+4,+3,
		 GOAL_EXPLOSE2,		+6,-3,
		 GOAL_EXPLOSE2,		+6,-1,
		 GOAL_EXPLOSE2,		+6,+1,
		GOAL_ACTION,		ACTION_DYNAMITE, DIRECT_E,
		GOAL_GROUP,			3,
		 GOAL_FINISHMOVE,
		 GOAL_CACHE,		false, true,
		 GOAL_DELETE,		// blupi meurt brutalement
		GOAL_TERM,
	0
};

// Tracks fait p�ter la dynamite.
static short table_goal_t_dynamite[] =
{
	WM_ACTION_T_DYNAMITE,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_SOUND,			SOUND_DYNAMITE,
		GOAL_GROUP,			6,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_PUTOBJECT,	-1,-1, -1,-1,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,-1, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDICONS,		-1,-1, 6,  // explosion
		 GOAL_CACHE,		true, false,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			4+4,
		 GOAL_EXPLOSE1,		-1,-3,
		 GOAL_EXPLOSE1,		-3,-1,
		 GOAL_EXPLOSE1,		+1,-1,
		 GOAL_EXPLOSE1,		-1,+1,
		 GOAL_EXPLOSE2,		-1,-3,
		 GOAL_EXPLOSE2,		-3,-1,
		 GOAL_EXPLOSE2,		+1,-1,
		 GOAL_EXPLOSE2,		-1,+1,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			4+4,
		 GOAL_EXPLOSE1,		-3,-3,
		 GOAL_EXPLOSE1,		+1,-3,
		 GOAL_EXPLOSE1,		-3,+1,
		 GOAL_EXPLOSE1,		+1,+1,
		 GOAL_EXPLOSE2,		-3,-3,
		 GOAL_EXPLOSE2,		+1,-3,
		 GOAL_EXPLOSE2,		-3,+1,
		 GOAL_EXPLOSE2,		+1,+1,
		GOAL_ACTION,		ACTION_DYNAMITE, DIRECT_E,
		GOAL_GROUP,			3,
		 GOAL_FINISHMOVE,
		 GOAL_CACHE,		false, false,
		 GOAL_DELETE,		// tracks meurt brutalement
		GOAL_TERM,
	0
};

// Blupi amorce une mine.
static short table_goal_mine[] =
{
	WM_ACTION_MINE,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_TESTOBJECT,	0,-1, CHOBJECT,125,  // mine ?
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		GOAL_ACTION,		ACTION_MECHE, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_TESTOBJECT,	0,-1, CHOBJECT,125,  // mine ?
		 GOAL_AMORCE,		+1,0,
		GOAL_TERM,
	0
};

// D�tonnateur de mine cr�� par GOAL_AMORCE (blupi invisible).
static short table_goal_mine2[] =
{
	WM_ACTION_MINE2,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,127,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+10, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,125,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+9, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,127,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+8, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,125,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+7, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,127,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+6, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,125,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+5, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,127,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+4, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,125,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+3, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,127,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+2, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,
		GOAL_PUTOBJECT,		-1,-1, CHOBJECT,125,
		GOAL_BUILDOBJECT,	-1,-1, -1,MOVEICONNB+1, -1,-1, 100,1,-1*100,
		GOAL_SOUND,			SOUND_CLICK,
		GOAL_ACTION,		ACTION_D_DELAY, DIRECT_E,

		GOAL_SOUND,			SOUND_DYNAMITE,
		GOAL_GROUP,			4,
		 GOAL_PUTOBJECT,	-1,-1, -1,-1,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,-1, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDICONS,		-1,-1, 6,  // explosion
		 GOAL_CACHE,		true, false,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			4+4,
		 GOAL_EXPLOSE1,		-1,-3,
		 GOAL_EXPLOSE1,		-3,-1,
		 GOAL_EXPLOSE1,		+1,-1,
		 GOAL_EXPLOSE1,		-1,+1,
		 GOAL_EXPLOSE2,		-1,-3,
		 GOAL_EXPLOSE2,		-3,-1,
		 GOAL_EXPLOSE2,		+1,-1,
		 GOAL_EXPLOSE2,		-1,+1,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			4+4,
		 GOAL_EXPLOSE1,		-3,-3,
		 GOAL_EXPLOSE1,		+1,-3,
		 GOAL_EXPLOSE1,		-3,+1,
		 GOAL_EXPLOSE1,		+1,+1,
		 GOAL_EXPLOSE2,		-3,-3,
		 GOAL_EXPLOSE2,		+1,-3,
		 GOAL_EXPLOSE2,		-3,+1,
		 GOAL_EXPLOSE2,		+1,+1,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			12+12,
		 GOAL_EXPLOSE1,		-5,-3,
		 GOAL_EXPLOSE1,		-5,-1,
		 GOAL_EXPLOSE1,		-5,+1,
		 GOAL_EXPLOSE1,		-3,-5,
		 GOAL_EXPLOSE1,		-3,+3,
		 GOAL_EXPLOSE1,		-1,-5,
		 GOAL_EXPLOSE1,		-1,+3,
		 GOAL_EXPLOSE1,		+1,-5,
		 GOAL_EXPLOSE1,		+1,+3,
		 GOAL_EXPLOSE1,		+3,-3,
		 GOAL_EXPLOSE1,		+3,-1,
		 GOAL_EXPLOSE1,		+3,+1,
		 GOAL_EXPLOSE2,		-5,-3,
		 GOAL_EXPLOSE2,		-5,-1,
		 GOAL_EXPLOSE2,		-5,+1,
		 GOAL_EXPLOSE2,		-3,-5,
		 GOAL_EXPLOSE2,		-3,+3,
		 GOAL_EXPLOSE2,		-1,-5,
		 GOAL_EXPLOSE2,		-1,+3,
		 GOAL_EXPLOSE2,		+1,-5,
		 GOAL_EXPLOSE2,		+1,+3,
		 GOAL_EXPLOSE2,		+3,-3,
		 GOAL_EXPLOSE2,		+3,-1,
		 GOAL_EXPLOSE2,		+3,+1,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_DELAY, DIRECT_E,
		GOAL_GROUP,			16+16,
		 GOAL_EXPLOSE1,		-7,-3,
		 GOAL_EXPLOSE1,		-7,-1,
		 GOAL_EXPLOSE1,		-7,+1,
		 GOAL_EXPLOSE1,		-5,-5,
		 GOAL_EXPLOSE1,		-5,+3,
		 GOAL_EXPLOSE1,		-3,-7,
		 GOAL_EXPLOSE1,		-3,+5,
		 GOAL_EXPLOSE1,		-1,-7,
		 GOAL_EXPLOSE1,		-1,+5,
		 GOAL_EXPLOSE1,		+1,-7,
		 GOAL_EXPLOSE1,		+1,+5,
		 GOAL_EXPLOSE1,		+3,-5,
		 GOAL_EXPLOSE1,		+3,+3,
		 GOAL_EXPLOSE1,		+5,-3,
		 GOAL_EXPLOSE1,		+5,-1,
		 GOAL_EXPLOSE1,		+5,+1,
		 GOAL_EXPLOSE2,		-7,-3,
		 GOAL_EXPLOSE2,		-7,-1,
		 GOAL_EXPLOSE2,		-7,+1,
		 GOAL_EXPLOSE2,		-5,-5,
		 GOAL_EXPLOSE2,		-5,+3,
		 GOAL_EXPLOSE2,		-3,-7,
		 GOAL_EXPLOSE2,		-3,+5,
		 GOAL_EXPLOSE2,		-1,-7,
		 GOAL_EXPLOSE2,		-1,+5,
		 GOAL_EXPLOSE2,		+1,-7,
		 GOAL_EXPLOSE2,		+1,+5,
		 GOAL_EXPLOSE2,		+3,-5,
		 GOAL_EXPLOSE2,		+3,+3,
		 GOAL_EXPLOSE2,		+5,-3,
		 GOAL_EXPLOSE2,		+5,-1,
		 GOAL_EXPLOSE2,		+5,+1,
		GOAL_ACTION,		ACTION_DYNAMITE, DIRECT_E,
		GOAL_GROUP,			3,
		 GOAL_FINISHMOVE,
		 GOAL_CACHE,		false, false,
		 GOAL_DELETE,		// blupi meurt brutalement
		GOAL_TERM,
	0
};

// Construit un pont en direction de l'est.
static short table_goal_ponte[] =
{
	WM_ACTION_PONTE,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,72, -1,-1, DIMOBJY/10,12,-10*100,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		-1,+1, true,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_OTHERLOOP,		WM_ACTION_PONTEL,
		GOAL_TERM,
	0
};

static short table_goal_pontel[] =
{
	WM_ACTION_PONTEL,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_BUILDOBJECT,	-10,-10, CHOBJECT,72, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-10,-10, 6,  // pont vers l'est
		GOAL_ACTION,		ACTION_PONT, DIRECT_E,
		GOAL_GROUP,			4,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-10,-10, -1,-1,
		 GOAL_NEXTLOOP,
		 GOAL_PUTOBJECT,	-10,-10, CHOBJECT,72,
		GOAL_OTHERLOOP,		WM_ACTION_PONTEL,

		GOAL_GROUP,			3,
		 GOAL_PUTOBJECT,	-10,-10, -1,-1,
		 GOAL_PUTFLOOR,		-10,-10, CHFLOOR,-2,  // vIcon
		 GOAL_SOUND,		SOUND_PLOUF,
//?		GOAL_ACTION,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// Construit un pont en direction de l'ouest.
static short table_goal_ponto[] =
{
	WM_ACTION_PONTO,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,72, -1,-1, DIMOBJY/10,12,-10*100,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		-1,+1, true,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_OTHERLOOP,		WM_ACTION_PONTOL,
		GOAL_TERM,
	0
};

static short table_goal_pontol[] =
{
	WM_ACTION_PONTOL,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_BUILDOBJECT,	-10,-10, CHOBJECT,72, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-10,-10, 7,  // pont vers l'ouest
		GOAL_ACTION,		ACTION_PONT, DIRECT_O,
		GOAL_GROUP,			4,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-10,-10, -1,-1,
		 GOAL_NEXTLOOP,
		 GOAL_PUTOBJECT,	-10,-10, CHOBJECT,72,
		GOAL_OTHERLOOP,		WM_ACTION_PONTOL,

		GOAL_GROUP,			3,
		 GOAL_PUTOBJECT,	-10,-10, -1,-1,
		 GOAL_PUTFLOOR,		-10,-10, CHFLOOR,-2,  // vIcon
		 GOAL_SOUND,		SOUND_PLOUF,
//?		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_O,
		GOAL_TERM,
	0
};

// Construit un pont en direction du sud.
static short table_goal_ponts[] =
{
	WM_ACTION_PONTS,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,73, -1,-1, DIMOBJY/10,12,-10*100,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_OTHERLOOP,		WM_ACTION_PONTSL,
		GOAL_TERM,
	0
};

static short table_goal_pontsl[] =
{
	WM_ACTION_PONTSL,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_BUILDOBJECT,	-10,-10, CHOBJECT,73, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-10,-10, 8,  // pont vers le sud
		GOAL_ACTION,		ACTION_PONT, DIRECT_S,
		GOAL_GROUP,			4,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-10,-10, -1,-1,
		 GOAL_NEXTLOOP,
		 GOAL_PUTOBJECT,	-10,-10, CHOBJECT,73,
		GOAL_OTHERLOOP,		WM_ACTION_PONTSL,

		GOAL_GROUP,			3,
		 GOAL_PUTOBJECT,	-10,-10, -1,-1,
		 GOAL_PUTFLOOR,		-10,-10, CHFLOOR,-2,  // vIcon
		 GOAL_SOUND,		SOUND_PLOUF,
//?		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_S,
		GOAL_TERM,
	0
};

// Construit un pont en direction du nord.
static short table_goal_pontn[] =
{
	WM_ACTION_PONTN,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,73, -1,-1, DIMOBJY/10,12,-10*100,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_OTHERLOOP,		WM_ACTION_PONTNL,
		GOAL_TERM,
	0
};

static short table_goal_pontnl[] =
{
	WM_ACTION_PONTNL,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_BUILDOBJECT,	-10,-10, CHOBJECT,73, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-10,-10, 9,  // pont vers le nord
		GOAL_ACTION,		ACTION_PONT, DIRECT_N,
		GOAL_GROUP,			4,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-10,-10, -1,-1,
		 GOAL_NEXTLOOP,
		 GOAL_PUTOBJECT,	-10,-10, CHOBJECT,73,
		GOAL_OTHERLOOP,		WM_ACTION_PONTNL,

		GOAL_GROUP,			3,
		 GOAL_PUTOBJECT,	-10,-10, -1,-1,
		 GOAL_PUTFLOOR,		-10,-10, CHFLOOR,-2,  // vIcon
		 GOAL_SOUND,		SOUND_PLOUF,
//?		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_TERM,
	0
};

// Construit un bateau.
static short table_goal_bateaue[] =
{
	WM_ACTION_BATEAUE,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,117, -1,-1, DIMOBJY/10,20,-10*100,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		-1,+1, true,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_FINISHMOVE,

		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,117, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,0, 6,  // bateau vers l'est
		GOAL_ACTION,		ACTION_PONT, DIRECT_E,
		GOAL_GROUP,			4,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-1,0, -1,-1,
		 GOAL_PUTOBJECT,	+1,0, CHOBJECT,117,
		 GOAL_SOUND,		SOUND_PLOUF,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

static short table_goal_bateaus[] =
{
	WM_ACTION_BATEAUS,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,117, -1,-1, DIMOBJY/10,20,-10*100,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		-1,+1, true,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_FINISHMOVE,

		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,117, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 8,  // bateau vers le sud
		GOAL_ACTION,		ACTION_PONT, DIRECT_S,
		GOAL_GROUP,			4,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	0,-1, -1,-1,
		 GOAL_PUTOBJECT,	0,+1, CHOBJECT,117,
		 GOAL_SOUND,		SOUND_PLOUF,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

static short table_goal_bateauo[] =
{
	WM_ACTION_BATEAUO,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,117, -1,-1, DIMOBJY/10,20,-10*100,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		-1,+1, true,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_FINISHMOVE,

		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,117, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,0, 7,  // bateau vers l'ouest
		GOAL_ACTION,		ACTION_PONT, DIRECT_O,
		GOAL_GROUP,			4,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-1,0, -1,-1,
		 GOAL_PUTOBJECT,	-3,0, CHOBJECT,117,
		 GOAL_SOUND,		SOUND_PLOUF,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

static short table_goal_bateaun[] =
{
	WM_ACTION_BATEAUN,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GROUP,			3,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		 GOAL_BUILDOBJECT,	-1,0, CHOBJECT,117, -1,-1, DIMOBJY/10,20,-10*100,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_ACTION,		ACTION_SCIE, DIRECT_S,
		GOAL_GOBLUPI,		-1,+1, true,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_FINISHMOVE,

		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,117, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 9,  // bateau vers le nord
		GOAL_ACTION,		ACTION_PONT, DIRECT_N,
		GOAL_GROUP,			4,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	0,-1, -1,-1,
		 GOAL_PUTOBJECT,	0,-3, CHOBJECT,117,
		 GOAL_SOUND,		SOUND_PLOUF,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// D�part en bateau.
static short table_goal_bateaude[] =
{
	WM_ACTION_BATEAUDE,
		GOAL_ISNOMALADE,
		GOAL_GOHILI2,		+1,+1, true,
		GOAL_ISNOMALADE,
		GOAL_GROUP,			3,
		 GOAL_TESTOBJECT,	+1,-1, CHOBJECT,117,
		 GOAL_INTERRUPT,	-1,  // passe muraille
		 GOAL_WORK,			+1,-1,
		GOAL_GOBLUPI,		+2,0, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, -1,-1,  // enl�ve le bateau
		 GOAL_VEHICULE,		1,  // en bateau
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_TERM,
	0
};

static short table_goal_bateauds[] =
{
	WM_ACTION_BATEAUDS,
		GOAL_ISNOMALADE,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ISNOMALADE,
		GOAL_GROUP,			3,
		 GOAL_TESTOBJECT,	-1,+1, CHOBJECT,117,
		 GOAL_INTERRUPT,	-1,  // passe muraille
		 GOAL_WORK,			-1,+1,
		GOAL_GOBLUPI,		0,+2, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, -1,-1,  // enl�ve le bateau
		 GOAL_VEHICULE,		1,  // en bateau
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_TERM,
	0
};

static short table_goal_bateaudo[] =
{
	WM_ACTION_BATEAUDO,
		GOAL_ISNOMALADE,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ISNOMALADE,
		GOAL_GROUP,			3,
		 GOAL_TESTOBJECT,	-2,-1, CHOBJECT,117,
		 GOAL_INTERRUPT,	-1,  // passe muraille
		 GOAL_WORK,			-2,-1,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, -1,-1,  // enl�ve le bateau
		 GOAL_VEHICULE,		1,  // en bateau
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_TERM,
	0
};

static short table_goal_bateaudn[] =
{
	WM_ACTION_BATEAUDN,
		GOAL_ISNOMALADE,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ISNOMALADE,
		GOAL_GROUP,			3,
		 GOAL_TESTOBJECT,	-1,-2, CHOBJECT,117,
		 GOAL_INTERRUPT,	-1,  // passe muraille
		 GOAL_WORK,			-1,-2,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, -1,-1,  // enl�ve le bateau
		 GOAL_VEHICULE,		1,  // en bateau
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_TERM,
	0
};

// Arriv�e en bateau.
static short table_goal_bateauae[] =
{
	WM_ACTION_BATEAUAE,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_GROUP,			4,
		 GOAL_IFDEBARQUE,	-3,0,
		 GOAL_INTERRUPT,	-1,  // passe muraille
		 GOAL_WORK,			-2,-1,
		 GOAL_WORK,			-4,-1,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,117,  // remet le bateau
		 GOAL_VEHICULE,		0,  // � pied
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GOBLUPI,		-2,0, true,
		GOAL_TERM,
	0
};

static short table_goal_bateauas[] =
{
	WM_ACTION_BATEAUAS,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_GROUP,			4,
		 GOAL_IFDEBARQUE,	0,-3,
		 GOAL_INTERRUPT,	-1,  // passe muraille
		 GOAL_WORK,			-1,-2,
		 GOAL_WORK,			-1,-4,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,117,  // remet le bateau
		 GOAL_VEHICULE,		0,  // � pied
		GOAL_GOBLUPI,		0,-2, true,
		GOAL_TERM,
	0
};

static short table_goal_bateauao[] =
{
	WM_ACTION_BATEAUAO,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_GROUP,			4,
		 GOAL_IFDEBARQUE,	+2,0,
		 GOAL_INTERRUPT,	-1,  // passe muraille
		 GOAL_WORK,			0,-1,
		 GOAL_WORK,			+2,-1,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,117,  // remet le bateau
		 GOAL_VEHICULE,		0,  // � pied
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_TERM,
	0
};

static short table_goal_bateauan[] =
{
	WM_ACTION_BATEAUAN,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_GROUP,			4,
		 GOAL_IFDEBARQUE,	0,+2,
		 GOAL_INTERRUPT,	-1,  // passe muraille
		 GOAL_WORK,			-1,0,
		 GOAL_WORK,			-1,+2,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,117,  // remet le bateau
		 GOAL_VEHICULE,		0,  // � pied
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_TERM,
	0
};

// Le robot construit une station de recharge.
static short table_goal_r_build1[] =
{
	WM_ACTION_R_BUILD1,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_GROUP,			3,
		 GOAL_USINEBUILD,	-1,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		GOAL_BUILDFLOOR,	-1,-1, CHFLOOR,67, CHMASK1,0, 16,14,1*100,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,99, -1,-1, DIMOBJY/4,20,4*100,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_O,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_N,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Le robot construit une usine � araign�es.
static short table_goal_r_build2[] =
{
	WM_ACTION_R_BUILD2,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_GROUP,			3,
		 GOAL_USINEBUILD,	-1,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		GOAL_BUILDFLOOR,	-1,-1, CHFLOOR,67, CHMASK1,0, 16,14,1*100,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,100, -1,-1, DIMOBJY/4,20,4*100,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_N,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_O,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Le robot construit une usine � virus.
static short table_goal_r_build3[] =
{
	WM_ACTION_R_BUILD3,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_GROUP,			3,
		 GOAL_USINEBUILD,	-1,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		GOAL_BUILDFLOOR,	-1,-1, CHFLOOR,67, CHMASK1,0, 16,14,1*100,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,102, -1,-1, DIMOBJY/4,20,4*100,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_O,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_N,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Le robot construit une usine � tracks.
static short table_goal_r_build4[] =
{
	WM_ACTION_R_BUILD4,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_GROUP,			3,
		 GOAL_USINEBUILD,	-1,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		GOAL_BUILDFLOOR,	-1,-1, CHFLOOR,67, CHMASK1,0, 16,14,1*100,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,104, -1,-1, DIMOBJY/4,20,4*100,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_O,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_N,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Le robot construit une usine � bombe.
static short table_goal_r_build5[] =
{
	WM_ACTION_R_BUILD5,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_GROUP,			3,
		 GOAL_USINEBUILD,	-1,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		GOAL_BUILDFLOOR,	-1,-1, CHFLOOR,67, CHMASK1,0, 16,14,1*100,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,115, -1,-1, DIMOBJY/4,20,4*100,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_O,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_N,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Le robot construit une usine � �lectro.
static short table_goal_r_build6[] =
{
	WM_ACTION_R_BUILD6,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_GROUP,			3,
		 GOAL_USINEBUILD,	-1,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		GOAL_BUILDFLOOR,	-1,-1, CHFLOOR,67, CHMASK1,0, 16,14,1*100,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_E,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,17, -1,-1, DIMOBJY/4,20,4*100,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_O,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_APLAT, DIRECT_N,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_E,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_S,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Le robot se recharge.
static short table_goal_r_make1[] =
{
	WM_ACTION_R_MAKE1,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_GROUP,			2,
		 GOAL_USINEFREE,	-1,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_ACTION,		ACTION_R_CHARGE, DIRECT_O,
		GOAL_ACTION,		ACTION_R_CHARGE, DIRECT_O,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_O,
		GOAL_ACTION,		ACTION_R_CHARGE, DIRECT_O,
		GOAL_ACTION,		ACTION_R_CHARGE, DIRECT_O,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_O,
		GOAL_ACTION,		ACTION_R_CHARGE, DIRECT_O,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_O,
		GOAL_ACTION,		ACTION_R_CHARGE, DIRECT_O,
		GOAL_ACTION,		ACTION_R_CHARGE, DIRECT_O,
		GOAL_ACTION,		ACTION_R_BUILD, DIRECT_O,
		GOAL_TERM,
	0
};

// Le robot construit une araign�e.
static short table_goal_r_make2[] =
{
	WM_ACTION_R_MAKE2,
		GOAL_GOHILI2,		+2,+1, false,
		GOAL_GROUP,			2,
		 GOAL_USINEFREE,	-2,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,101,  // ouvre la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,100,  // ferme la porte
		 GOAL_CACHE,		true, false,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,100, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,100, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		2,0,
		GOAL_WAITFREE,		3,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	0,-1, CHOBJECT,101,  // ouvre la porte
		GOAL_NEWPERSO,		+1,0, 1,  // araign�e (qui sortira)
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		0,-1, CHOBJECT,100,  // ferme la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		1,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_CACHE,		false, false,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,101,  // ouvre la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,100,  // ferme la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_TERM,
	0
};

// Le robot construit un virus.
static short table_goal_r_make3[] =
{
	WM_ACTION_R_MAKE3,
		GOAL_GOHILI2,		+2,+1, false,
		GOAL_GROUP,			2,
		 GOAL_USINEFREE,	-2,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,103,  // ouvre la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,102,  // ferme la porte
		 GOAL_CACHE,		true, false,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,102, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,102, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		2,0,
		GOAL_WAITFREE,		3,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	0,-1, CHOBJECT,103,  // ouvre la porte
		GOAL_NEWPERSO,		+1,0, 2,  // virus (qui sortira)
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		0,-1, CHOBJECT,102,  // ferme la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		1,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_CACHE,		false, false,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,103,  // ouvre la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,102,  // ferme la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_TERM,
	0
};

// Le robot construit un tracks.
static short table_goal_r_make4[] =
{
	WM_ACTION_R_MAKE4,
		GOAL_GOHILI2,		+2,+1, false,
		GOAL_GROUP,			2,
		 GOAL_USINEFREE,	-2,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,105,  // ouvre la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,104,  // ferme la porte
		 GOAL_CACHE,		true, false,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,104, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,104, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		2,0,
		GOAL_WAITFREE,		3,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	0,-1, CHOBJECT,105,  // ouvre la porte
		GOAL_NEWPERSO,		+1,0, 3,  // tracks (qui sortira)
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		0,-1, CHOBJECT,104,  // ferme la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		1,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_CACHE,		false, false,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,105,  // ouvre la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,104,  // ferme la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_TERM,
	0
};

// Le robot construit une bombe.
static short table_goal_r_make5[] =
{
	WM_ACTION_R_MAKE5,
		GOAL_GOHILI2,		+2,+1, false,
		GOAL_GROUP,			2,
		 GOAL_USINEFREE,	-2,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,116,  // ouvre la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,115,  // ferme la porte
		 GOAL_CACHE,		true, false,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,115, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,115, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		2,0,
		GOAL_WAITFREE,		3,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	0,-1, CHOBJECT,116,  // ouvre la porte
		GOAL_NEWPERSO,		+1,0, 5,  // bombe (qui sortira)
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		0,-1, CHOBJECT,115,  // ferme la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		1,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_CACHE,		false, false,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,116,  // ouvre la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,115,  // ferme la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_TERM,
	0
};

// Le robot construit un �lectro.
static short table_goal_r_make6[] =
{
	WM_ACTION_R_MAKE6,
		GOAL_GOHILI2,		+2,+1, false,
		GOAL_GROUP,			2,
		 GOAL_USINEFREE,	-2,-1,
		 GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,18,  // ouvre la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_O,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,17,  // ferme la porte
		 GOAL_CACHE,		true, false,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,17, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,17, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 10,  // secoue
		GOAL_SOUND,			SOUND_LABO,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		2,0,
		GOAL_WAITFREE,		3,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	0,-1, CHOBJECT,18,  // ouvre la porte
		GOAL_NEWPERSO,		+1,0, 7,  // �lectro (qui sortira)
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		0,-1, CHOBJECT,17,  // ferme la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_WAITFREE,		1,0,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_CACHE,		false, false,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,18,  // ouvre la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		-2,-1, CHOBJECT,17,  // ferme la porte
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_R_STOP, DIRECT_N,
		GOAL_TERM,
	0
};

// Blupi monte dans une jeep.
static short table_goal_mjeep[] =
{
	WM_ACTION_MJEEP,
		GOAL_ISNOMALADE,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ISNOMALADE,
		GOAL_GROUP,			3,
		 GOAL_TESTOBJECT,	-1,0, CHOBJECT,118,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		GOAL_ACTION,		ACTION_SAUTE1, DIRECT_S,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, -1,-1,  // enl�ve la jeep
		 GOAL_VEHICULE,		2,  // en jeep
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// Blupi descend de la jeep.
static short table_goal_djeep[] =
{
	WM_ACTION_DJEEP,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			5,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,118,  // remet la jeep
		 GOAL_VEHICULE,		0,  // � pied
		 GOAL_ACTUALISE,
		GOAL_ACTION,		ACTION_SAUTE1, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_TERM,
	0
};

// Blupi monte dans une armure.
static short table_goal_marmure[] =
{
	WM_ACTION_MARMURE,
		GOAL_ISNOMALADE,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_ISNOMALADE,
		GOAL_GROUP,			3,
		 GOAL_TESTOBJECT,	-1,0, CHOBJECT,16,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,0,
		GOAL_GOBLUPI,		0,+1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_PUTOBJECT,	-1,-1, -1,-1,  // enl�ve l'armure
		 GOAL_ACTION,		ACTION_ARMURECLOSE, DIRECT_E,
		GOAL_VEHICULE,		3,  // en armure
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// Blupi descend de l'armure.
static short table_goal_darmure[] =
{
	WM_ACTION_DARMURE,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_INTERRUPT,		0,  // prioritaire
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_ARMUREOPEN, DIRECT_E,
		GOAL_GROUP,			3,
		 GOAL_WORK,			-1,-1,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,16,  // remet l'armure
		 GOAL_VEHICULE,		0,  // � pied
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_TERM,
	0
};

// Blupi cherche o� planter des drapeaux.
static short table_goal_drapeau[] =
{
	WM_ACTION_DRAPEAU,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_FIX,			0,-1,
		GOAL_REPEAT,		true,
		GOAL_OTHERFIX,		CHFLOOR,33,48,71,71, WM_ACTION_DRAPEAU2,
		GOAL_TERM,
	0
};

static short table_goal_drapeau2[] =
{
	WM_ACTION_DRAPEAU2,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_ACTION,		ACTION_BUILD, DIRECT_S,
		GOAL_FLOORJUMP,		CHFLOOR,71, WM_ACTION_DRAPEAU3,
		GOAL_ADDDRAPEAU,	-1,0,

		GOAL_OTHERFIX,		CHFLOOR,33,48,71,71, WM_ACTION_DRAPEAU2,
		GOAL_TERM,
	0
};

// Plante un drapeau.
static short table_goal_drapeau3[] =
{
	WM_ACTION_DRAPEAU3,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			0,-1,
		GOAL_BUILDOBJECT,	0,-1, CHOBJECT,124, -1,-1, DIMOBJY/10,8,10*100,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_O,
		GOAL_GOBLUPI,		+1,-1, true,
		GOAL_ACTION,		ACTION_PIOCHESOURD, DIRECT_E,
		GOAL_ADDDRAPEAU,	-1,0,
		GOAL_FINISHMOVE,

//?		GOAL_OTHERFIX,		CHFLOOR,33,48,71,71, WM_ACTION_DRAPEAU2,
		GOAL_TERM,
	0
};

// Blupi extrait du fer.
static short table_goal_extrait[] =
{
	WM_ACTION_EXTRAIT,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			6,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,121,  // ferme la porte
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,121, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,-1, 11,  // secoue
		 GOAL_CACHE,		true, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_O,
		GOAL_SOUND,			SOUND_MINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,121, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,-1, 11,  // secoue
		GOAL_SOUND,			SOUND_MINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			4,
		 GOAL_TAKEOBJECT,	-1,-1, CHOBJECT,123,  // porte du fer
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,122,  // ouvre la porte
		 GOAL_CACHE,		false, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_IFTERM,		0,-1,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// Blupi fabrique une jeep.
static short table_goal_fabjeep[] =
{
	WM_ACTION_FABJEEP,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			6,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,119,  // ferme la porte
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,119, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,-1, 12,  // secoue
		 GOAL_CACHE,		true, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_O,
		GOAL_SOUND,			SOUND_USINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,119, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,-1, 12,  // secoue
		GOAL_SOUND,			SOUND_USINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			5,
		 GOAL_TAKEOBJECT,	-1,-1, -1,-1,  // ne porte plus rien
		 GOAL_VEHICULE,		2,  // en jeep
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,120,  // ouvre la porte
		 GOAL_CACHE,		false, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_IFTERM,		+1,0,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_TERM,
	0
};

// Blupi fabrique une armure.
static short table_goal_fabarmure[] =
{
	WM_ACTION_FABARMURE,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			6,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,119,  // ferme la porte
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,119, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,-1, 12,  // secoue
		 GOAL_CACHE,		true, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_O,
		GOAL_SOUND,			SOUND_USINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,119, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,-1, 12,  // secoue
		GOAL_SOUND,			SOUND_USINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			5,
		 GOAL_TAKEOBJECT,	-1,-1, -1,-1,  // ne porte plus rien
		 GOAL_VEHICULE,		3,  // en armure
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,120,  // ouvre la porte
		 GOAL_CACHE,		false, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_IFTERM,		+1,0,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_TERM,
	0
};

// Blupi fabrique une mine.
static short table_goal_fabmine[] =
{
	WM_ACTION_FABMINE,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			6,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,119,  // ferme la porte
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,119, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,-1, 12,  // secoue
		 GOAL_CACHE,		true, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_O,
		GOAL_SOUND,			SOUND_USINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	-1,-1, CHOBJECT,119, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		-1,-1, 12,  // secoue
		GOAL_SOUND,			SOUND_USINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			4,
		 GOAL_TAKEOBJECT,	-1,-1, CHOBJECT,125,  // porte une mine
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,120,  // ouvre la porte
		 GOAL_CACHE,		false, false,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_IFTERM,		0,-1,
		GOAL_GOBLUPI,		0,-1, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// Blupi fabrique un disciple.
static short table_goal_fabdisc[] =
{
	WM_ACTION_FABDISC,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_ENERGY,		MAXENERGY/4,
		GOAL_ACTION,		ACTION_STOP, DIRECT_N,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			4,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_WORK,			-1,-1,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,119,  // ferme la porte
		 GOAL_CACHE,		true, false,
		GOAL_GOBLUPI,		-1,0, true,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,119, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 12,  // secoue
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_O,
		GOAL_SOUND,			SOUND_USINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_GROUP,			2,
		 GOAL_BUILDOBJECT,	0,-1, CHOBJECT,119, -1,-1, DIMOBJY,1,-1*100,
		 GOAL_ADDMOVES,		0,-1, 12,  // secoue
		GOAL_SOUND,			SOUND_USINE,
		GOAL_ACTION,		ACTION_LABO, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			2,
		 GOAL_FINISHMOVE,
		 GOAL_PUTOBJECT,	0,-1, CHOBJECT,120,  // ouvre la porte
		GOAL_NEWPERSO,		+1,0, 8,  // disciple (qui sortira)
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_PUTOBJECT,		0,-1, CHOBJECT,119,  // ferme la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_ACTION,		ACTION_R_DELAY, DIRECT_E,
		GOAL_SOUND,			SOUND_PORTE,
		GOAL_GROUP,			3,
		 GOAL_TAKEOBJECT,	-1,-1, -1,-1,  // ne porte plus rien
		 GOAL_CACHE,		false, false,
		 GOAL_PUTOBJECT,	-1,-1, CHOBJECT,120,  // ouvre la porte
		GOAL_GOBLUPI,		+1,0, true,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_TERM,
	0
};

// L'�lectro va sur un blupi puis lance ses rayons.
static short table_goal_e_rayon[] =
{
	WM_ACTION_E_RAYON,
		GOAL_GOHILI2,		0,0, false,
		GOAL_SOUND,			SOUND_E_TOURNE,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_SKIPSKILL,		1, 7,
		 GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		 GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		 GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		 GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		 GOAL_ACTION,		ACTION_E_DEBUT, DIRECT_E,
		 GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		 GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_SOUND,			SOUND_E_RAYON,
		GOAL_ELECTRO,		 0, 0, 8,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ELECTRO,		-2, 0, 8,
		GOAL_ELECTRO,		 0,-2, 8,
		GOAL_ELECTRO,		 0,+2, 8,
		GOAL_ELECTRO,		+2, 0, 8,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ELECTRO,		-2,-2, 8,
		GOAL_ELECTRO,		+2,-2, 8,
		GOAL_ELECTRO,		-2,+2, 8,
		GOAL_ELECTRO,		+2,+2, 8,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ELECTRO,		-4,-2, 8,
		GOAL_ELECTRO,		-4, 0, 8,
		GOAL_ELECTRO,		-4,+2, 8,
		GOAL_ELECTRO,		-2,-4, 8,
		GOAL_ELECTRO,		-2,+4, 8,
		GOAL_ELECTRO,		 0,-4, 8,
		GOAL_ELECTRO,		 0,+4, 8,
		GOAL_ELECTRO,		+2,-4, 8,
		GOAL_ELECTRO,		+2,+4, 8,
		GOAL_ELECTRO,		+4,-2, 8,
		GOAL_ELECTRO,		+4, 0, 8,
		GOAL_ELECTRO,		+4,+2, 8,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ELECTRO,		-6,-2, 8,
		GOAL_ELECTRO,		-6, 0, 8,
		GOAL_ELECTRO,		-6,+2, 8,
		GOAL_ELECTRO,		-4,-4, 8,
		GOAL_ELECTRO,		-4,+4, 8,
		GOAL_ELECTRO,		-2,-6, 8,
		GOAL_ELECTRO,		-2,+6, 8,
		GOAL_ELECTRO,		 0,-6, 8,
		GOAL_ELECTRO,		 0,+6, 8,
		GOAL_ELECTRO,		+2,-6, 8,
		GOAL_ELECTRO,		+2,+6, 8,
		GOAL_ELECTRO,		+4,-4, 8,
		GOAL_ELECTRO,		+4,+4, 8,
		GOAL_ELECTRO,		+6,-2, 8,
		GOAL_ELECTRO,		+6, 0, 8,
		GOAL_ELECTRO,		+6,+2, 8,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_ACTION,		ACTION_E_RAYON, DIRECT_E,
		GOAL_FINISHMOVE,
		GOAL_TERM,
	0
};

// Blupi s'�lectrocute.
static short table_goal_electro[] =
{
	WM_ACTION_ELECTRO,
		GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_ACTION,		ACTION_STOP, DIRECT_SE,
		GOAL_MALADE,		false,
		GOAL_ACTION,		ACTION_ELECTRO, DIRECT_SE,
		GOAL_TAKEOBJECT,	-1,-1, -1,-1,  // ne porte plus rien
		GOAL_SOUND,			SOUND_TCHAO,
		GOAL_ACTION,		ACTION_GRILLE1, DIRECT_SE,
		GOAL_ACTION,		ACTION_GRILLE2, DIRECT_SE,
		GOAL_ACTION,		ACTION_GRILLE3, DIRECT_SE,
		GOAL_DELETE,		// blupi meurt brutalement
		GOAL_TERM,
	0
};

static short table_goal_electrom[] =
{
	WM_ACTION_ELECTROm,
		GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_ACTION,		ACTION_STOP, DIRECT_SE,
		GOAL_GROUP,			3,
		 GOAL_MALADE,		false,
		 GOAL_TAKEOBJECT,	-1,-1, -1,-1,  // ne porte plus rien
		 GOAL_SOUND,		SOUND_TCHAO,
		GOAL_ACTION,		ACTION_GRILLE1, DIRECT_SE,
		GOAL_ACTION,		ACTION_GRILLE2, DIRECT_SE,
		GOAL_ACTION,		ACTION_GRILLE3, DIRECT_SE,
		GOAL_DELETE,		// blupi meurt brutalement
		GOAL_TERM,
	0
};

// Blupi grille.
static short table_goal_grille[] =
{
	WM_ACTION_GRILLE,
		GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_ACTION,		ACTION_STOP, DIRECT_SE,
		GOAL_GROUP,			3,
		 GOAL_MALADE,		false,
		 GOAL_TAKEOBJECT,	-1,-1, -1,-1,  // ne porte plus rien
		 GOAL_SOUND,		SOUND_BRULE,
		GOAL_ACTION,		ACTION_GRILLE1, DIRECT_SE,
		GOAL_ACTION,		ACTION_GRILLE2, DIRECT_SE,
		GOAL_ACTION,		ACTION_GRILLE3, DIRECT_SE,
		GOAL_DELETE,		// blupi meurt brutalement
		GOAL_TERM,
	0
};

// L'araign�e meurt.
static short table_goal_a_mort[] =
{
	WM_ACTION_A_MORT,
		GOAL_INTERRUPT,	0,  // prioritaire
		GOAL_ACTION,		ACTION_STOP, DIRECT_E,
		GOAL_SOUND,			SOUND_A_POISON,
		GOAL_ACTION,		ACTION_A_POISON, DIRECT_E,
		GOAL_ACTION,		ACTION_A_MORT1, DIRECT_E,
		GOAL_ACTION,		ACTION_A_MORT2, DIRECT_E,
		GOAL_ACTION,		ACTION_A_MORT3, DIRECT_E,
		GOAL_DELETE,		// l'araign�e meurt brutalement
		GOAL_TERM,
	0
};

// Blupi se pr�pare � r�p�ter une liste.
static short table_goal_repeat[] =
{
	WM_ACTION_REPEAT,
		GOAL_TERM,
	0
};

// Blupi se t�l�porte d'un endroit � un autre.
static short table_goal_teleporte00[] =
{
	WM_ACTION_TELEPORTE00,
		GOAL_GOHILI2,		0,0, false,
		GOAL_GROUP,			4,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_BUILDFLOOR,	0,0, CHFLOOR,-1, -1,-1, 100,1,1*100,
		 GOAL_ADDICONS,		0,0, 11,
		 GOAL_SOUND,		SOUND_TELEPORTE,
		GOAL_ACTION,		ACTION_TELEPORTE1, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE2, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE3, DIRECT_E,
		GOAL_TELEPORTE,		0,0,
		GOAL_GROUP,			3,
		 GOAL_BUILDFLOOR,	0,0, CHFLOOR,-1, -1,-1, 60,1,1*60,
		 GOAL_ADDICONS,		0,0, 11,
		 GOAL_SOUND,		SOUND_TELEPORTE,
		GOAL_ACTION,		ACTION_TELEPORTE2, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE1, DIRECT_E,
		GOAL_TERM,
	0
};

static short table_goal_teleporte10[] =
{
	WM_ACTION_TELEPORTE10,
		GOAL_GOHILI2,		+1,0, false,
		GOAL_GROUP,			4,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_BUILDFLOOR,	-1,0, CHFLOOR,-1, -1,-1, 100,1,1*100,
		 GOAL_ADDICONS,		-1,0, 11,
		 GOAL_SOUND,		SOUND_TELEPORTE,
		GOAL_ACTION,		ACTION_TELEPORTE1, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE2, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE3, DIRECT_E,
		GOAL_TELEPORTE,		+1,0,
		GOAL_GROUP,			3,
		 GOAL_BUILDFLOOR,	-1,0, CHFLOOR,-1, -1,-1, 60,1,1*60,
		 GOAL_ADDICONS,		-1,0, 11,
		 GOAL_SOUND,		SOUND_TELEPORTE,
		GOAL_ACTION,		ACTION_TELEPORTE2, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE1, DIRECT_E,
		GOAL_TERM,
	0
};

static short table_goal_teleporte01[] =
{
	WM_ACTION_TELEPORTE01,
		GOAL_GOHILI2,		0,+1, false,
		GOAL_GROUP,			4,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_BUILDFLOOR,	0,-1, CHFLOOR,-1, -1,-1, 100,1,1*100,
		 GOAL_ADDICONS,		0,-1, 11,
		 GOAL_SOUND,		SOUND_TELEPORTE,
		GOAL_ACTION,		ACTION_TELEPORTE1, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE2, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE3, DIRECT_E,
		GOAL_TELEPORTE,		0,+1,
		GOAL_GROUP,			3,
		 GOAL_BUILDFLOOR,	0,-1, CHFLOOR,-1, -1,-1, 60,1,1*60,
		 GOAL_ADDICONS,		0,-1, 11,
		 GOAL_SOUND,		SOUND_TELEPORTE,
		GOAL_ACTION,		ACTION_TELEPORTE2, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE1, DIRECT_E,
		GOAL_TERM,
	0
};

static short table_goal_teleporte11[] =
{
	WM_ACTION_TELEPORTE11,
		GOAL_GOHILI2,		+1,+1, false,
		GOAL_GROUP,			4,
		 GOAL_INTERRUPT,	0,  // prioritaire
		 GOAL_BUILDFLOOR,	-1,-1, CHFLOOR,-1, -1,-1, 100,1,1*100,
		 GOAL_ADDICONS,		-1,-1, 11,
		 GOAL_SOUND,		SOUND_TELEPORTE,
		GOAL_ACTION,		ACTION_TELEPORTE1, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE2, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE3, DIRECT_E,
		GOAL_TELEPORTE,		+1,+1,
		GOAL_GROUP,			3,
		 GOAL_BUILDFLOOR,	-1,-1, CHFLOOR,-1, -1,-1, 60,1,1*60,
		 GOAL_ADDICONS,		-1,-1, 11,
		 GOAL_SOUND,		SOUND_TELEPORTE,
		GOAL_ACTION,		ACTION_TELEPORTE2, DIRECT_E,
		GOAL_ACTION,		ACTION_TELEPORTE1, DIRECT_E,
		GOAL_TERM,
	0
};


static short* table_pGoal[] =
{
	table_goal_go,
	table_goal_maison,
	table_goal_abat1,
	table_goal_abat2,
	table_goal_abat3,
	table_goal_abat4,
	table_goal_abat5,
	table_goal_abat6,
	table_goal_roc1,
	table_goal_roc2,
	table_goal_roc3,
	table_goal_roc4,
	table_goal_roc5,
	table_goal_roc6,
	table_goal_roc7,
	table_goal_build1,
	table_goal_build2,
	table_goal_build3,
	table_goal_build4,
	table_goal_build5,
	table_goal_build6,
	table_goal_mur,
	table_goal_tour,
	table_goal_palis,
	table_goal_carry,
	table_goal_carry2,
	table_goal_depose,
	table_goal_depose2,
	table_goal_newblupi,
	table_goal_cultive,
	table_goal_cultive2,
	table_goal_mange,
	table_goal_mange2,
	table_goal_boit,
	table_goal_boit2,
	table_goal_fleur1,
	table_goal_fleur2,
	table_goal_fleur3,
	table_goal_labo,
	table_goal_dynamite,
	table_goal_dynamite2,
	table_goal_t_dynamite,
	table_goal_mine,
	table_goal_mine2,
	table_goal_ponte,
	table_goal_pontel,
	table_goal_ponto,
	table_goal_pontol,
	table_goal_ponts,
	table_goal_pontsl,
	table_goal_pontn,
	table_goal_pontnl,
	table_goal_bateaue,
	table_goal_bateaus,
	table_goal_bateauo,
	table_goal_bateaun,
	table_goal_bateaude,
	table_goal_bateauds,
	table_goal_bateaudo,
	table_goal_bateaudn,
	table_goal_bateauae,
	table_goal_bateauas,
	table_goal_bateauao,
	table_goal_bateauan,
	table_goal_r_build1,
	table_goal_r_build2,
	table_goal_r_build3,
	table_goal_r_build4,
	table_goal_r_build5,
	table_goal_r_build6,
	table_goal_r_make1,
	table_goal_r_make2,
	table_goal_r_make3,
	table_goal_r_make4,
	table_goal_r_make5,
	table_goal_r_make6,
	table_goal_mjeep,
	table_goal_djeep,
	table_goal_marmure,
	table_goal_darmure,
	table_goal_drapeau,
	table_goal_drapeau2,
	table_goal_drapeau3,
	table_goal_extrait,
	table_goal_fabjeep,
	table_goal_fabarmure,
	table_goal_fabmine,
	table_goal_fabdisc,
	table_goal_e_rayon,
	table_goal_electro,
	table_goal_electrom,
	table_goal_grille,
	table_goal_a_mort,
	table_goal_repeat,
	table_goal_teleporte00,
	table_goal_teleporte10,
	table_goal_teleporte01,
	table_goal_teleporte11,
	NULL
};

// Retourne le pointeur � la table table_goal_*.

short* GetTableGoal(int action)
{
	short**	ppTable = table_pGoal;

	while ( *ppTable != NULL )
	{
		if ( **ppTable == action )
		{
			return *ppTable+1;  // apr�s WM_ACTION_*
		}

		ppTable ++;
	}

	return NULL;
}