Browse Source

Use MoveMissile in SpawnLightning to correctly check walls

pull/5257/head
obligaron 4 years ago committed by Anders Jenbo
parent
commit
4b93249eee
  1. 28
      Source/missiles.cpp

28
Source/missiles.cpp

@ -661,20 +661,24 @@ void SyncPositionWithParent(Missile &missile, const AddMissileParameter &paramet
void SpawnLightning(Missile &missile, int dam)
{
missile._mirange--;
missile.position.traveled += missile.position.velocity;
UpdateMissilePos(missile);
Point position = missile.position.tile;
assert(InDungeonBounds(position));
int pn = dPiece[position.x][position.y];
assert(pn >= 0 && pn <= MAXTILES);
MoveMissile(
missile, [&](Point tile) {
assert(InDungeonBounds(tile));
int pn = dPiece[tile.x][tile.y];
assert(pn >= 0 && pn <= MAXTILES);
if (!missile.IsTrap() || tile != missile.position.start) {
if (TileHasAny(pn, TileProperties::BlockMissile)) {
missile._mirange = 0;
return false;
}
}
if (!missile.IsTrap() || position != missile.position.start) {
if (TileHasAny(pn, TileProperties::BlockMissile)) {
missile._mirange = 0;
}
}
return true;
});
auto position = missile.position.tile;
int pn = dPiece[position.x][position.y];
if (!TileHasAny(pn, TileProperties::BlockMissile)) {
if (position != Point { missile.var1, missile.var2 } && InDungeonBounds(position)) {
missile_id type = MIS_LIGHTNING;

Loading…
Cancel
Save