Queen AI fixes. Still need to check Head and Egg code.

This commit is contained in:
sirlemonhead 2019-11-16 22:32:12 +00:00 committed by Christoph Oelckers
parent 6da91a4c1f
commit 4ca74ee06a

View file

@ -12,6 +12,7 @@
#include "anims.h" #include "anims.h"
#include "player.h" #include "player.h"
#include "sound.h" #include "sound.h"
#include "names.h"
#include <assert.h> #include <assert.h>
#define kMaxQueens 1 #define kMaxQueens 1
@ -1161,10 +1162,6 @@ void FuncQueenHead(int a, int nDamage, int nRun)
int BuildQueen(int nSprite, int x, int y, int z, int nSector, int nAngle, int nChannel) int BuildQueen(int nSprite, int x, int y, int z, int nSector, int nAngle, int nChannel)
{ {
int xVal = x;
int yVal = y;
int zVal = z;
QueenCount--; QueenCount--;
short nQueen = QueenCount; short nQueen = QueenCount;
@ -1179,16 +1176,17 @@ int BuildQueen(int nSprite, int x, int y, int z, int nSector, int nAngle, int nC
else else
{ {
changespritestat(nSprite, 121); changespritestat(nSprite, 121);
yVal = sprite[nSprite].y; x = sprite[nSprite].x;
zVal = sector[sprite[nSprite].sectnum].floorz; y = sprite[nSprite].y;
z = sector[sprite[nSprite].sectnum].floorz;
nAngle = sprite[nSprite].ang; nAngle = sprite[nSprite].ang;
} }
assert(nSprite >= 0 && nSprite < kMaxSprites); assert(nSprite >= 0 && nSprite < kMaxSprites);
sprite[nSprite].x = xVal; sprite[nSprite].x = x;
sprite[nSprite].y = yVal; sprite[nSprite].y = y;
sprite[nSprite].z = zVal; sprite[nSprite].z = z;
sprite[nSprite].cstat = 0x101; sprite[nSprite].cstat = 0x101;
sprite[nSprite].pal = 0; sprite[nSprite].pal = 0;
sprite[nSprite].shade = -12; sprite[nSprite].shade = -12;
@ -1199,8 +1197,8 @@ int BuildQueen(int nSprite, int x, int y, int z, int nSector, int nAngle, int nC
sprite[nSprite].yoffset = 0; sprite[nSprite].yoffset = 0;
sprite[nSprite].picnum = 1; sprite[nSprite].picnum = 1;
sprite[nSprite].ang = nAngle; sprite[nSprite].ang = nAngle;
sprite[nSprite].yvel = 0;
sprite[nSprite].xvel = 0; sprite[nSprite].xvel = 0;
sprite[nSprite].yvel = 0;
sprite[nSprite].zvel = 0; sprite[nSprite].zvel = 0;
sprite[nSprite].lotag = runlist_HeadRun() + 1; sprite[nSprite].lotag = runlist_HeadRun() + 1;
sprite[nSprite].extra = -1; sprite[nSprite].extra = -1;
@ -1305,18 +1303,16 @@ void FuncQueen(int a, int nDamage, int nRun)
QueenList[nQueen].field_A++; QueenList[nQueen].field_A++;
short dx = QueenList[nQueen].field_A;
if (QueenList[nQueen].field_A == 1) if (QueenList[nQueen].field_A == 1)
{ {
QueenList[nQueen].nHealth = 20; //4000; QueenList[nQueen].nHealth = 4000;
QueenList[nQueen].nAction = 7; QueenList[nQueen].nAction = 7;
BuildAnim(-1, 36, 0, sprite[nSprite].x, sprite[nSprite].y, sprite[nSprite].z - 7680, sprite[nSprite].sectnum, sprite[nSprite].xrepeat, 4); BuildAnim(-1, 36, 0, sprite[nSprite].x, sprite[nSprite].y, sprite[nSprite].z - 7680, sprite[nSprite].sectnum, sprite[nSprite].xrepeat, 4);
} }
else if (QueenList[nQueen].field_A == 2) else if (QueenList[nQueen].field_A == 2)
{ {
QueenList[nQueen].nHealth = 20; // 4000; QueenList[nQueen].nHealth = 4000;
QueenList[nQueen].nAction = 7; QueenList[nQueen].nAction = 7;
DestroyAllEggs(); DestroyAllEggs();
@ -1325,6 +1321,7 @@ void FuncQueen(int a, int nDamage, int nRun)
{ {
QueenList[nQueen].nAction = 8; QueenList[nQueen].nAction = 8;
QueenList[nQueen].nHealth = 0; QueenList[nQueen].nHealth = 0;
QueenList[nQueen].field_C = 5;
nCreaturesLeft--; nCreaturesLeft--;
} }
@ -1570,14 +1567,14 @@ void FuncQueen(int a, int nDamage, int nRun)
{ {
short nChunkSprite = BuildCreatureChunk(nSprite, seq_GetSeqPicnum(kSeqQueen, 57, 0)) & 0xFFFF; short nChunkSprite = BuildCreatureChunk(nSprite, seq_GetSeqPicnum(kSeqQueen, 57, 0)) & 0xFFFF;
sprite[nChunkSprite].picnum = i % 3 + 3117; sprite[nChunkSprite].picnum = kTile3117 + (i % 3);
sprite[nChunkSprite].yrepeat = 100; sprite[nChunkSprite].yrepeat = 100;
sprite[nChunkSprite].xrepeat = 100; sprite[nChunkSprite].xrepeat = 100;
} }
short nChunkSprite = BuildCreatureChunk(nSprite, seq_GetSeqPicnum(kSeqQueen, 57, 0)); short nChunkSprite = BuildCreatureChunk(nSprite, seq_GetSeqPicnum(kSeqQueen, 57, 0));
sprite[nChunkSprite].picnum = 3126; sprite[nChunkSprite].picnum = kTile3126;
sprite[nChunkSprite].yrepeat = 100; sprite[nChunkSprite].yrepeat = 100;
sprite[nChunkSprite].xrepeat = 100; sprite[nChunkSprite].xrepeat = 100;
PlayFXAtXYZ( PlayFXAtXYZ(