Merge pull request #2648 from bcko/2435_refactor_Missiles_3
This commit is contained in:
parent
f6bb118cd5
commit
1a6562e16d
4 changed files with 16 additions and 17 deletions
|
|
@ -658,9 +658,8 @@ bool CheckIfTrig(Point position)
|
|||
return false;
|
||||
}
|
||||
|
||||
bool GuardianTryFireAt(int i, Point target)
|
||||
bool GuardianTryFireAt(MissileStruct &missile, Point target)
|
||||
{
|
||||
auto &missile = Missiles[i];
|
||||
Point position = missile.position.tile;
|
||||
|
||||
if (!LineClearMissile(position, target))
|
||||
|
|
@ -3916,10 +3915,10 @@ void MI_Guardian(int i)
|
|||
if (previous == offset) {
|
||||
continue;
|
||||
}
|
||||
found = GuardianTryFireAt(i, { position.x + offset.deltaX, position.y + offset.deltaY })
|
||||
|| GuardianTryFireAt(i, { position.x - offset.deltaX, position.y - offset.deltaY })
|
||||
|| GuardianTryFireAt(i, { position.x + offset.deltaX, position.y - offset.deltaY })
|
||||
|| GuardianTryFireAt(i, { position.x - offset.deltaX, position.y + offset.deltaY });
|
||||
found = GuardianTryFireAt(missile, { position.x + offset.deltaX, position.y + offset.deltaY })
|
||||
|| GuardianTryFireAt(missile, { position.x - offset.deltaX, position.y - offset.deltaY })
|
||||
|| GuardianTryFireAt(missile, { position.x + offset.deltaX, position.y - offset.deltaY })
|
||||
|| GuardianTryFireAt(missile, { position.x - offset.deltaX, position.y + offset.deltaY });
|
||||
if (!found) {
|
||||
previous = offset;
|
||||
}
|
||||
|
|
@ -4686,9 +4685,8 @@ void missiles_process_charge()
|
|||
}
|
||||
}
|
||||
|
||||
void ClearMissileSpot(int mi)
|
||||
void ClearMissileSpot(Point &missileTile)
|
||||
{
|
||||
auto &missileTile = Missiles[mi].position.tile;
|
||||
dFlags[missileTile.x][missileTile.y] &= ~BFLAG_MISSILE;
|
||||
dMissile[missileTile.x][missileTile.y] = 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -268,6 +268,6 @@ void MI_ResurrectBeam(int i);
|
|||
void MI_Rportal(int i);
|
||||
void ProcessMissiles();
|
||||
void missiles_process_charge();
|
||||
void ClearMissileSpot(int mi);
|
||||
void ClearMissileSpot(Point &missileTile);
|
||||
|
||||
} // namespace devilution
|
||||
|
|
|
|||
|
|
@ -1760,7 +1760,7 @@ DWORD OnEndShield(TCmd *pCmd, int pnum)
|
|||
int mi = ActiveMissiles[i];
|
||||
auto &missile = Missiles[mi];
|
||||
if (missile._mitype == MIS_MANASHIELD && missile._misource == pnum) {
|
||||
ClearMissileSpot(mi);
|
||||
ClearMissileSpot(missile.position.tile);
|
||||
DeleteMissile(mi, i);
|
||||
}
|
||||
}
|
||||
|
|
@ -1793,7 +1793,7 @@ DWORD OnEndReflect(TCmd *pCmd, int pnum)
|
|||
int mi = ActiveMissiles[i];
|
||||
auto &missile = Missiles[mi];
|
||||
if (missile._mitype == MIS_REFLECT && missile._misource == pnum) {
|
||||
ClearMissileSpot(mi);
|
||||
ClearMissileSpot(missile.position.tile);
|
||||
DeleteMissile(mi, i);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3216,19 +3216,20 @@ void RemovePlrMissiles(int pnum)
|
|||
|
||||
for (int i = 0; i < ActiveMissileCount; i++) {
|
||||
int am = ActiveMissiles[i];
|
||||
if (Missiles[am]._mitype == MIS_STONE && Missiles[am]._misource == pnum) {
|
||||
Monsters[Missiles[am]._miVar2]._mmode = (MON_MODE)Missiles[am]._miVar1;
|
||||
auto &missile = Missiles[am];
|
||||
if (missile._mitype == MIS_STONE && missile._misource == pnum) {
|
||||
Monsters[missile._miVar2]._mmode = (MON_MODE)missile._miVar1;
|
||||
}
|
||||
if (Missiles[am]._mitype == MIS_MANASHIELD && Missiles[am]._misource == pnum) {
|
||||
ClearMissileSpot(am);
|
||||
if (missile._mitype == MIS_MANASHIELD && missile._misource == pnum) {
|
||||
ClearMissileSpot(missile.position.tile);
|
||||
DeleteMissile(am, i);
|
||||
}
|
||||
if (Missiles[am]._mitype == MIS_REFLECT && Missiles[am]._misource == pnum) {
|
||||
ClearMissileSpot(am);
|
||||
ClearMissileSpot(missile.position.tile);
|
||||
DeleteMissile(am, i);
|
||||
}
|
||||
if (Missiles[am]._mitype == MIS_ETHEREALIZE && Missiles[am]._misource == pnum) {
|
||||
ClearMissileSpot(am);
|
||||
ClearMissileSpot(missile.position.tile);
|
||||
DeleteMissile(am, i);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue