В этой статье мы разберем как создать уникального/именного/квестового (называйте как хотите) НПС. 
 Все профили НПС прописываются в файлах character_desc_локация. 
 Для раскладывания по полочкам, возьмем профиль Волка: 
 Code
 
 <specific_character id="esc_wolf" team_default = "1"> 
          <name>esc_wolf_name</name> 
          <icon>ui_npc_u_stalker_neytral_balon_1</icon> 
          <bio>esc_wolf_bio</bio> 
          <class>esc_wolf</class> 
          <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> 
            
          <rank>434</rank> 
          <reputation>5</reputation> 
          <money min="600" max="2000" infinitive="0"/> 
            
          <snd_config>characters_voice\human_01\stalker\</snd_config> 
          <crouch_type>-1</crouch_type> 
          <visual>actors\neytral\stalker_neytral_balon_1</visual> 
          <supplies> 
                  [spawn] \n 
                  wpn_pm \n 
                  ammo_9x18_fmj = 1 \n 
                  wpn_ak74u \n 
                  ammo_5.45x39_fmj \n 
                  device_torch \n 
                  hand_radio \n 
          </supplies> 
            
 #include "gameplay\character_criticals_4.xml" 
                  <start_dialog>escape_lager_volk_talk</start_dialog> 
                  <start_dialog>dm_hello_dialog</start_dialog> 
                  <actor_dialog>dm_cool_info_dialog</actor_dialog> 
                  <actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog> 
                  <actor_dialog>tm_wolf_dialog</actor_dialog> 
                  <actor_dialog>tm_wolf_reward</actor_dialog> 
                  <actor_dialog>escape_lager_volk_story</actor_dialog> 
                  <actor_dialog>escape_lager_volk_story2</actor_dialog> 
          </specific_character> 
 
 И разложим все по полочкам. 
 Code
 
 <specific_character id="esc_wolf" team_default = "1"> 
 </specific_character> 
 
 Внутри этой конструкции располагается все остальное. id - идентификатор Волка, team_default не изменяйте. 
 Code
<name>esc_wolf_name</name>
 Имя НПС, которое будет отображаться в игре. Здесь содержится ссылка на текст, но можно писать имя прямо здесь (если вы хотите, чтобы это был обычный непись с рандомным именем, то прописываете здесь: "GENERATE_NAME_нужная-группировка" (без кавычек). 
 Code
<icon>ui_npc_u_stalker_neytral_balon_1</icon>
 Здесь указывается иконка НПС, которая будет отображаться в диалоге. 
 Code
<bio>esc_wolf_bio</bio>
 На сколько я знаю, разрабы планировали кажому неписю сделать биографию, но так и не реализовали. Так что можете скопировать с любого профиля. 
 Code
<class>esc_wolf</class>
 Класс НПС. Используется для респавна НПС. Для того, чтобы у нас не создавалось куча наших "уникальных" НПС, то мы создадим свой класс. 
 Code
<community>stalker</community>
 Группировка (stalker - одиночки, bandit - бандит, dolg - Долг и т.д.) 
  
 Ранг НПС (новичок, опытный и т.д.) 
 Code
<reputation>5</reputation>
 Репутация. 
 Code
<money min="600" max="2000" infinitive="0"/>
 Количество денег, которое может быть у НПС. Соотвественно минимальное значение и максимальное. Если поставить infinitive="1", то у НПС будут бесконечные деньги (как у торговца). 
 Code
<snd_config>characters_voice\human_01\stalker\</snd_config>
 Ссылка на папку с голосом и фразами НПС. 
 Code
<crouch_type>-1</crouch_type>
 На сколько знаю, этот параметр отвечает за тип приседания. Ни разу не использовал, поэтому ничего советовать не буду. 
 Code
<visual>actors\neytral\stalker_neytral_balon_1</visual>
 Ссылка на визуальную модель НПС. Но если указать к примеру визуал экзоскелета, то и защитными характеристиками НПС будет обладать, как у экзоскелета. 
 Code
 
 <supplies> 
          [spawn] \n 
          wpn_pm \n 
          ammo_9x18_fmj = 1 \n 
          wpn_ak74u \n 
          ammo_5.45x39_fmj \n 
          device_torch \n 
          hand_radio \n 
 </supplies> 
 
 Здесь указывается список предметов, которые будут появлятся у НПС. 
 Ну а далее идут диалоги. 
 Code
<start_dialog>escape_lager_volk_talk</start_dialog>
 Используется, если нужно, чтобы диалог начинал НПС, а 
 Code
<actor_dialog>dm_cool_info_dialog</actor_dialog>
 если нужно, чтобы диалог начинал ГГ. 
 Итак, приступим к практике.
 
 Откроем файл character_desc_escape и создадим профиль нашему НПС. Назовем его Викинг, id у него будет escape_viking, оденем в экзоскелет, группировка - одиночка, оружие - Винторез, класс - esc_viking, а так же пропишем диалоговую иконку НПС в экзоскелете: 
 Code
 
 <specific_character id="escape_viking" team_default = "1"> 
          <name>Викинг</name> 
          <icon>ui_npc_u_stalker_mo_exo</icon> 
          <bio>esc_wolf_bio</bio> 
            
          <class>esc_viking</class> 
          <community>stalker</community> 
          <terrain_sect>stalker_terrain</terrain_sect> 
            
          <rank>434</rank> 
          <reputation>5</reputation> 
          <money min="600" max="25000" infinitive="0"/> 
          <panic_treshold>0</panic_treshold> 
            
          <snd_config>characters_voice\human_01\stalker\</snd_config> 
          <crouch_type>-1</crouch_type> 
            
          <visual>actors\monolit\stalker_mo_exo</visual> 
          <supplies> 
                  [spawn] \n 
                  wpn_vintorez \n 
                  ammo_9x39_pab9 = 10 \n 
          </supplies> 
            
 </specific_character> 
 
 Теперь нужно прописать нашего НПС в файле config/gameplay/npc_profile.xml: 
 Code
 
 <character id="escape_viking"> 
          <class>esc_viking</class> 
          <specific_character>escape_viking</specific_character> 
 </character> 
 
 Класс ОБЯЗАТЕЛЬНО должен совпадать с тем, который прописан в character_desc_escape, а specific_character должен совпадать с id нашего НПС в character_desc_escape. 
 Далее происываем нашего НПС в файле config/creatures/spawn_sections.ltx: 
 Code
 
 [escape_viking]:stalker 
 $spawn                          = "respawn\agr2_respawn_factory" 
 character_profile               = escape_viking 
 spec_rank                    = regular 
 community                    = stalker 
 
 В квадратных скобках прописываете любое свое название, spawn ставите от любого НПС, с character_profile все понятно, spec_rank оставляйте regular, community тоже все ясно. 
 НПС мы уже по сути создали, но мы не прописали ему логику. Без логики его будет подхватывать алайф и наш НПС пойдет бродить по Зоне куда глаза глядят. 
 Создадим логику при которой НПС будет стоять на месте, но при этом будет атаковать врагов, а после перестрелки возвращаться на свое место. 
 Создадим в папке config/scripts (ВНИМАНИЕ! НЕ gamedata/scripts, а именно config/scripts!!!) новый ltx файл, назовем его logic_viking и добавим туда такую логику: 
 Code
 
 [logic]   
 active = remark1   
 danger = danger_ignore 
 [danger_ignore]   
 ignore_distance = 5 
 [remark1]   
 no_move = true 
 
 Теперь снова откроем spawn_sections.ltx и добавим в секцию нашего нового НПС путь к логике: 
 Code
 
 [escape_viking]:stalker 
 $spawn                    = "respawn\agr2_respawn_factory" 
 character_profile               = escape_viking 
 spec_rank                    = regular 
 community                    = stalker 
 custom_data = scripts\logic_viking.ltx 
 
 Все. Создание НПС мы закончили, но теперь нам нужно его заспавнить. Для проверки нашей работы гораздо быстрее и удобней будет сделать спавн через скрипт. Как? Смотрите в этой статье.