diff --git a/source/games/duke/src/funct.h b/source/games/duke/src/funct.h index 4e8566e40c..11f0f278d7 100644 --- a/source/games/duke/src/funct.h +++ b/source/games/duke/src/funct.h @@ -182,7 +182,6 @@ void getglobalz(DDukeActor* s); void OnEvent(int id, int pnum = -1, DDukeActor* snum = nullptr, int dist = -1); void setFromSpawnRec(DDukeActor* act, SpawnRec* info); -DDukeActor* CreateActor(sectortype* whatsectp, const DVector3& pos, int s_pn, int8_t s_shd, const DVector2& scale, DAngle s_ang, double s_vel, double s_zvel, DDukeActor* s_ow, int8_t s_stat); DDukeActor* CreateActor(sectortype* whatsectp, const DVector3& pos, PClassActor* cls, int8_t s_shd, const DVector2& scale, DAngle s_ang, double s_vel, double s_zvel, DDukeActor* s_ow, int8_t s_stat); DDukeActor* SpawnActor(sectortype* whatsectp, const DVector3& pos, PClassActor* cls, int8_t s_shd, const DVector2& scale, DAngle s_ang, double s_vel, double s_zvel, DDukeActor* s_ow, int8_t s_stat = -1); diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index 3d0a442786..4baf9e9350 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -1112,7 +1112,7 @@ static void operateweapon(int snum, ESyncBits actions) zvel -= 4; } - auto spawned = CreateActor(p->cursector, p->GetActor()->getPosWithOffsetZ() + p->GetActor()->spr.Angles.Yaw.ToVector() * 16, DTILE_HEAVYHBOMB, -16, DVector2(0.140625, 0.140625), + auto spawned = CreateActor(p->cursector, p->GetActor()->getPosWithOffsetZ() + p->GetActor()->spr.Angles.Yaw.ToVector() * 16, DukePipeBombClass, -16, DVector2(0.140625, 0.140625), p->GetActor()->spr.Angles.Yaw, vel + p->hbomb_hold_delay * 2, zvel, pact, STAT_ACTOR); if (isNam()) diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index 6ab4256bfa..6e02fccf3c 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -1745,7 +1745,7 @@ static void operateweapon(int snum, ESyncBits actions, sectortype* psectp) zvel -= 4; } - auto spawned = CreateActor(p->cursector, p->GetActor()->getPosWithOffsetZ() + p->GetActor()->spr.Angles.Yaw.ToVector() * 16, RTILE_DYNAMITE, -16, DVector2(0.140625, 0.140625), + auto spawned = CreateActor(p->cursector, p->GetActor()->getPosWithOffsetZ() + p->GetActor()->spr.Angles.Yaw.ToVector() * 16, RedneckDynamiteClass, -16, DVector2(0.140625, 0.140625), p->GetActor()->spr.Angles.Yaw, (vel + p->hbomb_hold_delay * 2) * 2, zvel, pact, 1); if (spawned) @@ -2137,7 +2137,7 @@ static void operateweapon(int snum, ESyncBits actions, sectortype* psectp) zvel -= 4; } - CreateActor(p->cursector, p->GetActor()->getPosWithOffsetZ() + p->GetActor()->spr.Angles.Yaw.ToVector() * 16, RTILE_POWDERKEG, -16, DVector2(0.140625, 0.140625), p->GetActor()->spr.Angles.Yaw, vel * 2, zvel, pact, 1); + CreateActor(p->cursector, p->GetActor()->getPosWithOffsetZ() + p->GetActor()->spr.Angles.Yaw.ToVector() * 16, RedneckPowderKegClass, -16, DVector2(0.140625, 0.140625), p->GetActor()->spr.Angles.Yaw, vel * 2, zvel, pact, 1); } p->kickback_pic++; if (p->kickback_pic > 20) diff --git a/source/games/duke/src/player_w.cpp b/source/games/duke/src/player_w.cpp index 6696691070..9b580a06d5 100644 --- a/source/games/duke/src/player_w.cpp +++ b/source/games/duke/src/player_w.cpp @@ -342,7 +342,7 @@ void operateweapon_ww(int snum, ESyncBits actions) zvel -= 4; } - auto spawned = CreateActor(p->cursector, p->GetActor()->getPosWithOffsetZ() + p->GetActor()->spr.Angles.Yaw.ToVector() * 16, DTILE_HEAVYHBOMB, -16, DVector2(0.140625, 0.140625), + auto spawned = CreateActor(p->cursector, p->GetActor()->getPosWithOffsetZ() + p->GetActor()->spr.Angles.Yaw.ToVector() * 16, DukePipeBombClass, -16, DVector2(0.140625, 0.140625), p->GetActor()->spr.Angles.Yaw, vel + p->hbomb_hold_delay * 2, zvel, pact, 1); if (spawned) diff --git a/source/games/duke/src/spawn.cpp b/source/games/duke/src/spawn.cpp index 551deffaf2..a626b46f6a 100644 --- a/source/games/duke/src/spawn.cpp +++ b/source/games/duke/src/spawn.cpp @@ -76,26 +76,20 @@ void setFromSpawnRec(DDukeActor* act, SpawnRec* info) // //--------------------------------------------------------------------------- -DDukeActor* CreateActor(sectortype* whatsectp, const DVector3& pos, PClassActor* clstype, int s_pn, int8_t s_shd, const DVector2& scale, DAngle s_ang, double s_vel, double s_zvel, DDukeActor* s_ow, int8_t s_stat) +DDukeActor* CreateActor(sectortype* whatsectp, const DVector3& pos, PClassActor* clstype, int8_t s_shd, const DVector2& scale, DAngle s_ang, double s_vel, double s_zvel, DDukeActor* s_ow, int8_t s_stat) { // sector pointer must be strictly validated here or the engine will crash. if (whatsectp == nullptr || !validSectorIndex(sectindex(whatsectp))) return nullptr; // spawning out of range sprites will also crash. - if (clstype == nullptr && (s_pn < 0 || s_pn >= MAXTILES)) return nullptr; + if (clstype == nullptr) return nullptr; SpawnRec* info = nullptr; - if (!clstype) - { - info = spawnMap.CheckKey(s_pn); - if (info) clstype = static_cast(info->cls); - } if (s_stat < 0) s_stat = clstype ? GetDefaultByType(clstype)->spr.statnum : 0; auto act = static_cast(InsertActor(clstype? clstype : RUNTIME_CLASS(DDukeActor), whatsectp, s_stat)); if (act == nullptr) return nullptr; SetupGameVarsForActor(act); - if (s_pn != -1) act->spr.picnum = s_pn; // if -1 use the class default. setFromSpawnRec(act, info); act->spr.pos = pos; act->spr.shade = s_shd; @@ -149,16 +143,6 @@ DDukeActor* CreateActor(sectortype* whatsectp, const DVector3& pos, PClassActor* } -DDukeActor* CreateActor(sectortype* whatsectp, const DVector3& pos, int s_pn, int8_t s_shd, const DVector2& scale, DAngle s_ang, double s_vel, double s_zvel, DDukeActor* s_ow, int8_t s_stat) -{ - return CreateActor(whatsectp, pos, nullptr, s_pn, s_shd, scale, s_ang, s_vel, s_zvel, s_ow, s_stat); -} - -DDukeActor* CreateActor(sectortype* whatsectp, const DVector3& pos, PClassActor* cls, int8_t s_shd, const DVector2& scale, DAngle s_ang, double s_vel, double s_zvel, DDukeActor* s_ow, int8_t s_stat) -{ - return CreateActor(whatsectp, pos, cls, -1, s_shd, scale, s_ang, s_vel, s_zvel, s_ow, s_stat); -} - DDukeActor* SpawnActor(sectortype* whatsectp, const DVector3& pos, PClassActor* cls, int8_t s_shd, const DVector2& scale, DAngle s_ang, double s_vel, double s_zvel, DDukeActor* s_ow, int8_t s_stat) { auto actor = CreateActor(whatsectp, pos, cls, s_shd, scale, s_ang, s_vel, s_zvel, s_ow, s_stat);