📄 npc.cpp
字号:
//
// - 辨靛 惑隆拱牢 版快 (傍拜<->规绢)肺 函版 矫糯
////////////////////////////////////////////////////////////////////////////////////////
void NPC::MakeNewMonster()
{
g_pMap->m_MapNPC[m_nMapLayer]->Delete( m_dwHandle ); // 秦寸 阁胶磐 沥焊甫 昏力 矫糯
Clear_NPC();
m_dwHandle = g_pMap->CreateTempHandle(); // NPC Handle阑 备窃
//
// 辨靛 惑隆拱牢 版快
//
#ifdef DEF_AZIT
switch( m_dwDBSEQ )
{
// 傍拜螟 惑隆拱
case 335 : m_dwDBSEQ = 336; break;
// 规绢螟 惑隆拱
case 336 : m_dwDBSEQ = 335; break;
}
#endif
SetBaseNPC( m_dwDBSEQ ); // NPC 扁夯单捞鸥 涝仿
// --------------------------------------------------------------------------------
// 扁檬 单捞鸥 檬扁拳 累诀
// --------------------------------------------------------------------------------
m_bChangeTick = false;
m_nStepNow = 0;
m_pTarget = NULL;
m_nCurseDownHP = 0;
// --------------------------------------------------------------------------------
// NPC 惑怕 函版
// --------------------------------------------------------------------------------
m_nStrategy = m_nBaseStrategy;
m_nStatusLevel = STATLVL_NORMAL;
ChangeStatus(STATUS_STAY) ;
switch( m_nClassType )
{
// 蜡聪农 阁胶磐 积己
case MONSTER_UNIQUE :
{
MakeUniqueMonster();
return;
}
break;
// 粮 焊胶 阁胶磐
case MONSTER_ZONEBOSS :
{
MakeZoneBossMonster();
return;
}
break;
}
// --------------------------------------------------------------------------------
// 犬伏俊 蝶扼 积己 登绰 阁胶磐啊 撇妨咙
//
// - 阁胶磐 Level 20捞惑 何磐 概流/饭绢
// --------------------------------------------------------------------------------
if( m_nLevel < 20 )
{
MakeNormalMonster();
}
else
{
int nTempRand ;
#ifdef DEF_TESTITEMDROP
int iRand = 199 ;
if(_Module.IsEvent(DEF_GMCMD_RAREMONSTERSPAWN))
{
nTempRand = rand()%31;
iRand = 30 ;
}
else
{
nTempRand = rand()%200;
}
if( nTempRand < iRand ) // 老馆 阁胶磐 积己
#else
if(_Module.IsEvent(DEF_GMCMD_RAREMONSTERSPAWN))
nTempRand = rand()%201;
else
nTempRand = rand()%200;
if( nTempRand < 199 ) // 老馆 阁胶磐 积己
#endif
{
MakeNormalMonster();
}
else // 饭绢 阁胶磐 积己
{
#ifdef DEF_MUTATION
if( ( rand()%2 ) == 0 )
{
MakeRareMonster(); // 饭绢 阁胶磐
}
else
{
MakeMuationMonster(); // 倒楷 函捞 阁胶磐
}
#else
MakeRareMonster();
#endif
}
}
}
////////////////////////////////////////////////////////////////////////////////////////
// NPC 沥焊甫 檬扁拳 矫糯
//
// - UNIQUE MONSTER贸府俊 措茄 眠饶 风凭 荐沥 累诀
// - AZITSYMBOL 风凭眠啊 2005.02.12 Duke Kim
////////////////////////////////////////////////////////////////////////////////////////
bool NPC::SetBaseNPC( WORD pDBSEQ, bool pFirst )
{
// --------------------------------------------------------------------------------
// 阁胶磐狼 扁夯 沥焊甫 涝仿矫糯
// --------------------------------------------------------------------------------
_BASE_NPC_ *pBaseNPC = (_BASE_NPC_ *)g_Base.m_BaseNPC.Find( pDBSEQ );
if( !pBaseNPC ) return false;
//
// 阁胶磐狼 VISAUL沥焊甫 涝仿矫糯
//
memset( m_pNPCList, 0x00, sizeof(_ZP_NPCLIST_REP ));
m_pNPCList->wIndex = pDBSEQ; // DB Index
m_dwQuestNewBaseID = pDBSEQ;
//
// 阁胶磐狼 捞抚
//
memcpy( m_csName , pBaseNPC->strNAME, sizeof(pBaseNPC->strNAME) );
memcpy( m_pNPCList->strNPCName , pBaseNPC->strNAME, sizeof(m_pNPCList->strNPCName) );
m_nLevel = pBaseNPC->nLVL; // 阁胶磐狼 饭骇
m_nExp = pBaseNPC->nEXP; // 阁胶磐狼 泅犁 版氰摹
m_nCharacterType = pBaseNPC->nCLASS; // 阁胶磐狼 努贰胶
m_pNPCList->wType = pBaseNPC->wTYPE; // NPC TYPE
// --------------------------------------------------------------------------------
// Magic/Rare/Unique Monster眠啊
// --------------------------------------------------------------------------------
//if( pFirst ) //滚弊肺 牢秦 林利 贸府 //Jason 2004-06-11
//{
if( pBaseNPC->wTYPE < 100 )
{
m_nClassType = MONSTER_NORMAL;
}
else
{
m_nClassType = pBaseNPC->wTYPE; // NPC TYPE
// NPC牢 版快 NPC Talkable惑怕肺 函版矫糯
m_dwAIType |= SETNPC_TALK; // NPC Talkable
}
// ----------------------------------------------------------------------------
// 2004.01.12 Duke Kim眠啊 -> 眠饶 DB Filed沥焊肺 犬厘 矫糯
//
// - UNIQUE
// - ZONE BOSS
// - AZITSYMBOL (2005.2.11 Duke Kim眠啊)
// ----------------------------------------------------------------------------
switch( pDBSEQ )
{
case 22 : // 叼隔饭捞磐
case 23 : // 单静 唱捞飘
{
m_nClassType = MONSTER_UNIQUE;
m_dwTimeSkillTickTime = timeGetTime();
// 免泅 矫埃
m_dwSpawnTime = timeGetTime() + UNIQUE_SPAWNTIME;
m_nUniqueBeforeTime = 0;
}
break;
case 160 : // 单阁鸥快矾胶
case 161 : // 酒奔扼
{
m_nClassType = MONSTER_ZONEBOSS;
m_dwTimeSkillTickTime = timeGetTime();
// 免泅 矫埃
m_dwSpawnTime = timeGetTime() + UNIQUE_SPAWNTIME;
m_nUniqueBeforeTime = 0;
}
break;
#ifdef DEF_AZIT
//
// 辨靛 酒瘤飘 惑隆拱
//
case 335 :
case 336 :
{
m_nClassType = MONSTER_AZITSYMBOL;
}
break;
#endif
default : break;
}
//}
if(pBaseNPC->wTYPE == 6 || pBaseNPC->wTYPE == 8 )
{
m_nAlign = -1 ;
}
else
{
m_nAlign = 1 ;
}
// --------------------------------------------------------------------------------
// STAT
// --------------------------------------------------------------------------------
m_nStr = pBaseNPC->nSTR; // 阁胶磐狼 扁夯 塞
m_nDex = pBaseNPC->nDEX; // 阁胶磐狼 扁夯 刮酶
m_nIntel = pBaseNPC->nINTEL; // 阁胶磐狼 扁夯 瘤仿
m_nLuck = pBaseNPC->nLUCK; // 阁胶磐狼 扁夯 款
m_nMinAttack = (int)(pBaseNPC->nAP); // 弥家 傍拜仿
m_nMaxAttack = (int)(1.5 * pBaseNPC->nAP); // 弥措 傍拜仿
// --------------------------------------------------------------------------------
// Set Battle Parameters
// --------------------------------------------------------------------------------
m_nAP = 0; // 阁胶磐狼 傍拜仿
m_nAR = pBaseNPC->nAR; // 阁胶磐狼 傍拜 殿鞭
m_nDR = pBaseNPC->nDR; // 阁胶磐狼 规绢 殿鞭
m_nDP = pBaseNPC->nDP; // 阁胶磐狼 DefensePower
m_nBR = pBaseNPC->nBR; // 阁胶磐狼 喉废 饭捞飘
m_nCR = 50;
// --------------------------------------------------------------------------------
// 付过傍拜仿
// --------------------------------------------------------------------------------
m_nMAP = pBaseNPC->nMAP; // 阁胶磐狼 付过 傍拜仿
m_nMDP = pBaseNPC->nMDP; // 阁胶磐狼 付过 规绢仿
// --------------------------------------------------------------------------------
// HP/MP荐摹 蔼
// --------------------------------------------------------------------------------
m_nHP = pBaseNPC->nHP; // 阁胶磐狼 弥绊 眉仿
m_nMP = pBaseNPC->nMP; // 阁胶磐狼 弥绊 付过仿
m_nMaxHP = pBaseNPC->nHP; // 阁胶磐狼 弥绊 眉仿
m_nMaxMP = pBaseNPC->nMP; // 阁胶磐狼 弥绊 付过仿
// --------------------------------------------------------------------------------
// Set Registance
// --------------------------------------------------------------------------------
m_nFireResi = pBaseNPC->nFIRERES; // 阁胶磐狼 阂 历亲仿
m_nLighResi = pBaseNPC->nLIGHTRES; // 阁胶磐狼 傈扁 历亲仿
m_nIceResi = pBaseNPC->nCOLDRES; // 阁胶磐狼 倔澜 历亲仿
m_nStatResi = pBaseNPC->nSTATRES; // 阁胶磐狼 惑怕傍拜 历亲仿
// --------------------------------------------------------------------------------
// NPC惑怕 傍拜 颇扼固磐 眠啊 2003-10-31
// --------------------------------------------------------------------------------
m_nFireAttack = pBaseNPC->nFIREDMG; // 阂 傍 拜
m_nIceAttack = pBaseNPC->nICEDMG; // 倔澜 傍拜
m_nLightningAttack = pBaseNPC->nLIGHTNINGDMG; // 锄傈 傍拜
m_nHPAbsorb = pBaseNPC->nHPABSORB; // 眉仿 软荐
m_nMPAbsorb = pBaseNPC->nMPABSORB; // 付过 软荐
m_nHold = pBaseNPC->nHOLD; // V1.15 挨塞...
m_nPoisonAttack = pBaseNPC->nPOISON; // 刀
m_nBurning = pBaseNPC->nBURNING; // 滚醋
m_nSlow = pBaseNPC->nSLOW; // 蠢妨咙
m_nStun = pBaseNPC->nSTUN; // 胶畔
m_nKnockback = pBaseNPC->nKNOCKBACK; // 第肺 拱矾巢
m_nOpenWound = pBaseNPC->nOPENWOUND; // 惑贸 厩拳
m_nDispel = pBaseNPC->nDISPEL;
m_nIntegrity = pBaseNPC->wINTEGRITY; // 笼窜拳档 0 ~ 100, 100捞搁 例措 面己!
m_nAggressiveness = pBaseNPC->wAGGRESSIVE; // 傍拜己 0 ~ 100, 100捞搁 公炼扒 傍拜, 档噶 绝澜
// --------------------------------------------------------------------------------
// 矫具 芭府 & 傍拜 芭府
// --------------------------------------------------------------------------------
m_nSightRange = pBaseNPC->wSIGHTRANGE; // 矫具 芭府
m_nAttackRange = pBaseNPC->wATTACKRANGE; // 傍拜 芭府
m_nMaxMoveTile = pBaseNPC->wMOVETILE; // 阁胶磐 捞悼 鸥老
// --------------------------------------------------------------------------------
// 历亲 皑家. 眠啊等 货 鞘靛
// --------------------------------------------------------------------------------
m_nFireResiDown = pBaseNPC->wFIRERESIDOWN; // 阂 历亲 皑家
m_nIceResiDown = pBaseNPC->wICERESIDOWN; // 倔澜 历亲 皑家
m_nLighResiDown = pBaseNPC->wLIGHTNINGRESIDOWN; // 锅俺 历亲 皑家
m_nStatResiDown = pBaseNPC->wSTATRESIDOWN; // 惑怕 规绢 皑家
// --------------------------------------------------------------------------------
// Visual 沥焊甫 Setting矫糯 (Client俊辑 荤侩凳)
// --------------------------------------------------------------------------------
m_pNPCList->dwVisual1 = pBaseNPC->dwVISUAL1; // Visaul 沥焊#1
m_pNPCList->dwVisual2 = pBaseNPC->dwVISUAL2; // Visaul 沥焊#2
m_pNPCList->dwVisual3 = pBaseNPC->dwVISUAL3; // Visaul 沥焊#3
m_pNPCList->dwVisual4 = pBaseNPC->dwVISUAL4; // Visaul 沥焊#4
m_pNPCList->dwVisual5 = pBaseNPC->dwVISUAL5; // Visaul 沥焊#5
m_pNPCList->wWIDTH = pBaseNPC->wWIDTH; // 气
m_pNPCList->wHEIGHT = pBaseNPC->wHEIGHT; // 臭捞
m_pNPCList->wMOVESPEED = pBaseNPC->wMOVESPEED; // 捞悼 加档
m_pNPCList->nSOUNDHIT = pBaseNPC->nSOUNDHIT; // 阁胶磐 嘎绰 家府
m_pNPCList->dwVisualOption= pBaseNPC->nVALUE; // 阁胶磐 可记 殿鞭
// --------------------------------------------------------------------------------
// 荤侩 SKILL阑 且寸 (弥檬 矫累矫 SKILL沥焊 涝仿)
// --------------------------------------------------------------------------------
//if( pFirst ) //滚弊肺 牢秦 林利 贸府 //Jason 2004-06-11
//{
// ----------------------------------------------------------------------------
// 傍拜 胶懦
// ----------------------------------------------------------------------------
m_nAttackSkill = pBaseNPC->wATTACKSKILL; // 傍拜 胶懦 沥焊
// ----------------------------------------------------------------------------
// 焊龋 SKILL
// ----------------------------------------------------------------------------
if( pBaseNPC->wASSISTSKILL )
{
if(NULL == m_pAssistSkill )
{
m_pAssistSkill = new CEnchant;
}
m_pAssistSkill->Clear_Skill();
if( !m_pAssistSkill->ReadSkill( pBaseNPC->wASSISTSKILL ) )
{
delete m_pAssistSkill;
m_pAssistSkill = NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -