#ifndef ENEMY_H
#define EMEMY_H

#include "global.h"
#include "entity.h"

extern void Octorok(Entity*);
extern void Chuchu(Entity*);
extern void Leever(Entity*);
extern void Peahat(Entity*);
extern void Rollobite(Entity*);
extern void DarkNut(Entity*);
extern void HangingSeed(Entity*);
extern void Beetle(Entity*);
extern void Keese(Entity*);
extern void DoorMimic(Entity*);
extern void RockChuchu(Entity*);
extern void SpinyChuchu(Entity*);
extern void CuccoChickAggr(Entity*);
extern void Moldorm(Entity*);
extern void EnemyE(Entity*);
extern void Moldworm(Entity*);
extern void Sluggula(Entity*);
extern void Pesto(Entity*);
extern void Puffstool(Entity*);
extern void ChuchuBoss(Entity*);
extern void LikeLike(Entity*);
extern void SpearMoblin(Entity*);
extern void BusinessScrub(Entity*);
extern void RupeeLike(Entity*);
extern void Madderpillar(Entity*);
extern void WaterDrop(Entity*);
extern void WallMaster(Entity*);
extern void BombPeahat(Entity*);
extern void Spark(Entity*);
extern void Chaser(Entity*);
extern void SpikedBeetle(Entity*);
extern void SensorBladeTrap(Entity*);
extern void Helmasaur(Entity*);
extern void FallingBoulder(Entity*);
extern void Bobomb(Entity*);
extern void WallMaster2(Entity*);
extern void Gleerok(Entity*);
extern void VaatiEyesMacro(Entity*);
extern void Tektite(Entity*);
extern void WizzrobeWind(Entity*);
extern void WizzrobeFire(Entity*);
extern void WizzrobeIce(Entity*);
extern void Armos(Entity*);
extern void Eyegore(Entity*);
extern void Rope(Entity*);
extern void SmallPesto(Entity*);
extern void AcroBandit(Entity*);
extern void BladeTrap(Entity*);
extern void Keaton(Entity*);
extern void Crow(Entity*);
extern void Mulldozer(Entity*);
extern void Bombarossa(Entity*);
extern void Wisp(Entity*);
extern void SpinyBeetle(Entity*);
extern void MazaalHead(Entity*);
extern void MazaalMacro(Entity*);
extern void MazaalHand(Entity*);
extern void OctorokBoss(Entity*);
extern void FlyingPot(Entity*);
extern void Gibdo(Entity*);
extern void OctorokGolden(Entity*);
extern void TektiteGolden(Entity*);
extern void RopeGolden(Entity*);
extern void CloudPiranha(Entity*);
extern void ScissorsBeetle(Entity*);
extern void CuccoAggr(Entity*);
extern void Stalfos(Entity*);
extern void FlyingSkull(Entity*);
extern void MazaalBracelet(Entity*);
extern void Takkuri(Entity*);
extern void BowMoblin(Entity*);
extern void Lakitu(Entity*);
extern void LakituCloud(Entity*);
extern void Enemy49(Entity*);
extern void VaatiRebornEnemy(Entity*);
extern void VaatiProjectile(Entity*);
extern void BallChainSoldier(Entity*);
extern void Enemy4D(Entity*);
extern void Ghini(Entity*);
extern void VaatiTransfigured(Entity*);
extern void Enemy50(Entity*);
extern void VaatiWrath(Entity*);
extern void VaatiArm(Entity*);
extern void Dust(Entity*);
extern void VaatiBall(Entity*);
extern void Slime(Entity*);
extern void MiniSlime(Entity*);
extern void FireballGuy(Entity*);
extern void MiniFireballGuy(Entity*);
extern void Enemy5A(Entity*);
extern void BusinessScrubPrologue(Entity*);
extern void GyorgFemale(Entity*);
extern void GyorgMale(Entity*);
extern void Curtain(Entity*);
extern void Enemy5F(Entity*);
extern void GyorgChild(Entity*);
extern void GyorgFemaleEye(Entity*);
extern void Enemy62(Entity*);
extern void GyorgFemaleMouth(Entity*);
extern void Enemy64(Entity*);
extern void TreeItem(Entity*);
extern void Enemy66(Entity*);

extern u32 GetNextFunction(Entity*);
extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*));
extern void sub_08001324(Entity*);
#endif
