mirror of
https://github.com/jmarshall23/Hellfire.git
synced 2026-08-12 07:50:53 +02:00
Initial commit.
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
/*-----------------------------------------------------------------------**
|
||||
** Diablo
|
||||
**
|
||||
** Dead file
|
||||
**
|
||||
** (C)1995 Condor, Inc. All rights reserved.
|
||||
**
|
||||
**-----------------------------------------------------------------------**
|
||||
** $Header: /Diablo/DEAD.CPP 1 1/22/97 2:06p Dgartner $
|
||||
**-----------------------------------------------------------------------**
|
||||
**
|
||||
** File Routines
|
||||
**-----------------------------------------------------------------------*/
|
||||
|
||||
#include "diablo.h"
|
||||
#pragma hdrstop
|
||||
#include "sound.h"
|
||||
#include "dead.h"
|
||||
#include "monster.h"
|
||||
#include "monstint.h"
|
||||
#include "missiles.h"
|
||||
#include "misdat.h"
|
||||
#include "gendung.h"
|
||||
#include "lighting.h"
|
||||
|
||||
/*-----------------------------------------------------------------------*
|
||||
** Global Variables
|
||||
**-----------------------------------------------------------------------*/
|
||||
|
||||
DeadStruct dead[MAXDEAD];
|
||||
int spurtndx;
|
||||
int stonendx;
|
||||
|
||||
/*-----------------------------------------------------------------------*
|
||||
**-----------------------------------------------------------------------*/
|
||||
|
||||
void InitDead ()
|
||||
{
|
||||
int nd,i,j,mi;
|
||||
int mtypes[MONSTERTYPES];
|
||||
|
||||
for (i = 0; i < MONSTERTYPES; i++) mtypes[i] = 0;
|
||||
|
||||
nd = 0;
|
||||
for (i = 0; i < nummtypes; i++) {
|
||||
if (mtypes[Monsters[i].mtype] == 0) {
|
||||
for (j = 0; j < 8; j++) dead[nd]._deadData[j] = Monsters[i].Anims[MA_DEATH].Cels[j];
|
||||
dead[nd]._deadFrame = Monsters[i].Anims[MA_DEATH].Frames;
|
||||
dead[nd]._deadWidth = Monsters[i].mAnimWidth;
|
||||
dead[nd]._deadWidth2 = Monsters[i].mAnimWidth2;
|
||||
dead[nd]._deadtrans = 0;
|
||||
Monsters[i].mdeadval = nd + 1;
|
||||
mtypes[Monsters[i].mtype] = nd + 1;
|
||||
nd++;
|
||||
}
|
||||
}
|
||||
|
||||
// set blood burst dead frames
|
||||
for (j = 0; j < 8; j++) dead[nd]._deadData[j] = misfiledata[MF_SPURT].mAnimData[0];
|
||||
dead[nd]._deadFrame = 8;
|
||||
dead[nd]._deadWidth = 128;
|
||||
dead[nd]._deadWidth2 = (128 - 64) >> 1;
|
||||
dead[nd]._deadtrans = 0;
|
||||
spurtndx = nd + 1;
|
||||
nd++;
|
||||
// set stone dead frames
|
||||
for (j = 0; j < 8; j++) dead[nd]._deadData[j] = misfiledata[MF_STONE].mAnimData[0];
|
||||
dead[nd]._deadFrame = 12;
|
||||
dead[nd]._deadWidth = 128;
|
||||
dead[nd]._deadWidth2 = (128 - 64) >> 1;
|
||||
dead[nd]._deadtrans = 0;
|
||||
stonendx = nd + 1;
|
||||
nd++;
|
||||
|
||||
// set unique monster dead frames
|
||||
for (i = 0; i < nummonsters; i++) {
|
||||
mi = monstactive[i];
|
||||
if (monster[mi]._uniqtype != 0) {
|
||||
for (j = 0; j < 8; j++) dead[nd]._deadData[j] = monster[mi].MType->Anims[MA_DEATH].Cels[j];
|
||||
dead[nd]._deadFrame = monster[mi].MType->Anims[MA_DEATH].Frames;
|
||||
dead[nd]._deadWidth = monster[mi].MType->mAnimWidth;
|
||||
dead[nd]._deadWidth2 = monster[mi].MType->mAnimWidth2;
|
||||
dead[nd]._deadtrans = LIGHT_U + monster[mi]._uniqtrans;
|
||||
monster[mi]._udeadval = nd + 1;
|
||||
nd++;
|
||||
}
|
||||
}
|
||||
app_assert(nd <= MAXDEAD);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------*
|
||||
**-----------------------------------------------------------------------*/
|
||||
|
||||
void AddDead(int dx, int dy, char dv, int ddir)
|
||||
{
|
||||
char tdv;
|
||||
|
||||
tdv = (dv & 0x1f) + ((ddir & 0x7) << 5);
|
||||
dDead[dx][dy] = tdv;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------*
|
||||
**-----------------------------------------------------------------------*/
|
||||
|
||||
void SyncUniqDead()
|
||||
{
|
||||
int i,mi;
|
||||
int x,y;
|
||||
|
||||
// See function InitDead() to understand what this is all about
|
||||
|
||||
for (i = 0; i < nummonsters; i++) {
|
||||
mi = monstactive[i];
|
||||
if (monster[mi]._uniqtype != 0) {
|
||||
|
||||
// Search dDead array for this dead type, and place a light source there
|
||||
for(x=0; x < DMAXX; x++)
|
||||
for(y=0; y < DMAXY; y++)
|
||||
if((dDead[x][y] & 0x1f) == monster[mi]._udeadval)
|
||||
ChangeLightXY(monster[mi].mlid, x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user