#include "StdAfx.h" #include "actiondie.h" #include "GameSrv.h" #include "../Common/Protocol.h" #include "GridManager.h" #include "Monster.h" #include "SkillManager.h" #include "Player.h" #include "ObjectManager.h" #include "Drop.h" #include "AIManager.h" #include "QuestManager.h" #include "PartyManager.h" cActionDie::cActionDie(void) : cAction( eACT_DIE ) { } cActionDie::~cActionDie(void) { } void cActionDie::ActionInit( cMonster* pMonster, unsigned long accumTime ) { if( pMonster == NULL ) return; cAction::ActionInit( pMonster, accumTime ); /// ¿©±â¼­ ¸ó½ºÅ͸¦ »èÁ¦ÇϰԵǸé damage ¸Þ¼¼Áö ¹ß¼ÛÇϱâÀü¿¡ »èÁ¦µÇ¼­ ¹ß¼ÛÀ» ¸øÇÑ´Ù. mFirstRun = true; mDieEndTime = accumTime + 3000; } eACTION_CHANGE cActionDie::Action( cMonster* pMonster, unsigned long /*deltaTime*/, unsigned long accumTime ) { if( pMonster == NULL ) return eACTCH_CONTINUE; if( mFirstRun == true ) { mFirstRun = false; /// Á×À¸¸é¼­ ¸ó½ºÅ͸¦ ¼ÒȯÇÏ´ÂÁö üũ pMonster->DeathGenMonster(); if( pMonster->IsCriDie() == true ) pMonster->SendSpeech( eMONSTERTALK_DIE2 ); else pMonster->SendSpeech( eMONSTERTALK_DIE1 ); /// ¸®Á¨ ´ë±â ¸ó½ºÅÍ ¸ñ·Ï¿¡ ³ÖÀ½ if( pMonster->GetDeathMonster() == false ) pMonster->Die(); /// Á״½ÃÁ¡ À̺¥Æ® ó¸® } /// ÀÏÁ¤½Ã°£ÈÄ¿¡ ¿ÀºêÁ§Æ® »èÁ¦ 󸮸¦ ÇÑ´Ù. /// ¡Ø¿ÀºêÁ§Æ®°¡ ¹Ù·Î »ç¶óÁö¸é °ü·ÃµÈ ´Ù¸¥¿ÀºêÁ§Æ®°¡ 󸮸¦ ¸øÇÏ°í ³¡³² if( mDieEndTime < accumTime ) { /// ±×¸®µå/¿ÀºêÁ§Æ® ¸Þ´ÏÀú¿¡¼­ Á¦°Å GRIDMANAGER->RemoveMonster( pMonster ); /// Á×À¸¸é¼­ ¼ÒȯÀ» Çϴ¸ó½ºÅÍ Ã³¸® if( pMonster->GetDeathMonster() == false ) OBJECTMANAGER->InsertDeleteMonster( pMonster->GetObjectID() ); /// ÀϹݸó½ºÅÍ else { /// ¼ÒȯÇϸ鼭 Á×´Â ¸ó½ºÅÍ OBJECTMANAGER->AddDeathMonster( pMonster ); /// objectmanager ¾ÈÀÇ ¸ó½ºÅÍmap ¸ñ·Ï¿¡¼­¸¸ Á¦°Å pool¸¸À¯Áö pMonster->SetIdleEndTime( ULONG_MAX ); /// idle»óÅ ¼³Á¤ return eACTCH_DIE_END; } } return eACTCH_CONTINUE; }