From 7b2f7c0503cb5be8bc45f57353d838a4dbf84d7b Mon Sep 17 00:00:00 2001 From: DracoRPG Date: Mon, 17 Jul 2006 00:15:33 +0000 Subject: Orn's and Albator's Homunculus system, finally, YAY!! git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7706 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/mercenary.h | 79 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 72 insertions(+), 7 deletions(-) (limited to 'src/map/mercenary.h') diff --git a/src/map/mercenary.h b/src/map/mercenary.h index 84b578245..b55cba8e1 100644 --- a/src/map/mercenary.h +++ b/src/map/mercenary.h @@ -1,13 +1,78 @@ // Homunculus and future Mercenary system code go here [Celest] +// implemented by [orn] +struct homunculus_db { + int class_ ; + char name[NAME_LENGTH]; + int basemaxHP ; + int basemaxSP ; + int baseSTR ; + int baseAGI ; + int baseVIT ; + int baseINT ; + int baseDEX ; + int baseLUK ; + int foodID ; + int baseIntimacy ; + short baseHungry ; + long hungryDelay ; + int gminHP ; + int gmaxHP ; + int gminSP ; + int gmaxSP ; + int gminSTR ; + int gmaxSTR ; + int gminAGI ; + int gmaxAGI ; + int gminVIT ; + int gmaxVIT ; + int gminINT ; + int gmaxINT ; + int gminDEX ; + int gmaxDEX ; + int gminLUK ; + int gmaxLUK ; + int evo_class ; + int baseASPD ; + //short size ; + //short race ; + //short element ; + unsigned char element, race, size; // albator + int accessID ; +}; +extern struct homunculus_db homuncumlus_db[MAX_HOMUNCULUS_CLASS]; +enum { HOMUNCULUS_CLASS, HOMUNCULUS_FOOD }; +enum { + SP_ACK = 0x00, + SP_INTIMATE = 0x100, + SP_HUNGRY = 0x200 +}; int do_init_merc (void); +int merc_hom_recv_data(int account_id, struct s_homunculus *sh, int flag); //albator +void merc_load_sub(struct homun_data *hd, struct map_session_data *sd); void merc_load_exptables(void); -char *merc_skill_get_name(int id); +char *merc_hom_skill_get_name(int id); void merc_damage(struct homun_data *hd,struct block_list *src,int hp,int sp); -int merc_dead(struct homun_data *hd, struct block_list *src); -void merc_skillup(struct map_session_data *sd,short skillnum); -int merc_gainexp(struct homun_data *hd,int exp); -void merc_heal(struct homun_data *hd,int hp,int sp); +int merc_hom_dead(struct homun_data *hd, struct block_list *src); +void merc_hom_skillup(struct homun_data *hd,int skillnum); +int merc_hom_calc_skilltree(struct map_session_data *sd) ; +int merc_hom_checkskill(struct map_session_data *sd,int skill_id) ; +int merc_hom_gainexp(struct homun_data *hd,int exp) ; +int merc_hom_levelup(struct homun_data *hd) ; +int merc_hom_evolution(struct homun_data *hd) ; +int merc_hom_heal(struct homun_data *hd,int hp,int sp); +int merc_hom_delete(struct homun_data *hd, int flag) ; +int merc_hom_revive(struct map_session_data *sd, int per); void merc_save(struct homun_data *hd); -void merc_load(struct map_session_data *sd); -int merc_create_homunculus(struct map_session_data *sd,int id,int m,int x,int y); +int merc_call_homunculus(struct map_session_data *sd); +int merc_create_homunculus(struct map_session_data *sd, int class_); +int search_homunculusDB_index(int key,int type); +int merc_menu(struct map_session_data *sd,int menunum); +int merc_hom_food(struct map_session_data *sd, struct homun_data *hd); +int merc_hom_hungry_timer_delete(struct homun_data *hd); +int merc_natural_heal_timer_delete(struct homun_data *hd); +#define merc_checkoverhp(hd) (hd->battle_status.hp == hd->battle_status.max_hp) +#define merc_checkoversp(hd) (hd->battle_status.sp == hd->battle_status.max_sp) +#define merc_stop_walking(hd, type) { if((hd)->ud.walktimer != -1) unit_stop_walking(&(hd)->bl, type); } +#define merc_stop_attack(hd) { if((hd)->ud.attacktimer != -1) unit_stop_attack(&(hd)->bl); hd->ud.target = 0; } +int read_homunculusdb(void); -- cgit v1.2.3-60-g2f50