diff --git a/Source/missiles.cpp b/Source/missiles.cpp index bbeb3e731..847fa4fc4 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -126,21 +126,30 @@ void UpdateMissileVelocity(int i, Point source, Point destination, int v) Missiles[i].position.velocity.deltaY = static_cast((dyp * (v << 15)) / dr); } +/** + * @brief Add the missile to the lookup tables + * @param i Missiles index + */ void PutMissile(int8_t i) { - int x = Missiles[i].position.tile.x; - int y = Missiles[i].position.tile.y; - if (!InDungeonBounds({ x, y })) + Point position = Missiles[i].position.tile; + + if (!InDungeonBounds(position)) Missiles[i]._miDelFlag = true; - if (!Missiles[i]._miDelFlag) { - dFlags[x][y] |= BFLAG_MISSILE; - if (dMissile[x][y] == 0) - dMissile[x][y] = i + 1; - else - dMissile[x][y] = -1; - if (Missiles[i]._miPreFlag) - MissilePreFlag = true; + + if (Missiles[i]._miDelFlag) { + return; } + + dFlags[position.x][position.y] |= BFLAG_MISSILE; + + if (dMissile[position.x][position.y] == 0) + dMissile[position.x][position.y] = i + 1; + else + dMissile[position.x][position.y] = -1; + + if (Missiles[i]._miPreFlag) + MissilePreFlag = true; } void UpdateMissilePos(int i)