Окончательно функция стимуляции приобрела следующий вид:
nfBrainAction Operation (System.GetOperation (NEW_DIRECT_ACTION));
if (!Operation.m_lpDispatch) return;
nfImpact Delight (Operation.NewImpact (BRAIN_GLOBAL_PENETRATION));
if (Delight.m_lpDispatch!
{
Delight.SetOperationMode (om_Stimulation, TRUE);
Delight.SubGlobalTarget (LIMBUS);
nfImpactCoordinates Coordinates (Delight.GetPosition (HYPOTHALAMUS));
if (Coordinates.m_lpDispatch)
{
Delight.SetTargetCoordinates (Coordinates);
Delight.SetOperationType (ot_Pulse, ot_Point);
nfImpactParam Imparam (Delight.GetImpactParamDefinition());
if (Imparam.m_lpDispatch)
{
Imparam.SetImpulseIntensity (ii_Normal);
Imparam.HormoneCheckupOn (hc_Dopamine, FALSE);
Imparam.SetInterval (100);
Imparam.Update ();
}
}
else return;
for (int i=0; i<=600; i++) Delight.Activate ();
Clear ();
}
В 7:45 субботним утром бота, который до этого времени непрерывно развлекался с кнопкой «DLGHT», оторвали от пульта. «Малыш» долго приходил в себя. Его лихорадило.
Успокоившись, бот вернулся в депрессивное, полукататоническое состояние.
Тимур таращился на экран, на котором зависло сообщение. Секунды шли, но с ботом ничего не происходило. Время от времени он отключался, погружаясь в тяжелую дремоту. Потом просыпался и тянулся пальцами к пульту, на котором светилась кнопка «DLGHT».
— Ну, давай… давай же… — шептал Тимур. От напряжения у парня на висках выступили капли пота. — Запускай, ну… Догадайся!
После прекращения стимуляции у бота упал артериальное давление, началась брадикардия. Никто не знал доподлинно, то ли он дремлет, то ли теряет сознание.
Прошло несколько минут. Тимур повторил компиляцию. Процедура заново записалась на мозговой плате. И опять успешно — процессор принял код. Тем не менее бот не запускал модуль. Он или не понимал, или не хотел его активировать.
Алан и Хедхантер искоса поглядывали на Тимура.
— Я думаю, ему нужно время, — растерянно пробормотал программист. Хотя он подозревал, что проблема не во времени. Возможно, бот не может построить логическую цепочку «стимуляция — кнопка “DLGHT” — запрет пользоваться кнопкой — запись процедуры». — Он просто не улавливает суть процедуры.
— Попробуй добавить команду на самозапуск после компиляции, — предложил Алан.
Тимур вставил перед телом основной процедуры системную функцию — SetAutoRun (). Она автоматически запускала модуль на выполнение сразу после компиляции. И попробовал скомпилировать измененный код.
Результат получился ожидаемый. Реализованный Хортом функционал по обработке макросов заблокировал компиляцию. На информационной панели появился красный восклицательный знак и надпись: COMPILATION FAILED! ERROR 117: INVALID DESCRIPTOR.
— Оно не хочет компилироваться, — стиснув зубы, произнес Тимур.
— Вижу, — помрачнел Алан.
— Что означает эта ошибка? — ткнула пальцем в экран Лаура.
— INVALID DESCRIPTOR — неправильный указатель на функцию или процедуру. Компилятор не может затолкнуть в голову бота функцию SetAutoRun (). Соответственно, остальной код тоже остается не скомпилированным.
— И что теперь? — спросил из-за их спин Хедхантер.