party.hpp 4.4 KB

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