MCPcopy Create free account
hub / github.com/diasurgical/devilution / InitMonster

Function InitMonster

Source/monster.cpp:379–479  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

377}
378
379void 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;

Callers 2

PlaceMonsterFunction · 0.85
AddMonsterFunction · 0.85

Calls 2

random_Function · 0.85
GetRndSeedFunction · 0.85

Tested by

no test coverage detected