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

📄 effectgroundattack.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////////// Filename    : EffectGroundAttack.cpp// Written by  :// Description : //////////////////////////////////////////////////////////////////////////////#include "EffectGroundAttack.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Monster.h"#include "GamePlayer.h"#include "SkillUtil.h"#include "Gpackets/GCModifyInformation.h"#include "Gpackets/GCStatusCurrentHP.h"#include "Gpackets/GCSkillToObjectOK2.h"#include "Gpackets/GCSkillToObjectOK4.h"////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////EffectGroundAttack::EffectGroundAttack(Zone* pZone, ZoneCoord_t zoneX, ZoneCoord_t zoneY) 	throw(Error){	__BEGIN_TRY	m_pZone = pZone;	m_X = zoneX;	m_Y = zoneY;	m_DamagePercent = 0;//	m_CasterName = "";	m_UserObjectID = 0;	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectGroundAttack::affect()	throw(Error){	__BEGIN_TRY	//cout << "EffectGroundAttack" << "affect BEGIN" << endl;	//setNextTime(m_Delay);	//cout << "EffectGroundAttack" << "affect END" << endl;	__END_CATCH }////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectGroundAttack::affect(Creature* pCreature)	throw(Error){	__BEGIN_TRY	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectGroundAttack::unaffect(Creature* pCreature)	throw(Error){	__BEGIN_TRY	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectGroundAttack::unaffect()	throw(Error){	__BEGIN_TRY	//cout << "EffectGroundAttack" << "unaffect BEGIN" << endl;	Assert(m_pZone != NULL);	// 矫傈磊甫 啊廉柯促.	// !! 捞固 粮阑 唱艾阑 荐 乐栏骨肺 NULL捞 瞪 荐 勒促.	// by bezz. 2003.1.4	Creature* pCastCreature = m_pZone->getCreature( m_UserObjectID );	int Damage;	int DamageLimit = 0xFFFF; //500;	HP_t MaxHP = 0;	VSRect rect(0, 0, m_pZone->getWidth()-1, m_pZone->getHeight()-1);	// 泅犁 捞棋飘啊 嘿绢乐绰 鸥老阑 罐酒柯促.	// 吝缴鸥老 + 胶敲贰浆 鸥老	for (int x=-1; x<=1; x++)	{		for (int y=-1; y<=1; y++)		{			int X = m_X + x;			int Y = m_Y + y;			if (!rect.ptInRect(X, Y)) continue;			Tile& tile = m_pZone->getTile(X, Y);			// 啊款单绰 100%			// 林困俊绰 50% damage			bool bCenterEffect = (x==0 && y==0);			int	DamagePercent = (bCenterEffect? m_DamagePercent : (m_DamagePercent>>1));			// 鸥老 救俊 粮犁窍绰 坷宏璃飘甸阑 八祸茄促.			const slist<Object*>& oList = tile.getObjectList();			slist<Object*>::const_iterator itr = oList.begin();			for (; itr != oList.end(); itr++) 			{				Assert(*itr != NULL);				Object* pObject = *itr;				Assert(pObject != NULL);				if (pObject->getObjectClass() == Object::OBJECT_CLASS_CREATURE)				{					Creature* pCreature = dynamic_cast<Creature*>(pObject);					Assert(pCreature != NULL);					// 公利惑怕 眉农. by sigi. 2002.9.5					if (pCreature->isFlag(Effect::EFFECT_CLASS_NO_DAMAGE))					{						continue;					}					if (pCreature->isSlayer()) 					{						Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);						MaxHP = pSlayer->getHP(ATTR_MAX);						Damage = min(DamageLimit, MaxHP*DamagePercent/100);						GCModifyInformation gcMI;						::setDamage( pSlayer, Damage, pCastCreature, SKILL_GROUND_ATTACK, &gcMI );						Player* pPlayer = pSlayer->getPlayer();						Assert(pPlayer != NULL);						pPlayer->sendPacket(&gcMI);					} 					else if (pCreature->isVampire())					{						Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);						MaxHP = pVampire->getHP(ATTR_MAX);						Damage = min(DamageLimit, MaxHP*DamagePercent/100);						GCModifyInformation gcMI;						::setDamage( pVampire, Damage, pCastCreature, SKILL_GROUND_ATTACK, &gcMI );						Player* pPlayer = pVampire->getPlayer();						Assert(pPlayer != NULL);						pPlayer->sendPacket(&gcMI);					}					else if (pCreature->isOusters())					{						Ousters* pOusters = dynamic_cast<Ousters*>(pCreature);						MaxHP = pOusters->getHP(ATTR_MAX);						Damage = min(DamageLimit, MaxHP*DamagePercent/100);						GCModifyInformation gcMI;						::setDamage( pOusters, Damage, pCastCreature, SKILL_GROUND_ATTACK, &gcMI );						Player* pPlayer = pOusters->getPlayer();						Assert(pPlayer != NULL);						pPlayer->sendPacket(&gcMI);					}					else if (pCreature->isMonster())					{						Monster* pMonster = dynamic_cast<Monster*>(pCreature);						MaxHP = pMonster->getHP(ATTR_MAX);						Damage = min(DamageLimit, MaxHP*DamagePercent/100);						::setDamage( pMonster, Damage, pCastCreature, SKILL_GROUND_ATTACK );					}					// user茄抛绰 嘎绰 葛嚼阑 焊咯霖促.					if (pCreature->isPC())					{						GCSkillToObjectOK2 gcSkillToObjectOK2;						gcSkillToObjectOK2.setObjectID( 1 );	// 狼固 绝促.						gcSkillToObjectOK2.setSkillType( SKILL_ATTACK_MELEE );						gcSkillToObjectOK2.setDuration(0);						pCreature->getPlayer()->sendPacket(&gcSkillToObjectOK2);					}					GCSkillToObjectOK4 gcSkillToObjectOK4;					gcSkillToObjectOK4.setTargetObjectID( pCreature->getObjectID() );					gcSkillToObjectOK4.setSkillType( SKILL_ATTACK_MELEE );					gcSkillToObjectOK4.setDuration(0);					m_pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcSkillToObjectOK4, pCreature);					// m_CasterName捞 pCreature甫 磷牢 版快狼 KillCount 贸府					// by sigi. 2002.8.31/*					if (pCreature->isDead())					{						Creature* pAttacker = m_pZone->getCreature( m_CasterName );						if (pAttacker!=NULL)						{ 							affectKillCount(pAttacker, pCreature);						}					}*/				}			}		}	}	Tile& tile = m_pZone->getTile(m_X, m_Y);	tile.deleteEffect(m_ObjectID);	//cout << "EffectGroundAttack" << "unaffect END" << endl;	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////string EffectGroundAttack::toString()	const throw(){	__BEGIN_TRY	StringStream msg;	msg << "EffectGroundAttack("		<< "ObjectID:" << getObjectID()		<< ")";	return msg.toString();	__END_CATCH}EffectGroundAttackLoader* g_pEffectGroundAttackLoader = NULL;

⌨️ 快捷键说明

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