I am not quite sure how to get this working. Basically, I want my NPC to change what a variable is equal to on a timer, and then use that variably to decide when to do or not to do something. The variable I am using is $cast and for some reason, it always casts the illusion, even though everything else in the quest is working properly. The variable is supposed to switch to equal 0, and when it is 0, she isn't supposed to cast the illusions.
Code:
#Illusionist Quest
sub EVENT_SPAWN {
my $cast;
my $x = $npc->GetX();
my $y = $npc->GetY();
quest::set_proximity($x - 10, $x + 10, $y - 10, $y + 10);
quest::settimer("stopcast",1200);
$cast=1;
}
sub EVENT_SAY {
if ($text =~/hail/i) {
quest::say ("Would you like me to [return] you to your natural form? Or would you like me to [stop] changing your illusion when you enter the Nexus?"); }
if ($text =~/return/i) {
quest::say ("There, you are now back to your natural appearance.");
quest::playerrace(0); }
if ($text =~/stop/i) {
quest::say ("Ok, I won't change it from now on. Unless you change your mind and wish for me to [start] changing it again next time.");
quest::setglobal("illusion", 1, 1, "F"); }
if ($text =~/start/i) {
quest::say ("Sure, I will be happy to start changing your illusion again next time!");
quest::setglobal("illusion", 1, 1, "M10"); }
}
sub EVENT_ENTER {
if (defined($qglobals{nexusmove})) {
}
else {
quest::movepc(152, quest::ChooseRandom(-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35),quest::ChooseRandom(-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35),-30);
quest::setglobal("nexusmove", 1, 1, "M10");
}
if ($cast=1) {
if ($ulevel >= 5) {
if (defined($qglobals{illusion})) {
}
else {
quest::playerrace(quest::ChooseRandom(14,27,42,43,46,58,60,62,63,66,75,82,85,89,95,108,120,123,150,151,153,161,209,210,211,212,356,367,433,436,454,455,456,458,464,469,470,472,473));
quest::playertexture(quest::ChooseRandom(1,2,3,4,5));
quest::movepc(152, quest::ChooseRandom(-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35),quest::ChooseRandom(-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35),-30);
quest::setglobal("illusion", 1, 1, "M10");
}
}
}
}
sub EVENT_TIMER {
my $cast;
if ($timer eq "stopcast") {
$cast=0;
quest::stoptimer("stopcast");
quest::say ("I must concentrate for a while before I can cast more illusions.");
# quest::doanim(33);
$npc->SetAppearance(1);
quest::settimer("startcast",3600);
}
if ($timer eq "startcast") {
$cast=1;
quest::stoptimer("startcast");
quest::say ("I have gathered enough energy to begin casting illusions once again!");
# quest::doanim(0);
$npc->SetAppearance(0);
quest::settimer("stopcast",1200);
}
}