Bez zbędnego pierdolenia.
Musimy dodać naszemu PC_Hero rutynę, która będzie się wykonywała na wp "TOT" (bardzo ważne, bo nie chcemy, żeby PC_Hero sobie znikł).
Robimy nowy czar TRF:
// ------ New Transformation ------
const int SPL_Cost_TrfMyNewTransformationSpell = 10;//Koszt czaru
var C_NPC npc;//make it global //potrzebujemy zapisać naszego potworka do globalnej instance
func int Spell_Logic_TrfMyNewTransformationSpell (var int manaInvested)
{
if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
|| (self.attribute[ATR_MANA] >= SPL_Cost_TrfMyNewTransformationSpell)
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfMyNewTransformationSpell;
npc = Hlp_GetNpc(MonsterInstance); //tutaj przypisujemy do naszej globalnej zmiennej ID naszego wymarzonego npc
Wld_SpawnNpcRange(PC_Hero, npc, 1, 500);//Przyzywamy naszego npc niedaleko PC_Hero
SetAsPlayer(npc); //IKARUS / LEGO!: zmienia naszego bohatera z naszym npc
Npc_ClearAIQueue(PC_HERO);
AI_Teleport(PC_HERO, "TOT");//Wysyłamy naszego PC_Hero do wp TOT
return SPL_SENDCAST;
}
else
{
return SPL_SENDSTOP;
};
};
Teraz per frame:
if (MEM_KeyState(KEY_ENTER) == KEY_PRESSED) //IKARUS: Jeśli naciśniemy enter:
{
Npc_ClearAIQueue(PC_HERO);
AI_Teleport(PC_HERO, Npc_GetNearestWP(hero);//Teleportuje PC_Hero niedaleko nas
SetAsPlayer(PC_HERO);//Zmieniamy się z ciałem z PC_Hero
Npc_ClearAIQueue(npc);
B_RemoveNpc(npc);//bestia idzie do domu, czyli umiera i teleportuje się na wp TOT
};
Jest to uboższa wersja transformacji.
Wiadomo, czar też trzeba zrobić...