|
|
|
|
//HEADER_GOES_HERE
|
|
|
|
|
|
|
|
|
|
#include "../types.h"
|
|
|
|
|
|
|
|
|
|
DEVILUTION_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
|
|
LightListStruct VisionList[32];
|
|
|
|
|
char lightactive[32];
|
|
|
|
|
LightListStruct LightList[32];
|
|
|
|
|
int numlights;
|
|
|
|
|
char dung_map_radius[2048]; /* char [16][128] */
|
|
|
|
|
int dovision; // weak
|
|
|
|
|
int numvision;
|
|
|
|
|
char lightmax; // weak
|
|
|
|
|
int dolighting; // weak
|
|
|
|
|
char dung_map_rgba[16384]; /* int [64][64] short [64][128] char [64][256] */
|
|
|
|
|
int visionid;
|
|
|
|
|
char *pLightTbl; /* todo: struct? */
|
|
|
|
|
BOOL lightflag;
|
|
|
|
|
|
|
|
|
|
char CrawlTable[2749] = {
|
|
|
|
|
1,
|
|
|
|
|
0, 0,
|
|
|
|
|
4,
|
|
|
|
|
0, 1, 0, -1, -1, 0, 1, 0,
|
|
|
|
|
16,
|
|
|
|
|
0, 2, 0, -2, -1, 2, 1, 2,
|
|
|
|
|
-1, -2, 1, -2, -1, 1, 1, 1,
|
|
|
|
|
-1, -1, 1, -1, -2, 1, 2, 1,
|
|
|
|
|
-2, -1, 2, -1, -2, 0, 2, 0,
|
|
|
|
|
24,
|
|
|
|
|
0, 3, 0, -3, -1, 3, 1, 3,
|
|
|
|
|
-1, -3, 1, -3, -2, 3, 2, 3,
|
|
|
|
|
-2, -3, 2, -3, -2, 2, 2, 2,
|
|
|
|
|
-2, -2, 2, -2, -3, 2, 3, 2,
|
|
|
|
|
-3, -2, 3, -2, -3, 1, 3, 1,
|
|
|
|
|
-3, -1, 3, -1, -3, 0, 3, 0,
|
|
|
|
|
32,
|
|
|
|
|
0, 4, 0, -4, -1, 4, 1, 4,
|
|
|
|
|
-1, -4, 1, -4, -2, 4, 2, 4,
|
|
|
|
|
-2, -4, 2, -4, -3, 4, 3, 4,
|
|
|
|
|
-3, -4, 3, -4, -3, 3, 3, 3,
|
|
|
|
|
-3, -3, 3, -3, -4, 3, 4, 3,
|
|
|
|
|
-4, -3, 4, -3, -4, 2, 4, 2,
|
|
|
|
|
-4, -2, 4, -2, -4, 1, 4, 1,
|
|
|
|
|
-4, -1, 4, -1, -4, 0, 4, 0,
|
|
|
|
|
40,
|
|
|
|
|
0, 5, 0, -5, -1, 5, 1, 5,
|
|
|
|
|
-1, -5, 1, -5, -2, 5, 2, 5,
|
|
|
|
|
-2, -5, 2, -5, -3, 5, 3, 5,
|
|
|
|
|
-3, -5, 3, -5, -4, 5, 4, 5,
|
|
|
|
|
-4, -5, 4, -5, -4, 4, 4, 4,
|
|
|
|
|
-4, -4, 4, -4, -5, 4, 5, 4,
|
|
|
|
|
-5, -4, 5, -4, -5, 3, 5, 3,
|
|
|
|
|
-5, -3, 5, -3, -5, 2, 5, 2,
|
|
|
|
|
-5, -2, 5, -2, -5, 1, 5, 1,
|
|
|
|
|
-5, -1, 5, -1, -5, 0, 5, 0,
|
|
|
|
|
48,
|
|
|
|
|
0, 6, 0, -6, -1, 6, 1, 6,
|
|
|
|
|
-1, -6, 1, -6, -2, 6, 2, 6,
|
|
|
|
|
-2, -6, 2, -6, -3, 6, 3, 6,
|
|
|
|
|
-3, -6, 3, -6, -4, 6, 4, 6,
|
|
|
|
|
-4, -6, 4, -6, -5, 6, 5, 6,
|
|
|
|
|
-5, -6, 5, -6, -5, 5, 5, 5,
|
|
|
|
|
-5, -5, 5, -5, -6, 5, 6, 5,
|
|
|
|
|
-6, -5, 6, -5, -6, 4, 6, 4,
|
|
|
|
|
-6, -4, 6, -4, -6, 3, 6, 3,
|
|
|
|
|
-6, -3, 6, -3, -6, 2, 6, 2,
|
|
|
|
|
-6, -2, 6, -2, -6, 1, 6, 1,
|
|
|
|
|
-6, -1, 6, -1, -6, 0, 6, 0,
|
|
|
|
|
56,
|
|
|
|
|
0, 7, 0, -7, -1, 7, 1, 7,
|
|
|
|
|
-1, -7, 1, -7, -2, 7, 2, 7,
|
|
|
|
|
-2, -7, 2, -7, -3, 7, 3, 7,
|
|
|
|
|
-3, -7, 3, -7, -4, 7, 4, 7,
|
|
|
|
|
-4, -7, 4, -7, -5, 7, 5, 7,
|
|
|
|
|
-5, -7, 5, -7, -6, 7, 6, 7,
|
|
|
|
|
-6, -7, 6, -7, -6, 6, 6, 6,
|
|
|
|
|
-6, -6, 6, -6, -7, 6, 7, 6,
|
|
|
|
|
-7, -6, 7, -6, -7, 5, 7, 5,
|
|
|
|
|
-7, -5, 7, -5, -7, 4, 7, 4,
|
|
|
|
|
-7, -4, 7, -4, -7, 3, 7, 3,
|
|
|
|
|
-7, -3, 7, -3, -7, 2, 7, 2,
|
|
|
|
|
-7, -2, 7, -2, -7, 1, 7, 1,
|
|
|
|
|
-7, -1, 7, -1, -7, 0, 7, 0,
|
|
|
|
|
64,
|
|
|
|
|
0, 8, 0, -8, -1, 8, 1, 8,
|
|
|
|
|
-1, -8, 1, -8, -2, 8, 2, 8,
|
|
|
|
|
-2, -8, 2, -8, -3, 8, 3, 8,
|
|
|
|
|
-3, -8, 3, -8, -4, 8, 4, 8,
|
|
|
|
|
-4, -8, 4, -8, -5, 8, 5, 8,
|
|
|
|
|
-5, -8, 5, -8, -6, 8, 6, 8,
|
|
|
|
|
-6, -8, 6, -8, -7, 8, 7, 8,
|
|
|
|
|
-7, -8, 7, -8, -7, 7, 7, 7,
|
|
|
|
|
-7, -7, 7, -7, -8, 7, 8, 7,
|
|
|
|
|
-8, -7, 8, -7, -8, 6, 8, 6,
|
|
|
|
|
-8, -6, 8, -6, -8, 5, 8, 5,
|
|
|
|
|
-8, -5, 8, -5, -8, 4, 8, 4,
|
|
|
|
|
-8, -4, 8, -4, -8, 3, 8, 3,
|
|
|
|
|
-8, -3, 8, -3, -8, 2, 8, 2,
|
|
|
|
|
-8, -2, 8, -2, -8, 1, 8, 1,
|
|
|
|
|
-8, -1, 8, -1, -8, 0, 8, 0,
|
|
|
|
|
72,
|
|
|
|
|
0, 9, 0, -9, -1, 9, 1, 9,
|
|
|
|
|
-1, -9, 1, -9, -2, 9, 2, 9,
|
|
|
|
|
-2, -9, 2, -9, -3, 9, 3, 9,
|
|
|
|
|
-3, -9, 3, -9, -4, 9, 4, 9,
|
|
|
|
|
-4, -9, 4, -9, -5, 9, 5, 9,
|
|
|
|
|
-5, -9, 5, -9, -6, 9, 6, 9,
|
|
|
|
|
-6, -9, 6, -9, -7, 9, 7, 9,
|
|
|
|
|
-7, -9, 7, -9, -8, 9, 8, 9,
|
|
|
|
|
-8, -9, 8, -9, -8, 8, 8, 8,
|
|
|
|
|
-8, -8, 8, -8, -9, 8, 9, 8,
|
|
|
|
|
-9, -8, 9, -8, -9, 7, 9, 7,
|
|
|
|
|
-9, -7, 9, -7, -9, 6, 9, 6,
|
|
|
|
|
-9, -6, 9, -6, -9, 5, 9, 5,
|
|
|
|
|
-9, -5, 9, -5, -9, 4, 9, 4,
|
|
|
|
|
-9, -4, 9, -4, -9, 3, 9, 3,
|
|
|
|
|
-9, -3, 9, -3, -9, 2, 9, 2,
|
|
|
|
|
-9, -2, 9, -2, -9, 1, 9, 1,
|
|
|
|
|
-9, -1, 9, -1, -9, 0, 9, 0,
|
|
|
|
|
80,
|
|
|
|
|
0, 10, 0, -10, -1, 10, 1, 10,
|
|
|
|
|
-1, -10, 1, -10, -2, 10, 2, 10,
|
|
|
|
|
-2, -10, 2, -10, -3, 10, 3, 10,
|
|
|
|
|
-3, -10, 3, -10, -4, 10, 4, 10,
|
|
|
|
|
-4, -10, 4, -10, -5, 10, 5, 10,
|
|
|
|
|
-5, -10, 5, -10, -6, 10, 6, 10,
|
|
|
|
|
-6, -10, 6, -10, -7, 10, 7, 10,
|
|
|
|
|
-7, -10, 7, -10, -8, 10, 8, 10,
|
|
|
|
|
-8, -10, 8, -10, -9, 10, 9, 10,
|
|
|
|
|
-9, -10, 9, -10, -9, 9, 9, 9,
|
|
|
|
|
-9, -9, 9, -9, -10, 9, 10, 9,
|
|
|
|
|
-10, -9, 10, -9, -10, 8, 10, 8,
|
|
|
|
|
-10, -8, 10, -8, -10, 7, 10, 7,
|
|
|
|
|
-10, -7, 10, -7, -10, 6, 10, 6,
|
|
|
|
|
-10, -6, 10, -6, -10, 5, 10, 5,
|
|
|
|
|
-10, -5, 10, -5, -10, 4, 10, 4,
|
|
|
|
|
-10, -4, 10, -4, -10, 3, 10, 3,
|
|
|
|
|
-10, -3, 10, -3, -10, 2, 10, 2,
|
|
|
|
|
-10, -2, 10, -2, -10, 1, 10, 1,
|
|
|
|
|
-10, -1, 10, -1, -10, 0, 10, 0,
|
|
|
|
|
88,
|
|
|
|
|
0, 11, 0, -11, -1, 11, 1, 11,
|
|
|
|
|
-1, -11, 1, -11, -2, 11, 2, 11,
|
|
|
|
|
-2, -11, 2, -11, -3, 11, 3, 11,
|
|
|
|
|
-3, -11, 3, -11, -4, 11, 4, 11,
|
|
|
|
|
-4, -11, 4, -11, -5, 11, 5, 11,
|
|
|
|
|
-5, -11, 5, -11, -6, 11, 6, 11,
|
|
|
|
|
-6, -11, 6, -11, -7, 11, 7, 11,
|
|
|
|
|
-7, -11, 7, -11, -8, 11, 8, 11,
|
|
|
|
|
-8, -11, 8, -11, -9, 11, 9, 11,
|
|
|
|
|
-9, -11, 9, -11, -10, 11, 10, 11,
|
|
|
|
|
-10, -11, 10, -11, -10, 10, 10, 10,
|
|
|
|
|
-10, -10, 10, -10, -11, 10, 11, 10,
|
|
|
|
|
-11, -10, 11, -10, -11, 9, 11, 9,
|
|
|
|
|
-11, -9, 11, -9, -11, 8, 11, 8,
|
|
|
|
|
-11, -8, 11, -8, -11, 7, 11, 7,
|
|
|
|
|
-11, -7, 11, -7, -11, 6, 11, 6,
|
|
|
|
|
-11, -6, 11, -6, -11, 5, 11, 5,
|
|
|
|
|
-11, -5, 11, -5, -11, 4, 11, 4,
|
|
|
|
|
-11, -4, 11, -4, -11, 3, 11, 3,
|
|
|
|
|
-11, -3, 11, -3, -11, 2, 11, 2,
|
|
|
|
|
-11, -2, 11, -2, -11, 1, 11, 1,
|
|
|
|
|
-11, -1, 11, -1, -11, 0, 11, 0,
|
|
|
|
|
96,
|
|
|
|
|
0, 12, 0, -12, -1, 12, 1, 12,
|
|
|
|
|
-1, -12, 1, -12, -2, 12, 2, 12,
|
|
|
|
|
-2, -12, 2, -12, -3, 12, 3, 12,
|
|
|
|
|
-3, -12, 3, -12, -4, 12, 4, 12,
|
|
|
|
|
-4, -12, 4, -12, -5, 12, 5, 12,
|
|
|
|
|
-5, -12, 5, -12, -6, 12, 6, 12,
|
|
|
|
|
-6, -12, 6, -12, -7, 12, 7, 12,
|
|
|
|
|
-7, -12, 7, -12, -8, 12, 8, 12,
|
|
|
|
|
-8, -12, 8, -12, -9, 12, 9, 12,
|
|
|
|
|
-9, -12, 9, -12, -10, 12, 10, 12,
|
|
|
|
|
-10, -12, 10, -12, -11, 12, 11, 12,
|
|
|
|
|
-11, -12, 11, -12, -11, 11, 11, 11,
|
|
|
|
|
-11, -11, 11, -11, -12, 11, 12, 11,
|
|
|
|
|
-12, -11, 12, -11, -12, 10, 12, 10,
|
|
|
|
|
-12, -10, 12, -10, -12, 9, 12, 9,
|
|
|
|
|
-12, -9, 12, -9, -12, 8, 12, 8,
|
|
|
|
|
-12, -8, 12, -8, -12, 7, 12, 7,
|
|
|
|
|
-12, -7, 12, -7, -12, 6, 12, 6,
|
|
|
|
|
-12, -6, 12, -6, -12, 5, 12, 5,
|
|
|
|
|
-12, -5, 12, -5, -12, 4, 12, 4,
|
|
|
|
|
-12, -4, 12, -4, -12, 3, 12, 3,
|
|
|
|
|
-12, -3, 12, -3, -12, 2, 12, 2,
|
|
|
|
|
-12, -2, 12, -2, -12, 1, 12, 1,
|
|
|
|
|
-12, -1, 12, -1, -12, 0, 12, 0,
|
|
|
|
|
104,
|
|
|
|
|
0, 13, 0, -13, -1, 13, 1, 13,
|
|
|
|
|
-1, -13, 1, -13, -2, 13, 2, 13,
|
|
|
|
|
-2, -13, 2, -13, -3, 13, 3, 13,
|
|
|
|
|
-3, -13, 3, -13, -4, 13, 4, 13,
|
|
|
|
|
-4, -13, 4, -13, -5, 13, 5, 13,
|
|
|
|
|
-5, -13, 5, -13, -6, 13, 6, 13,
|
|
|
|
|
-6, -13, 6, -13, -7, 13, 7, 13,
|
|
|
|
|
-7, -13, 7, -13, -8, 13, 8, 13,
|
|
|
|
|
-8, -13, 8, -13, -9, 13, 9, 13,
|
|
|
|
|
-9, -13, 9, -13, -10, 13, 10, 13,
|
|
|
|
|
-10, -13, 10, -13, -11, 13, 11, 13,
|
|
|
|
|
-11, -13, 11, -13, -12, 13, 12, 13,
|
|
|
|
|
-12, -13, 12, -13, -12, 12, 12, 12,
|
|
|
|
|
-12, -12, 12, -12, -13, 12, 13, 12,
|
|
|
|
|
-13, -12, 13, -12, -13, 11, 13, 11,
|
|
|
|
|
-13, -11, 13, -11, -13, 10, 13, 10,
|
|
|
|
|
-13, -10, 13, -10, -13, 9, 13, 9,
|
|
|
|
|
-13, -9, 13, -9, -13, 8, 13, 8,
|
|
|
|
|
-13, -8, 13, -8, -13, 7, 13, 7,
|
|
|
|
|
-13, -7, 13, -7, -13, 6, 13, 6,
|
|
|
|
|
-13, -6, 13, -6, -13, 5, 13, 5,
|
|
|
|
|
-13, -5, 13, -5, -13, 4, 13, 4,
|
|
|
|
|
-13, -4, 13, -4, -13, 3, 13, 3,
|
|
|
|
|
-13, -3, 13, -3, -13, 2, 13, 2,
|
|
|
|
|
-13, -2, 13, -2, -13, 1, 13, 1,
|
|
|
|
|
-13, -1, 13, -1, -13, 0, 13, 0,
|
|
|
|
|
112,
|
|
|
|
|
0, 14, 0, -14, -1, 14, 1, 14,
|
|
|
|
|
-1, -14, 1, -14, -2, 14, 2, 14,
|
|
|
|
|
-2, -14, 2, -14, -3, 14, 3, 14,
|
|
|
|
|
-3, -14, 3, -14, -4, 14, 4, 14,
|
|
|
|
|
-4, -14, 4, -14, -5, 14, 5, 14,
|
|
|
|
|
-5, -14, 5, -14, -6, 14, 6, 14,
|
|
|
|
|
-6, -14, 6, -14, -7, 14, 7, 14,
|
|
|
|
|
-7, -14, 7, -14, -8, 14, 8, 14,
|
|
|
|
|
-8, -14, 8, -14, -9, 14, 9, 14,
|
|
|
|
|
-9, -14, 9, -14, -10, 14, 10, 14,
|
|
|
|
|
-10, -14, 10, -14, -11, 14, 11, 14,
|
|
|
|
|
-11, -14, 11, -14, -12, 14, 12, 14,
|
|
|
|
|
-12, -14, 12, -14, -13, 14, 13, 14,
|
|
|
|
|
-13, -14, 13, -14, -13, 13, 13, 13,
|
|
|
|
|
-13, -13, 13, -13, -14, 13, 14, 13,
|
|
|
|
|
-14, -13, 14, -13, -14, 12, 14, 12,
|
|
|
|
|
-14, -12, 14, -12, -14, 11, 14, 11,
|
|
|
|
|
-14, -11, 14, -11, -14, 10, 14, 10,
|
|
|
|
|
-14, -10, 14, -10, -14, 9, 14, 9,
|
|
|
|
|
-14, -9, 14, -9, -14, 8, 14, 8,
|
|
|
|
|
-14, -8, 14, -8, -14, 7, 14, 7,
|
|
|
|
|
-14, -7, 14, -7, -14, 6, 14, 6,
|
|
|
|
|
-14, -6, 14, -6, -14, 5, 14, 5,
|
|
|
|
|
-14, -5, 14, -5, -14, 4, 14, 4,
|
|
|
|
|
-14, -4, 14, -4, -14, 3, 14, 3,
|
|
|
|
|
-14, -3, 14, -3, -14, 2, 14, 2,
|
|
|
|
|
-14, -2, 14, -2, -14, 1, 14, 1,
|
|
|
|
|
-14, -1, 14, -1, -14, 0, 14, 0,
|
|
|
|
|
120,
|
|
|
|
|
0, 15, 0, -15, -1, 15, 1, 15,
|
|
|
|
|
-1, -15, 1, -15, -2, 15, 2, 15,
|
|
|
|
|
-2, -15, 2, -15, -3, 15, 3, 15,
|
|
|
|
|
-3, -15, 3, -15, -4, 15, 4, 15,
|
|
|
|
|
-4, -15, 4, -15, -5, 15, 5, 15,
|
|
|
|
|
-5, -15, 5, -15, -6, 15, 6, 15,
|
|
|
|
|
-6, -15, 6, -15, -7, 15, 7, 15,
|
|
|
|
|
-7, -15, 7, -15, -8, 15, 8, 15,
|
|
|
|
|
-8, -15, 8, -15, -9, 15, 9, 15,
|
|
|
|
|
-9, -15, 9, -15, -10, 15, 10, 15,
|
|
|
|
|
-10, -15, 10, -15, -11, 15, 11, 15,
|
|
|
|
|
-11, -15, 11, -15, -12, 15, 12, 15,
|
|
|
|
|
-12, -15, 12, -15, -13, 15, 13, 15,
|
|
|
|
|
-13, -15, 13, -15, -14, 15, 14, 15,
|
|
|
|
|
-14, -15, 14, -15, -14, 14, 14, 14,
|
|
|
|
|
-14, -14, 14, -14, -15, 14, 15, 14,
|
|
|
|
|
-15, -14, 15, -14, -15, 13, 15, 13,
|
|
|
|
|
-15, -13, 15, -13, -15, 12, 15, 12,
|
|
|
|
|
-15, -12, 15, -12, -15, 11, 15, 11,
|
|
|
|
|
-15, -11, 15, -11, -15, 10, 15, 10,
|
|
|
|
|
-15, -10, 15, -10, -15, 9, 15, 9,
|
|
|
|
|
-15, -9, 15, -9, -15, 8, 15, 8,
|
|
|
|
|
-15, -8, 15, -8, -15, 7, 15, 7,
|
|
|
|
|
-15, -7, 15, -7, -15, 6, 15, 6,
|
|
|
|
|
-15, -6, 15, -6, -15, 5, 15, 5,
|
|
|
|
|
-15, -5, 15, -5, -15, 4, 15, 4,
|
|
|
|
|
-15, -4, 15, -4, -15, 3, 15, 3,
|
|
|
|
|
-15, -3, 15, -3, -15, 2, 15, 2,
|
|
|
|
|
-15, -2, 15, -2, -15, 1, 15, 1,
|
|
|
|
|
-15, -1, 15, -1, -15, 0, 15, 0,
|
|
|
|
|
(char)128,
|
|
|
|
|
0, 16, 0, -16, -1, 16, 1, 16,
|
|
|
|
|
-1, -16, 1, -16, -2, 16, 2, 16,
|
|
|
|
|
-2, -16, 2, -16, -3, 16, 3, 16,
|
|
|
|
|
-3, -16, 3, -16, -4, 16, 4, 16,
|
|
|
|
|
-4, -16, 4, -16, -5, 16, 5, 16,
|
|
|
|
|
-5, -16, 5, -16, -6, 16, 6, 16,
|
|
|
|
|
-6, -16, 6, -16, -7, 16, 7, 16,
|
|
|
|
|
-7, -16, 7, -16, -8, 16, 8, 16,
|
|
|
|
|
-8, -16, 8, -16, -9, 16, 9, 16,
|
|
|
|
|
-9, -16, 9, -16, -10, 16, 10, 16,
|
|
|
|
|
-10, -16, 10, -16, -11, 16, 11, 16,
|
|
|
|
|
-11, -16, 11, -16, -12, 16, 12, 16,
|
|
|
|
|
-12, -16, 12, -16, -13, 16, 13, 16,
|
|
|
|
|
-13, -16, 13, -16, -14, 16, 14, 16,
|
|
|
|
|
-14, -16, 14, -16, -15, 16, 15, 16,
|
|
|
|
|
-15, -16, 15, -16, -15, 15, 15, 15,
|
|
|
|
|
-15, -15, 15, -15, -16, 15, 16, 15,
|
|
|
|
|
-16, -15, 16, -15, -16, 14, 16, 14,
|
|
|
|
|
-16, -14, 16, -14, -16, 13, 16, 13,
|
|
|
|
|
-16, -13, 16, -13, -16, 12, 16, 12,
|
|
|
|
|
-16, -12, 16, -12, -16, 11, 16, 11,
|
|
|
|
|
-16, -11, 16, -11, -16, 10, 16, 10,
|
|
|
|
|
-16, -10, 16, -10, -16, 9, 16, 9,
|
|
|
|
|
-16, -9, 16, -9, -16, 8, 16, 8,
|
|
|
|
|
-16, -8, 16, -8, -16, 7, 16, 7,
|
|
|
|
|
-16, -7, 16, -7, -16, 6, 16, 6,
|
|
|
|
|
-16, -6, 16, -6, -16, 5, 16, 5,
|
|
|
|
|
-16, -5, 16, -5, -16, 4, 16, 4,
|
|
|
|
|
-16, -4, 16, -4, -16, 3, 16, 3,
|
|
|
|
|
-16, -3, 16, -3, -16, 2, 16, 2,
|
|
|
|
|
-16, -2, 16, -2, -16, 1, 16, 1,
|
|
|
|
|
-16, -1, 16, -1, -16, 0, 16, 0,
|
|
|
|
|
(char)136,
|
|
|
|
|
0, 17, 0, -17, -1, 17, 1, 17,
|
|
|
|
|
-1, -17, 1, -17, -2, 17, 2, 17,
|
|
|
|
|
-2, -17, 2, -17, -3, 17, 3, 17,
|
|
|
|
|
-3, -17, 3, -17, -4, 17, 4, 17,
|
|
|
|
|
-4, -17, 4, -17, -5, 17, 5, 17,
|
|
|
|
|
-5, -17, 5, -17, -6, 17, 6, 17,
|
|
|
|
|
-6, -17, 6, -17, -7, 17, 7, 17,
|
|
|
|
|
-7, -17, 7, -17, -8, 17, 8, 17,
|
|
|
|
|
-8, -17, 8, -17, -9, 17, 9, 17,
|
|
|
|
|
-9, -17, 9, -17, -10, 17, 10, 17,
|
|
|
|
|
-10, -17, 10, -17, -11, 17, 11, 17,
|
|
|
|
|
-11, -17, 11, -17, -12, 17, 12, 17,
|
|
|
|
|
-12, -17, 12, -17, -13, 17, 13, 17,
|
|
|
|
|
-13, -17, 13, -17, -14, 17, 14, 17,
|
|
|
|
|
-14, -17, 14, -17, -15, 17, 15, 17,
|
|
|
|
|
-15, -17, 15, -17, -16, 17, 16, 17,
|
|
|
|
|
-16, -17, 16, -17, -16, 16, 16, 16,
|
|
|
|
|
-16, -16, 16, -16, -17, 16, 17, 16,
|
|
|
|
|
-17, -16, 17, -16, -17, 15, 17, 15,
|
|
|
|
|
-17, -15, 17, -15, -17, 14, 17, 14,
|
|
|
|
|
-17, -14, 17, -14, -17, 13, 17, 13,
|
|
|
|
|
-17, -13, 17, -13, -17, 12, 17, 12,
|
|
|
|
|
-17, -12, 17, -12, -17, 11, 17, 11,
|
|
|
|
|
-17, -11, 17, -11, -17, 10, 17, 10,
|
|
|
|
|
-17, -10, 17, -10, -17, 9, 17, 9,
|
|
|
|
|
-17, -9, 17, -9, -17, 8, 17, 8,
|
|
|
|
|
-17, -8, 17, -8, -17, 7, 17, 7,
|
|
|
|
|
-17, -7, 17, -7, -17, 6, 17, 6,
|
|
|
|
|
-17, -6, 17, -6, -17, 5, 17, 5,
|
|
|
|
|
-17, -5, 17, -5, -17, 4, 17, 4,
|
|
|
|
|
-17, -4, 17, -4, -17, 3, 17, 3,
|
|
|
|
|
-17, -3, 17, -3, -17, 2, 17, 2,
|
|
|
|
|
-17, -2, 17, -2, -17, 1, 17, 1,
|
|
|
|
|
-17, -1, 17, -1, -17, 0, 17, 0,
|
|
|
|
|
(char)144,
|
|
|
|
|
0, 18, 0, -18, -1, 18, 1, 18,
|
|
|
|
|
-1, -18, 1, -18, -2, 18, 2, 18,
|
|
|
|
|
-2, -18, 2, -18, -3, 18, 3, 18,
|
|
|
|
|
-3, -18, 3, -18, -4, 18, 4, 18,
|
|
|
|
|
-4, -18, 4, -18, -5, 18, 5, 18,
|
|
|
|
|
-5, -18, 5, -18, -6, 18, 6, 18,
|
|
|
|
|
-6, -18, 6, -18, -7, 18, 7, 18,
|
|
|
|
|
-7, -18, 7, -18, -8, 18, 8, 18,
|
|
|
|
|
-8, -18, 8, -18, -9, 18, 9, 18,
|
|
|
|
|
-9, -18, 9, -18, -10, 18, 10, 18,
|
|
|
|
|
-10, -18, 10, -18, -11, 18, 11, 18,
|
|
|
|
|
-11, -18, 11, -18, -12, 18, 12, 18,
|
|
|
|
|
-12, -18, 12, -18, -13, 18, 13, 18,
|
|
|
|
|
-13, -18, 13, -18, -14, 18, 14, 18,
|
|
|
|
|
-14, -18, 14, -18, -15, 18, 15, 18,
|
|
|
|
|
-15, -18, 15, -18, -16, 18, 16, 18,
|
|
|
|
|
-16, -18, 16, -18, -17, 18, 17, 18,
|
|
|
|
|
-17, -18, 17, -18, -17, 17, 17, 17,
|
|
|
|
|
-17, -17, 17, -17, -18, 17, 18, 17,
|
|
|
|
|
-18, -17, 18, -17, -18, 16, 18, 16,
|
|
|
|
|
-18, -16, 18, -16, -18, 15, 18, 15,
|
|
|
|
|
-18, -15, 18, -15, -18, 14, 18, 14,
|
|
|
|
|
-18, -14, 18, -14, -18, 13, 18, 13,
|
|
|
|
|
-18, -13, 18, -13, -18, 12, 18, 12,
|
|
|
|
|
-18, -12, 18, -12, -18, 11, 18, 11,
|
|
|
|
|
-18, -11, 18, -11, -18, 10, 18, 10,
|
|
|
|
|
-18, -10, 18, -10, -18, 9, 18, 9,
|
|
|
|
|
-18, -9, 18, -9, -18, 8, 18, 8,
|
|
|
|
|
-18, -8, 18, -8, -18, 7, 18, 7,
|
|
|
|
|
-18, -7, 18, -7, -18, 6, 18, 6,
|
|
|
|
|
-18, -6, 18, -6, -18, 5, 18, 5,
|
|
|
|
|
-18, -5, 18, -5, -18, 4, 18, 4,
|
|
|
|
|
-18, -4, 18, -4, -18, 3, 18, 3,
|
|
|
|
|
-18, -3, 18, -3, -18, 2, 18, 2,
|
|
|
|
|
-18, -2, 18, -2, -18, 1, 18, 1,
|
|
|
|
|
-18, -1, 18, -1, -18, 0, 18, 0
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
char *pCrawlTable[19] = /* figure out what this is for */
|
|
|
|
|
{
|
|
|
|
|
CrawlTable,
|
|
|
|
|
CrawlTable + 3,
|
|
|
|
|
CrawlTable + 12,
|
|
|
|
|
CrawlTable + 45,
|
|
|
|
|
CrawlTable + 94,
|
|
|
|
|
CrawlTable + 159,
|
|
|
|
|
CrawlTable + 240,
|
|
|
|
|
CrawlTable + 337,
|
|
|
|
|
CrawlTable + 450,
|
|
|
|
|
CrawlTable + 579,
|
|
|
|
|
CrawlTable + 724,
|
|
|
|
|
CrawlTable + 885,
|
|
|
|
|
CrawlTable + 1062,
|
|
|
|
|
CrawlTable + 1255,
|
|
|
|
|
CrawlTable + 1464,
|
|
|
|
|
CrawlTable + 1689,
|
|
|
|
|
CrawlTable + 1930,
|
|
|
|
|
CrawlTable + 2187,
|
|
|
|
|
CrawlTable + 2460
|
|
|
|
|
};
|
|
|
|
|
unsigned char vCrawlTable[23][30] = {
|
|
|
|
|
{ 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0 },
|
|
|
|
|
{ 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1, 14, 1, 15, 1 },
|
|
|
|
|
{ 1, 0, 2, 0, 3, 0, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 2, 13, 2, 14, 2, 15, 2 },
|
|
|
|
|
{ 1, 0, 2, 0, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 3, 14, 3, 15, 3 },
|
|
|
|
|
{ 1, 0, 2, 1, 3, 1, 4, 1, 5, 1, 6, 2, 7, 2, 8, 2, 9, 3, 10, 3, 11, 3, 12, 3, 13, 4, 14, 4, 0, 0 },
|
|
|
|
|
{ 1, 0, 2, 1, 3, 1, 4, 1, 5, 2, 6, 2, 7, 3, 8, 3, 9, 3, 10, 4, 11, 4, 12, 4, 13, 5, 14, 5, 0, 0 },
|
|
|
|
|
{ 1, 0, 2, 1, 3, 1, 4, 2, 5, 2, 6, 3, 7, 3, 8, 3, 9, 4, 10, 4, 11, 5, 12, 5, 13, 6, 14, 6, 0, 0 },
|
|
|
|
|
{ 1, 1, 2, 1, 3, 2, 4, 2, 5, 3, 6, 3, 7, 4, 8, 4, 9, 5, 10, 5, 11, 6, 12, 6, 13, 7, 0, 0, 0, 0 },
|
|
|
|
|
{ 1, 1, 2, 1, 3, 2, 4, 2, 5, 3, 6, 4, 7, 4, 8, 5, 9, 6, 10, 6, 11, 7, 12, 7, 12, 8, 13, 8, 0, 0 },
|
|
|
|
|
{ 1, 1, 2, 2, 3, 2, 4, 3, 5, 4, 6, 5, 7, 5, 8, 6, 9, 7, 10, 7, 10, 8, 11, 8, 12, 9, 0, 0, 0, 0 },
|
|
|
|
|
{ 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11, 9, 11, 10, 0, 0, 0, 0, 0, 0 },
|
|
|
|
|
{ 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0 },
|
|
|
|
|
{ 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 9, 11, 10, 11, 0, 0, 0, 0, 0, 0 },
|
|
|
|
|
{ 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 5, 7, 6, 8, 7, 9, 7, 10, 8, 10, 8, 11, 9, 12, 0, 0, 0, 0 },
|
|
|
|
|
{ 1, 1, 1, 2, 2, 3, 2, 4, 3, 5, 4, 6, 4, 7, 5, 8, 6, 9, 6, 10, 7, 11, 7, 12, 8, 12, 8, 13, 0, 0 },
|
|
|
|
|
{ 1, 1, 1, 2, 2, 3, 2, 4, 3, 5, 3, 6, 4, 7, 4, 8, 5, 9, 5, 10, 6, 11, 6, 12, 7, 13, 0, 0, 0, 0 },
|
|
|
|
|
{ 0, 1, 1, 2, 1, 3, 2, 4, 2, 5, 3, 6, 3, 7, 3, 8, 4, 9, 4, 10, 5, 11, 5, 12, 6, 13, 6, 14, 0, 0 },
|
|
|
|
|
{ 0, 1, 1, 2, 1, 3, 1, 4, 2, 5, 2, 6, 3, 7, 3, 8, 3, 9, 4, 10, 4, 11, 4, 12, 5, 13, 5, 14, 0, 0 },
|
|
|
|
|
{ 0, 1, 1, 2, 1, 3, 1, 4, 1, 5, 2, 6, 2, 7, 2, 8, 3, 9, 3, 10, 3, 11, 3, 12, 4, 13, 4, 14, 0, 0 },
|
|
|
|
|
{ 0, 1, 0, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 3, 13, 3, 14, 3, 15 },
|
|
|
|
|
{ 0, 1, 0, 2, 0, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 2, 12, 2, 13, 2, 14, 2, 15 },
|
|
|
|
|
{ 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1, 14, 1, 15 },
|
|
|
|
|
{ 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15 }
|
|
|
|
|
};
|
|
|
|
|
unsigned char byte_49463C[18][18] = /* unused */
|
|
|
|
|
{
|
|
|
|
|
{ 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3 },
|
|
|
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2 }
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
unsigned char RadiusAdj[23] = { 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 4, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0 };
|
|
|
|
|
|
|
|
|
|
void __fastcall SetLightFX(int *x, int *y, short *s_r, short *s_g, PINT_PTR s_b, PINT_PTR d_r, int *d_g, int *d_b)
|
|
|
|
|
{
|
|
|
|
|
short *v8; // eax
|
|
|
|
|
int v9; // edx
|
|
|
|
|
int *v10; // [esp+Ch] [ebp-4h]
|
|
|
|
|
short *s_ra; // [esp+18h] [ebp+8h]
|
|
|
|
|
|
|
|
|
|
*d_g = 0;
|
|
|
|
|
*d_b = 0;
|
|
|
|
|
v8 = s_r;
|
|
|
|
|
v10 = y;
|
|
|
|
|
v9 = *(_DWORD *)s_r;
|
|
|
|
|
*(_DWORD *)s_r = 7 - *(_DWORD *)s_g;
|
|
|
|
|
*(_DWORD *)s_g = v9;
|
|
|
|
|
s_ra = (short *)*s_b;
|
|
|
|
|
*s_b = 7 - *d_r;
|
|
|
|
|
*d_r = (INT_PTR)s_ra;
|
|
|
|
|
*x = *(_DWORD *)v8 - *s_b;
|
|
|
|
|
*v10 = *(_DWORD *)s_g - *d_r;
|
|
|
|
|
if (*x < 0) {
|
|
|
|
|
*x += 8;
|
|
|
|
|
*d_g = 1;
|
|
|
|
|
}
|
|
|
|
|
if (*v10 < 0) {
|
|
|
|
|
*v10 += 8;
|
|
|
|
|
*d_b = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void __fastcall DoLighting(int nXPos, int nYPos, int nRadius, int Lnum)
|
|
|
|
|
{
|
|
|
|
|
int v4; // edi
|
|
|
|
|
int v5; // ebx
|
|
|
|
|
int v6; // ecx
|
|
|
|
|
int v7; // eax
|
|
|
|
|
int v8; // edx
|
|
|
|
|
int v9; // esi
|
|
|
|
|
int v10; // eax
|
|
|
|
|
char *v11; // edi
|
|
|
|
|
signed int v12; // ecx
|
|
|
|
|
int v13; // edx
|
|
|
|
|
_BYTE *v14; // ecx
|
|
|
|
|
int v15; // ebx
|
|
|
|
|
BOOLEAN v16; // sf
|
|
|
|
|
//unsigned char v17; // of
|
|
|
|
|
int v18; // esi
|
|
|
|
|
int v19; // ecx
|
|
|
|
|
char *v20; // edi
|
|
|
|
|
signed int v21; // eax
|
|
|
|
|
int v22; // edx
|
|
|
|
|
_BYTE *v23; // eax
|
|
|
|
|
int v24; // ebx
|
|
|
|
|
int v25; // eax
|
|
|
|
|
int v26; // esi
|
|
|
|
|
char *v27; // edi
|
|
|
|
|
signed int v28; // ecx
|
|
|
|
|
int v29; // edx
|
|
|
|
|
_BYTE *v30; // ecx
|
|
|
|
|
int v31; // ebx
|
|
|
|
|
signed int v32; // ebx
|
|
|
|
|
int v33; // ecx
|
|
|
|
|
char *v34; // esi
|
|
|
|
|
signed int v35; // eax
|
|
|
|
|
int v36; // edx
|
|
|
|
|
_BYTE *v37; // eax
|
|
|
|
|
int v38; // edi
|
|
|
|
|
short s_r[2]; // [esp+Ch] [ebp-44h]
|
|
|
|
|
short s_g[2]; // [esp+10h] [ebp-40h]
|
|
|
|
|
INT_PTR s_b; // [esp+14h] [ebp-3Ch]
|
|
|
|
|
INT_PTR d_r; // [esp+18h] [ebp-38h]
|
|
|
|
|
int v43; // [esp+1Ch] [ebp-34h]
|
|
|
|
|
int v44; // [esp+20h] [ebp-30h]
|
|
|
|
|
int v45; // [esp+24h] [ebp-2Ch]
|
|
|
|
|
int v46; // [esp+28h] [ebp-28h]
|
|
|
|
|
int v47; // [esp+2Ch] [ebp-24h]
|
|
|
|
|
int v48; // [esp+30h] [ebp-20h]
|
|
|
|
|
int d_g; // [esp+34h] [ebp-1Ch]
|
|
|
|
|
int d_b; // [esp+38h] [ebp-18h]
|
|
|
|
|
int v51; // [esp+3Ch] [ebp-14h]
|
|
|
|
|
int v52; // [esp+40h] [ebp-10h]
|
|
|
|
|
int y; // [esp+44h] [ebp-Ch]
|
|
|
|
|
int x; // [esp+48h] [ebp-8h]
|
|
|
|
|
int v55; // [esp+4Ch] [ebp-4h]
|
|
|
|
|
int Lnuma; // [esp+5Ch] [ebp+Ch]
|
|
|
|
|
int Lnumb; // [esp+5Ch] [ebp+Ch]
|
|
|
|
|
int Lnumc; // [esp+5Ch] [ebp+Ch]
|
|
|
|
|
int Lnumd; // [esp+5Ch] [ebp+Ch]
|
|
|
|
|
|
|
|
|
|
v4 = nYPos;
|
|
|
|
|
v5 = nXPos;
|
|
|
|
|
v6 = 0;
|
|
|
|
|
v7 = 0;
|
|
|
|
|
v48 = nYPos;
|
|
|
|
|
v52 = v5;
|
|
|
|
|
x = 0;
|
|
|
|
|
y = 0;
|
|
|
|
|
s_b = 0;
|
|
|
|
|
d_r = 0;
|
|
|
|
|
d_g = 0;
|
|
|
|
|
d_b = 0;
|
|
|
|
|
if (Lnum >= 0) {
|
|
|
|
|
v7 = LightList[Lnum]._yoff;
|
|
|
|
|
x = LightList[Lnum]._xoff;
|
|
|
|
|
v6 = x;
|
|
|
|
|
y = v7;
|
|
|
|
|
if (x < 0) {
|
|
|
|
|
v6 = x + 8;
|
|
|
|
|
--v5;
|
|
|
|
|
x += 8;
|
|
|
|
|
v52 = v5;
|
|
|
|
|
}
|
|
|
|
|
if (v7 < 0) {
|
|
|
|
|
v7 += 8;
|
|
|
|
|
v4 = nYPos - 1;
|
|
|
|
|
y = v7;
|
|
|
|
|
v48 = nYPos - 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*(_DWORD *)s_r = v6;
|
|
|
|
|
*(_DWORD *)s_g = v7;
|
|
|
|
|
v8 = 15;
|
|
|
|
|
if (v5 - 15 >= 0)
|
|
|
|
|
v44 = 15;
|
|
|
|
|
else
|
|
|
|
|
v44 = v5 + 1;
|
|
|
|
|
if (v5 + 15 <= 112)
|
|
|
|
|
v46 = 15;
|
|
|
|
|
else
|
|
|
|
|
v46 = 112 - v5;
|
|
|
|
|
if (v4 - 15 >= 0)
|
|
|
|
|
v43 = 15;
|
|
|
|
|
else
|
|
|
|
|
v43 = v4 + 1;
|
|
|
|
|
if (v4 + 15 > 112)
|
|
|
|
|
v8 = 112 - v4;
|
|
|
|
|
v45 = v8;
|
|
|
|
|
if (v5 >= 0 && v5 < MAXDUNX && v4 >= 0 && v4 < MAXDUNY)
|
|
|
|
|
dTransVal[v5][v4] = 0;
|
|
|
|
|
v55 = 0;
|
|
|
|
|
v51 = v6 + 8 * v7;
|
|
|
|
|
if (v43 > 0) {
|
|
|
|
|
v47 = v4;
|
|
|
|
|
do {
|
|
|
|
|
Lnuma = 1;
|
|
|
|
|
if (v46 > 1) {
|
|
|
|
|
v9 = v5 + 1;
|
|
|
|
|
v10 = 112 * (v5 + 1);
|
|
|
|
|
v11 = &dung_map_rgba[16 * (v55 + 16 * v51)];
|
|
|
|
|
do {
|
|
|
|
|
v12 = (unsigned char)v11[Lnuma];
|
|
|
|
|
if (v12 < 128) {
|
|
|
|
|
v13 = (unsigned char)dung_map_radius[128 * nRadius + v12];
|
|
|
|
|
if (v9 >= 0 && v9 < 112 && v47 >= 0 && v47 < 112) {
|
|
|
|
|
v14 = (unsigned char *)dTransVal + v47 + v10;
|
|
|
|
|
v15 = (char)*v14;
|
|
|
|
|
//v17 = __OFSUB__(v13, v15);
|
|
|
|
|
v16 = v13 - v15 < 0;
|
|
|
|
|
v5 = v52;
|
|
|
|
|
if (v16) // if (v16 ^ v17)
|
|
|
|
|
*v14 = v13;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
++Lnuma;
|
|
|
|
|
v10 += 112;
|
|
|
|
|
++v9;
|
|
|
|
|
} while (Lnuma < v46);
|
|
|
|
|
v4 = v48;
|
|
|
|
|
}
|
|
|
|
|
++v55;
|
|
|
|
|
++v47;
|
|
|
|
|
} while (v55 < v43);
|
|
|
|
|
}
|
|
|
|
|
SetLightFX(&x, &y, s_r, s_g, &s_b, &d_r, &d_g, &d_b);
|
|
|
|
|
v18 = 0;
|
|
|
|
|
v51 = x + 8 * y;
|
|
|
|
|
if (v45 > 0) {
|
|
|
|
|
v47 = 112 * v5;
|
|
|
|
|
do {
|
|
|
|
|
Lnumb = 1;
|
|
|
|
|
if (v46 > 1) {
|
|
|
|
|
v19 = v4 - 1;
|
|
|
|
|
v20 = &dung_map_rgba[16 * (d_b + v18 + 16 * v51) + d_g];
|
|
|
|
|
do {
|
|
|
|
|
v21 = (unsigned char)v20[Lnumb];
|
|
|
|
|
if (v21 < 128) {
|
|
|
|
|
v22 = (unsigned char)dung_map_radius[128 * nRadius + v21];
|
|
|
|
|
if (v18 + v5 >= 0 && v18 + v5 < 112 && v19 >= 0 && v19 < 112) {
|
|
|
|
|
v23 = (unsigned char *)dTransVal + v47 + v19;
|
|
|
|
|
v24 = (char)*v23;
|
|
|
|
|
//v17 = __OFSUB__(v22, v24);
|
|
|
|
|
v16 = v22 - v24 < 0;
|
|
|
|
|
v5 = v52;
|
|
|
|
|
if (v16) //if (v16 ^ v17)
|
|
|
|
|
*v23 = v22;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
++Lnumb;
|
|
|
|
|
--v19;
|
|
|
|
|
} while (Lnumb < v46);
|
|
|
|
|
v4 = v48;
|
|
|
|
|
}
|
|
|
|
|
v47 += 112;
|
|
|
|
|
++v18;
|
|
|
|
|
} while (v18 < v45);
|
|
|
|
|
}
|
|
|
|
|
SetLightFX(&x, &y, s_r, s_g, &s_b, &d_r, &d_g, &d_b);
|
|
|
|
|
v55 = 0;
|
|
|
|
|
v51 = x + 8 * y;
|
|
|
|
|
if (v45 > 0) {
|
|
|
|
|
v46 = v4;
|
|
|
|
|
do {
|
|
|
|
|
Lnumc = 1;
|
|
|
|
|
if (v44 > 1) {
|
|
|
|
|
v25 = 112 * v5 - 112;
|
|
|
|
|
v26 = v5 - 1;
|
|
|
|
|
v27 = &dung_map_rgba[16 * (d_b + v55 + 16 * v51) + d_g];
|
|
|
|
|
do {
|
|
|
|
|
v28 = (unsigned char)v27[Lnumc];
|
|
|
|
|
if (v28 < 128) {
|
|
|
|
|
v29 = (unsigned char)dung_map_radius[128 * nRadius + v28];
|
|
|
|
|
if (v26 >= 0 && v26 < 112 && v46 >= 0 && v46 < 112) {
|
|
|
|
|
v30 = (unsigned char *)dTransVal + v46 + v25;
|
|
|
|
|
v31 = (char)*v30;
|
|
|
|
|
//v17 = __OFSUB__(v29, v31);
|
|
|
|
|
v16 = v29 - v31 < 0;
|
|
|
|
|
v5 = v52;
|
|
|
|
|
if (v16) //if (v16 ^ v17)
|
|
|
|
|
*v30 = v29;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
++Lnumc;
|
|
|
|
|
v25 -= 112;
|
|
|
|
|
--v26;
|
|
|
|
|
} while (Lnumc < v44);
|
|
|
|
|
v4 = v48;
|
|
|
|
|
}
|
|
|
|
|
++v55;
|
|
|
|
|
--v46;
|
|
|
|
|
} while (v55 < v45);
|
|
|
|
|
}
|
|
|
|
|
SetLightFX(&x, &y, s_r, s_g, &s_b, &d_r, &d_g, &d_b);
|
|
|
|
|
v55 = 0;
|
|
|
|
|
v51 = x + 8 * y;
|
|
|
|
|
if (v43 > 0) {
|
|
|
|
|
Lnumd = v5;
|
|
|
|
|
*(_DWORD *)s_r = 112 * v5;
|
|
|
|
|
do {
|
|
|
|
|
v32 = 1;
|
|
|
|
|
if (v44 > 1) {
|
|
|
|
|
v33 = v4 + 1;
|
|
|
|
|
v34 = &dung_map_rgba[16 * (d_b + v55 + 16 * v51) + d_g];
|
|
|
|
|
do {
|
|
|
|
|
v35 = (unsigned char)v34[v32];
|
|
|
|
|
if (v35 < 128) {
|
|
|
|
|
v36 = (unsigned char)dung_map_radius[128 * nRadius + v35];
|
|
|
|
|
if (Lnumd >= 0 && Lnumd < 112 && v33 >= 0 && v33 < 112) {
|
|
|
|
|
v37 = (unsigned char *)dTransVal + v33 + *(_DWORD *)s_r;
|
|
|
|
|
v38 = (char)*v37;
|
|
|
|
|
//v17 = __OFSUB__(v36, v38);
|
|
|
|
|
v16 = v36 - v38 < 0;
|
|
|
|
|
v4 = v48;
|
|
|
|
|
if (v16) //if (v16 ^ v17)
|
|
|
|
|
*v37 = v36;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
++v32;
|
|
|
|
|
++v33;
|
|
|
|
|
} while (v32 < v44);
|
|
|
|
|
}
|
|
|
|
|
++v55;
|
|
|
|
|
--Lnumd;
|
|
|
|
|
*(_DWORD *)s_r -= 112;
|
|
|
|
|
} while (v55 < v43);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void __fastcall DoUnLight(int nXPos, int nYPos, int nRadius)
|
|
|
|
|
{
|
|
|
|
|
int max_y; // ebx
|
|
|
|
|
int y; // esi
|
|
|
|
|
int x; // edx
|
|
|
|
|
int max_x; // edi
|
|
|
|
|
signed int v7; // esi
|
|
|
|
|
int v8; // eax
|
|
|
|
|
int radius_block; // [esp+14h] [ebp+8h]
|
|
|
|
|
|
|
|
|
|
max_y = nYPos + nRadius + 1;
|
|
|
|
|
y = nYPos - (nRadius + 1);
|
|
|
|
|
x = nXPos - (nRadius + 1);
|
|
|
|
|
max_x = nXPos + nRadius + 1;
|
|
|
|
|
if (y < 0)
|
|
|
|
|
y = 0;
|
|
|
|
|
if (max_y > MAXDUNY)
|
|
|
|
|
max_y = MAXDUNY;
|
|
|
|
|
if (x < 0)
|
|
|
|
|
x = 0;
|
|
|
|
|
if (max_x > MAXDUNX)
|
|
|
|
|
max_x = MAXDUNX;
|
|
|
|
|
for (radius_block = y; radius_block < max_y; ++radius_block) {
|
|
|
|
|
v7 = x;
|
|
|
|
|
if (x < max_x) {
|
|
|
|
|
v8 = radius_block + 112 * x;
|
|
|
|
|
do {
|
|
|
|
|
if (v7 >= 0 && v7 < 112 && radius_block >= 0 && radius_block < 112)
|
|
|
|
|
dTransVal[0][v8] = dTransVal2[0][v8];
|
|
|
|
|
++v7;
|
|
|
|
|
v8 += 112;
|
|
|
|
|
} while (v7 < max_x);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void __fastcall DoUnVision(int nXPos, int nYPos, int nRadius)
|
|
|
|
|
{
|
|
|
|
|
int y2; // edi
|
|
|
|
|
int y1; // esi
|
|
|
|
|
int x1; // edx
|
|
|
|
|
int x2; // ecx
|
|
|
|
|
char *v7; // eax
|
|
|
|
|
int i; // ecx
|
|
|
|
|
int j; // edx
|
|
|
|
|
|
|
|
|
|
y2 = nYPos + nRadius + 1;
|
|
|
|
|
y1 = nYPos - (nRadius + 1);
|
|
|
|
|
x1 = nXPos - (nRadius + 1);
|
|
|
|
|
x2 = nRadius + 1 + nXPos;
|
|
|
|
|
if (y1 < 0)
|
|
|
|
|
y1 = 0;
|
|
|
|
|
if (y2 > MAXDUNY)
|
|
|
|
|
y2 = MAXDUNY;
|
|
|
|
|
if (x1 < 0)
|
|
|
|
|
x1 = 0;
|
|
|
|
|
if (x2 > MAXDUNX)
|
|
|
|
|
x2 = MAXDUNX;
|
|
|
|
|
if (x1 < x2) {
|
|
|
|
|
v7 = dFlags[x1];
|
|
|
|
|
i = x2 - x1;
|
|
|
|
|
do {
|
|
|
|
|
for (j = y1; j < y2; ++j)
|
|
|
|
|
v7[j] &= ~(DFLAG_VISIBLE | DFLAG_LIT);
|
|
|
|
|
v7 += 112;
|
|
|
|
|
--i;
|
|
|
|
|
} while (i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void __fastcall DoVision(int nXPos, int nYPos, int nRadius, unsigned char doautomap, int visible)
|
|
|
|
|
{
|
|
|
|
|
char *v5; // esi
|
|
|
|
|
int v6; // esi
|
|
|
|
|
int v7; // edi
|
|
|
|
|
unsigned char *v8; // eax
|
|
|
|
|
int v9; // ebx
|
|
|
|
|
int v10; // ecx
|
|
|
|
|
unsigned char v11; // dl
|
|
|
|
|
int v12; // ecx
|
|
|
|
|
int v13; // ecx
|
|
|
|
|
unsigned char v14; // cl
|
|
|
|
|
unsigned char v15; // dl
|
|
|
|
|
int v16; // ecx
|
|
|
|
|
int v17; // ecx
|
|
|
|
|
int i; // [esp+Ch] [ebp-34h]
|
|
|
|
|
unsigned char *v19; // [esp+10h] [ebp-30h]
|
|
|
|
|
int v20; // [esp+14h] [ebp-2Ch]
|
|
|
|
|
int v21; // [esp+18h] [ebp-28h]
|
|
|
|
|
int v22; // [esp+1Ch] [ebp-24h]
|
|
|
|
|
signed int v23; // [esp+20h] [ebp-20h]
|
|
|
|
|
signed int v24; // [esp+24h] [ebp-1Ch]
|
|
|
|
|
signed int v25; // [esp+28h] [ebp-18h]
|
|
|
|
|
signed int v26; // [esp+2Ch] [ebp-14h]
|
|
|
|
|
signed int v27; // [esp+30h] [ebp-10h]
|
|
|
|
|
int v28; // [esp+34h] [ebp-Ch]
|
|
|
|
|
int v29; // [esp+38h] [ebp-8h]
|
|
|
|
|
unsigned char v30; // [esp+3Fh] [ebp-1h]
|
|
|
|
|
unsigned char v31; // [esp+3Fh] [ebp-1h]
|
|
|
|
|
|
|
|
|
|
v28 = nYPos;
|
|
|
|
|
v29 = nXPos;
|
|
|
|
|
if (nXPos >= 0 && nXPos <= MAXDUNX && nYPos >= 0 && nYPos <= MAXDUNY) {
|
|
|
|
|
if (doautomap) {
|
|
|
|
|
v5 = &dFlags[nXPos][nYPos];
|
|
|
|
|
if (*v5 >= 0) {
|
|
|
|
|
SetAutomapView(nXPos, nXPos);
|
|
|
|
|
nYPos = v28;
|
|
|
|
|
nXPos = v29;
|
|
|
|
|
}
|
|
|
|
|
*v5 |= DFLAG_EXPLORED;
|
|
|
|
|
}
|
|
|
|
|
if (visible)
|
|
|
|
|
dFlags[nXPos][nYPos] |= DFLAG_LIT;
|
|
|
|
|
dFlags[nXPos][nYPos] |= DFLAG_VISIBLE;
|
|
|
|
|
}
|
|
|
|
|
v27 = 0;
|
|
|
|
|
v6 = doautomap;
|
|
|
|
|
v7 = doautomap;
|
|
|
|
|
do {
|
|
|
|
|
v20 = 0;
|
|
|
|
|
v8 = &vCrawlTable[0][1];
|
|
|
|
|
v19 = &vCrawlTable[0][1];
|
|
|
|
|
do {
|
|
|
|
|
v9 = 0;
|
|
|
|
|
v21 = 0;
|
|
|
|
|
for (i = 2 * (nRadius - RadiusAdj[v20]); v9 < i; v9 += 2) {
|
|
|
|
|
if (v21)
|
|
|
|
|
break;
|
|
|
|
|
v26 = 0;
|
|
|
|
|
v24 = 0;
|
|
|
|
|
v25 = 0;
|
|
|
|
|
v23 = 0;
|
|
|
|
|
if (v27) {
|
|
|
|
|
switch (v27) {
|
|
|
|
|
case 1:
|
|
|
|
|
v13 = v8[v9 - 1];
|
|
|
|
|
v6 = v29 - (unsigned char)v13;
|
|
|
|
|
v31 = v8[v9];
|
|
|
|
|
v7 = v28 - v31;
|
|
|
|
|
if ((_BYTE)v13 && v31) {
|
|
|
|
|
v25 = 1;
|
|
|
|
|
v24 = 1;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
v12 = v8[v9 - 1];
|
|
|
|
|
v30 = v8[v9];
|
|
|
|
|
v6 = v29 + (unsigned char)v12;
|
|
|
|
|
v7 = v28 - v30;
|
|
|
|
|
if ((_BYTE)v12 && v30) {
|
|
|
|
|
v26 = -1;
|
|
|
|
|
v23 = 1;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
v10 = v8[v9 - 1];
|
|
|
|
|
v6 = v29 - (unsigned char)v10;
|
|
|
|
|
v11 = v8[v9];
|
|
|
|
|
v7 = v28 + v11;
|
|
|
|
|
if ((_BYTE)v10) {
|
|
|
|
|
if (v11) {
|
|
|
|
|
v25 = -1;
|
|
|
|
|
v24 = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
v14 = v8[v9 - 1];
|
|
|
|
|
v15 = v8[v9];
|
|
|
|
|
v6 = v29 + v14;
|
|
|
|
|
v7 = v28 + v15;
|
|
|
|
|
if (v14 && v15) {
|
|
|
|
|
v26 = -1;
|
|
|
|
|
v23 = -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (v6 >= 0 && v6 <= MAXDUNX && v7 >= 0 && v7 <= MAXDUNY) {
|
|
|
|
|
v22 = v7 + 112 * v6;
|
|
|
|
|
v21 = (unsigned char)nBlockTable[dPiece[0][v22]];
|
|
|
|
|
if (!nBlockTable[dPiece[v6 + v26][v25 + v7]]
|
|
|
|
|
|| !nBlockTable[dPiece[v6 + v24][v23 + v7]]) {
|
|
|
|
|
v16 = v7 + 112 * v6;
|
|
|
|
|
if (doautomap) {
|
|
|
|
|
if (dFlags[0][v22] >= 0) {
|
|
|
|
|
SetAutomapView(v6, v7);
|
|
|
|
|
v16 = v7 + 112 * v6;
|
|
|
|
|
v8 = v19;
|
|
|
|
|
}
|
|
|
|
|
dFlags[0][v16] |= DFLAG_EXPLORED;
|
|
|
|
|
}
|
|
|
|
|
if (visible)
|
|
|
|
|
dFlags[0][v16] |= DFLAG_LIT;
|
|
|
|
|
dFlags[0][v16] |= DFLAG_VISIBLE;
|
|
|
|
|
if (!v21) {
|
|
|
|
|
v17 = dung_map[0][v16];
|
|
|
|
|
if (v17)
|
|
|
|
|
TransList[v17] = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
++v20;
|
|
|
|
|
v8 += 30;
|
|
|
|
|
v19 = v8;
|
|
|
|
|
} while ((INT_PTR)v8 < (INT_PTR)&vCrawlTable[23][1]);
|
|
|
|
|
++v27;
|
|
|
|
|
} while (v27 < 4);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void __cdecl FreeLightTable()
|
|
|
|
|
{
|
|
|
|
|
char *ptr;
|
|
|
|
|
|
|
|
|
|
ptr = pLightTbl;
|
|
|
|
|
pLightTbl = NULL;
|
|
|
|
|
mem_free_dbg(ptr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void __cdecl InitLightTable()
|
|
|
|
|
{
|
|
|
|
|
pLightTbl = (char *)DiabloAllocPtr(LIGHTSIZE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void __cdecl MakeLightTable()
|
|
|
|
|
{
|
|
|
|
|
char *v0; // ebx
|
|
|
|
|
signed int v1; // esi
|
|
|
|
|
unsigned char v2; // al
|
|
|
|
|
unsigned char v3; // cl
|
|
|
|
|
signed int v4; // edi
|
|
|
|
|
int v5; // edx
|
|
|
|
|
signed int v6; // edi
|
|
|
|
|
unsigned char v7; // cl
|
|
|
|
|
unsigned char v8; // al
|
|
|
|
|
signed int v9; // edx
|
|
|
|
|
unsigned char v10; // cl
|
|
|
|
|
unsigned char v11; // al
|
|
|
|
|
char *v12; // ebx
|
|
|
|
|
char *v13; // ebx
|
|
|
|
|
INT_PTR v14; // ecx
|
|
|
|
|
signed int v15; // esi
|
|
|
|
|
char v16; // al
|
|
|
|
|
int v17; // edx
|
|
|
|
|
INT_PTR v18; // ebx
|
|
|
|
|
signed int v19; // esi
|
|
|
|
|
_BYTE *v20; // ebx
|
|
|
|
|
char *v21; // ebx
|
|
|
|
|
INT_PTR v22; // edi
|
|
|
|
|
unsigned char *v23; // esi
|
|
|
|
|
signed int v24; // edx
|
|
|
|
|
unsigned char *v25; // esi
|
|
|
|
|
signed int v26; // edx
|
|
|
|
|
signed int v27; // ecx
|
|
|
|
|
char v28; // al
|
|
|
|
|
_BYTE *v29; // ebx
|
|
|
|
|
signed int v30; // edx
|
|
|
|
|
char v31; // al
|
|
|
|
|
signed int v32; // ecx
|
|
|
|
|
signed int v33; // ecx
|
|
|
|
|
char v34; // al
|
|
|
|
|
int v35; // eax
|
|
|
|
|
signed int v36; // esi
|
|
|
|
|
char *v37; // eax
|
|
|
|
|
signed int v38; // ebx
|
|
|
|
|
int v39; // esi
|
|
|
|
|
double v40; // st7
|
|
|
|
|
double v41; // st6
|
|
|
|
|
INT_PTR v42; // ecx
|
|
|
|
|
char *v43; // ecx
|
|
|
|
|
BOOLEAN v44; // zf
|
|
|
|
|
char v45[16]; // [esp+14h] [ebp-2Ch] /* check */
|
|
|
|
|
int v46; // [esp+24h] [ebp-1Ch]
|
|
|
|
|
int v47; // [esp+28h] [ebp-18h]
|
|
|
|
|
char *v48; // [esp+2Ch] [ebp-14h]
|
|
|
|
|
int v49; // [esp+30h] [ebp-10h]
|
|
|
|
|
INT_PTR v50; // [esp+34h] [ebp-Ch]
|
|
|
|
|
INT_PTR v51; // [esp+38h] [ebp-8h]
|
|
|
|
|
INT_PTR v52; // [esp+3Ch] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
v51 = 0;
|
|
|
|
|
v0 = pLightTbl;
|
|
|
|
|
v1 = light4flag != 0 ? 3 : 15;
|
|
|
|
|
v50 = light4flag != 0 ? 3 : 15;
|
|
|
|
|
if (v1 > 0) {
|
|
|
|
|
v49 = light4flag != 0 ? 3 : 15;
|
|
|
|
|
do {
|
|
|
|
|
*v0++ = 0;
|
|
|
|
|
v52 = 0;
|
|
|
|
|
do {
|
|
|
|
|
v2 = 16 * v52 + 15;
|
|
|
|
|
v3 = v51 + 16 * v52;
|
|
|
|
|
v4 = 0;
|
|
|
|
|
do {
|
|
|
|
|
if (v4 || v52)
|
|
|
|
|
*v0++ = v3;
|
|
|
|
|
if (v3 >= v2) {
|
|
|
|
|
v2 = 0;
|
|
|
|
|
v3 = 0;
|
|
|
|
|
} else {
|
|
|
|
|
++v3;
|
|
|
|
|
}
|
|
|
|
|
++v4;
|
|
|
|
|
} while (v4 < 16);
|
|
|
|
|
++v52;
|
|
|
|
|
} while (v52 < 8);
|
|
|
|
|
v52 = 16;
|
|
|
|
|
v5 = v51 >> 1;
|
|
|
|
|
do {
|
|
|
|
|
v6 = 8;
|
|
|
|
|
v7 = v5 + 8 * v52;
|
|
|
|
|
v8 = 8 * v52 + 7;
|
|
|
|
|
do {
|
|
|
|
|
*v0++ = v7;
|
|
|
|
|
if (v7 >= v8) {
|
|
|
|
|
v8 = 0;
|
|
|
|
|
v7 = 0;
|
|
|
|
|
} else {
|
|
|
|
|
++v7;
|
|
|
|
|
}
|
|
|
|
|
--v6;
|
|
|
|
|
} while (v6);
|
|
|
|
|
++v52;
|
|
|
|
|
} while (v52 < 20);
|
|
|
|
|
v52 = 10;
|
|
|
|
|
do {
|
|
|
|
|
v9 = 16;
|
|
|
|
|
v10 = v51 + 16 * v52;
|
|
|
|
|
v11 = 16 * v52 + 15;
|
|
|
|
|
do {
|
|
|
|
|
*v0++ = v10;
|
|
|
|
|
if (v10 >= v11) {
|
|
|
|
|
v11 = 0;
|
|
|
|
|
v10 = 0;
|
|
|
|
|
} else {
|
|
|
|
|
++v10;
|
|
|
|
|
}
|
|
|
|
|
if (v10 == LOBYTE(-1)) {
|
|
|
|
|
v11 = 0;
|
|
|
|
|
v10 = 0;
|
|
|
|
|
}
|
|
|
|
|
--v9;
|
|
|
|
|
} while (v9);
|
|
|
|
|
++v52;
|
|
|
|
|
} while (v52 < 16);
|
|
|
|
|
if (light4flag)
|
|
|
|
|
v51 += 5;
|
|
|
|
|
else
|
|
|
|
|
++v51;
|
|
|
|
|
--v49;
|
|
|
|
|
} while (v49);
|
|
|
|
|
}
|
|
|
|
|
memset(v0, 0, 0x100u);
|
|
|
|
|
v12 = v0 + 256;
|
|
|
|
|
if (leveltype == DTYPE_HELL) {
|
|
|
|
|
v13 = pLightTbl;
|
|
|
|
|
if (v1 > 0) {
|
|
|
|
|
v14 = v50;
|
|
|
|
|
v49 = v50;
|
|
|
|
|
do {
|
|
|
|
|
v52 = 0;
|
|
|
|
|
v45[0] = 0;
|
|
|
|
|
v51 = v14;
|
|
|
|
|
v15 = 1;
|
|
|
|
|
v48 = (char *)(v50 / v14);
|
|
|
|
|
v47 = v50 % v14;
|
|
|
|
|
v16 = 1;
|
|
|
|
|
do {
|
|
|
|
|
v17 = v51;
|
|
|
|
|
v45[v15] = v16;
|
|
|
|
|
v51 = v47 + v17;
|
|
|
|
|
if (v47 + v17 > v14 && v15 < 15) {
|
|
|
|
|
++v15;
|
|
|
|
|
v51 -= v14;
|
|
|
|
|
v45[v15] = v16;
|
|
|
|
|
}
|
|
|
|
|
if ((char *)++v52 == v48) {
|
|
|
|
|
++v16;
|
|
|
|
|
v52 = 0;
|
|
|
|
|
}
|
|
|
|
|
++v15;
|
|
|
|
|
} while (v15 < 16);
|
|
|
|
|
*v13 = 0;
|
|
|
|
|
v18 = (INT_PTR)(v13 + 1);
|
|
|
|
|
*(_DWORD *)v18 = *(_DWORD *)&v45[1];
|
|
|
|
|
*(_DWORD *)(v18 + 4) = *(_DWORD *)&v45[5];
|
|
|
|
|
*(_DWORD *)(v18 + 8) = *(_DWORD *)&v45[9];
|
|
|
|
|
*(_WORD *)(v18 + 12) = *(_WORD *)&v45[13];
|
|
|
|
|
*(_BYTE *)(v18 + 14) = v45[15];
|
|
|
|
|
v19 = 15;
|
|
|
|
|
v20 = (_BYTE *)(v18 + 15);
|
|
|
|
|
do
|
|
|
|
|
*v20++ = v45[v19--];
|
|
|
|
|
while (v19 > 0);
|
|
|
|
|
*v20 = 1;
|
|
|
|
|
v13 = (char *)v20 + 225;
|
|
|
|
|
--v14;
|
|
|
|
|
--v49;
|
|
|
|
|
} while (v49);
|
|
|
|
|
}
|
|
|
|
|
*v13 = 0;
|
|
|
|
|
v21 = v13 + 1;
|
|
|
|
|
memset(v21, 1u, 0x1Cu);
|
|
|
|
|
v22 = (INT_PTR)(v21 + 28);
|
|
|
|
|
*(_WORD *)v22 = 257;
|
|
|
|
|
*(_BYTE *)(v22 + 2) = 1;
|
|
|
|
|
v12 = v21 + 255;
|
|
|
|
|
}
|
|
|
|
|
v23 = LoadFileInMem("PlrGFX\\Infra.TRN", 0);
|
|
|
|
|
v24 = 0;
|
|
|
|
|
do
|
|
|
|
|
*v12++ = v23[v24++];
|
|
|
|
|
while (v24 < 256);
|
|
|
|
|
mem_free_dbg(v23);
|
|
|
|
|
v25 = LoadFileInMem("PlrGFX\\Stone.TRN", 0);
|
|
|
|
|
v26 = 0;
|
|
|
|
|
do
|
|
|
|
|
*v12++ = v25[v26++];
|
|
|
|
|
while (v26 < 256);
|
|
|
|
|
mem_free_dbg(v25);
|
|
|
|
|
v27 = 0;
|
|
|
|
|
do {
|
|
|
|
|
v28 = -30;
|
|
|
|
|
do {
|
|
|
|
|
if (v27 || v28 != -30)
|
|
|
|
|
*v12 = v28;
|
|
|
|
|
else
|
|
|
|
|
*v12 = 0;
|
|
|
|
|
++v12;
|
|
|
|
|
++v28;
|
|
|
|
|
} while ((unsigned char)v28 < 0xEFu);
|
|
|
|
|
*v12 = 0;
|
|
|
|
|
v29 = (unsigned char *)v12 + 1;
|
|
|
|
|
*v29++ = 0;
|
|
|
|
|
*v29 = 0;
|
|
|
|
|
v12 = (char *)v29 + 1;
|
|
|
|
|
++v27;
|
|
|
|
|
} while (v27 < 8);
|
|
|
|
|
v30 = 4;
|
|
|
|
|
do {
|
|
|
|
|
v31 = -32;
|
|
|
|
|
v32 = 8;
|
|
|
|
|
do {
|
|
|
|
|
*v12++ = v31;
|
|
|
|
|
v31 += 2;
|
|
|
|
|
--v32;
|
|
|
|
|
} while (v32);
|
|
|
|
|
--v30;
|
|
|
|
|
} while (v30);
|
|
|
|
|
v33 = 6;
|
|
|
|
|
do {
|
|
|
|
|
v34 = -32;
|
|
|
|
|
do
|
|
|
|
|
*v12++ = v34++;
|
|
|
|
|
while ((unsigned char)v34 < 0xEFu);
|
|
|
|
|
*v12++ = 0;
|
|
|
|
|
--v33;
|
|
|
|
|
} while (v33);
|
|
|
|
|
v35 = 0;
|
|
|
|
|
v51 = (INT_PTR)dung_map_radius;
|
|
|
|
|
v52 = 8;
|
|
|
|
|
do {
|
|
|
|
|
v36 = 0;
|
|
|
|
|
v49 = 0;
|
|
|
|
|
v50 = v35 + 1;
|
|
|
|
|
do {
|
|
|
|
|
if (v36 <= v52)
|
|
|
|
|
*(_BYTE *)(v51 + v36) = (signed __int64)((double)v49 * 15.0 / ((double)v50 * 8.0) + 0.5);
|
|
|
|
|
else
|
|
|
|
|
*(_BYTE *)(v51 + v36) = 15;
|
|
|
|
|
v49 = ++v36;
|
|
|
|
|
} while (v36 < 128);
|
|
|
|
|
v52 += 8;
|
|
|
|
|
v51 += 128;
|
|
|
|
|
v35 = v50;
|
|
|
|
|
} while (v52 < 136);
|
|
|
|
|
v49 = 0;
|
|
|
|
|
v37 = dung_map_rgba;
|
|
|
|
|
do {
|
|
|
|
|
v52 = 0;
|
|
|
|
|
do {
|
|
|
|
|
v48 = v37;
|
|
|
|
|
v50 = v49;
|
|
|
|
|
v47 = 16;
|
|
|
|
|
do {
|
|
|
|
|
v38 = 0;
|
|
|
|
|
v39 = v50 * v50;
|
|
|
|
|
v51 = v52;
|
|
|
|
|
do {
|
|
|
|
|
v46 = v39 + v51 * v51;
|
|
|
|
|
v46 = (unsigned char)(signed __int64)sqrt((double)v46);
|
|
|
|
|
v40 = (double)v46;
|
|
|
|
|
if (v40 >= 0.0)
|
|
|
|
|
v41 = 0.5;
|
|
|
|
|
else
|
|
|
|
|
v41 = -0.5;
|
|
|
|
|
v42 = (INT_PTR)v48;
|
|
|
|
|
v51 += 8;
|
|
|
|
|
v48[v38++] = (signed __int64)(v41 + v40);
|
|
|
|
|
} while (v38 < 16);
|
|
|
|
|
v50 += 8;
|
|
|
|
|
v43 = (char *)(v42 + 16);
|
|
|
|
|
v44 = v47-- == 1;
|
|
|
|
|
v48 = v43;
|
|
|
|
|
} while (!v44);
|
|
|
|
|
--v52;
|
|
|
|
|
v37 = v43;
|
|
|
|
|
} while (v52 > -8);
|
|
|
|
|
--v49;
|
|
|
|
|
} while ((INT_PTR)v43 < (INT_PTR)&dung_map_rgba[16384]);
|
|
|
|
|
}
|
|
|
|
|
// 525728: using guessed type int light4flag;
|
|
|
|
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
void __cdecl ToggleLighting()
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
lightflag ^= 1;
|
|
|
|
|
if (lightflag) {
|
|
|
|
|
memset(dTransVal, 0, sizeof(dTransVal));
|
|
|
|
|
} else {
|
|
|
|
|
memcpy(dTransVal, dTransVal2, sizeof(dTransVal));
|
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
|
|
|
if (plr[i].plractive) {
|
|
|
|
|
if (currlevel == plr[i].plrlevel)
|
|
|
|
|
DoLighting(plr[i].WorldX, plr[i].WorldY, plr[i]._pLightRad, -1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
void __cdecl InitLightMax()
|
|
|
|
|
{
|
|
|
|
|
lightmax = light4flag == 0 ? 15 : 3;
|
|
|
|
|
}
|
|
|
|
|
// 525728: using guessed type int light4flag;
|
|
|
|
|
// 642A14: using guessed type char lightmax;
|
|
|
|
|
|
|
|
|
|
void __cdecl InitLighting()
|
|
|
|
|
{
|
|
|
|
|
signed int v0; // eax
|
|
|
|
|
|
|
|
|
|
v0 = 0;
|
|
|
|
|
numlights = 0;
|
|
|
|
|
dolighting = 0;
|
|
|
|
|
lightflag = 0;
|
|
|
|
|
do {
|
|
|
|
|
lightactive[v0] = v0;
|
|
|
|
|
++v0;
|
|
|
|
|
} while (v0 < 32);
|
|
|
|
|
}
|
|
|
|
|
// 642A18: using guessed type int dolighting;
|
|
|
|
|
// 646A28: using guessed type int lightflag;
|
|
|
|
|
|
|
|
|
|
int __fastcall AddLight(int x, int y, int r)
|
|
|
|
|
{
|
|
|
|
|
int lid; // eax
|
|
|
|
|
|
|
|
|
|
lid = -1;
|
|
|
|
|
if (!lightflag && numlights < 32) {
|
|
|
|
|
lid = lightactive[numlights++];
|
|
|
|
|
dolighting = 1;
|
|
|
|
|
LightList[lid]._lx = x;
|
|
|
|
|
LightList[lid]._ly = y;
|
|
|
|
|
LightList[lid]._lradius = r;
|
|
|
|
|
LightList[lid]._xoff = 0;
|
|
|
|
|
LightList[lid]._yoff = 0;
|
|
|
|
|
LightList[lid]._ldel = 0;
|
|
|
|
|
LightList[lid]._lunflag = 0;
|
|
|
|
|
}
|
|
|
|
|
return lid;
|
|
|
|
|
}
|
|
|
|
|
// 642A18: using guessed type int dolighting;
|
|
|
|
|
// 646A28: using guessed type int lightflag;
|
|
|
|
|
|
|
|
|
|
void __fastcall AddUnLight(int i)
|
|
|
|
|
{
|
|
|
|
|
if (!lightflag && i != -1) {
|
|
|
|
|
LightList[i]._ldel = 1;
|
|
|
|
|
dolighting = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 642A18: using guessed type int dolighting;
|
|
|
|
|
// 646A28: using guessed type int lightflag;
|
|
|
|
|
|
|
|
|
|
void __fastcall ChangeLightRadius(int i, int r)
|
|
|
|
|
{
|
|
|
|
|
if (!lightflag && i != -1) {
|
|
|
|
|
LightList[i]._lunx = LightList[i]._lx;
|
|
|
|
|
LightList[i]._luny = LightList[i]._ly;
|
|
|
|
|
LightList[i]._lunflag = 1;
|
|
|
|
|
LightList[i]._lunr = LightList[i]._lradius;
|
|
|
|
|
dolighting = 1;
|
|
|
|
|
LightList[i]._lradius = r;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 642A18: using guessed type int dolighting;
|
|
|
|
|
// 646A28: using guessed type int lightflag;
|
|
|
|
|
|
|
|
|
|
void __fastcall ChangeLightXY(int i, int x, int y)
|
|
|
|
|
{
|
|
|
|
|
if (!lightflag && i != -1) {
|
|
|
|
|
LightList[i]._lunx = LightList[i]._lx;
|
|
|
|
|
LightList[i]._lunflag = 1;
|
|
|
|
|
dolighting = 1;
|
|
|
|
|
LightList[i]._luny = LightList[i]._ly;
|
|
|
|
|
LightList[i]._lunr = LightList[i]._lradius;
|
|
|
|
|
LightList[i]._ly = y;
|
|
|
|
|
LightList[i]._lx = x;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 642A18: using guessed type int dolighting;
|
|
|
|
|
// 646A28: using guessed type int lightflag;
|
|
|
|
|
|
|
|
|
|
void __fastcall ChangeLightOff(int i, int x, int y)
|
|
|
|
|
{
|
|
|
|
|
if (!lightflag && i != -1) {
|
|
|
|
|
LightList[i]._xoff = x;
|
|
|
|
|
LightList[i]._lunx = LightList[i]._lx;
|
|
|
|
|
LightList[i]._luny = LightList[i]._ly;
|
|
|
|
|
LightList[i]._lunr = LightList[i]._lradius;
|
|
|
|
|
LightList[i]._lunflag = 1;
|
|
|
|
|
LightList[i]._yoff = y;
|
|
|
|
|
dolighting = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 642A18: using guessed type int dolighting;
|
|
|
|
|
// 646A28: using guessed type int lightflag;
|
|
|
|
|
|
|
|
|
|
void __fastcall ChangeLight(int i, int x, int y, int r)
|
|
|
|
|
{
|
|
|
|
|
if (!lightflag && i != -1) {
|
|
|
|
|
LightList[i]._lunx = LightList[i]._lx;
|
|
|
|
|
LightList[i]._luny = LightList[i]._ly;
|
|
|
|
|
LightList[i]._lunr = LightList[i]._lradius;
|
|
|
|
|
LightList[i]._lunflag = 1;
|
|
|
|
|
LightList[i]._lx = x;
|
|
|
|
|
LightList[i]._ly = y;
|
|
|
|
|
LightList[i]._lradius = r;
|
|
|
|
|
dolighting = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 642A18: using guessed type int dolighting;
|
|
|
|
|
// 646A28: using guessed type int lightflag;
|
|
|
|
|
|
|
|
|
|
void __cdecl ProcessLightList()
|
|
|
|
|
{
|
|
|
|
|
int v0; // ebp
|
|
|
|
|
int v1; // edi
|
|
|
|
|
int v2; // esi
|
|
|
|
|
int i; // esi
|
|
|
|
|
int v4; // eax
|
|
|
|
|
int v5; // ecx
|
|
|
|
|
unsigned char v6; // bl
|
|
|
|
|
char v7; // dl
|
|
|
|
|
|
|
|
|
|
v0 = 0;
|
|
|
|
|
if (!lightflag) {
|
|
|
|
|
if (dolighting) {
|
|
|
|
|
v1 = numlights;
|
|
|
|
|
if (numlights > 0) {
|
|
|
|
|
do {
|
|
|
|
|
v2 = (unsigned char)lightactive[v0];
|
|
|
|
|
if (LightList[v2]._ldel)
|
|
|
|
|
DoUnLight(LightList[v2]._lx, LightList[v2]._ly, LightList[v2]._lradius);
|
|
|
|
|
if (LightList[v2]._lunflag) {
|
|
|
|
|
DoUnLight(LightList[v2]._lunx, LightList[v2]._luny, LightList[v2]._lunr);
|
|
|
|
|
LightList[v2]._lunflag = 0;
|
|
|
|
|
}
|
|
|
|
|
++v0;
|
|
|
|
|
} while (v0 < v1);
|
|
|
|
|
}
|
|
|
|
|
for (i = 0; i < v1; ++i) {
|
|
|
|
|
v4 = (unsigned char)lightactive[i];
|
|
|
|
|
if (!LightList[v4]._ldel)
|
|
|
|
|
DoLighting(
|
|
|
|
|
LightList[v4]._lx,
|
|
|
|
|
LightList[v4]._ly,
|
|
|
|
|
LightList[v4]._lradius,
|
|
|
|
|
(unsigned char)lightactive[i]);
|
|
|
|
|
}
|
|
|
|
|
v5 = 0;
|
|
|
|
|
if (v1 > 0) {
|
|
|
|
|
do {
|
|
|
|
|
v6 = lightactive[v5];
|
|
|
|
|
if (LightList[v6]._ldel) {
|
|
|
|
|
v7 = lightactive[--v1];
|
|
|
|
|
lightactive[v1] = v6;
|
|
|
|
|
lightactive[v5] = v7;
|
|
|
|
|
} else {
|
|
|
|
|
++v5;
|
|
|
|
|
}
|
|
|
|
|
} while (v5 < v1);
|
|
|
|
|
numlights = v1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
dolighting = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 642A18: using guessed type int dolighting;
|
|
|
|
|
// 646A28: using guessed type int lightflag;
|
|
|
|
|
|
|
|
|
|
void __cdecl SavePreLighting()
|
|
|
|
|
{
|
|
|
|
|
memcpy(dTransVal2, dTransVal, 0x3100u);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void __cdecl InitVision()
|
|
|
|
|
{
|
|
|
|
|
numvision = 0;
|
|
|
|
|
dovision = 0;
|
|
|
|
|
visionid = 1;
|
|
|
|
|
if (TransVal > 0)
|
|
|
|
|
memset(TransList, 0, TransVal);
|
|
|
|
|
}
|
|
|
|
|
// 5A5590: using guessed type char TransVal;
|
|
|
|
|
// 642A0C: using guessed type int dovision;
|
|
|
|
|
|
|
|
|
|
int __fastcall AddVision(int x, int y, int r, BOOL mine)
|
|
|
|
|
{
|
|
|
|
|
int vid; // eax
|
|
|
|
|
int v5; // esi
|
|
|
|
|
|
|
|
|
|
vid = r;
|
|
|
|
|
if (numvision < 32) {
|
|
|
|
|
v5 = numvision;
|
|
|
|
|
dovision = 1;
|
|
|
|
|
VisionList[v5]._lx = x;
|
|
|
|
|
VisionList[v5]._ly = y;
|
|
|
|
|
VisionList[v5]._lradius = r;
|
|
|
|
|
vid = visionid++;
|
|
|
|
|
VisionList[v5]._lid = vid;
|
|
|
|
|
VisionList[v5]._ldel = 0;
|
|
|
|
|
++numvision;
|
|
|
|
|
VisionList[v5]._lunflag = 0;
|
|
|
|
|
VisionList[v5]._lflags = mine != 0;
|
|
|
|
|
}
|
|
|
|
|
return vid;
|
|
|
|
|
}
|
|
|
|
|
// 642A0C: using guessed type int dovision;
|
|
|
|
|
|
|
|
|
|
void __fastcall ChangeVisionRadius(int id, int r)
|
|
|
|
|
{
|
|
|
|
|
int i; // esi
|
|
|
|
|
|
|
|
|
|
if (numvision > 0) {
|
|
|
|
|
for (i = 0; i < numvision; i++) {
|
|
|
|
|
if (VisionList[i]._lid == id) {
|
|
|
|
|
VisionList[i]._lunflag = 1;
|
|
|
|
|
VisionList[i]._lunx = VisionList[i]._lx;
|
|
|
|
|
VisionList[i]._luny = VisionList[i]._ly;
|
|
|
|
|
VisionList[i]._lunr = VisionList[i]._lradius;
|
|
|
|
|
VisionList[i]._lradius = r;
|
|
|
|
|
dovision = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 642A0C: using guessed type int dovision;
|
|
|
|
|
|
|
|
|
|
void __fastcall ChangeVisionXY(int id, int x, int y)
|
|
|
|
|
{
|
|
|
|
|
int i; // esi
|
|
|
|
|
|
|
|
|
|
if (numvision > 0) {
|
|
|
|
|
for (i = 0; i < numvision; i++) {
|
|
|
|
|
if (VisionList[i]._lid == id) {
|
|
|
|
|
VisionList[i]._lunflag = 1;
|
|
|
|
|
VisionList[i]._lunx = VisionList[i]._lx;
|
|
|
|
|
VisionList[i]._luny = VisionList[i]._ly;
|
|
|
|
|
VisionList[i]._lunr = VisionList[i]._lradius;
|
|
|
|
|
VisionList[i]._lx = x;
|
|
|
|
|
VisionList[i]._ly = y;
|
|
|
|
|
dovision = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 642A0C: using guessed type int dovision;
|
|
|
|
|
|
|
|
|
|
void __cdecl ProcessVisionList()
|
|
|
|
|
{
|
|
|
|
|
BOOLEAN delflag; // ecx
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
if (dovision) {
|
|
|
|
|
for (i = 0; i < numvision; i++) {
|
|
|
|
|
if (VisionList[i]._ldel)
|
|
|
|
|
DoUnVision(VisionList[i]._lx, VisionList[i]._ly, VisionList[i]._lradius);
|
|
|
|
|
if (VisionList[i]._lunflag) {
|
|
|
|
|
DoUnVision(VisionList[i]._lunx, VisionList[i]._luny, VisionList[i]._lunr);
|
|
|
|
|
VisionList[i]._lunflag = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (TransVal > 0)
|
|
|
|
|
memset(TransList, 0, TransVal);
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < numvision; i++) {
|
|
|
|
|
if (!VisionList[i]._ldel)
|
|
|
|
|
DoVision(VisionList[i]._lx, VisionList[i]._ly, VisionList[i]._lradius, VisionList[i]._lflags & 1, VisionList[i]._lflags & 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
do {
|
|
|
|
|
delflag = 0;
|
|
|
|
|
if (numvision <= 0)
|
|
|
|
|
break;
|
|
|
|
|
for (i = 0; i < numvision; i++) {
|
|
|
|
|
if (VisionList[i]._ldel) {
|
|
|
|
|
--numvision;
|
|
|
|
|
if (numvision > 0 && i != numvision)
|
|
|
|
|
qmemcpy(&VisionList[i], &VisionList[numvision], sizeof(LightListStruct));
|
|
|
|
|
delflag = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} while (delflag);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dovision = 0;
|
|
|
|
|
}
|
|
|
|
|
// 5A5590: using guessed type char TransVal;
|
|
|
|
|
// 642A0C: using guessed type int dovision;
|
|
|
|
|
|
|
|
|
|
void __cdecl lighting_color_cycling()
|
|
|
|
|
{
|
|
|
|
|
char *v0; // eax
|
|
|
|
|
signed int v1; // ebx
|
|
|
|
|
char *v2; // eax
|
|
|
|
|
char *v3; // edi
|
|
|
|
|
char v4; // dl
|
|
|
|
|
const void *v5; // esi
|
|
|
|
|
|
|
|
|
|
if (leveltype == DTYPE_HELL) {
|
|
|
|
|
v0 = pLightTbl;
|
|
|
|
|
if ((light4flag != 0 ? 4 : 16) > 0) {
|
|
|
|
|
v1 = light4flag != 0 ? 4 : 16;
|
|
|
|
|
do {
|
|
|
|
|
v2 = v0 + 1;
|
|
|
|
|
v3 = v2;
|
|
|
|
|
v4 = *v2;
|
|
|
|
|
v5 = v2 + 1;
|
|
|
|
|
v2 += 30;
|
|
|
|
|
qmemcpy(v3, v5, 0x1Eu);
|
|
|
|
|
*v2 = v4;
|
|
|
|
|
v0 = v2 + 225;
|
|
|
|
|
--v1;
|
|
|
|
|
} while (v1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 525728: using guessed type int light4flag;
|
|
|
|
|
|
|
|
|
|
DEVILUTION_END_NAMESPACE
|