monstermanager.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 2,206 行 · 第 1/5 页
CPP
2,206 行
//---------------------------------------------------------------------- int fireCrackerRatio = g_pVariableManager->getVariable( CHRISTMAS_FIRE_CRACKER_RATIO ); if ( fireCrackerRatio > 0 ) { int value = rand() % 10000; if ( value < fireCrackerRatio ) { // 技 啊瘤 辆幅狼 气磷捞 唱柯促. ItemType_t fireCrackerType = value % 3; // 酒捞袍阑 积己茄促. list<OptionType_t> optionType; Item* pItem = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_EVENT_ETC, fireCrackerType, optionType ); // 阁胶磐 矫眉俊 持绰促. pMonsterCorpse->addTreasure( pItem ); } } //---------------------------------------------------------------------- // 农府胶付胶 飘府 炼阿 眠啊 //---------------------------------------------------------------------- int treePartRatio = g_pVariableManager->getVariable( CHRISTMAS_TREE_PART_RATIO ); if ( treePartRatio > 0 ) { int value = rand() % 10000; if ( value < treePartRatio ) { // 12俺狼 飘府 炼阿捞 乐促. ItemType_t treeItemType = rand() % 12; // 酒捞袍阑 积己茄促. list<OptionType_t> optionType; Item* pItem = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_EVENT_TREE, treeItemType, optionType ); // 阁胶磐 矫眉俊 持绰促. pMonsterCorpse->addTreasure( pItem ); } } //---------------------------------------------------------------------- // 踌祸 急拱 惑磊 眠啊 //---------------------------------------------------------------------- int giftBoxRatio = g_pVariableManager->getVariable( CHRISTMAS_GIFT_BOX_RATIO ); if ( giftBoxRatio > 0 ) { int value = rand() % 10000; if ( value < giftBoxRatio ) { // 踌祸 急拱 惑磊甫 积己茄促. list<OptionType_t> optionType; Item* pItem = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_EVENT_GIFT_BOX, 0, optionType ); // 阁胶磐 矫眉俊 持绰促. pMonsterCorpse->addTreasure( pItem ); } } //---------------------------------------------------------------------- // 急拱 惑磊 眠啊 //---------------------------------------------------------------------- // 汗林赣聪绰 affectKillCount 咯扁辑 贸府窍瘤父 // 急拱 惑磊绰 Monster 狼 m_pQuestItem 俊 持阑 巴捞 酒聪骨肺 咯扁辑 贸府茄促 // (荤角 汗林赣聪档 m_pQuestItem 俊 持阑 鞘夸啊 绝变窍促父 ;;) //---------------------------------------------------------------------- if ( g_pVariableManager->isEventGiftBox() ) { if ( m_pZone != NULL ) { Creature* pCreature = m_pZone->getCreature( pDeadMonster->getLastKiller() ); if ( pCreature != NULL && pCreature->isPC() ) { PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature); if ( pPC != NULL ) { Item* pItem = getGiftBoxItem( getGiftBoxKind( pPC, pDeadMonster ) ); // GiftBox 酒捞袍阑 眠啊秦具 等促搁 眠啊茄促. if ( pItem != NULL ) pMonsterCorpse->addTreasure( pItem ); } } } } // 酒捞袍 冈绢具且 某腐磐狼 辆练阑 蝶弗促. // 泅犁 粮俊 弊 某腐磐啊 绝促搁, // 弊 某腐磐狼 party俊 蝶福绊.. 颇萍档 绝促搁 // LastHit甫 蝶弗促. // by sigi. 2002.10.14 // 付瘤阜栏肺 捞 阁胶磐甫 锭赴 农府媚啊 浇饭捞绢扼搁 浇饭捞绢 酒捞袍阑 积己窍绊, // 酒聪扼搁 叼弃飘肺 轨颇捞绢 酒捞袍阑 积己茄促. Creature* pItemOwnerCreature = m_pZone->getPCManager()->getCreature( pDeadMonster->getHostName() ); Creature::CreatureClass ownerCreatureClass; int luckLevel = 0; if (pItemOwnerCreature!=NULL) { ownerCreatureClass = pItemOwnerCreature->getCreatureClass(); luckLevel = pItemOwnerCreature->getLuck(); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pItemOwnerCreature->getPlayer()); if ( pGamePlayer != NULL) itemBonusPercent = pGamePlayer->getItemRatioBonusPoint(); } else if (pDeadMonster->getHostPartyID()!=0) { Party* pParty = m_pZone->getLocalPartyManager()->getParty( pDeadMonster->getHostPartyID() ); if (pParty!=NULL) { ownerCreatureClass = pParty->getCreatureClass(); } else { ownerCreatureClass = pDeadMonster->getLastHitCreatureClass(); } } else { ownerCreatureClass = pDeadMonster->getLastHitCreatureClass(); } // 酒捞袍 家蜡磊狼 辆练俊 蝶扼辑 酒捞袍狼 辆练 搬沥 if (ownerCreatureClass == Creature::CREATURE_CLASS_SLAYER) { pTreasureList = pMonsterInfo->getSlayerTreasureList(); } else if (ownerCreatureClass == Creature::CREATURE_CLASS_VAMPIRE) { pTreasureList = pMonsterInfo->getVampireTreasureList(); } else if (ownerCreatureClass == Creature::CREATURE_CLASS_OUSTERS) { pTreasureList = pMonsterInfo->getOustersTreasureList(); } // 捞 阁胶磐啊 chief monster牢啊? by sigi. 2002.10.23 bool bChiefMonsterBonus = pDeadMonster->isChief() && g_pVariableManager->isActiveChiefMonster(); const list<Treasure*>& treasures = pTreasureList->getTreasures(); list<Treasure*>::const_iterator itr = treasures.begin(); for (; itr != treasures.end(); itr++) { Treasure* pTreasure = (*itr); ITEM_TEMPLATE it; it.ItemClass = Item::ITEM_CLASS_MAX; it.ItemType = 0; //it.OptionType = 0; int itemRatioBonus = 0; if (bChiefMonsterBonus) { it.NextOptionRatio = g_pVariableManager->getChiefMonsterRareItemPercent(); itemRatioBonus = g_pVariableManager->getPremiumItemProbePercent(); } else { it.NextOptionRatio = 0; } Item* pItem = NULL; // 蜡丰拳 粮俊辑绰 酒捞袍 犬伏捞 滴 硅促. Zone* pZone = pDeadMonster->getZone(); // 措冠捞亥飘啊 利侩登绰 粮. by sigi. 2003.1.17 static bool isNetMarble = g_pConfig->getPropertyInt("IsNetMarble")!=0; bool isLottoZone = pZone->isPayPlay() || isNetMarble; if ( pZone->isPayPlay() || pZone->isPremiumZone()) { //cout << "积己犬伏!!!! : " << g_pVariableManager->getPremiumItemProbePercent() << endl; if (pTreasure->getRandomItem(&it, itemRatioBonus + g_pVariableManager->getPremiumItemProbePercent() + itemBonusPercent ) ) { // by sigi. 2002.10.21 int upgradeLevel = upgradeItemTypeByLuck(luckLevel, ownerCreatureClass, it); if ( upgradeLevel != 0 ) { GCAddEffectToTile gcAE; if ( upgradeLevel > 0 ) gcAE.setEffectID( Effect::EFFECT_CLASS_LUCKY ); else gcAE.setEffectID( Effect::EFFECT_CLASS_MISFORTUNE ); gcAE.setObjectID( 0 ); gcAE.setDuration( 0 ); gcAE.setXY( pDeadMonster->getX(), pDeadMonster->getY() );// cout << "宏肺靛某胶泼 : " << pDeadMonster->getX() << ", " << pDeadMonster->getY() << endl; pZone->broadcastPacket( pDeadMonster->getX(), pDeadMonster->getY(), &gcAE ); } if ( !it.OptionType.empty() ) { upgradeOptionByLuck( luckLevel, ownerCreatureClass, it ); } // 摹橇 阁胶磐绰 酒捞袍 1窜拌 + // by sigi. 2002.10.23 if (bChiefMonsterBonus // 老窜 rare 犬伏苞 鞍霸 啊绰单.. // 唱吝俊 捞巴档 促弗 variable肺 盒府秦具瞪 巴捞促. by sigi. 2002.10.23 && rand()%100 < g_pVariableManager->getChiefMonsterRareItemPercent() && isPossibleUpgradeItemType(it.ItemClass)) { // ItemType 1窜拌 upgrade int upgradeCount = 1; it.ItemType = getUpgradeItemType(it.ItemClass, it.ItemType, upgradeCount); } pItem = g_pItemFactoryManager->createItem(it.ItemClass, it.ItemType, it.OptionType); Assert(pItem != NULL); if ( pItem->isUnique() ) pItem->setGrade(6); else pItem->setGrade( ItemGradeManager::Instance().getRandomGrade() );// cout << "风泼 酒捞袍 殿鞭 : " << pItem->getGrade() << endl; pItem->setDurability( computeMaxDurability(pItem) ); if (!isHarvestFestivalItemAppeared || (isHarvestFestivalItemAppeared && pItem->getItemClass() == Item::ITEM_CLASS_SKULL)) pMonsterCorpse->addTreasure(pItem); // 措冠捞亥飘: 秦榜 8俺 歹 眠啊 if ( isLottoZone && pItem->getItemClass() == Item::ITEM_CLASS_SKULL ) { int lottoSkullRatio = g_pVariableManager->getVariable( LOTTO_SKULL_RATIO ); if ( lottoSkullRatio > 0 ) { int value = rand() % 10000; if ( value < lottoSkullRatio ) { // 秦吧 8俺 歹 父甸绢 持绰促. for ( int i = 0; i < 8; i++ ) { pItem = g_pItemFactoryManager->createItem(it.ItemClass, it.ItemType, it.OptionType); pMonsterCorpse->addTreasure( pItem ); } } } } } } else { //cout << "积己犬伏!!!! : " << g_pVariableManager->getPremiumItemProbePercent() << endl; if (pTreasure->getRandomItem(&it, g_pVariableManager->getItemProbRatio() + itemBonusPercent )) { // by sigi. 2002.10.21 //upgradeItemTypeByLuck(luckLevel, it); pItem = g_pItemFactoryManager->createItem(it.ItemClass, it.ItemType, it.OptionType); Assert(pItem != NULL); if ( pItem->isUnique() ) pItem->setGrade(6); else pItem->setGrade( ItemGradeManager::Instance().getRandomGrade() );// pItem->setGrade( ItemGradeManager::Instance().getRandomGrade() );// cout << "风泼 酒捞袍 殿鞭 : " << pItem->getGrade() << endl; pItem->setDurability( computeMaxDurability(pItem) ); if (!isHarvestFestivalItemAppeared || (isHarvestFestivalItemAppeared && pItem->getItemClass() == Item::ITEM_CLASS_SKULL)) pMonsterCorpse->addTreasure(pItem); } } ///////////////////////////////////////////////////////////////////////// // 酒捞袍(秦榜哗绊) 唱坷绊 措冠 犬伏捞 磐脸促搁 酒捞袍阑 割俺 歹 持绰促. 蜡丰粮父. // 摹橇 阁胶磐俊 眠啊 酒捞袍捞 汲沥登绢 乐促搁 弊 荐摹父怒 酒捞袍阑 歹 持绰促. int nBonusItem = 0; if ( pItem != NULL && pItem->getItemClass() != Item::ITEM_CLASS_SKULL ) { if ( bChiefMonsterBonus ) nBonusItem = g_pVariableManager->getVariable( CHIEF_ITEM_BONUS_NUM ); if ( isLottoZone && isLottoWinning() ) nBonusItem = g_pVariableManager->getVariable( LOTTO_ITEM_BONUS_NUM ); } if ( nBonusItem > 0 ) { int i = 0; int j = 0; static int MaxTry = 30; while ( i < nBonusItem && j < MaxTry ) { Treasure* pTreasure = (*itr); ITEM_TEMPLATE it; it.ItemClass = Item::ITEM_CLASS_MAX; it.ItemType = 0; //it.OptionType = 0; int itemRatioBonus = 0; if (bChiefMonsterBonus) { it.NextOptionRatio = g_pVariableManager->getChiefMonsterRareItemPercent(); itemRatioBonus = g_pVariableManager->getPremiumItemProbePercent(); } else { it.NextOptionRatio = 0; } Item* pItem = NULL; // 蜡丰拳 粮俊辑绰 酒捞袍 犬伏捞 滴 硅促. Zone* pZone = pDeadMonster->getZone(); if ( pZone->isPayPlay() || pZone->isPremiumZone()) { //cout << "积己犬伏!!!! : " << g_pVariableManager->getPremiumItemProbePercent() << endl; if (pTreasure->getRandomItem(&it, itemRatioBonus + g_pVariableManager->getPremiumItemProbePercent() + itemBonusPercent ) ) { // by sigi. 2002.10.21 int upgradeLevel = upgradeItemTypeByLuck(luckLevel, ownerCreatureClass, it); if ( upgradeLevel != 0 ) { GCAddEffectToTile gcAE; if ( upgradeLevel > 0 ) gcAE.setEffectID( Effect::EFFECT_CLASS_LUCKY ); else gcAE.setEffectID( Effect::EFFECT_CLASS_MISFORTUNE ); gcAE.setObjectID( 0 ); gcAE.setDuration( 0 ); gcAE.setXY( pDeadMonster->getX(), pDeadMonster->getY() );// cout << "宏肺靛某胶泼 : " << pDeadMonster->getX() << ", " << pDeadMonster->getY() << endl; pZone->broadcastPacket( pDeadMonster->getX(), pDeadMonster->getY(), &gcAE ); } // 摹橇 阁胶磐绰 酒捞袍 1窜拌 + // by sigi. 2002.10.23 if (bChiefMonsterBonus // 老窜 rare 犬伏苞 鞍霸 啊绰单.. // 唱吝俊 捞巴档 促弗 variable肺 盒府秦具瞪 巴捞促. by sigi. 2002.10.23 && rand()%100 < g_pVariableManager->getChiefMonsterRareItemPercent() && isPossibleUpgradeItemType(it.ItemClass)) { // ItemType 1窜拌 upgrade int upgradeCount = 1; it.ItemType = getUpgradeItemType(it.ItemClass, it.ItemType, upgradeCount); } if ( !it.OptionType.empty() ) { upgradeOptionByLuck( luckLevel, ownerCreatureClass, it ); } pItem = g_pItemFactoryManager->createItem(it.ItemClass, it.ItemType, it.OptionType); Assert(pItem != NULL); if ( pItem->isUnique() ) pItem->setGrade(6); else pItem->setGrade( ItemGradeManager::Instance().getRandomGrade() ); //pItem->setGrade( ItemGradeManager::Instance().getRandomGrade() ); //cout << "风泼 酒捞袍 殿鞭 : " << pItem->getGrade() << endl; pItem->setDurability( computeMaxDurability(pItem) ); if (!isHarvestFestivalItemAppeared || (isHarvestFestivalItemAppeared && pItem->getItemClass() == Item::ITEM_CLASS_SKULL)) pMonsterCorpse->addTreasure(pItem); } } else { //cout << "积己犬伏!!!! : " << g_pVariableManager->getPremiumItemProbePercent() << endl; if (pTreasure->getRandomItem(&it, g_pVariableManager->getItemProbRatio() + itemBonusPercent )) { // by sigi. 2002.10.21 //upgradeItemTypeByLuck(luckLevel, it); pItem = g_pItemFactoryManager->createItem(it.ItemClass, it.ItemType, it.OptionType); Assert(pItem != NULL); if ( pItem->isUnique() ) pItem->setGrade(6); else pItem->setGrade( ItemGradeManager::Instance().getRandomGrade() ); //pItem->setGrade( ItemGradeManager::Instance().getRandomGrade() );// cout << "风泼 酒捞袍 殿鞭 : " << pItem->getGrade() << endl; pItem->setDurability( computeMaxDurability(pItem) ); if (!isHarvestFestivalItemAppeared || (isHarvestFestivalItemAppeared && pItem->getItemClass() == Item::ITEM_CLASS_SKULL)) pMonsterCorpse->addTreasure(pItem); } } if ( pItem != NULL ) i++; j++; } } ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// } // 秦榜 持绢拎具 登绰 阁胶鸥 if ( pMonsterInfo->getSkullType() != 0 ) { Item* pSkull = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_SKULL, pMonsterInfo->getSkullType(), list<OptionType_t>() ); if ( pSkull != NULL ) { pMonsterCorpse->addTreasure( pSkull ); } } ////////////////////////////////////////////////////////////////////// // 2002斥 6岿 岿靛呐 捞亥飘 // 捞亥飘 阁胶磐肺 技泼捞 等 阁胶磐俊霸辑绰 绵备傍 酒捞袍捞 唱柯促. // 绵备傍篮 喊档狼 ITEM_TYPE阑 啊瘤瘤 臼绊 // EVENT_STAR狼 Type7锅栏肺 累悼茄促. // 瞒饶 EventStarInfo, EventStarObject绰 EventItemInfo, EventItemObject
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?