BGT Вопросы и ответы

Копошимся во внутренностях игр и даем выход своему креативу...
Аватара пользователя
Caroline
Сообщения: 269
Зарегистрирован: 21 окт 2010, 10:17
Откуда: Ташкент, Узбекистан

Re: BGT Вопросы и ответы

Сообщение Caroline » 08 дек 2011, 21:42

Тестирование пока ничего не показало. Я после операции, долго за компом не могу сидеть. Поэтому и спрашиваю. А так хочу сделать ИВД1 в первой части, а ИВД2 во второй. Сейчас только сделала скрипты и диалоги в Восточной Гавани. Но я там переделала многое, у локаций теперь скриптов нет, все делается через скрипты кричей. Все скрипты в основном пишу на телефоне, потом на компе проверяю.
Du er s? grim, at du g?r blinde b?rn bange.

chelios
Сообщения: 8
Зарегистрирован: 13 янв 2012, 23:22

Re: BGT Вопросы и ответы

Сообщение chelios » 21 янв 2012, 07:48

2 AddWayPoint(P:WayPoint*)

Этот акшн вообще работает? Кто-нибудь пробовал? У меня не получается((

Аватара пользователя
Caroline
Сообщения: 269
Зарегистрирован: 21 окт 2010, 10:17
Откуда: Ташкент, Узбекистан

Re: BGT Вопросы и ответы

Сообщение Caroline » 25 янв 2012, 22:55

Почему ВейДУ так поступает:
DEFINE_PATCH_MACRO ~EDIT_LEVELS~ BEGIN
// ~class_ids~
// WRITE_BYTE 0x234 ~%lvl_first_class%~
PATCH_IF (!(~%class_ids%~ = 7) OR
!(~%class_ids%~ = 8) OR
!(~%class_ids%~ = 9) OR
!(~%class_ids%~ = 10) OR
!(~%class_ids%~ = 13) OR
!(~%class_ids%~ = 14) OR
!(~%class_ids%~ = 15) OR
!(~%class_ids%~ = 17) OR
!(~%class_ids%~ = 18)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 1
SET ~lvl_third_class~ = 1
PATCH_IF ((~%lvl_first_class%~ = 1) OR
(~%lvl_first_class%~ = 2)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 1
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 3) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 2
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 4) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 3
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 5) OR
(~%lvl_first_class%~ = 6)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 4
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 7) OR
(~%lvl_first_class%~ = 8)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 5
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 9) OR
(~%lvl_first_class%~ = 10)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 6
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 11) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 7
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 12) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 8
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 13) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 9
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 14) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 10
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 15) OR
(~%lvl_first_class%~ = 16)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 11
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 17) OR
(~%lvl_first_class%~ = 18)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 12
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 19) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 13
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 20) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 14
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 21) OR
(~%lvl_first_class%~ = 22)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 15
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ > 22) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = ~%lvl_first_class%~ - 7
SET ~patch_level~ = 1
END
END
PATCH_IF ((~%class_ids%~ = 7) OR
(~%class_ids%~ = 8) OR
(~%class_ids%~ = 9) OR
(~%class_ids%~ = 13) OR
(~%class_ids%~ = 14) OR
(~%class_ids%~ = 15) OR
(~%class_ids%~ = 18)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 1
PATCH_IF ((~%lvl_first_class%~ = 1) OR
(~%lvl_first_class%~ = 2)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 1
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 3) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 2
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 4) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 3
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 5) OR
(~%lvl_first_class%~ = 6)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 4
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 7) OR
(~%lvl_first_class%~ = 8)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 5
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 9) OR
(~%lvl_first_class%~ = 10)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 6
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 11) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 7
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 12) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 8
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 13) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 9
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 14) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 10
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 15) OR
(~%lvl_first_class%~ = 16)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 11
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 17) OR
(~%lvl_first_class%~ = 18)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 12
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 19) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 13
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 20) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 14
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 21) OR
(~%lvl_first_class%~ = 22)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 15
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ > 22) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = ~%lvl_first_class%~ - 7
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 1) OR
(~%lvl_second_class%~ = 2)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 1
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 3) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 2
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 4) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 3
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 5) OR
(~%lvl_second_class%~ = 6)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 4
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 7) OR
(~%lvl_second_class%~ = 8)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 5
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 9) OR
(~%lvl_second_class%~ = 10)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 6
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 11) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 7
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 12) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 8
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 13) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 9
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 14) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 10
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 15) OR
(~%lvl_second_class%~ = 16)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 11
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 17) OR
(~%lvl_second_class%~ = 18)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 12
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 19) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 13
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 20) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 14
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 21) OR
(~%lvl_second_class%~ = 22)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 15
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ > 22) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = ~%lvl_second_class%~ - 7
SET ~patch_level~ = 1
END
END
PATCH_IF ((~%class_ids%~ = 10) OR
(~%class_ids%~ = 17)) AND
(~%patch_level%~ = 0) BEGIN
PATCH_IF ((~%lvl_first_class%~ = 1) OR
(~%lvl_first_class%~ = 2)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 1
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 3) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 2
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 4) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 3
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 5) OR
(~%lvl_first_class%~ = 6)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 4
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 7) OR
(~%lvl_first_class%~ = 8)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 5
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 9) OR
(~%lvl_first_class%~ = 10)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 6
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 11) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 7
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 12) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 8
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 13) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 9
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 14) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 10
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 15) OR
(~%lvl_first_class%~ = 16)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 11
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 17) OR
(~%lvl_first_class%~ = 18)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 12
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 19) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 13
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ = 20) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 14
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_first_class%~ = 21) OR
(~%lvl_first_class%~ = 22)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = 15
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_first_class%~ > 22) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_first_class~ = ~%lvl_first_class%~ - 7
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 1) OR
(~%lvl_second_class%~ = 2)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 1
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 3) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 2
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 4) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 3
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 5) OR
(~%lvl_second_class%~ = 6)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 4
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 7) OR
(~%lvl_second_class%~ = 8)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 5
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 9) OR
(~%lvl_second_class%~ = 10)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 6
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 11) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 7
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 12) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 8
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 13) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 9
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 14) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 10
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 15) OR
(~%lvl_second_class%~ = 16)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 11
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 17) OR
(~%lvl_second_class%~ = 18)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 12
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 19) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 13
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ = 20) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 14
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_second_class%~ = 21) OR
(~%lvl_second_class%~ = 22)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = 15
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_second_class%~ > 22) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_second_class~ = ~%lvl_second_class%~ - 7
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_third_class%~ = 1) OR
(~%lvl_third_class%~ = 2)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 1
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_third_class%~ = 3) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 2
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_third_class%~ = 4) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 3
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_third_class%~ = 5) OR
(~%lvl_third_class%~ = 6)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 4
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_third_class%~ = 7) OR
(~%lvl_third_class%~ = 8)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 5
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_third_class%~ = 9) OR
(~%lvl_third_class%~ = 10)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 6
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_third_class%~ = 11) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 7
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_third_class%~ = 12) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 8
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_third_class%~ = 13) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 9
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_third_class%~ = 14) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 10
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_third_class%~ = 15) OR
(~%lvl_third_class%~ = 16)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 11
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_third_class%~ = 17) OR
(~%lvl_third_class%~ = 18)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 12
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_third_class%~ = 19) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 13
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_third_class%~ = 20) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 14
SET ~patch_level~ = 1
END
PATCH_IF ((~%lvl_third_class%~ = 21) OR
(~%lvl_third_class%~ = 22)) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = 15
SET ~patch_level~ = 1
END
PATCH_IF (~%lvl_third_class%~ > 22) AND
(~%patch_level%~ = 0) BEGIN
SET ~lvl_third_class~ = ~%lvl_third_class%~ - 7
SET ~patch_level~ = 1
END
END
// ~class_ids~
// WRITE_BYTE 0x235 ~%lvl_second_class%~
// ~class_ids~
// WRITE_BYTE 0x236 ~%lvl_third_class%~
END

//////////////////////////////

//////////////////////////////
DEFINE_PATCH_MACRO ~EDIT_SAVES~ BEGIN
// WRITE_BYTE 0x054 ~%save_death%~
PATCH_IF ((~%save_death%~ = 20) OR
(~%save_death%~ = 19)) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 20
SET ~patch_saves_death~ = 1
END
PATCH_IF ((~%save_death%~ = 18) OR
(~%save_death%~ = 17)) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 19
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 16) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 18
SET ~patch_saves_death~ = 1
END
PATCH_IF ((~%save_death%~ = 15) OR
(~%save_death%~ = 14)) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 17
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 13) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 16
SET ~patch_saves_death~ = 1
END
PATCH_IF ((~%save_death%~ = 12) OR
(~%save_death%~ = 11)) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 15
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 10) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 14
SET ~patch_saves_death~ = 1
END
PATCH_IF ((~%save_death%~ = 9) OR
(~%save_death%~ = 8)) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 13
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 7) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 12
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 6) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 11
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 5) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 10
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 4) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 9
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 3) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 8
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 2) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 7
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 1) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 6
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ = 0) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = 5
SET ~patch_saves_death~ = 1
END
PATCH_IF (~%save_death%~ < 0) AND
(~%patch_saves_death%~ = 0) BEGIN
SET ~save_death~ = ~%save_death%~ + 5
SET ~patch_saves_death~ = 1
END
// WRITE_BYTE 0x055 ~%save_wands%~
PATCH_IF ((~%save_wands%~ = 20) OR
(~%save_wands%~ = 19)) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 20
SET ~patch_saves_wands~ = 1
END
PATCH_IF ((~%save_wands%~ = 18) OR
(~%save_wands%~ = 17)) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 19
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 16) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 18
SET ~patch_saves_wands~ = 1
END
PATCH_IF ((~%save_wands%~ = 15) OR
(~%save_wands%~ = 14)) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 17
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 13) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 16
END
PATCH_IF ((~%save_wands%~ = 12) OR
(~%save_wands%~ = 11)) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 15
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 10) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 14
SET ~patch_saves_wands~ = 1
END
PATCH_IF ((~%save_wands%~ = 9) OR
(~%save_wands%~ = 8)) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 13
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 7) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 12
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 6) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 11
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 5) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 10
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 4) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 9
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 3) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 8
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 2) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 7
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 1) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 6
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ = 0) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = 5
SET ~patch_saves_wands~ = 1
END
PATCH_IF (~%save_wands%~ < 0) AND
(~%patch_saves_wands%~ = 0) BEGIN
SET ~save_wands~ = ~%save_wands%~ + 5
SET ~patch_saves_wands~ = 1
END
// WRITE_BYTE 0x056 ~%save_poly%~
PATCH_IF ((~%save_poly%~ = 20) OR
(~%save_poly%~ = 19)) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 20
SET ~patch_saves_poly~ = 1
END
PATCH_IF ((~%save_poly%~ = 18) OR
(~%save_poly%~ = 17)) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 19
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 16) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 18
SET ~patch_saves_poly~ = 1
END
PATCH_IF ((~%save_poly%~ = 15) OR
(~%save_poly%~ = 14)) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 17
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 13) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 16
SET ~patch_saves_poly~ = 1
END
PATCH_IF ((~%save_poly%~ = 12) OR
(~%save_poly%~ = 11)) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 15
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 10) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 14
SET ~patch_saves_poly~ = 1
END
PATCH_IF ((~%save_poly%~ = 9) OR
(~%save_poly%~ = 8)) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 13
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 7) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 12
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 6) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 11
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 5) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 10
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 4) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 9
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 3) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 8
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 2) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 7
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 1) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 6
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ = 0) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = 5
SET ~patch_saves_poly~ = 1
END
PATCH_IF (~%save_poly%~ < 0) AND
(~%patch_saves_poly%~ = 0) BEGIN
SET ~save_poly~ = ~%save_poly%~ + 5
SET ~patch_saves_poly~ = 1
END
// WRITE_BYTE 0x057 ~%save_breath%~
PATCH_IF ((~%save_breath%~ = 20) OR
(~%save_breath%~ = 19)) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 20
SET ~patch_saves_breath~ = 1
END
PATCH_IF ((~%save_breath%~ = 18) OR
(~%save_breath%~ = 17)) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 19
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 16) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 18
SET ~patch_saves_breath~ = 1
END
PATCH_IF ((~%save_breath%~ = 15) OR
(~%save_breath%~ = 14)) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 17
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 13) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 16
SET ~patch_saves_breath~ = 1
END
PATCH_IF ((~%save_breath%~ = 12) OR
(~%save_breath%~ = 11)) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 15
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 10) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 14
SET ~patch_saves_breath~ = 1
END
PATCH_IF ((~%save_breath%~ = 9) OR
(~%save_breath%~ = 8)) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 13
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 7) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 12
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 6) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 11
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 5) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 10
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 4) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 9
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 3) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 8
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 2) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 7
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 1) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 6
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ = 0) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = 5
SET ~patch_saves_breath~ = 1
END
PATCH_IF (~%save_breath%~ < 0) AND
(~%patch_saves_breath%~=0) BEGIN
SET ~save_breath~ = ~%save_breath%~ + 5
SET ~patch_saves_breath~ = 1
END
// WRITE_BYTE 0x058 ~%save_spell%~
PATCH_IF (~%save_spell%~ = 20) OR
(~%save_spell%~ = 19) BEGIN
SET ~save_spell~ = 20
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 18) OR
(~%save_spell%~ = 17) BEGIN
SET ~save_spell~ = 19
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 16) BEGIN
SET ~save_spell~ = 18
SET ~patch_saves_spell~ = 1
END
PATCH_IF ((~%save_spell%~ = 15) OR
(~%save_spell%~ = 14)) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 17
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 13) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 16
SET ~patch_saves_spell~ = 1
END
PATCH_IF ((~%save_spell%~ = 12) OR
(~%save_spell%~ = 11)) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 15
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 10) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 14
SET ~patch_saves_spell~ = 1
END
PATCH_IF ((~%save_spell%~ = 9) OR
(~%save_spell%~ = 8)) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 13
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 7) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 12
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 6) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 11
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 5) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 10
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 4) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 9
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 3) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 8
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 2) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 7
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 1) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 6
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ = 0) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = 5
SET ~patch_saves_spell~ = 1
END
PATCH_IF (~%save_spell%~ < 0) AND
(~%patch_saves_spell%~ = 0) BEGIN
SET ~save_spell~ = ~%save_spell%~ + 5
SET ~patch_saves_spell~ = 1
END
END

//////////////////////////////


DEFINE_PATCH_MACRO ~read_creature~ BEGIN
SET ~patch_level~ = 0
SET ~patch_saves_death~ = 0
SET ~patch_saves_wands~ = 0
SET ~patch_saves_poly~ = 0
SET ~patch_saves_breath~ = 0
SET ~patch_saves_spell~ = 0
SET ~NAC~ = 0
SET ~EAC~ = 0
READ_LONG 0x008 ~name1~
READ_LONG 0x00c ~name2~
READ_LONG 0x010 ~flags~
READ_LONG 0x014 ~xp_value~
SET ~xp_value~=~%xp_value%~/10
READ_LONG 0x018 ~xp~
READ_LONG 0x01c ~gold~
READ_LONG 0x020 ~status~
READ_SHORT 0x024 ~current_hp~
SET ~current_hp~=~%current_hp%~*75/100
READ_SHORT 0x026 ~max_hp~
SET ~max_hp~=~%max_hp%~*75/100
READ_SHORT 0x028 ~animation_id~
INNER_ACTION BEGIN
COPY ~animate.2da~ ~animate.2da~
COUNT_2DA_ROWS 1 ~anim~
FOR (i=0;i<~%anim%~;i=i+1) BEGIN
READ_2DA_ENTRY ~%i%~ 0 2 ~anim_iwd~
READ_2DA_ENTRY ~%i%~ 1 2 ~anim_bg~
PATCH_IF (~%animation_id%~=~%anim_iwd%~) BEGIN
SET ~animation_id~=~%anim_bg%~
END
END
END
READ_BYTE 0x02c ~metal_color~
READ_BYTE 0x02d ~minor_color~
READ_BYTE 0x02e ~major_color~
READ_BYTE 0x02f ~skin_color~
READ_BYTE 0x030 ~leather_color~
READ_BYTE 0x031 ~armor_color~
READ_BYTE 0x032 ~hair_color~
READ_BYTE 0x045 ~hide_in_shadows~
READ_SHORT 0x046 ~natural_ac~
READ_SHORT 0x048 ~effective_ac~
READ_SHORT 0x04a ~crushing_ac~
READ_SHORT 0x04c ~missile_ac~
READ_SHORT 0x04e ~piercing_ac~
READ_SHORT 0x050 ~slashing_ac~
READ_BYTE 0x052 ~thac0~
READ_BYTE 0x053 ~n_attacks~
READ_BYTE 0x054 ~save_death~
READ_BYTE 0x055 ~save_wands~
READ_BYTE 0x056 ~save_poly~
READ_BYTE 0x057 ~save_breath~
READ_BYTE 0x058 ~save_spell~
READ_BYTE 0x059 ~resist_fire~
READ_BYTE 0x05a ~resist_cold~
READ_BYTE 0x05b ~resist_electr~
READ_BYTE 0x05c ~resist_acid~
READ_BYTE 0x05d ~resist_magic~
READ_BYTE 0x05e ~resist_mag_fire~
READ_BYTE 0x05f ~resist_mag_cold~
READ_BYTE 0x060 ~resist_slashing~
READ_BYTE 0x061 ~resist_crushing~
READ_BYTE 0x062 ~resist_piercing~
READ_BYTE 0x063 ~resist_missile~
READ_BYTE 0x064 ~detect_illusions~
READ_BYTE 0x065 ~set_traps~
READ_BYTE 0x066 ~lore~
READ_BYTE 0x067 ~open_locks~
READ_BYTE 0x068 ~move_silently~
READ_BYTE 0x069 ~find_traps~
READ_BYTE 0x06a ~pickpokets~
READ_BYTE 0x06b ~fatigue~
READ_BYTE 0x06c ~intoxication~
READ_BYTE 0x06d ~luck~
READ_BYTE 0x083 ~tracking~
READ_LONG 0x00A4 ~sound_1~
READ_LONG 0x00A8 ~sound_2~
READ_LONG 0x00AC ~sound_3~
READ_LONG 0x00B0 ~sound_4~
READ_LONG 0x00B4 ~sound_5~
READ_LONG 0x00B8 ~sound_6~
READ_LONG 0x00BC ~sound_7~
READ_LONG 0x00C0 ~sound_8~
READ_LONG 0x00C4 ~sound_9~
READ_LONG 0x00C8 ~sound_10~
READ_LONG 0x00CC ~sound_11~
READ_LONG 0x00D0 ~sound_12~
READ_LONG 0x00D4 ~sound_13~
READ_LONG 0x00D8 ~sound_14~
READ_LONG 0x00DC ~sound_15~
READ_LONG 0x00E0 ~sound_16~
READ_LONG 0x00E4 ~sound_17~
READ_LONG 0x00E8 ~sound_18~
READ_LONG 0x00EC ~sound_19~
READ_LONG 0x00F0 ~sound_20~
READ_LONG 0x00F4 ~sound_21~
READ_LONG 0x00F8 ~sound_22~
READ_LONG 0x00FC ~sound_23~
READ_LONG 0x0100 ~sound_24~
READ_LONG 0x0104 ~sound_25~
READ_LONG 0x0108 ~sound_26~
READ_LONG 0x010C ~sound_27~
READ_LONG 0x0110 ~sound_28~
READ_LONG 0x0114 ~sound_29~
READ_LONG 0x0118 ~sound_30~
READ_LONG 0x011C ~sound_31~
READ_LONG 0x0120 ~sound_32~
READ_LONG 0x0124 ~sound_33~
READ_LONG 0x0128 ~sound_34~
READ_LONG 0x012C ~sound_35~
READ_LONG 0x0130 ~sound_36~
READ_LONG 0x0134 ~sound_37~
READ_LONG 0x0138 ~sound_38~
READ_LONG 0x013C ~sound_39~
READ_LONG 0x0140 ~sound_40~
READ_LONG 0x0144 ~sound_41~
READ_LONG 0x0148 ~sound_42~
READ_LONG 0x014C ~sound_43~
READ_LONG 0x0150 ~sound_44~
READ_LONG 0x0154 ~sound_45~
READ_LONG 0x0158 ~sound_46~
READ_LONG 0x015C ~sound_47~
READ_LONG 0x0160 ~sound_48~
READ_LONG 0x0164 ~sound_49~
READ_LONG 0x0168 ~sound_50~
READ_LONG 0x016C ~sound_51~
READ_LONG 0x0170 ~sound_52~
READ_LONG 0x0174 ~sound_53~
READ_LONG 0x0178 ~sound_54~
READ_LONG 0x017C ~sound_55~
READ_LONG 0x0180 ~sound_56~
READ_LONG 0x0184 ~sound_57~
READ_LONG 0x0188 ~sound_58~
READ_LONG 0x018C ~sound_59~
READ_LONG 0x0190 ~sound_60~
READ_LONG 0x0194 ~sound_61~
READ_LONG 0x0198 ~sound_62~
READ_LONG 0x019C ~sound_63~
READ_LONG 0x01A0 ~sound_64~
READ_LONG 0x01A4 ~sound_65~
READ_LONG 0x01A8 ~sound_66~
READ_LONG 0x01AC ~sound_67~
READ_LONG 0x01B0 ~sound_68~
READ_LONG 0x01B4 ~sound_69~
READ_LONG 0x01B8 ~sound_70~
READ_LONG 0x01BC ~sound_71~
READ_LONG 0x01C0 ~sound_72~
READ_LONG 0x01C4 ~sound_73~
READ_LONG 0x01C8 ~sound_74~
READ_LONG 0x01CC ~sound_75~
READ_LONG 0x01D0 ~sound_76~
READ_LONG 0x01D4 ~sound_77~
READ_LONG 0x01D8 ~sound_78~
READ_LONG 0x01DC ~sound_79~
READ_LONG 0x01E0 ~sound_80~
READ_LONG 0x01E4 ~sound_81~
READ_LONG 0x01E8 ~sound_82~
READ_LONG 0x01EC ~sound_83~
READ_LONG 0x01F0 ~sound_84~
READ_LONG 0x01F4 ~sound_85~
READ_LONG 0x01F8 ~sound_86~
READ_LONG 0x01FC ~sound_87~
READ_LONG 0x0200 ~sound_88~
READ_LONG 0x0204 ~sound_89~
READ_LONG 0x0208 ~sound_90~
READ_LONG 0x020C ~sound_91~
READ_LONG 0x0210 ~sound_92~
READ_LONG 0x0214 ~sound_93~
READ_LONG 0x0218 ~sound_94~
READ_LONG 0x021C ~sound_95~
READ_LONG 0x0220 ~sound_96~
READ_LONG 0x0224 ~sound_97~
READ_LONG 0x0228 ~sound_98~
READ_LONG 0x022C ~sound_99~
READ_LONG 0x0230 ~sound_100~
READ_BYTE 0x234 ~lvl_first_class~
READ_BYTE 0x235 ~lvl_second_class~
READ_BYTE 0x236 ~lvl_third_class~
READ_BYTE 0x237 ~sex~
READ_BYTE 0x0238 ~strength~
READ_BYTE 0x0239 ~streng_bonus~
READ_BYTE 0x023a ~Intelligence~
READ_BYTE 0x023b ~wisdom~
READ_BYTE 0x023c ~dexterity~
READ_BYTE 0x023d ~constitution~
READ_BYTE 0x023e ~charisma~
READ_BYTE 0x023f ~morale~
READ_BYTE 0x0240 ~morale_break~
READ_BYTE 0x0241 ~racial_enemy~
READ_BYTE 0x0242 ~morale_recovery~
//READ_ASCII 0x0248 ~override_script~ (8)
//READ_ASCII 0x0250 ~class_script~ (8)
//READ_ASCII 0x0258 ~race_script~ (8)
//READ_ASCII 0x0260 ~general_script~ (8)
//READ_ASCII 0x0268 ~default_script~ (8)
READ_BYTE 0x02D8 ~enemy_ally_ids~
READ_BYTE 0x02D9 ~general_ids~
READ_BYTE 0x02DA ~race_ids~
READ_BYTE 0x02DB ~class_ids~
READ_BYTE 0x02DC ~specific_ids~
READ_BYTE 0x02DD ~gender_ids~
//READ_BYTE 0x02DE ~unknown_ids_1~
//READ_BYTE 0x02DF ~unknown_ids_2~
//READ_BYTE 0x02E0 ~unknown_ids_3~
//READ_BYTE 0x02E1 ~unknown_ids_4~
//READ_BYTE 0x02E2 ~unknown_ids_5~
READ_BYTE 0x02E3 ~alignment_ids~
READ_SHORT 0x02e4 ~global_actor_enum~
READ_SHORT 0x02e6 ~local_actor_enum~
//READ_ASCII 0x02e8 ~death_var~ (18)
//READ_ASCII 0x0334 ~dialog_file~ (8)
END

DEFINE_PATCH_MACRO ~WRITE_creature~ BEGIN
WRITE_LONG 0x008 ~%name1%~
WRITE_LONG 0x00c ~%name2%~
WRITE_LONG 0x010 ~%flags%~
WRITE_LONG 0x014 ~%xp_value%~
WRITE_LONG 0x018 ~%xp%~
WRITE_LONG 0x01c ~%gold%~
WRITE_LONG 0x020 ~%status%~
WRITE_SHORT 0x024 ~%current_hp%~
WRITE_SHORT 0x026 ~%max_hp%~
WRITE_SHORT 0x028 ~%animation_id%~
WRITE_BYTE 0x02c ~%metal_color%~
WRITE_BYTE 0x02d ~%minor_color%~
WRITE_BYTE 0x02e ~%major_color%~
WRITE_BYTE 0x02f ~%skin_color%~
WRITE_BYTE 0x030 ~%leather_color%~
WRITE_BYTE 0x031 ~%armor_color%~
WRITE_BYTE 0x032 ~%hair_color%~
WRITE_BYTE 0x045 ~%hide_in_shadows%~
PATCH_IF (~%NAC%~ = 0) BEGIN
SET ~natural_ac~=~%natural_ac%~+2
SET ~NAC~ = 1
END
PATCH_IF (~%natural_ac%~>10) AND
(~%NAC%~ = 1) BEGIN
SET ~natural_ac~=10
END
WRITE_SHORT 0x046 ~%natural_ac%~
PATCH_IF (~%EAC%~ = 0) BEGIN
SET ~effective_ac~=~%effective_ac%~+2
SET ~EAC~ = 1
END
PATCH_IF (~%effective_ac%~>10) AND
(~%EAC%~ = 1) BEGIN
SET ~effective_ac~=10
END
WRITE_SHORT 0x048 ~%effective_ac%~
WRITE_SHORT 0x04a ~%crushing_ac%~
WRITE_SHORT 0x04c ~%missile_ac%~
WRITE_SHORT 0x04e ~%piercing_ac%~
WRITE_SHORT 0x050 ~%slashing_ac%~
WRITE_BYTE 0x052 ~%thac0%~
WRITE_BYTE 0x053 ~%n_attacks%~
LAUNCH_PATCH_MACRO ~EDIT_SAVES~
WRITE_BYTE 0x054 ~%save_death%~
WRITE_BYTE 0x055 ~%save_wands%~
WRITE_BYTE 0x056 ~%save_poly%~
WRITE_BYTE 0x057 ~%save_breath%~
WRITE_BYTE 0x058 ~%save_spell%~
WRITE_BYTE 0x059 ~%resist_fire%~
WRITE_BYTE 0x05a ~%resist_cold%~
WRITE_BYTE 0x05b ~%resist_electr%~
WRITE_BYTE 0x05c ~%resist_acid%~
WRITE_BYTE 0x05d ~%resist_magic%~
WRITE_BYTE 0x05e ~%resist_mag_fire%~
WRITE_BYTE 0x05f ~%resist_mag_cold%~
WRITE_BYTE 0x060 ~%resist_slashing%~
WRITE_BYTE 0x061 ~%resist_crushing%~
WRITE_BYTE 0x062 ~%resist_piercing%~
WRITE_BYTE 0x063 ~%resist_missile%~
WRITE_BYTE 0x064 ~%detect_illusions%~
WRITE_BYTE 0x065 ~%set_traps%~
WRITE_BYTE 0x066 ~%lore%~
WRITE_BYTE 0x067 ~%open_locks%~
WRITE_BYTE 0x068 ~%move_silently%~
WRITE_BYTE 0x069 ~%find_traps%~
WRITE_BYTE 0x06a ~%pickpokets%~
WRITE_BYTE 0x06b ~%fatigue%~
WRITE_BYTE 0x06c ~%intoxication%~
WRITE_BYTE 0x06d ~%luck%~
WRITE_BYTE 0x083 ~%tracking%~
WRITE_LONG 0x00A4 ~%sound_1%~
WRITE_LONG 0x00A8 ~%sound_2%~
WRITE_LONG 0x00AC ~%sound_3%~
WRITE_LONG 0x00B0 ~%sound_4%~
WRITE_LONG 0x00B4 ~%sound_5%~
WRITE_LONG 0x00B8 ~%sound_6%~
WRITE_LONG 0x00BC ~%sound_7%~
WRITE_LONG 0x00C0 ~%sound_8%~
WRITE_LONG 0x00C4 ~%sound_9%~
WRITE_LONG 0x00C8 ~%sound_10%~
WRITE_LONG 0x00CC ~%sound_11%~
WRITE_LONG 0x00D0 ~%sound_12%~
WRITE_LONG 0x00D4 ~%sound_13%~
WRITE_LONG 0x00D8 ~%sound_14%~
WRITE_LONG 0x00DC ~%sound_15%~
WRITE_LONG 0x00E0 ~%sound_16%~
WRITE_LONG 0x00E4 ~%sound_17%~
WRITE_LONG 0x00E8 ~%sound_18%~
WRITE_LONG 0x00EC ~%sound_19%~
WRITE_LONG 0x00F0 ~%sound_20%~
WRITE_LONG 0x00F4 ~%sound_21%~
WRITE_LONG 0x00F8 ~%sound_22%~
WRITE_LONG 0x00FC ~%sound_23%~
WRITE_LONG 0x0100 ~%sound_24%~
WRITE_LONG 0x0104 ~%sound_25%~
WRITE_LONG 0x0108 ~%sound_26%~
WRITE_LONG 0x010C ~%sound_27%~
WRITE_LONG 0x0110 ~%sound_28%~
WRITE_LONG 0x0114 ~%sound_29%~
WRITE_LONG 0x0118 ~%sound_30%~
WRITE_LONG 0x011C ~%sound_31%~
WRITE_LONG 0x0120 ~%sound_32%~
WRITE_LONG 0x0124 ~%sound_33%~
WRITE_LONG 0x0128 ~%sound_34%~
WRITE_LONG 0x012C ~%sound_35%~
WRITE_LONG 0x0130 ~%sound_36%~
WRITE_LONG 0x0134 ~%sound_37%~
WRITE_LONG 0x0138 ~%sound_38%~
WRITE_LONG 0x013C ~%sound_39%~
WRITE_LONG 0x0140 ~%sound_40%~
WRITE_LONG 0x0144 ~%sound_41%~
WRITE_LONG 0x0148 ~%sound_42%~
WRITE_LONG 0x014C ~%sound_43%~
WRITE_LONG 0x0150 ~%sound_44%~
WRITE_LONG 0x0154 ~%sound_45%~
WRITE_LONG 0x0158 ~%sound_46%~
WRITE_LONG 0x015C ~%sound_47%~
WRITE_LONG 0x0160 ~%sound_48%~
WRITE_LONG 0x0164 ~%sound_49%~
WRITE_LONG 0x0168 ~%sound_50%~
WRITE_LONG 0x016C ~%sound_51%~
WRITE_LONG 0x0170 ~%sound_52%~
WRITE_LONG 0x0174 ~%sound_53%~
WRITE_LONG 0x0178 ~%sound_54%~
WRITE_LONG 0x017C ~%sound_55%~
WRITE_LONG 0x0180 ~%sound_56%~
WRITE_LONG 0x0184 ~%sound_57%~
WRITE_LONG 0x0188 ~%sound_58%~
WRITE_LONG 0x018C ~%sound_59%~
WRITE_LONG 0x0190 ~%sound_60%~
WRITE_LONG 0x0194 ~%sound_61%~
WRITE_LONG 0x0198 ~%sound_62%~
WRITE_LONG 0x019C ~%sound_63%~
WRITE_LONG 0x01A0 ~%sound_64%~
WRITE_LONG 0x01A4 ~%sound_65%~
WRITE_LONG 0x01A8 ~%sound_66%~
WRITE_LONG 0x01AC ~%sound_67%~
WRITE_LONG 0x01B0 ~%sound_68%~
WRITE_LONG 0x01B4 ~%sound_69%~
WRITE_LONG 0x01B8 ~%sound_70%~
WRITE_LONG 0x01BC ~%sound_71%~
WRITE_LONG 0x01C0 ~%sound_72%~
WRITE_LONG 0x01C4 ~%sound_73%~
WRITE_LONG 0x01C8 ~%sound_74%~
WRITE_LONG 0x01CC ~%sound_75%~
WRITE_LONG 0x01D0 ~%sound_76%~
WRITE_LONG 0x01D4 ~%sound_77%~
WRITE_LONG 0x01D8 ~%sound_78%~
WRITE_LONG 0x01DC ~%sound_79%~
WRITE_LONG 0x01E0 ~%sound_80%~
WRITE_LONG 0x01E4 ~%sound_81%~
WRITE_LONG 0x01E8 ~%sound_82%~
WRITE_LONG 0x01EC ~%sound_83%~
WRITE_LONG 0x01F0 ~%sound_84%~
WRITE_LONG 0x01F4 ~%sound_85%~
WRITE_LONG 0x01F8 ~%sound_86%~
WRITE_LONG 0x01FC ~%sound_87%~
WRITE_LONG 0x0200 ~%sound_88%~
WRITE_LONG 0x0204 ~%sound_89%~
WRITE_LONG 0x0208 ~%sound_90%~
WRITE_LONG 0x020C ~%sound_91%~
WRITE_LONG 0x0210 ~%sound_92%~
WRITE_LONG 0x0214 ~%sound_93%~
WRITE_LONG 0x0218 ~%sound_94%~
WRITE_LONG 0x021C ~%sound_95%~
WRITE_LONG 0x0220 ~%sound_96%~
WRITE_LONG 0x0224 ~%sound_97%~
WRITE_LONG 0x0228 ~%sound_98%~
WRITE_LONG 0x022C ~%sound_99%~
WRITE_LONG 0x0230 ~%sound_100%~
LAUNCH_PATCH_MACRO ~EDIT_LEVELS~
WRITE_BYTE 0x234 ~%lvl_first_class%~
WRITE_BYTE 0x235 ~%lvl_second_class%~
WRITE_BYTE 0x236 ~%lvl_third_class%~
WRITE_BYTE 0x237 ~%sex%~
WRITE_BYTE 0x0238 ~%strength%~
WRITE_BYTE 0x0239 ~%streng_bonus%~
WRITE_BYTE 0x023a ~%Intelligence%~
WRITE_BYTE 0x023b ~%wisdom%~
WRITE_BYTE 0x023c ~%dexterity%~
WRITE_BYTE 0x023d ~%constitution%~
WRITE_BYTE 0x023e ~%charisma%~
WRITE_BYTE 0x023f ~%morale%~
WRITE_BYTE 0x0240 ~%morale_break%~
WRITE_BYTE 0x0241 ~%racial_enemy%~
WRITE_BYTE 0x0242 ~%morale_recovery%~
//WRITE_ASCII 0x0248 ~%override_script%~ (8)
//WRITE_ASCII 0x0250 ~%class_script%~ (8)
//WRITE_ASCII 0x0258 ~%race_script%~ (8)
//WRITE_ASCII 0x0260 ~%general_script%~ (8)
//WRITE_ASCII 0x0268 ~%default_script%~ (8)
WRITE_BYTE 0x0270 ~%enemy_ally_ids%~
WRITE_BYTE 0x0271 ~%general_ids%~
//WRITE_BYTE 0x0272 ~%race_ids%~
//WRITE_BYTE 0x0273 ~%class_ids%~
WRITE_BYTE 0x0274 ~%specific_ids%~
WRITE_BYTE 0x0275 ~%gender_ids%~
//WRITE_BYTE 0x02DE ~%unknown_ids_1%~
//WRITE_BYTE 0x02DF ~%unknown_ids_2%~
//WRITE_BYTE 0x02E0 ~%unknown_ids_3%~
//WRITE_BYTE 0x02E1 ~%unknown_ids_4%~
//WRITE_BYTE 0x02E2 ~%unknown_ids_5%~
WRITE_BYTE 0x027b ~%alignment_ids%~
WRITE_SHORT 0x027c ~%global_actor_enum%~
WRITE_SHORT 0x027e ~%local_actor_enum%~
//WRITE_ASCII 0x0280 ~%death_var%~ (18)
//WRITE_ASCII 0x02cc ~%dialog_file%~ (8)
END
Устанавливат левел только для первого класса, и броню всем на 10 ставит(( Там, вроде, по другому прописано. Если кто посмотрит свежим взглядом, мож где ошивлась...
Du er s? grim, at du g?r blinde b?rn bange.

hawkmoon
Переводчик
Переводчик
Сообщения: 322
Зарегистрирован: 20 май 2010, 07:16

Re: BGT Вопросы и ответы

Сообщение hawkmoon » 26 янв 2012, 17:24

Caroline, матлогику я изучал уже давно, но емнип конструкция вида

Код: Выделить всё

!(var=const1) OR !(var=const2)
тождественно эквивалента обычному TRUE :ugeek: .
А ты навряд ли городила такой огород

Код: Выделить всё

(!(~%class_ids%~ = 7) OR
 !(~%class_ids%~ = 8) OR
 !(~%class_ids%~ = 9) OR
 !(~%class_ids%~ = 10) OR
 !(~%class_ids%~ = 13) OR
 !(~%class_ids%~ = 14) OR
 !(~%class_ids%~ = 15) OR
 !(~%class_ids%~ = 17) OR
 !(~%class_ids%~ = 18))
ради того, чтобы написать просто true...

Аватара пользователя
Caroline
Сообщения: 269
Зарегистрирован: 21 окт 2010, 10:17
Откуда: Ташкент, Узбекистан

Re: BGT Вопросы и ответы

Сообщение Caroline » 26 янв 2012, 23:05

Да я че то запуталась :dash:
Уже по другому сделала )) Через дополнительные файлы
Du er s? grim, at du g?r blinde b?rn bange.

Аватара пользователя
Caroline
Сообщения: 269
Зарегистрирован: 21 окт 2010, 10:17
Откуда: Ташкент, Узбекистан

Re: BGT Вопросы и ответы

Сообщение Caroline » 29 янв 2012, 00:44

Ворпос об ARE-файлах:

0x0030 - Actor animation - как написано в IESDP и показывает в DLTCEP. Так вот вопрос, эта хрень на что-нить влияет или на нее можно забить? Насколько я поняло, то скорее всего второе :crazy: , т.к. в некоторых локах анимация отличается от анимации прописанной в самой криче.
Но все же, мож кто знает лучше...
Du er s? grim, at du g?r blinde b?rn bange.

Аватара пользователя
Aldark
Джедай-Консул
Джедай-Консул
Сообщения: 2188
Зарегистрирован: 16 май 2010, 23:43

Re: BGT Вопросы и ответы

Сообщение Aldark » 29 янв 2012, 15:10

Caroline писал(а): в некоторых локах анимация отличается от анимации прописанной в самой криче.

Вот потому и отличается, потому что прописано в локе. Если не прописывать, то будет та же анимация, что прописана в cre. Насколько помню, вроде так.
https://arcanecoast.ru/mods : Список модов ArcaneCoast
https://github.com/arcanecoast : GitHub ArcaneCoast (переводы и инструменты)

Аватара пользователя
Caroline
Сообщения: 269
Зарегистрирован: 21 окт 2010, 10:17
Откуда: Ташкент, Узбекистан

Re: BGT Вопросы и ответы

Сообщение Caroline » 29 янв 2012, 21:19

То есть, как я понимаю, если в криче прописана неправильная/несуществующая анимация, то будет использоваться та, что прописана в файле локи?
Du er s? grim, at du g?r blinde b?rn bange.

Аватара пользователя
prozh
Лит. редактор
Лит. редактор
Сообщения: 1071
Зарегистрирован: 30 янв 2011, 21:41
Контактная информация:

Re: BGT Вопросы и ответы

Сообщение prozh » 29 янв 2012, 23:16

Aldark писал(а):Вот потому и отличается, потому что прописано в локе. Если не прописывать, то будет та же анимация, что прописана в cre. Насколько помню, вроде так.

нет, анимация кричи всегда берется из cre файла и только из него...
Caroline писал(а):То есть, как я понимаю, если в криче прописана неправильная/несуществующая анимация, то будет использоваться та, что прописана в файле локи?

в этом случае будет отображаться кривая анимация, или игра может показывать, по моему ближайшую по hex-коду анимацию, если такой не существует, или вообще игра вылетит...
я тоже как-то задавался вопросом, зачем в файлах are есть анимация кричей, но ответа или применения этому так и не нашел...

Аватара пользователя
Ardanis
Сообщения: 533
Зарегистрирован: 16 июн 2010, 22:54

Re: BGT Вопросы и ответы

Сообщение Ardanis » 30 янв 2012, 22:20

Если не ошибаюсь, это фича ИВД. Я много лет назад спрашивал, для чего в локе у крич есть слоты для скриптов, и Avenger иирк сказал, что это рудимент старой пре-БГ2 версии движка.

Ответить