diff --git a/src/data/ability.ts b/src/data/ability.ts index 88cf2d10b97..0d2c0cc27f5 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -2496,11 +2496,11 @@ export class IgnoreTypeImmunityAbAttr extends AbAttr { } apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { - if (this.defenderType !== (args[1] as Type)) { - return false; + if (this.defenderType === (args[1] as Type) && this.allowedMoveTypes.includes(args[0] as Type)) { + cancelled.value = true; + return true; } - - return this.allowedMoveTypes.some(type => type === (args[0] as Type)); + return false; } } @@ -3606,7 +3606,8 @@ export function initAbilities() { .partial(), new Ability(Abilities.MINDS_EYE, 9) .attr(IgnoreTypeImmunityAbAttr, Type.GHOST, [Type.NORMAL, Type.FIGHTING]) - .ignorable(), // TODO: evasiveness bypass should not be ignored, but accuracy immunity should + .ignorable() // TODO: evasiveness bypass should not be ignored, but accuracy immunity should + .partial(), new Ability(Abilities.SUPERSWEET_SYRUP, 9) .attr(PostSummonStatChangeAbAttr, BattleStat.EVA, -1) .condition(getOncePerBattleCondition(Abilities.SUPERSWEET_SYRUP)), diff --git a/src/data/move.ts b/src/data/move.ts index 17c37df0860..455c1bc29be 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -5132,7 +5132,6 @@ export function initMoves() { .attr(RecoilAttr, false, 0.33) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(StatusEffectAttr, StatusEffect.BURN) - .condition(failOnGravityCondition) .recklessMove(), new AttackMove(Moves.FORCE_PALM, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, 30, 0, 4) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 9ac3aec53ac..8110bf96bfd 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -908,14 +908,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.isTerastallized() ? 2 : 1; const types = this.getTypes(true, true); - const ignorableImmunities = source?.getAbility()?.getAttrs(IgnoreTypeImmunityAbAttr) || []; - const cancelled = new Utils.BooleanHolder(false); + let multiplier = types.map(defType => { + if (source) { + const ignoreImmunity = new Utils.BooleanHolder(false); + applyAbAttrs(IgnoreTypeImmunityAbAttr, source, ignoreImmunity, moveType, defType); + if (ignoreImmunity.value) + return 1; + } - let multiplier = types.map(defType => - ignorableImmunities.some(attr => attr.apply(source, false, cancelled, [moveType, defType])) - ? 1 - : getTypeDamageMultiplier(moveType, defType) - ).reduce((acc, cur) => acc * cur, 1) as TypeDamageMultiplier; + return getTypeDamageMultiplier(moveType, defType); + }).reduce((acc, cur) => acc * cur, 1) as TypeDamageMultiplier; // Handle strong winds lowering effectiveness of types super effective against pure flying if (this.scene.arena.weather?.weatherType === WeatherType.STRONG_WINDS && !this.scene.arena.weather.isEffectSuppressed(this.scene) && multiplier >= 2 && this.isOfType(Type.FLYING) && getTypeDamageMultiplier(moveType, Type.FLYING) === 2) diff --git a/src/system/settings.ts b/src/system/settings.ts index 3805a35bb95..054bdc9fc9c 100644 --- a/src/system/settings.ts +++ b/src/system/settings.ts @@ -183,19 +183,19 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer) handler: () => changeLocaleHandler('en') }, { - label: 'Spanish', + label: 'Español', handler: () => changeLocaleHandler('es') }, { - label: 'Italian', + label: 'Italiano', handler: () => changeLocaleHandler('it') }, { - label: 'French', + label: 'Français', handler: () => changeLocaleHandler('fr') }, { - label: 'German', + label: 'Deutsch', handler: () => changeLocaleHandler('de') }, {