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

📄 powerofland.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////// Project     : DARKEDEN// Module      : Skill - Effect// File Name   : PowerOfLand.cpp////////////////////////////////////////////////////////////////////////////////#include "PowerOfLand.h"#include "EffectTileStorm.h"#include "Gpackets/GCSkillToTileOK1.h"#include "Gpackets/GCSkillToTileOK2.h"#include "Gpackets/GCSkillToTileOK3.h"#include "Gpackets/GCSkillToTileOK4.h"#include "Gpackets/GCSkillToTileOK5.h"#include "Gpackets/GCSkillToTileOK6.h"#include "Gpackets/GCAddEffect.h"#include "Gpackets/GCAddEffectToTile.h"//////////////////////////////////////////////////////////////////////////////// 浇饭捞绢 坷宏璃飘 勤甸矾//////////////////////////////////////////////////////////////////////////////void PowerOfLand::execute(Slayer* pSlayer, ObjectID_t TargetObjectID, SkillSlot* pSkillSlot, CEffectID_t CEffectID)    throw(Error){    __BEGIN_TRY	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << "begin " << endl;	// Slayer Object Assertion	Assert(pSlayer != NULL);	Assert(pSkillSlot != NULL);    try    {		Zone* pZone = pSlayer->getZone();		Assert(pZone != NULL);		Creature* pTargetCreature = pZone->getCreature(TargetObjectID);		//Assert(pTargetCreature != NULL);		// NoSuch力芭. by sigi. 2002.5.2		if (pTargetCreature==NULL			|| pTargetCreature->isFlag(Effect::EFFECT_CLASS_NO_DAMAGE) // by sigi. 2002.10.30			|| pTargetCreature->isNPC())		{			executeSkillFailException(pSlayer, getSkillType());		    			return;		}		execute(pSlayer, pTargetCreature->getX(), pTargetCreature->getY(), pSkillSlot, CEffectID);    } 	catch (Throwable & t) 	{		executeSkillFailException(pSlayer, getSkillType());        //cout << t.toString() << endl;    }	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " end " << endl;    __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 浇饭捞绢 鸥老 勤甸矾//  浇饭捞绢啊 Wide Lightning Skill阑 Tile俊 荤侩沁阑锭 荤侩窍绰 Handler//////////////////////////////////////////////////////////////////////////////void PowerOfLand::execute(Slayer* pSlayer, ZoneCoord_t X, ZoneCoord_t Y, SkillSlot* pSkillSlot, CEffectID_t CEffectID)	throw(Error){	__BEGIN_TRY	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << "begin " << endl;	try	{		Player* pPlayer = pSlayer->getPlayer();		Zone* pZone = pSlayer->getZone();		Assert(pPlayer != NULL);		Assert(pZone != NULL);		GCSkillToTileOK1 _GCSkillToTileOK1;		GCSkillToTileOK2 _GCSkillToTileOK2;		GCSkillToTileOK3 _GCSkillToTileOK3;		GCSkillToTileOK4 _GCSkillToTileOK4;		GCSkillToTileOK5 _GCSkillToTileOK5;		GCSkillToTileOK6 _GCSkillToTileOK6;		SkillType_t SkillType = pSkillSlot->getSkillType();		SkillInfo*  pSkillInfo =  g_pSkillInfoManager->getSkillInfo(SkillType);		ZoneCoord_t myX = pSlayer->getX();		ZoneCoord_t myY = pSlayer->getY();		int  RequiredMP = (int)pSkillInfo->getConsumeMP();		bool bManaCheck = hasEnoughMana(pSlayer, RequiredMP);		bool bTimeCheck = verifyRunTime(pSkillSlot);		bool bRangeCheck = verifyDistance(pSlayer, X, Y, pSkillInfo->getRange());				// 老窜 扁贱篮 己傍窍绰 巴栏肺 窍绊 单固瘤甫 拌魂且锭(EffectTileStorm::affect())		// 农府媚 喊肺 促脚 拌魂窍绰 吧肺 茄促.		// 2003.1.8 by bezz		//bool bHitRoll = HitRoll::isSuccessMagic(pSlayer, pSkillInfo, pSkillSlot);		bool bTileCheck = false;		Tile& tile = pZone->getTile(X, Y);		VSRect rect(0, 0, pZone->getWidth()-1, pZone->getHeight()-1);		if(rect.ptInRect(X, Y))		{			if (tile.canAddEffect()) bTileCheck = true;		}		if (bManaCheck && bTimeCheck && bRangeCheck && bTileCheck)		{			decreaseMana(pSlayer, RequiredMP, _GCSkillToTileOK1);			// calculate damage and duration time			SkillInput input(pSlayer, pSkillSlot);			SkillOutput output;			computeOutput(input, output);			Range_t Range = 5;			EffectTileStorm* pEffect = new EffectTileStorm( pZone, X, Y );			pEffect->setUserObjectID( pSlayer->getObjectID() );			pEffect->setDamage( output.Damage );			pEffect->setSkillType( SkillType );			pEffect->setStormTime( 1 );			pEffect->setTick( output.Tick );			pEffect->setNextTime( output.Tick );			ObjectRegistry& objectregister = pZone->getObjectRegistry();			objectregister.registerObject(pEffect);			pZone->addEffect(pEffect);			tile.addEffect(pEffect);			// 扁贱阑 荤侩茄 荤恩甸俊霸			_GCSkillToTileOK1.setSkillType(SkillType);			_GCSkillToTileOK1.setCEffectID(CEffectID);			_GCSkillToTileOK1.setX(X);			_GCSkillToTileOK1.setY(Y);			_GCSkillToTileOK1.setDuration(output.Duration);			_GCSkillToTileOK1.setRange(Range);					// 扁贱阑 敬 荤恩父 杭 荐 乐绰 荤恩甸俊霸			_GCSkillToTileOK3.setObjectID(pSlayer->getObjectID());			_GCSkillToTileOK3.setSkillType(SkillType);			_GCSkillToTileOK3.setX(X);			_GCSkillToTileOK3.setY(Y);			//_GCSkillToTileOK3.setRange(Range);			// 扁贱阑 寸茄 荤恩父 杭 荐 乐绰 荤恩甸俊霸			_GCSkillToTileOK4.setSkillType(SkillType);			_GCSkillToTileOK4.setX(X);			_GCSkillToTileOK4.setY(Y);			_GCSkillToTileOK4.setDuration(output.Duration);			_GCSkillToTileOK4.setRange(Range);			//扁贱阑 敬 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸			_GCSkillToTileOK5.setObjectID(pSlayer->getObjectID());			_GCSkillToTileOK5.setSkillType(SkillType);			_GCSkillToTileOK5.setX(X);			_GCSkillToTileOK5.setY(Y);			_GCSkillToTileOK5.setDuration(output.Duration);			_GCSkillToTileOK5.setRange(Range);				// 扁贱阑 荤侩茄 荤恩俊霸 packet 傈崔			pPlayer->sendPacket(&_GCSkillToTileOK1);			// 扁贱阑 镜 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸 broadcasing			// broadcasting饶 5锅OK甫 罐篮 荤恩阑 扁废茄促.			// 咯扁俊 扁废等 荤恩篮 瞒饶 broadcasting俊辑 力寇等促.			list<Creature*> cList;			cList.push_back( pSlayer );			cList = pZone->broadcastSkillPacket(myX, myY, X, Y, &_GCSkillToTileOK5, cList);						// 扁贱阑 敬 荤恩阑 杭 荐 乐绰 荤恩甸俊霸 broadcasting			pZone->broadcastPacket(myX, myY, &_GCSkillToTileOK3, cList);			// 扁贱阑 寸茄 荤恩阑 杭 荐 乐绰 荤恩甸俊霸 broadcasting			pZone->broadcastPacket(X, Y, &_GCSkillToTileOK4, cList);			// 扁贱 delay setting			pSkillSlot->setRunTime(output.Delay);		}		else		{			executeSkillFailNormal(pSlayer, getSkillType(), NULL);		}	}	catch(Throwable& t)	{		executeSkillFailException(pSlayer, getSkillType());	}	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " end " << endl;	__END_CATCH}PowerOfLand g_PowerOfLand;

⌨️ 快捷键说明

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