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 : access Keen_Trigger; levelName : String ); 
  15.  
  16.     -- Executes the 'exitlevel' trigger command. 
  17.     procedure Do_Exitlevel( this : access Keen_Trigger ); 
  18.  
  19.     -- Executes the 'set_tile_here' trigger command. 
  20.     procedure Do_Set_Tile_Here( this : access Keen_Trigger; argument : String ); 
  21.  
  22.     -- Executes the 'teleport' trigger command. 
  23.     procedure Do_Teleport( this      : access Keen_Trigger; 
  24.                            arg       : String; 
  25.                            activator : not null A_Entity ); 
  26.  
  27.     -- Evaluates the given conditional expression and returns the result. 
  28.     function Evaluate( this : access Keen_Trigger; expr : String ) return Boolean; 
  29.  
  30.     procedure Execute( this      : access Keen_Trigger; 
  31.                        action, 
  32.                        argument  : String; 
  33.                        activator : A_Entity ); 
  34.  
  35.     function Object_Input( stream : access Root_Stream_Type'Class ) return Keen_Trigger; 
  36.     for Keen_Trigger'Input use Object_Input; 
  37.  
  38.     procedure Object_Read( stream : access Root_Stream_Type'Class; obj : out Keen_Trigger ); 
  39.     for Keen_Trigger'Read use Object_Read; 
  40.  
  41.     procedure Object_Write( stream : access Root_Stream_Type'Class; obj : Keen_Trigger ); 
  42.     for Keen_Trigger'Write use Object_Write; 
  43.  
  44. end Entities.Triggers.Keen;