У самому кінці психіатр порадила додати функцію Imparam.HormoneCheckupOn (). Власне, функцію вибирав Тимур. Лаура лиш пояснила фізичний принцип, який мав бути закладений у програму і без якого стимулятор найбільш імовірно не працюватиме. Річ у тім, що за чуттєве задоволення у людини відповідає допамін — гормон, який виробляється мозковою речовиною надниркових залоз, а також багатьма іншими органами. Цей гормон діє безпосередньо на центр задоволення. Більшість наркотиків збільшують потік допаміну в 5 — 10 разів, даючи можливість людям, що їх споживають, отримувати задоволення. Так, амфетамін напряму збільшує викид допаміну, впливаючи на механізм його транспортування. Кокаїн блокує механізми зворотного захоплення допаміну, збільшуючи його концентрацію в синаптичному просторі. Алкоголь нейтралізує дію антагоністів [110] Антагоніст (в біохімії) — речовина, біологічна дія якої прямо протилежна дії іншої речовини.
допаміну. Якщо наркоман продовжує стимулювати центр задоволення, мозок адаптується до штучного підвищення рівня допаміну, гальмуючи виробництво гормону і зменшуючи кількість рецепторів, що на нього реагують. Подальший розвиток хімічної толерантності призводить до незворотних змін у нейронах. Задоволення притупляється, а згодом зникає зовсім. Знайдена Тимуром функція HormoneCheckupOn () дозволяла «виключати» перевірку будь-якого гормону, примушуючи мозок ігнорувати згубний вплив на організм. Таким чином Тимур та Лаура перестраховувалися від того, що мозок ботів може адаптуватися до великої концентрації допаміну (hc_Dopamine).
Остаточно функція стимуляції набула такого вигляду:
nfBrainAction
Operation (System.GetOperation (NEW_DI RECT_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.GetImpactParamDefini tion ());
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», відірвали від пульта. «Малюк» довго оговтувався. Його лихоманило.
Очунявши, бот повернувся до депресивного, напівкататонічного стану.
Тимур наклав на його голову спеціальні електроди і скомпілював написаний код на мозкові плати. Запис процедури пройшов успішно, про що свідчило повідомлення по центру інформаційної панелі: PROCEDURE IS CHECKED AND COMPILED SUCCESSFULLY.
Тимур телющився на екран, на якому зависло повідомлення. Секунди спливали, але з ботом нічого не відбувалося. Подеколи він відключався, поринаючи у важку дрімоту. Потім прокидався і починав тихенько квилити, тягнучись пальцями до пульта, на якому блискала кнопка «DLGHT».
— Ну давай… давай же… — шепотів Тимур. Від напруження на скронях хлопця виступили краплини поту. — Запускай, ну… Здогадайся!
Після припинення стимуляції у бота впав кров’яний тиск, почалася брадикардія. Ніхто не знав достеменно, чи він куняє, чи втрачає свідомість.
Минуло кілька хвилин. Тимур повторив компіляцію. Процедура наново записалась на мозкові плати. І знову успішно — процесор «сприйняв» код. Утім, бот не запускав модуль. Він або не розумів, або не хотів його активувати.
Алан та Ріно скоса зиркали на програміста.
— Я думаю, йому потрібен час, — розгублено пробубнів Тимур. Хоч він і підозрював, що проблема не в часі. Можливо, бот не може вибудувати логічний ланцюжок «стимуляція — кнопка DLGHT — заборона користуватися кнопкою — запис процедури». Він просто не вловлює суть процедури.
— Спробуй додати команду на самозапуск після компіляції, — запропонував Алан.
Тимур вставив перед тілом основної процедури системну функцію — SetAutoRun (). Вона автоматично запускала модуль на виконання відразу після компіляції. І спробував скомпілювати змінений код.
Результат вийшов очікуваним. Реалізований Хортом функціонал по обробці макросів заблокував компіляцію. На інформаційній панелі вискочив червоний знак оклику і напис: COMPILATION FAILED! ERROR 117: INVALID DESCRIPTOR.
— Воно не хоче компілюватись, — зціпивши зуби, проказав Тимур.
— Бачу, — спохмурнів Алан.
— Що означає ця помилка? — ткнула пальцем в екран Лаура.
— INVALID DESCRIPTOR — неправильний вказівник на функцію чи процедуру. Компілятор не може заштовхати в голову бота функцію SetAutoRun (). Відповідно, решта коду також лишається не скомпільованою.
Читать дальше