void EffectHallucination::unaffect(Creature* pCreature) throw(Error) { __BEGIN_TRY __BEGIN_DEBUG //cout << "EffectHallucination" << "unaffect BEGIN" << endl; Assert(pCreature != NULL); // 능력치를 정상적으로 되돌리기 위해서는 플래그를 끄고, // initAllStat을 불러야 한다. pCreature->removeFlag(Effect::EFFECT_CLASS_HALLUCINATION); Zone* pZone = pCreature->getZone(); Assert(pZone != NULL); GCRemoveEffect gcRemoveEffect; gcRemoveEffect.setObjectID(pCreature->getObjectID()); gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_HALLUCINATION); pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect); if (pCreature->isMonster() ) { Monster* pMonster = dynamic_cast<Monster*>(pCreature); Assert(pMonster != NULL); pMonster->deleteAllEnemy(); pZone->monsterScan(pMonster, pMonster->getX(), pMonster->getY(), pMonster->getDir()); } //cout << "EffectHallucination" << "unaffect END" << endl; __END_DEBUG __END_CATCH }