Devilution
Diablo devolved - magic behind the 1996 computer game
dead.cpp
Go to the documentation of this file.
1 
6 #include "all.h"
7 
9 
14 
15 void InitDead()
16 {
17  int i, d, nd, mi;
18  int mtypes[MAXMONSTERS];
19 
20  for (i = 0; i < MAXMONSTERS; i++)
21  mtypes[i] = 0;
22 
23  nd = 0;
24 
25  for (i = 0; i < nummtypes; i++) {
26  if (mtypes[Monsters[i].mtype] == 0) {
27  for (d = 0; d < 8; d++)
28  dead[nd]._deadData[d] = Monsters[i].Anims[MA_DEATH].Data[d];
30  dead[nd]._deadWidth = Monsters[i].width;
32  dead[nd]._deadtrans = 0;
33  Monsters[i].mdeadval = nd + 1;
34  mtypes[Monsters[i].mtype] = nd + 1;
35  nd++;
36  }
37  }
38 
39  for (d = 0; d < 8; d++)
40  dead[nd]._deadData[d] = misfiledata[MFILE_BLODBUR].mAnimData[0];
41  dead[nd]._deadFrame = 8;
42  dead[nd]._deadWidth = 128;
43  dead[nd]._deadWidth2 = 32;
44  dead[nd]._deadtrans = 0;
45  spurtndx = nd + 1;
46  nd++;
47 
48  for (d = 0; d < 8; d++)
49  dead[nd]._deadData[d] = misfiledata[MFILE_SHATTER1].mAnimData[0];
50  dead[nd]._deadFrame = 12;
51  dead[nd]._deadWidth = 128;
52  dead[nd]._deadWidth2 = 32;
53  dead[nd]._deadtrans = 0;
54  stonendx = nd + 1;
55  nd++;
56 
57  for (i = 0; i < nummonsters; i++) {
58  mi = monstactive[i];
59  if (monster[mi]._uniqtype != 0) {
60  for (d = 0; d < 8; d++)
61  dead[nd]._deadData[d] = monster[mi].MType->Anims[MA_DEATH].Data[d];
63  dead[nd]._deadWidth = monster[mi].MType->width;
64  dead[nd]._deadWidth2 = monster[mi].MType->width2;
65  dead[nd]._deadtrans = monster[mi]._uniqtrans + 4;
66  monster[mi]._udeadval = nd + 1;
67  nd++;
68  }
69  }
70 
71  assert(nd <= MAXDEAD);
72 }
73 
74 void AddDead(int dx, int dy, char dv, int ddir)
75 {
76  dDead[dx][dy] = (dv & 0x1F) + (ddir << 5);
77 }
78 
79 void SetDead()
80 {
81  int i, mi;
82  int dx, dy;
83 
84  for (i = 0; i < nummonsters; i++) {
85  mi = monstactive[i];
86  if (monster[mi]._uniqtype != 0) {
87  for (dx = 0; dx < MAXDUNX; dx++) {
88  for (dy = 0; dy < MAXDUNY; dy++) {
89  if ((dDead[dx][dy] & 0x1F) == monster[mi]._udeadval)
90  ChangeLightXY(monster[mi].mlid, dx, dy);
91  }
92  }
93  }
94  }
95 }
96 
SetDead
void SetDead()
Definition: dead.cpp:79
AddDead
void AddDead(int dx, int dy, char dv, int ddir)
Definition: dead.cpp:74
Monsters
CMonster Monsters[MAX_LVLMTYPES]
Definition: monster.cpp:21
stonendx
int stonendx
Definition: dead.cpp:13
MonsterStruct::_udeadval
char _udeadval
Definition: structs.h:593
MA_DEATH
@ MA_DEATH
Definition: enums.h:2038
MAXDUNX
#define MAXDUNX
Definition: defs.h:25
CMonster::width
int width
Definition: structs.h:526
ChangeLightXY
void ChangeLightXY(int i, int x, int y)
Definition: lighting.cpp:1070
MFILE_BLODBUR
@ MFILE_BLODBUR
Definition: enums.h:1281
all.h
nummtypes
int nummtypes
Definition: monster.cpp:24
DeadStruct::_deadWidth2
int _deadWidth2
Definition: structs.h:1202
MAXDUNY
#define MAXDUNY
Definition: defs.h:26
DeadStruct::_deadFrame
int _deadFrame
Definition: structs.h:1200
assert
#define assert(exp)
Definition: defs.h:168
DEVILUTION_END_NAMESPACE
#define DEVILUTION_END_NAMESPACE
Definition: types.h:10
monster
MonsterStruct monster[MAXMONSTERS]
Definition: monster.cpp:19
MonsterStruct::MType
CMonster * MType
Definition: structs.h:612
CMonster::Anims
AnimStruct Anims[6]
Definition: structs.h:524
DeadStruct::_deadtrans
char _deadtrans
Definition: structs.h:1203
DeadStruct::_deadWidth
int _deadWidth
Definition: structs.h:1201
DeadStruct
Definition: structs.h:1198
monstactive
int monstactive[MAXMONSTERS]
Definition: monster.cpp:16
nummonsters
int nummonsters
Definition: monster.cpp:17
InitDead
void InitDead()
Definition: dead.cpp:15
CMonster::width2
int width2
Definition: structs.h:527
dead
DeadStruct dead[MAXDEAD]
Definition: dead.cpp:12
spurtndx
DEVILUTION_BEGIN_NAMESPACE int spurtndx
unused, this was probably for blood boil/burn
Definition: dead.cpp:11
MonsterStruct::_uniqtrans
unsigned char _uniqtrans
Definition: structs.h:592
MAXDEAD
#define MAXDEAD
Definition: defs.h:24
DEVILUTION_BEGIN_NAMESPACE
Definition: sha.cpp:10
misfiledata
MisFileData misfiledata[]
Data related to each missile graphic ID.
Definition: misdat.cpp:86
AnimStruct::Frames
int Frames
Definition: structs.h:479
CMonster::mtype
unsigned char mtype
Definition: structs.h:521
MFILE_SHATTER1
@ MFILE_SHATTER1
Definition: enums.h:1283
MAXMONSTERS
#define MAXMONSTERS
Definition: defs.h:31
dDead
char dDead[MAXDUNX][MAXDUNY]
Definition: gendung.cpp:21
CMonster::mdeadval
char mdeadval
Definition: structs.h:532