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

📄 effectyellowpoison.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////////// Filename    : EffectYellowPoison.cpp// Written by  : excel96// Description : //////////////////////////////////////////////////////////////////////////////#include "EffectYellowPoison.h"#include "EffectProtectionFromPoison.h"#include "EffectYellowPoisonToCreature.h"#include "EffectLight.h"#include "Slayer.h"#include "Player.h"#include "DB.h"#include "SkillUtil.h"#include "HitRoll.h"#include "Gpackets/GCModifyInformation.h"#include "Gpackets/GCRemoveEffect.h"#include "Gpackets/GCChangeDarkLight.h"#include "Gpackets/GCAddEffect.h"////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////EffectYellowPoison::EffectYellowPoison(Zone* pZone, ZoneCoord_t ZoneX, ZoneCoord_t ZoneY)	throw(Error){	__BEGIN_TRY	m_pZone = pZone;	m_X     = ZoneX;	m_Y     = ZoneY;	m_bVampire = false;	m_bForce = false;	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectYellowPoison::affect(Zone* pZone , ZoneCoord_t x , ZoneCoord_t y , Object* pObject)	throw(Error){	__BEGIN_TRY	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bool EffectYellowPoison::affectCreature(Creature* pTargetCreature, bool bAffectByMove)	throw(Error){	__BEGIN_TRY	Assert(pTargetCreature != NULL);	// 浇饭捞绢档 酒聪绊 酒快胶磐令档 酒聪搁 救 吧赴促.	if (!pTargetCreature->isSlayer() && !pTargetCreature->isOusters() && !isForce()) return false;	if (pTargetCreature->getCompetence() != 3) return false;	// 救傈瘤措牢瘤 眉农茄促.	// 2003.1.10 by bezz.Sequoia	if ( !checkZoneLevelToHitTarget( pTargetCreature ) )	{		return false;	}	Player* pPlayer = pTargetCreature->getPlayer();	Assert(pPlayer != NULL);		// 惑措规狼 poison 历亲仿俊 蝶扼 吧副 荐档 救 吧副 荐档 乐促...	Resist_t resist = pTargetCreature->getResist(MAGIC_DOMAIN_POISON);	// poison 历亲仿俊 狼秦辑 吧府瘤 臼疽促.	if ( m_bVampire )	{		if (!HitRoll::isSuccessVampireCurse(m_Level, resist)) return false;	}	else	{		if (!HitRoll::isSuccessCurse(m_Level, resist)) return false;	}	// 吝汗矫虐瘤 臼绰促. ABCD 2001/03/21	// 吝汗矫懦锭  OldSight阑 掘绰 苞沥俊辑 巩力啊 积败辑 Sight啊 3栏肺 绊馒登绰 滚弊啊 乐菌带	// 巴 鞍促.	if (!pTargetCreature->isFlag(Effect::EFFECT_CLASS_YELLOW_POISON_TO_CREATURE)) 	{		Zone* pZone = pTargetCreature->getZone();		// 敲贰弊啊 难廉乐瘤 臼栏骨肺, 捞棋飘档 绝摆瘤父, 趣矫唱 秦辑		// 捞固 吧妨 乐绰 鞍篮 捞棋飘啊 乐促搁 捞固 吧妨 乐带 巴阑 瘤况霖促.		if (pTargetCreature->isFlag(Effect::EFFECT_CLASS_YELLOW_POISON_TO_CREATURE)) 		{			pTargetCreature->deleteEffect(Effect::EFFECT_CLASS_YELLOW_POISON_TO_CREATURE);		}		Sight_t CurrentSight = pTargetCreature->getSight();		Sight_t oldSight     = CurrentSight;		// 捞棋飘甫 积己窍绊, 颇扼固磐甫 瘤沥秦 霖促.		EffectYellowPoisonToCreature* pEffect = new EffectYellowPoisonToCreature(pTargetCreature);		pEffect->setDeadline(m_Duration);		pEffect->setOldSight(CurrentSight);		pEffect->setLevel(m_Level);		// Creature俊 Effect Flag甫 On 矫挪促.		pTargetCreature->setFlag(Effect::EFFECT_CLASS_YELLOW_POISON_TO_CREATURE);		pTargetCreature->addEffect(pEffect);		// DB俊 Effect甫 积己茄促.		//pEffect->create(pTargetCreature->getName());		// 盔贰 捞 何盒俊 粮 饭骇阑 眉农秦辑, 救傈瘤措老 版快,		// GCChangeDarkLight俊促 促农饭骇阑 0栏肺 秦辑 焊郴林菌栏唱,		// 鞘夸啊 绝绰 内靛牢 巴 鞍酒辑 哗滚啡促. -- 辫己刮		GCChangeDarkLight gcChangeDarkLight;		gcChangeDarkLight.setDarkLevel(15);		gcChangeDarkLight.setLightLevel(1);		pPlayer->sendPacket(&gcChangeDarkLight);		pTargetCreature->setSight(pTargetCreature->getEffectedSight());		GCModifyInformation gcMI;				// 矫具啊 函沁栏骨肺.. 矫具 update..		if ( oldSight != pTargetCreature->getSight() )		{			pZone->updateScan(pTargetCreature, oldSight, pTargetCreature->getSight());			gcMI.addShortData(MODIFY_VISION, pTargetCreature->getSight());		}		// send GCModifyInformation for sight change		gcMI.addShortData(MODIFY_EFFECT_STAT, Effect::EFFECT_CLASS_YELLOW_POISON_TO_CREATURE);		gcMI.addLongData(MODIFY_DURATION, m_Duration);		pPlayer->sendPacket(&gcMI);		GCAddEffect gcAddEffect;		gcAddEffect.setObjectID(pTargetCreature->getObjectID());		gcAddEffect.setEffectID(Effect::EFFECT_CLASS_YELLOW_POISON_TO_CREATURE);		gcAddEffect.setDuration(m_Duration);		pZone->broadcastPacket(pTargetCreature->getX(), pTargetCreature->getY(), &gcAddEffect, pTargetCreature);					return true;	}	return false;	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectYellowPoison::affect(Creature* pTargetCreature)	throw(Error){	__BEGIN_TRY	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectYellowPoison::unaffect(Creature* pCreature)	throw(Error){	__BEGIN_TRY	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectYellowPoison::unaffect()	throw(Error){	__BEGIN_TRY	Tile& tile = m_pZone->getTile(m_X, m_Y);	tile.deleteEffect(m_ObjectID);	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectYellowPoison::unaffect(Zone* pZone , ZoneCoord_t x , ZoneCoord_t y , Object* pObject)	throw(Error){	__BEGIN_TRY	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////string EffectYellowPoison::toString()	const throw(){	__BEGIN_TRY	StringStream msg;	msg << "EffectYellowPoison("		<< "ObjectID:" << getObjectID()		<< ")";	return msg.toString();	__END_CATCH}void EffectYellowPoisonLoader::load(Zone* pZone) 	throw(Error){	__BEGIN_TRY	Statement* pStmt = NULL;	Result* pResult = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pResult = pStmt->executeQuery( "SELECT LeftX, TopY, RightX, BottomY, Value1, Value2, Value3 FROM ZoneEffectInfo WHERE ZoneID = %d AND EffectID = %d", pZone->getZoneID(), (int)Effect::EFFECT_CLASS_YELLOW_POISON);		while (pResult->next())		{			int count = 0;						ZoneCoord_t left 	= pResult->getInt( ++count );			ZoneCoord_t top 	= pResult->getInt( ++count );			ZoneCoord_t right 	= pResult->getInt( ++count );			ZoneCoord_t	bottom	= pResult->getInt( ++count );			int 		value1	= pResult->getInt( ++count );			int 		value2	= pResult->getInt( ++count );			int 		value3	= pResult->getInt( ++count );			VSRect rect(0, 0, pZone->getWidth()-1, pZone->getHeight()-1);			for ( int X = left ; X <= right ; X++ )			for ( int Y = top ; Y <= bottom ; Y++ )			{				if ( rect.ptInRect(X, Y) )				{					Tile& tile = pZone->getTile(X,Y);					if ( tile.canAddEffect() ) 					{						EffectYellowPoison* pEffect = new EffectYellowPoison(pZone, X, Y);						pEffect->setForce(true);						pEffect->setDuration( value1 );						pEffect->setLevel( 100 );						// 粮 棺 鸥老俊促啊 捞棋飘甫 眠啊茄促.						pZone->registerObject(pEffect);						pZone->addEffect(pEffect);						tile.addEffect(pEffect);					}				}			}		}	}	END_DB(pStmt)	__END_CATCH}EffectYellowPoisonLoader* g_pEffectYellowPoisonLoader = NULL;

⌨️ 快捷键说明

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