📄 cursingmagic.cpp
字号:
// CursingMagic.cpp: implementation of the CCursingMagic class.
//
//////////////////////////////////////////////////////////////////////
#include "..\stdafx.h"
#include "CursingMagic.h"
#include "..\HigherLayers\Op_Magic.h"
#include "..\HigherLayers\Op_Battle.h"
#include "..\HigherLayers\Op_chr_status.h"
#include "..\HigherLayers\NationSys.h"
///////////////////////////////////////////////////////////////////////////////
// Construction/Destruction
///////////////////////////////////////////////////////////////////////////////
CCursingMagic::CCursingMagic()
{
}
CCursingMagic::~CCursingMagic()
{
}
///////////////////////////////////////////////////////////////////////////////
// Public Method
///////////////////////////////////////////////////////////////////////////////
bool CCursingMagic::Bind()
{
Resist(CONFUSION, &CCursingMagic::Confusion);
Resist(ABSOLUTE_PARALYSIS, &CCursingMagic::AbsoluteParalysis);
Resist(STONELY, &CCursingMagic::Stonely);
Resist(CURSE, &CCursingMagic::Curse);
Resist(AREA_PARALYSIS, &CCursingMagic::AreaParalysis);
Resist(AREA_CONFUSION, &CCursingMagic::AreaConfusion);
Resist(SLOW, &CCursingMagic::Slow);
Resist(SPIDER_WEB, &CCursingMagic::SpiderWeb);
Resist(AREA_SLOW, &CCursingMagic::AreaSlow);
Resist(FEATHER_OF_CURSE, &CCursingMagic::FeatherOfCurse);
Resist(INTOXICATION, &CCursingMagic::Intoxication);
Resist(TOXIC_CLOUD, &CCursingMagic::ToxicCloud);
Resist(VAMPIRE_POISON, &CCursingMagic::VampirePoison);
Resist(CURSE_OF_HELL, &CCursingMagic::CurseOfHell);
Resist(AREA_POISON, &CCursingMagic::AreaPoison);
Resist(LOST_SIGHT, &CCursingMagic::LostSight);
Resist(AUTHORITY_LOST_SIGHT, &CCursingMagic::AuthorityLostSight);
Resist(DISEASE_INDUCE, &CCursingMagic::DiseaseInduce);
Resist(VAMPIRE_TOUCH, &CCursingMagic::VampireTouch);
Resist(LIFE_DRAIN, &CCursingMagic::LifeDrain);
Resist(GAZER, &CCursingMagic::Gazer); // 030509 kyo
return true;
}
bool CCursingMagic::Elapse(CHARLIST* pTarget)
{
const int nState = pTarget->GetState();
switch (nState)
{
case CON_NORMAL:
case CON_DEATH:
{
break;
}
default:
{ // 阿 历林惑怕 八荤
CheckStun(pTarget);
CheckSlow(pTarget);
CheckPoison(pTarget);
CheckBlind(pTarget);
CheckFreeze(pTarget);
// 惑怕函版
if (nState != pTarget->GetState())
{
::SendCharacterCondition(pTarget, 0);
}
// 10檬俊 茄锅究 HP皑家
if (pTarget->GetPoisonedCount() >= 10)
{
const int nPoison = pTarget->GetPoisonedPoint();
const int nLife = pTarget->DecLife(nPoison, 10);
if (nLife != 0)
{
::SendCharacterCondition(pTarget, -nLife);
}
pTarget->SetPoisonedCount(0);
}
break;
}
}
return true;
}
bool CCursingMagic::Confusion()
{ // [11]去鄂 : 惑措规捞 付快胶 努腐茄 镑苞 促弗 镑栏肺 捞悼, 付过 荤侩 阂啊
const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
if (IsReturn(m_pTarget))
{ // 矫傈磊啊 雀蓖狼 鼻瓷 付过 惑怕扼搁
m_pCaster->dwDontCasting = m_dwNow + wPeriod;
// 措惑磊狼 惑怕 汲沥
m_pCaster->ApplyCurse(1, CON_DAZE, 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->dwDontCasting = m_dwNow + wPeriod;
// 措惑磊狼 惑怕 汲沥
m_pTarget->ApplyCurse(1, CON_DAZE, 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::AbsoluteParalysis()
{ // [14]例措付厚 : 付过 荤侩 阂啊, 拱府利 傍拜 阂啊, 困摹 捞悼 阂啊
const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
if (IsReturn(m_pTarget))
{
m_pCaster->dwDontCasting = m_dwNow + wPeriod;
m_pCaster->dwDontAttack = m_dwNow + wPeriod;
m_pCaster->dwDontMove = m_dwNow + wPeriod;
m_pCaster->ApplyCurse(1, CON_STONE, 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->dwDontCasting = m_dwNow + wPeriod;
m_pTarget->dwDontAttack = m_dwNow + wPeriod;
m_pTarget->dwDontMove = m_dwNow + wPeriod;
m_pTarget->ApplyCurse(1, CON_STONE, 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::Stonely()
{ // [13]籍拳 : 个捞 被绢辑 框流老 荐 绝绰 惑怕(拱府利 傍拜捞唱 付过 荤侩捞 阂啊,历林秦力甫 力寇茄 葛电 付过狼 利侩捞 救凳, 绢栋茄 单固瘤档 罐瘤 给窃)
const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
if (IsReturn(m_pTarget))
{
m_pCaster->dwDontCasting = m_dwNow + wPeriod;
m_pCaster->dwDontAttack = m_dwNow + wPeriod;
m_pCaster->dwDontMove = m_dwNow + wPeriod;
m_pCaster->dwBlocking = m_dwNow + wPeriod;
m_pCaster->ApplyCurse(1, CON_STONE, 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->dwDontCasting = m_dwNow + wPeriod;
m_pTarget->dwDontAttack = m_dwNow + wPeriod;
m_pTarget->dwDontMove = m_dwNow + wPeriod;
m_pTarget->dwBlocking = m_dwNow + wPeriod;
m_pTarget->ApplyCurse(1, CON_STONE, 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::Curse()
{ // [172]脚狼 历林 : 付过 荤侩 阂啊
const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
if (IsReturn(m_pTarget))
{
m_pCaster->dwDontCasting = m_dwNow + wPeriod;
m_pCaster->ApplyCurse(1, CON_CURSE, 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->dwDontCasting = m_dwNow + wPeriod;
m_pTarget->ApplyCurse(1, CON_CURSE, 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::AreaParalysis()
{ // [112]瘤开 付厚
const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
m_pTarget->dwDontCasting = m_dwNow + wPeriod;
m_pTarget->dwDontAttack = m_dwNow + wPeriod;
m_pTarget->dwDontMove = m_dwNow + wPeriod;
m_pTarget->ApplyCurse(1, CON_STONE, 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::AreaConfusion()
{ // [114]瘤开 去鄂
const WORD wPeriod = CalcPeriod(); // 蜡瘤矫埃 拌魂
m_pTarget->dwDontCasting = m_dwNow + wPeriod;
// 措惑磊狼 惑怕 汲沥
m_pTarget->ApplyCurse(1, CON_DAZE, 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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -