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

📄 assistancemagic.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
字号:
// AssistanceMagic.cpp: implementation of the CAssistanceMagic class.
//
//////////////////////////////////////////////////////////////////////

#include "..\stdafx.h"
#include "AssistanceMagic.h"

#include "..\HigherLayers\OP_Magic.h"
#include "..\HigherLayers\WeatherControl.h"

extern CHARLIST* CheckServerName( const char* szName );// kyo 
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CAssistanceMagic::CAssistanceMagic()
{
	
}

CAssistanceMagic::~CAssistanceMagic()
{
	
}

///////////////////////////////////////////////////////////////////////////////
// Public Method
///////////////////////////////////////////////////////////////////////////////

bool CAssistanceMagic::Bind()
{
	Resist(SPEED_UP, &CAssistanceMagic::SpeedUp);
	Resist(ENCHANT_WEAPON, &CAssistanceMagic::EnchantWeapon);
	Resist(PRAY_POWER, &CAssistanceMagic::PrayPower);
	Resist(GREAT_PRAY, &CAssistanceMagic::GreatPray);
	Resist(MINOR_AMPLIFY, &CAssistanceMagic::MinorAmplify);
	Resist(MAGIC_AMPLIFY, &CAssistanceMagic::MagicAmplify);
	Resist(TRANSPARENCY, &CAssistanceMagic::Transparency);
	Resist(LIGHT, &CAssistanceMagic::Light);
	Resist(AUTHORITY_LUCK, &CAssistanceMagic::AuthorityLuck);
	return true;
}

bool CAssistanceMagic::SpeedUp()
{	// [83]加档刘啊 : 捞悼加档甫 20 ~ 50% 刘啊
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 刘啊伏 拌魂
	const int nInt = m_pCaster->GetAbility(INT_);
	const int nTactics = m_pCaster->Skill[TACTICS_Magery];
	int nBasic = (nInt + nTactics)/20;
	if (nBasic < 0)   nBasic = 0;
	if (nBasic > 30)  nBasic = 30;
	// 捞悼加档 20 ~ 50% 刘啊
	m_pTarget->speedUp.SetState(m_dwNow + wPeriod, nBasic + 20);
	// 矫傈磊狼 版氰摹 拌魂
	::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 CAssistanceMagic::EnchantWeapon()
{	// [21]牢镁飘傀迄 : 拱府利 傍拜 单固瘤阑 50% 刘啊
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 拱府利 傍拜仿 50% 刘啊
	m_pTarget->SetPhysicalAttack(m_dwNow + wPeriod, 50, 50, 50);
	// 矫傈磊狼 版氰摹 拌魂
	::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 CAssistanceMagic::PrayPower()
{	// [161]扁档狼 开荤 : 拱府利 傍拜 单固瘤甫 50% 刘啊
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 拱府利 傍拜仿 50% 刘啊
	m_pTarget->SetPhysicalAttack(m_dwNow + wPeriod, 50, 50, 50);
	// 矫傈磊狼 版氰摹 拌魂
	::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 CAssistanceMagic::GreatPray()
{	// [166]困措茄 扁档
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 拱府利 傍拜仿 50% 刘啊
	m_pTarget->SetPhysicalAttack(m_dwNow + wPeriod, 50, 50, 50);
	// 矫傈磊狼 版氰摹 拌魂
	::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 CAssistanceMagic::MinorAmplify()
{	// [25]家刘气 : 傍拜 付过狼 单固瘤甫 20% 刘啊
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 傍拜 付过狼 单固瘤甫 20% 刘啊
	m_pTarget->amplify.SetState(m_dwNow + wPeriod, 20);
	// 矫傈磊狼 版氰摹 拌魂
	::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 CAssistanceMagic::MagicAmplify()
{	// [26]付过刘气 : 傍拜 付过狼 单固瘤甫 50% 刘啊
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	// 傍拜 付过狼 单固瘤甫 50% 刘啊
	m_pTarget->amplify.SetState(m_dwNow + wPeriod, 50);
	// 矫傈磊狼 版氰摹 拌魂
	::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 CAssistanceMagic::Transparency()
{	// [22]捧疙林巩 : 磊脚狼 个阑 捧疙窍霸 父甸绢 淋
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	m_pTarget->dwTransparency = m_dwNow + wPeriod; 
	// 捧疙眉 免仿阑 困茄 VIEWTYPE 汲沥(transparency)
	m_pTarget->viewtype = VIEWTYPE_TRANSPARENCY_;
	::SendViewType(m_pTarget, VIEWTYPE_TRANSPARENCY_, m_pTarget->dwTransparency);
	// 矫傈磊狼 版氰摹 拌魂
	::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_FAILED;
	m_packet.u.magic.server_magic_result_t.wDuration = wPeriod;
	SendMagicResult();
	return true;
}

bool CAssistanceMagic::Light()
{	// [46]蝴 : 林困甫 券窍霸 秦淋(广俊 矫具啊 绢滴况瘤绰 巴阑 困秦)
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	m_pTarget->dwLight = m_dwNow + wPeriod;
	// 林困甫 券窍霸 窃
	WeatherControl.SetChLight(m_pCaster, nMaximumLight, wPeriod);
	
	for (int i = 0; i < MAX_PARTY_MEMBER; ++i)
	{
		if (m_pCaster->party[i].On)
		{ 
			//CHARLIST *Target = CheckServerId( m_pCaster->party[i].Server_id );
			CHARLIST *Target = CheckServerName( &(m_pCaster->party[i].Name[0]) );
			if(!Target){continue;}
			WeatherControl.SetChLight(Target,nMaximumLight/2,5*60);
		}
	}
	// 矫傈磊狼 版氰摹 拌魂
	::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 CAssistanceMagic::AuthorityLuck()
{	// [175]例措 青款狼 鼻瓷 : 葛电 拱府利 傍拜苞 付过捞 己傍
	const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
	m_pTarget->dwDontMiss = 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;
}

⌨️ 快捷键说明

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