Patch up some broken hardcoded behavior with regard to the Sentry versions of the bosses (minibosses), as suggested by Fox.

This should have no adverse effects or side-effects. The changes only apply if a modder chose to use completely broken functionality in the first place.

git-svn-id: https://svn.eduke32.com/eduke32@3544 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2013-03-04 01:23:55 +00:00
parent cbe28f89e0
commit e2701c9a5a
2 changed files with 19 additions and 17 deletions

View file

@ -8122,21 +8122,22 @@ void A_PlayAlertSound(int32_t i)
A_PlaySound(OCTA_RECOG,i); A_PlaySound(OCTA_RECOG,i);
break; break;
case BOSS1__STATIC: case BOSS1__STATIC:
case BOSS1STAYPUT__STATIC:
S_PlaySound(BOS1_RECOG); S_PlaySound(BOS1_RECOG);
break; break;
case BOSS2__STATIC: case BOSS2__STATIC:
if (sprite[i].pal == 1) if (sprite[i].pal != 0)
S_PlaySound(BOS2_RECOG); S_PlaySound(BOS2_RECOG);
else S_PlaySound(WHIPYOURASS); else S_PlaySound(WHIPYOURASS);
break; break;
case BOSS3__STATIC: case BOSS3__STATIC:
if (sprite[i].pal == 1) if (sprite[i].pal != 0)
S_PlaySound(BOS3_RECOG); S_PlaySound(BOS3_RECOG);
else S_PlaySound(RIPHEADNECK); else S_PlaySound(RIPHEADNECK);
break; break;
case BOSS4__STATIC: case BOSS4__STATIC:
case BOSS4STAYPUT__STATIC: case BOSS4STAYPUT__STATIC:
if (sprite[i].pal == 1) if (sprite[i].pal != 0)
S_PlaySound(BOS4_RECOG); S_PlaySound(BOS4_RECOG);
S_PlaySound(BOSS4_FIRSTSEE); S_PlaySound(BOSS4_FIRSTSEE);
break; break;

View file

@ -823,6 +823,7 @@ static void Proj_HandleKnee(hitdata_t *hit, int32_t i, int32_t p, int32_t atwith
} }
} }
#define MinibossScale(s) (((s)*sprite[i].yrepeat)/80)
int32_t A_ShootWithZvel(int32_t i, int32_t atwith, int32_t override_zvel) int32_t A_ShootWithZvel(int32_t i, int32_t atwith, int32_t override_zvel)
{ {
int16_t l, sa, j, k=-1; int16_t l, sa, j, k=-1;
@ -1322,7 +1323,7 @@ int32_t A_ShootWithZvel(int32_t i, int32_t atwith, int32_t override_zvel)
if (PN == BOSS2) if (PN == BOSS2)
{ {
l = sprite[j].xvel; l = sprite[j].xvel;
sprite[j].xvel = 1024; sprite[j].xvel = MinibossScale(1024);
A_SetSprite(j,CLIPMASK0); A_SetSprite(j,CLIPMASK0);
sprite[j].xvel = l; sprite[j].xvel = l;
sprite[j].ang += 128-(krand()&255); sprite[j].ang += 128-(krand()&255);
@ -1363,11 +1364,11 @@ int32_t A_ShootWithZvel(int32_t i, int32_t atwith, int32_t override_zvel)
j = A_FindPlayer(s,&x); j = A_FindPlayer(s,&x);
sa = getangle(g_player[j].ps->opos.x-srcvect.x,g_player[j].ps->opos.y-srcvect.y); sa = getangle(g_player[j].ps->opos.x-srcvect.x,g_player[j].ps->opos.y-srcvect.y);
if (PN == BOSS3) if (PN == BOSS3)
srcvect.z -= (32<<8); srcvect.z -= MinibossScale(32<<8);
else if (PN == BOSS2) else if (PN == BOSS2)
{ {
vel += 128; vel += 128;
srcvect.z += 24<<8; srcvect.z += MinibossScale(24<<8);
} }
l = safeldist(g_player[j].ps->i, s); l = safeldist(g_player[j].ps->i, s);
@ -1406,24 +1407,24 @@ int32_t A_ShootWithZvel(int32_t i, int32_t atwith, int32_t override_zvel)
{ {
if (krand()&1) if (krand()&1)
{ {
sprite[j].x -= sintable[sa&2047]>>6; sprite[j].x -= MinibossScale(sintable[sa&2047]>>6);
sprite[j].y -= sintable[(sa+1024+512)&2047]>>6; sprite[j].y -= MinibossScale(sintable[(sa+1024+512)&2047]>>6);
sprite[j].ang -= 8; sprite[j].ang -= MinibossScale(8);
} }
else else
{ {
sprite[j].x += sintable[sa&2047]>>6; sprite[j].x += MinibossScale(sintable[sa&2047]>>6);
sprite[j].y += sintable[(sa+1024+512)&2047]>>6; sprite[j].y += MinibossScale(sintable[(sa+1024+512)&2047]>>6);
sprite[j].ang += 4; sprite[j].ang += MinibossScale(4);
} }
sprite[j].xrepeat = 42; sprite[j].xrepeat = MinibossScale(42);
sprite[j].yrepeat = 42; sprite[j].yrepeat = MinibossScale(42);
} }
else if (PN == BOSS2) else if (PN == BOSS2)
{ {
sprite[j].x -= sintable[sa&2047]/56; sprite[j].x -= MinibossScale(sintable[sa&2047]/56);
sprite[j].y -= sintable[(sa+1024+512)&2047]/56; sprite[j].y -= MinibossScale(sintable[(sa+1024+512)&2047]/56);
sprite[j].ang -= 8+(krand()&255)-128; sprite[j].ang -= MinibossScale(8)+(krand()&255)-128;
sprite[j].xrepeat = 24; sprite[j].xrepeat = 24;
sprite[j].yrepeat = 24; sprite[j].yrepeat = 24;
} }