MulByTypeEffectiveness was the right answer all along.
I also added a short pause to BattleScript_AttackWeakenedByStrongWinds before STRINGID_ATTACKWEAKENEDBSTRONGWINDS is printed.
-Removed ability popup when Strong Winds weakens a SE Flying-type move
-Went back to the way I handled the dmg calculation for that originally
-Made sure to try to clear the primal weathers in a couple of other battle scripts
-Allowed Drought, Drizzle, Sand Stream and Snow Warning to activate but fail if WEATHER_STRONG_WINDS is in effect.
This will make the AI account for the type of moves like Weather Ball, Hidden Power and Revelation Dance when considering abilities that make the useless. E.g. Water-type Hidden Power vs. Storm Drain.
- No longer freezes the game
- Now fails if the target already has simple
- Explicitly checks and changes the target's ability instead of gActiveBattler's ability
-Changed the way in which Gulp Missile checks for a fainted opponent, just in case the reason why the attacker's defense wasn't being lowered is that the script was falling into BattleScript_GulpMissileNoSecondEffectGulping
-Took into account max Defense stat stage, because I forgot to do that too.
-Slightly changed the Defense reduction code, just in case.
-Fixed the text string that was printed. Gulp Missile doesn't raise a stat, after all.
-Fixed the script that was being called if the attacker has Clear Body, and also added jumps for Full Metal Body, White Smoke and Flower Veil.
-Removed IsBattlerAlive check for case ABILITY_GULP_MISSILE in ABILITYEFFECT_MOVE_END_ATTACKER. Turns out Cramorant can change form even on single wild battles.
-Added a check for IsBattlerAlive in the case ABILITY_GULP_MISSILE of ABILITYEFFECT_MOVE_END, because otherwise, for whatever reason, the user was trying to trigger the Gulping effect even in its base form.
-Set the stat to change for the Gulping effect from within the battle script. The rest of the effect is handled there, so may as well.
-Fixed the check for case ABILITY_GULP_MISSILE in ABILITYEFFECT_MOVE_END_ATTACKER. Apparently, a silent species change was happening because of the order of the checks. Thanks to AsparagusEduardo for pointing this one out.
-Fixed the secondary effect of a target's Gulp Missile affecting an attacker that has fainted.
-Fixed the Defense reduction of the Gulping effect bypassing Clear Body.
-Checking for IsBattlerAlive is incorrect because Gulp Missile's counterattack should happen even if Cramorant faints.
-Made the code a bit more readable.
-Fixed Gulp Missile's activation. Its effects were happening even if the conditions weren't actually met in battle.
-Fixed Gulp Missile activating if the only/last target has already fainted.
-Fixed Gulp Missile's Gorging animation, though it still uses Tackle's.
-Fixed Gulp Missile's Gorging attack affecting an opponent with Magic Guard.
-Fixed Gulp Missile changing Cramorant's form if Surf failed.