void run(int enemyID){
npc ghost;
eweapon fireball;
int damage;
int step;
float turnSpeed;
int homingTime;
int sprite;
int sound;
int flags=0;
// Initialize
ghost=Ghost_InitAutoGhost(this, enemyID);
// Get enemy settings
damage=ghost->WeaponDamage;
step=ghost->Attributes[HFS_ATTR_FIREBALL_STEP];
if(step<=0){
step=HFS_DEFAULT_FIREBALL_STEP;
}
turnSpeed=ghost->Attributes[HFS_ATTR_FIREBALL_TURN_SPEED]/1000;
if(turnSpeed<=0){
turnSpeed=HFS_DEFAULT_FIREBALL_TURN_SPEED/1000;
}
homingTime=ghost->Attributes[HFS_ATTR_FIREBALL_HOMING_TIME];
if(homingTime<=0){
homingTime=HFS_DEFAULT_FIREBALL_HOMING_TIME;
}
sprite=ghost->Attributes[HFS_ATTR_FIREBALL_SPRITE];
if(sprite<=0){
sprite=HFS_DEFAULT_FIREBALL_SPRITE;
}
sound=ghost->Attributes[HFS_ATTR_FIRE_SOUND];
if(ghost->Attributes[HFS_ATTR_SHIELD_LEVEL]<0){
flags|=EWF_UNBLOCKABLE;
}
else if(GetCurrentShieldLevel()<ghost->Attributes[HFS_ATTR_SHIELD_LEVEL]){
flags|=EWF_UNBLOCKABLE;
}
if(ghost->Attributes[HFS_ATTR_FIREBALL_ROTATE]>0){
flags|=EWF_ROTATE;
}
while(true){ //The script does not appear to be running through this loop - I've applied Trace to it and found nothing.
Ghost_Waitframes(this, ghost, true, true, Rand(HFS_MIN_FIRE_TIME, HFS_MAX_FIRE_TIME));
if(Distance(Ghost_X, Ghost_Y, Link->X, Link->Y)>=HFS_MIN_DISTANCE){
fireball=FireAimedEWeapon(EW_FIREBALL, Ghost_X, Ghost_Y, 0, step, damage, sprite, sound, flags);
SetEWeaponMovement(fireball, EWM_HOMING, turnSpeed);
SetEWeaponLifespan(fireball, EWL_TIMER, homingTime);
}
}
}
int GetCurrentShieldLevel(){
itemdata id;
int ret = -1;
int curlevel = -1;
// Check each item
for(int i = 0; i < 256; i++){
// Does Link have this item?
if(!Link->Item[i]){
continue;
}
// Is it a shield?
id = Game->LoadItemData(i);
if(id->Family != IC_SHIELD){
continue;
}
// Check its level
if(id->Level > curlevel){
curlevel = id->Level;
}
}
return curlevel;
}
}
Edit: I figgured that I should put my enemy attributes here:
HP - 2
Wpn Dmg - 2
Misc. attr.1 - 0
Misc. attr.2 - 0
Misc. attr.3 - 0
Misc. attr.4 - -1
Misc. attr.5 - 0
Misc. attr.6 - 1
Misc. attr.7 - 40
Misc. attr.11 - 8 (Transparent combo)
Misc. attr.12 - 1 (My script slot for the Homing Fireball Shooter)
Is there any problems with Ghost ZH itself or is there any mistake on my part?
Edited by Orin XD, 24 September 2011 - 12:35 AM.


