|
|
|
|
@ -1291,7 +1291,7 @@ void InitMissiles()
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddHiveExplosion(MissileStruct &missile, Point /*dst*/, int midir) |
|
|
|
|
void AddHiveExplosion(MissileStruct &missile, Point /*dst*/, Direction midir) |
|
|
|
|
{ |
|
|
|
|
for (int x : { 80, 81 }) { |
|
|
|
|
for (int y : { 62, 63 }) { |
|
|
|
|
@ -1317,22 +1317,22 @@ void AddRune(MissileStruct &missile, Point dst, spell_id spellID, missile_id mis
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFireRune(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddFireRune(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
AddRune(missile, dst, SPL_RUNEFIRE, MIS_HIVEEXP); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddLightningRune(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddLightningRune(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
AddRune(missile, dst, SPL_RUNELIGHT, MIS_LIGHTBALL); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddGreatLightningRune(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddGreatLightningRune(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
AddRune(missile, dst, SPL_RUNENOVA, MIS_NOVA); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddImmolationRune(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddImmolationRune(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
if (LineClearMissile(missile.position.start, dst)) { |
|
|
|
|
if (missile._misource >= 0) |
|
|
|
|
@ -1348,7 +1348,7 @@ void AddImmolationRune(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddStoneRune(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddStoneRune(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
if (LineClearMissile(missile.position.start, dst)) { |
|
|
|
|
if (missile._misource >= 0) |
|
|
|
|
@ -1364,7 +1364,7 @@ void AddStoneRune(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddReflection(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddReflection(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
|
|
|
|
|
@ -1383,7 +1383,7 @@ void AddReflection(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
UseMana(missile._misource, SPL_REFLECT); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddBerserk(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddBerserk(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
|
|
|
|
|
@ -1431,7 +1431,7 @@ void AddBerserk(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddHorkSpawn(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddHorkSpawn(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
UpdateMissileVelocity(missile, dst, 8); |
|
|
|
|
missile._mirange = 9; |
|
|
|
|
@ -1439,7 +1439,7 @@ void AddHorkSpawn(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
PutMissile(missile); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddJester(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddJester(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
missile_id spell = MIS_FIREBOLT; |
|
|
|
|
switch (GenerateRnd(10)) { |
|
|
|
|
@ -1477,7 +1477,7 @@ void AddJester(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddStealPotions(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddStealPotions(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < 3; i++) { |
|
|
|
|
int k = CrawlNum[i]; |
|
|
|
|
@ -1550,7 +1550,7 @@ void AddStealPotions(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddManaTrap(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddManaTrap(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < 3; i++) { |
|
|
|
|
int k = CrawlNum[i]; |
|
|
|
|
@ -1575,7 +1575,7 @@ void AddManaTrap(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddSpecArrow(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddSpecArrow(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
int av = 0; |
|
|
|
|
|
|
|
|
|
@ -1603,7 +1603,7 @@ void AddSpecArrow(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
missile._miVar3 = av; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddWarp(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddWarp(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
int minDistanceSq = std::numeric_limits<int>::max(); |
|
|
|
|
Point src = missile.position.start; |
|
|
|
|
@ -1635,7 +1635,7 @@ void AddWarp(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
UseMana(missile._misource, SPL_WARP); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddLightningWall(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddLightningWall(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
UpdateMissileVelocity(missile, dst, 16); |
|
|
|
|
missile._miAnimFrame = GenerateRnd(8) + 1; |
|
|
|
|
@ -1649,7 +1649,7 @@ void AddLightningWall(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddRuneExplosion(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddRuneExplosion(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
if (IsAnyOf(missile._micaster, TARGET_MONSTERS, TARGET_BOTH)) { |
|
|
|
|
int dmg = 2 * (Players[missile._misource]._pLevel + GenerateRndSum(10, 2)) + 4; |
|
|
|
|
@ -1666,10 +1666,10 @@ void AddRuneExplosion(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
missile._mirange = missile._miAnimLen - 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFireNova(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddFireNova(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
int sp = 16; |
|
|
|
|
if (missile._micaster == TARGET_MONSTERS) { |
|
|
|
|
@ -1685,10 +1685,10 @@ void AddFireNova(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._mlid = AddLight(missile.position.start, 8); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddLightningArrow(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddLightningArrow(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
UpdateMissileVelocity(missile, dst, 32); |
|
|
|
|
missile._miAnimFrame = GenerateRnd(8) + 1; |
|
|
|
|
@ -1703,7 +1703,7 @@ void AddLightningArrow(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._midam <<= 6; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddMana(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddMana(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
auto &player = Players[missile._misource]; |
|
|
|
|
|
|
|
|
|
@ -1729,7 +1729,7 @@ void AddMana(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
drawmanaflag = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddMagi(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddMagi(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
auto &player = Players[missile._misource]; |
|
|
|
|
|
|
|
|
|
@ -1740,7 +1740,7 @@ void AddMagi(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
drawmanaflag = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddRing(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddRing(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
if (missile._micaster == TARGET_MONSTERS) |
|
|
|
|
@ -1751,7 +1751,7 @@ void AddRing(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
missile._mirange = 7; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddSearch(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddSearch(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miVar1 = missile._misource; |
|
|
|
|
AutoMapShowItems = true; |
|
|
|
|
@ -1778,7 +1778,7 @@ void AddSearch(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddCboltArrow(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddCboltArrow(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
missile._mirnd = GenerateRnd(15) + 1; |
|
|
|
|
if (missile._micaster != TARGET_MONSTERS) { |
|
|
|
|
@ -1786,7 +1786,7 @@ void AddCboltArrow(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
missile._miAnimFrame = GenerateRnd(8) + 1; |
|
|
|
|
missile._mlid = AddLight(missile.position.start, 5); |
|
|
|
|
@ -1796,10 +1796,10 @@ void AddCboltArrow(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._mirange = 256; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddLArrow(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddLArrow(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
int av = 32; |
|
|
|
|
if (missile._micaster == TARGET_MONSTERS) { |
|
|
|
|
@ -1832,10 +1832,10 @@ void AddLArrow(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._mlid = AddLight(missile.position.start, 5); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddArrow(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddArrow(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
int av = 32; |
|
|
|
|
if (missile._micaster == TARGET_MONSTERS) { |
|
|
|
|
@ -1882,7 +1882,7 @@ void UpdateVileMissPos(MissileStruct &missile, Point dst)
|
|
|
|
|
missile.position.tile = dst; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddRndTeleport(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddRndTeleport(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
int pn; |
|
|
|
|
int r1; |
|
|
|
|
@ -1926,10 +1926,10 @@ void AddRndTeleport(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFirebolt(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddFirebolt(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
int sp = 26; |
|
|
|
|
if (missile._micaster == TARGET_MONSTERS) { |
|
|
|
|
@ -1950,7 +1950,7 @@ void AddFirebolt(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._mlid = AddLight(missile.position.start, 8); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddMagmaball(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddMagmaball(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
UpdateMissileVelocity(missile, dst, 16); |
|
|
|
|
missile.position.traveled.deltaX += 3 * missile.position.velocity.deltaX; |
|
|
|
|
@ -1965,7 +1965,7 @@ void AddMagmaball(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
missile._mlid = AddLight(missile.position.start, 8); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddTeleport(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddTeleport(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
for (int i = 0; i < 6; i++) { |
|
|
|
|
@ -1992,7 +1992,7 @@ void AddTeleport(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddLightball(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddLightball(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
UpdateMissileVelocity(missile, dst, 16); |
|
|
|
|
missile._miAnimFrame = GenerateRnd(8) + 1; |
|
|
|
|
@ -2006,7 +2006,7 @@ void AddLightball(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFirewall(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddFirewall(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._midam = GenerateRndSum(10, 2) + 2; |
|
|
|
|
missile._midam += missile._misource >= 0 ? Players[missile._misource]._pLevel : currlevel; // BUGFIX: missing parenthesis around ternary (fixed)
|
|
|
|
|
@ -2024,10 +2024,10 @@ void AddFirewall(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
missile._miVar1 = missile._mirange - missile._miAnimLen; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFireball(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddFireball(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
int sp = 16; |
|
|
|
|
if (missile._micaster == TARGET_MONSTERS) { |
|
|
|
|
@ -2048,7 +2048,7 @@ void AddFireball(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._mlid = AddLight(missile.position.start, 8); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddLightctrl(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddLightctrl(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
if (missile._midam == 0 && missile._micaster == TARGET_MONSTERS) |
|
|
|
|
UseMana(missile._misource, SPL_LIGHTNING); |
|
|
|
|
@ -2059,7 +2059,7 @@ void AddLightctrl(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
missile._mirange = 256; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddLightning(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddLightning(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile.position.start = dst; |
|
|
|
|
|
|
|
|
|
@ -2078,7 +2078,7 @@ void AddLightning(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._mlid = AddLight(missile.position.tile, 4); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddMisexp(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddMisexp(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
if (missile._micaster != TARGET_MONSTERS && missile._misource >= 0) { |
|
|
|
|
switch (Monsters[missile._misource].MType->mtype) { |
|
|
|
|
@ -2106,7 +2106,7 @@ void AddMisexp(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
missile._mirange = missile._miAnimLen; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddWeapexp(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddWeapexp(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miVar2 = dst.x; |
|
|
|
|
if (dst.x == 1) |
|
|
|
|
@ -2116,7 +2116,7 @@ void AddWeapexp(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
missile._mirange = missile._miAnimLen - 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddTown(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddTown(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
int tx = dst.x; |
|
|
|
|
int ty = dst.y; |
|
|
|
|
@ -2163,7 +2163,7 @@ void AddTown(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFlash(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddFlash(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
if (missile._misource != -1) { |
|
|
|
|
if (missile._micaster == TARGET_MONSTERS) { |
|
|
|
|
@ -2180,7 +2180,7 @@ void AddFlash(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
missile._mirange = 19; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFlash2(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddFlash2(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
if (missile._micaster == TARGET_MONSTERS) { |
|
|
|
|
if (missile._misource != -1) { |
|
|
|
|
@ -2196,7 +2196,7 @@ void AddFlash2(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
missile._mirange = 19; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddManashield(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddManashield(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
|
|
|
|
|
@ -2216,7 +2216,7 @@ void AddManashield(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
UseMana(missile._misource, SPL_MANASHIELD); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFiremove(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddFiremove(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._midam = GenerateRnd(10) + Players[missile._misource]._pLevel + 1; |
|
|
|
|
UpdateMissileVelocity(missile, dst, 16); |
|
|
|
|
@ -2226,7 +2226,7 @@ void AddFiremove(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
missile.position.offset.deltaY -= 32; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddGuardian(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddGuardian(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
auto &player = Players[missile._misource]; |
|
|
|
|
|
|
|
|
|
@ -2272,7 +2272,7 @@ void AddGuardian(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddChain(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddChain(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miVar1 = dst.x; |
|
|
|
|
missile._miVar2 = dst.y; |
|
|
|
|
@ -2281,7 +2281,7 @@ void AddChain(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
namespace { |
|
|
|
|
void InitMissileAnimationFromMonster(MissileStruct &mis, int midir, const MonsterStruct &mon, MonsterGraphic graphic) |
|
|
|
|
void InitMissileAnimationFromMonster(MissileStruct &mis, Direction midir, const MonsterStruct &mon, MonsterGraphic graphic) |
|
|
|
|
{ |
|
|
|
|
const AnimStruct &anim = mon.MType->GetAnimData(graphic); |
|
|
|
|
mis._mimfnum = midir; |
|
|
|
|
@ -2300,7 +2300,7 @@ void InitMissileAnimationFromMonster(MissileStruct &mis, int midir, const Monste
|
|
|
|
|
} |
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
|
|
void AddRhino(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddRhino(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
auto &monster = Monsters[missile._misource]; |
|
|
|
|
|
|
|
|
|
@ -2323,10 +2323,10 @@ void AddRhino(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
PutMissile(missile); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFlare(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddFlare(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
UpdateMissileVelocity(missile, dst, 16); |
|
|
|
|
missile._mirange = 256; |
|
|
|
|
@ -2353,7 +2353,7 @@ void AddFlare(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddAcid(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddAcid(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
UpdateMissileVelocity(missile, dst, 16); |
|
|
|
|
SetMissDir(missile, GetDirection16(missile.position.start, dst)); |
|
|
|
|
@ -2367,7 +2367,7 @@ void AddAcid(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
PutMissile(missile); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddAcidpud(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddAcidpud(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miLightFlag = true; |
|
|
|
|
int monst = missile._misource; |
|
|
|
|
@ -2375,7 +2375,7 @@ void AddAcidpud(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
missile._miPreFlag = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddStone(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddStone(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
int tx; |
|
|
|
|
int ty; |
|
|
|
|
@ -2427,7 +2427,7 @@ void AddStone(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
UseMana(missile._misource, SPL_STONE); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddGolem(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddGolem(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < ActiveMissileCount; i++) { |
|
|
|
|
int mx = ActiveMissiles[i]; |
|
|
|
|
@ -2447,14 +2447,14 @@ void AddGolem(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
UseMana(missile._misource, SPL_GOLEM); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddBoom(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddBoom(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile.position.tile = dst; |
|
|
|
|
missile.position.start = dst; |
|
|
|
|
missile._mirange = missile._miAnimLen; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddHeal(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddHeal(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
auto &player = Players[missile._misource]; |
|
|
|
|
|
|
|
|
|
@ -2480,7 +2480,7 @@ void AddHeal(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
drawhpflag = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddHealOther(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddHealOther(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
UseMana(missile._misource, SPL_HEALOTHER); |
|
|
|
|
@ -2491,10 +2491,10 @@ void AddHealOther(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddElement(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddElement(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int dmg = 2 * (Players[missile._misource]._pLevel + GenerateRndSum(10, 2)) + 4; |
|
|
|
|
@ -2513,7 +2513,7 @@ void AddElement(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
|
|
|
|
|
extern void FocusOnInventory(); |
|
|
|
|
|
|
|
|
|
void AddIdentify(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddIdentify(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
UseMana(missile._misource, SPL_IDENTIFY); |
|
|
|
|
@ -2529,7 +2529,7 @@ void AddIdentify(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFirewallC(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddFirewallC(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
for (int i = 0; i < 6; i++) { |
|
|
|
|
@ -2563,7 +2563,7 @@ void AddFirewallC(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddInfra(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddInfra(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._mirange = ScaleSpellEffect(1584, missile._mispllvl); |
|
|
|
|
missile._mirange += missile._mirange * Players[missile._misource]._pISplDur / 128; |
|
|
|
|
@ -2572,7 +2572,7 @@ void AddInfra(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
UseMana(missile._misource, SPL_INFRA); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddWave(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddWave(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miVar1 = dst.x; |
|
|
|
|
missile._miVar2 = dst.y; |
|
|
|
|
@ -2581,7 +2581,7 @@ void AddWave(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
UseMana(missile._misource, SPL_WAVE); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddNova(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddNova(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miVar1 = dst.x; |
|
|
|
|
missile._miVar2 = dst.y; |
|
|
|
|
@ -2599,7 +2599,7 @@ void AddNova(MissileStruct &missile, Point dst, int /*midir*/)
|
|
|
|
|
missile._mirange = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddBlodboil(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddBlodboil(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
auto &player = Players[missile._misource]; |
|
|
|
|
|
|
|
|
|
@ -2620,7 +2620,7 @@ void AddBlodboil(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
player.Say(HeroSpeech::Aaaaargh); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddRepair(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddRepair(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
UseMana(missile._misource, SPL_REPAIR); |
|
|
|
|
@ -2636,7 +2636,7 @@ void AddRepair(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddRecharge(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddRecharge(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
UseMana(missile._misource, SPL_RECHARGE); |
|
|
|
|
@ -2652,7 +2652,7 @@ void AddRecharge(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddDisarm(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddDisarm(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
UseMana(missile._misource, SPL_DISARM); |
|
|
|
|
@ -2667,7 +2667,7 @@ void AddDisarm(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddApoca(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddApoca(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miVar1 = 8; |
|
|
|
|
missile._miVar2 = std::max(missile.position.start.y - 8, 1); |
|
|
|
|
@ -2681,7 +2681,7 @@ void AddApoca(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
UseMana(missile._misource, SPL_APOCA); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFlame(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddFlame(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miVar2 = 5 * missile._midam; |
|
|
|
|
missile.position.start = dst; |
|
|
|
|
@ -2699,10 +2699,10 @@ void AddFlame(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFlamec(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddFlamec(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
UpdateMissileVelocity(missile, dst, 32); |
|
|
|
|
if (missile._micaster == TARGET_MONSTERS) { |
|
|
|
|
@ -2713,13 +2713,13 @@ void AddFlamec(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._mirange = 256; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddCbolt(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddCbolt(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
missile._mirnd = GenerateRnd(15) + 1; |
|
|
|
|
missile._midam = (missile._micaster == TARGET_MONSTERS) ? (GenerateRnd(Players[missile._misource]._pMagic / 4) + 1) : 15; |
|
|
|
|
|
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
missile._miAnimFrame = GenerateRnd(8) + 1; |
|
|
|
|
missile._mlid = AddLight(missile.position.start, 5); |
|
|
|
|
@ -2730,10 +2730,10 @@ void AddCbolt(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
missile._mirange = 256; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddHbolt(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddHbolt(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
int sp = 16; |
|
|
|
|
if (missile._misource != -1) { |
|
|
|
|
@ -2750,7 +2750,7 @@ void AddHbolt(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
UseMana(missile._misource, SPL_HBOLT); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddResurrect(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddResurrect(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
UseMana(missile._misource, SPL_RESURRECT); |
|
|
|
|
if (missile._misource == MyPlayerId) { |
|
|
|
|
@ -2761,14 +2761,14 @@ void AddResurrect(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddResurrectBeam(MissileStruct &missile, Point dst, int /*midir*/) |
|
|
|
|
void AddResurrectBeam(MissileStruct &missile, Point dst, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile.position.tile = dst; |
|
|
|
|
missile.position.start = dst; |
|
|
|
|
missile._mirange = MissileSpriteData[MFILE_RESSUR1].animLen[0]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddTelekinesis(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddTelekinesis(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
UseMana(missile._misource, SPL_TELEKINESIS); |
|
|
|
|
@ -2776,10 +2776,10 @@ void AddTelekinesis(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
NewCursor(CURSOR_TELEKINESIS); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddBoneSpirit(MissileStruct &missile, Point dst, int midir) |
|
|
|
|
void AddBoneSpirit(MissileStruct &missile, Point dst, Direction midir) |
|
|
|
|
{ |
|
|
|
|
if (missile.position.start == dst) { |
|
|
|
|
dst += static_cast<Direction>(midir); |
|
|
|
|
dst += midir; |
|
|
|
|
} |
|
|
|
|
UpdateMissileVelocity(missile, dst, 16); |
|
|
|
|
SetMissDir(missile, GetDirection(missile.position.start, dst)); |
|
|
|
|
@ -2795,14 +2795,14 @@ void AddBoneSpirit(MissileStruct &missile, Point dst, int midir)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddRportal(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddRportal(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
missile._mirange = 100; |
|
|
|
|
missile._miVar1 = 100 - missile._miAnimLen; |
|
|
|
|
PutMissile(missile); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddDiabApoca(MissileStruct &missile, Point /*dst*/, int /*midir*/) |
|
|
|
|
void AddDiabApoca(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) |
|
|
|
|
{ |
|
|
|
|
int players = gbIsMultiplayer ? MAX_PLRS : 1; |
|
|
|
|
for (int pnum = 0; pnum < players; pnum++) { |
|
|
|
|
@ -2812,12 +2812,12 @@ void AddDiabApoca(MissileStruct &missile, Point /*dst*/, int /*midir*/)
|
|
|
|
|
if (!LineClearMissile(missile.position.start, player.position.future)) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
AddMissile({ 0, 0 }, player.position.future, 0, MIS_BOOM2, missile._micaster, missile._misource, missile._midam, 0); |
|
|
|
|
AddMissile({ 0, 0 }, player.position.future, DIR_S, MIS_BOOM2, missile._micaster, missile._misource, missile._midam, 0); |
|
|
|
|
} |
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int AddMissile(Point src, Point dst, int midir, missile_id mitype, mienemy_type micaster, int id, int midam, int spllvl) |
|
|
|
|
int AddMissile(Point src, Point dst, Direction midir, missile_id mitype, mienemy_type micaster, int id, int midam, int spllvl) |
|
|
|
|
{ |
|
|
|
|
if (ActiveMissileCount >= MAXMISSILES - 1) |
|
|
|
|
return -1; |
|
|
|
|
@ -3049,16 +3049,17 @@ void MI_Firebolt(int i)
|
|
|
|
|
missile.position.traveled = { omx, omy }; |
|
|
|
|
UpdateMissilePos(missile); |
|
|
|
|
missile.position.StopMissile(); |
|
|
|
|
auto dir = static_cast<Direction>(missile._mimfnum); |
|
|
|
|
switch (missile._mitype) { |
|
|
|
|
case MIS_FIREBOLT: |
|
|
|
|
case MIS_MAGMABALL: |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_MISEXP, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, dir, MIS_MISEXP, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
case MIS_FLARE: |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_MISEXP2, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, dir, MIS_MISEXP2, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
case MIS_ACID: |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_MISEXP3, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, dir, MIS_MISEXP3, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
case MIS_BONESPIRIT: |
|
|
|
|
SetMissDir(missile, 8); |
|
|
|
|
@ -3067,19 +3068,19 @@ void MI_Firebolt(int i)
|
|
|
|
|
PutMissile(missile); |
|
|
|
|
return; |
|
|
|
|
case MIS_LICH: |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_EXORA1, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, dir, MIS_EXORA1, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
case MIS_PSYCHORB: |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_EXBL2, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, dir, MIS_EXBL2, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
case MIS_NECROMORB: |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_EXRED3, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, dir, MIS_EXRED3, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
case MIS_ARCHLICH: |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_EXYEL2, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, dir, MIS_EXYEL2, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
case MIS_BONEDEMON: |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_EXBL3, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, dir, MIS_EXBL3, missile._micaster, missile._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
break; |
|
|
|
|
@ -3351,7 +3352,7 @@ void MI_FireRing(int i)
|
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
AddMissile({ tx, ty }, { tx, ty }, 0, MIS_FIREWALL, TARGET_BOTH, src, dmg, missile._mispllvl); |
|
|
|
|
AddMissile({ tx, ty }, { tx, ty }, DIR_S, MIS_FIREWALL, TARGET_BOTH, src, dmg, missile._mispllvl); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -3835,7 +3836,7 @@ void MI_Acidsplat(int i)
|
|
|
|
|
missile._miDelFlag = true; |
|
|
|
|
int monst = missile._misource; |
|
|
|
|
int dam = (Monsters[monst].MData->mLevel >= 2 ? 2 : 1); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, missile._mimfnum, MIS_ACIDPUD, TARGET_PLAYERS, monst, dam, missile._mispllvl); |
|
|
|
|
AddMissile(missile.position.tile, { i, 0 }, static_cast<Direction>(missile._mimfnum), MIS_ACIDPUD, TARGET_PLAYERS, monst, dam, missile._mispllvl); |
|
|
|
|
} else { |
|
|
|
|
PutMissile(missile); |
|
|
|
|
} |
|
|
|
|
|