Xaumina
En fait, ce que je veux, c'est la formule qui concerne l'eau, la bouée et le plugin de la bouée. Vous l'avez deviné, c'est pour faire un terrain ciel qu'on peut survoler avec des ailes, et qui fait apparaître un plugin quand on va sur le terrain (ce serait un terrain en plus, pas sur le terrain ciel directement).
L'eau c'est relativement simple :
actions
GoOnMyWater;
field TMyWater
name 'Mon eau';
image 'Fields/Water';
// Permettre de passer au-dessus avec la planche
on message Plank do
begin
if Kind = pmkPassOver then
not Player.AbleTo(GoOnMyWater);
end;
// Appliquer le fondu des terrains avoisinant
on DoDraw do
begin
inherited;
DissipateGroundNeighbors(Context);
end;
// Empêcher de venir si ne peut pas GoOnMyWater
on Entering do
begin
if Player can GoOnMyWater then
Exit;
Cancel;
if KeyPressed then
Player.ShowMessage('Il faudrait une bouée pour aller dans l''eau.');
end;
// Activer la bouée si on est téléporté dans l'eau
on Entered do
begin
Player.DoAction(GoOnMyWater);
end;
end;
Le plugin pour la bouée ressemblerait à ceci :
plugin TMyBuoyPlugin
hint 'Plugin de la bouée';
action GoOnMyWater;
on AfterConstruction do
begin
PainterBefore.AddImage('Plugins/Buoy');
inherited;
end;
on Moved do
begin
if not (DestSquare.Field is TMyWater) then
Player.RemovePlugin(Self);
end;
end;
Finalement, l'objet bouée ressemblerait à ceci :
object TMyBuoy
name 'Bouée';
image 'Objects/Buoy';
action GoOnMyWater then
Player.AddPlugin(MyBuoyPlugin);
end;
Bon je viens de pondre tout ça sans tester. Donc il y a peut-être un ou deux couacs.
En fait FunLabyBase n'est pas écrite en FunDelphi, mais en Delphi. Et en plus, elle n'est pas écrite en un seul fichier : il y en a 9 ! FunLabyBase est un alias pour ces 9 unités qui forment toutes les cases de base de FunLabyrinthe.