From 6dbebd815f37a6a7700154315729be51b8f4d7f2 Mon Sep 17 00:00:00 2001 From: Ethan Date: Thu, 30 May 2024 20:18:58 -0400 Subject: [PATCH] Implement the secondary effect with Super Luck and Compound Eyes --- src/battle-scene.ts | 5 ++++- src/data/ability.ts | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 82bb3d92b0c..81b822a6828 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -17,7 +17,7 @@ import { Moves } from "./data/enums/moves"; import { allMoves } from "./data/move"; import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesForWave, getLuckString, getLuckTextTint, getModifierPoolForType, getPartyLuckValue } from "./modifier/modifier-type"; import AbilityBar from "./ui/ability-bar"; -import { BlockItemTheftAbAttr, DoubleBattleChanceAbAttr, IncrementMovePriorityAbAttr, PostBattleInitAbAttr, applyAbAttrs, applyPostBattleInitAbAttrs } from "./data/ability"; +import { BlockItemTheftAbAttr, BonusItemChance, DoubleBattleChanceAbAttr, IncrementMovePriorityAbAttr, PostBattleInitAbAttr, applyAbAttrs, applyPostBattleInitAbAttrs } from "./data/ability"; import { allAbilities } from "./data/ability"; import Battle, { BattleType, FixedBattleConfig, fixedBattles } from "./battle"; import { GameMode, GameModes, gameModes } from "./game-mode"; @@ -1960,6 +1960,9 @@ export default class BattleScene extends SceneBase { const difficultyWaveIndex = this.gameMode.getWaveForDifficulty(this.currentBattle.waveIndex); const isFinalBoss = this.gameMode.isWaveFinal(this.currentBattle.waveIndex); let chances = Math.ceil(difficultyWaveIndex / 10); + if (this.getPlayerPokemon().getAbility().hasAttr(BonusItemChance)) { + chances += Math.ceil(chances * 1.2); + } if (isFinalBoss) { chances = Math.ceil(chances * 2.5); } diff --git a/src/data/ability.ts b/src/data/ability.ts index 502c72dbd92..4b00c5c0448 100755 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -2010,6 +2010,17 @@ export class BonusCritAbAttr extends AbAttr { } } +/** + * If an ability has this tag, it will increase the chance of items by 20%. + * This is used in battle-scene.ts in generateEnemyModifiers. + */ +export class BonusItemChance extends AbAttr { + apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean | Promise { + return true; + } +} + + export class MultCritAbAttr extends AbAttr { public multAmount: number; @@ -3500,7 +3511,8 @@ export function initAbilities() { new Ability(Abilities.CLOUD_NINE, 3) .attr(SuppressWeatherEffectAbAttr, true), new Ability(Abilities.COMPOUND_EYES, 3) - .attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 1.3), + .attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 1.3) + .attr(BonusItemChance, false), new Ability(Abilities.INSOMNIA, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP) .attr(BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) @@ -3776,7 +3788,7 @@ export function initAbilities() { .attr(MoveAbilityBypassAbAttr), new Ability(Abilities.SUPER_LUCK, 4) .attr(BonusCritAbAttr) - .partial(), + .attr(BonusItemChance, false), new Ability(Abilities.AFTERMATH, 4) .attr(PostFaintContactDamageAbAttr,4) .bypassFaint(),