📄 masterlairmanager.cpp
字号:
int remainMin = remainSec/60; uint param = (remainMin << 16) | ((int)m_pZone->getZoneID()); gcNoticeEvent.setParameter( param ); g_pZoneGroupManager->broadcast( &gcNoticeEvent ); m_EventValue = remainSec; } } __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// process EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::processEventMinionCombat() throw (Error){ __BEGIN_TRY Timeval currentTime; getCurrentTime(currentTime); // 措扁 矫埃捞 场唱搁.. // 各阑 代 磷看促绰 狼固捞骨肺.. // 碍力眠规茄促. if (currentTime >= m_EventTime) { GCNoticeEvent gcNoticeEvent; gcNoticeEvent.setCode( NOTICE_EVENT_MASTER_COMBAT_END ); m_pZone->broadcastPacket( &gcNoticeEvent ); activeEventWaitingKickOut(); } // 家券等 各捞 促 磷篮 版快扼搁.. // 付胶磐啊 唱客辑 轿款促. //if (m_nSummonedMonster >= m_nMaxSummonMonster if (m_bMasterReady // 粮俊 付胶磐 去磊父 巢篮 版快 && m_pZone->getMonsterManager()->getSize()==1) { activeEventMasterCombat(); } // 敲饭捞绢甸捞 促 磷篮 版快 if (m_pZone->getPCManager()->getSize()==0) { activeEventWaitingRegen(); } __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// process EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::processEventMasterCombat() throw (Error){ __BEGIN_TRY Timeval currentTime; getCurrentTime(currentTime); Creature* pMaster = m_pZone->getMonsterManager()->getCreature( m_MasterID ); if (pMaster==NULL) { // 付胶磐 绢叼艾唱? StringStream msg; msg << "付胶磐啊 绝绢脸促. zoneID = " << (int)m_pZone->getZoneID(); filelog("masterLairBug.txt", "%s", msg.toString().c_str()); //throw Error(msg.toString()); } else { // 泅犁 付胶磐狼 困摹 m_MasterX = pMaster->getX(); m_MasterY = pMaster->getY(); } // 付胶磐啊 磷菌芭唱 // 措扁 矫埃捞 场唱搁.. // 碍力眠规 葛靛肺 官槽促. if (pMaster==NULL || pMaster->isDead() ) { killAllMonsters(); giveKillingReward(); activeEventWaitingKickOut(); } else if (currentTime >= m_EventTime) { activeEventWaitingKickOut(); } // 敲饭捞绢甸捞 促 磷篮 版快 if (m_pZone->getPCManager()->getSize()==0) { activeEventWaitingRegen(); } __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// process EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::processEventWaitingKickOut() throw (Error){ __BEGIN_TRY Timeval currentTime; getCurrentTime(currentTime); // 措扁 矫埃捞 场唱搁 // 荤侩磊甸阑 kickOut 矫虐绊 // Regen登扁甫 扁促赴促. if (currentTime >= m_EventTime) { kickOutPlayers(); activeEventWaitingRegen(); } __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// process EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::processEventWaitingRegen() throw (Error){ __BEGIN_TRY Timeval currentTime; getCurrentTime(currentTime); // 府哩 矫埃捞 登搁 // 荤侩磊甸阑 扁促赴促. if (currentTime >= m_RegenTime) { if (g_pVariableManager->isActiveMasterLair()) { activeEventWaitingPlayer(); } else { // 酒聪搁 促澜 府哩 矫埃鳖瘤 措扁茄促. MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() ); Assert(pInfo!=NULL); m_RegenTime.tv_sec += pInfo->getRegenDelay(); } } __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventWaitingPlayer() throw (Error){ __BEGIN_TRY MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() ); Assert(pInfo!=NULL); deleteAllMonsters(); m_bMasterReady = false; //m_nSummonedMonster = 0; m_nPassPlayer = 0; // 5盒 措扁 矫埃 getCurrentTime( m_RegenTime ); m_EventTime.tv_sec = m_RegenTime.tv_sec + pInfo->getStartDelay(); m_EventTime.tv_usec = m_RegenTime.tv_usec; m_EventValue = 0; // 官蹿俊辑 拌加 阂采捞 稼酒坷弗促. // 3檬付促 int lairAttackTick = pInfo->getLairAttackTick(); int lairAttackMinNumber = pInfo->getLairAttackMinNumber(); int lairAttackMaxNumber = pInfo->getLairAttackMaxNumber(); //cout << "EffectCon: " << (int)m_pZone->getZoneID() << ", " << lairAttackTick << ", " << lairAttackMinNumber << ", " << lairAttackMaxNumber << endl; if (lairAttackMinNumber>0 && lairAttackMaxNumber>0) { // 扁粮俊 乐带 傍拜 Effect甫 葛滴 瘤款促. for (int i=0; i<10; i++) // 公茄风橇 规瘤 -_-; { Effect* pOldEffect = m_pZone->findEffect( Effect::EFFECT_CLASS_CONTINUAL_GROUND_ATTACK ); if (pOldEffect==NULL) break; m_pZone->deleteEffect( pOldEffect->getObjectID() ); } EffectContinualGroundAttack* pEffect = new EffectContinualGroundAttack(m_pZone, Effect::EFFECT_CLASS_GROUND_ATTACK, lairAttackTick); //EffectContinualGroundAttack* pEffect = new EffectContinualGroundAttack(m_pZone, Effect::EFFECT_CLASS_METEOR_STRIKE, lairAttackTick); pEffect->setDeadline( pInfo->getStartDelay()*10 ); pEffect->setNumber( lairAttackMinNumber, lairAttackMaxNumber ); ObjectRegistry & objectregister = m_pZone->getObjectRegistry(); objectregister.registerObject(pEffect); // 粮俊促啊 捞棋飘甫 眠啊茄促. m_pZone->addEffect( pEffect ); // 阂扁嫡 GCNoticeEvent gcNoticeEvent; gcNoticeEvent.setCode( NOTICE_EVENT_CONTINUAL_GROUND_ATTACK ); gcNoticeEvent.setParameter( pInfo->getStartDelay() ); // 檬 m_pZone->broadcastPacket( &gcNoticeEvent ); } // 付胶磐 饭绢啊 凯啡促绊 荤恩甸俊霸 舅妨霖促.// ZoneInfo* pZoneInfo = g_pZoneInfoManager->getZoneInfo( m_pZone->getZoneID() );// Assert(pZoneInfo!=NULL);// StringStream msg;// msg << "付胶磐 饭绢(" << pZoneInfo->getFullName().c_str() << ")啊 凯啡嚼聪促.";// char msg[50]; // sprintf( msg, g_pStringPool->c_str( STRID_MASTER_LAIR_OPENED ), // pZoneInfo->getFullName().c_str() );// // string sMsg( msg );//// GCSystemMessage gcSystemMessage;// gcSystemMessage.setType(SYSTEM_MESSAGE_MASTER_LAIR);// gcSystemMessage.setMessage( sMsg );// g_pZoneGroupManager->broadcast( &gcSystemMessage ); GCNoticeEvent gcNoticeEvent; gcNoticeEvent.setCode(NOTICE_EVENT_MASTER_LAIR_OPEN); gcNoticeEvent.setParameter( m_pZone->getZoneID() ); g_pZoneGroupManager->broadcast( &gcNoticeEvent ); // 促澜 府哩 矫埃 汲沥 m_RegenTime.tv_sec += pInfo->getRegenDelay(); m_Event = EVENT_WAITING_PLAYER; //cout << "[" << (int)m_pZone->getZoneID() << "] MasterLairManager::activeEventWaitingPlayer" << endl; __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventMinionCombat() throw (Error){ __BEGIN_TRY MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() ); Assert(pInfo!=NULL); // 阂扁嫡 场车促绰 脚龋 GCNoticeEvent gcNoticeEvent; gcNoticeEvent.setCode( NOTICE_EVENT_CONTINUAL_GROUND_ATTACK_END ); m_pZone->broadcastPacket( &gcNoticeEvent ); gcNoticeEvent.setCode( NOTICE_EVENT_MASTER_COMBAT_TIME ); gcNoticeEvent.setParameter( pInfo->getEndDelay() ); m_pZone->broadcastPacket( &gcNoticeEvent ); // tile俊辑绰 瘤快绊 packet篮 救 焊辰促. deleteAllMonsters(); // 付胶磐 积己 Monster* pMaster = new Monster( pInfo->getMasterNotReadyMonsterType() ); Assert(pMaster != NULL); // 矫眉俊辑 酒捞袍捞 救 唱坷档废 茄促. pMaster->setTreasure( false ); // 公利 惑怕肺 汲沥 pMaster->setFlag(Effect::EFFECT_CLASS_NO_DAMAGE); // 付胶磐甫 积己秦 初栏搁 // 付胶磐啊 舅酒辑 阁胶磐甫 家券窍霸 等促. try { m_pZone->addCreature(pMaster, pInfo->getMasterX(), pInfo->getMasterY(), pInfo->getMasterDir()); // ObjectID甫 扁撅秦滴绊 佬绢辑 荤侩茄促. m_MasterID = pMaster->getObjectID(); } catch (EmptyTileNotExistException&) { // 付胶磐啊 甸绢哎 磊府啊 绝促绊? -_-; SAFE_DELETE(pMaster); } //m_nSummonedMonster = 0; // 付胶磐啊 家券茄 阁胶磐 荐 m_Event = EVENT_MINION_COMBAT; m_EventValue = 0; // 攫力鳖瘤 轿匡鳖? getCurrentTime( m_EventTime ); m_EventTime.tv_sec += pInfo->getEndDelay(); //cout << "[" << (int)m_pZone->getZoneID() << "] MasterLairManager::activeEventMinionCombat" << endl; __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventMasterCombat() throw (Error){ __BEGIN_TRY Creature* pMaster = m_pZone->getMonsterManager()->getCreature( m_MasterID ); // 咯扁辑 付胶磐 包访 窍靛内爹阑 秦档 登摆瘤. - -; if (pMaster!=NULL) { MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() ); Assert(pInfo!=NULL); Monster* pMasterMonster = dynamic_cast<Monster*>(pMaster); // 家券 窜拌狼 付胶磐 措脚俊 流立 轿快绰 付胶磐 阁胶磐肺 官槽促. if (pInfo->getMasterMonsterType()!=pMasterMonster->getMonsterType()) { // 付胶磐 积己 Monster* pNewMaster = new Monster( pInfo->getMasterMonsterType() ); Assert(pNewMaster != NULL); // 矫眉俊辑 酒捞袍捞 救 唱坷档废 茄促. pNewMaster->setTreasure( false ); try { m_pZone->addCreature(pNewMaster, pInfo->getSummonX(), pInfo->getSummonY(), pMaster->getDir()); // ObjectID甫 扁撅秦滴绊 佬绢辑 荤侩茄促. m_MasterID = pNewMaster->getObjectID(); } catch (EmptyTileNotExistException&) { m_MasterID = 0; // 付胶磐啊 甸绢哎 磊府啊 绝促绊? -_-; SAFE_DELETE(pNewMaster); } // NotReady惑怕狼 Master甫 弊成 巢败 滴绰 版快 if (pInfo->isMasterRemainNotReady()) { ZoneCoord_t cx = pMasterMonster->getX(); ZoneCoord_t cy = pMasterMonster->getY(); // 刚历 官蹿俊 静矾哆府扼绊, 捞棋飘甫 谎赴促. GCAddEffect gcAddEffect; gcAddEffect.setObjectID(pMasterMonster->getObjectID()); gcAddEffect.setEffectID(Effect::EFFECT_CLASS_COMA); gcAddEffect.setDuration(0); m_pZone->broadcastPacket(cx, cy, &gcAddEffect); // AI父 力芭窍绊 弊措肺 敌促. pMasterMonster->removeBrain(); /* // 酒捞袍栏肺 巢败笛法绰单.. AI力芭窍绊 弊成 滴绰霸 唱阑芭 鞍酒辑 m_pZone->deleteCreature( pMaster, pMaster->getX(), pMaster->getY() ); ZoneCoord_t cx = pMasterMonster->getX(); ZoneCoord_t cy = pMasterMonster->getY(); Tile& tile = m_pZone->getTile( cx, cy ); bool bCreateCorpse = true; // 矫眉甫 鸥老俊 眠啊茄促. 泅犁 鸥老俊 酒捞袍捞 粮犁茄促搁, if (tile.hasItem()) { bCreateCorpse = false; } // Zone俊 矫眉(包)甫 眠啊茄促. if (bCreateCorpse) { Timeval currentTime; getCurrentTime(currentTime); int timeGap = m_EventTime.tv_sec - currentTime.tv_sec; Turn_t decayTurn = timeGap * 10; MonsterCorpse* pMonsterCorpse = new MonsterCorpse(pMasterMonster); TPOINT pt = m_pZone->addItem(pMonsterCorpse, cx, cy, true, decayTurn); if (pt.x == -1) { SAFE_DELETE(pMonsterCorpse);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -