Mercurial > mm7
diff Engine/Spells/Spells.cpp @ 2566:30eb6dcac768
big spell fx overhaul
author | a.parshin |
---|---|
date | Wed, 20 May 2015 21:05:07 +0200 |
parents | 3121fb54a110 |
children | d569340b05ff |
line wrap: on
line diff
--- a/Engine/Spells/Spells.cpp Wed May 20 15:12:33 2015 +0200 +++ b/Engine/Spells/Spells.cpp Wed May 20 21:05:07 2015 +0200 @@ -22,7 +22,7 @@ #include "stru6.h" -std::array<TownPortalData, 6> TownPortalList = //4ECBB8 +std::array<TownPortalData, 6> TownPortalList = // 4ECBB8 {{ {Vec3_int_(-5121, 2107, 1), 1536, 0, 21, 0}, {Vec3_int_(-15148, -10240, 1473), 0, 0, 4, 0}, @@ -32,24 +32,123 @@ {Vec3_int_(-1837, -4247, 65), 65, 0, 8, 0} }} ; -struct SpellStats *pSpellStats; +struct SpellStats *pSpellStats = nullptr; -std::array<stru324_spell, 103> stru_4E3ACC = +std::array<stru324_spell_id_to_sprite_mapping, 103> spell_sprite_mapping = // 4E3ACC {{ - {10, 0}, - {1000, 0}, {1010, 0}, {1020, 0}, {1030, 0}, {1040, 0}, {1050, 0}, {1060, 0}, {1070, 0}, {1080, 0}, {1090, 0}, {1100, 0}, - {2000, 0}, {2010, 0}, {2020, 0}, {2030, 0}, {2040, 0}, {2050, 0}, {2060, 0}, {2070, 0}, {2080, 0}, {2090, 0}, {2100, 0}, - {3000, 0}, {3010, 0}, {3020, 0}, {3030, 0}, {3040, 0}, {3050, 0}, {3060, 0}, {3070, 0}, {3080, 0}, {3090, 0}, {3100, 0}, - {4000, 0}, {4010, 0}, {4020, 0}, {4030, 0}, {4040, 0}, {4050, 0}, {4060, 0}, {4070, 0}, {4080, 0}, {4090, 0}, {4100, 0}, - {5000, 0}, {5010, 0}, {5020, 0}, {5030, 0}, {5040, 0}, {5050, 0}, {5060, 0}, {5070, 0}, {5080, 0}, {5090, 0}, {5100, 0}, - {6000, 0}, {6010, 0}, {6020, 0}, {6030, 0}, {6040, 0}, {6050, 0}, {6060, 0}, {6070, 0}, {6080, 0}, {6090, 0}, {6100, 0}, - {7000, 0}, {7010, 0}, {7020, 0}, {7030, 0}, {7040, 0}, {7050, 0}, {7060, 0}, {7070, 0}, {7080, 0}, {7090, 0}, {7100, 0}, - {8000, 0}, {8010, 0}, {8020, 0}, {8030, 0}, {8040, 0}, {8050, 0}, {8060, 0}, {8070, 0}, {8080, 0}, {8090, 0}, {8100, 0}, - {9000, 0}, {9010, 0}, {9020, 0}, {9030, 0}, {9040, 0}, {9050, 0}, {9060, 0}, {9070, 0}, {9080, 0}, {9090, 0}, {9100, 0}, - {545, 0}, - {545, 0}, - {555, 0} + { SPRITE_SPELL_0, 0 }, + { SPRITE_SPELL_FIRE_TORCH_LIGHT, 0 }, + { SPRITE_SPELL_FIRE_FIRE_BOLT, 0 }, + { SPRITE_SPELL_FIRE_PROTECTION_FROM_FIRE, 0 }, + { SPRITE_SPELL_FIRE_FIRE_AURA, 0 }, + { SPRITE_SPELL_FIRE_HASTE, 0 }, + { SPRITE_SPELL_FIRE_FIREBALL, 0 }, + { SPRITE_SPELL_FIRE_FIRE_SPIKE, 0 }, + { SPRITE_SPELL_FIRE_IMMOLATION, 0 }, + { SPRITE_SPELL_FIRE_METEOR_SHOWER, 0 }, + { SPRITE_SPELL_FIRE_INFERNO, 0 }, + { SPRITE_SPELL_FIRE_INCINERATE, 0 }, + + { SPRITE_SPELL_AIR_WIZARD_EYE, 0 }, + { SPRITE_SPELL_AIR_FEATHER_FALL, 0 }, + { SPRITE_SPELL_AIR_PROTECTION_FROM_AIR, 0 }, + { SPRITE_SPELL_AIR_SPARKS, 0 }, + { SPRITE_SPELL_AIR_JUMP, 0 }, + { SPRITE_SPELL_AIR_SHIELD, 0 }, + { SPRITE_SPELL_AIR_LIGHNING_BOLT, 0 }, + { SPRITE_SPELL_AIR_INVISIBILITY, 0 }, + { SPRITE_SPELL_AIR_IMPLOSION, 0 }, + { SPRITE_SPELL_AIR_FLY, 0 }, + { SPRITE_SPELL_AIR_STARBURST, 0 }, + + { SPRITE_SPELL_WATER_AWAKEN, 0 }, + { SPRITE_SPELL_WATER_POISON_SPRAY, 0 }, + { SPRITE_SPELL_WATER_PROTECTION_FROM_WATER, 0 }, + { SPRITE_SPELL_WATER_ICE_BOLT, 0 }, + { SPRITE_SPELL_WATER_WATER_WALK, 0 }, + { SPRITE_SPELL_WATER_RECHARGE_ITEM, 0 }, + { SPRITE_SPELL_WATER_ACID_BURST, 0 }, + { SPRITE_SPELL_WATER_ENCHANT_ITEM, 0 }, + { SPRITE_SPELL_WATER_TOWN_PORTAL, 0 }, + { SPRITE_SPELL_WATER_ICE_BLAST, 0 }, + { SPRITE_SPELL_WATER_LLOYDS_BEACON, 0 }, + + { SPRITE_SPELL_EARTH_STUN, 0 }, + { SPRITE_SPELL_EARTH_SLOW, 0 }, + { SPRITE_SPELL_EARTH_PROTECTION_FROM_EARTH, 0 }, + { SPRITE_SPELL_EARTH_DEADLY_SWARM, 0 }, + { SPRITE_SPELL_EARTH_STONESKIN, 0 }, + { SPRITE_SPELL_EARTH_BLADES, 0 }, + { SPRITE_SPELL_EARTH_STONE_TO_FLESH, 0 }, + { SPRITE_SPELL_EARTH_ROCK_BLAST, 0 }, + { SPRITE_SPELL_EARTH_TELEKINESIS, 0 }, + { SPRITE_SPELL_EARTH_DEATH_BLOSSOM, 0 }, + { SPRITE_SPELL_EARTH_MASS_DISTORTION, 0 }, + + { SPRITE_SPELL_SPIRIT_DETECT_LIFE, 0 }, + { SPRITE_SPELL_SPIRIT_BLESS, 0 }, + { SPRITE_SPELL_SPIRIT_FATE, 0 }, + { SPRITE_SPELL_SPIRIT_TURN_UNDEAD, 0 }, + { SPRITE_SPELL_SPIRIT_REMOVE_CURSE, 0 }, + { SPRITE_SPELL_SPIRIT_PRESERVATION, 0 }, + { SPRITE_SPELL_SPIRIT_HEROISM, 0 }, + { SPRITE_SPELL_SPIRIT_SPIRIT_LASH, 0 }, + { SPRITE_SPELL_SPIRIT_RAISE_DEAD, 0 }, + { SPRITE_SPELL_SPIRIT_SHARED_LIFE, 0 }, + { SPRITE_SPELL_SPIRIT_RESSURECTION, 0 }, + + { SPRITE_SPELL_MIND_REMOVE_FEAR, 0 }, + { SPRITE_SPELL_MIND_MIND_BLAST, 0 }, + { SPRITE_SPELL_MIND_PROTECTION_FROM_MIND, 0 }, + { SPRITE_SPELL_MIND_TELEPATHY, 0 }, + { SPRITE_SPELL_MIND_CHARM, 0 }, + { SPRITE_SPELL_MIND_CURE_PARALYSIS, 0 }, + { SPRITE_SPELL_MIND_BERSERK, 0 }, + { SPRITE_SPELL_MIND_MASS_FEAR, 0 }, + { SPRITE_SPELL_MIND_CURE_INSANITY, 0 }, + { SPRITE_SPELL_MIND_PSYCHIC_SHOCK, 0 }, + { SPRITE_SPELL_MIND_ENSLAVE, 0 }, + + { SPRITE_SPELL_BODY_CURE_WEAKNESS, 0 }, + { SPRITE_SPELL_BODY_FIRST_AID, 0 }, + { SPRITE_SPELL_BODY_PROTECTION_FROM_BODY, 0 }, + { SPRITE_SPELL_BODY_HARM, 0 }, + { SPRITE_SPELL_BODY_REGENERATION, 0 }, + { SPRITE_SPELL_BODY_CURE_POISON, 0 }, + { SPRITE_SPELL_BODY_HAMMERHANDS, 0 }, + { SPRITE_SPELL_BODY_CURE_DISEASE, 0 }, + { SPRITE_SPELL_BODY_PROTECTION_FROM_MAGIC, 0 }, + { SPRITE_SPELL_BODY_FLYING_FIST, 0 }, + { SPRITE_SPELL_BODY_POWER_CURE, 0 }, + + { SPRITE_SPELL_LIGHT_LIGHT_BOLT, 0 }, + { SPRITE_SPELL_LIGHT_DESTROY_UNDEAD, 0 }, + { SPRITE_SPELL_LIGHT_DISPEL_MAGIC, 0 }, + { SPRITE_SPELL_LIGHT_PARALYZE, 0 }, + { SPRITE_SPELL_LIGHT_SUMMON_ELEMENTAL, 0 }, + { SPRITE_SPELL_LIGHT_DAY_OF_THE_GODS, 0 }, + { SPRITE_SPELL_LIGHT_PRISMATIC_LIGHT, 0 }, + { SPRITE_SPELL_LIGHT_DAY_OF_PROTECTION, 0 }, + { SPRITE_SPELL_LIGHT_HOUR_OF_POWER, 0 }, + { SPRITE_SPELL_LIGHT_SUNRAY, 0 }, + { SPRITE_SPELL_LIGHT_DIVINE_INTERVENTION, 0 }, + + { SPRITE_SPELL_DARK_REANIMATE, 0 }, + { SPRITE_SPELL_DARK_TOXIC_CLOUD, 0 }, + { SPRITE_SPELL_DARK_VAMPIRIC_WEAPON, 0 }, + { SPRITE_SPELL_DARK_SHRINKING_RAY, 0 }, + { SPRITE_SPELL_DARK_SHARPMETAL, 0 }, + { SPRITE_SPELL_DARK_CONTROL_UNDEAD, 0 }, + { SPRITE_SPELL_DARK_PAIN_REFLECTION, 0 }, + { SPRITE_SPELL_DARK_SACRIFICE, 0 }, + { SPRITE_SPELL_DARK_DRAGON_BREATH, 0 }, + { SPRITE_SPELL_DARK_ARMAGEDDON, 0 }, + { SPRITE_SPELL_DARK_SOULDRINKER, 0 }, + + { SPRITE_SPELL_BOW_ARROW, 0 }, + { SPRITE_SPELL_101, 0 }, + { SPRITE_SPELL_LASER_PROJECTILE, 0 } }}; @@ -183,9 +282,9 @@ SpellData(50, 50, 50, 50, 120, 120, 120, 100, 0, 25, 0), SpellData(55, 55, 55, 55, 250, 250, 250, 250, 50, 1, 0), SpellData(60, 60, 60, 60, 300, 300, 300, 300, 25, 8, 0) - }}; +}}; -std::array<unsigned int, 25> wand_spell_ids = +std::array<SPELL_TYPE, 25> wand_spell_ids = { // 135 Wand of Fire 136 Wand of Sparks 137 Wand of Poison 138 Wand of Stunning 139 Wand of Harm SPELL_FIRE_FIRE_BOLT, SPELL_AIR_SPARKS, SPELL_WATER_POISON_SPRAY, SPELL_EARTH_STUN, SPELL_BODY_HARM, @@ -422,8 +521,8 @@ case SPELL_WATER_POISON_SPRAY: case SPELL_AIR_SPARKS: case SPELL_EARTH_DEATH_BLOSSOM: - a1.uType = stru_4E3ACC[uSpellID].uType; - a1.stru_24.Reset(); + a1.uType = spell_sprite_mapping[uSpellID].uSpriteType; + a1.containing_item.Reset(); a1.spell_id = uSpellID; a1.spell_level = uSkill; a1.spell_skill = skillMasteryPlusOne;