/**
 * @defgroup CritterEvents Critter events
 * @ingroup Events
 *
 * \~russian   .
 *
 * @remarks        ,
 *             .
 *
 * @remarks       NPC,    .
 *
 * \~english Event list for Critter class
 *
 * \~ @see Critter
 *         Critter::SetEvent
 */
/*@{*/

/** \~russian @name 
 *
 * ,     .
 *
 ** \~english @name General
 *
 ** \~ @weight 300
 */
//@{

/** \~russian   20   .
 *
 *        Critter::Wait  .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr)
 * @endcode
 *
 * \~ @see Critter::EventIdle
 */
#define CRITTER_EVENT_IDLE                   (0)

/** \~russian      .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, bool deleted)
 * @endcode
 *
 * @param  deleted @ true -      , @ false -    .
 *
 * \~ @see Critter::EventFinish
 */
#define CRITTER_EVENT_FINISH                 (1)

/** \~russian         #critter_dead.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter@ killer)
 * @endcode
 *
 * @param  killer       ,
 *                       .
 *
 * \~ @see Critter::ToDead
 *         Critter::EventDead
 *         #critter_dead
 */
#define CRITTER_EVENT_DEAD                   (2)

/** \~russian       ().
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr)
 * @endcode
 *
 * \~ @see Critter::ToLife
 *         Critter::EventRespawn
 *         #critter_respawn
 */
#define CRITTER_EVENT_RESPAWN                (3)

/** \~russian      .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, bool faceUp, uint lostAp, uint knockDist)
 * @endcode
 *
 * @param  faceUp     ,      (@c true)   (@c false).
 * @param  lostAp       ,     .
 * @param  knockDist   ,   "" .
 *
 * \~ @see Critter::ToKnockout
 *         Critter::EventKnockout
 */
#define CRITTER_EVENT_KNOCKOUT               (23)

//@}

/** \~russian @name 
 *
 * ,     ,  ,
 *    .
 */
//@{

/** \~russian     -.
 *
 * @par  :
 * @code
 * bool _FuncName(Critter& cr, Critter& target);
 * @endcode
 *
 * @param  target   .
 *
 * @return    @c true   #critter_attack
 *          .
 *
 * \~ @see Critter::EventAttack
 *         #CRITTER_EVENT_SMTH_ATTACK
 *         #ITEM_EVENT_ATTACK
 *         #critter_attack
 */
#define CRITTER_EVENT_ATTACK                 (15)

/** \~russian     .
 *
 * @par  :
 * @code
 * bool _FuncName(Critter& cr, Critter& attacker);
 * @endcode
 *
 * @param  attacker   .
 *
 * @return    @c true   #critter_attacked
 *          .
 *
 * \~ @see Critter::EventAttacked
 *         #CRITTER_EVENT_SMTH_ATTACKED
 *         #critter_attacked
 */
#define CRITTER_EVENT_ATTACKED               (16)

/** \~russian c      .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& thief, bool success, Item& item, uint count)
 * @endcode
 *
 * @param  thief    .
 * @param  success     ,   #critter_stealing.
 * @param  item      .
 * @param  count      .
 *
 * \~ @see Critter::EventStealing
 *         #CRITTER_EVENT_SMTH_STEALING
 *         #critter_stealing
 */
#define CRITTER_EVENT_STEALING               (17)

/** \~russian    NPC    .
 *
 * @par  :
 * @code
 * bool _FuncName(Critter& cr, Critter& player, bool attach, uint barterCount)
 * @endcode
 *
 * @param  player       ,    .
 * @param  attach       ,  (@c true)   (@c false) .
 * @param  barterCount   ,   /.
 *
 * @return   @c true   ; @c false    .
 *           <code>attach == true</code>.
 *
 * \~ @see Critter::EventBarter
 */
#define CRITTER_EVENT_BARTER                 (36)

/** \~russian ,   NPC    .
 *
 * @par  :
 * @code
 * bool _FuncName(Critter& cr, Critter& player, bool attach, uint talkCount)
 * @endcode
 *
 * @param  player     ,    .
 * @param  attach     ,  (@c true)   (@c false) .
 * @param  talkCount   ,   /.
 *
 * @return   @c true   ; @c false   .
 *           <code>attach == true</code>.
 *
 * \~ @see Critter::EventTalk
 */
#define CRITTER_EVENT_TALK                   (37)

/** \~russian      -.
 *
 * @code
 * bool _FuncName(Critter& cr, int skill, Critter@ onCritter, Item@ onItem, Scenery@ onScenery)
 * @endcode
 *
 * @param  skill       
 *                    (. @link Skills @endlink  @link SpecialSkillValues Special Skill Values@endlink).
 * @param  onCritter      ,       .
 * @param  onItem          ,
 *                          () .
 * @param  onScenery      ,       .
 *
 * @return  @c false    #critter_use_skill
 *          @c true  .
 *
 * \~ @see Critter::EventUseSkill
 *         #ITEM_EVENT_SKILL
 */
#define CRITTER_EVENT_USE_SKILL              (21)

/** \~russian    -    .
 *
 * @code
 * bool _FuncName(Critter& whoUse, int skill)
 * @endcode
 *
 * @param  whoUse    
 * @param  skill    
 *                  (. @link Skills @endlink  @link SpecialSkillValues Special Skill Values@endlink).
 *
 * @return  @c false    #critter_use_skill
 *          @c true  .
 *
 */
#define CRITTER_EVENT_USE_SKILL_ON_ME         (22)

//@}

/** \~russian @name 
 * ,   
 */
//@{

/** \~russian      - .
 *
 * @code
 * bool _FuncName(Critter& cr, Item& item, Critter@ onCritter, Item@ onItem, Scenery@ onScenery)
 * @endcode
 *
 * @param  item        .
 * @param  onCritter      ,       .
 * @param  onItem          ,
 *                          () .
 * @param  onScenery      ,       .
 *
 * @return  @c false    #critter_use_item.
 *          @c true  .
 *
 * \~ @see  Critter::EventUseItem
 *          ITEM_EVENT_USE
 *          #critter_use_item
 */
#define CRITTER_EVENT_USE_ITEM               (19)

/** \~russian    -    .
 *
 * @code
 * bool _FuncName(Critter& whoUse, Item& item)
 * @endcode
 *
 * @param  whoUse    .
 * @param  Item&    .
 *
 * @return  @c false    #critter_use_item.
 *          @c true  .
 *
 */
#define CRITTER_EVENT_USE_ITEM_ON_ME          (20)

/** \~russian       .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Item& showItem, bool added, Critter@ dropper)
 * @endcode
 *
 * @param  showItem   .
 * @param  added     @c true,        ;
 *                   @c false,       (,     ).
 * @param  dropper         - ,
 *                          .
 *                     , @c null.
 *
 * \~ @see Critter::EventShowItemOnMap
 *
 */
#define CRITTER_EVENT_SHOW_ITEM_ON_MAP       (12)

/** \~russian    ,      .
 *
 * ,     ( ).
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Item& item)
 * @endcode
 *
 * @param  item   .
 *
 * \~ @see Critter::EventChangeItemOnMap
 */
#define CRITTER_EVENT_CHANGE_ITEM_ON_MAP     (13)

/** \~russian       .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Item& hidedItem, bool removed, Critter@ picker)
 * @endcode
 *
 * @param  hidedItem   .
 * @param  removed    @c true,        ;
 *                    @c false,        (,     ).
 * @param  picker         - ,
 *                           .
 *                      , @c null.
 *
 * \~ @see Critter::EventHideItemOnMap
 */
#define CRITTER_EVENT_HIDE_ITEM_ON_MAP       (14)

/** \~russian        .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Item& item)
 * @endcode
 *
 * @param  item   .
 *
 * \~ @see Critter::EventDropItem
 *         #ITEM_EVENT_DROP
 */
#define CRITTER_EVENT_DROP_ITEM              (21)

/** \~russian    -     .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Item& item, uint8 fromSlot)
 * @endcode
 *
 * @param  item       .
 * @param  fromSlot  ,      
 *                   (. @link Slots  @endlink).
 *
 * \~ @see Critter::EventMoveItem
 *         #ITEM_EVENT_MOVE
 */
#define CRITTER_EVENT_MOVE_ITEM              (24)

//@}

/** \~russian @name  
 *
 * ,      .
 */
//@{

/** \~russian        .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& showCr)
 * @endcode
 *
 * @param  showCr      .
 *
 * \~ @see Critter::EventShowCritter
 */
#define CRITTER_EVENT_SHOW_CRITTER           (4)

/** \~russian        .
 *
 *       Critter::ShowCritterDist1.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& showCr)
 * @endcode
 *
 * @param  showCr      .
 *
 * \~ @see Critter::EventShowCritter1
 *         Critter::ShowCritterDist1
 */
#define CRITTER_EVENT_SHOW_CRITTER_1         (5)

/** \~russian        .
 *
 *       Critter#ShowCritterDist2.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& showCr)
 * @endcode
 *
 * @param  showCr      .
 *
 * \~ @see Critter::EventShowCritter2
 *         Critter::ShowCritterDist2
 */
#define CRITTER_EVENT_SHOW_CRITTER_2         (6)

/** \~russian        .
 *
 *        Critter#ShowCritterDist3.
 *
 *  @par  :
 *  @code
 *  void _FuncName(Critter& cr, Critter& showCr)
 *  @endcode
 *
 * @param  showCr      .
 *
 * \~ @see Critter::EventShowCritter3
 *         Critter::ShowCritterDist3
 */
#define CRITTER_EVENT_SHOW_CRITTER_3         (7)

/** \~russian       .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& hideCr)
 * @endcode
 *
 * @param  hideCr      .
 *
 * \~ @see Critter::EventHideCritter
 */
#define CRITTER_EVENT_HIDE_CRITTER           (8)

/** \~russian       .
 *
 *      Critter#ShowCritterDist1.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& hideCr)
 * @endcode
 *
 * @param  hideCr      .
 *
 * \~ @see Critter::EventHideCritter1
 *         Critter::ShowCritterDist1
 */
#define CRITTER_EVENT_HIDE_CRITTER_1         (9)

/** \~russian       .
 *
 *      Critter#ShowCritterDist2.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& hideCr)
 * @endcode
 *
 * @param  hideCr      .
 *
 * \~ @see Critter::EventHideCritter2
 *         Critter::ShowCritterDist2

 */
#define CRITTER_EVENT_HIDE_CRITTER_2         (10)

/** \~russian       .
 *
 *      Critter#ShowCritterDist1.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& hideCr)
 * @endcode
 *
 * @param  hideCr      .
 *
 * \~ @see Critter::EventHideCritter3
 *         Critter::ShowCritterDist3
 */
#define CRITTER_EVENT_HIDE_CRITTER_3         (11)

/** \~russian ,   ,     Critter::SendMessage.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, int message, int value)
 * @endcode
 *
 * @param  fromCr   ,  .
 * @param  message   .
 * @param  value     .
 *
 * \~ @see Critter::SendMessage
 *         Critter::EventMessage
 */
#define CRITTER_EVENT_MESSAGE                (18)

/** \~russian ,      .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, Critter@ killer)
 * @endcode
 *
 * @param  fromCr   .
 * @param  killer       ,
 *                       .
 *
 * \~ @see Critter::EventSmthDead
 *         #CRITTER_EVENT_DEAD
 */
#define CRITTER_EVENT_SMTH_DEAD              (24)

/** \~russian ,  -      .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, Critter& thief, bool success, Item& item, uint count)
 * @endcode
 *
 * @param  fromCr   ,  .
 * @param  thief    ,  .
 * @param  success     .
 * @param  item      .
 * @param  count      .
 *
 * \~ @see Critter::EventSmthStealing
 *         #CRITTER_EVENT_STEALING
 */
#define CRITTER_EVENT_SMTH_STEALING          (25)

/** \~russian ,  -      -.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, Critter& target)
 * @endcode
 *
 * @param  fromCr   .
 * @param  target   .
 *
 * \~ @see Critter::EventSmthAttack
 *         #CRITTER_EVENT_ATTACK
 */
#define CRITTER_EVENT_SMTH_ATTACK            (26)

/** \~russian ,  -     .
 *
 * . @ref CRITTER_EVENT_ATTACKED.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, Critter& attacker)
 * @endcode
 *
 * @param  fromCr     .
 * @param  attacker   .
 *
 * \~ @see Critter::EventSmthAttacked
 *         #CRITTER_EVENT_ATTACKED
 */
#define CRITTER_EVENT_SMTH_ATTACKED          (27)

/** \~russian ,         -.
 *
 * . @ref CRITTER_EVENT_USE_ITEM.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, Item& item, Critter@ onCritter, Item@ onItem, Scenery@ onScenery)
 * @endcode
 *
 * @param  fromCr       .
 * @param  item        .
 * @param  onCritter      ,       .
 * @param  onItem          ,
 *                          () .
 * @param  onScenery      ,       .
 */
#define CRITTER_EVENT_SMTH_USE_ITEM          (28)

/** \~russian ,         -.
 *
 * . @ref CRITTER_EVENT_USE_SKILL.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, int skill, Critter@ onCritter, Item@ onItem, Scenery@ onScenery)
 * @endcode
 *
 * @param  fromCr       .
 * @param  skill       .
 *                    (. @link Skills @endlink  @link SpecialSkillValues Special Skill Values@endlink).
 * @param  onCritter      ,       .
 * @param  onItem          ,
 *                          () .
 * @param  onScenery      ,       .
 */
#define CRITTER_EVENT_SMTH_USE_SKILL         (29)

/** \~russian ,       .
 *
 * . @ref CRITTER_EVENT_DROP_ITEM.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, Item& item)
 * @endcode
 *
 * @param  fromCr    
 * @param  item     .
 */
#define CRITTER_EVENT_SMTH_DROP_ITEM         (30)

/** \~russian ,        .
 *
 * . @ref CRITTER_EVENT_MOVE_ITEM.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, Item& item, uint8 fromSlot)
 * @endcode
 *
 * @param  fromCr        
 * @param  item       .
 * @param  fromSlot  ,      
 *                   (. @link Slots  @endlink).
 */
#define CRITTER_EVENT_SMTH_MOVE_ITEM         (31)

/** \~russian ,        .
 *
 * . @ref CRITTER_EVENT_KNOCKOUT.
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, bool faceUp, uint lostAp, uint knockDist)
 * @endcode
 *
 * @param  fromCr        .
 * @param  faceUp     ,      (@c true)   (@c false).
 * @param  lostAp       ,     .
 * @param  knockDist   ,   "" .
 */
#define CRITTER_EVENT_SMTH_KNOCKOUT          (32)

//@}

/** \~russian @name 
 *
 *    NPC.     :
 * @a childIndex     ( 0,    ).
 */
//@{

/** \~russian     (      NPC).
 *
 * @par  :
 * @code
 * int _FuncName(Critter& cr, NpcPlane& plane, uint childIndex, int reason, Critter@ someCr, Item@ someItem)
 * @endcode
 *
 * @param  plane       .
 * @param  childIndex      ,  0,   .
 * @param  reason         
 *                     (. @link PlanesReasons Plane begin reasons@endlink).
 * @param  someCr             (. @link NpcPlane    @endlink).
 * @param  someItem           (. @link NpcPlane    @endlink).
 *
 * @return PLANE_RUN_GLOBAL -   ,      ;
 * PLANE_KEEP -  ,    ;
 * PLANE_DISCARD -  ,    .
 */
#define CRITTER_EVENT_PLANE_BEGIN            (33)

/** \~russian     (     ).
 *
 * @par  :
 * @code
 * int _FuncName(Critter& cr, NpcPlane& plane, uint childIndex, int reason, Critter@ someCr, Item@ someItem)
 * @endcode
 *
 * @param  plane       .
 * @param  childIndex      ,  0,   .
 * @param  reason         
 *                     (. @link PlanesReasons Plane end reasons@endlink).
 * @param  someCr             (. @link NpcPlane    @endlink).
 * @param  someItem           (. @link NpcPlane    @endlink).
 *
 * @return PLANE_RUN_GLOBAL -   ,      ;
 * PLANE_KEEP -  ,    ;
 * PLANE_DISCARD -  ,    .
 */
#define CRITTER_EVENT_PLANE_END              (34)

/** \~russian      .
 *
 * @par  :
 * @code
 * int _FuncName(Critter& cr, NpcPlane& plane, uint childIndex, int reason, uint& r0, uint& r1, uint& r2)
 * @endcode
 *
 * @param  plane       ,    .
 * @param  childIndex      .
 * @param  reason      ,     .
 *                          .
 *
 * @return PLANE_RUN_GLOBAL -   ,      ;
 * PLANE_KEEP -  ,    ;
 * PLANE_DISCARD -  ,    .
 *
 *         :
 *
 * - REASON_ATTACK_WEAPON.    .
 *     @param [in]  r0       -.
 *     @param [in]  r1, r2   .
 *     @param [out] r0          -.
 *     @param [out] r1      ,     (. ProtoItem::Weapon_SetUse).
 *     @param [out] r2          (,  <code>r0 == 0</code>) (?).
 *
 * - REASON_ATTACK_DISTANTION.   . (?)
 *     @param [in]  r0       -.
 *     @param [in]  r1      NPC     <code>r1 != 0</code>.
 *     @param [in]  r2        HP ( @b AI.TXT).
 *     @param [out] r0       .
 *     @param [out] r1       .
 *     @param [out] r2       .
 *                           <code>r2 == 0</code>,   ,   .
 *
 * - REASON_ATTACK_USE_AIM. .
 *     @param [in]  r0       -..
 *     @param [in]  r1       .
 *     @param [in]  r2       .
 *     @param [out] r0      ,     (. ProtoItem::Weapon_SetUse).
 *     @param [out] r1       (. @link HitLocations Hit Locations@endlink).
 *     @param [out] r2       ( ),       .
 */
#define CRITTER_EVENT_PLANE_RUN              (35)

//@}

/** \~russian @name  
 *
 *       
 */
//@{

/** \~russian      .
 *
 *          .
 *
 * @par  :
 * @code
 * bool _FuncName(Critter& cr, int type, Critter@[]& group, Item@ car, uint& x, uint& y, uint& toX, uint& toY, uint& speed, uint& encounterDescriptor, bool& waitForAnswer)
 * @endcode
 *
 * @param  type                   (. @link GlobalMapEvents Global Map Events@endlink);
 * @param  group                    ,   ;
 * @param  car                    ,   ;
 * @param  x                      X    ;
 * @param  y                      Y    ;
 * @param  toX                   X   ;
 * @param  toY                   Y   ;
 * @param  speed                     (    );
 * @param  encounterDescriptor    ;
 * @param  waitForAnswer           .
 * 
 * @remarks     ( cr  group)  .
 * 
 * @return @c true -   #global_process  ; @c false -   .
 *
 * @see global_process
 *
 */
#define CRITTER_EVENT_GLOBAL_PROCESS         (38)

/** \~russian         .
 *
 * @par  :
 * @code
 * bool _FuncName(Critter& cr, Critter@[]& group, Item@ car, uint encounterDescriptor, int combatMode, uint& mapId, uint16& hexX, uint16& hexY, uint8& dir)
 * @endcode
 * 
 * @param  group                    ,   ;
 * @param  car                    ,   ;
 * @param  encounterDescriptor    ;
 * @param  combatMode             (COMBAT_MODE_ANY, COMBAT_MODE_REAL_TIME  COMBAT_MODE_TURN_BASED);
 * @param  mapId                 ;
 * @param  hexX                   X   ;
 * @param  hexY                   Y   ;
 * @param  dir                     .
 *
 * @return @c true -   #global_invite  ; @c false -   .
 *
 * @see global_invite
 */
#define CRITTER_EVENT_GLOBAL_INVITE          (39)

//@}

/** \~russian @name  
 *
 *     
 */
//@{

/** \~russian        .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Map& map, bool beginTurn)
 * @endcode
 *
 * @param  map            ;
 * @param  beginTurn  @c true -     , @c false -     .
 */
#define CRITTER_EVENT_TURN_BASED_PROCESS     (40)

/** \~russian       -    .
 *
 * @par  :
 * @code
 * void _FuncName(Critter& cr, Critter& fromCr, Map& map, bool beginTurn)
 * @endcode
 *
 * @param  map            ;
 * @param  beginTurn  @c true -     , @c false -     .
 */
#define CRITTER_EVENT_SMTH_TURN_BASED_PROCESS (41)

//@}

/*@}*/
