Mod service: UnitService

## Available commands:

```
void                    SetUnitState( Exor::Entity::Id entity, Exor::IdString state );
void                    SetInitialState( Exor::Entity::Id entity, Exor::IdString state );
void                    MarkUnitSafeSpot( Exor::Entity::Id entity );
void                    DefendSpot( Exor::Entity::Id entity, float aggressiveDistance, float notAggressiveDistance );
Exor::Entity::Id        DrillResourceFromVein( Exor::String attachmentName, Exor::Entity::Id owner, float radius );
void                    AddDynamicForce( Exor::Entity entity, float minForce, float maxForce );
AIGroupId               CreateAiGroup( float aggressiveDistance, float notAggressiveDistance );
Exor::Entity::Id        GetCurrentTarget( Exor::Entity::Id entity, Exor::String tagTarget );
void                    SetCurrentTarget( Exor::Entity::Id entity, Exor::String tagTarget, Exor::Entity target );
Exor::Vector3           GetCurrentTargetAsOrigin( Exor::Entity::Id entity, Exor::String tagTarget );
float                   GetCurrentTargetDistance( Exor::Entity::Id entity, Exor::String tagTarget );
int                     GetStateMachineParamInt( Exor::Entity::Id entity, Exor::String param );
void                    CreateFindTargetRequest( Exor::Entity entity, Exor::String tag, float radius, Exor::String teamRelation, Exor::String typeMask );
void                    CreateFindTargetRequest( Exor::Entity entity, Exor::String tag, float radius, Exor::String teamRelation, Exor::String typeMask, bool executeOnce );
void                    RemoveFindTargetRequest( Exor::Entity entity, Exor::String tag );
void                    ChangeAllUnitsStatesAsGroup( AIUnitsStatesAsGroup state );
void                    SetStateMachineParam( Exor::Entity::Id entity, Exor::String param, int flag );
void                    EmitStateMachineParam( Exor::Entity::Id entity, Exor::String event );
void                    SpawnUnitsNearLessDefendedOutpost( Exor::String enemyBp, int enemyCount, Exor::String seek,
                                                                  Exor::String avoid, float distance, Exor::String unitState );
bool                    IsLessDefendedOutpostExist( Exor::String seek, Exor::String avoid );
void                    AnimBoneForwardToTargetEntity( Exor::Entity::Id owner, Exor::Entity::Id targetEntity, Exor::String databaseParamName,
                                                               Exor::String databaseParamNameLength, float minHeightOffset, float maxHeightOffset );
void                    SetWanderRestOrigin( Exor::Entity entity, const Exor::Vector3 & origin );
void                    SpawnFuse( Exor::Entity::Id entity, const Exor::String bp, const float time, Exor::String targetTag );
void                    ClearVolumeUnitsSpawnersAround( Exor::Entity entity, float distance );
Exor::Entities          CreateDynamicSpawnPoints( Exor::Entity fromEntity, float inRadius, int count );
void                    EnableAmbientUnitsSpawn
void                    DisableAmbientUnitsSpawn
void                    CreateCustomFindTargetRequest( entity, tag: string, radius: float, team_relation: string, type_mask: string, finder_type: string )

```