/**************************************************************
 * FFTacticsMUD : skills.h                                    *
 **************************************************************
 * (c) 2002 Damien Dailidenas (Trenton). All rights reserved. *
 **************************************************************/

#define DECLARE_DO_ACT(fun) DO_ACT fun
typedef bool DO_ACT     args((CH *ch, const bool check=false));

#define SK_ACTION       0
#define SK_REACTION     1
#define SK_SUPPORT      2
#define SK_MOVE         3

struct skill_type {
  char *name;
  short type;
  DO_ACT *fun;
  short job, range, effect, ctr, JP;
  bool self;
  short trigger;
};

extern  const   struct  skill_type      skill_table[];

/********************
 * ACTIONS (DO_ACT) *
 ********************/
DECLARE_DO_ACT(do_attack);
DECLARE_DO_ACT(do_accumulate);
DECLARE_DO_ACT(do_dash);
DECLARE_DO_ACT(do_throwstone);
DECLARE_DO_ACT(do_heal);
DECLARE_DO_ACT(do_countertackle);
DECLARE_DO_ACT(do_bloodsuck);
DECLARE_DO_ACT(do_ice2);
DECLARE_DO_ACT(do_monsterskill);   
DECLARE_DO_ACT(do_defend);
DECLARE_DO_ACT(do_potion);
DECLARE_DO_ACT(do_hipotion);
DECLARE_DO_ACT(do_xpotion);
DECLARE_DO_ACT(do_ether);
DECLARE_DO_ACT(do_hiether);
DECLARE_DO_ACT(do_elixir);
DECLARE_DO_ACT(do_antidote);
DECLARE_DO_ACT(do_eyedrop);
DECLARE_DO_ACT(do_echograss);
DECLARE_DO_ACT(do_maidenskiss);
DECLARE_DO_ACT(do_soft); 
DECLARE_DO_ACT(do_holywater);
DECLARE_DO_ACT(do_remedy);
DECLARE_DO_ACT(do_phoenixdown);
DECLARE_DO_ACT(do_autopotion);  
DECLARE_DO_ACT(do_throwitem);
DECLARE_DO_ACT(do_maintenance);
DECLARE_DO_ACT(do_equipchange);
DECLARE_DO_ACT(do_movefinditem); 
DECLARE_DO_ACT(do_headbreak); 
DECLARE_DO_ACT(do_armorbreak);
DECLARE_DO_ACT(do_shieldbreak); 
DECLARE_DO_ACT(do_weaponbreak);
DECLARE_DO_ACT(do_magicbreak);
DECLARE_DO_ACT(do_speedbreak);
DECLARE_DO_ACT(do_powerbreak);
DECLARE_DO_ACT(do_mindbreak);
DECLARE_DO_ACT(do_weaponguard);
DECLARE_DO_ACT(do_fire);
DECLARE_DO_ACT(do_fire2);
DECLARE_DO_ACT(do_ice);
DECLARE_DO_ACT(do_bolt);
DECLARE_DO_ACT(do_bolt2);
DECLARE_DO_ACT(do_charge1);
DECLARE_DO_ACT(do_charge2);  
DECLARE_DO_ACT(do_charge3); 
DECLARE_DO_ACT(do_charge4);
DECLARE_DO_ACT(do_charge5);    
DECLARE_DO_ACT(do_charge7);
DECLARE_DO_ACT(do_charge10);
DECLARE_DO_ACT(do_charge20);   
DECLARE_DO_ACT(do_concentrate);  
DECLARE_DO_ACT(do_speedsave);
DECLARE_DO_ACT(do_arrowguard);
DECLARE_DO_ACT(do_spinfist);    
DECLARE_DO_ACT(do_repeatingfist);
DECLARE_DO_ACT(do_wavefist);  
DECLARE_DO_ACT(do_earthslash);
DECLARE_DO_ACT(do_secretfist);
DECLARE_DO_ACT(do_stigmamagic);
DECLARE_DO_ACT(do_chakra);
DECLARE_DO_ACT(do_revive);

/***************
 * NPC ACTIONS *
 ***************/
DECLARE_DO_ACT(do_chocoattack);
DECLARE_DO_ACT(do_chococure);
DECLARE_DO_ACT(do_chocoesuna);
DECLARE_DO_ACT(do_chocoball);
DECLARE_DO_ACT(do_chocometeor);
DECLARE_DO_ACT(do_tackle);   
DECLARE_DO_ACT(do_eyegouge);
DECLARE_DO_ACT(do_goblinpunch);
DECLARE_DO_ACT(do_mutilate);    
DECLARE_DO_ACT(do_bite);
DECLARE_DO_ACT(do_selfdestruct);
DECLARE_DO_ACT(do_smallbomb);  
DECLARE_DO_ACT(do_turnpunch);    
DECLARE_DO_ACT(do_spark);
DECLARE_DO_ACT(do_scratch);   
DECLARE_DO_ACT(do_poisonnail);  
DECLARE_DO_ACT(do_catkick);
DECLARE_DO_ACT(do_blaster);   
DECLARE_DO_ACT(do_tentacle);  
DECLARE_DO_ACT(do_blackink);  
DECLARE_DO_ACT(do_darkwhisper);
DECLARE_DO_ACT(do_tripleflame);
DECLARE_DO_ACT(do_triplethunder);
DECLARE_DO_ACT(do_triplebreath);
DECLARE_DO_ACT(do_tripleattack);
DECLARE_DO_ACT(do_firebreath);
DECLARE_DO_ACT(do_thunderbreath);
DECLARE_DO_ACT(do_icebreath);
DECLARE_DO_ACT(do_tailswing);
DECLARE_DO_ACT(do_ulmaguest);
DECLARE_DO_ACT(do_suddencry);
DECLARE_DO_ACT(do_stabup);     
DECLARE_DO_ACT(do_hurricane);
DECLARE_DO_ACT(do_gigaflare);
DECLARE_DO_ACT(do_moldballvirus);
DECLARE_DO_ACT(do_badbreath);    
DECLARE_DO_ACT(do_lick);
DECLARE_DO_ACT(do_goo);
DECLARE_DO_ACT(do_blowfire);    
DECLARE_DO_ACT(do_gatherpower);  
DECLARE_DO_ACT(do_mimictitan);
DECLARE_DO_ACT(do_shakeoff);  
DECLARE_DO_ACT(do_wavearound);
DECLARE_DO_ACT(do_magicspirit);
DECLARE_DO_ACT(do_calmspirit);
DECLARE_DO_ACT(do_protectspirit);
DECLARE_DO_ACT(do_leafdance);
DECLARE_DO_ACT(do_spiritoflife);
DECLARE_DO_ACT(do_pleaseeat);
DECLARE_DO_ACT(do_nosebreath);
DECLARE_DO_ACT(do_straightdash);
DECLARE_DO_ACT(do_pooh);
DECLARE_DO_ACT(do_oink);
DECLARE_DO_ACT(do_beaking);  
DECLARE_DO_ACT(do_featherbomb);
DECLARE_DO_ACT(do_beak);     
DECLARE_DO_ACT(do_scratchup);
DECLARE_DO_ACT(do_shinelover); 
DECLARE_DO_ACT(do_circle);      
DECLARE_DO_ACT(do_deathsentence);
DECLARE_DO_ACT(do_lookofdevil); 
DECLARE_DO_ACT(do_wingattack); 
DECLARE_DO_ACT(do_lookoffright); 
DECLARE_DO_ACT(do_zombietouch);
DECLARE_DO_ACT(do_draintouch);
DECLARE_DO_ACT(do_throwspirit); 
DECLARE_DO_ACT(do_greasetouch);
DECLARE_DO_ACT(do_sleeptouch);
DECLARE_DO_ACT(do_windsoul);  
DECLARE_DO_ACT(do_icesoul);   
DECLARE_DO_ACT(do_knifehand);  
DECLARE_DO_ACT(do_aquasoul);   
DECLARE_DO_ACT(do_thundersoul);  
DECLARE_DO_ACT(do_levelblast);  
DECLARE_DO_ACT(do_mindblast);   
DECLARE_DO_ACT(do_oddsoundwave);

string get_skill_type(const short type);