📄 battlemgr.cpp
字号:
if (pTarget == Hero)
{
SCharacterData.nCharacterHP += nDamage;
if (SCharacterData.nCharacterHP < 0)
{
SCharacterData.nCharacterHP = 0;
}
if (SCharacterData.nCharacterHP > SCharacterData.nCharacterMAXHP)
{
SCharacterData.nCharacterHP = SCharacterData.nCharacterMAXHP;
}
}
if (pPacket->idTarget < 10000)
{
::CharDoAni(pTarget, pTarget->direction, ACTION_ATTACKED);
}
else
{
::CharDoAni(pTarget, pTarget->direction, MON1_ATTACKED);
}
ShowNumber(-nDamage, pTarget);
}
} //> CSD-021019
void CBattleMgr::RecvAttackResult(WORD idCaster, t_attack_result* pPacket)
{ //< CSD-TW-030624
const int nDamage = pPacket->nDamage;
const BYTE nResult = pPacket->nResult;
LPCHARACTER pCaster = ::ReturnCharacterPoint(idCaster);
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pCaster == NULL || pTarget == NULL) return;
const int nReturn = AttackRangeTable[pCaster->sprno][pCaster->accessory[2]][4];
if (nReturn != ACTION_ATTACK_BOW && nReturn != ACTION_THROW)
{
if(pTarget->sprno != 97)// 绵备傍篮 措拜摹甫 焊咯林瘤 臼绰促.
{
::InputHpUpDown(pPacket->idTarget, nDamage, nResult);
}
pCaster->lpAttacked = (nResult) ? (void*)pTarget:NULL; // 001215 KHS 父距 固胶唱搁 嘎篮巴篮 绝促.
}
else
{
pCaster->lpAttacked = (void*)pTarget; // 001215 KHS 父距 固胶唱搁 嘎篮巴篮 绝促.
}
pCaster->nAttackedType = pTarget->type;
pCaster->attacksuccess = (nResult) ? true:false;
pCaster->nActiveCombat = pPacket->nCombat;
::ChangeDirection(&pCaster->direction, pCaster->x, pCaster->y, pTarget->x, pTarget->y);
pCaster->todir = pCaster->direction;
pCaster->nCurrentAction = AttackAction(pCaster);
pCaster->nCurrentFrame = 0;
pCaster->attackanimationON = 10; // 捞荐摹啊 0捞登搁 促矫 傍拜且荐 乐促.
// 捞悼吝牢版快 肛冕促.
if (pCaster->id >= 10000)
{
pCaster->gox = pCaster->x;
pCaster->goy = pCaster->y;
pCaster->position.x = pCaster->x / TILE_SIZE;
pCaster->position.y = pCaster->y / TILE_SIZE;
pCaster->pathcount = pCaster->oldpathcount = 0;
}
pTarget->attacker_ID = idCaster; // SoundUp lkh 眠啊
pTarget->NumberAnimationValue = nDamage;
pTarget->attackedresult = nResult;
pTarget->toflag = (pPacket->nX || pPacket->nY);
if (pTarget->sprno == 96)
{
if (rand()%200 == 0)
{
AddCurrentStatusMessage(255,255,255, lan->OutputMessage(5,100));
}
}
if (pTarget == Hero)
{
if (pCaster && pCaster->name[0])
{
AddCurrentStatusMessage(255,0,0, lan->OutputMessage(5,98), pCaster->name);
}
else
{
AddCurrentStatusMessage(255,0,0, lan->OutputMessage(5,99));
}
// 抛捞怪等 NPC啊 郴啊 傍拜 寸窍搁 傍拜窍档废 窃
SendTameCommand(pTarget, pCaster);
}
else if (nReturn != ACTION_ATTACK_BOW && nReturn != ACTION_THROW)
{
::CheckNPCPk(pCaster->id, pTarget->id);
}
switch (nResult)
{
case HIT_AND_DEAD:
{
::SkillSettingClear();
if (pTarget->willdie <= 0)
{
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 == true)
{
pTarget->tox = pPacket->nX;
pTarget->toy = pPacket->nY;
SendModifyPosition(pTarget); // CSD-021107
// 剐府搁 促矫 付快胶 困摹蔼阑 罐阑荐 乐霸 茄促.
Moveoldx = 0;
Moveoldy = 0;
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-030624
void CBattleMgr::RecvAttackResult(t_attack_result_d* pPacket)
{ //< CSD-TW-030606
const int nDamage = pPacket->nDamage;
const BYTE nResult = pPacket->nResult;
LPCHARACTER pCaster = ::ReturnCharacterPoint(pPacket->idCaster);
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pCaster == NULL || pTarget == NULL) return; // CSD-031127
const int nReturn = AttackRangeTable[pCaster->sprno][pCaster->accessory[2]][4];
if (nReturn != ACTION_ATTACK_BOW && nReturn != ACTION_THROW)
{
if(pTarget->sprno != 97)// 绵备傍篮 措拜摹甫 焊咯林瘤 臼绰促.
{
::InputHpUpDown(pPacket->idTarget, nDamage, nResult);
}
pCaster->lpAttacked = (nResult) ? (void*)pTarget:NULL;
}
else
{
pCaster->lpAttacked = (void*)pTarget; // 001215 KHS 父距 固胶唱搁 嘎篮巴篮 绝促.
}
pCaster->nAttackedType = pTarget->type;
pCaster->attacksuccess = (nResult) ? true:false;
pCaster->nActiveCombat = pPacket->nCombat; // CSD-TW-030606
::ChangeDirection(&pCaster->direction, pCaster->x, pCaster->y, pTarget->x, pTarget->y);
pCaster->todir = pCaster->direction;
pCaster->nCurrentAction = ::AttackAction(pCaster);
pCaster->nCurrentFrame = 0;
pCaster->attackanimationON = 10; // 捞荐摹啊 0捞登搁 促矫 傍拜且荐 乐促.
CStrikeSys* pStrike = (CStrikeSys*)GetBattle(0);
pStrike->EffectHit(pCaster, pTarget);
if (pCaster->id >= 10000)
{
pCaster->gox = pCaster->x;
pCaster->goy = pCaster->y;
pCaster->position.x = pCaster->x / TILE_SIZE;
pCaster->position.y = pCaster->y / TILE_SIZE;
pCaster->pathcount = pCaster->oldpathcount = 0;
}
pTarget->attacker_ID = pPacket->idCaster;
pTarget->NumberAnimationValue = nDamage;
pTarget->attackedresult = nResult;
pTarget->toflag = (pPacket->nX || pPacket->nY);
if (pTarget == Hero)
{
if (pCaster->name[0])
{
::AddCurrentStatusMessage(255,0,0, lan->OutputMessage(5,98), pCaster->name);
}
else
{
::AddCurrentStatusMessage(255,0,0, lan->OutputMessage(5,99));
}
// 抛捞怪等 NPC啊 郴啊 傍拜 寸窍搁 傍拜窍档废 窃
SendTameCommand(pTarget, pCaster);
}
else if (nReturn != ACTION_ATTACK_BOW && nReturn != ACTION_THROW)
{
::CheckNPCPk(pCaster->id, pTarget->id);
}
if (pTarget->sprno == 96)
{
if (rand()%200 == 0)
{
::AddCurrentStatusMessage(255,255,255, lan->OutputMessage(5,100));
}
}
switch (nResult)
{
case HIT_AND_DEAD:
{
::SkillSettingClear();
if (pTarget->willdie <= 0)
{
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 == true) // 某腐捞 傍拜寸秦 剐府绰 楷免 困茄 可悸 谅钎 悸泼
{
pTarget->tox = pPacket->nX;
pTarget->toy = pPacket->nY;
SendModifyPosition(pTarget); // CSD-021107
// 剐府搁 促矫 付快胶 困摹蔼阑 罐阑荐 乐霸 茄促.
Moveoldx = 0;
Moveoldy = 0;
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::RecvThrowAttack(t_server_throw_attack* pPacket)
{ //< CSD-TW-030606
LPCHARACTER pCaster = ::ReturnCharacterPoint(pPacket->idCaster);
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pCaster == NULL || pTarget == NULL) return;
const int nNo = ::GetCharAccessory(pCaster); // CSD-030723
const int nReturn = AttackRangeTable[pCaster->sprno][nNo][4];
const int nX = pPacket->nX;
const int nY = pPacket->nY;
const int nCombat = pPacket->nCombat;
switch (nReturn)
{
case ACTION_THROW:
case ACTION_ATTACK_BOW:
{
::ChangeDirection(&pCaster->direction, pCaster->x, pCaster->y, pTarget->x, pTarget->y);
pCaster->todir = pCaster->direction;
pCaster->lpAttacked = pTarget;
pCaster->nAttackedType = pTarget->type;
pCaster->nCurrentAction = ::AttackAction(pCaster);
pCaster->nCurrentFrame = 0;
pCaster->nActiveCombat = nCombat;
break;
}
default:
{
return;
}
}
switch (nCombat)
{
case FLEET_MISSILE:
case MULTIPLE_FIRE:
case FIRE_EXTREME:
case ICING_BLAST:
case ICE_EXTREME:
{
pCaster->bShoot = false;
pCaster->attackanimationON = 15;
break;
}
case CONVERTING_ARMOR:
{
pCaster->bShoot = false;
pCaster->attackanimationON = 10;
break;
}
case SHARK_MISSILE:
{
pCaster->bShoot = false;
switch (pCaster->nActiveLevel)
{
case 1: pCaster->attackanimationON = 10; break;
case 2: pCaster->attackanimationON = 8; break;
case 3: pCaster->attackanimationON = 6; break;
default: pCaster->attackanimationON = 12; break;
}
break;
}
default:
{
pCaster->bShoot = true;
pCaster->attackanimationON = 10;
break;
}
}
// 捞悼吝牢版快 肛冕促.
if (pCaster->id >= 10000)
{
pCaster->gox = pCaster->x;
pCaster->goy = pCaster->y;
pCaster->position.x = (pCaster->x>>CELL);
pCaster->position.y = (pCaster->y>>CELL);
pCaster->pathcount = pCaster->oldpathcount = 0;
}
pTarget->attacker_ID = pPacket->idCaster;
pTarget->toflag = (nX || nY); // 漂沥 剐府绰 谅钎啊 逞绢柯 版快父 剐府霸 贸府
} //> CSD-TW-030606
void CBattleMgr::RecvThrowResult(WORD idCaster, t_server_throw_result* pPacket)
{ //< CSD-TW-030624
const int nDamage = pPacket->nDamage;
const BYTE nResult = pPacket->nResult;
LPCHARACTER pCaster = ::ReturnCharacterPoint(idCaster);
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pCaster == NULL || pTarget == NULL) return;
pCaster->attacksuccess = (nResult) ? true:false;
pCaster->nActiveCombat = pPacket->nCombat;
pTarget->attacker_ID = idCaster; // SoundUp lkh 眠啊
pTarget->NumberAnimationValue = nDamage;
pTarget->attackedresult = nResult;
pTarget->toflag = (pPacket->nX || pPacket->nY);
if(pTarget->sprno != 97)// 绵备傍篮 措拜摹甫 焊咯林瘤 臼绰促.
{
::InputHpUpDown(pPacket->idTarget, nDamage, nResult);
}
if (pTarget->sprno == 96)
{
if (rand()%200 == 0)
{
::AddCurrentStatusMessage(255,255,255, lan->OutputMessage(5,100));
}
}
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);
break;
}
} //> CSD-030723
}
// 抛捞怪等 NPC啊 郴啊 傍拜 寸窍搁 傍拜窍档废 窃
SendTameCommand(pTarget, pCaster);
}
else
{
::CheckNPCPk(pCaster->id, pTarget->id);
}
switch (nResult)
{
case HIT_AND_DEAD:
{
::SkillSettingClear();
if (pTarget->willdie <= 0)
{
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-030624
void CBattleMgr::RecvThrowResult(t_throw_result_d* pPacket)
{ //< CSD-TW-030606
const int nDamage = pPacket->nDamage;
const BYTE nResult = pPacket->nResult;
LPCHARACTER pCaster = ::ReturnCharacterPoint(pPacket->idCaster);
LPCHARACTER pTarget = ::ReturnCharacterPoint(pPacket->idTarget);
if (pCaster == NULL || pTarget == NULL) return;
pCaster->attacksuccess = (nResult) ? true:false;
pCaster->nActiveCombat = pPacket->nCombat;
if (pTarget->sprno != 97) // 绵备傍篮 鸥拜摹甫 焊咯林瘤 臼绰促.
{
::InputHpUpDown(pPacket->idTarget, nDamage, nResult);
}
if (pTarget->sprno == 96)
{
if (rand()%200 == 0)
{
::AddCurrentStatusMessage(255,255,255, lan->OutputMessage(5,100));
}
}
pTarget->attacker_ID = pPacket->idCaster;
pTarget->NumberAnimationValue = nDamage;
pTarget->attackedresult = nResult;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -