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

Function M_DoRAttack

Source/monster.cpp:2207–2247  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2205}
2206
2207BOOL M_DoRAttack(int i)
2208{
2209 int multimissiles, mi;
2210
2211 if ((DWORD)i >= MAXMONSTERS)
2212 app_fatal("M_DoRAttack: Invalid monster %d", i);
2213 if (monster[i].MType == NULL)
2214 app_fatal("M_DoRAttack: Monster %d \"%s\" MType NULL", i, monster[i].mName);
2215 if (monster[i].MType == NULL) // BUGFIX: should check MData
2216 app_fatal("M_DoRAttack: Monster %d \"%s\" MData NULL", i, monster[i].mName);
2217
2218 if (monster[i]._mAnimFrame == monster[i].MData->mAFNum) {
2219 if (monster[i]._mVar1 != -1) {
2220 if (monster[i]._mVar1 != MIS_CBOLT)
2221 multimissiles = 1;
2222 else
2223 multimissiles = 3;
2224 for (mi = 0; mi < multimissiles; mi++) {
2225 AddMissile(
2226 monster[i]._mx,
2227 monster[i]._my,
2228 monster[i]._menemyx,
2229 monster[i]._menemyy,
2230 monster[i]._mdir,
2231 monster[i]._mVar1,
2232 1,
2233 i,
2234 monster[i]._mVar2,
2235 0);
2236 }
2237 }
2238 PlayEffect(i, 0);
2239 }
2240
2241 if (monster[i]._mAnimFrame == monster[i]._mAnimLen) {
2242 M_StartStand(i, monster[i]._mdir);
2243 return TRUE;
2244 }
2245
2246 return FALSE;
2247}
2248
2249int M_DoRSpAttack(int i)
2250{

Callers 1

ProcessMonstersFunction · 0.85

Calls 4

app_fatalFunction · 0.85
AddMissileFunction · 0.85
PlayEffectFunction · 0.85
M_StartStandFunction · 0.85

Tested by

no test coverage detected