function CreateChapter(f)
    local characters = {
        f.Character("Sherlock", "s01c04_character_Sherlock_name"),
        f.Character("Swifty", "s01c04_character_Swifty_name"),
        f.Character("Tre", "s01c04_character_Tre_name"),
        f.Character("Tru", "s01c04_character_Tru_name"),
        f.Character("Michel", "s01c04_character_Michel_name"),
        f.Character("Babbidge", "s01c04_character_Babbidge_name"),
        f.Character("MrsPrice", "s01c04_character_MrsPrice_name")
    }
    local locations = {
        f.Location("0007_TresPharmacy", {"Scenes/Locations/s01c04/0007_TresPharmacy"}),
        f.Location("0004_BabbidgeApartment", {"Scenes/Locations/s01c04/0004_BabbidgeApartment"})
    }

    local points = {
        f.KeyPointPage(1, "s01c04_key_point_1", {4}),
        f.KeyPointPage(2, "s01c04_key_point_2", {3}),
        f.KeyPointPage(3, "s01c04_key_point_3", {9}),
        f.KeyPointPage(4, "s01c04_key_point_4", {12}),
        f.KeyPointPage(5, "s01c04_key_point_5", {18}),
        f.KeyPointPage(6, "s01c04_key_point_6", {19})
    }

    local newspaper = f.Newspaper("Hamster", "s01c04_newspaper_title", "s01c04_newspaper_article", "s01c04_newspaper_author")
    return f.Chapter(1, 4, "s01c04_chapter_title", characters, locations, points, newspaper)
end

function CreateInvestigation(f)
    local missions = {
        f.Mission(1, "s01c04_mission_1", {0}, {f.SimpleAction()}, 1),
        f.Mission(2, "s01c04_mission_2", {1}, {f.SimpleAction()}, 1),
        f.Mission(3, "s01c04_mission_3", {2}, {f.SimpleAction(), f.SimpleAction(), f.SimpleAction()}, 1),
        f.Mission(4, "s01c04_mission_4", {0}, {f.SimpleAction()}, 1),
        f.Mission(5, "s01c04_mission_5", {4}, {f.ActionWithTimer(600, "s01c04_mission_5_0_motivation")}, 2),
        f.Mission(6, "s01c04_mission_6", {5}, {f.SimpleAction()}, 1),
        f.Mission(7, "s01c04_mission_7", {6,3}, {f.SimpleAction()}, 1),
        f.Mission(8, "s01c04_mission_8", {7}, {f.SimpleAction()}, 1),
        f.Mission(9, "s01c04_mission_9", {8}, {f.ActionWithTimer(900, "s01c04_mission_9_0_motivation")}, 1),
        f.Mission(10, "s01c04_mission_10", {8}, {f.SimpleAction(), f.SimpleAction()}, 1),
        f.Mission(11, "s01c04_mission_11", {9}, {f.SimpleAction(), f.SimpleAction()}, 1),
        f.Mission(12, "s01c04_mission_12", {10,11}, {f.SimpleAction()}, 1),
        f.Mission(13, "s01c04_mission_13", {12}, {f.SimpleAction()}, 1),
        f.Mission(14, "s01c04_mission_14", {13}, {f.SimpleAction()}, 2),
        f.Mission(15, "s01c04_mission_15", {14}, {f.SimpleAction()}, 1),
        f.Mission(16, "s01c04_mission_16", {14}, {f.SimpleAction()}, 1),
        f.Mission(17, "s01c04_mission_17", {14}, {f.SimpleAction()}, 1),
        f.Mission(18, "s01c04_mission_18", {15,16,17}, {f.SimpleAction()}, 1),
        f.Mission(19, "s01c04_mission_19", {18}, {f.SimpleAction()}, 1)
    }

    return f.Investigation(4, missions)
end

function PrepareLocation()
    SetupLocation(function()
        SetupAnim('Michel', 'DoingThings')
        ApplyAnim('Michel')
    end)

    ChangeLocation('0007_TresPharmacy')
end

function StartInvestigation()
    Parallel(function()
        ShowLocationCaption('s01c04_location_0_caption', 's01c04_location_0_time')
        Walk('Sherlock', 'Sherlock_point_1_0_1')
    end)

    ShowChapterTitle()
end

-- Поговорить с мистером Трэ
function ApplyMission1Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_1_0')
        CameraTo('camera_point_1_0', 1, 1)
    end)
    
    StartDialog()
    -- [Шерлок в Аптеке Трэ. Мистер Трэ стоит за прилавком, весьма раздражённый. Михель находится в другом конце Аптеки, у шкафа со склянками, вроде как расставляет их, полностью поглощенный своими мыслями. Шерлок подходит к Трэ]
    -- [Анимация: Михель расставляет пузырьки]
    Say('Sherlock', 'Friendly', 's01c04_Sherlock_mission_1_0_phrase_0', 'Tre', nil, 'Helpfully')
    SetupAnim('Tre', 'Helpfully', {notLoop=true})
    Say('Tre', 'Helpfully', 's01c04_Tre_mission_1_0_phrase_1')
    SetupAnim('Tre', 'Sympathetically', {notLoop=true})
    Say('Tre', 'Sympathetically', 's01c04_Tre_mission_1_0_phrase_2')
    Say('Sherlock', 'Amiable', 's01c04_Sherlock_mission_1_0_phrase_3')
    Say('Tre', 'SniffsMoody', 's01c04_Tre_mission_1_0_phrase_4')
    Say('Tre', 'Wrathfully', 's01c04_Tre_mission_1_0_phrase_5', 'Sherlock', nil, 'Upset')
    SetupAnim('Tre', 'Angry', {notLoop=true})
    Say('Tre', 'WrathfullyRed', 's01c04_Tre_mission_1_0_phrase_6', 'Sherlock', nil, 'Upset')
    EndDialog()
    
    -- [Шерлок отходит от прилавка]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_1_1')
        Walk('Tre', 'Tre_point_1_0')
    end)
    
    StartDialog()
    ActionCompleted()
    Say('Sherlock', 'Upset', 's01c04_Sherlock_mission_1_0_phrase_7', 'Sherlock')
    EndDialog()
end

-- Отвлечь мистера Трэ
function ApplyMission2Action0()
    -- [Шерлок стоит в отдалении от прилавка]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_2_0_1')
        CameraTo('camera_point_2_0', 1, 1)
    end)
    ZoomCamera(1.5, 1)

    StartDialog()

    SetupAnim('Sherlock', 'Thinking', {notLoop=true})
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_2_0_phrase_0', 'Sherlock')

    -- [Анимация: Шерлок достает Свифти]
    Parallel(function()
        ReleaseMouse()
        Say('Sherlock', 'spec:CraftyFaceToSwifty', 's01c04_Sherlock_mission_2_0_phrase_1')
    end)
    EndDialog()
    
    Parallel(function()
        Walk('Swifty', 'Swifty_point_2_1')
        Walk('Sherlock', 'Sherlock_point_2_0')
        MoveCamera('camera_point_2_1', 1, 1)
    end)

    -- [Свифти пробегает по полу и оказывается рядом с прилавком, на видном месте. Шерлок подходит к прилавку]
    Parallel(function()
        -- [Анимация к реплике: Шерлок указывает на Свифти]
        Play('Sherlock', 'IndignantlyPointTo')
        Sequence(function()
            StartDialog()
            Say('Sherlock', 'Indignantly', 's01c04_Sherlock_mission_2_0_phrase_2', 'Tre', nil, 'Frightened')
            EndDialog()
        end)
        Walk('Tre', 'Tre_point_2_0')
    end)
    
    StartDialog()
    -- [Анимация к реплике: Трэ хватается за голову и машет руками]
    SetupAnim('Tre', 'InPanic', {notLoop=true})
    Say('Tre', 'InPanic', 's01c04_Tre_mission_2_0_phrase_3')
    EndDialog()
    
    SetupAnim('Tre', 'Run')
    Parallel(function()
        MoveCamera('camera_point_2_1', 1)
        Walk('Swifty', 'Swifty_point_2_3')
        Walk('Tre', 'Tre_point_2_2', 2)
    end)

    SetActive('Swifty', false)
    SetTo('Swifty', 'Swifty_point_7_0')

    -- [Свифти убегает в открытую дверь подсобного помещения, Трэ бежит за ним. Шерлок заходит за прилавок и закрывает за ними дверь ]

    Walk('Sherlock', 'Sherlock_point_2_3')
    Parallel(function()
        Play('Sherlock', 'CloseDoor')
        Sequence(function()
            Delay(0.8)
            Play('UtilityRoomDoor', 'Close')
        end)
    end)

    -- Шерлок закрывает дверь

    Walk('Sherlock', 'Sherlock_point_2_4')
    
    StartDialog()
    ActionCompleted()
    Say('Sherlock', 'Contentedly', 's01c04_Sherlock_mission_2_0_phrase_4', 'Sherlock')

    EndDialog()
end

-- Найти чудодейственное лекарство (Действие 1)
function ApplyMission3Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_3_0')
        CameraTo('camera_point_3_0', 1, 1)
    end)
    
    -- [Шерлок подходит к прилавку]
    -- [Анимация: Шерлок обыскивает прилавок]
    MoveCamera('camera_point_3_0_1', 1, 1.5)
    
    StartDialog()
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_3_0_phrase_0')
    EndDialog()
    
    Play('Sherlock', 'SearchOnTable')
    
    StartDialog()
    ActionCompleted()
    Say('Sherlock', 'Concentrated', 's01c04_Sherlock_mission_3_0_phrase_1')
    EndDialog()
    
    MoveCamera('camera_point_3_0', 1, 1)
    Walk('Sherlock', 'Sherlock_point_3_0_1')
end

-- Найти чудодейственное лекарство (Действие 2)
function ApplyMission3Action1()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_3_1')
        CameraTo('camera_point_3_0', 1, 1)
    end)
    
    MoveCamera('camera_point_3_0_2', 1, 1.5)
    -- [Шерлок подходит к полке]
    -- [Анимация: Шерлок обыскивает полку]
    
    StartDialog()
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_3_1_phrase_0')
    EndDialog()
    
    Parallel(function()
        Play('Sherlock', 'SearchShelf')
        Play('Shelves', 'Open')
    end)
    
    StartDialog()
    ActionCompleted()
    Say('Sherlock', 'Concentrated', 's01c04_Sherlock_mission_3_1_phrase_1')
    EndDialog()
    
    MoveCamera('camera_point_3_0', 1, 1)
    Walk('Sherlock', 'Sherlock_point_3_1_1')
end

-- Найти чудодейственное лекарство (Действие 3)
function ApplyMission3Action2()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_3_2')
        CameraTo('camera_point_3_0', 1, 1)
    end)
    
    MoveCamera('camera_point_3_0_3', 1, 1.5)
    -- [Шерлок подходит к прилавку]
    
    StartDialog()
    Say('Sherlock', 'Annoyed', 's01c04_Sherlock_mission_3_2_phrase_0')
    -- [Анимация к реплике: Озарение]
    SetupAnim('Sherlock', 'Enlightened', {notLoop=true})
    Say('Sherlock', 'Enlightened', 's01c04_Sherlock_mission_3_2_phrase_1')
    EndDialog()
    
    -- [Шерлок подходит к стенке]
    -- [Анимация: Шерлок осматривает стенку и открывает небольшой потайной шкафчик и достает пузырек]
    Parallel(function()
        Sequence(function()
            Delay(0.2)
            Play('HidingPlace', 'Open')
        end)
        Sequence(function()
            Delay(10)
            SetActive('TreTinctureVialSafe', true)
        end)
        Sequence(function()
            Play('Sherlock', 'OpenSafeStart')
            Play('Sherlock', 'UpTincture')
            StartDialog()
            SetupAnim('Sherlock', 'LookTincture', {const=true})
            ActionCompleted()
            Say('Sherlock', 'spec:SatisfiedWithTreTincture', 's01c04_Sherlock_mission_3_2_phrase_2',
                nil, nil, nil, nil, true, false)
            EndDialog()
            Parallel(function()
                Play('Sherlock', 'HideTincture')
                Sequence(function()
                    Delay(1.1)
                    SetActive('TreTinctureVialSafe', false)
                end)
            end)
        end)
    end)

    MoveCamera('camera_point_3_0', 1, 1)
    -- [Анимация: Шерлок прячет пузырек в карман]
    -- [Шерлок отходит на свободное место]
    Walk('Sherlock', 'Sherlock_point_3_2_1')
end

-- Познакомиться с помощником аптекаря
function ApplyMission4Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_4_0')
        CameraTo('camera_point_4_0', 1, 1)
    end)
    MoveCamera('camera_point_4_0', 1 , 1.5)
    
    
    -- [Шерлок подходит к Михелю]
    ResetAnim('Michel')
    Walk('Michel', 'Michel_point_4_0')
    
    StartDialog()
    Say('Sherlock', 'Politely', 's01c04_Sherlock_mission_4_0_phrase_0', 'Michel', nil, 'Moody')
    Say('Michel', 'Moody', 's01c04_Michel_mission_4_0_phrase_1', nil, s01c04_Michel_tmp_name_1)
    SetupAnim('Sherlock', 'TalkGesticulation', {notLoop=true})
    Say('Sherlock', 'Emphatically', 's01c04_Sherlock_mission_4_0_phrase_2')

    Say('Michel', 'Annoyed', 's01c04_Michel_mission_4_0_phrase_3', nil, s01c04_Michel_tmp_name_1)
    EndDialog()
    
    -- [Шерлок отходит в сторону]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_4_1')
        MoveCamera('camera_point_4_1', 1, 1)
        Sequence(function()
            Walk('Michel', 'Michel_point_4_1')
            SetupAnim('Michel', 'DoingThings')
            ApplyAnim('Michel')
        end)
    end)

    ActionCompleted()
    -- [Анимация к реплике: Задумчиво]
    
    StartDialog()
    SetupAnim('Sherlock', 'Thinking', {notLoop=true})
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_4_0_phrase_4', 'Sherlock')
    EndDialog()
end

-- Проявить себя перед помощником аптекаря
function ApplyMission5Action0Start()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_5_0')
        CameraTo('camera_point_5_0', 1, 1)
    end)
    ResetAnim('Michel')
    Parallel(function()
        MoveCamera('camera_point_5_0', 1 , 1.5)
        Walk('Michel', 'Michel_point_5_0')
    end)

    StartDialog()
    -- [Шерлок вновь подходит к Михелю]
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_5_0_phrase_0', 'Michel', nil, 'Moody')
    Say('Michel', 'Moody', 's01c04_Michel_mission_5_0_phrase_1', nil, s01c04_Michel_tmp_name_1)

    -- [Анимация к реплике: Жестикуляция при разговоре]
    SetupAnim('Sherlock', 'TalkGesticulation', {notLoop=true})
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_5_0_phrase_2')

    Say('Sherlock', 'Confidently', 's01c04_Sherlock_mission_5_0_phrase_3')
    SetupAnim('Sherlock', 'ShowDifference', {notLoop=true})
    Say('Sherlock', 'Friendly', 's01c04_Sherlock_mission_5_0_phrase_4')
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_5_0_phrase_5')
    Say('Michel', 'Calm', 's01c04_Michel_mission_5_0_phrase_6', nil, s01c04_Michel_tmp_name_1)
    -- [Анимация к реплике: Удивляется]
    SetupAnim('Sherlock', 'Surprised', {notLoop=true})
    Say('Sherlock', 'Surprised', 's01c04_Sherlock_mission_5_0_phrase_7')
    Say('Michel', 'Calm', 's01c04_Michel_mission_5_0_phrase_8')
    EndDialog()
    
    -- [Шерлок отходит от Михеля]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_5_1')
        MoveCamera('camera_point_5_1', 1, 1)
        Sequence(function()
            Walk('Michel', 'Michel_point_5_1')
            SetupAnim('Michel', 'DoingThings')
            ApplyAnim('Michel')
        end)
    end)
end

-- Проявить себя перед помощником аптекаря - время вышло
function ApplyMission5Action0TimeUp()
    -- [Михель прекращает расставлять препараты и  отходит от шкафа]
    ResetAnim('Michel')
    Walk('Michel', 'Michel_point_5_2')
end

-- Проявить себя перед помощником аптекаря - Завершить
function ApplyMission5Action0Completed()
    StartDialog()
    ActionCompleted()
    CameraTo('Sherlock', 1, 1)
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_5_0_phrase_9')
    EndDialog()
end

-- Поговорить с Михелем
function ApplyMission6Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_6_0')
        CameraTo('camera_point_6_0', 1, 1.5)
    end)
    --MoveCamera('camera_point_6_0', 1 , 1.5)
    
    StartDialog()
    -- [Шерлок подходит к Михелю]
    Say('Sherlock', 'Amiable', 's01c04_Sherlock_mission_6_0_phrase_0', 'Michel', nil, 'Calm')
    Say('Michel', 'Calm', 's01c04_Michel_mission_6_0_phrase_1')
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_6_0_phrase_2')
    -- [Анимация к реплике: задумчиво чешет голову или трет подбородок]
    SetupAnim('Michel', 'ScratchesHisHeadThoughtfully', {notLoop=true})
    Say('Michel', 'Thoughtful', 's01c04_Michel_mission_6_0_phrase_3')
    Say('Michel', 'Calm', 's01c04_Michel_mission_6_0_phrase_4')
    SetupAnim('Sherlock', 'OkayOkay', {notLoop=true})
    Say('Sherlock', 'Reconcile', 's01c04_Sherlock_mission_6_0_phrase_5')

    Say('Michel', 'Thoughtful', 's01c04_Michel_mission_6_0_phrase_6', 'Sherlock', nil, 'Calm')
    Say('Michel', 'Calm', 's01c04_Michel_mission_6_0_phrase_7', 'Sherlock', nil, 'Calm')
    -- [Анимация к реплике: печально смотрит вниз и мотает головой]
    SetupAnim('Michel', 'Sadly', {notLoop=true})
    Say('Michel', 'Sad', 's01c04_Michel_mission_6_0_phrase_8', 'Sherlock', nil, 'Calm')
    Say('Michel', 'Calm', 's01c04_Michel_mission_6_0_phrase_9', 'Sherlock', nil, 'Calm')
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_6_0_phrase_10')
    Say('Michel', 'Calm', 's01c04_Michel_mission_6_0_phrase_11')
    -- [Анимация к реплике: думает]
    SetupAnim('Sherlock', 'Thinking', {notLoop=true})
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_6_0_phrase_12')
    Say('Michel', 'Calm', 's01c04_Michel_mission_6_0_phrase_13')
    ActionCompleted()
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_6_0_phrase_14')
    EndDialog()
    
    -- [Анимация: Шерлок даёт Михелю визитку]
    Parallel(function()
        Play('Sherlock', 'Give')
        Play('Michel', 'TakesABusinessCard')
        Sequence(function()
            Delay(0.3)
            SetActive('BusinessCard', true)
            Delay(0.7)
            SetActive('BusinessCard', false)
        end)
    end)

    -- [Шерлок отходит от Михеля]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_6_1')
        MoveCamera('camera_point_6_1', 1, 1)
    end)
end

-- Навестить мистера Бэббиджа
function ApplyMission7Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_7_0')
        CameraTo('camera_point_7_0', 1, 1)
    end)
    
    -- [Шерлок подходит к двери аптеки]
    Walk('Sherlock', 'Sherlock_point_7_1')
    
    StartDialog()
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_7_0_phrase_0', 'Sherlock')
    -- [Анимация к реплике: озарение]
    SetupAnim('Sherlock', 'Enlightened', {notLoop=true})
    Say('Sherlock', 'Confidently', 's01c04_Sherlock_mission_7_0_phrase_1', 'Sherlock')
    EndDialog()
    
    -- [Из угла выбегает Свифти и подбегает к Шерлоку]
    SetActive('Swifty', true)
    Walk('Swifty', 'Swifty_point_7_1')
    
    StartDialog()
    Say('Sherlock', 'Joyous', 's01c04_Sherlock_mission_7_0_phrase_2', 'Swifty', nil, 'SelfConfidently')
    Say('Swifty', 'SelfConfidently', 's01c04_Swifty_mission_7_0_phrase_3')
    ActionCompleted()
    Say('Sherlock', 'Satisfied', 's01c04_Sherlock_mission_7_0_phrase_4')
    EndDialog()
    
    -- [Анимация: Шерлок сажает Свифти в карман]
    PocketMouse()
    -- [Шерлок уходит из Аптеки и попадает в Локацию “Квартира Бэббиджа”]
    Play('TresPharmacyDoor', 'Open')
    Walk('Sherlock', 'Sherlock_point_7_2')

    SetupLocation(function()
        SetupAnim('Babbidge', 'DoingSomething')
        ApplyAnim('Babbidge')
        ZoomCamera(1.5, 0.1)
    end)

    ChangeLocation('0004_BabbidgeApartment')
    ShowLocationCaption('s01c04_location_1_caption', 's01c04_location_1_time')
    -- [В квартире Бэббиджа стало значительно меньше различных странных машин. Учёный стоит у одного из столов и что-то мастерит. Шерлок входит в комнату и останавливается у двери]
    -- [Анимация: Бэббидж склонился над столом и мастерит что-то с помощью отвёртки]
    Play('Door', 'Open')
    Walk('Sherlock', 'Sherlock_point_8_0')
    Play('Door', 'Close')
end

-- Обратиться за помощью к мистеру Бэббиджу
function ApplyMission8Action0()
    -- [Шерлок подходит к Бэббиджу]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_8_1')
        CameraTo('camera_point_8_0', 1, 1.5)
    end)
    
    StartDialog()
    Say('Sherlock', 'Amiable', 's01c04_Sherlock_mission_8_0_phrase_0', 'Babbidge', nil, 'Calm')
    EndDialog()
    
    ResetAnim('Babbidge')
    
    Walk('Babbidge', 'Babbidge_point_8_0')
    -- [Бэббидж отвлекается от своих дел и поворачивается к Шерлоку]
    -- [Анимация к реплике: радостно и возбужденно размахивает руками]
    
    StartDialog()
    SetupAnim('Babbidge', 'Excitedly', {notLoop=true})
    Say('Babbidge', 'Joyous', 's01c04_Babbidge_mission_8_0_phrase_1')
    Say('Sherlock', 'Reconcile', 's01c04_Sherlock_mission_8_0_phrase_2')
    SetupAnim('Babbidge', 'InSurprise', {notLoop=true})
    Say('Babbidge', 'Surprised', 's01c04_Babbidge_mission_8_0_phrase_3', 'Sherlock', nil, 'Amiable')
    -- [Анимация к реплике: указывает на оборудование]
    SetupAnim('Sherlock', 'PointToPerson_right', {notLoop=true})
    Say('Sherlock', 'Amiable', 's01c04_Sherlock_mission_8_0_phrase_4')

    ActionCompleted()
    Say('Babbidge', 'Interested', 's01c04_Babbidge_mission_8_0_phrase_5')
    EndDialog()
    
    -- [Шерлок отходит от Бэббиджа ближе к столу]
    Parallel(function()
        Walk('Babbidge', 'Babbidge_point_8_1')
        Walk('Sherlock', 'Sherlock_point_8_2')
        MoveCamera('camera_point_8_1', 1)
    end)
end

-- Отправить Бэббиджа в аптеку
function ApplyMission9Action0Start()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_9_0')
        CameraTo('camera_point_9_0', 1, 1.5)
    end)
    
    StartDialog()
    -- [Шерлок подходит к Бэббиджу]
    Say('Sherlock', 'Amiable', 's01c04_Sherlock_mission_9_0_phrase_0', 'Babbidge', nil, 'Calm')
    Say('Babbidge', 'Discomposedly', 's01c04_Babbidge_mission_9_0_phrase_1')
    -- [Анимация к реплике: Уточняет]
    SetupAnim('Sherlock', 'Specify', {notLoop=true})
    Say('Sherlock', 'Archly', 's01c04_Sherlock_mission_9_0_phrase_2')
    -- [Анимация к реплике: Удивляется]
    SetupAnim('Babbidge', 'InSurprise', {notLoop=true})
    Say('Babbidge', 'Surprised', 's01c04_Babbidge_mission_9_0_phrase_3')
    Say('Sherlock', 'Archly', 's01c04_Sherlock_mission_9_0_phrase_4')
    -- [Анимация к реплике: Растно соглашается - кивает головой или машет руками]
    SetupAnim('Babbidge', 'Excitedly', {notLoop=true})
    Say('Babbidge', 'Joyous', 's01c04_Babbidge_mission_9_0_phrase_5')
    -- [Бэббидж уходит из квартиры]
    EndDialog()
    
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_9_1')
        Play('Door', 'Open')
        Walk('Babbidge', 'Babbidge_point_9_0')
    end)
    Play('Door', 'Close')
    ZoomCamera(1, .5)
end

-- Отправить Бэббиджа в аптеку - время вышло
function ApplyMission9Action0TimeUp()
    -- [Бэббидж возвращается и останавливается недалеко от двери]
    Play('Door', 'Open')
    Walk('Babbidge', 'Babbidge_point_9_1')
    Play('Door', 'Close')
end

-- Отправить Бэббиджа в аптеку - Завершить
function ApplyMission9Action0Completed()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_9_2')
        Walk('Babbidge', 'Babbidge_point_9_2')
        CameraTo('camera_point_9_1', 1, 1.5)
    end)
    
    StartDialog()
    -- [Бэббидж проходит чуть вперед, вглубь комнаты, Шерлок подходит к нему]
    -- [Анимация к реплике: возбужденно размахивает руками]
    SetupAnim('Babbidge', 'Joyfully', {notLoop=true})
    Say('Babbidge', 'Discomposedly', 's01c04_Babbidge_mission_9_0_phrase_6')
    Say('Babbidge', 'Doubt', 's01c04_Babbidge_mission_9_0_phrase_7')
    Say('Sherlock', 'Mentor', 's01c04_Sherlock_mission_9_0_phrase_8')
    Say('Babbidge', 'Calm', 's01c04_Babbidge_mission_9_0_phrase_9', 'Sherlock', nil, 'Calm')
    -- [Анимация: Бэббидж отдает “Тинктуру” Шерлоку]
    EndDialog()
    
    Parallel(function()
        Play('Babbidge', 'GiveMedicine')
        Sequence(function()
            Delay(1.7)
            SetActive('TreTinctureVial', true)
        end)
        Sequence(function()
            Delay(1)
            Play('Sherlock', 'TakeShort')
            Play('Sherlock', 'UpTincture')
            StartDialog()
            SetupAnim('Sherlock', 'LookTincture', {const=true})
            Say('Sherlock', 'spec:SatisfiedWithTruTincture', 's01c04_Babbidge_mission_9_0_phrase_9',
                nil, nil, nil, nil, true, false)
            EndDialog()
            Parallel(function()
                Play('Sherlock', 'HideTincture')
                Sequence(function()
                    Delay(1.1)
                    SetActive('TreTinctureVial', false)
                end)
            end)
        end)
    end)
    -- [Анимация: Шерлок поднимает пузырек вверх и смотрит на него]
    
    StartDialog()
    ActionCompleted()
    Say('Sherlock', 'spec:SatisfiedWithTruTincture', 's01c04_Sherlock_mission_9_0_phrase_10')
    EndDialog()
    
    -- [Анимация: Шерлок прячет “Тинктуру” в карман]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_9_3')
        Sequence(function()
            Walk('Babbidge', 'Babbidge_point_9_3')
            Walk('Babbidge', 'Babbidge_point_9_3_1')
        end)
    end)

    SetupAnim('Babbidge', 'DoingSomething')
    ApplyAnim('Babbidge')
    ZoomCamera(1, .5)
end

-- Проанализировать Тинктуру Трэ (Действие 1)
function ApplyMission10Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_10_0')
        CameraTo('camera_point_10_0', 1, 1.5)
    end)
    
    StartDialog()
    -- [Шерлок подходит к столу для химических опытов]
    -- [Анимация к реплике: думает]
    SetupAnim('Sherlock', 'Thinking', {notLoop=true})
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_10_0_phrase_0')
    -- [Анимация: Шерлок достает 2 колбы и поднимает их вверх]
    --Play('Sherlock', '')
    Say('Sherlock', 'spec:SurgicalMaskWithTwoFlask', 's01c04_Sherlock_mission_10_0_phrase_1')
    EndDialog()
    -- [Анимация: Шерлок наклоняется к столу, зажигает горелку, переливает что-то из одной колбы в другую]
    -- [Шерлок отклоняется от стола]
--[[    Parallel(function()
        Play('Sherlock', 'CompareStart')
        Sequence(function()
            Delay(0.5)
            SetActive('FlaskY', true)
            SetActive('FlaskB', true)
        end)
    end)--]]
    
    Parallel(function()
        Play('Sherlock', 'DoChemistry')
        Play('ChemistryTable', 'DoChemistry')
    end)
    
    StartDialog()
    ActionCompleted()
    Say('Sherlock', 'Contentedly', 's01c04_Sherlock_mission_10_0_phrase_2')
    EndDialog()
    
    -- [Шерлок отходит от стола]
    Walk('Sherlock', 'Sherlock_point_10_1')
    ZoomCamera(1, .5)
end

-- Проанализировать Тинктуру Трэ (Действие 2)
function ApplyMission10Action1()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_10_0')
        CameraTo('camera_point_10_0', 1, 1.5)
    end)
    
    -- [Шерлок подходит к столу для химических опытов]
    -- [Анимация: Шерлок достает лист бумаги и колбу]
    -- [Анимация: Шерлок с листом в одной руке и колбой в другой, мотает головой, глядя то на один, то на другой (играется на фоне всех реплик дальше)]
    Parallel(function()
        Play('Sherlock', 'CompareStart')
        Sequence(function()
            Delay(0.5)
            SetActive('FlaskB', true)
            SetActive('ListL', true)
        end)
    end)
    
    StartDialog()
    SetupAnim('Sherlock', 'CompareLoop', {const=true})
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_10_1_phrase_0')
    Say('Sherlock', 'Doubt', 's01c04_Sherlock_mission_10_1_phrase_1')
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_10_1_phrase_2')
    ActionCompleted()
    Say('Sherlock', 'spec:BewilderedWithSheet', 's01c04_Sherlock_mission_10_1_phrase_3')
    EndDialog()
    
    -- [Анимация: Шерлок прячет лист и колбу]
    Parallel(function()
        Play('Sherlock', 'CompareFin')
        Sequence(function()
            Delay(0.7)
            SetActive('FlaskB', false)
            SetActive('ListL', false)
        end)
    end)
    Walk('Sherlock', 'Sherlock_point_10_1')
    ZoomCamera(1, .5)
end

-- Проанализировать Тинктуру Тру (Действие 1)
function ApplyMission11Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_11_0')
        CameraTo('camera_point_11_0', 1, 1.5)
    end)
    
    StartDialog()
    -- [Шерлок подходит к столу для химических опытов]
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_11_0_phrase_0')
    -- [Анимация: Шерлок достает 2 колбы и поднимает их вверх]
    Say('Sherlock', 'spec:SurgicalMaskWithTwoFlask', 's01c04_Sherlock_mission_11_0_phrase_1')
    EndDialog()
    
    -- [Анимация: Шерлок наклоняется к столу, зажигает горелку, переливает что-то из одной колбы в другую]
    Parallel(function()
        Play('Sherlock', 'DoChemistry')
        Play('ChemistryTable', 'DoChemistry')
    end)
    -- [Шерлок отклоняется от стола]
    -- [Анимация: Шерлок достает 2 колбы и поднимает их вверх]
    
    StartDialog()
    ActionCompleted()
    Say('Sherlock', 'spec:SurgicalMaskWithTwoFlask', 's01c04_Sherlock_mission_11_0_phrase_2')
    EndDialog()
    
    -- [Шерлок прячет колбы и отходит от стола]
    Walk('Sherlock', 'Sherlock_point_11_1')
    ZoomCamera(1, .5)
end

-- Проанализировать Тинктуру Тру (Действие 2)
function ApplyMission11Action1()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_11_0')
        CameraTo('camera_point_11_0', 1, 1.5)
    end)
    
    -- [Анимация: Шерлок достает лист бумаги и колбу]
    -- [Анимация: Шерлок с листом в одной руке и колбой в другой, мотает головой, глядя то на один, то на другой (играется на фоне всех реплик дальше)]
    Parallel(function()
        Play('Sherlock', 'CompareStart')
        Sequence(function()
            Delay(0.5)
            SetActive('FlaskY', true)
            SetActive('ListL', true)
        end)
    end)
    
    StartDialog()
    SetupAnim('Sherlock', 'CompareLoop', {const=true})
    Say('Sherlock', 'Contentedly', 's01c04_Sherlock_mission_11_1_phrase_0')
    Say('Sherlock', 'spec:BewilderedWithSheet', 's01c04_Sherlock_mission_11_1_phrase_1')
    ActionCompleted()
    Say('Sherlock', 'Surprised', 's01c04_Sherlock_mission_11_1_phrase_2')
    EndDialog()
    
    -- [Анимация: Шерлок прячет лист и колбу]
    Parallel(function()
        Play('Sherlock', 'CompareFin')
        Sequence(function()
            Delay(0.7)
            SetActive('FlaskY', false)
            SetActive('ListL', false)
        end)
    end)
    Walk('Sherlock', 'Sherlock_point_10_1')
    ZoomCamera(1, .5)
end

-- Сравнить результаты
function ApplyMission12Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_12_0')
        CameraTo('camera_point_12_0', 1, 1.5)
    end)

    -- [Шерлок стоит посреди квартиры Бэббиджа]
    -- [Анимация: Шерлок достает 2 листа бумаги]
    -- [Анимация: Шерлок с двумя листами в руках, мотает головой, глядя то на один, то на другой (играется на фоне всех реплик дальше)]
    Parallel(function()
        Play('Sherlock', 'CompareStart')
        Sequence(function()
            Delay(0.5)
            SetActive('ListL', true)
            SetActive('ListR', true)
        end)
    end)
    
    StartDialog()
    SetupAnim('Sherlock', 'CompareLoop', {const=true})
    Say('Sherlock', 'spec:ThoughtfulWithTwoSheets', 's01c04_Sherlock_mission_12_0_phrase_0', 'Sherlock')
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_12_0_phrase_1')
    Say('Sherlock', 'InDoubt', 's01c04_Sherlock_mission_12_0_phrase_2')
    EndDialog()
    
    Parallel(function()
        Play('Sherlock', 'CompareFin')
        Sequence(function()
            Delay(0.7)
            SetActive('ListL', false)
            SetActive('ListR', false)
        end)
    end)
    ResetAnim('Sherlock')
    -- [Анимация: Шерлок прячет оба листа]
    -- [Анимация к реплике: думает]
    
    StartDialog()
    SetupAnim('Sherlock', 'Thinking', {notLoop=true})
    Say('Sherlock', 'Thoughtful', 's01c04_Sherlock_mission_12_0_phrase_3')
    EndDialog()
    
    MoveCamera('camera_point_12_1', 1, 1)
    -- [Стук в дверь]
    Play('Knock', 'Knock')
    -- [Анимация: Шерлок оборачивается на стук]
    ResetAnim('Babbidge')
    Parallel(function()
        Play('Sherlock', 'ReactOnNoise_right')
        Walk('Babbidge', 'Babbidge_point_12_0_1')
    end)
    -- [Анимация: Бэббидж оборачивается на стук]
    -- [Бэббидж идёт открывать, Шерлок следует за ним]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_12_1')
        Walk('Babbidge', 'Babbidge_point_12_0')
    end)
    SetActive("Michel", true)
    -- [Анимация: Бэббидж открывает дверь]
    -- [В квартиру входит Михель]
    Play('Door', 'Open')
    Parallel(function()
        Walk('Michel', 'Michel_point_12_0')
        Walk('Babbidge', 'Babbidge_point_12_1')
    end)
    Play('Door', 'Close')
    -- [Анимация к реплике: Удивляется]
    
    StartDialog()
    SetupAnim('Sherlock', 'Surprised', {notLoop=true})
    Say('Sherlock', 'Amazedly', 's01c04_Sherlock_mission_12_0_phrase_4', 'Michel', nil, 'Gloomily')

    Say('Michel', 'Gloomily', 's01c04_Michel_mission_12_0_phrase_5')
    Say('Sherlock', 'Anxious', 's01c04_Sherlock_mission_12_0_phrase_6')
    EndDialog()
    
    -- [Анимация: Михель замечает оборудование на столе и заинтересованно оборачивается к ему]
    Play('Michel', 'LookingInterestedly')
    -- [Михель подходит к химическому столу, Шерлок следует за ним (или поворачивается, если стол недалеко)]
    Parallel(function()
        Sequence(function()
            Delay(1)
            Walk('Sherlock', 'Sherlock_point_12_1_1')
            Walk('Sherlock', 'Sherlock_point_12_2')
        end)
        Sequence(function()
            Walk('Michel', 'Michel_point_12_1_1')
            Walk('Michel', 'Michel_point_12_1')
        end)
        Walk('Babbidge', 'Babbidge_point_12_2')
        MoveCamera('camera_point_12_2', 1)
    end)
    
    StartDialog()
    SetupAnim('Babbidge', 'DoingSomething')
    ApplyAnim('Babbidge')
    -- [Анимация к реплике: Михель заинтересованно и с восхищением рассматривает стол]
    SetupAnim('Michel', 'Admiringly', {notLoop=true})
    Say('Michel', 'Admiringly', 's01c04_Michel_mission_12_0_phrase_7', 'Sherlock', nil, 'Calm')
    -- [Анимация к реплике: Жестикуляция при разговоре]
    SetupAnim('Sherlock', 'TalkGesticulation', {notLoop=true})
    Say('Sherlock', 'Anxious', 's01c04_Sherlock_mission_12_0_phrase_8')
    EndDialog()
    
    -- [Михель поворачивается к Шерлоку]
    Walk('Michel', 'Michel_point_12_2')
    
    StartDialog()
    Say('Michel', 'Gloomily', 's01c04_Michel_mission_12_0_phrase_9')
    Say('Sherlock', 'Anxious', 's01c04_Sherlock_mission_12_0_phrase_10')
    ActionCompleted()
    -- [Анимация к реплике: Озарение]
    SetupAnim('Sherlock', 'Enlightened', {notLoop=true})
    Say('Sherlock', 'WithinTemptation', 's01c04_Sherlock_mission_12_0_phrase_11')
    EndDialog()
end

-- Последовать за Михелем
function ApplyMission13Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_13_0')
        CameraTo('camera_point_13_0', 1, 1.5)
    end)
    
    -- [Шерлок подходит к Бэббиджу]
    ResetAnim('Babbidge')
    Parallel(function()
        Walk('Babbidge', 'Babbidge_point_13_0')
        Walk('Michel', 'Michel_point_13_0')
    end)
    
    StartDialog()
    Say('Sherlock', 'Conspirators', 's01c04_Sherlock_mission_13_0_phrase_0', 'Babbidge', nil, 'Calm')
    Say('Babbidge', 'Serious', 's01c04_Babbidge_mission_13_0_phrase_1')
    EndDialog()
    
    Walk('Sherlock', 'Sherlock_point_13_1')

    -- [Анимация к реплике: Шепчет на ухо]
    StartDialog()
    SetupAnim('Sherlock', 'WhisperInEar', {notLoop=true})
    Say('Sherlock', 'Conspirators', 's01c04_Sherlock_mission_13_0_phrase_2')
    EndDialog()
    
    -- [Анимация: Бэббидж кивает]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_13_2')
        MoveCamera('camera_point_13_1', 0.5, 1)
    end)

    StartDialog()
    Say('Sherlock', 'Excited', 's01c04_Sherlock_mission_13_0_phrase_3', 'Michel', nil, 'Calm')
    EndDialog()
    
    -- [Шерлок и Михель покидают квартиру Бэббиджа]
    Parallel(function()
        Play('Door', 'Open')
        Walk('Sherlock', 'Sherlock_point_13_4')
        Sequence(function()
            Delay(0.8)
            Walk('Michel', 'Michel_point_13_1')
            Walk('Michel', 'Michel_point_13_2')
        end)
    end)
    Play('Door', 'Close')

    SetupLocation(function()
        SetTo('Sherlock', 'Sherlock_point_14_0_1')
        SetTo('Michel', 'Michel_point_14_0_1')
        SetTo('Tre', 'Tre_point_14_0_1')
        SetActive('Tru', true)
        SetupAnim('Tre', 'LongSwears')
        ApplyAnim('Tre')
        SetupAnim('Tru', 'LongSwears')
        ApplyAnim('Tru')
    end)
    ChangeLocation('0007_TresPharmacy')
    ShowLocationCaption('s01c04_location_2_caption', 's01c04_location_2_time')
    -- [Посреди аптеки стоят Трэ и Тру и ругаются. Шерлок и Михель заходят в аптеку]
    -- [Анимация: Трэ и Тру ругаются]
    Play('TresPharmacyDoor', 'Open')
    Parallel(function()
        Walk('Michel', 'Michel_point_14_1')
        Sequence(function()
            Delay(0.5)
            Walk('Sherlock', 'Sherlock_point_14_1')
        end)
        CameraTo('camera_point_14_0')
    end)
    Play('TresPharmacyDoor', 'Close')
    ActionCompleted()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_14_1_1')
        MoveCamera('camera_point_14_0_1', 1)
    end)
end

-- Разнять аптекарей
function ApplyMission14Action0()

    CameraTo('camera_point_14_0_1', 1, 1)

    StartDialog()
    ResetAnim('Tre')
    ResetAnim('Tru')
    -- [Анимация к реплике: разгневанно размахивает руками]
    SetupAnim('Tre', 'Evilly', {notLoop=true})
    Say('Tre', 'Wrathfully', 's01c04_Tre_mission_14_0_phrase_0', 'Tru', nil, 'Evilly')

    -- [Анимация к реплике: злобно наклоняется вперед]
    SetupAnim('Tru', 'BendsAndTalk', {notLoop=true})
    Say('Tru', 'Evilly', 's01c04_Tru_mission_14_0_phrase_1')

    -- [Анимация к реплике: грозит кулаком]
    SetupAnim('Tre', 'Angry', {notLoop=true})
    Say('Tre', 'Wrathfully', 's01c04_Tre_mission_14_0_phrase_2')

    -- [Анимация к реплике: возмущенно всплескивает руками]
    SetupAnim('Tru', 'SplashHands', {notLoop=true})
    Say('Tru', 'Evilly', 's01c04_Tru_mission_14_0_phrase_3')

    -- [Анимация к реплике: машет двумя кулаками]
    SetupAnim('Tre', 'Furious', {notLoop=true})
    Say('Tre', 'WrathfullyRed', 's01c04_Tre_mission_14_0_phrase_4')

    -- [Анимация к реплике: грозит кулаком]
    SetupAnim('Tre', 'Angry', {notLoop=true})
    Say('Tre', 'EvillyRed', 's01c04_Tre_mission_14_0_phrase_5')

    -- [Анимация к реплике: машет двумя кулаками]
    SetupAnim('Tru', 'SwearsViolently', {notLoop=true})
    Say('Tru', 'WrathfullyRed', 's01c04_Tru_mission_14_0_phrase_6')

    -- [Анимация к реплике: грозит кулаком]
    SetupAnim('Tre', 'Angry', {notLoop=true})
    Say('Tre', 'EvillyRed', 's01c04_Tre_mission_14_0_phrase_7')
    EndDialog()
    
    -- [Шерлок подходит к Трэ и Тру]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_14_2')
        MoveCamera('camera_point_14_1', 1, 1.5)
        Walk('Michel', 'Michel_point_14_2')
    end)

    Parallel(function()
        -- [Анимация к реплике: Шерлок разнимает ругающихся]
        Play('Sherlock', 'SetApart')
        Sequence(function()
            StartDialog()
            Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_14_0_phrase_8', 'Sherlock')
            EndDialog()
        end)
    end)

    -- [Анимация к реплике: машет двумя кулаками]
    
    StartDialog()
    SetupAnim('Tre', 'Furious', {notLoop=true})
    Say('Tre', 'Wrathfully', 's01c04_Tre_mission_14_0_phrase_9')

    Say('Sherlock', 'InColdBlood', 's01c04_Sherlock_mission_14_0_phrase_10')
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_14_0_phrase_11')
    Say('Tru', 'Evilly', 's01c04_Tru_mission_14_0_phrase_12')
    ActionCompleted()
    Say('Tre', 'Wrathfully', 's01c04_Tre_mission_14_0_phrase_13', 'Tre')
    EndDialog()
    
    -- [Тру и Трэ расходятся в разные стороны. Михель всё ещё стоит у дверей]
    Parallel(function()
        ZoomCamera(1, 1)
        Walk('Tre', 'Tre_point_14_1')
        Sequence(function()
            Delay(0.5)
            Walk('Tru', 'Tru_point_14_0_1')
            Walk('Tru', 'Tru_point_14_0')
        end)
    end)
end

-- Поговорить с мистером Трэ
function ApplyMission15Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_15_0')
        CameraTo('camera_point_15_0', 1, 1)
    end)
    ZoomCamera(1.5, 1)
    
    StartDialog()
    -- [Шерлок подходит к Трэ]
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_15_0_phrase_0', 'Tre', nil, 'Wrathfully')
    -- [Анимация к реплике: разгневанно размахивает руками]
    SetupAnim('Tre', 'Evilly', {notLoop=true})
    Say('Tre', 'Wrathfully', 's01c04_Tre_mission_15_0_phrase_1')

    -- [Анимация к реплике: Жестикуляция при разговоре]
    SetupAnim('Sherlock', 'TalkGesticulation', {notLoop=true})
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_15_0_phrase_2')

    -- [Анимация к реплике: изумляется]
    SetupAnim('Tre', 'Thoughtfully', {notLoop=true})
    Say('Tre', 'Amazedly', 's01c04_Tre_mission_15_0_phrase_3', 'Sherlock', nil, 'Calm')
    Say('Tre', 'Thoughtful', 's01c04_Tre_mission_15_0_phrase_4', 'Sherlock', nil, 'Calm')
    -- [Анимация к реплике: мотает головой]
    SetupAnim('Tre', 'Annoyed', {notLoop=true})
    Say('Tre', 'Annoyed', 's01c04_Tre_mission_15_0_phrase_5', 'Sherlock', nil, 'Calm')
    ActionCompleted()
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_15_0_phrase_6')
    EndDialog()
    
    -- [Шерлок отходит от Трэ]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_15_1')
        MoveCamera('camera_point_15_1', 1, 1)
    end)
end

-- Поговорить с мистером Тру
function ApplyMission16Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_16_0')
        CameraTo('camera_point_16_0', 1, 1)
    end)
    ZoomCamera(1.5, 1)
    
    StartDialog()
    -- [Шерлок подходит к Тру]
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_16_0_phrase_0', 'Tru', nil, 'Evilly')
    -- [Анимация к реплике: злобно наклоняется вперед]
    SetupAnim('Tru', 'BendsAndTalk', {notLoop=true})
    Say('Tru', 'Evilly', 's01c04_Tru_mission_16_0_phrase_1')
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_16_0_phrase_2')
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_16_0_phrase_3')
    Say('Tru', 'TakenAback', 's01c04_Tru_mission_16_0_phrase_4')
    -- [Анимация к реплике: Жестикуляция при разговоре]
    SetupAnim('Sherlock', 'TalkGesticulation', {notLoop=true})
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_16_0_phrase_5')
    -- [Анимация к реплике: опускает голову, пожимает плечами, разводит руками]
    SetupAnim('Tru', 'Embarrassed', {notLoop=true})
    Say('Tru', 'Embarrassed', 's01c04_Tru_mission_16_0_phrase_6')
    ActionCompleted()
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_16_0_phrase_7')
    EndDialog()
    
    -- [Шерлок отходит от Тру]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_16_1')
        MoveCamera('camera_point_15_1', 1, 1)
    end)
end

-- Поговорить с Михелем
function ApplyMission17Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_17_0')
        CameraTo('camera_point_17_0', 1, 1)
    end)
    ZoomCamera(1.5, 1)
    
    StartDialog()
    -- [Шерлок подходит к Михелю]
    Say('Sherlock', 'Interested', 's01c04_Sherlock_mission_17_0_phrase_0', 'Michel', nil, 'Moody')
    Say('Michel', 'Moody', 's01c04_Michel_mission_17_0_phrase_1')
    Say('Sherlock', 'Archly', 's01c04_Sherlock_mission_17_0_phrase_2')
    -- [Анимация к реплике: разводит руками]
    SetupAnim('Michel', 'Interrogatively', {notLoop=true})
    Say('Michel', 'Moody', 's01c04_Michel_mission_17_0_phrase_3')
    -- [Анимация к реплике: Жестикуляция при разговоре]
    SetupAnim('Sherlock', 'TalkGesticulation', {notLoop=true})
    Say('Sherlock', 'Confidently', 's01c04_Sherlock_mission_17_0_phrase_4')
    Say('Michel', 'Surprised', 's01c04_Michel_mission_17_0_phrase_5')
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_17_0_phrase_6')
    Say('Michel', 'Restrained', 's01c04_Michel_mission_17_0_phrase_7')
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_17_0_phrase_8')
    Say('Michel', 'Restrained', 's01c04_Michel_mission_17_0_phrase_9')
    Say('Sherlock', 'Confidently', 's01c04_Sherlock_mission_17_0_phrase_10')
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_17_0_phrase_11')
    Say('Michel', 'Moody', 's01c04_Michel_mission_17_0_phrase_12')
    ActionCompleted()
    Say('Sherlock', 'Thankfully', 's01c04_Sherlock_mission_17_0_phrase_13')
    EndDialog()
    
    -- [Шерлок отходит от Михеля]
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_17_1')
        MoveCamera('camera_point_15_1', 1, 1)
    end)
end

-- Подать сигнал
function ApplyMission18Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_18_0')
        SetTo('Swifty', 'Swifty_point_18_0')
        SetActive('MrsPrice', true)
        SetActive('Babbidge', true)
        CameraTo('camera_point_18_0', 1, 1)
    end)
 
    -- [Шерлок подходит к двери и выпускает Свифти]
    ReleaseMouse()
    
    StartDialog()
    Say('Sherlock', 'Archly', 's01c04_Sherlock_mission_18_0_phrase_0', 'Swifty', nil, 'Crafty')
    EndDialog()
    
    Walk('Sherlock', 'Sherlock_point_18_0_1')
    Walk('Sherlock', 'Sherlock_point_18_1')
    -- [Анимация: Шерлок приоткрывает дверь, Свифти убегает, Шерлок закрывает дверь]
    Parallel(function()
        Play('Sherlock', 'SlightlyOpenDoor')
        Sequence(function()
            Delay(2.6)
            Walk('Swifty', 'Swifty_point_18_1')
        end)
        Sequence(function()
            Delay(3)
            Play('TresPharmacyDoor', 'SlightlyOpen')
        end)
    end)
    Walk('Sherlock', 'Sherlock_point_18_2')
    -- [Шерлок поворачивается к Тру и Тре и делает несколько шагов в их направлении]
    StartDialog()
    Say('Sherlock', 'Calm', 's01c04_Sherlock_mission_18_0_phrase_1')
    EndDialog()
    
    -- [В аптеку вырываются Бэббидж и Миссис Прайс. Бэббидж подходит к Тру, Миссис Прайс - к Трэ]
    Play('TresPharmacyDoor', 'Open')
    Parallel(function()
        Walk('Babbidge', 'Babbidge_point_18_0')
        Sequence(function()
            Delay(0.5)
            Walk('MrsPrice', 'MrsPrice_point_18_0')
        end)
        MoveCamera('camera_point_18_1', 1)
    end)
    Play('TresPharmacyDoor', 'Close')
    -- [Анимация к реплике: размахивает руками]
    StartDialog()
    SetupAnim('MrsPrice', 'Outrageous', {notLoop=true})
    Say('MrsPrice', 'Angrily', 's01c04_MrsPrice_mission_18_0_phrase_2', 'Tre', nil, 'Amazedly')

    -- [Анимация к реплике: грозит кулаком]
    SetupAnim('Babbidge', 'Swears', {notLoop=true})
    Say('Babbidge', 'Angrily', 's01c04_Babbidge_mission_18_0_phrase_3', 'Tru', nil, 'Frightened')

    -- [Анимация к реплике: размахивает руками]
    SetupAnim('MrsPrice', 'Threatened', {notLoop=true})
    Say('MrsPrice', 'Angrily', 's01c04_MrsPrice_mission_18_0_phrase_4', 'Tre', nil, 'Amazedly')

    -- [Анимация: Тру и Трэ пугается]
    SetupAnim('Tre', 'IdleFrightened')
    ApplyAnim('Tre')
    SetupAnim('Tre', 'ScaredTalk', {notLoop=true})
    Say('Tre', 'Frightened', 's01c04_Tre_mission_18_0_phrase_5', 'MrsPrice', nil, 'Angrily')

    SetupAnim('Tru', 'IdleFrightened')
    ApplyAnim('Tru')
    SetupAnim('Tru', 'TalkScared', {notLoop=true})
    Say('Tru', 'Frightened', 's01c04_Tru_mission_18_0_phrase_6', 'Babbidge', nil, 'Angrily')

    -- [Анимация к реплике: размахивает руками]
    SetupAnim('MrsPrice', 'Threatened', {notLoop=true})
    Say('MrsPrice', 'Angrily', 's01c04_MrsPrice_mission_18_0_phrase_7', 'Tre', nil, 'Amazedly')

    -- [Анимация к реплике: размахивает руками]
    SetupAnim('Babbidge', 'SwearsHarder', {notLoop=true})
    Say('Babbidge', 'Angrily', 's01c04_Babbidge_mission_18_0_phrase_8', 'Tru', nil, 'Frightened')

    -- [Анимация к реплике: театрально хватается за голову]
    SetupAnim('MrsPrice', 'SwearsInPanic', {notLoop=true})
    Say('MrsPrice', 'Angrily', 's01c04_MrsPrice_mission_18_0_phrase_9', 'Tre', nil, 'Amazedly')

    -- [Анимация к реплике: грозит кулаком]
    SetupAnim('Babbidge', 'SwearsEvil', {notLoop=true})
    Say('Babbidge', 'Angrily', 's01c04_Babbidge_mission_18_0_phrase_10', 'Tru', nil, 'Frightened')

    ActionCompleted()
    -- [Анимация к реплике: грозит кулаком]
    SetupAnim('MrsPrice', 'Angrily', {notLoop=true})
    Say('MrsPrice', 'Angrily', 's01c04_MrsPrice_mission_18_0_phrase_11', 'Tre', nil, 'Amazedly')
    EndDialog()
    
    -- [Анимация: Тру и Трэ стоят в испуга и нервно оглядываются]
    -- [Анимация: Бэббидж и Миссис Прайс стоят злые, в угрожающей позе]
    Parallel(function()
        Sequence(function()
            SetupAnim('Tre', 'IdleFrightenedWait')
            ApplyAnim('Tre')
            SetupAnim('Tru', 'IdleFrightenedWait')
            ApplyAnim('Tru')
        end)
        Sequence(function()
            Play('Babbidge', 'BecomeMenacing')
            SetupAnim('Babbidge', 'WorthThreatening', {const=true})
            ApplyAnim('Babbidge')
        end)
        Sequence(function()
            Play('MrsPrice', 'TakesAPose')
            SetupAnim('MrsPrice', 'WorthThreatening', {const=true})
            ApplyAnim('MrsPrice')
        end)
    end)
end

-- Определить автора тинктуры
function ApplyMission19Action0()
    Parallel(function()
        Walk('Sherlock', 'Sherlock_point_19_0')
        CameraTo('camera_point_19_0', 1, 1)
    end)

    -- [Анимация к реплике: Жестикуляция при разговоре]
    SetupAnim('Sherlock', 'TalkGesticulation', {notLoop=true})
    Parallel(function()
        Sequence(function()
            StartDialog()
            Say('Sherlock', 'Rampant', 's01c04_Sherlock_mission_19_0_phrase_0', 'Sherlock')
            EndDialog()
        end)
        Play('Tru', 'FrightenedEnd')
        ResetAnim('Tru')
        Play('Tre', 'FrightenedEnd')
        ResetAnim('Tre')
    end)

    -- [Анимация к реплике: Трэ в панике, хватается за голову, тычет в Тру]
    StartDialog()
    SetupAnim('Tre', 'InPanic', {notLoop=true})
    Say('Tre', 'InPanic', 's01c04_Tre_mission_19_0_phrase_1')

    -- [Анимация к реплике: Тру в панике, хватается за голову, тычет в Трэ]
    SetupAnim('Tru', 'FingerPokes', {notLoop=true})
    Say('Tru', 'InPanic', 's01c04_Tru_mission_19_0_phrase_2', 'Sherlock', nil, 'Rampant')

    -- [Анимация к реплике: отрицающе машет руками]
    SetupAnim('Tre', 'InPanic', {notLoop=true})
    Say('Tre', 'Frightened', 's01c04_Tre_mission_19_0_phrase_3', 'Sherlock', nil, 'Rampant')

    -- [Анимация к реплике: испуганно кивает и тычет в Михеля]
    SetupAnim('Tru', 'FingerPokes', {notLoop=true})
    Say('Tru', 'Frightened', 's01c04_Tru_mission_19_0_phrase_4', 'Sherlock', nil, 'Rampant')

    -- [Анимация к реплике: Озарение]
    SetupAnim('Sherlock', 'Enlightened', {notLoop=true})
    Say('Sherlock', 'Triumphantly', 's01c04_Sherlock_mission_19_0_phrase_5', 'Sherlock')
    EndDialog()
    
    -- [Анимация: Бэббидж и Миссис Прайс прекращают притворятся злыми]

    Play('Babbidge', 'OutOfPose')
    ResetAnim('Babbidge')
    Play('MrsPrice', 'OutOfPose')
    ResetAnim('MrsPrice')
    
    StartDialog()
    Say('Sherlock', 'Reproach', 's01c04_Sherlock_mission_19_0_phrase_6', 'Sherlock')
    EndDialog()
    
    -- [Анимация: Шерлок поворачивается к Бэббиджу и Миссис Прайс, они разворачиваются к нему]
    Parallel(function()
        Walk('Babbidge', 'Babbidge_point_19_0')
        Walk('MrsPrice', 'MrsPrice_point_19_0')
    end)
    
    StartDialog()
    Say('Sherlock', 'Thankfully', 's01c04_Sherlock_mission_19_0_phrase_7')
    EndDialog()
    
    -- [Михель подходит чуть ближе]
    Parallel(function()
        Walk('Michel', 'Michel_point_19_0')
        Sequence(function()
            Walk('Tre', 'Tre_point_19_0_1')
            Walk('Tre', 'Tre_point_19_0_2')
            Walk('Tre', 'Tre_point_19_0')
        end)
        Walk('Tru', 'Tru_point_19_0')
        Walk('MrsPrice', 'MrsPrice_point_19_1')
        Walk('Babbidge', 'Babbidge_point_19_1')
        Walk('Sherlock', 'Sherlock_point_19_1')
        MoveCamera('camera_point_19_1', 1)
    end)
    -- [Трэ и Тру обращаются к Михелю]
    -- [Анимация к реплике: виновато опускает голову и выражает сожаление позой]
    
    StartDialog()
    SetupAnim('Tre', 'Guiltily', {notLoop=true})
    Say('Tre', 'Guiltily', 's01c04_Tre_mission_19_0_phrase_8', 'Michel', nil, 'Restrained')

    -- [Анимация к реплике: виновато опускает голову и выражает сожаление позой]
    SetupAnim('Tru', 'Guiltily', {notLoop=true})
    Say('Tru', 'Guiltily', 's01c04_Tru_mission_19_0_phrase_9', 'Michel', nil, 'Restrained')

    -- [Анимация к реплике: делает отрицательный жест рукой]
    SetupAnim('Michel', 'Scolds', {notLoop=true})
    Say('Michel', 'Restrained', 's01c04_Michel_mission_19_0_phrase_10')

    Say('Tre', 'Guiltily', 's01c04_Tre_mission_19_0_phrase_11', 'Michel', nil, 'Restrained')
    Say('Tru', 'Guiltily', 's01c04_Tru_mission_19_0_phrase_12', 'Michel', nil, 'Restrained')
    ActionCompleted()
    Say('Sherlock', 'Thankfully', 's01c04_Sherlock_mission_19_0_phrase_13', 'Sherlock')
    EndDialog()
    
    InvestigationCompleted()
    Parallel(function()
        Play('TresPharmacyDoor', 'Open')
        Walk('Tre', 'Tre_point_19_1')
        Walk('Tru', 'Tru_point_19_1')
        Walk('MrsPrice', 'MrsPrice_point_19_2')
        Walk('Michel', 'Michel_point_19_3')
        Walk('Babbidge', 'Babbidge_point_19_2')
        Sequence(function()
            Delay(0.8)
            Walk('Sherlock', 'Sherlock_point_19_2')
        end)
    end)
    Play('TresPharmacyDoor', 'Close')
    SetupAnim('Michel', 'DoingThings')
    ApplyAnim('Michel')
end

function ReleaseMouse()
    Parallel(function()
        SetActive('SwiftyHand', true)
        Play('Sherlock', 'ReleaseMouse')
        Sequence(function()
            Play('SwiftyHand', 'Release')
            Parallel(function()
                SetActive('SwiftyHand', false)
                -- TODO: включить когда будет поддержка вложенных точек
                -- SetTo('Swifty', 'Swifty_release_point')
                SetActive('Swifty', true)
            end)
        end)
    end)
end

function PocketMouse()
    -- TODO: включить когда будет поддержка вложенных точек
    -- Walk('Swifty', 'Swifty_pocket_point')

    Parallel(function()
        SetActive('Swifty', false)
        SetActive('SwiftyPocket', true)
        Play('Sherlock', 'PocketMouse')
        Sequence(function()
            Play('SwiftyPocket', 'Pocket')
            SetActive('SwiftyPocket', false)
        end)
    end)
end

function ApplyMissionActionBeforeNextChapter()
end

function CreateInteractiveEnvironment(f)
    return f.InteractiveEnvironment({})
end
