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

📄 protectionmagic.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	// 搬苞蔼阑 措惑磊俊霸 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::ProtectDanger()
{	// [152]困氰栏肺何磐 焊龋 : 拱府利 傍拜 单固瘤 40 ~ 50% 规绢, 历林拌凯(1, 2) 规绢
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 规绢伏 拌魂
	const int nWis = m_pCaster->GetAbility(WIS) - GetRequireWidom(m_nIndex);
	const int nTactics = m_pCaster->Skill[TACTICS_Orison] - GetRequireTactics(m_nIndex);
	int nBasic = (nWis + nTactics)/10 + 40;
	if (nBasic < 0)   nBasic = 0;
	if (nBasic > 50)  nBasic = 50;
	m_pTarget->SetPhysicalDefense(m_dwNow + wPeriod, nBasic, nBasic, nBasic);
	// 历林 1, 2拌凯 付过 规绢
	m_pTarget->SetCurseDefense(m_dwNow + wPeriod, 
		CMagicState::CURSE_1|CMagicState::CURSE_2);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	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::GreatShield()
{ // [158]困措茄 扁档
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 规绢伏 拌魂
	const int nWis = m_pCaster->GetAbility(WIS) - GetRequireWidom(m_nIndex);
	const int nTactics = m_pCaster->Skill[TACTICS_Orison] - GetRequireTactics(m_nIndex);
	int nBasic = (nWis + nTactics)/10 + 40;
	if (nBasic < 0)   nBasic = 0;
	if (nBasic > 50)  nBasic = 50;
	m_pTarget->SetPhysicalDefense(m_dwNow + wPeriod, nBasic, nBasic, nBasic);
	// 历林 1, 2拌凯 付过 规绢
	m_pTarget->SetCurseDefense(m_dwNow + wPeriod, 
		CMagicState::CURSE_1|CMagicState::CURSE_2);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	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::AuthorityLethy()
{ //< CSD-021019 : [184]饭萍狼 鼻瓷
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 拱府利 傍拜 规绢仿 拌魂
	const int nWis = m_pCaster->GetAbility(WIS) - GetRequireWidom(m_nIndex);
	const int nTactics = m_pCaster->Skill[TACTICS_Orison] - GetRequireTactics(m_nIndex);
	int nBasic = (nWis + nTactics)/10;
	if (nBasic < 0)   nBasic = 0;
	if (nBasic > 10)  nBasic = 10;
	// 拱府 傍拜 规绢仿 40 - 50% 刘啊
	const int nStrike = 40 + nBasic;
	m_pTarget->SetPhysicalDefense(m_dwNow + wPeriod, nStrike, nStrike, nStrike);
	// 傍拜 付过 规绢仿 20 - 30% 刘啊
	const int nMagic = 20 + nBasic;
	m_pTarget->SetMagicalDefense(m_dwNow + wPeriod, nMagic, nMagic, nMagic, nMagic);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 拱府, 付过 傍拜 单固瘤 馆荤 惑怕烙阑 汲沥
	m_pTarget->dwStrikeReflect = m_dwNow + wPeriod;
	m_pTarget->dwMagicReflect = 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;
} //> CSD-021019

bool CProtectionMagic::NullityMagic()
{ // [24]付过公瓤拳 : 老沥 矫埃悼救 傍拜拌凯 付过阑 100% 规绢(单固瘤父怒 付唱 家厚)
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 傍拜拌凯 付过阑 100% 规绢(单固瘤父怒 付唱 家厚)
	m_pTarget->dwMagicDamageToMana = m_dwNow + wPeriod;
	// 漂荐 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwSpecialProtect = 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::CancelDivine()
{ // [159]馆脚仿 公瓤拳 : 历林拌凯(1, 2, 3, 4, 5)  付过阑 100% 规绢
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 历林 1, 2, 3, 4, 5拌凯 付过 规绢
	m_pTarget->SetCurseDefense(m_dwNow + wPeriod, 
		CMagicState::CURSE_1|CMagicState::CURSE_2|CMagicState::CURSE_3|CMagicState::CURSE_4|CMagicState::CURSE_5);
	// 漂荐 焊龋拌凯 付过 惑怕烙阑 汲沥
	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::RecurrenceDivine()
{ // [160]雀蓖狼 鼻瓷 : 历林 1, 2, 3, 4拌凯 付过阑 矫傈磊俊霸 登倒覆
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 历林拌凯(1, 2, 3, 4) 付过阑 矫傈磊俊霸 登倒覆
	m_pCaster->dwReturnMagic = m_dwNow + wPeriod;
	// 漂荐 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pCaster->dwSpecialProtect = 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::PerfectProtect()
{	// [157]肯傈茄 搬拌 : 葛电 付过 规绢客 拱府利 傍拜(Tactic捞 40何磐绰 100%)俊 措茄 
	//                    规绢矫傈磊绰 雀汗拌凯, 焊龋拌凯, 焊炼拌凯 付过甸篮 荤侩且 荐 绝澜
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 拱府利 规绢啦 拌魂
	const int nTactics = m_pCaster->Skill[TACTICS_Orison];
	int nBasic = 80 + (nTactics>>1);
	if (nBasic > 100)  nBasic = 100;
	// 拱府利 规绢仿
	m_pTarget->SetPhysicalDefense(m_dwNow + wPeriod, nBasic, nBasic, nBasic);
	m_pTarget->SetMagicalDefense(m_dwNow + wPeriod, nBasic, nBasic, nBasic, nBasic);
	m_pTarget->SetCurseDefense(m_dwNow + wPeriod, 
		CMagicState::CURSE_1|CMagicState::CURSE_2|
		CMagicState::CURSE_3|CMagicState::CURSE_4|
		CMagicState::CURSE_5);
	//  抗寇 焊龋 拌凯 付过篮 老馆捞搁辑 漂荐 焊龋拌凯 付过 惑怕肺 汲沥
	m_pTarget->dwExceptProtect = m_dwNow + wPeriod;
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	m_pTarget->dwSpecialProtect = 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::AuthorityOfAthyas() // 030415 kyo 
{ // [185] 酒箕胶狼 鼻瓷 拱府规绢20, 傍拜付过规绢50, 老馆 拱府,捞悼加档 30%刘啊
	// 饭萍狼 鼻瓷 + 焊龋 + 加档刘啊
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 规绢伏 拌魂
	const int nWis = m_pCaster->GetAbility(WIS) - GetRequireWidom(m_nIndex);
	const int nTactics = m_pCaster->Skill[TACTICS_Orison] - GetRequireTactics(m_nIndex);
	int nBasic = (nWis + nTactics)/10;
	if (nBasic < 0)   nBasic = 0;
	if (nBasic > 10)  nBasic = 10;
	
	//拱府规绢 10 - 20
	const nStrike = nBasic + 10;
	m_pTarget->SetPhysicalDefense(m_dwNow + wPeriod, nStrike, nStrike, nBasic);
	// 历林 1, 2拌凯 付过 规绢
	//m_pTarget->SetCurseDefense(m_dwNow + wPeriod, CMagicState::CURSE_1|CMagicState::CURSE_2);
	// 傍拜 付过 规绢仿 40 - 50% 刘啊
	const int nMagic = 40 + nBasic;
	m_pTarget->SetMagicalDefense(m_dwNow + wPeriod, nMagic, nMagic, nMagic, nMagic);
	// 老馆 焊龋拌凯 付过 惑怕烙阑 汲沥
	m_pTarget->dwNormalProtect = m_dwNow + wPeriod;
	// 捞悼加档 20-30%刘啊
	const int nSpeed = 20 + nBasic;
	m_pTarget->speedUp.SetState(m_dwNow + wPeriod, nSpeed);
	
	// 矫傈磊狼 版氰摹 拌魂
	::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;
}

⌨️ 快捷键说明

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