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

📄 protectionmagic.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ProtectionMagic.cpp: implementation of the CProtectionMagic class.
//
//////////////////////////////////////////////////////////////////////

#include "..\stdafx.h"
#include "ProtectionMagic.h"

#include "..\HigherLayers\OP_Magic.h"
///////////////////////////////////////////////////////////////////////////////
// Construction/Destruction
///////////////////////////////////////////////////////////////////////////////

CProtectionMagic::CProtectionMagic()
{
  
}

CProtectionMagic::~CProtectionMagic()
{

}

///////////////////////////////////////////////////////////////////////////////
// Protected Method
///////////////////////////////////////////////////////////////////////////////

bool CProtectionMagic::Bind()
{ 
	Resist(PROTECTION, &CProtectionMagic::Protection);
	Resist(SHIELD, &CProtectionMagic::Shield);
	Resist(FIRE_RESIST, &CProtectionMagic::FireResist);
	Resist(ICE_RESIST , &CProtectionMagic::IceResist);
	Resist(ELECT_RESIST, &CProtectionMagic::ElectResist);
	Resist(TWINKLE_STAR, &CProtectionMagic::TwinkleStar);
	Resist(PROTECT_RANGE_WEAPON, &CProtectionMagic::ProtectRangeWeapon); // 厘芭府 公扁肺何磐 焊龋
	Resist(DRAGON_SCALE, &CProtectionMagic::DragonScale);
	Resist(BLESS, &CProtectionMagic::Bless);
	Resist(PROTECT_DANGER, &CProtectionMagic::ProtectDanger);
	Resist(GREAT_SHIELD, &CProtectionMagic::GreatShield);
	Resist(AUTHORITY_LETHY, &CProtectionMagic::AuthorityLethy); // CSD-021015
	Resist(NULLITY_MAGIC, &CProtectionMagic::NullityMagic);
	Resist(CANCEL_DIVINE, &CProtectionMagic::CancelDivine);
	Resist(RECURRENCE_DIVINE, &CProtectionMagic::RecurrenceDivine);
	Resist(PERFECT_PROTECT, &CProtectionMagic::PerfectProtect);
	Resist(AUTHORITY_OF_ATHYAS, &CProtectionMagic::AuthorityOfAthyas); // 030415 kyo 
	return true;
} 

bool CProtectionMagic::DragonScale()
{ // [86]靛贰帮狼 厚疵 : 拱府利 傍拜 单固瘤 60% 规绢
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 拱府利 规绢仿 60% 刘啊
	m_pTarget->SetPhysicalDefense(m_dwNow + wPeriod, 60, 60, 60);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// 搬苞蔼阑 措惑磊俊霸 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.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	SendMagicResult();
	return true;
}

bool CProtectionMagic::ProtectRangeWeapon()
{ // [79]厘芭府 公扁肺何磐 焊龋 : 厘芭府 傍拜 单固瘤 90% 规绢
	// 蜡瘤矫埃 拌魂
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 厘芭府 傍拜 单固瘤 90% 规绢
	m_pTarget->dpLong.SetState(m_dwNow + wPeriod, 90);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// 搬苞蔼阑 措惑磊俊霸 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.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	SendMagicResult();
	return true;
}

bool CProtectionMagic::FireResist()
{ // [28]阂俊 措茄 历亲 : 阂拌凯 傍拜付过俊 措茄 规绢仿 50% 刘啊
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 阂拌凯 傍拜付过俊 措茄 规绢仿 50% 刘啊
	m_pTarget->SetMagicalDefense(m_dwNow + wPeriod, 50, 0, 0, 0);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// 搬苞蔼阑 措惑磊俊霸 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.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	SendMagicResult();
	return true;
}

bool CProtectionMagic::IceResist()
{ // [37]葫拌 历亲 : 倔澜拌凯 傍拜付过俊 措茄 规绢仿 50% 刘啊
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 倔澜拌凯 傍拜付过俊 措茄 规绢仿 50% 刘啊
	m_pTarget->SetMagicalDefense(m_dwNow + wPeriod, 0, 50, 0, 0);
	// CSD-021216 : 倔覆 历林 付过 规绢
	m_pTarget->SetCurseDefense(m_dwNow + wPeriod, CMagicState::CURSE_FREEZE);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// 搬苞蔼阑 措惑磊俊霸 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.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	m_packet.u.magic.server_magic_result_t.wDuration= wPeriod;
	SendMagicResult();
	return true;
}

bool CProtectionMagic::ElectResist()
{ // [47]傈拜俊 措茄 历亲 : 傈拜拌凯 傍拜 付过俊 措茄 规绢仿 50% 刘啊
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 傈拜拌凯 傍拜 付过俊 措茄 规绢仿 50% 刘啊
	m_pTarget->SetMagicalDefense(m_dwNow + wPeriod, 0, 0, 50, 0);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// 搬苞蔼阑 措惑磊俊霸 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.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	SendMagicResult();
	return true;
}

bool CProtectionMagic::TwinkleStar()
{ // [53]荐龋己 : 拱府利 傍拜 单固瘤 40% 规绢, 历林 1拌凯狼 付过 100% 规绢
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 拱府利 规绢仿 30% 刘啊
	m_pTarget->SetPhysicalDefense(m_dwNow + wPeriod, 40, 40, 40);
	// 历林 1拌凯 付过 规绢
	m_pTarget->SetCurseDefense(m_dwNow + wPeriod, CMagicState::CURSE_1);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// 搬苞蔼阑 措惑磊俊霸 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.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	SendMagicResult();
	return true;
}

bool CProtectionMagic::Protection()
{ // [2]焊龋 : 拱府利 傍拜 单固瘤 30% 规绢, 历林 1, 3, 5拌凯狼 付过 100% 规绢
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 拱府利 规绢仿 30% 刘啊
	m_pTarget->SetPhysicalDefense(m_dwNow + wPeriod, 30, 30, 30);
	// 历林 3, 4, 5拌凯 付过 规绢
	m_pTarget->SetCurseDefense(m_dwNow + wPeriod, 
		CMagicState::CURSE_1|CMagicState::CURSE_3|CMagicState::CURSE_4);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// 搬苞蔼阑 措惑磊俊霸 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.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	SendMagicResult();
	return true;
}

bool CProtectionMagic::Shield()
{ // [3]焊龋阜 : 拱府利 傍拜 单固瘤, 阂, 倔澜, 傈拜拌凯狼 傍拜付过 40% 规绢
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 拱府利 规绢仿 40% 刘啊
	m_pTarget->SetPhysicalDefense(m_dwNow + wPeriod, 40, 40, 40);
	// 阂, 倔澜, 傈拜拌凯 傍拜付过 规绢仿 40 刘啊
	m_pTarget->SetMagicalDefense(m_dwNow + wPeriod, 40, 40, 40, 0);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);
	// 搬苞蔼阑 措惑磊俊霸 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.nState = m_pTarget->GetState();
	m_packet.u.magic.server_magic_result_t.nResult = HIT_AND_NOTDEAD;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	SendMagicResult();
	return true;
}

bool CProtectionMagic::Bless()
{ // [153]脚狼 绵汗 : 历林拌凯(1, 2, 3, 4) 付过阑 100% 规绢
	// 蜡瘤矫埃 拌魂
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 历林 1, 2, 3, 4拌凯 付过 规绢
	m_pTarget->SetCurseDefense(m_dwNow + wPeriod, 
		CMagicState::CURSE_1|CMagicState::CURSE_2|CMagicState::CURSE_3|CMagicState::CURSE_4);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 矫傈磊狼 版氰摹 拌魂
	::AddCasterEXP(m_pCaster, m_pTarget, 2, 0, m_nIndex);

⌨️ 快捷键说明

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