Freezeing Enemies:
make some global vars;
int ene1X ; int ene1Y ; int ene1W ; int ene2X ; int ene2Y ; int ene2W ;
etc... you will probley want to account for at least 10 enemies
you can never tell how many enemies you will need to keep track of with summors, spliters, and the posibility of script-created enemies. but you will have to find a suitable number for your quest.
Add a global var to check wether the freeze is active:
bool eneFrozen = false;
make a function that will be called when you use the whistle;
make sure you do eneFrozen = true; before calling this function
void eneFreeze (){
//record all enemies X / Y cords and weapon
npc ene1 = Screen->LoadNPC(1);
npc ene2 = Screen->LoadNPC(2);
//etc.
ene1X = ene1->X;
ene1Y = ene1->Y;
ene1W = ene1->Weapon;
ene2X = ene2->X;
ene2Y = ene2->Y;
ene2W = ene2->Weapon;
//etc.
While(eneFrozen == True){
ene1->X = ene1X;
ene1->Y = ene1Y;
ene1->Weapon = 0;
ene2->X = ene2X;
ene2->Y = ene2Y;
ene2->Weapon = 0;
//etc.
Waitframe();
}
//once eneFrozen == False again (at the end of your animation)
//restore the enemies' weapons
ene1->Weapon = ene1W;
ene2->Weapon = ene2W;
//etc.
}
Thats pretty much all there is to it, just with alot more varibles
Don't be worried about asking alot of questions, I'm always glad to help ppl learn more, it also helps me by makeing me solve problems I otherwise would not have thought of, so I learn as well