123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /*
- EQ2Emulator: Everquest II Server Emulator
- Copyright (C) 2007 EQ2EMulator Development Team (http://www.eq2emulator.net)
- This file is part of EQ2Emulator.
- EQ2Emulator 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 3 of the License, or
- (at your option) any later version.
- EQ2Emulator 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 EQ2Emulator. If not, see <http://www.gnu.org/licenses/>.
- */
- #ifndef __HEROICOP_H__
- #define __HEROICOP_H__
- #include <map>
- #include <vector>
- #include "../../common/types.h"
- using namespace std;
- struct HeroicOPStarter {
- int32 id;
- int8 start_class;
- int16 starter_icon;
- int16 abilities[6];
- };
- struct HeroicOPWheel {
- int8 order;
- int16 shift_icon;
- float chance;
- int16 abilities[6];
- int32 spell_id;
- };
- class HeroicOP {
- public:
- HeroicOP();
- ~HeroicOP();
- /// <summary>Sets the complete flag for this Heroic OP</summary>
- /// <param name='val'>The value to set the complete flag to, 1 = failed 2 = finished</param>
- void SetComplete(int8 val) { m_complete = val; }
- /// <summary>Sets the current stage of the starter chain or the wheel chain is at</summary>
- /// <param name='val'>The stage to set this Heroic OP to</param>
- void SetStage(int8 val) { m_currentStage = val; }
- /// <summary>Sets the wheel for this Heroic OP</summary>
- /// <param name='val'>The wheel we are setting the Heroic OP to</param>
- void SetWheel(HeroicOPWheel* val);
-
- /// <summary>Sets the start time for the wheel</summary>
- /// <param name='val'>Value to set the start time to</param>
- void SetStartTime(int32 val) { m_startTime = val; }
- /// <summary>Sets the total time to complete the wheel</summary>
- /// <param name='val'>Value to set the total time to</param>
- void SetTotalTime(float val) { m_totalTime = val; }
- /// <summary>Sets the target of this HO</summary>
- /// <param name='val'>The ID of the spawn</param>
- void SetTarget(int32 val);
- /// <summary>Gets the complete flag for this Heroic OP</summary>
- /// <returns>0 = not complete, 1 = complete, 2+= failed</returns>
- int8 GetComplete() { return m_complete; }
- /// <summary>Gets the wheel for this heroic op</summary>
- HeroicOPWheel* GetWheel() { return m_wheel; }
- /// <summary>Gets a pointer to the list of starter chains</summary>
- vector<HeroicOPStarter*>* GetStarterChains() { return &starters; }
- /// <summary>Gets the current stage the HO is on</summary>
- int8 GetStage() { return m_currentStage; }
- /// <summary>Gets the start time for the wheel</summary>
- int32 GetStartTime() { return m_startTime; }
- /// <summary>Gets the total time players have to complete the wheel</summary>
- float GetTotalTime() { return m_totalTime; }
- /// <summary>Gets the ID of this HO's target</summary>
- int32 GetTarget() { return m_target; }
- /// <summary></summary>
- bool HasShifted() { return m_shifted; }
- /// <summary>Checks to see if the given icon will advance the Heroic OP</summary>
- /// <param name='icon'>The icon that is trying to advance the Heroic OP</param>
- /// <returns>True if the icon advanced the HO</returns>
- bool UpdateHeroicOP(int16 icon);
- /// <summary>Reset the stage to 0</summary>
- void ResetStage() { m_currentStage = 0; }
- /// <summary>Adds a starter chain to the Heroic OP</summary>
- /// <param name='starter'>The starter chain to add</param>
- void AddStarterChain(HeroicOPStarter* starter);
- /// <summary>Attempts to shift the wheel</summary>
- bool ShiftWheel();
- int8 countered[6];
- private:
- int8 m_complete;
- int8 m_currentStage;
- int32 m_startTime;
- float m_totalTime;
- int32 m_target;
- bool m_shifted;
- HeroicOPWheel* m_wheel;
- vector<HeroicOPStarter*> starters;
- };
- class MasterHeroicOPList {
- public:
- MasterHeroicOPList();
- ~MasterHeroicOPList();
- /// <summary>Adds the starter chain to the list</summary>
- /// <param name='start_class'>Class id for the starter chain</param>
- /// <param name='starter'>Starter chain to add</param>
- void AddStarter(int8 start_class, HeroicOPStarter* starter);
- /// <summary>Add the wheel chain to the list</summary>
- /// <param name='starter_id'>Id of the starter this wheel belongs to</param>
- /// <param name='wheel'>Wheel to add</param>
- void AddWheel(int32 starter_id, HeroicOPWheel* wheel);
- /// <summary>Creates a new HO</summary>
- /// <param name='class_id'>Class ID starting the HO</param>
- HeroicOP* GetHeroicOP(int8 class_id);
- /// <summary>Gets a random wheel from the given starter</summary>
- /// <param name='starter'>The starter to determine what wheels to choose from</param>
- HeroicOPWheel* GetWheel(HeroicOPStarter* starter);
- private:
- // map<class, map<starter, vector<wheel> > >
- map<int8, map<HeroicOPStarter*, vector<HeroicOPWheel*> > > m_hoList;
- };
- #endif
|