Zmiana wymaganej ilości punktów naukiMożesz zmienić ilość wymaganych punktów nauki w pliku "Story_Globals.d", który znajduje się w "Gothic\_work\DATA\scripts\Content\Story". Na zasadzie, że określisz ile Punktów Nauki będzie wymagała nauka 1 punktu siły/zręczności/many. W tym celu wyszukaj w tym pliku słowa "Lernkosten" i będziesz miał coś takiego:
const int LPCOST_ATTRIBUTE_STRENGTH = 1;
const int LPCOST_ATTRIBUTE_DEXTERITY = 1;
const int LPCOST_ATTRIBUTE_MANA = 1;
const int LPCOST_TALENT_MAGE_1 = 10;
const int LPCOST_TALENT_MAGE_2 = 15;
const int LPCOST_TALENT_MAGE_3 = 20;
const int LPCOST_TALENT_MAGE_4 = 25;
const int LPCOST_TALENT_MAGE_5 = 30;
const int LPCOST_TALENT_MAGE_6 = 40;
const int LPCOST_TALENT_1H_1 = 10;
const int LPCOST_TALENT_1H_2 = 20;
const int LPCOST_TALENT_2H_1 = 30;
const int LPCOST_TALENT_2H_2 = 40;
const int LPCOST_TALENT_BOW_1 = 10;
const int LPCOST_TALENT_BOW_2 = 20;
const int LPCOST_TALENT_CROSSBOW_1 = 10;
const int LPCOST_TALENT_CROSSBOW_2 = 20;
const int LPCOST_TALENT_ACROBAT = 10;
const int LPCOST_TALENT_SNEAK = 10;
const int LPCOST_TALENT_PICKLOCK_1 = 10;
const int LPCOST_TALENT_PICKLOCK_2 = 20;
const int LPCOST_TALENT_PICKPOCKET_1 = 10;
const int LPCOST_TALENT_PICKPOCKET_2 = 20;
Jest jednak mały haczyk -
o ile bez problemu można zmienić przykładowo koszt nauki walki bronią czy umiejętności złodziejskich to...
z siłą, zręcznością i maną jest pewien problem bo nie wystarczy tylko zmienić
const int LPCOST_ATTRIBUTE_STRENGTH = 1;
na przykładowo
const int LPCOST_ATTRIBUTE_STRENGTH = 2;
Jeżeli ograniczysz się wyłącznie do zmiany cyferki to jakkolwiek w dialogu u Diego będzie Ci się wyświetlać "+1 Punkt siły, koszt 2 Punkty Nauki" oraz "+5 Punktów Siły, koszt 10 Punktów Nauki" to w praktyce Diego da Ci odpowiednio 2 Punkty Siły i 5 Punktów Siły czyli wg przelicznika 1 za 1, zamiast przelicznika wpisanego w "Story_Globals.d"
Dodatkowo to samo będzie się tyczyć wszystkich innych nauczycieli (w przypadku siły w Gothic 1 będzie to oprócz Diega Cor Angar, Gor Na Toth, Lares, Lee, Thorus). Tak samo będzie z nauką u nauczycieli Zręczności i Many.
Ale UWAGA: według przelicznika z "Story_Globals.d" będzie Cię uczył Character Helper ("insert ch") a mówiąc ściślej - wyłącznie Character Helper.
Skąd ta różnica między normalnymi nauczycielami a Character Helperem?
Dzieje się tak dlatego, że dialogi odpowiadające za naukę u "normalnych nauczycieli" siły, zręczności i many z Gothica korzystają z "B_BuyAttributePoints" a dialogi odpowiadające za naukę siły, zręczności i many u "Character Helpera" korzystają z "B_SetHeroAttributes".
Rozwiązanie: czyli co zrobić, żeby nauczyciele uwzględniali przelicznik z pliku "Story_Globals.d". 1. Musisz wejść w plik dialogowy postaci nauczyciela i zamienić:
B_BuyAttributePoints (other, ATR_STRENGTH, LPCOST_ATTRIBUTE_STRENGTH);
na
B_SetHeroAttributes(ATR_STRENGTH, 1, LPCOST_ATTRIBUTE_STRENGTH)
oraz
B_BuyAttributePoints (other, ATR_STRENGTH, 5*LPCOST_ATTRIBUTE_STRENGTH);
na
B_SetHeroAttributes(ATR_STRENGTH, 5, 5*LPCOST_ATTRIBUTE_STRENGTH);
2. Niestety będziesz musiał to zrobić
osobno dla każdego z nauczycieli siły - czyli osobno wejść do dialogu Diego, Cor Angara, Thorusa, Laresa, itd i zmienić te fragmenty.
3. Analogicznie to działa z podmianą B_BuyAttributePoints na B_SetHeroAttributes ze zręcznością i maną.
4.
I rzecz prawie najważniejsza, bez której cała impreza nie ruszy - plik odpowiedzialny za dialog normalnego nauczyciela (np. "DIA_Pc_Thief.d" znajdujący się w "Gothic\_work\DATA\scripts\Content\Story\MISSIONS" a odpowiedzialny za Diega) nie "zassie" i nie rozpozna funkcji "B_SetHeroAttributes" jeżeli nie zrobimy tego o czym teraz będzie mowa.
Funkcja "B_SetHeroAttributes" znajduje się w pliku "CharacterHelper.d" w folderze "Gothic\_work\DATA\scripts\Content\AI\Test_Skripts". Musisz
wyciąć tę funkcję czyli:
func void B_SetHeroAttributes(VAR INT selection, var int increase, var int LP_cost)
{
var string Attributes;
if (hero.lp >= LP_cost)
{
hero.lp = hero.lp - LP_cost;
Npc_ChangeAttribute (hero, selection, increase);
Attributes = "Lernpunkte:";
Attributes = ConcatStrings(Attributes, IntToString(hero.LP));
Attributes = ConcatStrings(Attributes, "Str:");
Attributes = ConcatStrings(Attributes, IntToString(hero.attribute[ATR_STRENGTH]));
Attributes = ConcatStrings(Attributes, "Dex:");
Attributes = ConcatStrings(Attributes, IntToString(hero.attribute[ATR_DEXTERITY]));
Attributes = ConcatStrings(Attributes, "Mana:");
Attributes = ConcatStrings(Attributes, IntToString(hero.attribute[ATR_MANA_MAX]));
PrintScreen (Attributes, -1,-1,"font_old_20_white.tga",3);
}
else
{
PrintScreen ("Zu wenig Lernpunkte!", -1,-1,"FONT_OLD_20_WHITE.TGA",2);
B_Say (self, other, "$NOLEARNNOPOINTS");
};
};
...i
wkleić przykładowo do pliku "B_InExtremo.d" w "Gothic\_work\DATA\scripts\Content\Story\B". Przy czym gdy mówię "wyciąć" to znaczy "wyciąć" - ta funkcja ma zniknąć z pliku "CharacterHelper.d", gdyż jeżeli ją tylko skopiujesz i wkleisz to przy reparsowaniu plików wyskoczy Ci błąd.
Możesz też nieco zmodyfikować tę funkcję - bo przy nauce u nauczyciela będzie lepiej wyglądać:
func void B_SetHeroAttributes(VAR INT selection, var int increase, var int LP_cost)
{
var string Attributes;
if (hero.lp >= LP_cost)
{
hero.lp = hero.lp - LP_cost;
Npc_ChangeAttribute (hero, selection, increase);
PrintScreen ("Twoja moc rośnie!", -1,-1,"FONT_OLD_20_WHITE.TGA",1);
}
else
{
PrintScreen ("Zbyt mało Punktów Nauki!", -1,-1,"FONT_OLD_20_WHITE.TGA",2);
B_Say (self, other, "$NOLEARNNOPOINTS");
};
};
5. Po wszystkim reparsujesz pliki
6. I gotowe! Jeżeli wyciąłeś i przeniosłeś tę funkcję oraz dokonałeś podmianek w dialogach nauczycieli to masz przelicznik punktów nauki za siłę, zręczność i manę powiązany z przelicznikiem określonym w pliku "Story_Globals.d". Możesz też normalnie korzystać z "Character Helpera" gdyż on także "zasysa" funkcje "B_SetHeroAttributes" umieszczoną w folderze "Gothic\_work\DATA\scripts\Content\Story\B" (w moim przypadku w pliku "B_InExtremo.d" w tym folderze).
Autor: Kirgo2 z forum TheModders. Kopiowanie i rozpowszechnianie dozwolone.