Guest User

newpet2

a guest
Jul 28th, 2022
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. #ifndef __HEADER_NEWPET_SYSTEM__
  2. #define __HEADER_NEWPET_SYSTEM__
  3.  
  4. class CHARACTER;
  5.  
  6. struct SNewPetAbility
  7. {
  8. };
  9.  
  10. class CNewPetActor
  11. {
  12. public:
  13. enum ENewPetOptions
  14. {
  15. EPetOption_Followable = 1 << 0,
  16. EPetOption_Mountable = 1 << 1,
  17. EPetOption_Summonable = 1 << 2,
  18. EPetOption_Combatable = 1 << 3,
  19. };
  20.  
  21.  
  22. protected:
  23. friend class CNewPetSystem;
  24.  
  25. CNewPetActor(LPCHARACTER owner, DWORD vnum, DWORD options = EPetOption_Followable | EPetOption_Summonable);
  26.  
  27. virtual ~CNewPetActor();
  28.  
  29. virtual bool Update(DWORD deltaTime);
  30.  
  31. protected:
  32. virtual bool _UpdateFollowAI();
  33. virtual bool _UpdatAloneActionAI(float fMinDist, float fMaxDist);
  34.  
  35. private:
  36. bool Follow(float fMinDistance = 50.f);
  37.  
  38. public:
  39. LPCHARACTER GetCharacter() const { return m_pkChar; }
  40. LPCHARACTER GetOwner() const { return m_pkOwner; }
  41. DWORD GetVID() const { return m_dwVID; }
  42. DWORD GetVnum() const { return m_dwVnum; }
  43.  
  44. bool HasOption(ENewPetOptions option) const { return m_dwOptions & option; }
  45.  
  46. void SetName(const char* petName);
  47. void SetLevel(DWORD level);
  48.  
  49. bool Mount();
  50. void Unmount();
  51.  
  52. DWORD Summon(const char* petName, LPITEM pSummonItem, bool bSpawnFar = false);
  53. void Unsummon();
  54.  
  55. bool IsSummoned() const { return 0 != m_pkChar; }
  56. void SetSummonItem (LPITEM pItem);
  57. DWORD GetSummonItemVID () { return m_dwSummonItemVID; }
  58. DWORD GetSummonItemID () { return m_dwSummonItemID; }
  59. DWORD GetEvolution() { return m_dwevolution; }
  60. DWORD GetLevel() { return m_dwlevel; }
  61. void SetEvolution(int lv);
  62. void SetExp(DWORD exp, int mode);
  63. DWORD GetExp() { return m_dwexp; }
  64. DWORD GetExpI() { return m_dwexpitem; }
  65. int GetSkillCount();
  66. void SetNextExp(int nextExp);
  67. int GetNextExpFromMob() { return m_dwExpFromMob; }
  68. int GetNextExpFromItem() { return m_dwExpFromItem; }
  69. int GetLevelStep() { return m_dwlevelstep; }
  70. int GetPetType() { return m_dwPetType; }
  71.  
  72. void IncreasePetBonus();
  73. void SetItemCube(int pos, int invpos);
  74. void ItemCubeFeed(int type);
  75. void DoPetSkill(int skillslot);
  76. void UpdateTime();
  77.  
  78. bool ResetSkill(int skill);
  79. bool IncreasePetSkill(int skill);
  80. bool IncreasePetEvolution();
  81.  
  82. void GiveBuff();
  83. void ClearBuff();
  84.  
  85. private:
  86. int m_dwlevelstep;
  87. int m_dwExpFromMob;
  88. int m_dwExpFromItem;
  89. int m_dwexpitem;
  90. int m_dwevolution;
  91. int m_dwTimePet;
  92. int m_dwslotimm;
  93. int m_dwPetType;
  94.  
  95. DWORD m_dwImmTime;
  96.  
  97. int m_dwpetslotitem[9];
  98. int m_dwskill[3];
  99. int m_dwskillslot[3];
  100. int m_dwbonuspet[3][2];
  101. DWORD m_dwVnum;
  102. DWORD m_dwVID;
  103. DWORD m_dwlevel;
  104. DWORD m_dwexp;
  105. DWORD m_dwOptions;
  106. DWORD m_dwLastActionTime;
  107. DWORD m_dwSummonItemVID;
  108. DWORD m_dwSummonItemID;
  109. DWORD m_dwSummonItemVnum;
  110.  
  111. DWORD m_dwduration;
  112. DWORD m_dwtduration;
  113. DWORD m_dwdurationYas;
  114.  
  115. short m_originalMoveSpeed;
  116.  
  117. std::string m_name;
  118.  
  119. LPCHARACTER m_pkChar;
  120. LPCHARACTER m_pkOwner;
  121.  
  122. };
  123.  
  124. class CNewPetSystem
  125. {
  126. public:
  127. typedef boost::unordered_map<DWORD, CNewPetActor*> TNewPetActorMap;
  128.  
  129. public:
  130. CNewPetSystem(LPCHARACTER owner);
  131. virtual ~CNewPetSystem();
  132.  
  133. CNewPetActor* GetByVID(DWORD vid) const;
  134. CNewPetActor* GetByVnum(DWORD vnum) const;
  135.  
  136. bool Update(DWORD deltaTime);
  137. void Destroy();
  138.  
  139. size_t CountSummoned() const;
  140.  
  141. public:
  142. void SetUpdatePeriod(DWORD ms);
  143.  
  144. CNewPetActor* Summon(DWORD mobVnum, LPITEM pSummonItem, const char* petName, bool bSpawnFar, DWORD options = CNewPetActor::EPetOption_Followable | CNewPetActor::EPetOption_Summonable);
  145.  
  146. void Unsummon(DWORD mobVnum, bool bDeleteFromList = false);
  147. void Unsummon(CNewPetActor* petActor, bool bDeleteFromList = false);
  148.  
  149. CNewPetActor* AddPet(DWORD mobVnum, const char* petName, const SNewPetAbility& ability, DWORD options = CNewPetActor::EPetOption_Followable | CNewPetActor::EPetOption_Summonable | CNewPetActor::EPetOption_Combatable);
  150.  
  151. bool ResetSkill(int skill);
  152. bool IncreasePetSkill(int skill);
  153. bool IncreasePetEvolution();
  154.  
  155. void DeletePet(DWORD mobVnum);
  156. void DeletePet(CNewPetActor* petActor);
  157. void RefreshBuff();
  158. bool IsActivePet();
  159. DWORD GetNewPetITemID();
  160. void SetExp(int iExp, int mode);
  161. int GetEvolution();
  162. int GetLevel();
  163. int GetExp();
  164. int GetLevelStep();
  165. int GetPetType();
  166. void SetItemCube(int pos, int invpos);
  167. void ItemCubeFeed(int type);
  168. void DoPetSkill(int skillslot);
  169. void UpdateTime();
  170.  
  171. private:
  172. TNewPetActorMap m_petActorMap;
  173. LPCHARACTER m_pkOwner; ///< 펫 시스템의 Owner
  174. DWORD m_dwUpdatePeriod; ///< 업데이트 주기 (ms단위)
  175. DWORD m_dwLastUpdateTime;
  176. LPEVENT m_pkNewPetSystemUpdateEvent;
  177. LPEVENT m_pkNewPetSystemExpireEvent;
  178. };
  179. #endif
  180.  
Advertisement
Add Comment
Please, Sign In to add comment