mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-21 11:11:16 +00:00
- use floats for spawning Exhumed actors
This commit is contained in:
parent
21944d5ac2
commit
e6f1d92567
16 changed files with 118 additions and 145 deletions
|
@ -38,7 +38,7 @@ void BuildSplash(DExhumedActor* actor, sectortype* pSector);
|
|||
|
||||
// anubis
|
||||
|
||||
void BuildAnubis(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle, uint8_t bIsDrummer);
|
||||
void BuildAnubis(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, uint8_t bIsDrummer);
|
||||
void FuncAnubis(int, int a, int b, int c);
|
||||
|
||||
// bubbles
|
||||
|
@ -86,7 +86,7 @@ void BackUpBullet(int *x, int *y, int nAngle);
|
|||
|
||||
// fish
|
||||
|
||||
void BuildFish(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle);
|
||||
void BuildFish(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle);
|
||||
void FuncFish(int, int, int, int);
|
||||
void FuncFishLimb(int a, int b, int c);
|
||||
|
||||
|
@ -168,7 +168,7 @@ void DoRegenerates();
|
|||
|
||||
// lavadude
|
||||
|
||||
void BuildLava(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle, int nChannel);
|
||||
void BuildLava(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel);
|
||||
DExhumedActor* BuildLavaLimb(DExhumedActor* nSprite, int edx, int ebx);
|
||||
void FuncLavaLimb(int, int, int, int);
|
||||
void FuncLava(int, int, int, int);
|
||||
|
@ -190,7 +190,7 @@ void AddFlicker(sectortype* pSector, int nVal);
|
|||
|
||||
// lion
|
||||
|
||||
void BuildLion(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle);
|
||||
void BuildLion(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle);
|
||||
void FuncLion(int, int, int, int);
|
||||
|
||||
// move
|
||||
|
@ -240,7 +240,7 @@ void SetQuake(DExhumedActor* nSprite, int nVal);
|
|||
|
||||
enum { kMaxMummies = 150 };
|
||||
|
||||
void BuildMummy(DExhumedActor* val, int x, int y, int z, sectortype* pSector, int nAngle);
|
||||
void BuildMummy(DExhumedActor* val, const DVector3& pos, sectortype* pSector, int nAngle);
|
||||
|
||||
// object
|
||||
|
||||
|
@ -296,7 +296,7 @@ int BuildSlide(int nChannel, walltype* edx, walltype* ebx, walltype* ecx, wallty
|
|||
// queen
|
||||
|
||||
void InitQueens();
|
||||
void BuildQueen(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle, int nVal);
|
||||
void BuildQueen(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nVal);
|
||||
void FuncQueenEgg(int, int, int, int);
|
||||
void FuncQueenHead(int, int, int, int);
|
||||
void FuncQueen(int, int, int, int);
|
||||
|
@ -327,17 +327,17 @@ void FuncRa(int, int, int, int);
|
|||
// rat
|
||||
|
||||
void InitRats();
|
||||
void BuildRat(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle);
|
||||
void BuildRat(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle);
|
||||
void FuncRat(int a, int, int b, int nRun);
|
||||
|
||||
// rex
|
||||
|
||||
void BuildRex(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle, int nChannel);
|
||||
void BuildRex(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel);
|
||||
void FuncRex(int, int, int, int);
|
||||
|
||||
// roach
|
||||
|
||||
void BuildRoach(int nType, DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int angle);
|
||||
void BuildRoach(int nType, DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int angle);
|
||||
void FuncRoach(int a, int, int nDamage, int nRun);
|
||||
|
||||
// runlist
|
||||
|
@ -699,12 +699,12 @@ void runlist_ExecObjects();
|
|||
|
||||
// scorp
|
||||
|
||||
void BuildScorp(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle, int nChannel);
|
||||
void BuildScorp(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel);
|
||||
void FuncScorp(int, int, int, int);
|
||||
|
||||
// set
|
||||
|
||||
void BuildSet(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle, int nChannel);
|
||||
void BuildSet(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel);
|
||||
void FuncSoul(int, int, int, int);
|
||||
void FuncSet(int, int, int, int);
|
||||
|
||||
|
@ -737,7 +737,7 @@ void FuncSnake(int, int, int, int);
|
|||
|
||||
// spider
|
||||
|
||||
DExhumedActor* BuildSpider(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle);
|
||||
DExhumedActor* BuildSpider(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle);
|
||||
void FuncSpider(int a, int, int b, int nRun);
|
||||
|
||||
// switch
|
||||
|
@ -763,7 +763,7 @@ std::pair<int, int> BuildSwPressWall(int nChannel, int nLink, walltype* pWall);
|
|||
|
||||
// wasp
|
||||
|
||||
DExhumedActor* BuildWasp(DExhumedActor* nSprite, int x, int y, int z, sectortype* pSector, int nAngle, bool bEggWasp);
|
||||
DExhumedActor* BuildWasp(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, bool bEggWasp);
|
||||
void FuncWasp(int eax, int, int edx, int nRun);
|
||||
|
||||
|
||||
|
|
|
@ -43,23 +43,21 @@ static const actionSeq AnubisSeq[] = {
|
|||
{ 43, 1 },
|
||||
};
|
||||
|
||||
void BuildAnubis(DExhumedActor* ap, int x, int y, int z, sectortype* pSector, int nAngle, uint8_t bIsDrummer)
|
||||
void BuildAnubis(DExhumedActor* ap, const DVector3& pos, sectortype* pSector, int nAngle, uint8_t bIsDrummer)
|
||||
{
|
||||
if (ap == nullptr)
|
||||
{
|
||||
ap = insertActor(pSector, 101);
|
||||
ap->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(ap, 101);
|
||||
|
||||
x = ap->int_pos().X;
|
||||
y = ap->int_pos().Y;
|
||||
z = ap->sector()->int_floorz();
|
||||
ap->spr.pos.Z = ap->sector()->floorz;
|
||||
nAngle = ap->int_ang();
|
||||
}
|
||||
|
||||
ap->set_int_pos({ x, y, z });
|
||||
ap->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
ap->spr.xoffset = 0;
|
||||
ap->spr.shade = -12;
|
||||
|
|
|
@ -138,22 +138,19 @@ void AIFishLimb::Draw(RunListEvent* ev)
|
|||
}
|
||||
|
||||
|
||||
void BuildFish(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle)
|
||||
void BuildFish(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 103);
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
z = pActor->int_pos().Z;
|
||||
nAngle = pActor->int_ang();
|
||||
ChangeActorStat(pActor, 103);
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.shade = -12;
|
||||
pActor->spr.clipdist = 80;
|
||||
|
|
|
@ -251,6 +251,7 @@ void SnapSectors(sectortype* pSectorA, sectortype* pSectorB, int b)
|
|||
|
||||
void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
||||
{
|
||||
static const DVector3 nulvec = {0,0,0};
|
||||
int nChannel = runlist_AllocChannel(nHitag % 1000);
|
||||
|
||||
int nSpeed = nLotag / 1000;
|
||||
|
@ -425,7 +426,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildAnubis(pActor, 0, 0, 0, nullptr, 0, 1);
|
||||
BuildAnubis(pActor, nulvec, nullptr, 0, 1);
|
||||
return;
|
||||
}
|
||||
case 117:
|
||||
|
@ -435,27 +436,27 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildWasp(pActor, 0, 0, 0, nullptr, 0, false);
|
||||
BuildWasp(pActor, nulvec, nullptr, 0, false);
|
||||
return;
|
||||
}
|
||||
case 116:
|
||||
{
|
||||
BuildRat(pActor, 0, 0, 0, nullptr, -1);
|
||||
BuildRat(pActor, nulvec, nullptr, -1);
|
||||
return;
|
||||
}
|
||||
case 115: // Rat (eating)
|
||||
{
|
||||
BuildRat(pActor, 0, 0, 0, nullptr, 0);
|
||||
BuildRat(pActor, nulvec, nullptr, 0);
|
||||
return;
|
||||
}
|
||||
case 113:
|
||||
{
|
||||
BuildQueen(pActor, 0, 0, 0, nullptr, 0, nChannel);
|
||||
BuildQueen(pActor, nulvec, nullptr, 0, nChannel);
|
||||
return;
|
||||
}
|
||||
case 112:
|
||||
{
|
||||
BuildScorp(pActor, 0, 0, 0, nullptr, 0, nChannel);
|
||||
BuildScorp(pActor, nulvec, nullptr, 0, nChannel);
|
||||
return;
|
||||
}
|
||||
case 111:
|
||||
|
@ -465,7 +466,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildSet(pActor, 0, 0, 0, nullptr, 0, nChannel);
|
||||
BuildSet(pActor, nulvec, nullptr, 0, nChannel);
|
||||
return;
|
||||
}
|
||||
case 108:
|
||||
|
@ -475,7 +476,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildLava(pActor, 0, 0, 0, nullptr, 0, nChannel);
|
||||
BuildLava(pActor, nulvec, nullptr, 0, nChannel);
|
||||
return;
|
||||
}
|
||||
case 107:
|
||||
|
@ -485,7 +486,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildRex(pActor, 0, 0, 0, nullptr, 0, nChannel);
|
||||
BuildRex(pActor, nulvec, nullptr, 0, nChannel);
|
||||
return;
|
||||
}
|
||||
case 106:
|
||||
|
@ -495,7 +496,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildFish(pActor, 0, 0, 0, nullptr, 0);
|
||||
BuildFish(pActor, nulvec, nullptr, 0);
|
||||
return;
|
||||
}
|
||||
case 105:
|
||||
|
@ -505,7 +506,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildSpider(pActor, 0, 0, 0, nullptr, 0);
|
||||
BuildSpider(pActor, nulvec, nullptr, 0);
|
||||
return;
|
||||
}
|
||||
case 104:
|
||||
|
@ -515,7 +516,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildRoach(1, pActor, 0, 0, 0, nullptr, 0);
|
||||
BuildRoach(1, pActor, nulvec, nullptr, 0);
|
||||
return;
|
||||
}
|
||||
case 103:
|
||||
|
@ -525,7 +526,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildRoach(0, pActor, 0, 0, 0, nullptr, 0);
|
||||
BuildRoach(0, pActor, nulvec, nullptr, 0);
|
||||
return;
|
||||
}
|
||||
case 102:
|
||||
|
@ -535,7 +536,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildLion(pActor, 0, 0, 0, nullptr, 0);
|
||||
BuildLion(pActor, nulvec, nullptr, 0);
|
||||
return;
|
||||
}
|
||||
case 101:
|
||||
|
@ -545,7 +546,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildMummy(pActor, 0, 0, 0, nullptr, 0);
|
||||
BuildMummy(pActor, nulvec, nullptr, 0);
|
||||
return;
|
||||
}
|
||||
case 100:
|
||||
|
@ -555,7 +556,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
|
|||
return;
|
||||
}
|
||||
|
||||
BuildAnubis(pActor, 0, 0, 0, nullptr, 0, 0);
|
||||
BuildAnubis(pActor, nulvec, nullptr, 0, 0);
|
||||
return;
|
||||
}
|
||||
case 99: // underwater type 2
|
||||
|
|
|
@ -97,23 +97,22 @@ void AILavaDudeLimb::Draw(RunListEvent* ev)
|
|||
}
|
||||
|
||||
|
||||
void BuildLava(DExhumedActor* pActor, int x, int y, int, sectortype* pSector, int nAngle, int nChannel)
|
||||
void BuildLava(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 118);
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
pSector = pActor->sector();
|
||||
nAngle = pActor->int_ang();
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
pActor->spr.pos.Z = pSector->floorz;
|
||||
|
||||
ChangeActorStat(pActor, 118);
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, pSector->int_floorz() });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
pActor->spr.xrepeat = 200;
|
||||
pActor->spr.yrepeat = 200;
|
||||
|
|
|
@ -41,22 +41,20 @@ static actionSeq LionSeq[] = {
|
|||
};
|
||||
|
||||
|
||||
void BuildLion(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle)
|
||||
void BuildLion(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 104);
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(pActor, 104);
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
z = pActor->sector()->int_floorz();
|
||||
pActor->spr.pos.Z = pActor->sector()->floorz;
|
||||
nAngle = pActor->int_ang();
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.clipdist = 60;
|
||||
pActor->spr.shade = -12;
|
||||
|
|
|
@ -37,23 +37,19 @@ static actionSeq MummySeq[] = {
|
|||
};
|
||||
|
||||
|
||||
void BuildMummy(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle)
|
||||
void BuildMummy(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 102);
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
z = pActor->int_pos().Z;
|
||||
nAngle = pActor->int_ang();
|
||||
|
||||
ChangeActorStat(pActor, 102);
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.shade = -12;
|
||||
pActor->spr.clipdist = 32;
|
||||
|
|
|
@ -71,20 +71,21 @@ static int osdcmd_spawn(CCmdFuncPtr parm)
|
|||
if (parm->numparms != 1) return CCMD_SHOWHELP;
|
||||
auto c = parm->parms[0];
|
||||
auto sectp = initsectp;
|
||||
if (!stricmp(c, "anubis")) BuildAnubis(nullptr, initx, inity, sectp->int_floorz(), sectp, inita, false);
|
||||
else if (!stricmp(c, "spider")) BuildSpider(nullptr, initx, inity, sectp->int_floorz(), sectp, inita);
|
||||
else if (!stricmp(c, "mummy")) BuildMummy(nullptr, initx, inity, sectp->int_floorz(), sectp, inita);
|
||||
else if (!stricmp(c, "fish")) BuildFish(nullptr, initx, inity, initz + PlayerList[nLocalPlayer].eyelevel, sectp, inita);
|
||||
else if (!stricmp(c, "lion")) BuildLion(nullptr, initx, inity, sectp->int_floorz(), sectp, inita);
|
||||
else if (!stricmp(c, "lava")) BuildLava(nullptr, initx, inity, sectp->int_floorz(), sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "rex")) BuildRex(nullptr, initx, inity, sectp->int_floorz(), sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "set")) BuildSet(nullptr, initx, inity, sectp->int_floorz(), sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "queen")) BuildQueen(nullptr, initx, inity, sectp->int_floorz(), sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "roach")) BuildRoach(0, nullptr, initx, inity, sectp->int_floorz(), sectp, inita);
|
||||
else if (!stricmp(c, "roach2")) BuildRoach(1, nullptr, initx, inity, sectp->int_floorz(), sectp, inita);
|
||||
else if (!stricmp(c, "wasp")) BuildWasp(nullptr, initx, inity, sectp->int_floorz() - 25600, sectp, inita, false);
|
||||
else if (!stricmp(c, "scorp")) BuildScorp(nullptr, initx, inity, sectp->int_floorz(), sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "rat")) BuildRat(nullptr, initx, inity, sectp->int_floorz(), sectp, inita);
|
||||
DVector3 initpos = { initx * inttoworld, inity * inttoworld, sectp->floorz };
|
||||
if (!stricmp(c, "anubis")) BuildAnubis(nullptr, initpos, sectp, inita, false);
|
||||
else if (!stricmp(c, "spider")) BuildSpider(nullptr, initpos, sectp, inita);
|
||||
else if (!stricmp(c, "mummy")) BuildMummy(nullptr, initpos, sectp, inita);
|
||||
else if (!stricmp(c, "fish")) BuildFish(nullptr, initpos.plusZ(PlayerList[nLocalPlayer].eyelevel * zinttoworld), sectp, inita);
|
||||
else if (!stricmp(c, "lion")) BuildLion(nullptr, initpos, sectp, inita);
|
||||
else if (!stricmp(c, "lava")) BuildLava(nullptr, initpos, sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "rex")) BuildRex(nullptr, initpos, sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "set")) BuildSet(nullptr, initpos, sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "queen")) BuildQueen(nullptr, initpos, sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "roach")) BuildRoach(0, nullptr, initpos, sectp, inita);
|
||||
else if (!stricmp(c, "roach2")) BuildRoach(1, nullptr, initpos, sectp, inita);
|
||||
else if (!stricmp(c, "wasp")) BuildWasp(nullptr, initpos.plusZ(-100), sectp, inita, false);
|
||||
else if (!stricmp(c, "scorp")) BuildScorp(nullptr, initpos, sectp, inita, nNetPlayerCount);
|
||||
else if (!stricmp(c, "rat")) BuildRat(nullptr, initpos, sectp, inita);
|
||||
else Printf("Unknown creature type %s\n", c);
|
||||
return CCMD_OK;
|
||||
}
|
||||
|
|
|
@ -651,7 +651,7 @@ void AIQueenEgg::Tick(RunListEvent* ev)
|
|||
pEgg->nCounter--;
|
||||
if (pEgg->nCounter <= 0)
|
||||
{
|
||||
auto pWaspSprite = BuildWasp(nullptr, pActor->int_pos().X, pActor->int_pos().Y, pActor->int_pos().Z, pActor->sector(), pActor->int_ang(), true);
|
||||
auto pWaspSprite = BuildWasp(nullptr, pActor->spr.pos, pActor->sector(), pActor->int_ang(), true);
|
||||
pActor->set_int_z(pWaspSprite->int_pos().Z);
|
||||
|
||||
DestroyEgg(nEgg);
|
||||
|
@ -1095,7 +1095,7 @@ void AIQueenHead::Draw(RunListEvent* ev)
|
|||
seq_PlotSequence(ev->nParam, nSeq, QueenHead.nFrame, edx);
|
||||
}
|
||||
|
||||
void BuildQueen(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle, int nChannel)
|
||||
void BuildQueen(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
|
||||
{
|
||||
QueenCount--;
|
||||
|
||||
|
@ -1107,17 +1107,15 @@ void BuildQueen(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
|
|||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 121);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(pActor, 121);
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
z = pActor->sector()->int_floorz();
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(pActor, 121);
|
||||
pActor->spr.pos.Z = pActor->sector()->floorz;
|
||||
nAngle = pActor->int_ang();
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.pal = 0;
|
||||
pActor->spr.shade = -12;
|
||||
|
|
|
@ -73,23 +73,20 @@ void SetRatVel(DExhumedActor* pActor)
|
|||
pActor->spr.yvel = bsin(pActor->int_ang(), -2);
|
||||
}
|
||||
|
||||
void BuildRat(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle)
|
||||
void BuildRat(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 108);
|
||||
}
|
||||
else
|
||||
{
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
z = pActor->int_pos().Z;
|
||||
nAngle = pActor->int_ang();
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 108);
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(pActor, 108);
|
||||
pActor->spr.pos.Z = pActor->sector()->floorz;
|
||||
nAngle = pActor->int_ang();
|
||||
}
|
||||
|
||||
ChangeActorStat(pActor, 108);
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.shade = -12;
|
||||
pActor->spr.xoffset = 0;
|
||||
|
|
|
@ -37,23 +37,20 @@ static actionSeq RexSeq[] = {
|
|||
{28, 1}
|
||||
};
|
||||
|
||||
void BuildRex(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle, int nChannel)
|
||||
void BuildRex(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 119);
|
||||
}
|
||||
else
|
||||
{
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
z = pActor->sector()->int_floorz();
|
||||
nAngle = pActor->int_ang();
|
||||
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
nAngle = pActor->int_ang();
|
||||
pActor->spr.pos.Z = pActor->sector()->floorz;
|
||||
ChangeActorStat(pActor, 119);
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.clipdist = 80;
|
||||
pActor->spr.shade = -12;
|
||||
|
|
|
@ -35,22 +35,20 @@ static actionSeq RoachSeq[] = {
|
|||
};
|
||||
|
||||
// TODO - make nType a bool?
|
||||
void BuildRoach(int nType, DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int angle)
|
||||
void BuildRoach(int nType, DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int angle)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 105);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(pActor, 105);
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
z = pActor->sector()->int_floorz();
|
||||
angle = pActor->int_ang();
|
||||
}
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 105);
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(pActor, 105);
|
||||
pActor->spr.pos.Z = pActor->sector()->floorz;
|
||||
angle = pActor->int_ang();
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.shade = -12;
|
||||
pActor->spr.xoffset = 0;
|
||||
|
|
|
@ -38,23 +38,20 @@ static actionSeq ScorpSeq[] = {
|
|||
{53, 1}
|
||||
};
|
||||
|
||||
void BuildScorp(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle, int nChannel)
|
||||
void BuildScorp(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 122);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(pActor, 122);
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 122);
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(pActor, 122);
|
||||
pActor->spr.pos.Z = pActor->sector()->floorz;
|
||||
nAngle = pActor->int_ang();
|
||||
}
|
||||
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
z = pActor->sector()->int_floorz();
|
||||
nAngle = pActor->int_ang();
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.clipdist = 70;
|
||||
pActor->spr.shade = -12;
|
||||
|
@ -367,7 +364,7 @@ void AIScorp::Tick(RunListEvent* ev)
|
|||
return;
|
||||
}
|
||||
|
||||
auto pSpiderActor = BuildSpider(nullptr, pActor->int_pos().X, pActor->int_pos().Y, pActor->int_pos().Z, pActor->sector(), pActor->int_ang());
|
||||
auto pSpiderActor = BuildSpider(nullptr, pActor->spr.pos, pActor->sector(), pActor->int_ang());
|
||||
if (pSpiderActor)
|
||||
{
|
||||
pSpiderActor->set_int_ang(RandomSize(11));
|
||||
|
|
|
@ -39,22 +39,20 @@ static actionSeq SetSeq[] = {
|
|||
{74, 1}
|
||||
};
|
||||
|
||||
void BuildSet(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle, int nChannel)
|
||||
void BuildSet(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 120);
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(pActor, 120);
|
||||
x = pActor->int_pos().X;
|
||||
y = pActor->int_pos().Y;
|
||||
z = pActor->sector()->int_floorz();
|
||||
pActor->spr.pos.Z = pActor->sector()->floorz;
|
||||
nAngle = pActor->int_ang();
|
||||
}
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
pActor->spr.shade = -12;
|
||||
pActor->spr.clipdist = 110;
|
||||
|
|
|
@ -36,23 +36,21 @@ static actionSeq SpiderSeq[] = {
|
|||
};
|
||||
|
||||
|
||||
DExhumedActor* BuildSpider(DExhumedActor* spp, int x, int y, int z, sectortype* pSector, int nAngle)
|
||||
DExhumedActor* BuildSpider(DExhumedActor* spp, const DVector3& pos, sectortype* pSector, int nAngle)
|
||||
{
|
||||
if (spp == nullptr)
|
||||
{
|
||||
spp = insertActor(pSector, 99);
|
||||
spp->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeActorStat(spp, 99);
|
||||
|
||||
x = spp->int_pos().X;
|
||||
y = spp->int_pos().Y;
|
||||
z = spp->sector()->int_floorz();
|
||||
spp->spr.pos.Z = spp->sector()->floorz;
|
||||
nAngle = spp->int_ang();
|
||||
}
|
||||
|
||||
spp->set_int_pos({ x, y, z });
|
||||
spp->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||
spp->spr.shade = -12;
|
||||
spp->spr.clipdist = 15;
|
||||
|
|
|
@ -40,13 +40,13 @@ void SetWaspVel(DExhumedActor* pActor)
|
|||
pActor->spr.yvel = bsin(pActor->int_ang());
|
||||
}
|
||||
|
||||
DExhumedActor* BuildWasp(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, int nAngle, bool bEggWasp)
|
||||
DExhumedActor* BuildWasp(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, bool bEggWasp)
|
||||
{
|
||||
if (pActor == nullptr)
|
||||
{
|
||||
pActor = insertActor(pSector, 107);
|
||||
|
||||
pActor->set_int_pos({ x, y, z });
|
||||
pActor->spr.pos = pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue