mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-04 15:32:18 +02:00
Move berry puch back (not a held item)
This commit is contained in:
parent
b6ac8a53e4
commit
1dc95c05eb
@ -73,7 +73,6 @@ import {
|
||||
PokemonHeldItemModifier,
|
||||
PokemonMoveAccuracyBoosterModifier,
|
||||
PokemonMultiHitModifier,
|
||||
PreserveBerryModifier,
|
||||
} from "../../modifier/held-item-modifier";
|
||||
import type { BattlerIndex } from "../../battle";
|
||||
import { BattleType } from "#enums/battle-type";
|
||||
@ -123,6 +122,7 @@ import { MoveEffectTrigger } from "#enums/MoveEffectTrigger";
|
||||
import { MultiHitType } from "#enums/MultiHitType";
|
||||
import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidMirrorMoveMoves, invalidSleepTalkMoves } from "./invalid-moves";
|
||||
import { SelectBiomePhase } from "#app/phases/select-biome-phase";
|
||||
import { PreserveBerryModifier } from "#app/modifier/modifier";
|
||||
|
||||
type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
|
||||
type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean;
|
||||
|
@ -23,9 +23,13 @@ import {
|
||||
BerryModifier,
|
||||
type PokemonHeldItemModifier,
|
||||
type PokemonInstantReviveModifier,
|
||||
PreserveBerryModifier,
|
||||
} from "#app/modifier/held-item-modifier";
|
||||
import { HealingBoosterModifier, LevelIncrementBoosterModifier, MoneyMultiplierModifier } from "#app/modifier/modifier";
|
||||
import {
|
||||
HealingBoosterModifier,
|
||||
LevelIncrementBoosterModifier,
|
||||
MoneyMultiplierModifier,
|
||||
PreserveBerryModifier,
|
||||
} from "#app/modifier/modifier";
|
||||
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase";
|
||||
|
@ -28,6 +28,7 @@ import {
|
||||
type Modifier,
|
||||
MoneyMultiplierModifier,
|
||||
PersistentModifier,
|
||||
PreserveBerryModifier,
|
||||
TempExtraModifierModifier,
|
||||
} from "./modifier";
|
||||
import {
|
||||
@ -1252,42 +1253,6 @@ export class BerryModifier extends PokemonHeldItemModifier {
|
||||
}
|
||||
}
|
||||
|
||||
export class PreserveBerryModifier extends PersistentModifier {
|
||||
match(modifier: Modifier) {
|
||||
return modifier instanceof PreserveBerryModifier;
|
||||
}
|
||||
|
||||
clone() {
|
||||
return new PreserveBerryModifier(this.type, this.stackCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if all prequired conditions are met to apply {@linkcode PreserveBerryModifier}
|
||||
* @param pokemon {@linkcode Pokemon} that holds the berry
|
||||
* @param doPreserve {@linkcode BooleanHolder} that is `true` if the berry should be preserved
|
||||
* @returns `true` if {@linkcode PreserveBerryModifier} should be applied
|
||||
*/
|
||||
override shouldApply(pokemon?: Pokemon, doPreserve?: BooleanHolder): boolean {
|
||||
return !!pokemon && !!doPreserve;
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies {@linkcode PreserveBerryModifier}
|
||||
* @param pokemon The {@linkcode Pokemon} that holds the berry
|
||||
* @param doPreserve {@linkcode BooleanHolder} that is `true` if the berry should be preserved
|
||||
* @returns always `true`
|
||||
*/
|
||||
override apply(pokemon: Pokemon, doPreserve: BooleanHolder): boolean {
|
||||
doPreserve.value ||= pokemon.randBattleSeedInt(10) < this.getStackCount() * 3;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
getMaxStackCount(): number {
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
export class PokemonInstantReviveModifier extends PokemonHeldItemModifier {
|
||||
matchType(modifier: Modifier) {
|
||||
return modifier instanceof PokemonInstantReviveModifier;
|
||||
|
@ -65,6 +65,7 @@ import {
|
||||
type Modifier,
|
||||
TempExtraModifierModifier,
|
||||
CriticalCatchChanceBoosterModifier,
|
||||
PreserveBerryModifier,
|
||||
} from "#app/modifier/modifier";
|
||||
import {
|
||||
AttackTypeBoosterModifier,
|
||||
@ -89,7 +90,6 @@ import {
|
||||
PokemonMoveAccuracyBoosterModifier,
|
||||
PokemonMultiHitModifier,
|
||||
PokemonNatureWeightModifier,
|
||||
PreserveBerryModifier,
|
||||
ResetNegativeStatStageModifier,
|
||||
SpeciesCritBoosterModifier,
|
||||
SpeciesStatBoosterModifier,
|
||||
|
@ -1281,6 +1281,42 @@ export class CriticalCatchChanceBoosterModifier extends PersistentModifier {
|
||||
}
|
||||
}
|
||||
|
||||
export class PreserveBerryModifier extends PersistentModifier {
|
||||
match(modifier: Modifier) {
|
||||
return modifier instanceof PreserveBerryModifier;
|
||||
}
|
||||
|
||||
clone() {
|
||||
return new PreserveBerryModifier(this.type, this.stackCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if all prequired conditions are met to apply {@linkcode PreserveBerryModifier}
|
||||
* @param pokemon {@linkcode Pokemon} that holds the berry
|
||||
* @param doPreserve {@linkcode BooleanHolder} that is `true` if the berry should be preserved
|
||||
* @returns `true` if {@linkcode PreserveBerryModifier} should be applied
|
||||
*/
|
||||
override shouldApply(pokemon?: Pokemon, doPreserve?: BooleanHolder): boolean {
|
||||
return !!pokemon && !!doPreserve;
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies {@linkcode PreserveBerryModifier}
|
||||
* @param pokemon The {@linkcode Pokemon} that holds the berry
|
||||
* @param doPreserve {@linkcode BooleanHolder} that is `true` if the berry should be preserved
|
||||
* @returns always `true`
|
||||
*/
|
||||
override apply(pokemon: Pokemon, doPreserve: BooleanHolder): boolean {
|
||||
doPreserve.value ||= pokemon.randBattleSeedInt(10) < this.getStackCount() * 3;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
getMaxStackCount(): number {
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
|
||||
export class LockModifierTiersModifier extends PersistentModifier {
|
||||
match(modifier: Modifier): boolean {
|
||||
return modifier instanceof LockModifierTiersModifier;
|
||||
|
@ -5,7 +5,7 @@ import { Abilities } from "#app/enums/abilities";
|
||||
import { Stat } from "#app/enums/stat";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import { PokemonMove } from "#app/field/pokemon";
|
||||
import { BypassSpeedChanceModifier } from "#app/modifier/modifier";
|
||||
import { BypassSpeedChanceModifier } from "#app/modifier/held-item-modifier";
|
||||
import { Command } from "#app/ui/command-ui-handler";
|
||||
import { randSeedShuffle, BooleanHolder } from "#app/utils/common";
|
||||
import { AttemptCapturePhase } from "./attempt-capture-phase";
|
||||
|
@ -1,5 +1,5 @@
|
||||
import type { Modifier } from "typescript";
|
||||
import { TurnHeldItemTransferModifier } from "../modifier/modifier";
|
||||
import { TurnHeldItemTransferModifier } from "../modifier/held-item-modifier";
|
||||
import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions";
|
||||
import i18next from "i18next";
|
||||
import { NumberHolder } from "#app/utils/common";
|
||||
|
@ -12,6 +12,7 @@ import { TextStyle, addTextObject } from "./text";
|
||||
import { UiMode } from "#enums/ui-mode";
|
||||
import { addWindow } from "./ui-theme";
|
||||
import { RunDisplayMode } from "#app/ui/run-info-ui-handler";
|
||||
import { PokemonHeldItemModifier } from "#app/modifier/held-item-modifier";
|
||||
|
||||
const SESSION_SLOTS_COUNT = 5;
|
||||
const SLOTS_ON_SCREEN = 3;
|
||||
@ -445,7 +446,7 @@ class SessionSlot extends Phaser.GameObjects.Container {
|
||||
let visibleModifierIndex = 0;
|
||||
for (const m of data.modifiers) {
|
||||
const modifier = m.toModifier(Modifier[m.className]);
|
||||
if (modifier instanceof Modifier.PokemonHeldItemModifier) {
|
||||
if (modifier instanceof PokemonHeldItemModifier) {
|
||||
continue;
|
||||
}
|
||||
const icon = modifier?.getIcon(false);
|
||||
|
@ -1,7 +1,8 @@
|
||||
import { BattlerIndex } from "#app/battle";
|
||||
import { PostTurnRestoreBerryAbAttr } from "#app/data/abilities/ability";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import { BerryModifier, PreserveBerryModifier } from "#app/modifier/held-item-modifier";
|
||||
import { BerryModifier } from "#app/modifier/held-item-modifier";
|
||||
import { PreserveBerryModifier } from "#app/modifier/modifier";
|
||||
import type { ModifierOverride } from "#app/modifier/modifier-type";
|
||||
import type { BooleanHolder } from "#app/utils/common";
|
||||
import { Abilities } from "#enums/abilities";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { TurnHeldItemTransferModifier } from "#app/modifier/modifier";
|
||||
import { TurnHeldItemTransferModifier } from "#app/modifier/held-item-modifier";
|
||||
import {
|
||||
Achv,
|
||||
AchvTier,
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { GameModes } from "#app/game-mode";
|
||||
import { TurnHeldItemTransferModifier } from "#app/modifier/modifier";
|
||||
import { TurnHeldItemTransferModifier } from "#app/modifier/held-item-modifier";
|
||||
import { Abilities } from "#enums/abilities";
|
||||
import { Biome } from "#enums/biome";
|
||||
import { Moves } from "#enums/moves";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { StatBoosterModifier } from "#app/modifier/modifier";
|
||||
import { StatBoosterModifier } from "#app/modifier/held-item-modifier";
|
||||
import { NumberHolder, randItem } from "#app/utils/common";
|
||||
import { Species } from "#enums/species";
|
||||
import { Stat } from "#enums/stat";
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Abilities } from "#app/enums/abilities";
|
||||
import { PokemonExpBoosterModifier } from "#app/modifier/modifier";
|
||||
import { PokemonExpBoosterModifier } from "#app/modifier/held-item-modifier";
|
||||
import { NumberHolder } from "#app/utils/common";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phase from "phaser";
|
||||
|
@ -19,13 +19,17 @@ import {
|
||||
HitHealModifier,
|
||||
PokemonInstantReviveModifier,
|
||||
PokemonNatureWeightModifier,
|
||||
PreserveBerryModifier,
|
||||
} from "#app/modifier/held-item-modifier";
|
||||
import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases";
|
||||
import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { BerryType } from "#enums/berry-type";
|
||||
import { HealingBoosterModifier, LevelIncrementBoosterModifier, MoneyMultiplierModifier } from "#app/modifier/modifier";
|
||||
import {
|
||||
HealingBoosterModifier,
|
||||
LevelIncrementBoosterModifier,
|
||||
MoneyMultiplierModifier,
|
||||
PreserveBerryModifier,
|
||||
} from "#app/modifier/modifier";
|
||||
|
||||
const namespace = "mysteryEncounters/delibirdy";
|
||||
const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA];
|
||||
|
Loading…
Reference in New Issue
Block a user