- InitShell / SpawnShell

This commit is contained in:
Christoph Oelckers 2021-11-01 12:25:35 +01:00
parent aef68363b4
commit 7012a77685
6 changed files with 46 additions and 63 deletions

View file

@ -181,7 +181,7 @@ CONPIC_ENTRY(STAR_THROW+4,ThrowStar4)
#define UZI_RELOAD 2007
#endif
#define UZI_SHELL 2152
#define CON_UZI_SHELL 2152
// RIGHT UZI
@ -204,19 +204,19 @@ CONPIC_ENTRY(UZI_CLIP,UziClip0)
//reload
CONPIC_ENTRY(UZI_RELOAD,UziReload0)
CONPIC_ENTRY(UZI_SHELL+0,UziShell0)
CONPIC_ENTRY(UZI_SHELL+1,UziShell1)
CONPIC_ENTRY(UZI_SHELL+2,UziShell2)
CONPIC_ENTRY(UZI_SHELL+3,UziShell3)
CONPIC_ENTRY(UZI_SHELL+4,UziShell4)
CONPIC_ENTRY(UZI_SHELL+5,UziShell5)
CONPIC_ENTRY(CON_UZI_SHELL+0,UziShell0)
CONPIC_ENTRY(CON_UZI_SHELL+1,UziShell1)
CONPIC_ENTRY(CON_UZI_SHELL+2,UziShell2)
CONPIC_ENTRY(CON_UZI_SHELL+3,UziShell3)
CONPIC_ENTRY(CON_UZI_SHELL+4,UziShell4)
CONPIC_ENTRY(CON_UZI_SHELL+5,UziShell5)
CONPIC_ENTRY(UZI_SHELL+0,Uzi2Shell0)
CONPIC_ENTRY(UZI_SHELL+1,Uzi2Shell1)
CONPIC_ENTRY(UZI_SHELL+2,Uzi2Shell2)
CONPIC_ENTRY(UZI_SHELL+3,Uzi2Shell3)
CONPIC_ENTRY(UZI_SHELL+4,Uzi2Shell4)
CONPIC_ENTRY(UZI_SHELL+5,Uzi2Shell5)
CONPIC_ENTRY(CON_UZI_SHELL+0,Uzi2Shell0)
CONPIC_ENTRY(CON_UZI_SHELL+1,Uzi2Shell1)
CONPIC_ENTRY(CON_UZI_SHELL+2,Uzi2Shell2)
CONPIC_ENTRY(CON_UZI_SHELL+3,Uzi2Shell3)
CONPIC_ENTRY(CON_UZI_SHELL+4,Uzi2Shell4)
CONPIC_ENTRY(CON_UZI_SHELL+5,Uzi2Shell5)
////////////////////////////////////////////////////////////////////////////////
//

View file

@ -597,7 +597,7 @@ ANIMATOR QueueFloorBlood; // Weapon.c
int QueueFootPrint(short hit_sprite); // Weapon.c
int QueueGeneric(short SpriteNum, short pic); // Weapon.c
int QueueLoWangs(short SpriteNum); // Weapon.c
int SpawnShell(short SpriteNum, short ShellNum); // Weapon.c
int SpawnShell(DSWActor* actor, int ShellNum); // JWeapon.c
void UnlockKeyLock(short key_num, DSWActor* actor); // JSector.c
#define MAX_PAIN 5

View file

@ -1377,7 +1377,7 @@ int PlayerInitChemBomb(PLAYERp pp)
wp->clipdist = 0;
// wp->ang = NORM_ANGLE(wp->ang - 512);
// HelpMissileLateral(w, 800);
// HelpMissileLateral(actorNew->GetSpriteIndex(), 800);
// wp->ang = NORM_ANGLE(wp->ang + 512);
MissileSetPos(actorNew->GetSpriteIndex(), DoChemBomb, 1000);
@ -2240,12 +2240,10 @@ int DoCarryFlag(DSWActor* actor)
return false;
}
int
DoCarryFlagNoDet(DSWActor* actor)
int DoCarryFlagNoDet(DSWActor* actor)
{
USER* u = actor->u();
int Weapon = u->SpriteNum;
SPRITEp sp = &sprite[Weapon];
SPRITEp sp = &actor->s();
SPRITEp ap = &u->attachActor->s();
USERp au = u->attachActor->u();
@ -2256,15 +2254,15 @@ DoCarryFlagNoDet(DSWActor* actor)
if (u->flagOwnerActor != nullptr)
fu->WaitTics = 30 * 120; // Keep setting respawn tics so it
// won't respawn
fu->WaitTics = 30 * 120; // Keep setting respawn tics so it won't respawn
// if no owner then die
if (u->attachActor != nullptr)
{
SPRITEp ap = &u->attachActor->s();
setspritez_old(Weapon, ap->x, ap->y, SPRITEp_MID(ap));
vec3_t pos = { ap->x, ap->y, SPRITEp_MID(ap) };
SetActorZ(actor, &pos);
sp->ang = NORM_ANGLE(ap->ang + 1536);
sp->z = ap->z - DIV2(SPRITEp_SIZE_Z(ap));
}
@ -2357,22 +2355,16 @@ int DoFlag(DSWActor* actor)
}
int
InitShell(int16_t SpriteNum, int16_t ShellNum)
int SpawnShell(DSWActor* actor, int ShellNum)
{
auto actor = &swActors[SpriteNum];
USERp u = User[SpriteNum].Data();
USERp u = actor->u();
USERp wu;
SPRITEp sp = &sprite[SpriteNum], wp;
SPRITEp sp = &actor->s(), wp;
int nx, ny, nz;
short w;
short id=0,velocity=0;
STATEp p=nullptr;
short id=0,velocity=0; STATEp p=nullptr;
extern STATE s_UziShellShrap[];
extern STATE s_ShotgunShellShrap[];
#define UZI_SHELL 2152
#define SHOT_SHELL 2180
nx = sp->x;
ny = sp->y;
@ -2393,11 +2385,10 @@ InitShell(int16_t SpriteNum, int16_t ShellNum)
break;
}
w = SpawnSprite(STAT_SKIP4, id, p, sp->sectnum,
nx, ny, nz, sp->ang, 64);
auto actorNew = SpawnActor(STAT_SKIP4, id, p, sp->sectnum, nx, ny, nz, sp->ang, 64);
wp = &sprite[w];
wu = User[w].Data();
wp = &actorNew->s();
wu = actorNew->u();
wp->zvel = -(velocity);
@ -2414,17 +2405,17 @@ InitShell(int16_t SpriteNum, int16_t ShellNum)
if (ShellNum == -3)
{
wp->ang = sp->ang;
HelpMissileLateral(w,2500);
HelpMissileLateral(actorNew->GetSpriteIndex(),2500);
wp->ang = NORM_ANGLE(wp->ang-512);
HelpMissileLateral(w,1000); // Was 1500
HelpMissileLateral(actorNew->GetSpriteIndex(),1000); // Was 1500
wp->ang = NORM_ANGLE(wp->ang+712);
}
else
{
wp->ang = sp->ang;
HelpMissileLateral(w,2500);
HelpMissileLateral(actorNew->GetSpriteIndex(),2500);
wp->ang = NORM_ANGLE(wp->ang+512);
HelpMissileLateral(w,1500);
HelpMissileLateral(actorNew->GetSpriteIndex(),1500);
wp->ang = NORM_ANGLE(wp->ang-128);
}
wp->ang += (RANDOM_P2(128<<5)>>5) - DIV2(128);
@ -2437,9 +2428,9 @@ InitShell(int16_t SpriteNum, int16_t ShellNum)
case SHOT_SHELL:
wp->z -= Z(13);
wp->ang = sp->ang;
HelpMissileLateral(w,2500);
HelpMissileLateral(actorNew->GetSpriteIndex(),2500);
wp->ang = NORM_ANGLE(wp->ang+512);
HelpMissileLateral(w,1300);
HelpMissileLateral(actorNew->GetSpriteIndex(),1300);
wp->ang = NORM_ANGLE(wp->ang-128-64);
wp->ang += (RANDOM_P2(128<<5)>>5) - DIV2(128);
wp->ang = NORM_ANGLE(wp->ang);
@ -2450,7 +2441,7 @@ InitShell(int16_t SpriteNum, int16_t ShellNum)
break;
}
SetOwner(SpriteNum, w);
SetOwner(actor, actorNew);
wp->shade = -15;
wu->ceiling_dist = Z(1);
wu->floor_dist = Z(1);

View file

@ -2451,14 +2451,14 @@ SpawnUziShell(PANEL_SPRITEp psp)
// LEFT side
pp->UziShellLeftAlt = !pp->UziShellLeftAlt;
if (pp->UziShellLeftAlt)
SpawnShell(pp->PlayerSprite,-3);
SpawnShell(pp->Actor(),-3);
}
else
{
// RIGHT side
pp->UziShellRightAlt = !pp->UziShellRightAlt;
if (pp->UziShellRightAlt)
SpawnShell(pp->PlayerSprite,-2);
SpawnShell(pp->Actor(),-2);
}
}
@ -2516,7 +2516,7 @@ void
SpawnShotgunShell(PANEL_SPRITEp psp)
{
PLAYERp pp = psp->PlayerP;
SpawnShell(pp->PlayerSprite,-4);
SpawnShell(pp->Actor(),-4);
}
void

View file

@ -18760,9 +18760,9 @@ InitEnemyUzi(DSWActor* actor)
if (RANDOM_P2(1024<<4)>>4 > 700)
{
if (u->ID == TOILETGIRL_R0 || u->ID == WASHGIRL_R0 || u->ID == CARGIRL_R0)
SpawnShell(SpriteNum,-3);
SpawnShell(actor,-3);
else
SpawnShell(SpriteNum,-2); // Enemy Uzi shell
SpawnShell(actor,-2); // Enemy Uzi shell
}
if ((alternate++)>2) alternate = 0;
@ -20786,21 +20786,6 @@ DoShellShrap(short SpriteNum)
}
#endif
int
SpawnShell(short SpriteNum, short ShellNum)
{
extern int InitShell(int16_t SpriteNum, int16_t ShellNum);
//ShellCount++;
//SpawnShrap(SpriteNum,ShellNum); // -2 signifies right Uzi shell
// -3 is left Uzi
// -4 is Shotgun shell
InitShell(SpriteNum, ShellNum);
return true;
}
int
DoShrapVelocity(int16_t SpriteNum)
{

View file

@ -51,6 +51,13 @@ extern FOOT_TYPE FootMode;
extern int ShellCount;
#define MAXSHELLS 32
enum
{
UZI_SHELL = 2152,
SHOT_SHELL = 2180
};
extern short StarQueueHead;
extern short StarQueue[MAX_STAR_QUEUE];
extern short HoleQueueHead;