#ifndef _CAFFECTED_H_ #define _CAFFECTED_H_ #include "Spell.h" // Àü¹æ ÂüÁ¶ class CAggresiveCreature; class CAffectedSpell { public: CAffectedSpell() : m_cInternalFlag(0), m_cChantNum(0), m_cEnchantNum(0) { int i; for(i = 0; i < MAX_CHANT; ++i) m_pChant[i] = NULL; for(i = 0; i < MAX_ENCHANT; ++i) m_pEnchant[i] = NULL; // ¿µÇâÀ» ¹Þ°í ÀÖ´Â EnchantÁÖ¹® } ~CAffectedSpell() { ClearAll(); } void SetOwner(CAggresiveCreature* pOwner) { m_pOwner = pOwner; } bool Add(CSpell* pSpell, unsigned short& wError); bool Remove(CSpell* pSpell); void ApplyPartyChant(CAggresiveCreature* pAffected); void ApplyEnchant(CAggresiveCreature* pAffected); void RemoveChantByCaster(CAggresiveCreature* pCaster); void RemoveEnchantByCaster(CAggresiveCreature* pCaster); void RemoveChantBySpellType(unsigned char cSpellType); bool RemoveEnchantBySpellType(unsigned char cSpellType); bool IsSpellOfEnemyCharacter(void); bool IsSpellThisTargetType(Skill::SpellTarget::Type eTargetType); unsigned char Disenchant(Skill::SpellType::Type eSpellType, Skill::SpellTarget::Type eTargetType, Skill::Disenchant::Type eDisenchantType, unsigned short usSkillLevel, unsigned char cNum); void ClearChant(); void ClearEnchant(); void EnableChant(unsigned long dwOperateFlag = 0); void EnableEnchant(unsigned long dwOperateFlag = 0); void DisableChant(unsigned long dwOperateFlag = 0); void DisableEnchant(unsigned long dwOperateFlag = 0); inline void ClearAll(); inline void EnableAll(unsigned long dwOperateFlag = 0); inline void DisableAll(unsigned long dwOperateFlag = 0); CSpell* GetSpell(unsigned short usSpellID); CSpell* GetEnchant(int Index); int GetEnchantNum() { return m_cEnchantNum; } SPELL GetSpellInfo(BOOL bDead = FALSE); enum { MAX_CHANT = 10, // edith 2008.05.06 ÀÎþƮ ÃÖ´ë °³¼ö MAX_ENCHANT = 30 }; protected: bool RemoveOverlappedSpell(CSpell* pSpell); CSpell* m_pChant[MAX_CHANT]; CSpell* m_pEnchant[MAX_ENCHANT]; // ¿µÇâÀ» ¹Þ°í ÀÖ´Â EnchantÁÖ¹® CAggresiveCreature* m_pOwner; // ¿µÇâÀ» ¹Þ°í Àִ ij¸¯ÅÍ. ÀÌ °³Ã¼ÀÇ ÁÖÀÎ. unsigned char m_cInternalFlag; unsigned char m_cChantNum; unsigned char m_cEnchantNum; }; inline void CAffectedSpell::ClearAll() { ClearChant(); ClearEnchant(); } inline void CAffectedSpell::EnableAll(unsigned long dwOperateFlag) { EnableChant(dwOperateFlag); EnableEnchant(dwOperateFlag); } inline void CAffectedSpell::DisableAll(unsigned long dwOperateFlag) { DisableChant(dwOperateFlag); DisableEnchant(dwOperateFlag); } #endif