123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- /*
- * This file is part of UAS2.
- *
- * UAS2 is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * UAS2 is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with UASv1; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
- /**
- * @file Fellowship.h
- */
-
- #ifndef __FELLOWSHIPS_H
- #define __FELLOWSHIPS_H
-
- #pragma warning(disable:4786) //warning: identifier was truncated to '255' characters in the browser information
- #include <map>
-
- #include "Avatar.h"
- #include "Shared.h"
-
- struct FellowMem
- {
- DWORD m_dwGUID;
- WORD m_wUnk1;
- DWORD m_dwLevel; // Level
- DWORD m_dwHealthTot; // maximum Health
- DWORD m_dwStaminaTot; // maximum Stamina
- DWORD m_dwManaTot; // maximum Mana
- DWORD m_dwHealthCur; // current Health
- DWORD m_dwStaminaCur; // current Stamina
- DWORD m_dwManaCur; // current Mana
- bool m_bShareLoot; // share loot - 0x00 = no, 0x10 = yes
- std::string m_szName;
-
- float m_fShareOfXP;
- ULONG m_timeJoin;
- };
-
- class cFellowship
- {
- friend class cAvatar;
- friend class cMasterServer;
-
- public:
- cFellowship();
- ~cFellowship();
-
- static DWORD NewFellowship ( DWORD dwLeaderGUID, std::string name, char felName[50], bool shareXP, bool shareLoot );
-
- DWORD CreateFellowship ( DWORD dwLeaderGUID, std::string name, char felName[50], bool shareXP, bool shareLoot );
- void Disband ( );
- void ClearMembers ( );
-
- static cFellowship* GetFellowshipByID ( DWORD dwFellowshipID );
- DWORD GetID() { return m_ID; }
- DWORD GetLeader() { return m_LeaderGUID; }
- DWORD GetSize() { return m_Size; }
- std::string GetName() { return m_Name.c_str(); }
- ULONG GetCreationTime() { return m_CreationTime; }
- bool GetIsOpen() { return m_IsOpen; }
-
- typedef std::map<DWORD, FellowMem> MemberList;
-
- FellowMem* FindMember ( DWORD dwMemberGUID ) { return &this->members.find(dwMemberGUID)->second; }
-
- bool SetLeader ( DWORD dwNewLeaderGUID );
- bool SetOpenClose ( DWORD dwIsOpen );
- bool AddMember ( DWORD dwAvatarGUID );
- bool RemMember ( DWORD dwMemberGUID );
- bool DismissMember ( DWORD dwMemberGUID );
- bool MemberDeath ( DWORD dwMemberGUID );
-
- bool InsertMember ( DWORD dwMemberGUID );
- bool DeleteMember ( DWORD dwMemberGUID, bool wasDismissed=false );
- bool UpdateMember ( DWORD dwMemberGUID );
-
- void RelayMemberUpdate ( DWORD dwMemberGUID );
- void RelayMemberDelete ( DWORD dwMemberGUID );
- void RelayMemberDismiss ( DWORD dwMemberGUID );
-
- cMessage JoinMessage ( DWORD dwClGUID, DWORD dwClF7B0Sequence );
- cMessage DisbandMessage ( DWORD dwClGUID, DWORD dwClF7B0Sequence );
- cMessage UpdMemberMessage ( DWORD dwClGUID, DWORD dwClF7B0Sequence, DWORD dwMemberGUID );
- cMessage RemMemberMessage ( DWORD dwClGUID, DWORD dwClF7B0Sequence, DWORD dwMemberGUID );
- cMessage DisMemberMessage ( DWORD dwClGUID, DWORD dwClF7B0Sequence, DWORD dwMemberGUID );
-
- void DistributeXP ( DWORD dwMemberGUID, cLocation memberLoc, DWORD dwExperience );
- void CalcShareXP ( );
- void CalcProportionXP ( int numFellows, int levelDiff, int minLevel );
- void CalcNonProportionXP ( int numFellows );
- float CalcFellowFactor ( int numFellows );
- float CalcDistanceFactor ( cLocation earnMemLoc, cLocation recvMemLoc );
-
- MemberList members;
-
- protected:
- DWORD m_ID;
- std::string m_Name;
- DWORD m_LeaderGUID;
- int m_Size;
- ULONG m_CreationTime;
- bool m_IsOpen; // opened/closed fellowship (allows all members to recruit) (0 = no; 1 = yes)
- bool m_ShareLoot; // share loot among fellows (0 = no; 1 = yes)
- bool m_ShareXP; // share experience among fellows (0 = no; 1 = yes)
- bool m_ProportionXP; // proportion shared experience (according to level) (0 = no; 1 = yes)
- };
-
- #endif // #ifndef __FELLOWSHIPS_H
|