- half of GetActorHeight

This commit is contained in:
Christoph Oelckers 2022-08-20 16:38:47 +02:00
parent f78ecd22a4
commit ae79f3e3c3
10 changed files with 23 additions and 20 deletions

View file

@ -220,6 +220,10 @@ Collision MoveCreature(DExhumedActor* nSprite);
Collision MoveCreatureWithCaution(DExhumedActor* actor);
DVector3 WheresMyMouth(int nPlayer, sectortype** sectnum);
int GetActorHeight(DExhumedActor* nSprite);
double GetActorHeightF(DExhumedActor* nSprite)
{
return GetActorHeight(nSprite) * zinttoworld;
}
DExhumedActor* insertActor(sectortype* s, int st);
DExhumedActor* GrabBody();
DExhumedActor* GrabBodyGunSprite();

View file

@ -211,8 +211,8 @@ void AIAnubis::Tick(RunListEvent* ev)
if (pTarget != nullptr) // NOTE: nTarget can be -1. this check wasn't in original code. TODO: demo compatiblity?
{
if (cansee(ap->int_pos().X, ap->int_pos().Y, ap->int_pos().Z - GetActorHeight(ap), ap->sector(),
pTarget->int_pos().X, pTarget->int_pos().Y, pTarget->int_pos().Z - GetActorHeight(pTarget), pTarget->sector()))
if (cansee(ap->spr.pos.plusZ(-GetActorHeightF(ap)), ap->sector(),
pTarget->spr.pos.plusZ(-GetActorHeightF(pTarget)), pTarget->sector()))
{
ap->spr.xvel = 0;
ap->spr.yvel = 0;

View file

@ -569,11 +569,11 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int n
sBullet.pActor = insertActor(pActor->sector(), 200);
sBullet.pActor->set_int_ang(nAngle);
int nHeight = GetActorHeight(pTarget);
double nHeight = GetActorHeightF(pTarget);
assert(pTarget->sector());
BulletHitsSprite(&sBullet, pActor, pTarget, pTarget->spr.pos.plusZ(-(nHeight >> 1) * zinttoworld), pTarget->sector());
BulletHitsSprite(&sBullet, pActor, pTarget, pTarget->spr.pos.plusZ(-(nHeight * 0.5)), pTarget->sector());
DeleteActor(sBullet.pActor);
return nullptr;
}

View file

@ -368,9 +368,8 @@ void AIFish::Tick(RunListEvent* ev)
else
{
PlotCourseToSprite(pActor, pTargetActor);
int nHeight = GetActorHeight(pActor) >> 1;
int z = abs(pTargetActor->int_pos().Z - pActor->int_pos().Z);
double nHeight = GetActorHeightF(pActor) * 0.5;
double z = fabs(pTargetActor->spr.pos.Z - pActor->spr.pos.Z);
if (z <= nHeight)
{

View file

@ -202,8 +202,8 @@ void AIMummy::Tick(RunListEvent* ev)
{
if (RandomBit() && pTarget)
{
if (cansee(pActor->int_pos().X, pActor->int_pos().Y, pActor->int_pos().Z - GetActorHeight(pActor), pActor->sector(),
pTarget->int_pos().X, pTarget->int_pos().Y, pTarget->int_pos().Z - GetActorHeight(pTarget), pTarget->sector()))
if (cansee(pActor->spr.pos.plusZ(-GetActorHeightF(pActor)), pActor->sector(),
pTarget->spr.pos.plusZ(-GetActorHeightF(pTarget)), pTarget->sector()))
{
pActor->nAction = 3;
pActor->nFrame = 0;

View file

@ -1848,7 +1848,7 @@ DExhumedActor* BuildObject(DExhumedActor* pActor, int nOjectType, int nHitag)
// in-game destructable wall mounted screen
void ExplodeScreen(DExhumedActor* pActor)
{
pActor->add_int_z(-GetActorHeight(pActor) / 2);
pActor->spr.pos.Z -= GetActorHeightF(pActor) * 0.5;
for (int i = 0; i < 30; i++) {
BuildSpark(pActor, 0); // shoot out blue orbs

View file

@ -163,7 +163,7 @@ void MoveRaToEnemy(int nPlayer)
pTarget = PlayerList[nPlayer].pActor;
}
pActor->spr.pos = pTarget->spr.pos.plusZ(-GetActorHeight(pTarget) * zinttoworld);
pActor->spr.pos = pTarget->spr.pos.plusZ(-GetActorHeightF(pTarget));
if (pActor->sector() != pTarget->sector()) {
ChangeActorSect(pActor, pTarget->sector());

View file

@ -423,8 +423,8 @@ void AIScorp::Effect(RunListEvent* ev, DExhumedActor* pTarget, int mode)
{
pActor->nCount = 45;
if (cansee(pActor->int_pos().X, pActor->int_pos().Y, pActor->int_pos().Z - GetActorHeight(pActor), pActor->sector(),
pTarget->int_pos().X, pTarget->int_pos().Y, pTarget->int_pos().Z - GetActorHeight(pTarget), pTarget->sector()))
if (cansee(pActor->spr.pos.plusZ(-GetActorHeightF(pActor)), pActor->sector(),
pTarget->spr.pos.plusZ(-GetActorHeightF(pTarget)), pTarget->sector()))
{
pActor->spr.xvel = 0;
pActor->spr.yvel = 0;

View file

@ -108,7 +108,7 @@ void BuildSoul(DExhumedActor* pSet)
pActor->spr.xvel = 0;
pActor->spr.yvel = 0;
pActor->spr.zvel = (-256) - RandomSize(10);
pActor->spr.pos = DVector3(pSet->spr.pos.X, pSet->spr.pos.Y, RandomSize(8) + 32 + pActor->sector()->ceilingz - GetActorHeight(pActor) * zinttoworld);
pActor->spr.pos = DVector3(pSet->spr.pos.XY(), RandomSize(8) + 32 + pActor->sector()->ceilingz - GetActorHeightF(pActor));
//pActor->spr.hitag = nSet;
pActor->pTarget = pSet;
@ -148,7 +148,7 @@ void AISoul::Tick(RunListEvent* ev)
pActor->spr.cstat = 0;
pActor->spr.yrepeat = 1;
pActor->spr.xrepeat = 1;
pActor->spr.pos = pSet->spr.pos.plusZ(-((GetActorHeight(pSet) >> 1) * zinttoworld));
pActor->spr.pos = pSet->spr.pos.plusZ(-GetActorHeightF(pSet) * 0.5);
ChangeActorSect(pActor, pSet->sector());
return;
}
@ -570,9 +570,9 @@ void AISet::Tick(RunListEvent* ev)
{
if (nFlag & 0x80)
{
pActor->add_int_z(-GetActorHeight(pActor));
pActor->spr.pos.Z -= GetActorHeightF(pActor);
BuildCreatureChunk(pActor, seq_GetSeqPicnum(kSeqSet, 76, 0));
pActor->add_int_z(GetActorHeight(pActor));
pActor->spr.pos.Z += GetActorHeightF(pActor);
}
if (bVal)

View file

@ -98,7 +98,7 @@ void AISpider::Tick(RunListEvent* ev)
{
if (spp->spr.cstat & CSTAT_SPRITE_YFLIP)
{
spp->set_int_z(spp->sector()->int_ceilingz() + GetActorHeight(spp));
spp->spr.pos.Z = spp->sector()->ceilingz + GetActorHeightF(spp);
}
else
{
@ -208,7 +208,7 @@ void AISpider::Tick(RunListEvent* ev)
{
spp->spr.cstat ^= CSTAT_SPRITE_YFLIP;
spp->spr.zvel = 1;
spp->set_int_z(pSector->int_ceilingz() + GetActorHeight(spp));
spp->spr.pos.Z = spp->sector()->ceilingz+ GetActorHeightF(spp);
}
else
{
@ -286,7 +286,7 @@ void AISpider::Tick(RunListEvent* ev)
&& !((spp->sector()->ceilingstat) & CSTAT_SECTOR_SKY))
{
spp->spr.cstat |= CSTAT_SPRITE_YFLIP;
spp->set_int_z(GetActorHeight(spp) + spp->sector()->int_ceilingz());
spp->spr.pos.Z = spp->sector()->ceilingz + GetActorHeightF(spp);
spp->spr.zvel = 0;
spp->nAction = 1;