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 + -
显示快捷键?