Copy to Clipboard Test

Free-Roaming Gohma (Autoghost) Code

ffc script Big_Gohma{
     void run(int enemyID){
          npc n = Ghost_InitAutoGhost(this, enemyID);
          int modetimer = 600;
          Ghost_X = 123;
          Ghost_Y = 80;
          n->Extend = 3;
          Ghost_TileWidth = 2;
          Ghost_TileHeight = 2;
          int closed = n->Attributes[10];
          int open = closed+4;
          int combo = closed;
          int mode = 1;
          float counter = -1;
          eweapon fireball;
          Ghost_Transform(this,n,combo,-1,2,2);
          while(n->HP > 0){
               if(mode == 1)n->Defense[NPCD_ARROW] =NPCDT_IGNORE;
               else if (mode ==2)n->Defense[NPCD_ARROW] =NPCDT_NONE;
               if(n->Dir == DIR_UP && mode == 1)combo = closed;
               else if(n->Dir == DIR_DOWN && mode == 1)combo = closed+1;
               else if(n->Dir == DIR_LEFT && mode == 1)combo = closed+2;
               else if(n->Dir == DIR_RIGHT && mode == 1)combo = closed+3;
               else if(n->Dir ==DIR_UP && mode == 2)combo = open; 
               else if(n->Dir == DIR_DOWN && mode == 2)combo = open+1;
               else if(n->Dir ==DIR_LEFT && mode == 2)combo = open+2;
               else if(n->Dir == DIR_RIGHT && mode == 2)combo = open+3;
               if(modetimer >0 && mode ==1){
                    modetimer--;
                    if(modetimer<=0){
                         modetimer = 300;
                         if(n->Dir == DIR_UP || n->Dir == DIR_DOWN){
                              fireball = FireAimedEWeapon(n->Weapon, n->X+16, n->Y, 0, 300, n->WeaponDamage, 40, 40, EWF_ROTATE);
                              SetEWeaponLifespan(fireball,EWL_TIMER, 60);
                              SetEWeaponDeathEffect(fireball,EWD_VANISH, 0);
                         }
                         else{
                              fireball = FireAimedEWeapon(n->Weapon, n->X, n->Y+16, 0, 300, n->WeaponDamage, 40, 40, EWF_ROTATE);
                              SetEWeaponLifespan(fireball,EWL_TIMER, 60);
                              SetEWeaponDeathEffect(fireball,EWD_VANISH, 0);
                         }
                         mode = 2;
                    }
               }
               else if(modetimer >0 && mode ==2){
                    modetimer--;
                    if(modetimer<=0){
                         modetimer = 300;
                         if(n->Dir == DIR_UP || n->Dir == DIR_DOWN){
                              fireball = FireAimedEWeapon(n->Weapon, n->X+16, n->Y, 0, 300, n->WeaponDamage, 40, 40, EWF_ROTATE);
                              SetEWeaponLifespan(fireball,EWL_TIMER, 60);
                              SetEWeaponDeathEffect(fireball,EWD_VANISH, 0);
                         }
                         else{
                             fireball = FireAimedEWeapon(n->Weapon, n->X, n->Y+16, 0, 300, n->WeaponDamage, 40, 40, EWF_ROTATE);
                             SetEWeaponLifespan(fireball,EWL_TIMER, 60);
                             SetEWeaponDeathEffect(fireball,EWD_VANISH, 0);
                         }
                         mode = 1;
                    }
               }
               if(n->HP <=10){
                   Ghost_DeathAnimation(this,n, 2);
                   Waitframes(60);
                   n->HP = 0;
                   Quit();
               }
               counter = Ghost_HaltingWalk4(counter, n->Step, n->Rate, n->Homing, 2, n->Haltrate, 45);    
               Ghost_Data = combo;
               Ghost_Waitframe(this, n, true, true);
          }
     }
}