⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slayerweaponrewardclass.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
#include "SlayerWeaponRewardClass.h"#include "PlayerCreature.h"#include "Slayer.h"#include "Ousters.h"#include "ItemRewardInfo.h"#include "ItemUtil.h"RewardInfo*	SlayerWeaponRewardClass::selectReward( PlayerCreature* pPC ) const throw(Error){	__BEGIN_TRY	Assert( pPC != NULL );//	Assert( pPC->isSlayer() );	if ( pPC->isSlayer() )	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);		Assert( pSlayer != NULL );		vector<RewardInfo*>::const_iterator itr = m_RewardInfos.begin();		vector<RewardInfo*>::const_iterator endItr = m_RewardInfos.end();		for (; itr != endItr; ++itr )		{			ItemRewardInfo* pItemRI = dynamic_cast<ItemRewardInfo*>(*itr);			Assert( pItemRI != NULL );			Item::ItemClass iClass = pItemRI->getItemClass();			SkillDomainType_t domain = pSlayer->getHighestSkillDomain();			if ( suitableItemClass( iClass, domain ) && pItemRI->canGiveReward( pPC ) )			{			//	QuestMessage result = pItemRI->giveReward(pPC);			//	if ( result == COMPLETE_SUCCESS ) return result;				return pItemRI;			}		}	}	else if ( pPC->isOusters() )	{		Ousters* pOusters = dynamic_cast<Ousters*>(pPC);		Assert( pOusters != NULL );		vector<RewardInfo*>::const_iterator itr = m_RewardInfos.begin();		vector<RewardInfo*>::const_iterator endItr = m_RewardInfos.end();		Item::ItemClass targetItemClass;		vector<RewardInfo*> candidates;		candidates.clear();		if ( pOusters->getSTR( ATTR_BASIC ) > pOusters->getINT( ATTR_BASIC ) )		{			targetItemClass = Item::ITEM_CLASS_OUSTERS_CHAKRAM;		}		else		{			targetItemClass = Item::ITEM_CLASS_OUSTERS_WRISTLET;		}		for (; itr != endItr; ++itr )		{			ItemRewardInfo* pItemRI = dynamic_cast<ItemRewardInfo*>(*itr);			Assert( pItemRI != NULL );			Item::ItemClass iClass = pItemRI->getItemClass();			if ( iClass == targetItemClass && pItemRI->canGiveReward( pPC ) )			{//				return pItemRI;				candidates.push_back( pItemRI );			}		}		if ( !candidates.empty() )		{			return candidates[rand()%candidates.size()];		}	}	return NULL;		__END_CATCH}QuestMessage SlayerWeaponRewardClass::giveReward( PlayerCreature* pPC ) const throw(Error){	__BEGIN_TRY	RewardInfo* pRI = selectReward( pPC );	if ( pRI == NULL ) return COMPLETE_FAIL_NO_INVENTORY_SPACE;	return pRI->giveReward(pPC);	__END_CATCH}string SlayerWeaponRewardClass::toString() const throw(){	return "SlayerWeaponRewardClass() : \n" + RewardClass::toString();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -