Сообщения без ответовАктивные темы

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

Копошимся во внутренностях игр и даем выход своему креативу...

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

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

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

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

Вернуться к началу

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

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

2 AddWayPoint(P:WayPoint*)

Этот акшн вообще работает? Кто-нибудь пробовал? У меня не получается((
chelios [?]
 
 Не в сети
Сообщения: 8
Зарегистрирован: 13 янв 2012, 23:22

Вернуться к началу

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.
Caroline [?]

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

Вернуться к началу

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...
hawkmoon [?]

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

Вернуться к началу

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.
Caroline [?]

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

Вернуться к началу

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

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

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

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

Аватара пользователя

Джедай-Консул
 
 Не в сети
Сообщения: 1901
Зарегистрирован: 16 май 2010, 23:43

Вернуться к началу

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

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

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

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

Вернуться к началу

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

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

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

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

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

Аватара пользователя

Лит. редактор
 
 Не в сети
Сообщения: 699
Зарегистрирован: 30 янв 2011, 21:41

Вернуться к началу

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

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

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

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

Вернуться к началу


Пред.След.



Вернуться в Моддинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1