📄 masterlairmanager.cpp
字号:
} } else { SAFE_DELETE(pMaster); } */ } else { m_pZone->deleteCreature( pMaster, pMaster->getX(), pMaster->getY() ); SAFE_DELETE(pMaster); } } else { // 公利 惑怕 秦力 // 盔贰 乐带 付胶磐啊 货 付胶磐肺 措眉登瘤 臼绊 流立 轿快霸 窍搁 弊傈俊 付胶磐啊 公利捞菌栏骨肺 // 公利阑 钱绢拎具 茄促. 货 付胶磐啊 轿快霸 窍妨搁 盔贰 付胶磐绰 NO_DAMAGE惑怕肺 巢酒乐绢具 茄促. // 抛其令饭绢俊辑 盔贰 付胶磐啊 抛其令 包牢单 捞芭 呈公 老嘛 钱绢林绰 官恩俊 抛其令 包捞 NO_DAMAGE // 啊 钱妨辑 抛其令 包阑 锭妨辑 版氰摹甫 掘阑 荐 乐霸 登绰 滚弊啊 乐菌促. // 捞 if例 甸绢坷扁 傈俊 乐菌带 巴阑 else 例肺 颗变促. 2003. 1.16. by Sequoia pMaster->removeFlag(Effect::EFFECT_CLASS_NO_DAMAGE); } } m_Event = EVENT_MASTER_COMBAT; m_EventValue = 0; //cout << "[" << (int)m_pZone->getZoneID() << "[ MasterLairManager::activeEventMasterCombat" << endl; __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventWaitingKickOut() throw (Error){ __BEGIN_TRY MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() ); Assert(pInfo!=NULL); // 付胶磐啊 救 磷菌促搁 皋技瘤 免仿 Creature* pMaster = m_pZone->getMonsterManager()->getCreature( m_MasterID ); if (pMaster!=NULL && pMaster->isAlive()) { GCSay gcSay; gcSay.setObjectID( pMaster->getObjectID() ); gcSay.setColor( MASTER_SAY_COLOR ); gcSay.setMessage( pInfo->getRandomMasterNotDeadSay() ); if (!gcSay.getMessage().empty()) m_pZone->broadcastPacket(pMaster->getX(), pMaster->getY(), &gcSay); } // 救狼 荤侩磊甸阑 观栏肺 郴焊郴绰 矫埃 m_Event = EVENT_WAITING_KICK_OUT; m_EventValue = 0; getCurrentTime( m_EventTime ); m_EventTime.tv_sec += pInfo->getKickOutDelay(); // Lair狼 蜡历甸俊霸 辆丰 矫埃阑 焊郴霖促. GCNoticeEvent gcNoticeEvent; gcNoticeEvent.setCode( NOTICE_EVENT_KICK_OUT_FROM_ZONE ); gcNoticeEvent.setParameter( pInfo->getKickOutDelay() ); m_pZone->broadcastPacket( &gcNoticeEvent ); //cout << "[" << (int)m_pZone->getZoneID() << "] MasterLairManager::activeEventKickOut" << endl; __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// active EventWaitingPlayer//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::activeEventWaitingRegen() throw (Error){ __BEGIN_TRY deleteAllMonsters(); // EffectContinualGroundAttack甫 波霖促. //m_nSummonedMonster = 0; m_nPassPlayer = 0; m_Event = EVENT_WAITING_REGEN; m_EventValue = 0; m_bMasterReady = false; //cout << "[" << (int)m_pZone->getZoneID() << "] MasterLairManager::activeEventWaitingRegen" << endl; __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// delete All Monsters//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::deleteAllMonsters() throw (Error){ __BEGIN_TRY // Zone狼 MonsterManager俊辑 力芭茄 促澜俊 瘤况霖促. //m_pZone->getMonsterManager()->deleteCreature( m_pMaster->getObjectID() ); //SAFE_DELETE(m_pMaster); bool bDeleteFromZone = true; m_pZone->getMonsterManager()->deleteAllMonsters( bDeleteFromZone ); m_MasterID = 0; m_MasterX = 0; m_MasterY = 0; __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// kill All Monsters//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::killAllMonsters() throw (Error){ __BEGIN_TRY // 捞 何盒俊 购啊 巩力啊 乐绰芭 鞍酒 力芭茄促. /* // 碍力肺 磷捞瘤 臼阑 阁胶磐 hash_map<ObjectID_t, ObjectID_t> exceptCreatures; exceptCreatures[m_MasterID] = m_MasterID; // 葛电 阁胶磐甫 磷牢促. m_pZone->getMonsterManager()->killAllMonsters( exceptCreatures ); */ __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// increase SummonedMonster Number// /////////////////////////////////////////////////////////////////////////////////*void MasterLairManager::increaseSummonedMonsterNumber(int num) throw (Error){ __BEGIN_TRY __ENTER_CRITICAL_SECTION(m_Mutex) m_nSummonedMonster += num; __LEAVE_CRITICAL_SECTION(m_Mutex) __END_CATCH}*///////////////////////////////////////////////////////////////////////////////////// start Event//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::startEvent() throw (Error){ __BEGIN_TRY activeEventWaitingPlayer(); __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// start Event//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::stopEvent() throw (Error){ __BEGIN_TRY kickOutPlayers(); activeEventWaitingRegen(); __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// kickOut Players//////////////////////////////////////////////////////////////////////////////////void MasterLairManager::kickOutPlayers() throw (Error){ __BEGIN_TRY MasterLairInfo* pInfo = g_pMasterLairInfoManager->getMasterLairInfo( m_pZone->getZoneID() ); Assert(pInfo!=NULL); /* ZoneID_t zoneID = pInfo->getKickZoneID(); ZoneCoord_t zoneX = pInfo->getKickZoneX(); ZoneCoord_t zoneY = pInfo->getKickZoneY(); //cout << "[kickOut] " << (int)zoneID << ": "<< (int)zoneX << ", " << (int)zoneY << endl; // 粮狼 葛电 荤侩磊甸阑 促弗 镑栏肺 捞悼矫挪促. PCManager* pPCManager = (PCManager*)(m_pZone->getPCManager()); pPCManager->transportAllCreatures( zoneID, zoneX, zoneY ); */ // 眠规 矫埃 饶俊绰 皋抛坷 傍拜 int lairAttackTick = pInfo->getLairAttackTick(); int lairAttackMinNumber = pInfo->getLairAttackMinNumber(); int lairAttackMaxNumber = pInfo->getLairAttackMaxNumber(); 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 ); __END_CATCH}//////////////////////////////////////////////////////////////////////////////////// give Killing Reward//////////////////////////////////////////////////////////////////////////////////// 付胶磐啊 磷菌阑锭狼 焊惑// 瘤陛篮 QuestItem阑 泅犁 粮狼 荤恩甸俊霸 阿磊狼 牢亥配府俊 持绢霖促.// 牢亥配府俊 磊府啊 绝绰 版快浚 官蹿俊 冻绢哆府绰单// 捞固 啊瘤绊 乐绰 荤恩篮 林匡 荐 绝促.////////////////////////////////////////////////////////////////////////////////void MasterLairManager::giveKillingReward() throw (Error){ __BEGIN_TRY const PCManager* pPCManager = m_pZone->getPCManager(); const hash_map< ObjectID_t, Creature* > & creatures = pPCManager->getCreatures(); hash_map< ObjectID_t, Creature* >::const_iterator itr; if (creatures.empty()) return; int goodOneIndex = rand()%creatures.size(); // 奇带飘甫 啊龙 荤恩篮 穿备老鳖? ItemType_t itemType; int i; for (i=0, itr=creatures.begin(); itr!=creatures.end(); i++, itr++) { Creature* pCreature = itr->second; if (pCreature->isPC()) { PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); Inventory* pInventory = pPC->getInventory(); //------------------------------------------------------------ // 拌鞭 版氰摹甫 棵妨霖促. //------------------------------------------------------------ // 付胶磐 困摹客 7鸥老 捞郴俊 捞绰 版快 // if (pPC->getDistance(m_MasterX, m_MasterY) <= 7) { pPC->increaseRankExp( MASTER_KILL_RANK_EXP ); } //------------------------------------------------------------ // 焊惑 酒捞袍阑 积己茄促. //------------------------------------------------------------ // 窍靛. - -; switch (m_pZone->getZoneID()) { // 官配府饭绢 & 努沸 case 1104 : case 1106 : itemType = ((goodOneIndex==i)? 1:0); break; // 抛其令 饭绢 & 努沸 case 1114 : case 1115 : itemType = ((goodOneIndex==i)? 3:2); break; default : filelog("MasterLairBUG.txt", "ZoneID啊 肋给登菌嚼聪促"); return; } list<OptionType_t> nullList; Item* pItem = g_pItemFactoryManager->createItem(Item::ITEM_CLASS_QUEST_ITEM, itemType, nullList); (m_pZone->getObjectRegistry()).registerObject(pItem); // 牢亥配府狼 后 镑阑 茫绰促. _TPOINT p; if (pInventory->getEmptySlot(pItem, p)) { // 牢亥配府俊 眠啊茄促. pInventory->addItem(p.x, p.y, pItem); pItem->create(pCreature->getName(), STORAGE_INVENTORY, 0, p.x, p.y); // ItemTrace 俊 Log 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { remainTraceLog( pItem, "LairMaster", pCreature->getName(), ITEM_LOG_CREATE, DETAIL_EVENTNPC); } // 牢亥配府俊 酒捞袍 积己 菩哦阑 焊郴霖促. GCCreateItem gcCreateItem; makeGCCreateItem( &gcCreateItem, pItem, p.x, p.y ); pCreature->getPlayer()->sendPacket(&gcCreateItem); } else { // 牢亥配府俊 磊府啊 绝绢辑 官蹿俊 冻绢哆赴促. TPOINT p = m_pZone->addItem(pItem, pCreature->getX(), pCreature->getY()); if (p.x != -1) { pItem->create("", STORAGE_ZONE, m_pZone->getZoneID(), p.x, p.y ); // ItemTrace 俊 Log 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { char zoneName[15]; sprintf( zoneName , "%4d%3d%3d", m_pZone->getZoneID(), p.x, p.y); remainTraceLog( pItem, "LairMaster", zoneName, ITEM_LOG_CREATE, DETAIL_EVENTNPC); } } else { SAFE_DELETE(pItem); } } } else { throw Error("PCManager俊 PC酒囱霸 甸绢乐畴 -_-"); } } __END_CATCH}string MasterLairManager::toString() const throw(Error){ StringStream msg; int eventSec = m_EventTime.tv_sec; switch (m_Event) { case EVENT_WAITING_PLAYER : // 荤恩甸捞 甸绢坷辨 扁促赴促. msg << "WAITING_PLAYER, "; break; case EVENT_MINION_COMBAT: // 家券等 阁胶磐客 轿款促. msg << "MINION_COMBAT, "; break; case EVENT_MASTER_COMBAT: msg << "MASTER_COMBAT, "; break; case EVENT_WAITING_KICK_OUT: // 荤侩磊 碍力眠规 措扁(付胶磐 棱篮 版快狼 沥府 矫埃) msg << "WAITING_KICK_OUT, "; break; case EVENT_WAITING_REGEN: // 促矫 府哩登辨 扁促赴促. msg << "WAITING_REGEN, "; eventSec = m_RegenTime.tv_sec; break; default : break; } Timeval currentTime; getCurrentTime(currentTime); int timeGap = eventSec - currentTime.tv_sec; msg << timeGap << " sec remain, " << (int)m_pZone->getPCManager()->getSize() << " players"; return msg.toString();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -