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

📄 cursingmagic.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 3 页
字号:

bool CCursingMagic::Slow()
{	// [10]加档历窍 : 惑措规狼 捞悼加档(MovP)甫 1/2肺 皑家
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	
	if (IsReturn(m_pTarget))
	{
		m_pCaster->speedDown.SetState(m_dwNow + wPeriod, 50);
		m_pCaster->ApplyCurse(2, CON_SLOW, m_dwNow + wPeriod);
		// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
		InitMagicResult(CMD_MAGIC_RESULT_T);
		m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
		m_packet.u.magic.server_magic_result_t.idTarget = m_idCaster;
		m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
		m_packet.u.magic.server_magic_result_t.nState = m_pCaster->GetState();
		m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
		SendMagicResult();
		return true;
	}
	
	m_pTarget->speedDown.SetState(m_dwNow + wPeriod, 50);
	m_pTarget->ApplyCurse(2, CON_SLOW, m_dwNow + wPeriod);
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// NK俊 拌魂
	::CheckNK(m_idCaster, m_idTarget, NK_TYPE_NO_KILL_);
	// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
	InitMagicResult(CMD_MAGIC_RESULT_T);
	m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
	m_packet.u.magic.server_magic_result_t.idTarget = m_idTarget;
	m_packet.u.magic.server_magic_result_t.wDuration= wPeriod;
	m_packet.u.magic.server_magic_result_t.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	SendMagicResult();
	return true;
}

bool CCursingMagic::SpiderWeb()
{	// [19]芭固临	: 惑措规狼 捞悼加档(MovP) 1/3 临捞绊, 傍拜 己傍伏 皑家                                
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	
	if (IsReturn(m_pTarget))
	{ 
		m_pCaster->speedDown.SetState(m_dwNow + wPeriod, 30);
		m_pCaster->ApplyCurse(2, CON_SLOW, m_dwNow + wPeriod);
		// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
		InitMagicResult(CMD_MAGIC_RESULT_T);
		m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
		m_packet.u.magic.server_magic_result_t.idTarget = m_idCaster;
		m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
		m_packet.u.magic.server_magic_result_t.nState = m_pCaster->GetState();
		m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
		SendMagicResult();
		return true;
	} 
	
	m_pTarget->speedDown.SetState(m_dwNow + wPeriod, 30);
	m_pTarget->ApplyCurse(2, CON_SLOW, m_dwNow + wPeriod);
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// NK俊 拌魂
	::CheckNK(m_idCaster, m_idTarget, NK_TYPE_NO_KILL_);
	// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
	InitMagicResult(CMD_MAGIC_RESULT_T);
	m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
	m_packet.u.magic.server_magic_result_t.idTarget = m_idTarget;
	m_packet.u.magic.server_magic_result_t.wDuration= wPeriod;
	m_packet.u.magic.server_magic_result_t.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	SendMagicResult();
	return true;
}

bool CCursingMagic::AreaSlow()
{	// [115]瘤开 加档历窍
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	m_pTarget->speedDown.SetState(m_dwNow + wPeriod, 30);
	m_pTarget->ApplyCurse(2, CON_SLOW, m_dwNow + wPeriod);
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// NK俊 拌魂
	::CheckNK(m_idCaster, m_idTarget, NK_TYPE_NO_KILL_);
	// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
	InitMagicResult(CMD_MAGIC_RESULT_T);
	m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
	m_packet.u.magic.server_magic_result_t.idTarget = m_idTarget;
	m_packet.u.magic.server_magic_result_t.wDuration= wPeriod;
	m_packet.u.magic.server_magic_result_t.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	SendMagicResult();
	return true;
}

bool CCursingMagic::FeatherOfCurse()
{	// [93]付厚狼 标判
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	
	if (IsReturn(m_pTarget))
	{
		m_pCaster->speedDown.SetState(m_dwNow + wPeriod, 50);
		m_pCaster->ApplyCurse(2, CON_SLOW, m_dwNow + wPeriod);
		// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
		InitMagicResult(CMD_MAGIC_RESULT_T);
		m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
		m_packet.u.magic.server_magic_result_t.idTarget = m_idCaster;
		m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
		m_packet.u.magic.server_magic_result_t.nState = m_pCaster->GetState();
		m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
		SendMagicResult();
		return true;
	}
	
	m_pTarget->speedDown.SetState(m_dwNow + wPeriod, 50);
	m_pTarget->ApplyCurse(2, CON_SLOW, m_dwNow + wPeriod);
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// NK俊 拌魂
	::CheckNK(m_idCaster, m_idTarget, NK_TYPE_NO_KILL_);
	// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
	InitMagicResult(CMD_MAGIC_RESULT_T);
	m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
	m_packet.u.magic.server_magic_result_t.idTarget = m_idTarget;
	m_packet.u.magic.server_magic_result_t.wDuration= wPeriod;
	m_packet.u.magic.server_magic_result_t.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	SendMagicResult();
	return true;
}

bool CCursingMagic::Intoxication()
{	// [12]吝刀 : 付过狼 扁夯 单固瘤蔼父怒 HP 皑家 饶 老沥樊狼 HP啊 辑辑洒 皑家
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	const int nBase = 100 + m_pTarget->HpMax*0.05 + (m_pCaster->Skill[TACTICS_Magery]>>2);
	const int nPoison = __min(nBase, 2000);
	
	if (IsReturn(m_pTarget))
	{
		m_pCaster->SetPoisonedPoint(nPoison);
		m_pCaster->ApplyCurse(3, CON_POISON, m_dwNow + wPeriod);
		// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
		InitMagicResult(CMD_MAGIC_RESULT_T);
		m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
		m_packet.u.magic.server_magic_result_t.idTarget = m_idCaster;
		m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
		m_packet.u.magic.server_magic_result_t.nState = m_pCaster->GetState();
		m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
		SendMagicResult();
		return true;
	}
	
	m_pTarget->SetPoisonedPoint(nPoison);
	m_pTarget->ApplyCurse(3, CON_POISON, m_dwNow + wPeriod);
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// NK俊 拌魂
	::CheckNK(m_idCaster, m_idTarget, NK_TYPE_NO_KILL_);
	// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
	InitMagicResult(CMD_MAGIC_RESULT_T);
	m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
	m_packet.u.magic.server_magic_result_t.idTarget = m_idTarget;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	m_packet.u.magic.server_magic_result_t.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	SendMagicResult();
	return true;
}

bool CCursingMagic::ToxicCloud()
{	// [15]刀备抚 : 老沥瘤开 郴俊 吝刀捞 惯积
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	const int nBase = 100 + m_pTarget->HpMax*0.04 + (m_pCaster->Skill[TACTICS_Magery]>>1);
	const int nPoison = __min(nBase, 2000);
	// 扁夯 付过 单固瘤
	if (IsReturn(m_pTarget))
	{
		m_pCaster->SetPoisonedPoint(nPoison);
		m_pCaster->ApplyCurse(3, CON_POISON, m_dwNow + wPeriod);
		// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
		InitMagicResult(CMD_MAGIC_RESULT_T);
		m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
		m_packet.u.magic.server_magic_result_t.idTarget = m_idCaster;
		m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
		m_packet.u.magic.server_magic_result_t.nState = m_pCaster->GetState();
		m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
		SendMagicResult();
		return true;
	}
	
	m_pTarget->SetPoisonedPoint(nPoison);
	m_pTarget->ApplyCurse(3, CON_POISON, m_dwNow + wPeriod);
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// NK俊 拌魂
	::CheckNK(m_idCaster, m_idTarget, NK_TYPE_NO_KILL_);
	// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
	InitMagicResult(CMD_MAGIC_RESULT_T);
	m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
	m_packet.u.magic.server_magic_result_t.idTarget = m_idTarget;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	m_packet.u.magic.server_magic_result_t.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	SendMagicResult();
	return true;
}

bool CCursingMagic::VampirePoison()
{	//< CSD-TW-030627 : [90]轨颇捞绢狼 刀
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	const int nPoison = m_pTarget->HpMax*0.1;
	m_pTarget->SetPoisonedPoint(nPoison);
	m_pTarget->ApplyCurse(3, CON_POISON, m_dwNow + wPeriod);
	// 矫傈磊狼 版氰摹 拌魂 : 傍拜付过栏肺 埃林秦辑 磷瘤 臼篮 版快
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// NK俊 拌魂
	::CheckNK(m_idCaster, m_idTarget, NK_TYPE_NO_KILL_);
	// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
	InitMagicResult(CMD_MAGIC_RESULT_T);
	m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
	m_packet.u.magic.server_magic_result_t.idTarget = m_idTarget;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	m_packet.u.magic.server_magic_result_t.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	SendMagicResult();
	return true;
}	//> CSD-TW-030627

bool CCursingMagic::CurseOfHell()
{	//< CSD-TW-030627 : [94]秋狼 历林
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	const int nPoison = m_pTarget->HpMax*0.1;
	m_pTarget->SetPoisonedPoint(nPoison);
	m_pTarget->ApplyCurse(3, CON_POISON, m_dwNow + wPeriod);
	// 矫傈磊狼 版氰摹 拌魂 : 傍拜付过栏肺 埃林秦辑 磷瘤 臼篮 版快
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// NK俊 拌魂
	::CheckNK(m_idCaster, m_idTarget, NK_TYPE_NO_KILL_);
	// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
	InitMagicResult(CMD_MAGIC_RESULT_T);
	m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
	m_packet.u.magic.server_magic_result_t.idTarget = m_idTarget;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	m_packet.u.magic.server_magic_result_t.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	SendMagicResult();
	return true;
}	//> CSD-TW-030627

bool CCursingMagic::AreaPoison()
{	// [113]瘤开 吝刀
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	const int nPoison = m_pTarget->HpMax*0.05;
	m_pTarget->SetPoisonedPoint(nPoison);
	m_pTarget->ApplyCurse(3, CON_POISON, m_dwNow + wPeriod);
	// 矫傈磊狼 版氰摹 拌魂 : 傍拜付过栏肺 埃林秦辑 磷瘤 臼篮 版快
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// NK俊 拌魂
	::CheckNK(m_idCaster, m_idTarget, NK_TYPE_NO_KILL_);
	// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
	InitMagicResult(CMD_MAGIC_RESULT_T);
	m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
	m_packet.u.magic.server_magic_result_t.idTarget = m_idTarget;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	m_packet.u.magic.server_magic_result_t.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	SendMagicResult();
	return true;
}

bool CCursingMagic::LostSight()
{	// [82] 矫仿惑角 : 矫具甫 2鸥老肺 良塞
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	
	if (IsReturn(m_pTarget))
	{
		m_pCaster->ApplyCurse(4, CON_DARKNESS, m_dwNow + wPeriod);
		// 矫具惑角 惑怕甫 努扼捞攫飘肺 傈价
		::SendMagicCommand(m_pCaster, SET_LOSTSIGHT, 0, wPeriod);
		// 搬苞蔼阑 措惑磊俊霸 Packet栏肺 焊郴扁
		InitMagicResult(CMD_MAGIC_RESULT_T);
		m_packet.u.magic.server_magic_result_t.nMagic = m_nIndex;
		m_packet.u.magic.server_magic_result_t.idTarget = m_idCaster;
		m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
		m_packet.u.magic.server_magic_result_t.nState = m_pCaster->GetState();
		m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
		SendMagicResult();
		return true;
	}
	
	m_pTarget->ApplyCurse(4, CON_DARKNESS, m_dwNow + wPeriod);
	
	if (m_pTarget->IsNpc())
	{	// NPC 棺 阁胶磐狼 矫具惑角 瓤苞 楷免窃荐 龋免
		::NPCLostSight(m_pTarget, m_dwNow + wPeriod);
	}
	else
	{	// 矫具惑角 惑怕甫 努扼捞攫飘肺 傈价
		::SendMagicCommand(m_pTarget, SET_LOSTSIGHT, 0, wPeriod);
	}
	// 矫傈磊狼 版氰摹 拌魂 : 傍拜付过栏肺 埃林秦辑 磷瘤 臼篮 版快

⌨️ 快捷键说明

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