📄 battlemgr.cpp
字号:
pTarget->toflag = (pPacket->nX || pPacket->nY); // 漂沥 剐府绰 谅钎啊 逞绢柯 版快父 剐府霸 贸府
if (pTarget == Hero)
{
if (pCaster->name[0])
{
switch (pCaster->accessory[2])
{ //< CSD-030723
case 120:
{
::AddCurrentStatusMessage(255, 255, 255, lan->OutputMessage(0, 11), pCaster->name);
break;
}
case 127:
{
::AddCurrentStatusMessage(255, 255, 255, lan->OutputMessage(0, 12), pCaster->name);
break;
}
case 128:
{
::AddCurrentStatusMessage(255, 255, 255, lan->OutputMessage(0, 13), pCaster->name);
break;
}
default:
{
::AddCurrentStatusMessage(255, 0, 0, lan->OutputMessage(5, 98), pCaster->name);
// 抛捞怪等 NPC啊 郴啊 傍拜 寸窍搁 傍拜窍档废 窃
SendTameCommand(pTarget, pCaster);
break;
}
} //> CSD-030723
}
// 带柳 巴捞 传耽捞啊 酒聪扼搁 抛捞怪等 NPC啊 郴啊 傍拜 寸窍搁 傍拜窍档废 窃
if (pCaster->accessory[2] != 120) SendTameCommand(pTarget, pCaster);
}
else
{
::CheckNPCPk(pCaster->id, pTarget->id);
}
switch (nResult)
{
case HIT_AND_DEAD:
{
::SkillSettingClear();
if (pTarget->willdie <= 0)
{ // 捞 荐摹啊 促款登促啊 1捞 登搁 磷绰促.
pTarget->willdie = 7;
}
if (pTarget == Hero)
{
if (pCaster->id > 10000)
{
pTarget->feeltype = FT_BAD_;
pTarget->feeldelay = 50;
}
}
break;
}
case HIT_AND_NOTDEAD:
{
if (pTarget->toflag)
{
pTarget->tox = pPacket->nX;
pTarget->toy = pPacket->nY;
SendModifyPosition(pTarget); // CSD-021107
// 剐府搁 促矫 付快胶 困摹蔼阑 罐阑荐 乐霸 茄促.
Moveoldx = Moveoldy = Movetime = 0;
}
pTarget->attacked++;
if (nDamage < 0)
{
ShowAnimation(ANI_STROKE, pTarget);
}
ShowEffectItem(pPacket->wdEffect, pCaster, pTarget); // CSD-031001
break;
}
case HIT_FAILED:
{
ShowAnimation(ANI_STONE, pTarget);
break;
}
}
} //> CSD-TW-030606
void CBattleMgr::RecvEffectResult(t_server_effect_result* pPacket)
{ //< CSD-031007
int nLife = pPacket->nDamage;
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pTarget == NULL) return;
switch (pPacket->nResult)
{
case HIT_AND_ALIVE:
{
if (pTarget->hp <= 0 || pTarget->condition == CON_DEATH)
{ // 磷绢乐绰 版快
return;
}
if (nLife <= 0)
{ // 磷绢乐绰 版快
return;
}
++pTarget->attacked;
if (pTarget == Hero) // 付过狼 措惑捞 官肺 唱牢 版快
{
SCharacterData.nCharacterHP = nLife;
if (SCharacterData.nCharacterHP <= 0)
{
SCharacterData.nCharacterHP = 1; //辑滚俊辑绰
}
if (SCharacterData.nCharacterHP > SCharacterData.nCharacterMAXHP)
{
SCharacterData.nCharacterHP = SCharacterData.nCharacterMAXHP;
}
}
SetViewType(pTarget);
pTarget->hp = nLife;
break;
}
case HIT_AND_NOTDEAD:
{
if (pTarget->hp <= 0 || pTarget->condition == CON_DEATH)
{ // 磷绢乐绰 版快
return;
}
++pTarget->attacked;
if (pTarget == Hero) // 付过狼 措惑捞 官肺 唱牢 版快
{
SCharacterData.nCharacterHP += nLife;
if (SCharacterData.nCharacterHP <= 0)
{
SCharacterData.nCharacterHP = 1; //辑滚俊辑绰
}
if (SCharacterData.nCharacterHP > SCharacterData.nCharacterMAXHP)
{
SCharacterData.nCharacterHP = SCharacterData.nCharacterMAXHP;
}
}
SetViewType(pTarget);
pTarget->hp += nLife;
if (pTarget->hp <= 0) pTarget->hp = 1;
if (pTarget->hp > pTarget->hpmax) pTarget->hp = pTarget->hpmax;
if (nLife < 0) ShowAnimation(ANI_STROKE, pTarget);
break;
}
case HIT_AND_DEAD:
{
pTarget->changeActionFlag = 0;
ShowAnimation(ANI_DEATH, pTarget);
pTarget->pathcount = 0; // 框流捞瘤 臼霸
pTarget->moveFlag = 0; // 磷绢倒酒促聪瘤 给窍霸
if (pTarget == Hero)
{ // 磷绰 某腐磐啊 磊脚牢 版快
SCharacterData.nCharacterHP = 0;
SCharacterData.nCharacterMP = 0;
SCharacterData.condition = CON_DEATH;
}
pTarget->hp = 0;
pTarget->mp = 0;
pTarget->condition = CON_DEATH;
pTarget->viewtype = VIEWTYPE_NORMAL_;
break;
}
}
ShowNumber(nLife, pTarget);
} //> CSD-031007
void CBattleMgr::RecvNpcMagic(t_server_npc_magic* pPacket)
{
LPCHARACTER pCaster = ::ReturnCharacterPoint(pPacket->idCaster);
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pCaster != NULL && pTarget != NULL)
{
//< CSD-021021
::ChangeDirection(&pCaster->direction, pCaster->x, pCaster->y, pTarget->x, pTarget->y);
pCaster->todir = pCaster->direction;
//> CSD-021021
const int nMagic = pPacket->nMagic;
pCaster->excute_MagicNum = nMagic;
pCaster->ready_Magic = 2;
CMagicSys* pMagic = (CMagicSys*)GetBattle(1);
pMagic->Apply(pCaster, pTarget, nMagic,
pPacket->nX, pPacket->nY, pPacket->bFailed);
}
}
void CBattleMgr::RecvMagicSelect(t_server_magic_select* pPacket)
{ //< CSD-TW-030606
LPCHARACTER pCaster = ::ReturnCharacterPoint(pPacket->idCaster);
if (pCaster == NULL)
{
return;
}
// 傈捧胶懦 急琶 秒家
pCaster->nActiveCombat = 0;
pCaster->nPassiveCombat = 0;
pCaster->nActiveLevel = 0;
pCaster->nPassiveLevel = 0;
pCaster->ready_Magic = 0;
pCaster->excute_MagicNum = 0;
pCaster->end_Casting = 0;
if (pCaster == Hero)
{
iCSPCMax = iCSPCNow = 0;
::SetSCDMainAndOtherClear(0);
SendMagicCasting(pPacket->nMagic);
}
} //> CSD-TW-030606
void CBattleMgr::RecvMagicCasting(t_server_magic_casting* pPacket)
{ //< CSD-TW-030606
LPCHARACTER pCaster = ::ReturnCharacterPoint(pPacket->idCaster);
if (pCaster != NULL)
{
WORD wReady = pPacket->wReady;
if (pCaster->condition&CON_FROZEN)
{
wReady *= 2;
}
CMagicSys* pMagic = (CMagicSys*)GetBattle(1);
pMagic->Ready(pCaster, pPacket->nMagic, wReady);
connections.receive = 1;
}
} //> CSD-TW-030606
void CBattleMgr::RecvMagicExecute(t_server_magic_execute* pPacket)
{ //< CSD-030930
LPCHARACTER pCaster = ::ReturnCharacterPoint(pPacket->idCaster);
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pCaster == NULL || pTarget == NULL) return;
LPCHARACTER pTemp = Hero;
while (pTemp = pTemp->lpNext)
{
pTemp->bCrash = false;
}
const int nMagic = pPacket->nMagic;
const bool bFail = pPacket->bFailed;
pCaster->excute_MagicNum = nMagic;
pCaster->ready_Magic = 2;
CMagicSys* pMagic = (CMagicSys*)GetBattle(1);
pMagic->Apply(pCaster, pTarget, nMagic, pPacket->nX, pPacket->nY, bFail);
} //> CSD-CSD-030930
void CBattleMgr::RecvMagicResult(t_server_magic_result* pPacket)
{ //< CSD-TW-030627 : 林肺 老矫利牢 瓤苞父阑 唱鸥郴绰 版快狼 搬苞蔼
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pTarget == NULL) return;
switch (pPacket->nResult)
{
case HIT_SUMMONING:
case HIT_AND_NOTDEAD:
{
++pTarget->attacked;
::ConditionSet(pTarget, pPacket->nState); // 惑怕 汲沥
if (pTarget == Hero) // 付过狼 措惑捞 官肺 唱牢 版快
{
SCharacterData.condition = pTarget->condition;
}
SetViewType(pTarget);
break;
}
case HIT_AND_DEAD:
{
pTarget->changeActionFlag = 0;
ShowAnimation(ANI_DEATH, pTarget);
pTarget->pathcount = 0; // 框流捞瘤 臼霸
pTarget->moveFlag = 0; // 磷绢倒酒促聪瘤 给窍霸
if (pTarget == Hero)
{ // 磷绰 某腐磐啊 磊脚牢 版快
SCharacterData.nCharacterHP = 0;
SCharacterData.nCharacterMP = 0;
SCharacterData.condition = CON_DEATH;
}
pTarget->hp = 0;
pTarget->mp = 0;
pTarget->condition = CON_DEATH;
pTarget->viewtype = VIEWTYPE_NORMAL_;
break;
}
}
} //> CSD-TW-030627
void CBattleMgr::RecvMagicResultT(t_server_magic_result_t* pPacket)
{ //< CSD-TW-030606 : Life客 Mana狼 函拳客 包拌绝绰 瘤加利牢 付过牢 版快
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pTarget == NULL) return;
switch (pPacket->nResult)
{
case HIT_AND_NOTDEAD:
{
++pTarget->attacked;
::ConditionSet(pTarget, pPacket->nState);
if (pTarget == Hero) // 付过狼 措惑捞 官肺 唱牢 版快
{
SCharacterData.condition = pTarget->condition;
}
switch (pPacket->nMagic)
{
case GREAT_SHIELD:
{
DWORD dwPeriod = g_ClientTime + pPacket->wDuration*1000;
::InsertMagic(pTarget, pTarget, 354, 0, 0, 0, pTarget->x, pTarget->y, false, 0, false, dwPeriod);
break;
}
case GREAT_PRAY:
{
DWORD dwPeriod = g_ClientTime + pPacket->wDuration*1000;
::InsertMagic(pTarget, pTarget, 353, 0, 0, 0, pTarget->x, pTarget->y, false, 0, false, dwPeriod);
break;
}
default:
{
MAGICLIST* pMagic = ::FindList(g_lpML, pPacket->nMagic, pPacket->idTarget);
if (pMagic != NULL)
{ // 剐府技牧靛肺 函券
pMagic->magic_Runtime = g_ClientTime + pPacket->wDuration*1000;
}
break;
}
}
SetViewType(pTarget);
break;
}
}
} //> CSD-TW-030606
void CBattleMgr::RecvMagicResultH(t_server_magic_result_h* pPacket)
{ //< CSD-TW-030606
int nLife = pPacket->nLife;
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pTarget == NULL) return;
switch (pPacket->nResult)
{
case HIT_AND_ALIVE:
{
if (pTarget->hp <= 0 || pTarget->condition == CON_DEATH)
{ // 磷绢乐绰 版快
return;
}
if (nLife <= 0)
{ // 磷绢乐绰 版快
return;
}
++pTarget->attacked;
::ConditionSet(pTarget, pPacket->nState); // 惑怕甫 犁汲沥
if (pTarget == Hero) // 付过狼 措惑捞 官肺 唱牢 版快
{
SCharacterData.condition = pTarget->condition;
SCharacterData.nCharacterHP = nLife;
if (SCharacterData.nCharacterHP <= 0)
{
SCharacterData.nCharacterHP = 1; //辑滚俊辑绰
}
if (SCharacterData.nCharacterHP > SCharacterData.nCharacterMAXHP)
{
SCharacterData.nCharacterHP = SCharacterData.nCharacterMAXHP;
}
}
SetViewType(pTarget);
pTarget->hp = nLife;
break;
}
case HIT_AND_NOTDEAD:
{
if (pTarget->hp <= 0 || pTarget->condition == CON_DEATH)
{ // 磷绢乐绰 版快
return;
}
++pTarget->attacked;
::ConditionSet(pTarget, pPacket->nState); // 惑怕甫 犁汲沥
if (pTarget == Hero) // 付过狼 措惑捞 官肺 唱牢 版快
{
SCharacterData.condition = pTarget->condition;
SCharacterData.nCharacterHP += nLife;
if (SCharacterData.nCharacterHP <= 0)
{
SCharacterData.nCharacterHP = 1; //辑滚俊辑绰
}
if (SCharacterData.nCharacterHP > SCharacterData.nCharacterMAXHP)
{
SCharacterData.nCharacterHP = SCharacterData.nCharacterMAXHP;
}
}
SetViewType(pTarget);
pTarget->hp += nLife;
if (pTarget->hp <= 0) pTarget->hp = 1;
if (pTarget->hp > pTarget->hpmax) pTarget->hp = pTarget->hpmax;
if (nLife < 0) ShowAnimation(ANI_STROKE, pTarget);
break;
}
case HIT_AND_DEAD:
{
pTarget->changeActionFlag = 0;
ShowAnimation(ANI_DEATH, pTarget);
pTarget->pathcount = 0; // 框流捞瘤 臼霸
pTarget->moveFlag = 0; // 磷绢倒酒促聪瘤 给窍霸
if (pTarget == Hero)
{ // 磷绰 某腐磐啊 磊脚牢 版快
SCharacterData.nCharacterHP = 0;
SCharacterData.nCharacterMP = 0;
SCharacterData.condition = CON_DEATH;
}
pTarget->hp = 0;
pTarget->mp = 0;
pTarget->condition = CON_DEATH;
pTarget->viewtype = VIEWTYPE_NORMAL_;
break;
}
}
ShowNumber(nLife, pTarget);
} //> CSD-TW-030606
void CBattleMgr::RecvMagicResultM(t_server_magic_result_m* pPacket)
{ //< CSD-TW-030606
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pTarget == NULL) return;
switch (pPacket->nResult)
{
case HIT_AND_DEAD:
{
pTarget->changeActionFlag = 0;
ShowAnimation(ANI_DEATH, pTarget);
pTarget->pathcount= 0; // 框流捞瘤 臼霸
pTarget->moveFlag = 0; // 磷绢倒酒促聪瘤 给窍霸
pTarget->hp = 0;
pTarget->mp = 0;
pTarget->condition = CON_DEATH;
pTarget->viewtype = VIEWTYPE_NORMAL_;
// 掘绢嘎酒 磷绰 仇捞 官肺 唱牢 版快
if (pTarget == Hero)
{
SCharacterData.nCharacterHP = 0;
SCharacterData.nCharacterMP = 0;
SCharacterData.condition = CON_DEATH;
}
break;
}
case HIT_AND_NOTDEAD:
{
if( pTarget->hp <= 0 || pTarget->condition == CON_DEATH)
{ // 磷绢乐绰 版快扼搁
break;
}
++pTarget->attacked;
::ConditionSet(pTarget, pPacket->nState); // 惑怕甫 犁汲沥
if (pTarget == Hero) // 付过狼 措惑捞 官肺 唱牢 版快
{
SCharacterData.condition = pTarget->condition;
SCharacterData.nCharacterHP += pPacket->nLife;
SCharacterData.nCharacterMP += pPacket->nMana;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -