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

📄 poisonstorm.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			// 扁贱阑 荤侩茄 荤恩甸俊霸			_GCSkillToTileOK1.setSkillType(SkillType);			_GCSkillToTileOK1.setCEffectID(CEffectID);			_GCSkillToTileOK1.setX(X);			_GCSkillToTileOK1.setY(Y);			_GCSkillToTileOK1.setDuration(output.Duration);			_GCSkillToTileOK1.setRange(Range);					// 扁贱阑 敬 荤恩父 杭 荐 乐绰 荤恩甸俊霸			_GCSkillToTileOK3.setSkillType(SkillType);			_GCSkillToTileOK3.setX(X);			_GCSkillToTileOK3.setY(Y);			// 扁贱阑 寸茄 荤恩父 杭 荐 乐绰 荤恩甸俊霸			_GCSkillToTileOK4.setSkillType(SkillType);			_GCSkillToTileOK4.setX(X);			_GCSkillToTileOK4.setY(Y);			_GCSkillToTileOK4.setDuration(output.Duration);			_GCSkillToTileOK4.setRange(Range);			//扁贱阑 敬 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸			_GCSkillToTileOK5.setObjectID(pVampire->getObjectID());			_GCSkillToTileOK5.setSkillType(SkillType);			_GCSkillToTileOK5.setX(X);			_GCSkillToTileOK5.setY(Y);			_GCSkillToTileOK5.setDuration(output.Duration);			_GCSkillToTileOK5.setRange(Range);				// 扁贱阑 荤侩茄 荤恩俊霸 packet 傈崔			pPlayer->sendPacket(&_GCSkillToTileOK1);			// 扁贱阑 镜 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸 broadcasing			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			pVampireSkillSlot->setRunTime(output.Delay);		}		else		{			executeSkillFailNormal(pVampire, getSkillType(), NULL);		}	}	catch(Throwable& t)	{		executeSkillFailException(pVampire, getSkillType());	}	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " end " << endl;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 阁胶磐 鸥老 勤甸矾//////////////////////////////////////////////////////////////////////////////void PoisonStorm::execute(Monster* pMonster, ZoneCoord_t X, ZoneCoord_t Y)	throw(Error){	__BEGIN_TRY	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << "begin " << endl;	try	{		Zone* pZone = pMonster->getZone();		Assert(pZone != NULL);		GCSkillToTileOK1 _GCSkillToTileOK1;		GCSkillToTileOK2 _GCSkillToTileOK2;		GCSkillToTileOK3 _GCSkillToTileOK3;		GCSkillToTileOK4 _GCSkillToTileOK4;		GCSkillToTileOK5 _GCSkillToTileOK5;		GCSkillToTileOK6 _GCSkillToTileOK6;		SkillType_t SkillType = SKILL_POISON_STORM;		SkillInfo*  pSkillInfo =  g_pSkillInfoManager->getSkillInfo(SkillType);		ZoneCoord_t myX = pMonster->getX();		ZoneCoord_t myY = pMonster->getY();		bool bRangeCheck = verifyDistance(pMonster, X, Y, pSkillInfo->getRange());		bool bHitRoll = HitRoll::isSuccessMagic(pMonster, pSkillInfo);		bool bTileCheck = false;		VSRect rect(0, 0, pZone->getWidth()-1, pZone->getHeight()-1);		if(rect.ptInRect(X, Y))		{			Tile& tile = pZone->getTile(X, Y);			if (tile.canAddEffect()) bTileCheck = true;		}		if (bRangeCheck && bHitRoll && bTileCheck)		{			// calculate damage and duration time			SkillInput input(pMonster);			SkillOutput output;			computeOutput(input, output);			Range_t Range = 3;			// 扁粮俊 鞍篮 捞棋飘啊 鸥老俊 乐促搁 瘤快绊 货肺 汲沥茄促.			Tile& tile = pZone->getTile(X, Y);			Effect* pOldEffect = tile.getEffect(Effect::EFFECT_CLASS_POISON_STORM);			if(pOldEffect != NULL)			{				ObjectID_t effectID = pOldEffect->getObjectID();				pZone->deleteEffect(effectID);			}			// 捞棋飘 坷宏璃飘甫 积己秦辑 鸥老俊 嘿牢促. 			EffectPoisonStorm* pEffect = new EffectPoisonStorm(pZone, X, Y);			pEffect->setDeadline(output.Duration);			pEffect->setNextTime(0);			pEffect->setTick(output.Tick);			pEffect->setDamage(output.Damage);			pEffect->setUserObjectID( pMonster->getObjectID() );			pEffect->setLevel(pSkillInfo->getLevel()/2);			//			ObjectRegistry& objectregister = pZone->getObjectRegistry();			objectregister.registerObject(pEffect);			//			//			pZone->addEffect(pEffect);			tile.addEffect(pEffect);			// 捞棋飘 裹困郴狼 葛电 Creature俊霸 effect甫 嘿咯霖促.			// Vampire啊 扁贱阑 荤侩茄 版快 鞍篮 Vampire俊霸绰			// 秦寸窍瘤 臼绰促.			bool bEffected = false;			Creature* pTargetCreature;			list<Creature*> cList;			cList.push_back(pMonster);			int oX, oY;			for(oX = -1; oX <= 1; oX++)			for(oY = -1; oY <= 1; oY++)			{				int tileX = X+oX;				int tileY = Y+oY;				if(!rect.ptInRect(tileX, tileY)) continue;				Tile& tile = pZone->getTile(tileX, tileY);				if(!tile.canAddEffect()) continue;				pTargetCreature = NULL;				if(tile.hasCreature(Creature::MOVE_MODE_WALKING))					pTargetCreature = tile.getCreature(Creature::MOVE_MODE_WALKING);				if(pTargetCreature != NULL					&& pMonster->isEnemyToAttack( pTargetCreature ))				{					// 2003.1.10 by Sequoia					if( !checkZoneLevelToHitTarget( pTargetCreature ) ) continue;					if(pTargetCreature->isPC())					{						if(pEffect->affectCreature(pTargetCreature, false) == true)						{							Player* pTargetPlayer = pTargetCreature->getPlayer();							bEffected = true;							bool bCanSee = canSee(pTargetCreature, pMonster);							_GCSkillToTileOK1.addCListElement(pTargetCreature->getObjectID());							_GCSkillToTileOK4.addCListElement(pTargetCreature->getObjectID());							_GCSkillToTileOK5.addCListElement(pTargetCreature->getObjectID());							cList.push_back(pTargetCreature);							if (bCanSee)							{								// 傍拜阑 寸茄 荤恩俊霸 								_GCSkillToTileOK2.setObjectID(pMonster->getObjectID());								_GCSkillToTileOK2.setSkillType(SkillType);								_GCSkillToTileOK2.setX(X);								_GCSkillToTileOK2.setY(Y);								_GCSkillToTileOK2.setDuration(output.Duration);								_GCSkillToTileOK2.setRange(Range);								pTargetPlayer->sendPacket(&_GCSkillToTileOK2);							}						}					}					else if(pTargetCreature->isMonster())					{						if(pEffect->affectCreature(pTargetCreature, false) == true)						{							Monster* pMonster = dynamic_cast<Monster*>(pTargetCreature);							pMonster->addEnemy(pMonster);						}					}				} // if(pTargetCreature!= NULL)			}			// 扁贱阑 敬 荤恩父 杭 荐 乐绰 荤恩甸俊霸			_GCSkillToTileOK3.setSkillType(SkillType);			_GCSkillToTileOK3.setX(myX);			_GCSkillToTileOK3.setY(myY);			// 扁贱阑 寸茄 荤恩父 杭 荐 乐绰 荤恩甸俊霸			_GCSkillToTileOK4.setSkillType(SkillType);			_GCSkillToTileOK4.setX(X);			_GCSkillToTileOK4.setY(Y);			_GCSkillToTileOK4.setDuration(output.Duration);			_GCSkillToTileOK4.setRange(Range);			//扁贱阑 敬 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸			_GCSkillToTileOK5.setObjectID(pMonster->getObjectID());			_GCSkillToTileOK5.setSkillType(SkillType);			_GCSkillToTileOK5.setX(X);			_GCSkillToTileOK5.setY(Y);			_GCSkillToTileOK5.setDuration(output.Duration);			_GCSkillToTileOK5.setRange(Range);				// 扁贱阑 镜 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸 broadcasing			cList = pZone->broadcastSkillPacket(myX, myY, X, Y, &_GCSkillToTileOK5, cList);						// 扁贱阑 敬 荤恩阑 杭 荐 乐绰 荤恩甸俊霸 broadcasting			pZone->broadcastPacket(myX, myY, &_GCSkillToTileOK3, cList);			// 扁贱阑 寸茄 荤恩阑 杭 荐 乐绰 荤恩甸俊霸 broadcasting			pZone->broadcastPacket(X, Y, &_GCSkillToTileOK4, cList);		}		else		{			executeSkillFailNormal(pMonster, getSkillType(), NULL);		}	}	catch(Throwable& t)	{		executeSkillFailException(pMonster, getSkillType());	}	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " end " << endl;	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " end " << endl;	__END_CATCH}PoisonStorm g_PoisonStorm;

⌨️ 快捷键说明

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