elemental.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Copyright (c) Athena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #ifndef _ELEMENTAL_H_
  4. #define _ELEMENTAL_H_
  5. #include "status.h" // struct status_data, struct status_change
  6. #include "unit.h" // struct unit_data
  7. #define MIN_ELETHINKTIME 100
  8. #define MIN_ELEDISTANCE 2
  9. #define MAX_ELEDISTANCE 5
  10. #define EL_MODE_AGGRESSIVE (MD_CANMOVE|MD_AGGRESSIVE|MD_CANATTACK)
  11. #define EL_MODE_ASSIST (MD_CANMOVE|MD_ASSIST)
  12. #define EL_MODE_PASSIVE MD_CANMOVE
  13. #define EL_SKILLMODE_PASIVE 0x1
  14. #define EL_SKILLMODE_ASSIST 0x2
  15. #define EL_SKILLMODE_AGGRESSIVE 0x4
  16. struct elemental_skill {
  17. unsigned short id, lv;
  18. short mode;
  19. };
  20. struct s_elemental_db {
  21. int class_;
  22. char sprite[NAME_LENGTH], name[NAME_LENGTH];
  23. unsigned short lv;
  24. short range2, range3;
  25. struct status_data status;
  26. struct view_data vd;
  27. struct elemental_skill skill[MAX_ELESKILLTREE];
  28. };
  29. extern struct s_elemental_db elemental_db[MAX_ELEMENTAL_CLASS];
  30. struct elemental_data {
  31. struct block_list bl;
  32. struct unit_data ud;
  33. struct view_data *vd;
  34. struct status_data base_status, battle_status;
  35. struct status_change sc;
  36. struct regen_data regen;
  37. struct s_elemental_db *db;
  38. struct s_elemental elemental;
  39. int masterteleport_timer;
  40. struct map_session_data *master;
  41. int summon_timer;
  42. int skill_timer;
  43. unsigned last_thinktime, last_linktime, last_spdrain_time;
  44. short min_chase;
  45. int target_id, attacked_id;
  46. };
  47. bool elemental_class(int class_);
  48. struct view_data * elemental_get_viewdata(int class_);
  49. int elemental_create(struct map_session_data *sd, int class_, unsigned int lifetime);
  50. int elemental_data_received(struct s_elemental *ele, bool flag);
  51. int elemental_save(struct elemental_data *ed);
  52. int elemental_change_mode_ack(struct elemental_data *ed, int mode);
  53. int elemental_change_mode(struct elemental_data *ed, int mode);
  54. void elemental_heal(struct elemental_data *ed, int hp, int sp);
  55. int elemental_dead(struct elemental_data *ed);
  56. int elemental_delete(struct elemental_data *ed, int reply);
  57. void elemental_summon_stop(struct elemental_data *ed);
  58. int elemental_get_lifetime(struct elemental_data *ed);
  59. int elemental_unlocktarget(struct elemental_data *ed);
  60. int elemental_skillnotok(uint16 skill_id, struct elemental_data *ed);
  61. int elemental_set_target( struct map_session_data *sd, struct block_list *bl );
  62. int elemental_clean_single_effect(struct elemental_data *ed, uint16 skill_id);
  63. int elemental_clean_effect(struct elemental_data *ed);
  64. int elemental_action(struct elemental_data *ed, struct block_list *bl, unsigned int tick);
  65. struct skill_condition elemental_skill_get_requirements(uint16 skill_id, uint16 skill_lv);
  66. #define elemental_stop_walking(ed, type) unit_stop_walking(&(ed)->bl, type)
  67. #define elemental_stop_attack(ed) unit_stop_attack(&(ed)->bl)
  68. int read_elemental_skilldb(void);
  69. void reload_elementaldb(void);
  70. void reload_elemental_skilldb(void);
  71. int do_init_elemental(void);
  72. void do_final_elemental(void);
  73. #endif /* _ELEMENTAL_H_ */