1. package Entities.Triggers.Keen is 
  2.  
  3.     pragma Elaborate_Body; 
  4.  
  5.     type Keen_Trigger is new Trigger with private; 
  6.  
  7. private 
  8.  
  9.     type Keen_Trigger is new Trigger with null record; 
  10.  
  11.     procedure Construct( this : access Keen_Trigger ); 
  12.  
  13.     -- Executes the 'EnterLevel' trigger command. 
  14.     procedure Do_EnterLevel( this      : not null access Keen_Trigger'Class; 
  15.                              levelName : String ); 
  16.  
  17.     -- Executes the 'ExitLevel' trigger command. 
  18.     procedure Do_ExitLevel( this : not null access Keen_Trigger'Class ); 
  19.  
  20.     -- Executes the 'SetTile' trigger command. 
  21.     procedure Do_SetTile( this     : not null access Keen_Trigger'Class; 
  22.                           argument : String ); 
  23.  
  24.     -- Executes the 'Teleport' trigger command. 
  25.     procedure Do_Teleport( this      : not null access Keen_Trigger'Class; 
  26.                            arg       : String; 
  27.                            activator : not null A_Entity ); 
  28.  
  29.     procedure Execute( this      : access Keen_Trigger; 
  30.                        action, 
  31.                        argument  : String; 
  32.                        activator : A_Entity ); 
  33.  
  34.     function Object_Input( stream : access Root_Stream_Type'Class ) return Keen_Trigger; 
  35.     for Keen_Trigger'Input use Object_Input; 
  36.  
  37.     procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Keen_Trigger ); 
  38.     for Keen_Trigger'Read use Object_Read; 
  39.  
  40.     procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Keen_Trigger ); 
  41.     for Keen_Trigger'Write use Object_Write; 
  42.  
  43. end Entities.Triggers.Keen;