| 377 | } |
| 378 | |
| 379 | void InitMonster(int i, int rd, int mtype, int x, int y) |
| 380 | { |
| 381 | CMonster *monst = &Monsters[mtype]; |
| 382 | |
| 383 | monster[i]._mdir = rd; |
| 384 | monster[i]._mx = x; |
| 385 | monster[i]._my = y; |
| 386 | monster[i]._mfutx = x; |
| 387 | monster[i]._mfuty = y; |
| 388 | monster[i]._moldx = x; |
| 389 | monster[i]._moldy = y; |
| 390 | monster[i]._mMTidx = mtype; |
| 391 | monster[i]._mmode = MM_STAND; |
| 392 | monster[i].mName = monst->MData->mName; |
| 393 | monster[i].MType = monst; |
| 394 | monster[i].MData = monst->MData; |
| 395 | monster[i]._mAnimData = monst->Anims[MA_STAND].Data[rd]; |
| 396 | monster[i]._mAnimDelay = monst->Anims[MA_STAND].Rate; |
| 397 | monster[i]._mAnimCnt = random_(88, monster[i]._mAnimDelay - 1); |
| 398 | monster[i]._mAnimLen = monst->Anims[MA_STAND].Frames; |
| 399 | monster[i]._mAnimFrame = random_(88, monster[i]._mAnimLen - 1) + 1; |
| 400 | |
| 401 | if (monst->mtype == MT_DIABLO) { |
| 402 | monster[i]._mmaxhp = (random_(88, 1) + 1666) << 6; |
| 403 | } else { |
| 404 | monster[i]._mmaxhp = (monst->mMinHP + random_(88, monst->mMaxHP - monst->mMinHP + 1)) << 6; |
| 405 | } |
| 406 | |
| 407 | if (gbMaxPlayers == 1) { |
| 408 | monster[i]._mmaxhp >>= 1; |
| 409 | if (monster[i]._mmaxhp < 64) { |
| 410 | monster[i]._mmaxhp = 64; |
| 411 | } |
| 412 | } |
| 413 | |
| 414 | monster[i]._mhitpoints = monster[i]._mmaxhp; |
| 415 | monster[i]._mAi = monst->MData->mAi; |
| 416 | monster[i]._mint = monst->MData->mInt; |
| 417 | monster[i]._mgoal = MGOAL_NORMAL; |
| 418 | monster[i]._mgoalvar1 = 0; |
| 419 | monster[i]._mgoalvar2 = 0; |
| 420 | monster[i]._mgoalvar3 = 0; |
| 421 | monster[i].field_18 = 0; |
| 422 | monster[i]._pathcount = 0; |
| 423 | monster[i]._mDelFlag = FALSE; |
| 424 | monster[i]._uniqtype = 0; |
| 425 | monster[i]._msquelch = 0; |
| 426 | monster[i]._mRndSeed = GetRndSeed(); |
| 427 | monster[i]._mAISeed = GetRndSeed(); |
| 428 | monster[i].mWhoHit = 0; |
| 429 | monster[i].mLevel = monst->MData->mLevel; |
| 430 | monster[i].mExp = monst->MData->mExp; |
| 431 | monster[i].mHit = monst->MData->mHit; |
| 432 | monster[i].mMinDamage = monst->MData->mMinDamage; |
| 433 | monster[i].mMaxDamage = monst->MData->mMaxDamage; |
| 434 | monster[i].mHit2 = monst->MData->mHit2; |
| 435 | monster[i].mMinDamage2 = monst->MData->mMinDamage2; |
| 436 | monster[i].mMaxDamage2 = monst->MData->mMaxDamage2; |
no test coverage detected