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

#ifndef NPC_H
#define NPC_H

extern void Gentari(Entity*);
extern void Gentari_Fusion(Entity*);
extern void Festari(Entity*);
extern void Festari_Fusion(Entity*);
extern void ForestMinish(Entity*);
extern void ForestMinish_Head(Entity*);
extern void ForestMinish_Fusion(Entity*);
extern void Postman(Entity*);
extern void Postman_Fusion(Entity*);
extern void NPC5(Entity*);
extern void Townsperson(Entity*);
extern void Townsperson_Head(Entity*);
extern void Townsperson_Fusion(Entity*);
extern void Kid(Entity*);
extern void Kid_Head(Entity*);
extern void Kid_Fusion(Entity*);
extern void Guard(Entity*);
extern void Guard_Head(Entity*);
extern void NPC9(Entity*);
extern void Stamp(Entity*);
extern void Maid(Entity*);
extern void Maid_Head(Entity*);
extern void Marcy(Entity*);
extern void Wheaton(Entity*);
extern void Pita(Entity*);
extern void MinishEzlo(Entity*);
extern void MinishEzlo_Head(Entity*);
extern void Mailbox(Entity*);
extern void Beedle(Entity*);
extern void Beedle_Head(Entity*);
extern void Brocco(Entity*);
extern void Brocco_Fusion(Entity*);
extern void SittingPerson(Entity*);
extern void SittingPerson_Head(Entity*);
extern void SittingPerson_Fusion(Entity*);
extern void Pina(Entity*);
extern void Pina_Fusion(Entity*);
extern void Din(Entity*);
extern void Din_Fusion(Entity*);
extern void Nayru(Entity*);
extern void Nayru_Fusion(Entity*);
extern void Farore(Entity*);
extern void Farore_Fusion(Entity*);
extern void Sturgeon(Entity*);
extern void Sturgeon_Head(Entity*);
extern void Sturgeon_Fusion(Entity*);
extern void TingleSiblings(Entity*);
extern void TingleSiblings_Fusion(Entity*);
extern void Stockwell(Entity*);
extern void Talon(Entity*);
extern void Talon_Head(Entity*);
extern void Talon_Fusion(Entity*);
extern void Malon(Entity*);
extern void Malon_Fusion(Entity*);
extern void Epona(Entity*);
extern void Epona_Fusion(Entity*);
extern void MilkCart(Entity*);
extern void GhostBrothers(Entity*);
extern void GhostBrothers_Fusion(Entity*);
extern void Smith(Entity*);
extern void Smith_Head(Entity*);
extern void Smith_Fusion(Entity*);
extern void NPC23(Entity*);
extern void KingDaltus(Entity*);
extern void KingDaltus_Fusion(Entity*);
extern void MinisterPotho(Entity*);
extern void MinisterPotho_Fusion(Entity*);
extern void NPC26(Entity*);
extern void Vaati(Entity*);
extern void Zelda(Entity*);
extern void Mutoh(Entity*);
extern void Mutoh_Head(Entity*);
extern void Mutoh_Fusion(Entity*);
extern void Carpenter(Entity*);
extern void Carpenter_Head(Entity*);
extern void Carpenter_Fusion(Entity*);
extern void CastorWildsStatue(Entity*);
extern void CastorWildsStatue_Fusion(Entity*);
extern void Cat(Entity*);
extern void Cat_Fusion(Entity*);
extern void MountainMinish(Entity*);
extern void MountainMinish_Head(Entity*);
extern void MountainMinish_Fusion(Entity*);
extern void ZeldaFollower(Entity*);
extern void Melari(Entity*);
extern void Melari_Head(Entity*);
extern void Melari_Fusion(Entity*);
extern void BladeBrothers(Entity*);
extern void BladeBrothers_Fusion(Entity*);
extern void Cow(Entity*);
extern void Cow_Fusion(Entity*);
extern void Goron(Entity*);
extern void Goron_Fusion(Entity*);
extern void GoronMerchant(Entity*);
extern void Gorman(Entity*);
extern void Gorman_Head(Entity*);
extern void Dog(Entity*);
extern void Dog_Head(Entity*);
extern void Dog_Fusion(Entity*);
extern void Syrup(Entity*);
extern void Syrup_Head(Entity*);
extern void Rem(Entity*);
extern void TownMinish(Entity*);
extern void TownMinish_Head(Entity*);
extern void TownMinish_Fusion(Entity*);
extern void Librari(Entity*);
extern void Librari_Fusion(Entity*);
extern void Percy(Entity*);
extern void Percy_Head(Entity*);
extern void Percy_Fusion(Entity*);
extern void VaatiReborn(Entity*);
extern void MoblinLady(Entity*);
extern void Librarians(Entity*);
extern void Farmers(Entity*);
extern void Farmers_Head(Entity*);
extern void Farmers_Fusion(Entity*);
extern void Carlov(Entity*);
extern void Dampe(Entity*);
extern void Dampe_Fusion(Entity*);
extern void DrLeft(Entity*);
extern void KingGustaf(Entity*);
extern void Gina(Entity*);
extern void Gina_Fusion(Entity*);
extern void Simon(Entity*);
extern void Anju(Entity*);
extern void Anju_Fusion(Entity*);
extern void Mama(Entity*);
extern void Mama_Head(Entity*);
extern void Mama_Fusion(Entity*);
extern void Emma(Entity*);
extern void Teachers(Entity*);
extern void Teachers_Head(Entity*);
extern void Teachers_Fusion(Entity*);
extern void WindTribespeople(Entity*);
extern void WindTribespeople_Head(Entity*);
extern void WindTribespeople_Fusion(Entity*);
extern void Gregal(Entity*);
extern void Gregal_Fusion(Entity*);
extern void MayorHagen(Entity*);
extern void MayorHagen_Fusion(Entity*);
extern void BigGoron(Entity*);
extern void EzloCap(Entity*);
extern void NPC4E(Entity*);
extern void NPC4E_Fusion(Entity*);
extern void NPC4F(Entity*);
extern void ClothesRack(Entity*);
extern void PicolyteBottle(Entity*);
extern void SmallTownMinish(Entity*);
extern void HurdyGurdyMan(Entity*);
extern void HurdyGurdyMan_Head(Entity*);
extern void HurdyGurdyMan_Fusion(Entity*);
extern void Cucco(Entity*);
extern void Cucco_Fusion(Entity*);
extern void CuccoChick(Entity*);
extern void CuccoChick_Fusion(Entity*);
extern void FusionMenuNPC(Entity*);
extern void FusionMenuNPC_Head(Entity*);
extern void Phonograph(Entity*);
extern void NPC58(Entity*);
extern void NPC58_Head(Entity*);

extern u32 UpdateFuseInteraction(Entity*);

void (*const gNPCFunctions[128][3])(Entity*);

#endif
