cgselectrankbonushandler.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 178 行

CPP
178
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGSelectRankBonusHandler.cpp// Written By  : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGSelectRankBonus.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "NPC.h"	#include "Slayer.h"	#include "Vampire.h"	#include "Ousters.h"	#include "RankBonus.h"	#include "RankBonusInfo.h"	#include "Gpackets/GCSelectRankBonusFailed.h"	#include "Gpackets/GCSelectRankBonusOK.h"	#include "SystemAvailabilitiesManager.h"#endif	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSelectRankBonusHandler::execute (CGSelectRankBonus* pPacket , Player* pPlayer)	 throw (ProtocolException, Error){	__BEGIN_TRY __BEGIN_DEBUG_EX		#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	SYSTEM_ASSERT( SYSTEM_RANK_BONUS );	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Assert( pGamePlayer != NULL );	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>( pGamePlayer->getCreature() );	Assert( pPC != NULL );	if ( pPC->learnRankBonus( pPacket->getRankBonusType() ) )	{		GCSelectRankBonusOK okpkt;		okpkt.setRankBonusType( pPacket->getRankBonusType() );		pPlayer->sendPacket( &okpkt );		switch ( pPacket->getRankBonusType() )		{			case RankBonus::RANK_BONUS_BEHEMOTH_ARMOR:			case RankBonus::RANK_BONUS_DRAGON_EYE:			case RankBonus::RANK_BONUS_IMMORTAL_HEART:			case RankBonus::RANK_BONUS_RELIANCE_BRAIN:			case RankBonus::RANK_BONUS_SLAYING_KNIFE:			case RankBonus::RANK_BONUS_HAWK_WING:			case RankBonus::RANK_BONUS_IMMORTAL_BLOOD:			case RankBonus::RANK_BONUS_BEHEMOTH_SKIN:			case RankBonus::RANK_BONUS_SAFE_ROBE:			case RankBonus::RANK_BONUS_CROW_WING:			case RankBonus::RANK_BONUS_WOOD_SKIN:			case RankBonus::RANK_BONUS_WIND_SENSE:			case RankBonus::RANK_BONUS_HOMING_EYE:			case RankBonus::RANK_BONUS_LIFE_ENERGY:			case RankBonus::RANK_BONUS_SOUL_ENERGY:			case RankBonus::RANK_BONUS_STONE_MAUL:			case RankBonus::RANK_BONUS_SWIFT_ARM:			{				if ( pPC->isSlayer() )				{					Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);					Assert( pSlayer != NULL );					SLAYER_RECORD prev;					pSlayer->getSlayerRecord(prev);					pSlayer->initAllStat();					pSlayer->sendRealWearingInfo();					pSlayer->sendModifyInfo(prev);				}				else if ( pPC->isVampire() )				{					Vampire* pVampire = dynamic_cast<Vampire*>(pPC);					Assert( pVampire != NULL );					VAMPIRE_RECORD prev;										pVampire->getVampireRecord(prev);					pVampire->initAllStat();					pVampire->sendModifyInfo(prev);					pVampire->sendRealWearingInfo();				}				else if ( pPC->isOusters() )				{					Ousters* pOusters = dynamic_cast<Ousters*>(pPC);					Assert( pOusters != NULL );					OUSTERS_RECORD prev;										pOusters->getOustersRecord(prev);					pOusters->initAllStat();					pOusters->sendModifyInfo(prev);					pOusters->sendRealWearingInfo();				}			}			break;			case RankBonus::RANK_BONUS_DEADLY_SPEAR:			case RankBonus::RANK_BONUS_SAPPHIRE_BLESS:			case RankBonus::RANK_BONUS_RUBY_BLESS:			case RankBonus::RANK_BONUS_DIAMOND_BLESS:			case RankBonus::RANK_BONUS_EMERALD_BLESS:			case RankBonus::RANK_BONUS_WIGHT_HAND:			case RankBonus::RANK_BONUS_SEIREN_HAND:			case RankBonus::RANK_BONUS_FORTUNE_HAND:			case RankBonus::RANK_BONUS_URANUS_BLESS:			case RankBonus::RANK_BONUS_FIRE_ENDOW:			case RankBonus::RANK_BONUS_WATER_ENDOW:			case RankBonus::RANK_BONUS_EARTH_ENDOW:			case RankBonus::RANK_BONUS_ANTI_ACID_SKIN:			case RankBonus::RANK_BONUS_ANTI_BLOODY_SKIN:			case RankBonus::RANK_BONUS_ANTI_CURSE_SKIN:			case RankBonus::RANK_BONUS_ANTI_POISON_SKIN:			case RankBonus::RANK_BONUS_ANTI_SILVER_DAMAGE_SKIN:			case RankBonus::RANK_BONUS_BLESS_OF_NATURE:			case RankBonus::RANK_BONUS_LIFE_ABSORB:			case RankBonus::RANK_BONUS_SOUL_ABSORB:			case RankBonus::RANK_BONUS_MYSTIC_RULE:			{				if ( pPC->isSlayer() )				{					Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);					Assert( pSlayer != NULL );					pSlayer->initAllStat();				}				else if ( pPC->isVampire() )				{					Vampire* pVampire = dynamic_cast<Vampire*>(pPC);					Assert( pVampire != NULL );					pVampire->initAllStat();				}				else if ( pPC->isOusters() )				{					Ousters* pOusters = dynamic_cast<Ousters*>(pPC);					Assert( pOusters != NULL );					pOusters->initAllStat();				}			}			break;			default:			{				break;			}		}	}	else	{		GCSelectRankBonusFailed failedpkt;		failedpkt.setRankBonusType( pPacket->getRankBonusType() );		pPlayer->sendPacket( &failedpkt );	}		#endif	// __GAME_SERVER__			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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