guild.hpp 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #ifndef GUILD_HPP
  4. #define GUILD_HPP
  5. #include <common/cbasetypes.hpp>
  6. #include <common/database.hpp>
  7. #include <common/mmo.hpp>
  8. #include "map.hpp" // NAME_LENGTH
  9. struct guild;
  10. struct guild_member;
  11. struct guild_position;
  12. struct guild_castle;
  13. class map_session_data;
  14. struct mob_data;
  15. //For quick linking to a guardian's info. [Skotlex]
  16. struct guardian_data {
  17. int number; //0-MAX_GUARDIANS-1 = Guardians. MAX_GUARDIANS = Emperium.
  18. int guild_id;
  19. int emblem_id;
  20. int guardup_lv; //Level of GD_GUARDUP skill.
  21. char guild_name[NAME_LENGTH];
  22. std::shared_ptr<guild_castle> castle;
  23. };
  24. uint16 guild_skill_get_max(uint16 id);
  25. int guild_checkskill(struct guild *g,int id);
  26. bool guild_check_skill_require(struct guild *g,uint16 id); // [Komurka]
  27. int guild_checkcastles(struct guild *g); // [MouseJstr]
  28. bool guild_isallied(int guild_id, int guild_id2); //Checks alliance based on guild Ids. [Skotlex]
  29. void do_init_guild(void);
  30. struct guild *guild_search(int guild_id);
  31. struct guild *guild_searchname(char *str);
  32. map_session_data *guild_getavailablesd(struct guild *g);
  33. int guild_getindex(struct guild *g,uint32 account_id,uint32 char_id);
  34. int guild_getposition(map_session_data *sd);
  35. t_exp guild_payexp(map_session_data *sd,t_exp exp);
  36. t_exp guild_getexp(map_session_data *sd,t_exp exp); // [Celest]
  37. int guild_create(map_session_data *sd, const char *name);
  38. int guild_created(uint32 account_id,int guild_id);
  39. int guild_request_info(int guild_id);
  40. int guild_recv_noinfo(int guild_id);
  41. int guild_recv_info(struct guild *sg);
  42. int guild_npc_request_info(int guild_id,const char *ev);
  43. int guild_invite(map_session_data *sd,map_session_data *tsd);
  44. int guild_reply_invite(map_session_data *sd,int guild_id,int flag);
  45. void guild_member_joined(map_session_data *sd);
  46. int guild_member_added(int guild_id,uint32 account_id,uint32 char_id,int flag);
  47. int guild_leave(map_session_data *sd,int guild_id,
  48. uint32 account_id,uint32 char_id,const char *mes);
  49. int guild_member_withdraw(int guild_id,uint32 account_id,uint32 char_id,int flag,
  50. const char *name,const char *mes);
  51. int guild_expulsion(map_session_data *sd,int guild_id,
  52. uint32 account_id,uint32 char_id,const char *mes);
  53. void guild_skillup(map_session_data* sd, uint16 skill_id);
  54. void guild_block_skill(map_session_data *sd, int time);
  55. int guild_reqalliance(map_session_data *sd,map_session_data *tsd);
  56. int guild_reply_reqalliance(map_session_data *sd,uint32 account_id,int flag);
  57. int guild_allianceack(int guild_id1,int guild_id2,uint32 account_id1,uint32 account_id2,
  58. int flag,const char *name1,const char *name2);
  59. int guild_delalliance(map_session_data *sd,int guild_id,int flag);
  60. int guild_opposition(map_session_data *sd,map_session_data *tsd);
  61. int guild_check_alliance(int guild_id1, int guild_id2, int flag);
  62. int guild_send_memberinfoshort(map_session_data *sd,int online);
  63. int guild_recv_memberinfoshort(int guild_id,uint32 account_id,uint32 char_id,int online,int lv,int class_);
  64. int guild_change_memberposition(int guild_id,uint32 account_id,uint32 char_id,short idx);
  65. int guild_memberposition_changed(struct guild *g,int idx,int pos);
  66. int guild_change_position(int guild_id,int idx,int mode,int exp_mode,const char *name);
  67. int guild_position_changed(int guild_id,int idx,struct guild_position *p);
  68. int guild_change_notice(map_session_data *sd,int guild_id,const char *mes1,const char *mes2);
  69. int guild_notice_changed(int guild_id,const char *mes1,const char *mes2);
  70. int guild_change_emblem(map_session_data *sd,int len,const char *data);
  71. int guild_change_emblem_version(map_session_data* sd, int version);
  72. int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data);
  73. int guild_send_message(map_session_data *sd,const char *mes,int len);
  74. int guild_recv_message(int guild_id,uint32 account_id,const char *mes,int len);
  75. int guild_send_dot_remove(map_session_data *sd);
  76. int guild_skillupack(int guild_id,uint16 skill_id,uint32 account_id);
  77. int guild_break(map_session_data *sd,char *name);
  78. int guild_broken(int guild_id,int flag);
  79. int guild_gm_change(int guild_id, uint32 char_id);
  80. int guild_gm_changed(int guild_id, uint32 account_id, uint32 char_id, time_t time);
  81. void guild_castle_map_init(void);
  82. int guild_castledatasave(int castle_id,int index,int value);
  83. int guild_castledataloadack(int len, struct guild_castle *gc);
  84. void guild_castle_reconnect(int castle_id, int index, int value);
  85. bool guild_agit_start(void);
  86. bool guild_agit_end(void);
  87. bool guild_agit2_start(void);
  88. bool guild_agit2_end(void);
  89. bool guild_agit3_start(void);
  90. bool guild_agit3_end(void);
  91. /* guild flag cachin */
  92. void guild_flag_add(struct npc_data *nd);
  93. void guild_flag_remove(struct npc_data *nd);
  94. void guild_flags_clear(void);
  95. void guild_guildaura_refresh(map_session_data *sd, uint16 skill_id, uint16 skill_lv);
  96. #ifdef BOUND_ITEMS
  97. void guild_retrieveitembound(uint32 char_id,uint32 account_id,int guild_id);
  98. #endif
  99. void do_final_guild(void);
  100. class CastleDatabase : public TypesafeYamlDatabase <int32, guild_castle> {
  101. public:
  102. CastleDatabase() : TypesafeYamlDatabase("CASTLE_DB", 2, 1) {
  103. }
  104. const std::string getDefaultLocation() override;
  105. uint64 parseBodyNode(const ryml::NodeRef& node) override;
  106. void loadingFinished() override;
  107. // Additional
  108. std::shared_ptr<guild_castle> mapname2gc(const char* mapname);
  109. std::shared_ptr<guild_castle> mapindex2gc(int16 mapindex);
  110. std::shared_ptr<guild_castle> find_by_clientid( uint16 client_id );
  111. };
  112. extern CastleDatabase castle_db;
  113. #endif /* GUILD_HPP */