"//" zakomentuje wszystko do końca linii, więc zmiana animacji się nie wykona. Przerzuć kod w klamrach do osobnych linijek.
Myślę, że lepiej wrzucić "selfa" jako parametr, bo np. w dialogach globalnym "selfem" jest NPC (nie "hero"), więc jak dodasz zmianę gildii do dialogu, to się nie wykona.
func void B_Change_Walk(var C_NPC who)
{
if(Npc_IsPlayer(who))
{
if(who.guild == bla bla bla...)
(...)
};
}
Teraz możesz dodać wywołanie swojej funkcji na końcu B_ChangeGuild, lub napisać swoją funkcję, np:
func void B_MyNewChangeGuild(var int npcInstance, var int newGuild)
{
var C_NPC npc;
npc = Hlp_GetNpc(npcInstance);
Npc_SetTrueGuild(npc,newGuild);
npc.guild = newGuild;
B_Change_Walk(npc);
};
Możesz też podejść do sprawy inaczej i stworzyć osobną funkcję, wywoływaną tylko dla "hero":
func void B_ChangeHeroGuild(var int newGuild)
{
Npc_SetTrueGuild(hero,newGuild);
hero.guild = newGuild;
if(newGuild == GIL_STT)
{
Mdl_ApplyOverlayMds(hero,"Humans_Relaxed.mds");
}
else if
(...)
};
albo jeszcze inaczej, rozbić sobie wszystko na kilka osobne funkcje:
func void B_ChangeNPCGuild(var C_NPC who, var int newGuild)
{
Npc_SetTrueGuild(who,newGuild);
who.guild = newGuild;
}
func void B_ChangeWalkIfHero(var C_NPC who, var String ani)
{
if(Npc_IsPlayer(who))
{
Mdl_ApplyOverlayMds(who, ani);
};
}
/////////////////////
func void B_ChangeNPCGUildToSTT(var int npcInstance)
{
var C_NPC npc;
npc = Hlp_GetNpc(npcInstance);
B_ChangeNPCGuild(npc, GIL_STT);
B_ChangeWalkIfHero(npc, "Humans_Relaxed.mds");
}
func void B_ChangeNPCGUildToKDF(var int npcInstance)
{
var C_NPC npc;
npc = Hlp_GetNpc(npcInstance);
B_ChangeNPCGuild(npc, GIL_KDF);
B_ChangeWalkIfHero(npc, "Humans_Mage.mds");
}
func void B_ChangeNPCGUildToBlaBlaBla...
(...)
Sposobów jest wiele. Jak Ci wygodniej.