Mod service: ItemService

## Available commands:

```
  void                SetActivationStatus( Exor::Entity ent, bool value );
  bool                GetActivationStatus( Exor::Entity ent );
  void                ActivateCooldown( Exor::Entity ent );

  void                ResetCooldown( Exor::Entity entity, float time );
  float               GetCooldown( Exor::Entity entity );
  float               GetActiveCooldownLeft( Exor::Entity entity );
  bool                HasActiveCooldown( Exor::Entity entity );
  bool                CanActivateItemSlot( Exor::Entity entity, const Exor::String & slot, const Exor::String & type );

  void                ResetItemCooldownWeaponBased( Exor::Entity entity, Exor::Entity item );

  void                ChangeRegeneration( Exor::Entity ent, float amount );
  void                AddSpeedModifier( Exor::Entity ent, float amount, Exor::String changer );
  void                RemoveSpeedModifier( Exor::Entity ent, Exor::String changer );

  void                SpawnLoot( Exor::Entity target, Exor::String blueprint );
  void                SpawnLoot( Exor::Entity target, Exor::String blueprint, size_t count );
  Exor::Entity::Id    SpawnLoot( Exor::Entity target, Exor::String blueprint, float timeout, float minPower, float maxPower, Exor::String lifetimeType );
  Exor::Entity::Id    SpawnLoot( Exor::Vector3 pos, Exor::String blueprint, float timeout, float minPower, float maxPower, Exor::String lifetimeType );

  Exor::Entity::Id    SpawnLootWithPower( Exor::Entity target, Exor::String blueprint, float lifeTime, float minPower, float maxPower );

  int                 GetItemSubSlot( Exor::Entity owner, Exor::Entity item );
  Exor::String        GetItemSubType( Exor::Entity item ) const;
  Exor::String        GetItemType( Exor::Entity item ) const;
  Exor::String        GetItemName( Exor::Entity item ) const;
  Exor::String        GetItemLevel( Exor::Entity item ) const;
  bool                IsSameSubTypeEquipped( Exor::Entity owner, Exor::Entity item );
  void                SetItemCreator( Exor::Entity entity, Exor::String blueprint );
  Exor::String        GetItemCreator( Exor::Entity entity );

  Exor::Entity::Id    PickUpItem( Exor::Entity::Id owner, Exor::String item );
  void                FlyItemToInventory( Exor::Entity::Id owner, Exor::Entity item );

  Exor::Entity::Id    AddItemToInventory( Exor::Entity::Id owner, Exor::String item );
  void                EquipItemInSlot( Exor::Entity::Id owner, Exor::Entity::Id item, Exor::String slotId );
  void                TryEquipItemInSlot( Exor::Entity::Id owner, Exor::Entity::Id item, Exor::String slotId, int subSlot );
  void                ClearNewItemsMarks( Exor::Entity::Id owner );
  void                ClearNewItemMark( Exor::Entity::Id owner, Exor::Entity::Id item );
  int                 GetItemCount( Exor::Entity::Id owner, Exor::StringView itemBlueprint );
  Exor::Entity::Id    GetFirstItemForBlueprint( Exor::Entity::Id owner, Exor::StringView itemBlueprint );

  void                UseEquippedItem( Exor::Entity::Id owner, const Exor::String & slot );
  void                StopUsingEquippedItem( Exor::Entity::Id owner, const Exor::String & slot );
  Exor::Entity::Id    GetEquippedPresentationItem( Exor::Entity::Id owner, const Exor::String & slot );
  Exor::Entity::Id    GetEquippedItem( Exor::Entity::Id owner, const Exor::String & slot );

  std::pair< Exor::Entity::Id, float> FindClosestTreasureInRadius( Exor::Entity::Id item, DiscoverableLevel lvl, const Exor::String & searchType, const Exor::String & excludedType );
  void                RevealHiddenEntity( Exor::Entity ent );
  void                InteractWithEntity( Exor::Entity ent, Exor::Entity item );

  bool                CanFitResourceGiver( Exor::Entity owner, Exor::Entity ent );
  bool                CanPlace( float x, float y, float z, float radius );

  String              GetBlueprintOfItem( Exor::String item );
  String              GetResourceBlueprint( Exor::String resource );

  void                AddHealthLink( Exor::Entity owner, Exor::Entity item );
  void                RemoveHealthLink( Exor::Entity owner, Exor::Entity item );

  String              GetItemIcon( Exor::Entity entity );

  void                ScanEntity( Exor::Entity entity, Exor::Entity inventoryOwner );
  void                ScanEntityByPlayer( Exor::Entity entity, Exor::PlayerId player);

  void                SetInvisible( Exor::Entity entity, bool value );

  StringVector        GetAllItemsBlueprints();

```