2018-06-19 00:16:32 +00:00
|
|
|
//HEADER_GOES_HERE
|
2018-06-07 02:25:54 +00:00
|
|
|
|
|
|
|
#include "../types.h"
|
|
|
|
|
|
|
|
int spurtndx; // weak
|
|
|
|
DeadStruct dead[31];
|
|
|
|
int stonendx;
|
|
|
|
|
|
|
|
void __cdecl InitDead()
|
|
|
|
{
|
|
|
|
int v0; // ebx
|
|
|
|
int *v1; // edx
|
|
|
|
int *v2; // eax
|
|
|
|
int v3; // ecx
|
|
|
|
int v4; // edx
|
|
|
|
int v5; // eax
|
|
|
|
int v6; // edx
|
|
|
|
int v7; // esi
|
|
|
|
int *v8; // eax
|
|
|
|
int v9; // edx
|
|
|
|
CMonster *v10; // ecx
|
|
|
|
char *v11; // edi
|
|
|
|
int *v12; // ebx
|
|
|
|
int mtypes[200]; // [esp+Ch] [ebp-330h]
|
|
|
|
int *v14; // [esp+32Ch] [ebp-10h]
|
|
|
|
int *v15; // [esp+330h] [ebp-Ch]
|
|
|
|
int v16; // [esp+334h] [ebp-8h]
|
|
|
|
int v17; // [esp+338h] [ebp-4h]
|
|
|
|
|
|
|
|
memset(mtypes, 0, sizeof(mtypes));
|
|
|
|
v0 = 0;
|
|
|
|
if ( nummtypes > 0 )
|
|
|
|
{
|
|
|
|
v1 = &dead[0]._deadFrame;
|
|
|
|
v2 = &Monsters[0].Anims[4].Rate;
|
|
|
|
v17 = nummtypes;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
v15 = &mtypes[*((unsigned char *)v2 - 216)];
|
|
|
|
if ( !*v15 )
|
|
|
|
{
|
|
|
|
qmemcpy(v1 - 8, v2 - 8, 0x20u);
|
|
|
|
v3 = *v2;
|
|
|
|
*((_BYTE *)v1 + 12) = 0;
|
|
|
|
*v1 = v3;
|
|
|
|
v1[1] = v2[21];
|
|
|
|
v1[2] = v2[22];
|
|
|
|
*((_BYTE *)v2 + 101) = ++v0;
|
|
|
|
v1 += 12;
|
|
|
|
*v15 = v0;
|
|
|
|
}
|
|
|
|
v2 += 82;
|
|
|
|
--v17;
|
|
|
|
}
|
|
|
|
while ( v17 );
|
|
|
|
}
|
|
|
|
v16 = 0;
|
|
|
|
v4 = v0;
|
2018-06-11 01:03:15 +00:00
|
|
|
memset32(&dead[v0], misfiledata[16].mAnimData[0], 8u);
|
2018-06-07 02:25:54 +00:00
|
|
|
_LOBYTE(dead[v4]._deadtrans) = 0;
|
|
|
|
dead[v4]._deadFrame = 8;
|
2018-06-10 23:08:01 +00:00
|
|
|
v5 = misfiledata[18].mAnimData[0];
|
2018-06-07 02:25:54 +00:00
|
|
|
dead[v4].field_24 = 128;
|
|
|
|
dead[v4].field_28 = 32;
|
|
|
|
v6 = v0 + 1;
|
|
|
|
spurtndx = v0 + 1;
|
2018-06-11 01:03:15 +00:00
|
|
|
memset32(&dead[v6], v5, 8u);
|
2018-06-07 02:25:54 +00:00
|
|
|
_LOBYTE(dead[v6]._deadtrans) = 0;
|
|
|
|
stonendx = v0 + 2;
|
|
|
|
v7 = nummonsters;
|
|
|
|
dead[v6]._deadFrame = 12;
|
|
|
|
dead[v6].field_24 = 128;
|
|
|
|
dead[v6].field_28 = 32;
|
|
|
|
v17 = v0 + 2;
|
|
|
|
if ( v7 > 0 )
|
|
|
|
{
|
|
|
|
v8 = &dead[v0 + 2]._deadFrame;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
v9 = monstactive[v16];
|
|
|
|
if ( monster[v9]._uniqtype )
|
|
|
|
{
|
|
|
|
v10 = monster[v9].MType;
|
|
|
|
v11 = (char *)(v8 - 8);
|
|
|
|
v15 = (int *)8;
|
2018-06-10 23:08:01 +00:00
|
|
|
v14 = v10->Anims[4].Frames;
|
2018-06-07 02:25:54 +00:00
|
|
|
do
|
|
|
|
{
|
|
|
|
v12 = v14;
|
|
|
|
++v14;
|
|
|
|
*(_DWORD *)v11 = *v12;
|
|
|
|
v11 += 4;
|
|
|
|
v15 = (int *)((char *)v15 - 1);
|
|
|
|
}
|
|
|
|
while ( v15 );
|
|
|
|
*v8 = v10->Anims[4].Rate;
|
|
|
|
v8[1] = v10->flags_1;
|
|
|
|
v8[2] = v10->flags_2;
|
|
|
|
*((_BYTE *)v8 + 12) = monster[v9]._uniqtrans + 4;
|
|
|
|
monster[v9]._udeadval = ++v17;
|
|
|
|
v8 += 12;
|
|
|
|
}
|
|
|
|
++v16;
|
|
|
|
}
|
|
|
|
while ( v16 < v7 );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 4B8CD8: using guessed type int spurtndx;
|
|
|
|
|
|
|
|
void __fastcall AddDead(int dx, int dy, char dv, int ddir)
|
|
|
|
{
|
|
|
|
dDead[dx][dy] = (dv & 0x1F) + 32 * ddir;
|
|
|
|
}
|
|
|
|
|
|
|
|
void __cdecl SetDead()
|
|
|
|
{
|
|
|
|
int v0; // eax
|
|
|
|
int v1; // esi
|
|
|
|
int v2; // ebp
|
|
|
|
char (*v3)[112]; // ebx
|
|
|
|
int v4; // edi
|
|
|
|
int i; // [esp+0h] [ebp-4h]
|
|
|
|
|
|
|
|
v0 = 0;
|
|
|
|
for ( i = 0; i < nummonsters; ++i )
|
|
|
|
{
|
|
|
|
v1 = monstactive[v0];
|
|
|
|
if ( monster[v1]._uniqtype )
|
|
|
|
{
|
|
|
|
v2 = 0;
|
|
|
|
v3 = dDead;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
v4 = 0;
|
|
|
|
do
|
|
|
|
{
|
|
|
|
if ( ((*v3)[v4] & 0x1F) == monster[v1]._udeadval )
|
|
|
|
ChangeLightXY((unsigned char)monster[v1].mlid, v2, v4);
|
|
|
|
++v4;
|
|
|
|
}
|
|
|
|
while ( v4 < 112 );
|
|
|
|
++v3;
|
|
|
|
++v2;
|
|
|
|
}
|
|
|
|
while ( (signed int)v3 < (signed int)&dDead[112][0] );
|
|
|
|
}
|
|
|
|
v0 = i + 1;
|
|
|
|
}
|
|
|
|
}
|