diff --git a/Source/engine/render/scrollrt.cpp b/Source/engine/render/scrollrt.cpp index 365600384..21eea24bd 100644 --- a/Source/engine/render/scrollrt.cpp +++ b/Source/engine/render/scrollrt.cpp @@ -128,9 +128,9 @@ void UpdateMissileRendererData(Missile &m) m.position.tileForRendering = m.position.tile; m.position.offsetForRendering = m.position.offset; - const MissileMovementDistrubution missileMovement = MissilesData[m._mitype].MovementDistribution; + const MissileMovementDistribution missileMovement = MissilesData[m._mitype].MovementDistribution; // don't calculate missile position if they don't move - if (missileMovement == MissileMovementDistrubution::Disabled || m.position.velocity == Displacement {}) + if (missileMovement == MissileMovementDistribution::Disabled || m.position.velocity == Displacement {}) return; float fProgress = gfProgressToNextGameTick; @@ -156,7 +156,7 @@ void UpdateMissileRendererData(Missile &m) return; // If no collision can happen at the new tile we can advance - if (!CouldMissileCollide(m.position.tileForRendering, missileMovement == MissileMovementDistrubution::Blockable)) + if (!CouldMissileCollide(m.position.tileForRendering, missileMovement == MissileMovementDistribution::Blockable)) return; // The new tile could be invalid, so don't advance to it. diff --git a/Source/misdat.cpp b/Source/misdat.cpp index 8700764e5..c180709ea 100644 --- a/Source/misdat.cpp +++ b/Source/misdat.cpp @@ -14,115 +14,115 @@ namespace devilution { /** Data related to each missile ID. */ MissileData MissilesData[] = { // clang-format off - // mAddProc, mProc, name, mDraw, mType, mResist, mFileNum, mlSFX, miSFX, MovementDistribution; - { &AddArrow, &MI_Arrow, MIS_ARROW, true, 0, MISR_NONE, MFILE_ARROWS, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddFirebolt, &MI_Firebolt, MIS_FIREBOLT, true, 1, MISR_FIRE, MFILE_FIREBA, LS_FBOLT1, LS_FIRIMP2, MissileMovementDistrubution::Blockable }, - { &AddGuardian, &MI_Guardian, MIS_GUARDIAN, true, 1, MISR_NONE, MFILE_GUARD, LS_GUARD, LS_GUARDLAN, MissileMovementDistrubution::Disabled }, - { &AddRndTeleport, &MI_Teleport, MIS_RNDTELEPORT, false, 1, MISR_NONE, MFILE_NONE, LS_TELEPORT, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddLightball, &MI_Lightball, MIS_LIGHTBALL, true, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Unblockable }, - { &AddFirewall, &MI_Firewall, MIS_FIREWALL, true, 1, MISR_FIRE, MFILE_FIREWAL, LS_WALLLOOP, LS_FIRIMP2, MissileMovementDistrubution::Disabled }, - { &AddFireball, &MI_Fireball, MIS_FIREBALL, true, 1, MISR_FIRE, MFILE_FIREBA, LS_FBOLT1, LS_FIRIMP2, MissileMovementDistrubution::Blockable }, - { &AddLightctrl, &MI_Lightctrl, MIS_LIGHTCTRL, false, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddLightning, &MI_Lightning, MIS_LIGHTNING, true, 1, MISR_LIGHTNING, MFILE_LGHNING, LS_LNING1, LS_ELECIMP1, MissileMovementDistrubution::Disabled }, - { &AddMisexp, &MI_Misexp, MIS_MISEXP, true, 2, MISR_NONE, MFILE_MAGBLOS, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddTown, &MI_Town, MIS_TOWN, true, 1, MISR_MAGIC, MFILE_PORTAL, LS_SENTINEL, LS_ELEMENTL, MissileMovementDistrubution::Disabled }, - { &AddFlash, &MI_Flash, MIS_FLASH, true, 1, MISR_MAGIC, MFILE_BLUEXFR, LS_NOVA, LS_ELECIMP1, MissileMovementDistrubution::Disabled }, - { &AddFlash2, &MI_Flash2, MIS_FLASH2, true, 1, MISR_MAGIC, MFILE_BLUEXBK, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddManashield, nullptr, MIS_MANASHIELD, false, 1, MISR_MAGIC, MFILE_MANASHLD, LS_MSHIELD, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddFiremove, &MI_Firemove, MIS_FIREMOVE, true, 1, MISR_FIRE, MFILE_FIREWAL, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Unblockable }, - { &AddChain, &MI_Chain, MIS_CHAIN, true, 1, MISR_LIGHTNING, MFILE_LGHNING, LS_LNING1, LS_ELECIMP1, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_SENTINAL, true, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_BLODSTAR, true, 2, MISR_NONE, MFILE_BLOOD, LS_BLODSTAR, LS_BLSIMPT, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_BONE, true, 2, MISR_NONE, MFILE_BONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_METLHIT, true, 2, MISR_NONE, MFILE_METLHIT, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddRhino, &MI_Rhino, MIS_RHINO, true, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddMagmaball, &MI_Firebolt, MIS_MAGMABALL, true, 1, MISR_FIRE, MFILE_MAGBALL, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddLightctrl, &MI_Lightctrl, MIS_LIGHTCTRL2, false, 1, MISR_LIGHTNING, MFILE_THINLGHT, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddLightning, &MI_Lightning, MIS_LIGHTNING2, true, 1, MISR_LIGHTNING, MFILE_THINLGHT, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddFlare, &MI_Firebolt, MIS_FLARE, true, 1, MISR_MAGIC, MFILE_FLARE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddMisexp, &MI_Misexp, MIS_MISEXP2, true, 2, MISR_MAGIC, MFILE_FLAREEXP, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddTeleport, &MI_Teleport, MIS_TELEPORT, false, 1, MISR_NONE, MFILE_NONE, LS_ELEMENTL, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddLArrow, &MI_LArrow, MIS_FARROW, true, 0, MISR_FIRE, MFILE_FARROW, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { nullptr, nullptr, MIS_DOOMSERP, false, 1, MISR_MAGIC, MFILE_DOOM, LS_DSERP, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_FIREWALLA, true, 2, MISR_FIRE, MFILE_FIREWAL, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddStone, &MI_Stone, MIS_STONE, false, 1, MISR_MAGIC, MFILE_NONE, LS_SCURIMP, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_NULL_1F, true, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_INVISIBL, false, 1, MISR_NONE, MFILE_NONE, LS_INVISIBL, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddGolem, nullptr, MIS_GOLEM, false, 1, MISR_NONE, MFILE_NONE, LS_GOLUM, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_ETHEREALIZE, true, 1, MISR_NONE, MFILE_ETHRSHLD, LS_ETHEREAL, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_BLODBUR, true, 2, MISR_NONE, MFILE_BLODBUR, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddBoom, &MI_Boom, MIS_BOOM, true, 2, MISR_NONE, MFILE_NEWEXP, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddHeal, nullptr, MIS_HEAL, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddFirewallC, &MI_FirewallC, MIS_FIREWALLC, false, 1, MISR_FIRE, MFILE_FIREWAL, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddInfra, &MI_Infra, MIS_INFRA, false, 1, MISR_NONE, MFILE_NONE, LS_INFRAVIS, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddIdentify, nullptr, MIS_IDENTIFY, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddWave, &MI_Wave, MIS_WAVE, true, 1, MISR_FIRE, MFILE_FIREWAL, LS_FLAMWAVE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddNova, &MI_Nova, MIS_NOVA, true, 1, MISR_LIGHTNING, MFILE_LGHNING, LS_NOVA, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddBlodboil, &MI_Blodboil, MIS_BLODBOIL, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddApoca, &MI_Apoca, MIS_APOCA, true, 1, MISR_MAGIC, MFILE_NEWEXP, LS_APOC, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddRepair, nullptr, MIS_REPAIR, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddRecharge, nullptr, MIS_RECHARGE, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddDisarm, nullptr, MIS_DISARM, false, 2, MISR_NONE, MFILE_NONE, LS_TRAPDIS, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddFlame, &MI_Flame, MIS_FLAME, true, 1, MISR_FIRE, MFILE_INFERNO, LS_SPOUTSTR, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddFlamec, &MI_Flamec, MIS_FLAMEC, false, 1, MISR_FIRE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_FIREMAN, true, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { nullptr, nullptr, MIS_KRULL, true, 0, MISR_FIRE, MFILE_KRULL, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddCbolt, &MI_Cbolt, MIS_CBOLT, true, 1, MISR_LIGHTNING, MFILE_MINILTNG, LS_CBOLT, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddHbolt, &MI_Hbolt, MIS_HBOLT, true, 1, MISR_NONE, MFILE_HOLY, LS_HOLYBOLT, LS_ELECIMP1, MissileMovementDistrubution::Blockable }, - { &AddResurrect, nullptr, MIS_RESURRECT, false, 1, MISR_MAGIC, MFILE_NONE, SFX_NONE, LS_RESUR, MissileMovementDistrubution::Disabled }, - { &AddTelekinesis, nullptr, MIS_TELEKINESIS, false, 1, MISR_NONE, MFILE_NONE, LS_ETHEREAL, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddLArrow, &MI_LArrow, MIS_LARROW, true, 0, MISR_LIGHTNING, MFILE_LARROW, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddAcid, &MI_Firebolt, MIS_ACID, true, 1, MISR_ACID, MFILE_ACIDBF, LS_ACID, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddMisexp, &MI_Acidsplat, MIS_MISEXP3, true, 2, MISR_ACID, MFILE_ACIDSPLA, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddAcidpud, &MI_Acidpud, MIS_ACIDPUD, true, 2, MISR_ACID, MFILE_ACIDPUD, LS_PUDDLE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddHealOther, nullptr, MIS_HEALOTHER, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddElement, &MI_Element, MIS_ELEMENT, true, 1, MISR_FIRE, MFILE_FIRERUN, LS_ELEMENTL, SFX_NONE, MissileMovementDistrubution::Unblockable }, - { &AddResurrectBeam, &MI_ResurrectBeam, MIS_RESURRECTBEAM, true, 1, MISR_NONE, MFILE_RESSUR1, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddBoneSpirit, &MI_Bonespirit, MIS_BONESPIRIT, true, 1, MISR_MAGIC, MFILE_SKLBALL, LS_BONESP, LS_BSIMPCT, MissileMovementDistrubution::Blockable }, - { &AddWeapexp, &MI_Weapexp, MIS_WEAPEXP, true, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddRportal, &MI_Rportal, MIS_RPORTAL, true, 2, MISR_NONE, MFILE_RPORTAL, LS_SENTINEL, LS_ELEMENTL, MissileMovementDistrubution::Disabled }, - { &AddBoom, &MI_Boom, MIS_BOOM2, true, 2, MISR_NONE, MFILE_FIREPLAR, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddDiabApoca, nullptr, MIS_DIABAPOCA, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddMana, nullptr, MIS_MANA, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddMagi, nullptr, MIS_MAGI, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddLightningWall, &MI_LightningWall, MIS_LIGHTWALL, true, 1, MISR_LIGHTNING, MFILE_LGHNING, LS_LMAG, LS_ELECIMP1, MissileMovementDistrubution::Disabled }, - { &AddFirewallC, &MI_LightningWallC, MIS_LIGHTNINGWALL, false, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddNova, &MI_FireNova, MIS_IMMOLATION, true, 1, MISR_FIRE, MFILE_FIREBA, LS_FBOLT1, LS_FIRIMP2, MissileMovementDistrubution::Disabled }, - { &AddSpecArrow, &MI_SpecArrow, MIS_SPECARROW, true, 0, MISR_NONE, MFILE_ARROWS, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddFireNova, &MI_Fireball, MIS_FIRENOVA, true, 1, MISR_FIRE, MFILE_FIREBA, IS_FBALLBOW, LS_FIRIMP2, MissileMovementDistrubution::Blockable }, - { &AddLightningArrow, &MI_LightningArrow, MIS_LIGHTARROW, false, 1, MISR_LIGHTNING, MFILE_LGHNING, IS_FBALLBOW, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddCboltArrow, &MI_Cbolt, MIS_CBOLTARROW, true, 1, MISR_LIGHTNING, MFILE_MINILTNG, LS_CBOLT, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddHbolt, &MI_Hbolt, MIS_HBOLTARROW, true, 1, MISR_NONE, MFILE_HOLY, LS_HOLYBOLT, LS_ELECIMP1, MissileMovementDistrubution::Blockable }, - { &AddWarp, &MI_Teleport, MIS_WARP, false, 1, MISR_NONE, MFILE_NONE, LS_ETHEREAL, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddReflection, nullptr, MIS_REFLECT, false, 1, MISR_NONE, MFILE_REFLECT, LS_MSHIELD, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddBerserk, nullptr, MIS_BERSERK, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddRing, &MI_FireRing, MIS_FIRERING, false, 1, MISR_FIRE, MFILE_FIREWAL, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddStealPotions, nullptr, MIS_STEALPOTS, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddManaTrap, nullptr, MIS_MANATRAP, false, 1, MISR_NONE, MFILE_NONE, IS_CAST7, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_LIGHTRING, false, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddSearch, &MI_Search, MIS_SEARCH, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_FLASHFR, false, 1, MISR_MAGIC, MFILE_BLUEXFR, SFX_NONE, LS_ELECIMP1, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_FLASHBK, false, 1, MISR_MAGIC, MFILE_BLUEXBK, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { nullptr, nullptr, MIS_IMMOLATION2, true, 1, MISR_FIRE, MFILE_FIREBA, LS_FBOLT1, LS_FIRIMP2, MissileMovementDistrubution::Disabled }, - { &AddFireRune, &MI_Rune, MIS_RUNEFIRE, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddLightningRune, &MI_Rune, MIS_RUNELIGHT, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddGreatLightningRune, &MI_Rune, MIS_RUNENOVA, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddImmolationRune, &MI_Rune, MIS_RUNEIMMOLAT, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddStoneRune, &MI_Rune, MIS_RUNESTONE, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddRuneExplosion, &MI_HiveExplode, MIS_HIVEEXP, true, 1, MISR_FIRE, MFILE_BIGEXP, LS_NESTXPLD, LS_NESTXPLD, MissileMovementDistrubution::Disabled }, - { &AddHorkSpawn, &MI_HorkSpawn, MIS_HORKDMN, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddJester, nullptr, MIS_JESTER, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddHiveExplosion, nullptr, MIS_HIVEEXP2, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddFlare, &MI_Firebolt, MIS_LICH, true, 1, MISR_MAGIC, MFILE_LICH, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddFlare, &MI_Firebolt, MIS_PSYCHORB, true, 1, MISR_MAGIC, MFILE_BONEDEMON, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddFlare, &MI_Firebolt, MIS_NECROMORB, true, 1, MISR_MAGIC, MFILE_NECROMORB, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddFlare, &MI_Firebolt, MIS_ARCHLICH, true, 1, MISR_MAGIC, MFILE_ARCHLICH, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddFlare, &MI_Firebolt, MIS_BONEDEMON, true, 1, MISR_MAGIC, MFILE_BONEDEMON, SFX_NONE, SFX_NONE, MissileMovementDistrubution::Blockable }, - { &AddMisexp, &MI_Misexp, MIS_EXYEL2, true, 2, MISR_NONE, MFILE_EXYEL2, LS_FIRIMP2, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddMisexp, &MI_Misexp, MIS_EXRED3, true, 2, MISR_NONE, MFILE_EXRED3, LS_FIRIMP2, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddMisexp, &MI_Misexp, MIS_EXBL2, true, 2, MISR_NONE, MFILE_EXBL2, LS_FIRIMP2, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddMisexp, &MI_Misexp, MIS_EXBL3, true, 2, MISR_NONE, MFILE_EXBL3, LS_FIRIMP2, SFX_NONE, MissileMovementDistrubution::Disabled }, - { &AddMisexp, &MI_Misexp, MIS_EXORA1, true, 2, MISR_NONE, MFILE_EXORA1, LS_FIRIMP2, SFX_NONE, MissileMovementDistrubution::Disabled }, + // mAddProc, mProc, name, mDraw, mType, mResist, mFileNum, mlSFX, miSFX, MovementDistribution; + { &AddArrow, &MI_Arrow, MIS_ARROW, true, 0, MISR_NONE, MFILE_ARROWS, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddFirebolt, &MI_Firebolt, MIS_FIREBOLT, true, 1, MISR_FIRE, MFILE_FIREBA, LS_FBOLT1, LS_FIRIMP2, MissileMovementDistribution::Blockable }, + { &AddGuardian, &MI_Guardian, MIS_GUARDIAN, true, 1, MISR_NONE, MFILE_GUARD, LS_GUARD, LS_GUARDLAN, MissileMovementDistribution::Disabled }, + { &AddRndTeleport, &MI_Teleport, MIS_RNDTELEPORT, false, 1, MISR_NONE, MFILE_NONE, LS_TELEPORT, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddLightball, &MI_Lightball, MIS_LIGHTBALL, true, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistribution::Unblockable }, + { &AddFirewall, &MI_Firewall, MIS_FIREWALL, true, 1, MISR_FIRE, MFILE_FIREWAL, LS_WALLLOOP, LS_FIRIMP2, MissileMovementDistribution::Disabled }, + { &AddFireball, &MI_Fireball, MIS_FIREBALL, true, 1, MISR_FIRE, MFILE_FIREBA, LS_FBOLT1, LS_FIRIMP2, MissileMovementDistribution::Blockable }, + { &AddLightctrl, &MI_Lightctrl, MIS_LIGHTCTRL, false, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddLightning, &MI_Lightning, MIS_LIGHTNING, true, 1, MISR_LIGHTNING, MFILE_LGHNING, LS_LNING1, LS_ELECIMP1, MissileMovementDistribution::Disabled }, + { &AddMisexp, &MI_Misexp, MIS_MISEXP, true, 2, MISR_NONE, MFILE_MAGBLOS, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddTown, &MI_Town, MIS_TOWN, true, 1, MISR_MAGIC, MFILE_PORTAL, LS_SENTINEL, LS_ELEMENTL, MissileMovementDistribution::Disabled }, + { &AddFlash, &MI_Flash, MIS_FLASH, true, 1, MISR_MAGIC, MFILE_BLUEXFR, LS_NOVA, LS_ELECIMP1, MissileMovementDistribution::Disabled }, + { &AddFlash2, &MI_Flash2, MIS_FLASH2, true, 1, MISR_MAGIC, MFILE_BLUEXBK, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddManashield, nullptr, MIS_MANASHIELD, false, 1, MISR_MAGIC, MFILE_MANASHLD, LS_MSHIELD, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddFiremove, &MI_Firemove, MIS_FIREMOVE, true, 1, MISR_FIRE, MFILE_FIREWAL, SFX_NONE, SFX_NONE, MissileMovementDistribution::Unblockable }, + { &AddChain, &MI_Chain, MIS_CHAIN, true, 1, MISR_LIGHTNING, MFILE_LGHNING, LS_LNING1, LS_ELECIMP1, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_SENTINAL, true, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_BLODSTAR, true, 2, MISR_NONE, MFILE_BLOOD, LS_BLODSTAR, LS_BLSIMPT, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_BONE, true, 2, MISR_NONE, MFILE_BONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_METLHIT, true, 2, MISR_NONE, MFILE_METLHIT, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddRhino, &MI_Rhino, MIS_RHINO, true, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddMagmaball, &MI_Firebolt, MIS_MAGMABALL, true, 1, MISR_FIRE, MFILE_MAGBALL, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddLightctrl, &MI_Lightctrl, MIS_LIGHTCTRL2, false, 1, MISR_LIGHTNING, MFILE_THINLGHT, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddLightning, &MI_Lightning, MIS_LIGHTNING2, true, 1, MISR_LIGHTNING, MFILE_THINLGHT, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddFlare, &MI_Firebolt, MIS_FLARE, true, 1, MISR_MAGIC, MFILE_FLARE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddMisexp, &MI_Misexp, MIS_MISEXP2, true, 2, MISR_MAGIC, MFILE_FLAREEXP, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddTeleport, &MI_Teleport, MIS_TELEPORT, false, 1, MISR_NONE, MFILE_NONE, LS_ELEMENTL, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddLArrow, &MI_LArrow, MIS_FARROW, true, 0, MISR_FIRE, MFILE_FARROW, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { nullptr, nullptr, MIS_DOOMSERP, false, 1, MISR_MAGIC, MFILE_DOOM, LS_DSERP, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_FIREWALLA, true, 2, MISR_FIRE, MFILE_FIREWAL, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddStone, &MI_Stone, MIS_STONE, false, 1, MISR_MAGIC, MFILE_NONE, LS_SCURIMP, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_NULL_1F, true, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_INVISIBL, false, 1, MISR_NONE, MFILE_NONE, LS_INVISIBL, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddGolem, nullptr, MIS_GOLEM, false, 1, MISR_NONE, MFILE_NONE, LS_GOLUM, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_ETHEREALIZE, true, 1, MISR_NONE, MFILE_ETHRSHLD, LS_ETHEREAL, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_BLODBUR, true, 2, MISR_NONE, MFILE_BLODBUR, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddBoom, &MI_Boom, MIS_BOOM, true, 2, MISR_NONE, MFILE_NEWEXP, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddHeal, nullptr, MIS_HEAL, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddFirewallC, &MI_FirewallC, MIS_FIREWALLC, false, 1, MISR_FIRE, MFILE_FIREWAL, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddInfra, &MI_Infra, MIS_INFRA, false, 1, MISR_NONE, MFILE_NONE, LS_INFRAVIS, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddIdentify, nullptr, MIS_IDENTIFY, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddWave, &MI_Wave, MIS_WAVE, true, 1, MISR_FIRE, MFILE_FIREWAL, LS_FLAMWAVE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddNova, &MI_Nova, MIS_NOVA, true, 1, MISR_LIGHTNING, MFILE_LGHNING, LS_NOVA, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddBlodboil, &MI_Blodboil, MIS_BLODBOIL, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddApoca, &MI_Apoca, MIS_APOCA, true, 1, MISR_MAGIC, MFILE_NEWEXP, LS_APOC, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddRepair, nullptr, MIS_REPAIR, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddRecharge, nullptr, MIS_RECHARGE, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddDisarm, nullptr, MIS_DISARM, false, 2, MISR_NONE, MFILE_NONE, LS_TRAPDIS, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddFlame, &MI_Flame, MIS_FLAME, true, 1, MISR_FIRE, MFILE_INFERNO, LS_SPOUTSTR, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddFlamec, &MI_Flamec, MIS_FLAMEC, false, 1, MISR_FIRE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_FIREMAN, true, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { nullptr, nullptr, MIS_KRULL, true, 0, MISR_FIRE, MFILE_KRULL, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddCbolt, &MI_Cbolt, MIS_CBOLT, true, 1, MISR_LIGHTNING, MFILE_MINILTNG, LS_CBOLT, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddHbolt, &MI_Hbolt, MIS_HBOLT, true, 1, MISR_NONE, MFILE_HOLY, LS_HOLYBOLT, LS_ELECIMP1, MissileMovementDistribution::Blockable }, + { &AddResurrect, nullptr, MIS_RESURRECT, false, 1, MISR_MAGIC, MFILE_NONE, SFX_NONE, LS_RESUR, MissileMovementDistribution::Disabled }, + { &AddTelekinesis, nullptr, MIS_TELEKINESIS, false, 1, MISR_NONE, MFILE_NONE, LS_ETHEREAL, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddLArrow, &MI_LArrow, MIS_LARROW, true, 0, MISR_LIGHTNING, MFILE_LARROW, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddAcid, &MI_Firebolt, MIS_ACID, true, 1, MISR_ACID, MFILE_ACIDBF, LS_ACID, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddMisexp, &MI_Acidsplat, MIS_MISEXP3, true, 2, MISR_ACID, MFILE_ACIDSPLA, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddAcidpud, &MI_Acidpud, MIS_ACIDPUD, true, 2, MISR_ACID, MFILE_ACIDPUD, LS_PUDDLE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddHealOther, nullptr, MIS_HEALOTHER, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddElement, &MI_Element, MIS_ELEMENT, true, 1, MISR_FIRE, MFILE_FIRERUN, LS_ELEMENTL, SFX_NONE, MissileMovementDistribution::Unblockable }, + { &AddResurrectBeam, &MI_ResurrectBeam, MIS_RESURRECTBEAM, true, 1, MISR_NONE, MFILE_RESSUR1, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddBoneSpirit, &MI_Bonespirit, MIS_BONESPIRIT, true, 1, MISR_MAGIC, MFILE_SKLBALL, LS_BONESP, LS_BSIMPCT, MissileMovementDistribution::Blockable }, + { &AddWeapexp, &MI_Weapexp, MIS_WEAPEXP, true, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddRportal, &MI_Rportal, MIS_RPORTAL, true, 2, MISR_NONE, MFILE_RPORTAL, LS_SENTINEL, LS_ELEMENTL, MissileMovementDistribution::Disabled }, + { &AddBoom, &MI_Boom, MIS_BOOM2, true, 2, MISR_NONE, MFILE_FIREPLAR, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddDiabApoca, nullptr, MIS_DIABAPOCA, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddMana, nullptr, MIS_MANA, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddMagi, nullptr, MIS_MAGI, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddLightningWall, &MI_LightningWall, MIS_LIGHTWALL, true, 1, MISR_LIGHTNING, MFILE_LGHNING, LS_LMAG, LS_ELECIMP1, MissileMovementDistribution::Disabled }, + { &AddFirewallC, &MI_LightningWallC, MIS_LIGHTNINGWALL, false, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddNova, &MI_FireNova, MIS_IMMOLATION, true, 1, MISR_FIRE, MFILE_FIREBA, LS_FBOLT1, LS_FIRIMP2, MissileMovementDistribution::Disabled }, + { &AddSpecArrow, &MI_SpecArrow, MIS_SPECARROW, true, 0, MISR_NONE, MFILE_ARROWS, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddFireNova, &MI_Fireball, MIS_FIRENOVA, true, 1, MISR_FIRE, MFILE_FIREBA, IS_FBALLBOW, LS_FIRIMP2, MissileMovementDistribution::Blockable }, + { &AddLightningArrow, &MI_LightningArrow, MIS_LIGHTARROW, false, 1, MISR_LIGHTNING, MFILE_LGHNING, IS_FBALLBOW, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddCboltArrow, &MI_Cbolt, MIS_CBOLTARROW, true, 1, MISR_LIGHTNING, MFILE_MINILTNG, LS_CBOLT, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddHbolt, &MI_Hbolt, MIS_HBOLTARROW, true, 1, MISR_NONE, MFILE_HOLY, LS_HOLYBOLT, LS_ELECIMP1, MissileMovementDistribution::Blockable }, + { &AddWarp, &MI_Teleport, MIS_WARP, false, 1, MISR_NONE, MFILE_NONE, LS_ETHEREAL, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddReflection, nullptr, MIS_REFLECT, false, 1, MISR_NONE, MFILE_REFLECT, LS_MSHIELD, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddBerserk, nullptr, MIS_BERSERK, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddRing, &MI_FireRing, MIS_FIRERING, false, 1, MISR_FIRE, MFILE_FIREWAL, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddStealPotions, nullptr, MIS_STEALPOTS, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddManaTrap, nullptr, MIS_MANATRAP, false, 1, MISR_NONE, MFILE_NONE, IS_CAST7, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_LIGHTRING, false, 1, MISR_LIGHTNING, MFILE_LGHNING, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddSearch, &MI_Search, MIS_SEARCH, false, 1, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_FLASHFR, false, 1, MISR_MAGIC, MFILE_BLUEXFR, SFX_NONE, LS_ELECIMP1, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_FLASHBK, false, 1, MISR_MAGIC, MFILE_BLUEXBK, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { nullptr, nullptr, MIS_IMMOLATION2, true, 1, MISR_FIRE, MFILE_FIREBA, LS_FBOLT1, LS_FIRIMP2, MissileMovementDistribution::Disabled }, + { &AddFireRune, &MI_Rune, MIS_RUNEFIRE, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddLightningRune, &MI_Rune, MIS_RUNELIGHT, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddGreatLightningRune, &MI_Rune, MIS_RUNENOVA, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddImmolationRune, &MI_Rune, MIS_RUNEIMMOLAT, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddStoneRune, &MI_Rune, MIS_RUNESTONE, true, 1, MISR_NONE, MFILE_RUNE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddRuneExplosion, &MI_HiveExplode, MIS_HIVEEXP, true, 1, MISR_FIRE, MFILE_BIGEXP, LS_NESTXPLD, LS_NESTXPLD, MissileMovementDistribution::Disabled }, + { &AddHorkSpawn, &MI_HorkSpawn, MIS_HORKDMN, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddJester, nullptr, MIS_JESTER, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddHiveExplosion, nullptr, MIS_HIVEEXP2, false, 2, MISR_NONE, MFILE_NONE, SFX_NONE, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddFlare, &MI_Firebolt, MIS_LICH, true, 1, MISR_MAGIC, MFILE_LICH, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddFlare, &MI_Firebolt, MIS_PSYCHORB, true, 1, MISR_MAGIC, MFILE_BONEDEMON, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddFlare, &MI_Firebolt, MIS_NECROMORB, true, 1, MISR_MAGIC, MFILE_NECROMORB, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddFlare, &MI_Firebolt, MIS_ARCHLICH, true, 1, MISR_MAGIC, MFILE_ARCHLICH, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddFlare, &MI_Firebolt, MIS_BONEDEMON, true, 1, MISR_MAGIC, MFILE_BONEDEMON, SFX_NONE, SFX_NONE, MissileMovementDistribution::Blockable }, + { &AddMisexp, &MI_Misexp, MIS_EXYEL2, true, 2, MISR_NONE, MFILE_EXYEL2, LS_FIRIMP2, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddMisexp, &MI_Misexp, MIS_EXRED3, true, 2, MISR_NONE, MFILE_EXRED3, LS_FIRIMP2, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddMisexp, &MI_Misexp, MIS_EXBL2, true, 2, MISR_NONE, MFILE_EXBL2, LS_FIRIMP2, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddMisexp, &MI_Misexp, MIS_EXBL3, true, 2, MISR_NONE, MFILE_EXBL3, LS_FIRIMP2, SFX_NONE, MissileMovementDistribution::Disabled }, + { &AddMisexp, &MI_Misexp, MIS_EXORA1, true, 2, MISR_NONE, MFILE_EXORA1, LS_FIRIMP2, SFX_NONE, MissileMovementDistribution::Disabled }, // clang-format on }; diff --git a/Source/misdat.h b/Source/misdat.h index fd124fe78..434f05857 100644 --- a/Source/misdat.h +++ b/Source/misdat.h @@ -96,7 +96,7 @@ typedef enum missile_graphic_id : uint8_t { /** * @brief Specifies what if and how movement distribution is applied */ -enum class MissileMovementDistrubution : uint8_t { +enum class MissileMovementDistribution : uint8_t { /** * @brief No movement distribution is calculated. Normally this means the missile doesn't move at all. */ @@ -124,7 +124,7 @@ struct MissileData { uint8_t mFileNum; _sfx_id mlSFX; _sfx_id miSFX; - MissileMovementDistrubution MovementDistribution; + MissileMovementDistribution MovementDistribution; }; enum class MissileDataFlags : uint8_t { diff --git a/Source/missiles.cpp b/Source/missiles.cpp index db2bb3965..0af74c04a 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -530,7 +530,7 @@ void MoveMissileAndCheckMissileCol(Missile &missile, int mindam, int maxdam, boo if (missile._mirange != 0) return true; - if (missile._miHitFlag && MissilesData[missile._mitype].MovementDistribution == MissileMovementDistrubution::Blockable) + if (missile._miHitFlag && MissilesData[missile._mitype].MovementDistribution == MissileMovementDistribution::Blockable) return false; return !IsMissileBlockedByTile(tile);