diff --git a/Source/towners.cpp b/Source/towners.cpp index c4081895f..2a8a52352 100644 --- a/Source/towners.cpp +++ b/Source/towners.cpp @@ -8,7 +8,7 @@ int numtowners; // idb DWORD sgdwCowClicks; int bannerflag; // weak // unused 0x6AAC28 int boyloadflag; // weak -void *pCowCels; // idb +BYTE *pCowCels; TownerStruct towner[16]; const int snSFX[3][3] = { @@ -347,60 +347,36 @@ void __cdecl InitDrunk() void __cdecl InitCows() { - unsigned char *v0; // eax - int v1; // ecx - signed int v2; // ebx - int v3; // esi - int v4; // ebp - int v5; // eax - void **v6; // ecx - int v7; // edi - int v9; // edx - int v10; // eax - int v11; // ecx - _DWORD *v12; // esi - int v13; // edx - _DWORD *v14; // esi - _DWORD *v15; // eax - int v16; // [esp+10h] [ebp-4h] - - v0 = LoadFileInMem("Towners\\Animals\\Cow.CEL", 0); - v1 = numtowners; - pCowCels = v0; - v2 = 0; - do { - v3 = TownCowX[v2]; - v4 = TownCowDir[v2]; - v16 = TownCowY[v2]; - InitTownerInfo(v1, 128, 0, TOWN_COW, TownCowX[v2], v16, -1, 10); - v5 = numtowners; - v6 = (void **)&towner[numtowners]._tNData; - *v6 = pCowCels; - SetTownerGPtrs(*v6, (void **)towner[v5]._tNAnim); - v7 = numtowners; - towner[numtowners]._tNFrames = 12; - NewTownerAnim(v7, towner[0]._tNAnim[v4 + 58 * v7], 12, 3); - v7 *= 232; - *(int *)((char *)&towner[0]._tAnimFrame + v7) = random(0, 11) + 1; - *(int *)((char *)&towner[0]._tSelFlag + v7) = 1; - strcpy(&towner[0]._tName[v7], "Cow"); - v9 = v3 + cowoffx[v4]; - v10 = v16 + cowoffy[v4]; - v11 = numtowners; - v12 = (_DWORD *)((char *)dMonster + 4 * (v10 + 112 * v3)); - if (!*v12) - *v12 = -1 - numtowners; - v13 = 112 * v9; - v14 = (_DWORD *)((char *)dMonster + 4 * (v13 + v16)); - if (!*v14) - *v14 = -1 - v11; - v15 = (_DWORD *)((char *)dMonster + 4 * (v10 + v13)); - if (!*v15) - *v15 = -1 - v11; - ++v2; - v1 = v11 + 1; - numtowners = v1; - } while (v2 < 3); + int i, dir, tnum; + int x, y, xo, yo; + + pCowCels = LoadFileInMem("Towners\\Animals\\Cow.CEL", 0); + for (i = 0; i < 3; i++) { + dir = TownCowDir[i]; + InitTownerInfo(numtowners, 128, 0, TOWN_COW, TownCowX[i], TownCowY[i], -1, 10); + tnum = numtowners; + towner[tnum]._tNData = pCowCels; + SetTownerGPtrs(towner[tnum]._tNData, (void **)towner[tnum]._tNAnim); + towner[tnum]._tNFrames = 12; + NewTownerAnim(numtowners, towner[tnum]._tNAnim[dir], towner[tnum]._tNFrames, 3); + towner[tnum]._tAnimFrame = random(0, 11) + 1; + towner[tnum]._tSelFlag = 1; + strcpy(towner[tnum]._tName, "Cow"); + + x = TownCowX[i]; + y = TownCowY[i]; + xo = x + cowoffx[dir]; + yo = y + cowoffy[dir]; + if (!dMonster[x][yo]) + dMonster[x][yo] = -(tnum + 1); + if (!dMonster[xo][y]) + dMonster[xo][y] = -(tnum + 1); + if (!dMonster[xo][yo]) + dMonster[xo][yo] = -(tnum + 1); + + tnum++; + numtowners = tnum; + } } // 6AAC2C: using guessed type int boyloadflag; diff --git a/Source/towners.h b/Source/towners.h index 7d502b0fa..abd103ba1 100644 --- a/Source/towners.h +++ b/Source/towners.h @@ -6,7 +6,7 @@ extern int storeflag; // weak extern int numtowners; // idb extern int bannerflag; // weak // unused 0x6AAC28 extern int boyloadflag; // weak -extern void *pCowCels; // idb +extern BYTE *pCowCels; // idb extern TownerStruct towner[16]; int __fastcall GetActiveTowner(int t);