# Выбор анимации смерти

Логика выбора анимаций смерти для юнита типа human хранится в файле `\properties\animation_selector\`**`human_death.inc`**&#x20;

Селектор обрабатывает запросы, имена которых соответствуют обстоятельствам смерти.

**Варианты запросов для выбора анимаций смерти:**

* `stand_dying` - смерть стоя;
* `squat_dying` - смерть сидя;
* `lie_dying` - смерть лежа;
* `swim_dying` - смерть во время плавания;
* `corpse_drop` и `corpse_drag` - падение и протаскивание трупа во время смерти;
* `default_dying` - специальный запрос, который делается 1 раз и запоминает, что вернулось. По этому запросу должна быть анимация смерти, которая будет проигрываться, если ничего другого не нашлось. Она нужна, чтобы не было мертвых стоящих солдат после загрузки.

### Выбор анимаций смерти

После выбора **запроса на анимацию** (перечислены выше) в условных конструкциях блока `if` проверяются разные варианты обстоятельств смерти.

**Варианты проверок:**

* [флаги обстоятельства смерти](/documentation/gem-rts-v1-ru/animacii/anymatsyonnaia_systema_yunytov/animation_selector/usloviya-dlya-aktera-human.md#spravka-po-flagam-obstoyatelstv-smerti-aktera-human) - `human_kill_flags`;
* тип территории - `terrain_pp`;
* проверка на предметы экипировки во время смерти - `human_stuff`.

Одной из проверок по **флагам обстоятельств смерти** является проверка направления: `front` или `back`.\
Если проигрыванию анимации мешает препятствие, то дальше выбор анимации идёт по списку:

1. Берется правильное направление, которое указано в значении параметра  `human_kill_flags` .
2. Флаги направления (`front` и `back`) меняются местами.
3. Используется вариант без флагов направления - предполагается, что в этом варианте выберется анимация, где солдат падает на месте и влетит в препятствие.

Основным способом указания анимации является [случайный выбор анимации](https://bestway-1.gitbook.io/documentation/gem-rts-v1-ru/animacii/anymatsyonnaia_systema_yunytov/animation_selector/pages/wZsGv2KVqKOWehZQ6D2N#id-2.-sluchainyi-vybor-animacii) смерти по ее весу из указанного списка анимаций.

<details>

<summary>Пример выбора анимаций смерти по флагу обстоятельств смерти без указания направления</summary>

```
{stand_dying
...
	{if human_kill_flags "cover_in_trench"
		{random_select
			{weight 1 "stand_die_trench_1"}
			{weight 1 "stand_die_trench_2"}
			{weight 1 "stand_die_trench_3"}
		}
	}
	[...]
	
}
```

</details>

<details>

<summary>Пример выбора анимаций смерти по флагу обстоятельств смерти с указанием направления</summary>

```
{squat_dying 
    {if human_kill_flags "front" 
        {if human_kill_flags "blast" 
            {random_select 
                {weight 1 "death_from_explosion_front"} 
                {weight 1 "death_from_explosion_front02"}
                {weight 0.5 "stand_die_back_5_blast"} 
                {weight 1 "stand_die-force_back_1"} 
                {weight 1 "stand_die-force_back_2_far"} 
                {weight 1 "stand_die-force_back_3_far"} 
            } 
        } 
        {random_select 
            {weight 1 "squat_die"} 
            {weight 1 "squat_die_back_1"} 
            {weight 1 "squat_die_back_2"} 
            {weight 1 "squat_die_force-back"} 
        }
    } 
    {if human_kill_flags "back" 
        {if human_kill_flags "blast" 
            {random_select 
                {weight 1 "death_from_explosion_back"} 
                {weight 1 "death_from_explosion_back02"} 
                {weight 0.5 "stand_die_front_1_blast"} 
                {weight 1 "stand_die-force_front_1"} 
                {weight 1 "stand_die-force_front_2"} 
                {weight 1 "stand_die-force_front_3_far"} 
                {weight 1 "stand_die-force_front_4_far"} 
            } 
        }
    }
    [...]
}
```

</details>

### Поведение объекта human после смерти

После смерти движок располагает труп по поверхности. \
Чтобы после завершения анимации смерти положение тела юнита сохранялось без изменений (например, при смерти в окопе), в настройках анимации используется свойство\
`{props "dont_update_placement_after_death"}`.\
Его можно указать в файле `properties\animation\human\human_anm.ext` или в любом списке настроек анимаций.

<details>

<summary>Пример настройки анимации смерти в human_anm.ext</summary>

```
{sequence "stand_die_trench_1" {speed 0.9} {props "dont_update_placement_after_death"} [...]}
{sequence "stand_die_trench_2" {speed 0.9} {props "dont_update_placement_after_death"} [...]}
{sequence "stand_die_trench_3" {speed 1.2} {props "dont_update_placement_after_death"} [...]}
```

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bestway-1.gitbook.io/documentation/gem-rts-v1-ru/animacii/anymatsyonnaia_systema_yunytov/animation_selector/animacii-smerti.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
