diff --git a/source/games/duke/src/funct.h b/source/games/duke/src/funct.h index d8f334bcd..80f3d6f52 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 eca753a98..514d7dbda 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 5e6ecffab..6240ba21b 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -1760,7 +1760,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) @@ -2152,7 +2152,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 669669107..9b580a06d 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 88f82c677..f3692e905 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);