OSDN Git Service

First version
[st-ro/stro.git] / src / map / party.h
1 // Copyright (c) Athena Dev Teams - Licensed under GNU GPL
2 // For more information, see LICENCE in the main folder
3
4 #ifndef _PARTY_H_
5 #define _PARTY_H_
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 #include "../common/mmo.h" // struct party
12 struct block_list;
13 struct map_session_data;
14 struct party;
15 struct item;
16
17 #include <stdarg.h>
18
19 #define MAX_PARTY_BOOKING_JOBS 6
20 #define MAX_PARTY_BOOKING_RESULTS 10
21
22 struct party_member_data {
23         struct map_session_data *sd;
24         unsigned int hp; //For HP,x,y refreshing.
25         unsigned short x, y;
26 };
27
28 struct party_data {
29         struct party party;
30         struct party_member_data data[MAX_PARTY];
31         uint8 itemc; //For item distribution, position of last picker in party
32         unsigned short instance_id;
33         struct {
34                 unsigned monk : 1; //There's at least one monk in party?
35                 unsigned sg : 1;        //There's at least one Star Gladiator in party?
36                 unsigned snovice :1; //There's a Super Novice
37                 unsigned tk : 1; //There's a taekwon
38         } state;
39 };
40
41 struct party_booking_detail {
42         short level;
43     short mapid;
44     short job[MAX_PARTY_BOOKING_JOBS];
45 };
46
47 struct party_booking_ad_info {
48         unsigned long index;
49         char charname[NAME_LENGTH];
50         long starttime;
51         struct party_booking_detail p_detail;
52 };
53
54 extern int party_create_byscript;
55
56 void do_init_party(void);
57 void do_final_party(void);
58 struct party_data* party_search(int party_id);
59 struct party_data* party_searchname(const char* str);
60 int party_getmemberid(struct party_data* p, struct map_session_data* sd);
61 struct map_session_data* party_getavailablesd(struct party_data *p);
62
63 int party_create(struct map_session_data *sd,char *name, int item, int item2);
64 void party_created(uint32 account_id,uint32 char_id,int fail,int party_id,char *name);
65 int party_request_info(int party_id, uint32 char_id);
66 int party_invite(struct map_session_data *sd,struct map_session_data *tsd);
67 void party_member_joined(struct map_session_data *sd);
68 int party_member_added(int party_id,uint32 account_id,uint32 char_id,int flag);
69 int party_leave(struct map_session_data *sd);
70 int party_removemember(struct map_session_data *sd,uint32 account_id,char *name);
71 int party_removemember2(struct map_session_data *sd,uint32 char_id,int party_id);
72 int party_member_withdraw(int party_id, uint32 account_id, uint32 char_id, char *name, enum e_party_member_withdraw type);
73 int party_reply_invite(struct map_session_data *sd,int party_id,int flag);
74 #define party_add_member(party_id,sd) party_reply_invite(sd,party_id,1)
75 int party_recv_noinfo(int party_id, uint32 char_id);
76 int party_recv_info(struct party* sp, uint32 char_id);
77 int party_recv_movemap(int party_id,uint32 account_id,uint32 char_id, unsigned short map,int online,int lv);
78 int party_broken(int party_id);
79 int party_optionchanged(int party_id,uint32 account_id,int exp,int item,int flag);
80 int party_changeoption(struct map_session_data *sd,int exp,int item);
81 int party_setoption(struct party_data *party, int option, int flag);
82 int party_changeleader(struct map_session_data *sd, struct map_session_data *t_sd, struct party_data *p);
83 void party_send_movemap(struct map_session_data *sd);
84 void party_send_levelup(struct map_session_data *sd);
85 int party_send_logout(struct map_session_data *sd);
86 int party_send_message(struct map_session_data *sd,const char *mes,int len);
87 int party_recv_message(int party_id,uint32 account_id,const char *mes,int len);
88 int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv);
89 int party_send_xy_clear(struct party_data *p);
90 void party_exp_share(struct party_data *p,struct block_list *src,unsigned int base_exp,unsigned int job_exp,int zeny);
91 int party_share_loot(struct party_data* p, struct map_session_data* sd, struct item* item, int first_charid);
92 int party_send_dot_remove(struct map_session_data *sd);
93 int party_sub_count(struct block_list *bl, va_list ap);
94 int party_sub_count_class(struct block_list *bl, va_list ap);
95 int party_foreachsamemap(int (*func)(struct block_list *,va_list),struct map_session_data *sd,int range,...);
96
97 /*==========================================
98  * Party Booking in KRO [Spiria]
99  *------------------------------------------*/
100 void party_booking_register(struct map_session_data *sd, short level, short mapid, short* job);
101 void party_booking_update(struct map_session_data *sd, short* job);
102 void party_booking_search(struct map_session_data *sd, short level, short mapid, short job, unsigned long lastindex, short resultcount);
103 bool party_booking_delete(struct map_session_data *sd);
104
105 #ifdef __cplusplus
106 }
107 #endif
108
109 #endif /* _PARTY_H_ */