const int CHAIN_SPRITE = 98;//Sprite ID for chains.
ffc script Fyrus{
void run(int enemyID){
npc n = Ghost_InitAutoGhost(this, enemyID);
n->Extend = 3;
Ghost_TileWidth = 3;
Ghost_TileHeight = 3;
int combo = n->Attributes[10];
Ghost_Transform(this,n,combo,-1,3,3);
float speed = n->Step;
eweapon chain;
eweapon chain2;
float counter = -1;
int timer = 240;
int turncombo;
float angle;
int angle_speed = 1;
while(n->HP> 0){
counter = Ghost_HaltingWalk4(counter, n->Step, n->Rate, n->Homing, 2, n->Haltrate, 45);
if(n->Dir == DIR_UP)turncombo = combo;
else if(n->Dir == DIR_DOWN)turncombo = combo+1;
else if(n->Dir == DIR_LEFT)turncombo = combo+2;
else if(n->Dir == DIR_RIGHT)turncombo = combo+3;
angle = (angle + angle_speed) % 360;
chain = FireAimedEWeapon(n->Weapon, (n->X+24) + 48 * Cos(angle), (n->Y+24) + 48 * Sin(angle), angle, 1, n->WeaponDamage, CHAIN_SPRITE, 40, EWF_ROTATE);
SetEWeaponLifespan(chain,EWL_TIMER, 30);
SetEWeaponDeathEffect(chain,EWD_VANISH, 0);
chain2 = FireAimedEWeapon(n->Weapon, (n->X+24) + 48 * Cos(angle+180), (n->Y+24) + 48 * Sin(angle+180), angle, 1, n->WeaponDamage, CHAIN_SPRITE, 40, EWF_ROTATE);
SetEWeaponLifespan(chain2,EWL_TIMER, 30);
SetEWeaponDeathEffect(chain2,EWD_VANISH, 0);
if(timer <=0){
for(int i = 0; i< 60; i++){
if(n->Dir == DIR_UP)chain = FireAimedEWeapon(n->Weapon, n->X, n->Y-i, 0, 100, n->WeaponDamage, CHAIN_SPRITE, 40, EWF_ROTATE);
else if(n->Dir == DIR_DOWN)chain = FireAimedEWeapon(n->Weapon, n->X, n->Y+i, 0, 100, n->WeaponDamage, CHAIN_SPRITE, 40, EWF_ROTATE);
else if(n->Dir == DIR_LEFT)chain = FireAimedEWeapon(n->Weapon, n->X-i, n->Y, 0, 100, n->WeaponDamage, CHAIN_SPRITE, 40, EWF_ROTATE);
else if(n->Dir == DIR_UP)chain = FireAimedEWeapon(n->Weapon, n->X+i, n->Y, 0, 100, n->WeaponDamage, CHAIN_SPRITE, 40, EWF_ROTATE);
SetEWeaponLifespan(chain,EWL_TIMER, 60);
SetEWeaponMovement(chain, EWM_THROW, -1, EWMF_DIE);
SetEWeaponDeathEffect(chain,EWD_EXPLODE, 8);
if(n->HP> 50){
timer = 240;
angle_speed = 1;
}
else if(n->HP > 30 && n->HP < 50){
timer = 120;
n->Step = 2 * speed;
angle_speed = 2;
}
else if(n->HP < 30){
timer = 60;
n->Step = 3 * speed;
angle_speed = 3;
}
if(n->HP <=0 ||!n->isValid())break;
}
}
timer--;
Ghost_Transform(this,n,turncombo,-1,3,3);
Ghost_Waitframe(this, n, true, true);
}
}
}