onBallDroppingReached()
 if(Automatisme::GetBallColor(LEFT_EJECTOR) == WHITE_BALL)
 Automatisme::DropBall(LEFT_EJECTOR);
 else if(Automatisme::GetBallColor(RIGHT_EJECTOR) == WHITE_BALL)
 Automatisme::DropBall(RIGHT_EJECTOR);

onEndOfGame()
 cControler::EmergencyStop();
 Automatisme::StopAll();

onCollisionDetected()
 cControler::EmergencyStop();
 Automatisme::StopAll();
Exemple de script en pseudo langage :
 //On suppose que le script a déjà été lancé par l'IHM elec avec les fonctions suivantes :
 //Automatisme->ActivateIA().Wait();
 //nb = Automatisme->GetIHMStratSwitch();
 //LaunchScript(nb);
 Pos->SetTeam(Auto->GetTeamSwitch();
 Auto->Starter().Wait();
 ClothoidPath path;
 pos = posaux->GetNearestWhiteBall();
 wp = WaypointPickup(pos);
 LinkEventToCallback(wp.Approaching(500), Auto->ActivateRollerDuring(1000));
 path.push(wp);
 pos = posaux->GetNearestWhiteBall(pos);
 wp = WaypointPickup(pos);
 LinkEventToCallback(wp.Approaching(500), Auto->ActivateRollerDuring(1000));
 path.push(wp);
 pos = posaux->GetNearestAlliedFreeHole(pos);
 wp = Waypoint(pos);
 LinkEventToCallback(wp.Approaching(1000), RecomputePathWithEjecteur());
 path.push(wp);
 path.go();
 function RecomputePathWithEjecteur
 path.clear();
 if(Auto->GetBallColor(LEFT) == WHITE_BALL)
 wp = WaypointDropping(pos, LEFT);
 else
 wp = WaypointDropping(pos, RIGHT);
 path.push(wp);
 path.recompute();
 LinkEventToCallback(path.GoalReached(), Auto->DropBall(LEFT/RIGHT);
Couche Auxiliaire IA.
Les auxiliaires de l'IA sont la pour simplifier certains calculs et algorithmes et permettent donc à la couche d'IA d'utiliser des scripts assez simples. Cela permet aussi de factoriser certaines taches qui pourrait revenir systématiquement dans chaque script.
Positionnement auxiliaire.
Fournit à l'IA des fonctions simples pour obtenir des informations sur des éléments particuliers du jeu (comme la balle la plus proche ou le trou le plus accessible). Basiquement il s'agit d'algorithme de tri ou de recherche de min/max.
Les fonctions retournent un booléen indiquant l'existence de l'élément recherché et modifie l'objet position le cas échéant. Le terme 'nearest' ici signifie proche en temps, pas forcément en distance. Il s'agit donc d'obtenir l'élément le plus accessible.
 bool GetNearestWhiteBallPos(Pos &, posRobot = currentPos); (priorité : ***)
 bool GetNearestBlackBallPos(Pos &, posRobot = currentPos); (priorité : *)
 bool GetNearestUntriggeredTotemPos(Pos &, posRobot = currentPos); (priorité : *)
 bool GetNearestFreeAlliedHolePos(Pos &, posRobot = currentPos); (priorité : ***)
 bool GetNearestBlackAlliedHolePos(Pos &, posRobot = currentPos); (priorité : *)
 bool GetNearestFreeOpponentHolePos(Pos &, posRobot = currentPos); (priorité : **)
 bool GetNearestWhiteOpponentHolePos(Pos &, posRobot = currentPos); (priorité : *)
 //retourne le point le plus proche de la bordure
 void GetNearestHorizontalBorderPos(Pos &, posRobot = currentPos); (priorité : **)
 void GetNearestVerticalBorderPos(Pos &, posRobot = currentPos); (priorité : **)
 //Fonction de retour d'info IA → Positionnement
 Priorité : ***
 void FrontTouchedDownHEdge();
 void FrontTouchedUpHEdge();
 void FrontTouchedLeftVEdge();
 void FrontTouchedRightVEdge();
 void BackTouchedDownHEdge();
 void BackTouchedUpHEdge();
 void BackTouchedLeftVEdge();
 void BackTouchedRightVEdge();
Pathfinder.
Le pathfinder permet de déterminer les trajectoires optimales permettant d'aller d'un point à un autre.
 class cPath //- Priorité : ***
 public:
 virtual void Compute();
 virtual cmd TranslateToMotorCmd();
 virtual float EstimateDeviation(const cPos &Current);
 virtual float EstimateRemainingTime();
 void Push(const cWaypoint &);
 void Push(const cFixedWaypoint &);
 static float EstimateTime(pos From, pos To);
Des classe spécialisées peuvent hériter de cPath afin d'avoir plusieurs style de trajectoires, par exemple on peut avoir un cPath version clothoide, un cPath version ligne droite et rotation sur place, ou encore un cPath ligne droite horizontale ou verticale uniquement.
 class cClothoidPath : public cPath; Priorité : *
 class cStraightLinePath : public cPath; Priorité : **
 class cParallelLinePath : public cPath; Priorité : ***
 class cControler : public cSingleton - Priorité : ***
 void Run(const cPath &); == TransitionToPathAt (path, 0)
 void Stop();
 void EmergencyStop();
 void TransitionToPathAt(const cPath &, ~uint32 Tick~);
 cWaypoint GetInitWaypointAt(uint32 Tick);
 cWaypoint GetNextWaypoint();
 [IT]:
 GoalReachedIn(uint32 ms = 0);
 WaypointReachedIn(uint32 ~waypnb~, uint32 ms = 0); (dans Waypoint ?)
 DeviationDetected(float difference);
 ObstacleOnPath();
 class cWaypoint - Priorité : ***
 virtual cRange GetAllowedSpeedRange();
 virtual cRange GetAllowedAngularSpeedRange();
 virtual cRange GetAllowedThetaRange();
 virtual enum GetAllowedDirection();
 virtual cPos GetPos(float theta);
 //GenerateFixedWaypoint(...);