Browse Source

Clean up remaining dObject references in missiles.cpp

pull/3859/head
ephphatha 4 years ago committed by Anders Jenbo
parent
commit
82e9c3ea14
  1. 20
      Source/missiles.cpp

20
Source/missiles.cpp

@ -664,7 +664,7 @@ void AddRune(Missile &missile, Point dst, missile_id missileID)
if (!InDungeonBounds(target)) {
return false;
}
if (dObject[target.x][target.y] != 0) {
if (IsObjectAtPosition(target)) {
return false;
}
if (TileContainsMissile(target)) {
@ -2059,7 +2059,7 @@ void AddTown(Missile &missile, Point dst, Direction /*midir*/)
if (!InDungeonBounds(target)) {
return false;
}
if (dObject[target.x][target.y] != 0) {
if (IsObjectAtPosition(target)) {
return false;
}
if (dPlayer[target.x][target.y] != 0) {
@ -2181,7 +2181,7 @@ void AddGuardian(Missile &missile, Point dst, Direction /*midir*/)
if (dMonster[target.x][target.y] != 0) {
return false;
}
if (dObject[target.x][target.y] != 0) {
if (IsObjectAtPosition(target)) {
return false;
}
if (TileContainsMissile(target)) {
@ -2491,7 +2491,7 @@ void AddFirewallC(Missile &missile, Point dst, Direction midir)
{
std::optional<Point> spreadPosition = FindClosestValidPosition(
[start = missile.position.start](Point target) {
return start != target && IsTileNotSolid(target) && InDungeonBounds(target) && dObject[target.x][target.y] == 0 && LineClearMissile(start, target);
return start != target && IsTileNotSolid(target) && !IsObjectAtPosition(target) && LineClearMissile(start, target);
},
dst, 0, 5);
@ -3010,16 +3010,16 @@ void MI_Firebolt(Missile &missile)
void MI_Lightball(Missile &missile)
{
int tx = missile.var1;
int ty = missile.var2;
Point targetPosition = { missile.var1, missile.var2 };
missile._mirange--;
int j = missile._mirange;
MoveMissileAndCheckMissileCol(missile, missile._midam, missile._midam, false, false);
if (missile._miHitFlag)
missile._mirange = j;
if (missile.position.tile == Point { tx, ty }) {
int8_t oi = abs(dObject[tx][ty]) - 1;
if (oi >= 0 && Objects[oi].IsShrine()) {
if (missile.position.tile == targetPosition) {
Object *object = ObjectAtPosition(targetPosition);
if (object != nullptr && object->IsShrine()) {
missile._mirange = j;
}
}
@ -3216,7 +3216,7 @@ void MI_FireRing(Missile &missile)
int dp = dPiece[target.x][target.y];
if (nSolidTable[dp])
continue;
if (dObject[target.x][target.y] != 0)
if (IsObjectAtPosition(target))
continue;
if (!LineClearMissile(missile.position.tile, target))
continue;

Loading…
Cancel
Save