var int SelectedLevel;//1- khorinis 2- GD
func void TeleportToRuneStone(var string waypointname){
Wld_PlayEffect("SPELLFX_TELEPORT", hero, hero, 0, 0, 0, FALSE );
Wld_PlayEffect("SPELLFX_TELEPORT_RING", hero, hero, 0, 0, 0, FALSE );
AI_Teleport(hero,waypointname);
Snd_Play("MFX_SLEEP_CAST");
AI_StopProcessInfos(self);
};
const int SPL_COST_TELEPORT = 10;
func void b_printteleporttoofaraway(var int level)
{
if(level != CURRENTLEVEL)
{
PrintScreen(PRINT_TELEPORTTOOFARAWAY,-1,YPOS_LEVELUP,FONT_SCREENSMALL,2);
};
};
instance SPELL_TELEPORT(C_SPELL_PROTO)
{
time_per_mana = 0;
spelltype = SPELL_NEUTRAL;
targetcollectalgo = TARGET_COLLECT_CASTER;
canturnduringinvest = 0;
targetcollectrange = 0;
targetcollectazi = 0;
targetcollectelev = 0;
};
func int spell_logic_palteleportsecret(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_palteleportsecret()
{
b_printteleporttoofaraway(NEWWORLD_ZEN);
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
AI_Teleport(self,"NW_PAL_SECRETCHAMBER");
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
};
func int spell_logic_teleportseaport(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_teleportseaport()
{
b_printteleporttoofaraway(NEWWORLD_ZEN);
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
AI_Teleport(self,"CASTLETP");
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
};
func int spell_logic_teleportmonastery(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_teleportmonastery()
{
b_printteleporttoofaraway(NEWWORLD_ZEN);
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
AI_Teleport(self,"KLOSTERTP");
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
};
func int spell_logic_teleportfarm(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_teleportfarm()
{
b_printteleporttoofaraway(NEWWORLD_ZEN);
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
AI_Teleport(self,"BIGFARM");
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
};
func int spell_logic_teleportxardas(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_teleportxardas()
{
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
SelectedLevel=TRUE;
AI_ProcessInfos(self);
};
func int spell_logic_teleportpassnw(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_teleportpassnw()
{
b_printteleporttoofaraway(NEWWORLD_ZEN);
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
AI_Teleport(self,"LEVELCHANGE");
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
};
func int spell_logic_teleportpassow(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_teleportpassow()
{
b_printteleporttoofaraway(OLDWORLD_ZEN);
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
AI_Teleport(self,"SPAWN_MOLERAT02_SPAWN01");
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
};
func int spell_logic_teleportoc(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_teleportoc()
{
b_printteleporttoofaraway(OLDWORLD_ZEN);
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
AI_Teleport(self,"OC_MAGE_CENTER");
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
};
func int spell_logic_teleportowdemontower(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_teleportowdemontower()
{
b_printteleporttoofaraway(OLDWORLD_ZEN);
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
AI_Teleport(self,"DT_E3_03");
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
};
func int spell_logic_teleporttaverne(var int manainvested)
{
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_COST_TELEPORT)
{
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void spell_cast_teleporttaverne()
{
b_printteleporttoofaraway(NEWWORLD_ZEN);
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_TELEPORT;
};
AI_Teleport(self,"NW_TAVERNE_04");
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
};
func void spell_cast_teleport()
{
if(Npc_GetActiveSpell(self) == SPL_PALTELEPORTSECRET)
{
spell_cast_palteleportsecret();
};
if(Npc_GetActiveSpell(self) == SPL_TELEPORTSEAPORT)
{
spell_cast_teleportseaport();
};
if(Npc_GetActiveSpell(self) == SPL_TELEPORTMONASTERY)
{
spell_cast_teleportmonastery();
};
if(Npc_GetActiveSpell(self) == SPL_TELEPORTFARM)
{
spell_cast_teleportfarm();
};
if(Npc_GetActiveSpell(self) == SPL_TELEPORTXARDAS)
{
spell_cast_teleportxardas();
};
if(Npc_GetActiveSpell(self) == SPL_TELEPORTPASSNW)
{
spell_cast_teleportpassnw();
};
if(Npc_GetActiveSpell(self) == SPL_TELEPORTPASSOW)
{
spell_cast_teleportpassow();
};
if(Npc_GetActiveSpell(self) == SPL_TELEPORTOC)
{
spell_cast_teleportoc();
};
if(Npc_GetActiveSpell(self) == SPL_TELEPORTOWDEMONTOWER)
{
spell_cast_teleportowdemontower();
};
if(Npc_GetActiveSpell(self) == SPL_TELEPORTTAVERNE)
{
spell_cast_teleporttaverne();
};
};
instance DIA_TELEPORTEND(C_INFO)
{
npc = PC_HERO;
nr = 999;
condition = dia_TELEPORTEND_condition;
information = dia_TELEPORTEND_info;
permanent = TRUE;
description = "Anuluj...";
};
func int dia_TELEPORTEND_condition()
{
if(SelectedLevel==TRUE)
{
return TRUE;
};
};
func void dia_TELEPORTEND_info()
{
AI_StopProcessInfos(self);
SelectedLevel=FALSE;
};
instance PC_TELEPORTTO(C_INFO)
{
npc = PC_HERO;
nr = 1;
condition = PC_TELEPORTTO_condition;
information = PC_TELEPORTTO_info;
permanent = TRUE;
description = "Teleport do...";
};
func int PC_TELEPORTTO_condition()
{
if(SelectedLevel==TRUE)
{
return TRUE;
};
};
func void PC_TELEPORTTO_info()
{
Info_ClearChoices(PC_TELEPORTTO);
if (CurrentLevel==NEWWORLD_ZEN){
if(CITY_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Khorinis.",PC_TELEPORTTO_CITY);
};
if(XARDAS_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Wieży Xardasa.",PC_TELEPORTTO_XARDAS);
};
if(FARM_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... na Farmę Onara.",PC_TELEPORTTO_FARM);
};
if(TAVERN_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Martwej Harpii.",PC_TELEPORTTO_TAVERN);
};
if(MONASTERY_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Klasztoru Magów Ognia.",PC_TELEPORTTO_MONASTERY);
};
if(PASS_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Górniczej Doliny.",PC_TELEPORTTO_PASS);
};
if(NORTH_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Słonecznego Kręgu.",PC_TELEPORTTO_NORTH);
};
}else if (CURRENTLEVEL==OLDWORLD_ZEN)}{
if(GESTATH_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Okolic Górskiej Fortecy.",PC_TELEPORTTO_GESTATH);
};
if(OWXARDAS_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Starej Wieży Xardasa.",PC_TELEPORTTO_XARDASTOWER);
};
if(NEWCAMP_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... 'Nowego' Obozu.",PC_TELEPORTTO_NEWCAMP);
};
if(NW_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Przełęczy Górniczej Doliny.",PC_TELEPORTTO_PASSNW);
};
if(OLDCAMP_STONE_ACTIVATE){
Info_AddChoice(PC_TELEPORTTO,"... Zamku Starego Obozu.",PC_TELEPORTTO_ORECASTLE);
};
Info_AddChoice(PC_TELEPORTTO,"(Wróć...)",PC_TELEPORT_ON_BACK);
};
func void PC_TELEPORT_ON_BACK()
{
Info_ClearChoices(PC_TELEPORTTO);
};
func void PC_TELEPORTTO_CITY(){
TeleportToRuneStone("CITY_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_XARDAS(){
TeleportToRuneStone("XARDAS_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_TAVERN(){
TeleportToRuneStone("TAVERN_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_MONASTERY(){
TeleportToRuneStone("MONASTERY_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_PASS(){
TeleportToRuneStone("PASS_TO_OW_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_FARM(){
TeleportToRuneStone("FARM_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_NORTH(){
TeleportToRuneStone("NORTH_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_GESTATH(){
TeleportToRuneStone("GESTATH_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_XARDASTOWER(){
TeleportToRuneStone("OW_XARDAS_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_NEWCAMP(){
TeleportToRuneStone("NEWCAMP_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_PASSNW(){
TeleportToRuneStone("NW_TP");
SelectedLevel=FALSE;
};
func void PC_TELEPORTTO_ORECASTLE(){
TeleportToRuneStone("OC_TP");
SelectedLevel=FALSE;
};
Zmienną zawracałem za każdym razem. Więc nie wiem o co może chodzić.