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

📄 magicstate.cpp

📁 国内著名网络游戏dragon的服务端完整源码 内附完整数据库结构
💻 CPP
📖 第 1 页 / 共 2 页
字号:
int CMagicState::GetAvailRange(BYTE nMagic) const
{
	return Magic_Ref[nMagic].avail_Range;
}

int CMagicState::GetCastReady(BYTE nMagic) const 
{ 
	return Magic_Ref[nMagic].cast_Time*70; 
}

int CMagicState::GetCastContinue(BYTE nMagic) const
{ 
	return Magic_Ref[nMagic].cast_Continue/6;
}

int CMagicState::GetDualStep(BYTE nMagic) const // 030415 kyo
{
	return Magic_Ref[nMagic].nDualStep;
}

void CMagicState::ClearTransMap()
{ // 扁撅等 捞悼 厘家 沥焊 檬扁拳
	m_nTransPort = m_nTransX = m_nTransY = 0;
}

void CMagicState::GetTransMap(int& rPort, int& rX, int& rY) const
{ // 扁撅等 捞悼 厘家 沥焊 备窍扁
	rPort = m_nTransPort;
	rX = m_nTransX;
	rY = m_nTransY;
}

void CMagicState::SetTransMap(int nPort, int nX, int nY)
{ // 扁撅等 捞悼 厘家 沥焊 汲沥
	m_nTransPort = nPort;
	m_nTransX = nX;
	m_nTransY = nY;
}

void CMagicState::ClearCombat(BYTE nSelect)
{	//< CSD-TW-030623
	switch (Magic_Ref[nSelect].Spell_Type)
	{
    case ACTIVE_COMBAT:
		{
			InitActiveCombat();
			ClearActiveState();
			break;
		}
    case PASSIVE_COMBAT:
		{
			InitPassiveCombat();
			ClearPassiveState();
			break;
		}
	case RECOVERY_COMBAT:
		{
			InitRecoveryCombat();
			ClearRecoveryState();
			break;
		}
	}
}	//> CSD-TW-030623

void CMagicState::SetActiveCombat(BYTE nCombat, int nCount)
{ 
	m_nActive = nCombat; 
	m_nCount = nCount;
}

void CMagicState::SetPassiveCombat(BYTE nCombat, DWORD dwPeriod) 
{ 
	m_nPassive = nCombat; 
	dwCombatState = dwPeriod;
}

void CMagicState::SetRecoveryCombat(BYTE nCombat, DWORD dwPeriod) // 030415 kyo
{
	m_nRecovery = nCombat;
	dwCombatRecovery = dwPeriod;
}

void CMagicState::SetPhysicalAttack(DWORD dwTime, BYTE nShort, BYTE nMiddle, BYTE nLong)
{ // 拱府利 傍拜仿 刘啊 汲沥
	if (nShort > 0)   apShort.SetState(dwTime, nShort);   // 窜芭府 拱府利 傍拜仿
	if (nMiddle > 0)  apMiddle.SetState(dwTime, nMiddle); // 吝芭府 拱府利 傍拜仿
	if (nLong > 0)    apLong.SetState(dwTime, nLong);     // 厘芭府 拱府利 傍拜仿
}

void CMagicState::SetPhysicalDefense(DWORD dwTime, BYTE nShort, BYTE nMiddle, BYTE nLong)
{ // 拱府利 规绢仿 刘啊 汲沥   
	if (nShort > 0)   dpShort.SetState(dwTime, nShort);   // 窜芭府 拱府利 规绢仿
	if (nMiddle > 0)  dpMiddle.SetState(dwTime, nMiddle); // 吝芭府 拱府利 规绢仿
	if (nLong > 0)    dpLong.SetState(dwTime, nLong);     // 厘芭府 拱府利 规绢仿
}

void CMagicState::SetMagicalDefense(DWORD dwTime, BYTE nFire, BYTE nIce, BYTE nElect, BYTE nHoly)
{ // 傍拜拌凯 付过俊 措茄 规绢仿 刘啊 汲沥
	if (nFire > 0)   dpFire.SetState(dwTime, nFire);   // 阂拌凯 傍拜付过 规绢仿
	if (nIce > 0)    dpIce.SetState(dwTime, nIce);     // 倔澜拌凯 傍拜付过 规绢仿
	if (nElect > 0)  dpElect.SetState(dwTime, nElect); // 傈拜拌凯 傍拜付过 规绢仿
	if (nHoly > 0)   dpHoly.SetState(dwTime, nHoly);   // 圈府拌凯 傍拜付过 规绢仿
}

void CMagicState::SetCurseDefense(DWORD dwTime, BYTE nSet)
{ // 历林拌凯 付过俊 措茄 规绢 汲沥
	if (nSet&CURSE_1)  dpCurse1.SetState(dwTime, 100);
	if (nSet&CURSE_2)  dpCurse2.SetState(dwTime, 100);
	if (nSet&CURSE_3)  dpCurse3.SetState(dwTime, 100);
	if (nSet&CURSE_4)  dpCurse4.SetState(dwTime, 100);
	if (nSet&CURSE_5)  dpCurse5.SetState(dwTime, 100);
	if (nSet&CURSE_FREEZE)  dpFreeze.SetState(dwTime, 100); // CSD-021216
}

void CMagicState::ClearNpcRun()
{ //
	m_nNature = NAT_NORMAL;
	dwNature[NAT_SPEED_UP] = 0;
	speedUp.Clear();
}

void CMagicState::ClearNpcStatusUp()
{ //
	m_nNature = NAT_NORMAL;
	dwNature[NAT_STATUS_UP] = 0;
	apShort.Clear();  // 拱府利 傍拜 檬扁拳  
	apMiddle.Clear();
	apLong.Clear();
	dpShort.Clear();  // 拱府利 规绢仿 檬扁拳
	dpMiddle.Clear();
	dpLong.Clear();
	amplify.Clear();  // 付过刘气 檬扁拳
	dpFire.Clear();   // 付过 规绢仿 檬扁拳
	dpIce.Clear();
	dpElect.Clear();
	dpHoly.Clear();
	speedUp.Clear();  // 加档刘啊 檬扁拳
}

void CMagicState::ClearNpcRecovery()
{ //
	m_nNature = NAT_NORMAL;
	dwNature[NAT_LIFE_UP] = 0; 
	dwLifeUp = 0;
	m_nLifeUp = 0;
}

void CMagicState::SetNpcRun(DWORD dwTime, int nSpeed)
{ //
	m_nNature = NAT_SPEED_UP;
	dwNature[NAT_SPEED_UP] = dwTime;
	speedUp.SetState(dwTime, nSpeed);
}

void CMagicState::SetNpcStatusUp(DWORD dwTime, int nAttack, int nDefense, int nSpeed)
{ //
	m_nNature = NAT_STATUS_UP;
	dwNature[NAT_STATUS_UP] = dwTime;
	// 拱府利 规绢 棺 傍拜
	SetPhysicalAttack(dwTime, nAttack, nAttack, nAttack);
	SetPhysicalDefense(dwTime, nDefense, nDefense, nDefense);
	// 付过 规绢 棺 傍拜
	amplify.SetState(dwTime, nAttack);
	SetMagicalDefense(dwTime, nDefense, nDefense, nDefense, nDefense);
	// 加档 刘啊
	speedUp.SetState(dwTime, nSpeed);
}

void CMagicState::SetNpcRecovery(DWORD dwTime, int nLife)
{ //
	m_nNature = NAT_LIFE_UP;
	dwNature[NAT_LIFE_UP] = dwTime; 
	dwLifeUp = dwTime;
	m_nLifeUp = nLife;
}

void CMagicState::CorrectShortDamage(int& rDamage, int nPlus, int nMinus) const
{ // 窜芭府 公扁俊 措茄 规绢仿 焊沥
	int nRatio = dpShort.GetRatio();
	
	if (nPlus > 0)
	{
		nRatio += nPlus;
	}
	
	if (nMinus > 0)
	{
		nRatio -= nMinus;
		
	}
	
	rDamage -= rDamage*nRatio/100;
}

void CMagicState::CorrectMiddleDamage(int& rDamage, int nPlus, int nMinus) const
{ // 吝芭府 公扁俊 措茄 规绢仿 焊沥
	int nRatio = dpMiddle.GetRatio();
	
	if (nPlus > 0)
	{
		nRatio += nPlus;
	}
	
	if (nMinus > 0)
	{
		nRatio -= nMinus;
		
	}
	
	rDamage -= rDamage*nRatio/100;
}

void CMagicState::CorrectLongDamage(int& rDamage, int nPlus, int nMinus) const
{ // 厘芭府 公扁俊 措茄 规绢仿 焊沥
	int nRatio = dpLong.GetRatio();
	
	if (nPlus > 0)
	{
		nRatio += nPlus;
	}
	
	if (nMinus > 0)
	{
		nRatio -= nMinus;
		
	}
	
	rDamage -= rDamage*nRatio/100;
}

void CMagicState::CorrectFireDamage(int& rDamage, int nPlus, int nMinus) const
{ // 阂拌凯 付过俊 措茄 规绢仿 焊沥
	int nRatio = dpFire.GetRatio();
	
	if (nPlus > 0)
	{
		nRatio += nPlus;
	}
	
	if (nMinus > 0)
	{
		nRatio -= nMinus;
		
	}
	
	rDamage -= rDamage*nRatio/100;
}

void CMagicState::CorrectIceDamage(int& rDamage, int nPlus, int nMinus) const
{ // 倔澜拌凯 付过俊 措茄 规绢仿 焊沥
	int nRatio = dpIce.GetRatio();
	
	if (nPlus > 0)
	{
		nRatio += nPlus;
	}
	
	if (nMinus > 0)
	{
		nRatio -= nMinus;
		
	}
	
	rDamage -= rDamage*nRatio/100;
}

void CMagicState::CorrectElectDamage(int& rDamage, int nPlus, int nMinus) const
{ // 傈拜拌凯 付过俊 措茄 规绢仿 焊沥
	int nRatio = dpElect.GetRatio();
	
	if (nPlus > 0)
	{
		nRatio += nPlus;
	}
	
	if (nMinus > 0)
	{
		nRatio -= nMinus;
		
	}
	
	rDamage -= rDamage*nRatio/100;
}

void CMagicState::CorrectHolyDamage(int& rDamage, int nPlus, int nMinus) const
{ // 脚仿拌凯 付过俊 措茄 规绢仿 焊沥
	int nRatio = dpHoly.GetRatio();
	
	if (nPlus > 0)
	{
		nRatio += nPlus;
	}
	
	if (nMinus > 0)
	{
		nRatio -= nMinus;
		
	}
	
	rDamage -= rDamage*nRatio/100;
}

void CMagicState::CorrectMovePlus(int& rMove, int nPlus) const
{ //< CSD-020710
	const int nCorrent = rMove;
	
	if (speedUp.GetRatio() > nPlus)
	{
		rMove += speedUp.Convert(nCorrent);
	}
	else
	{
		rMove += (nCorrent*nPlus/100);
	}
} //> CSD-020710

void CMagicState::CorrectMoveMinus(int& rMove, int nMinus) const
{ //< CSD-021024
	const int nCorrent = rMove;
	
	if (speedDown.GetRatio() > nMinus)
	{ // 倔覆 惑怕牢 版快扼搁
		rMove -= speedDown.Convert(nCorrent);
	}
	else
	{
		rMove -= (nCorrent*nMinus/100);
	}
} //> CSD-021024

int CMagicState::GetRecoveryCombatDecHPRate(int nLevel) 
{// 030514 kyo // cp雀汗 傈捧胶懦俊 措茄 HP冻绢瘤绰 %
	if( nLevel <= 0 )
	{
		return 0;
	}
	else if( nLevel == 1 )
	{
		return 5;
	}
	else if( nLevel == 2 )
	{
		return 10;
	}
	else
		return 15;
	return 0;
}

⌨️ 快捷键说明

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