const int FFC_FAKE_ENEMY_STEP = 20; //higher = slower. const int FFC_FAKE_ENEMY_HALT_MIN = 10; const int FFC_FAKE_ENEMY_HALT_MAX = 40; const int FFC_FAKE_ENEMY_FIRST_FRAME = 1; const int FFC_FAKE_ENEMY_RANDOM = 0; const int FFC_FAKE_ENEMY_DIR = 1; const int FFC_FAKE_ENEMY_STEP_TIMER = 2; const int FFC_FAKE_ENEMY_HALT = 3; const int FFC_FAKE_ENEMY_FRAMETIMER = 4; const int FFC_FAKE_ENEMY_CURFRAME = 5; ffc script FakeEnemy{ void run(int combo_id, int cset, int layer, int delay, int frames, int time_per_frame, int random){ int a[1024]; if ( !random ) random = 200; //Do some fake movement. a[FFC_FAKE_ENEMY_RANDOM] = random; //a[0] = timer a[FFC_FAKE_ENEMY_DIR] = Rand(5); //The initial direction. 4 = halted a[FFC_FAKE_ENEMY_STEP_TIMER] = FFC_FAKE_ENEMY_STEP; //Step : higher = slower. a[FFC_FAKE_ENEMY_HALT] = Rand(FFC_FAKE_ENEMY_HALT_MIN, FFC_FAKE_ENEMY_HALT_MAX); //Halt rate a[FFC_FAKE_ENEMY_FRAMETIMER] = time_per_frame; //a[FFC_FAKE_ENEMY_FRAMETIMER] == frametimer a[FFC_FAKE_ENEMY_CURFRAME] = FFC_FAKE_ENEMY_FIRST_FRAME; //Present frame. while(true){ if ( a[FFC_FAKE_ENEMY_RANDOM] ) a[FFC_FAKE_ENEMY_RANDOM] --; if ( !a[FFC_FAKE_ENEMY_RANDOM] ) { a[FFC_FAKE_ENEMY_DIR] = Rand(4); a[FFC_FAKE_ENEMY_RANDOM] = random; } if ( a[FFC_FAKE_ENEMY_STEP_TIMER] ) a[FFC_FAKE_ENEMY_STEP_TIMER]--; //Do some make movement. if ( !a[FFC_FAKE_ENEMY_STEP_TIMER] ) { if ( a[FFC_FAKE_ENEMY_DIR] == DIR_UP ) this->Y -= 1; if ( a[FFC_FAKE_ENEMY_DIR] == DIR_DOWN ) this->Y += 1; if ( a[FFC_FAKE_ENEMY_DIR] == DIR_RIGHT ) this->X += 1; if ( a[FFC_FAKE_ENEMY_DIR] == DIR_LEFT ) this->Y -= 1; if ( a[FFC_FAKE_ENEMY_DIR] == 4 ) { //halted while ( a[FFC_FAKE_ENEMY_HALT]-- ) { //Skip movement if ( a[FFC_FAKE_ENEMY_FRAMETIMER] ) { //frame timer isn't 0 a[FFC_FAKE_ENEMY_FRAMETIMER]--; } if ( !a[FFC_FAKE_ENEMY_FRAMETIMER] ) { //frame timer is at 0 a[FFC_FAKE_ENEMY_FRAMETIMER] = time_per_frame; if ( a[FFC_FAKE_ENEMY_CURFRAME] < frames ) a[FFC_FAKE_ENEMY_CURFRAME]++; if ( a[FFC_FAKE_ENEMY_CURFRAME] == frames ) a[FFC_FAKE_ENEMY_CURFRAME] = FFC_FAKE_ENEMY_FIRST_FRAME; } Screen->DrawCombo(layer, this->X, this->Y, combo_id, 1, 1, cset, -1, -1, 0, 0, 0, a[FFC_FAKE_ENEMY_CURFRAME], 0, true, 128) Waitframe(); } a[FFC_FAKE_ENEMY_HALT] = Rand(FFC_FAKE_ENEMY_HALT_MIN, FFC_FAKE_ENEMY_HALT_MAX); } a[FFC_FAKE_ENEMY_STEP_TIMER] = FFC_FAKE_ENEMY_STEP; } //Handle animation frame if ( a[FFC_FAKE_ENEMY_FRAMETIMER] ) { //frame timer isn't 0 a[FFC_FAKE_ENEMY_FRAMETIMER]--; } if ( !a[FFC_FAKE_ENEMY_FRAMETIMER] ) { //frame timer is at 0 a[FFC_FAKE_ENEMY_FRAMETIMER] = time_per_frame; if ( a[FFC_FAKE_ENEMY_CURFRAME] < frames ) a[FFC_FAKE_ENEMY_CURFRAME]++; if ( a[FFC_FAKE_ENEMY_CURFRAME] == frames ) a[FFC_FAKE_ENEMY_CURFRAME] = FFC_FAKE_ENEMY_FIRST_FRAME; } //Draw the combo Screen->DrawCombo(layer, this->X, this->Y, combo_id, 1, 1, cset, -1, -1, 0, 0, 0, a[FFC_FAKE_ENEMY_CURFRAME], 0, true, 128) Waitframe(); } } }