Poziom poziomem, ale ta liczba nigdy nie był niczym więcej jak relatywnym wskaźnikiem sytuacyjnej potęgi bohatera. Pora to zmienić (tutaj wstaw dramatyczną pauzę)... będzie ona kontrolować ilość przydupasów, które mag może naraz kontrolować (nieważne czy zostały przyzwane runą, czy zwojem); te nadmiarowe zostają uwolnione i idą na całość, atakując (jeśli jest najbliżej ich) swojego stwórcę.
Na początek dopasowałem wartości do taktycznej mocarności każdego stworzenia, które może przywołać Bezimienny (zaklęć jest łącznie osiem, ale szkielety z Armii Ciemności nie były ruszane i tutaj wszystko zostało jak jest, takoż szkielety przywołane przez szkieletowych magów również nie były modyfikowane). Oto co umieściłem w CONSTANTS.D (wartości są arbitralne i najprawdopodobniej ulegną zmianie):
const int Summoned_Creature_1 = 6 [Szkielet Goblin]
const int Summoned_Creature_2 = 7 [Wilk]
const int Summoned_Creature_3 = 9 [Zombi]
const int Summoned_Creature_4 = 11 [Kamienny Strażnik]
const int Summoned_Creature_5 = 14 [Szkielet]
const int Summoned_Creature_6 = 20 [Kamienny Golem]
const int Summoned_Creature_7 = 28 [Demon]
Następnie stworzyłem odpowiednie skrypty dla potworów (w SCRIPTS\CONTENT\STORY\NPC\MONSTER), każdy dostał odpowiednią ID/GIL (czyli ID/GIL_SUMMONED_CREATURE_1, ID/GIL_SUMMONED_CREATURE_2 itd.; tutaj udało mi się wszystko podmienić w CONSTANTS.D z "wakatami" na gildie [było ich sześć], plus podmiana z GIL_ALLIGATOR), następnie stosowne zmiany wylądowały w B_INITMONSTERATTITUDES.D oraz SPECIES.D (skopiowałem wszystko z pasujących kreatur), a potem rezultaty władowałem w GOTHIC.SRC w odpowiedniej kolejności.
I tutaj się zatrzymałem. Wiem że musiałbym stworzyć funkcję np. B_SUMMONEDCREATURESBEHAVIOR i nią uprzedzić pozostałe w odpowiednich zaklęciach przyzywających. I z tego powodu mam dwa pytania:
1. Gdzie umieścić te const int? W każdym pliku potwora, przed np. name[0]?
2. Czy funkcja porównująca powinna wyglądać tak:
func void B_SummonedCreatureBehavior()
{
if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(ID_SUMMONED_CREATURE_1) || Hlp_GetInstanceID(self) == Hlp_GetInstanceID(ID_SUMMONED_CREATURE_2) || Itd.)
{
if((Summoned_Creature_1 + Summoned_Creature_2 + Summoned_Creature_3 + Summoned_Creature_4 + Summoned_Creature_5 + Summoned_Creature_6 + Summoned_Creature_7) > hero.level)
{
AI_StopProcessInfos(self);
B_Attack(self,other,AR_NONE,0);
}
else
{
start_aistate = ZS_MM_Rtn_Summoned;
};
};
};
Ha! Wiem, że to mocno zgrubny koncept, bowiem nie wiem jak rozpisać skrypt, który miałby kontrolować na bieżąco wartość przyzwanych sług (składnia) - czy jest niższa niż poziom bohatera - ale jestem pewien, że mnóstwo tutaj nietuzinkowych towarzyszy, którzy zechcą się zmierzyć z tym zacnym wyzwaniem.
A na koniec bonus... oto co mi się wydarzyło po instalacji ModKita v2.6a:
PS. I jak będziesz mnie mielił, to prosiłbym o teksty wybuchające gejzerem intelektu i karkołomne inwektywy. Dzięki!