summaryrefslogtreecommitdiff
path: root/src/map/mercenary.h
blob: 322891d6eb6a011465d3af5fb97b6623babaae8b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// 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
};
// merc_is_hom_alive(struct homun_data *)
#define merc_is_hom_active(x) (x && x->master && x->master->homunculus.vaporize != 1 && x->battle_status.hp != 0)
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_hom_skill_get_name(int id);
void merc_damage(struct homun_data *hd,struct block_list *src,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) ;
void merc_hom_heal(struct homun_data *hd,int hp,int sp);
int merc_hom_vaporize(struct map_session_data *sd, int flag);
int merc_revive_homunculus(struct map_session_data *sd, unsigned char per, short x, short y);
void merc_homun_revive(struct homun_data *hd, unsigned int hp, unsigned int sp);
void merc_save(struct homun_data *hd);
int merc_call_homunculus(struct map_session_data *sd, short x, short y);
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);
int merc_hom_increase_intimacy(struct homun_data * hd, unsigned int value);
int merc_hom_decrease_intimacy(struct homun_data * hd, unsigned int value);
int merc_skill_tree_get_max(int id, int b_class);
void merc_hom_init_timers(struct homun_data * hd);