diff --git a/source/games/sw/src/conpic.h b/source/games/sw/src/conpic.h index 9cef1cb63..0cb0a84e7 100644 --- a/source/games/sw/src/conpic.h +++ b/source/games/sw/src/conpic.h @@ -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) //////////////////////////////////////////////////////////////////////////////// // diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 3335c8470..3784d02a2 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -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 diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp index e4cf6ee14..66ce185d7 100644 --- a/source/games/sw/src/jweapon.cpp +++ b/source/games/sw/src/jweapon.cpp @@ -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); diff --git a/source/games/sw/src/panel.cpp b/source/games/sw/src/panel.cpp index 594529269..8e3858628 100644 --- a/source/games/sw/src/panel.cpp +++ b/source/games/sw/src/panel.cpp @@ -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 diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index c7f876fca..3b30ce74e 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -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) { diff --git a/source/games/sw/src/weapon.h b/source/games/sw/src/weapon.h index d5fe18ff5..ebb3a4d71 100644 --- a/source/games/sw/src/weapon.h +++ b/source/games/sw/src/weapon.h @@ -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;