Closed Kor-Angar closed 3 years ago
пытаюсь найти в коде где книга вставляется фернандо :-) а найти не могу. не подскажешь где это происходит? :-)
пытаюсь найти в коде где книга вставляется фернандо :-) а найти не могу. не подскажешь где это происходит? :-)
В B_NpcObsessedByDMT
это что такое? просто книга вставляется в мир? :-)
Ну да. Это в каменном круге с ритуалом с Вино. Для наемника/ОнД там вставляется посох Малета.
а почему фернандо особенный? :-) на это есть какие то причины или про него просто забыли?
Ну да. Это в каменном круге с ритуалом с Вино. Для наемника/ОнД там вставляется посох Малета.
незнал.. а в чём смысл этого действия? :-)
а в чём смысл этого действия? :-)
Наверное, Вино мог убежать / упасть со скалы. Рискованно ему книгу оставлять)
на это есть какие то причины или про него просто забыли?
Наверное, просто забыли.
Наверное, Вино мог убежать / упасть со скалы. Рискованно ему книгу оставлять)
но это ведь уже 5 глава ;-)
Тогда не представляю) Стимулирование игрока к исследованию местности?
можно чуть чуть порядок навести и тогда возможно станет понятнее :-) задействоваться имеющиеся
var int vino_isalive_kap3;
var int malak_isalive_kap3;
и добавить такие же для одержимых.
добавить проверки в списки одержимых в use_dementorobsessionbook и письме пирокара
if (VINO_ISALIVE_KAP3 == TRUE)
{
Doc_PrintLine(ndocid,1," ВИНО");
}
else
{
Doc_PrintLine(ndocid,1,"");
};
if (AGON_isalive_kap3 == TRUE)
{
Doc_PrintLine(ndocid,1," АГОН");
}
else if (FERNANDO_isalive_kap3 == TRUE)
{
Doc_PrintLine(ndocid,1," ФЕРНАНДО");
}
else
{
Doc_PrintLine(ndocid,1,"");
};
Doc_PrintLine(ndocid,1,"");
if (malak_isalive_kap3 == TRUE)
{
Doc_PrintLine(ndocid,1," МАЛАК");
}
else
{
Doc_PrintLine(ndocid,1,"");
};
Doc_PrintLine(ndocid,1,"");
if (bromor_isalive_kap3 == TRUE)
{
Doc_PrintLine(ndocid,1,"БРОМОР");
}
else
{
Doc_PrintLine(ndocid,1,"");
};
if (AGON_isalive_kap3 == TRUE)
{
Doc_PrintLine(ndocid,1," АГОН");
}
это я у себя решил развить историю Агона :-) историю успеха :-D https://www.youtube.com/watch?v=vPNnbo2sQko
Стимулирование игрока к исследованию местности?
может быть она должна была вставляться в случае смерти Вино в 3 главе?
добавить проверки в списки одержимых в use_dementorobsessionbook и письме пирокара
а в use_pyrokarsobsessionlist наверное можно и так :-)
if (NPCOBSESSEDBYDMT_FERNANDO == TRUE)
{
Doc_PrintLine(ndocid,1," (+) ФЕРНАНДО"); // Фернандо прошел "экзорци́зм"
}
else if (FERNANDO_isalive_kap3 == TRUE)
{
Doc_PrintLine(ndocid,1," ФЕРНАНДО"); // Фернандо жив в 3 главе
}
else
{
Doc_PrintLine(ndocid,1,""); // Фернандо при старте 3 главы был мёртв
};
Плохо с этими проверками) Если в Минентале наступает глава 4, то невозможно проверить жив ли Рэндольф в Хоринисе. Если в Хоринисе наступает глава 5, то невозможно проверить жив ли Брутус в Минентале. И их имена не появятся в книге без посещения нужного мира.
так есть же b_npc_isalivecheck.d
Это для удаления персонажей в одной локации и создании их клонов в другой перед началом новой главы. Не очень подходит, потому что в случае с одержимыми они не будут удаляться и их можно будет убить до начала главы, а их имена всё равно появятся в книге.
Ну, и такой проверки перед пятой главой нет.
можно убить. это нужно сразу после церемонии телепортироваться не к проходу в миненталь, а бежать от таверны к Рандольфу с целью убить его :-) этот вариант лучше чем тот что сейчас, хуже чем есть он не делает. вероятность с Рандольфом и Брутосом низкая.
Конечно можно прям заморочиться и и в конце главы сделать проверку в b_npc_isalivecheck убрать их инстанцию из мира, а при заходе в мир делать проверку и вставлять инстанцию заново в таком случае это будет не 99%, а все 100% :-)
хотя и это тоже избыточно. вот в минентале наступила 4 глава. Рэндольфа в письме нет. вот герой в 4 главе зашёл в Хориносе, проверили ли жив Рендольф, если жив создали ему книжку, сменил расписание и "добавили" в список.
if(ENTERNW_KAPITEL4 == FALSE)
{
...
if(hero.guild == GIL_KDF)
{
...
if(Npc_IsDead(randolph) == FALSE)
{
CreateInvItems(randolph,itwr_dementorobsessionbook_mis,1);
b_startotherroutine(randolph,"Obsessed");
Randolph_isAlive_Kap4 = TRUE;
};
лирическое отступление: я вообще в рамках ЛОРу игры понимал это так: что когда ГГ приносит Пирокару Альманах, Пирокар должен прочитать его узнать новые имена и обновить список. или несознательный герой если открыл Альманах и увидел в нём новые имена должен обновить список.
Пираньи забыли Рендольфу и расписание новое сделать на период одержимости? в ENTERNW_KAPITEL4 есть, а в файле инстанции rtn_Obsessed_942 нет :-(
судя по репликам в 4 главе при игре за мага он должен был уйти в очередной запой :-)
func void DIA_Randolph_Heilung_Info ()
{
AI_Output (other,self,"DIA_Randolph_Heilung_15_00"); //Спиртное ударило тебе в голову, ха?
AI_Output (self,other,"DIA_Randolph_Heilung_06_01"); //Я больше капли в рот не возьму. Только ни в этой жизни. Ты можешь мне поверить, парень.
//AI_Output (other, self, "DIA_Randolph_Heilung_15_00"); //Das Saufen ist dir zu Kopf gestiegen, was?
//AI_Output (self, other, "DIA_Randolph_Heilung_06_01"); //Ich trink nie wieder einen Tropfen. Nicht in diesem Leben. Da kannst du dich drauf verlassen, Mann.
B_NpcClearObsessionByDMT (self);
};
// Kor.Angar: Рендольф в 4 главе ушёл в очередной запой и через этот недуг Ищущие его обратили
FUNC VOID Rtn_Obsessed_942 ()
{
TA_Stand_Drinking (08,00,22,00,"NW_FARM2_FIELD_03_B");
TA_Stand_Drinking (22,00,08,00,"NW_FARM2_FIELD_03_B");
};
если делать правки, то на забыть сделать выход из запоя :-)
func void dia_randolph_perm_info()
{
if(hero.guild == GIL_KDF)
{
b_startotherroutine(randolph,"Start");
b_npcobsessedbydmt(self);
}
Я у себя попробовал, вроде получилось https://www.youtube.com/watch?v=zVW1CcAUBnA но что бы в моей голове это поместилось, пришлось вынести в одну инстанцию и "приход" и "отходняк" :-)
///////////////////////////////////////////////////////////////////////
// Info Heilung
///////////////////////////////////////////////////////////////////////
instance DIA_Randolph_Heilung (C_INFO)
{
npc = BAU_942_Randolph;
nr = 55;
condition = DIA_Randolph_Heilung_Condition;
//information = DIA_Randolph_Heilung_Info;
permanent = TRUE;
description = "Спиртное ударило тебе в голову, ха?";
//description= "Das Saufen ist dir zu Kopf gestiegen, was?";
};
func int DIA_Randolph_Heilung_Condition ()
{
if (KAPITEL >= 4)
&& (NPCOBSESSEDBYDMT_RANDOLPH == FALSE)
&& (hero.guild == GIL_KDF)
&& Npc_IsInState(self,zs_talk)
{
DIA_Randolph_Heilung.important = TRUE;
DIA_Randolph_Heilung.information = DIA_Randolph_Obsessed_Info;
return TRUE;
};
if (NpcObsessedByDMT_Randolph == TRUE) // у Рандольфа был приход :-)
&& (NpcObsessedByDMT == FALSE)
//&& (hero.guild == GIL_KDF)
{
DIA_Randolph_Heilung.important = false;
DIA_Randolph_Heilung.information = DIA_Randolph_Heilung_Info;
return TRUE;
};
};
func void DIA_Randolph_Obsessed_Info ()
{
b_startotherroutine(randolph,"Start");
b_npcobsessedbydmt(self);
};
func void DIA_Randolph_Heilung_Info ()
{
AI_Output (other,self,"DIA_Randolph_Heilung_15_00"); //Спиртное ударило тебе в голову, ха?
AI_Output (self,other,"DIA_Randolph_Heilung_06_01"); //Я больше капли в рот не возьму. Только ни в этой жизни. Ты можешь мне поверить, парень.
//AI_Output (other, self, "DIA_Randolph_Heilung_15_00"); //Das Saufen ist dir zu Kopf gestiegen, was?
//AI_Output (self, other, "DIA_Randolph_Heilung_06_01"); //Ich trink nie wieder einen Tropfen. Nicht in diesem Leben. Da kannst du dich drauf verlassen, Mann.
B_NpcClearObsessionByDMT (self);
};
кстати одержимые почему то в классике не убивают героя.. в НВ так же?
и выход из одержимости было бы здорово сделать через AI_StartState https://github.com/Kor-Angar/SolGothic_2_Classic/commit/3bb226beff1c7691563e495ca5a77e59eca745f9
{
b_npcclearobsessionbydmt(medium);
};
AI_StartState (self, dia_vino_kap3_exit_info,1,""); // общий выход для всех одержимых
};
кстати одержимые почему то в классике не убивают героя.. в НВ так же?
Это как? Магия не убивает?
ищушие убивают. я про одержимых :-)
одержимый нападет на егроя с целью убить, избивает его, но не добивает. шманает труп, потом герой встаёт. потом не знаю что происходит :-)
а вот это про что? :-) DIA_Bromor_Obsession_GotMoney
попробую списки одержимых потестить. посмотри может что подскажешь :-) https://github.com/Kor-Angar/SolGothic_2_Classic/commit/6c25fa37d5d87e374f97de905ddfc85d5c329d61#diff-df37a5d705be74f4a59af0728b7ae98e320953ccd0c51444277d2964e0df9ad2
404, открой доступ
вроде открыл
не вижу, где эти переменные у тебя назначаются в TRUE:
var int Agon_isAlive_Kap3; // одержимые Chapter 3
var int Fernando_isAlive_Kap3; // одержимые Chapter 3
var int Bromor_isAlive_Kap3; // одержимые Chapter 3
var int Engrom_isAlive_Kap4; // одержимые Chapter 4
var int Randolph_isAlive_Kap4; // одержимые Chapter 4
var int Sekob_isAlive_Kap5; // одержимые Chapter 5
var int Brutus_isAlive_Kap5; // одержимые Chapter 5
Engrom и Brutus в B_Enter_OldWorld https://github.com/Kor-Angar/SolGothic_2_Classic/commit/6e37f9b55fe335857ce198d31fbf0080a33d810f
а вот это про что? :-) DIA_Bromor_Obsession_GotMoney
не используется и не назначается ни в классике, ни в аддоне
похоже на единовременную финансовую выплату от одержимого бромора. может в ранних версиях планировалась что-то от одержимости за что Бромор давал финансовое вознаграждение :-)
if(AlmanachCounter <= 5)
{
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_04"); //Это хорошо. Боюсь, впрочем, что это далеко не все. Продолжай поиски.
}
else if(AlmanachCounter <= 8)
{
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_05"); //Многие из них уже найдены. Но я не думаю, что мы изъяли их все.
}
else
{
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_06"); //Ты уже принес целую кучу этих вражеских книг.
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_07"); //Я буду удивлен, если тебе удастся найти еще.
};
Получается, что чтобы услышать последние две реплики Пирокара, нужно принести ему книгу из круга камней из пятой главы? Так-то одержимых и книг у них 8 (?).
выходит что так. всего же книг 10?
а первую книгу же Пирокару тут отдаём? DIA_Pyrokar_BUCHDERBESSENEN она же не считается в AlmanachCounter ?
а первую книгу же Пирокару тут отдаём? DIA_Pyrokar_BUCHDERBESSENEN она же не считается в AlmanachCounter ?
Отдаем, взамен получаем магическое письмо. Считается.
всего же книг 10?
1) у Энгрома 2) у Брутуса 3) у Малака 4) у Вино 5) у Бромора 6) у Фернандо 7) у Рэндольфа 8) у Секоба 9) в круге камней 10) у Марио на Ирдорате
Отдаем, взамен получаем магическое письмо. Считается.
а где она считается? https://github.com/Kor-Angar/G2_NotR_MDK/blob/fb531d932179a6f3476ca44f52fc52c38cbffe38/PrjGOTHIC/Story/Dialoge/DIA_KDF_500_Pyrokar.d#L1679
а вот вижу добавили
if(hero.guild == GIL_KDF)
{
AlmanachCounter += 1;
AI_Output(self,other,"DIA_Pyrokar_BUCHDERBESSENEN_11_04"); //Я полагаю, что она не единственная. Иди и найди еще эти книги проклятия.
AI_Output(self,other,"DIA_Pyrokar_BUCHDERBESSENEN_11_05"); //Я подозреваю, что это инструмент Ищущих.
AI_Output(self,other,"DIA_Pyrokar_BUCHDERBESSENEN_11_06"); //Они используют его, чтобы контролировать потерянные души своих жертв.
AI_Output(self,other,"DIA_Pyrokar_BUCHDERBESSENEN_11_07"); //Они, очевидно, записывают имена тех, кем они планируют овладеть, в эти книги.
AI_Output(self,other,"DIA_Pyrokar_BUCHDERBESSENEN_11_08"); //Послушай. Я дам тебе это магическое письмо. Оно покажет тебе имена, записанные в этих книгах.
CreateInvItems(self,ItWr_PyrokarsObsessionList,1);
B_GiveInvItems(self,other,ItWr_PyrokarsObsessionList,1);
AI_Output(self,other,"DIA_Pyrokar_BUCHDERBESSENEN_11_09"); //Найди этих жертв и принеси мне их книги. Я избавлюсь от них.
if(!Npc_IsDead(Karras))
{
AI_Output(self,other,"DIA_Pyrokar_BUCHDERBESSENEN_11_10"); //Но сначала ты должен показать хотя бы одну из них Каррасу. Может, это поможет ему в его исследованиях.
};
AI_Output(self,other,"DIA_Pyrokar_BUCHDERBESSENEN_11_11"); //И не сделай ошибку, попытавшись уничтожить их самостоятельно. Ты еще не готов выдержать их силу.
B_LogEntry(TOPIC_DEMENTOREN,"Пирокар хочет, чтобы альманах Одержимых не принес вреда. Он дал мне список всех, кого Ищущие планируют сделать одержимыми. В этом списке Пирокара позднее могут появиться новые имена.");
};
B_LogEntry (TOPIC_DEMENTOREN,"Пирокар хочет, чтобы альманах Одержимых не принес вреда. Он дал мне список всех, кого Ищущие планируют сделать одержимыми. В этом списке Пирокара позднее могут появиться новые имена.");
B_LogEntry (TOPIC_DEMENTOREN,"Pyrokar will die Almanachs der Besessenen unschädlich machen. Dazu gab er mir eine Liste derer, die die Suchenden zu übernehmen planen. Auf Pyrokars Liste sollen später vielleicht noch mehr Namen zu lesen sein.");
акции вставляется так же в НПС. если НПС мертв акции не вставляются. при этом квест сдаётся если даже Кантар был убит. так как кол-во акций динамическое.
тут так же надо сделать. уйти от статической проверки и прийти к динамической.
if(AlmanachCounter <= 5)
{
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_04"); //Это хорошо. Боюсь, впрочем, что это далеко не все. Продолжай поиски.
}
else if(AlmanachCounter <= 8)
{
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_05"); //Многие из них уже найдены. Но я не думаю, что мы изъяли их все.
}
else
{
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_06"); //Ты уже принес целую кучу этих вражеских книг.
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_07"); //Я буду удивлен, если тебе удастся найти еще.
};
как то так
// n = кол-во Альманахов вставленных в мир.
if (Kapitel == 5)
&& (AlmanachCounter == n)
{
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_06"); //Ты уже принес целую кучу этих вражеских книг.
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_07"); //Я буду удивлен, если тебе удастся найти еще.
}
else if (Kapitel == 5)
&& (AlmanachCounter == n-1)
{
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_05"); //Многие из них уже найдены. Но я не думаю, что мы изъяли их все.
}
else
{
AI_Output(self,other,"DIA_Pyrokar_AlmanachBringen_11_04"); //Это хорошо. Боюсь, впрочем, что это далеко не все. Продолжай поиски.
};
где n это кол-во Альманахов вставленных в мир.
после этой фразе "Многие из них уже найдены. Но я не думаю, что мы изъяли их все." можно сделать запись в дневник , что Пирокар считает что остались ещё Альманахи, что бы игрок который прокликивает диалоги увидел в дневники что есть ещё книжки. в таком случае наяривание в "магическое письмо пирокара" резко повысится :-)
было бы честнее последнюю книгу вставлять в Ищущего. так хотя бы шанс был бы её найти. вот кстати в пещере там где командир орков в 5 главе есть группа ищущих. суровые ребята и прям возле города ;-)
попробую потестить. посмотри пожалуйста корректно ли я счётчик прикрутил AlmanachCounterCreateInv https://github.com/Kor-Angar/SolGothic_2_Classic/commit/e55ed5edd01a99625aea1c9aa885932f3531d4d0
а вот вижу добавили
А если не добавлять, то последние две реплики никак не услышать и получается, что в оригиналах классики и аддона они не используются?
Наверное они использовались из-за бага, так как с одержимого можно было снять пару альманахов. Но если откинуть баги, то не могли использоваться.
было бы честнее последнюю книгу вставлять в Ищущего. так хотя бы шанс был бы её найти. вот кстати в пещере там где командир орков в 5 главе есть группа ищущих. суровые ребята и прям возле города ;-)
попробую вставать хотя бы в труп. альманах будет там же, но труп станет заметнее и это будет более соответствовать ЛОРу игры https://github.com/Kor-Angar/SolGothic_2_Classic/commit/b5cddcbac1696613dcd98b6127f5886e053bb597
А почему существующий нпц, а не новый? Если его можно убить до пятой главы, то появление альманаха уже не будет гарантировнным - в отличие от оригинала. Можно Трокара вставлять) А потом Бартоку рассказать про него. Или просто существующего и неиспользуемого ополченца (mil_302_torwache или mil_303_torwache).
можно. но я сделал для пробы пера так сказать. а в целом хочется сначала перебрать имеющихся живых типа:
Мент взяточник с верхнего квартала, если мертв Мика, если мертв Охранник (MIL_325_MILIZ). если мёртв то бессмертный ополченца с ворот..
Можно Трокара вставлять) А потом Бартоку рассказать про него.
это недоделанный диалог про пропавшего охотника?
это что такое? просто книга вставляется в мир? :-)