mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-04 23:42: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,
|
PokemonHeldItemModifier,
|
||||||
PokemonMoveAccuracyBoosterModifier,
|
PokemonMoveAccuracyBoosterModifier,
|
||||||
PokemonMultiHitModifier,
|
PokemonMultiHitModifier,
|
||||||
PreserveBerryModifier,
|
|
||||||
} from "../../modifier/held-item-modifier";
|
} from "../../modifier/held-item-modifier";
|
||||||
import type { BattlerIndex } from "../../battle";
|
import type { BattlerIndex } from "../../battle";
|
||||||
import { BattleType } from "#enums/battle-type";
|
import { BattleType } from "#enums/battle-type";
|
||||||
@ -123,6 +122,7 @@ import { MoveEffectTrigger } from "#enums/MoveEffectTrigger";
|
|||||||
import { MultiHitType } from "#enums/MultiHitType";
|
import { MultiHitType } from "#enums/MultiHitType";
|
||||||
import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidMirrorMoveMoves, invalidSleepTalkMoves } from "./invalid-moves";
|
import { invalidAssistMoves, invalidCopycatMoves, invalidMetronomeMoves, invalidMirrorMoveMoves, invalidSleepTalkMoves } from "./invalid-moves";
|
||||||
import { SelectBiomePhase } from "#app/phases/select-biome-phase";
|
import { SelectBiomePhase } from "#app/phases/select-biome-phase";
|
||||||
|
import { PreserveBerryModifier } from "#app/modifier/modifier";
|
||||||
|
|
||||||
type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
|
type MoveConditionFunc = (user: Pokemon, target: Pokemon, move: Move) => boolean;
|
||||||
type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean;
|
type UserMoveConditionFunc = (user: Pokemon, move: Move) => boolean;
|
||||||
|
@ -23,9 +23,13 @@ import {
|
|||||||
BerryModifier,
|
BerryModifier,
|
||||||
type PokemonHeldItemModifier,
|
type PokemonHeldItemModifier,
|
||||||
type PokemonInstantReviveModifier,
|
type PokemonInstantReviveModifier,
|
||||||
PreserveBerryModifier,
|
|
||||||
} from "#app/modifier/held-item-modifier";
|
} 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 type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
|
||||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||||
import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase";
|
import { ModifierRewardPhase } from "#app/phases/modifier-reward-phase";
|
||||||
|
@ -28,6 +28,7 @@ import {
|
|||||||
type Modifier,
|
type Modifier,
|
||||||
MoneyMultiplierModifier,
|
MoneyMultiplierModifier,
|
||||||
PersistentModifier,
|
PersistentModifier,
|
||||||
|
PreserveBerryModifier,
|
||||||
TempExtraModifierModifier,
|
TempExtraModifierModifier,
|
||||||
} from "./modifier";
|
} from "./modifier";
|
||||||
import {
|
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 {
|
export class PokemonInstantReviveModifier extends PokemonHeldItemModifier {
|
||||||
matchType(modifier: Modifier) {
|
matchType(modifier: Modifier) {
|
||||||
return modifier instanceof PokemonInstantReviveModifier;
|
return modifier instanceof PokemonInstantReviveModifier;
|
||||||
|
@ -65,6 +65,7 @@ import {
|
|||||||
type Modifier,
|
type Modifier,
|
||||||
TempExtraModifierModifier,
|
TempExtraModifierModifier,
|
||||||
CriticalCatchChanceBoosterModifier,
|
CriticalCatchChanceBoosterModifier,
|
||||||
|
PreserveBerryModifier,
|
||||||
} from "#app/modifier/modifier";
|
} from "#app/modifier/modifier";
|
||||||
import {
|
import {
|
||||||
AttackTypeBoosterModifier,
|
AttackTypeBoosterModifier,
|
||||||
@ -89,7 +90,6 @@ import {
|
|||||||
PokemonMoveAccuracyBoosterModifier,
|
PokemonMoveAccuracyBoosterModifier,
|
||||||
PokemonMultiHitModifier,
|
PokemonMultiHitModifier,
|
||||||
PokemonNatureWeightModifier,
|
PokemonNatureWeightModifier,
|
||||||
PreserveBerryModifier,
|
|
||||||
ResetNegativeStatStageModifier,
|
ResetNegativeStatStageModifier,
|
||||||
SpeciesCritBoosterModifier,
|
SpeciesCritBoosterModifier,
|
||||||
SpeciesStatBoosterModifier,
|
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 {
|
export class LockModifierTiersModifier extends PersistentModifier {
|
||||||
match(modifier: Modifier): boolean {
|
match(modifier: Modifier): boolean {
|
||||||
return modifier instanceof LockModifierTiersModifier;
|
return modifier instanceof LockModifierTiersModifier;
|
||||||
|
@ -5,7 +5,7 @@ import { Abilities } from "#app/enums/abilities";
|
|||||||
import { Stat } from "#app/enums/stat";
|
import { Stat } from "#app/enums/stat";
|
||||||
import type Pokemon from "#app/field/pokemon";
|
import type Pokemon from "#app/field/pokemon";
|
||||||
import { PokemonMove } 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 { Command } from "#app/ui/command-ui-handler";
|
||||||
import { randSeedShuffle, BooleanHolder } from "#app/utils/common";
|
import { randSeedShuffle, BooleanHolder } from "#app/utils/common";
|
||||||
import { AttemptCapturePhase } from "./attempt-capture-phase";
|
import { AttemptCapturePhase } from "./attempt-capture-phase";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import type { Modifier } from "typescript";
|
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 { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions";
|
||||||
import i18next from "i18next";
|
import i18next from "i18next";
|
||||||
import { NumberHolder } from "#app/utils/common";
|
import { NumberHolder } from "#app/utils/common";
|
||||||
|
@ -12,6 +12,7 @@ import { TextStyle, addTextObject } from "./text";
|
|||||||
import { UiMode } from "#enums/ui-mode";
|
import { UiMode } from "#enums/ui-mode";
|
||||||
import { addWindow } from "./ui-theme";
|
import { addWindow } from "./ui-theme";
|
||||||
import { RunDisplayMode } from "#app/ui/run-info-ui-handler";
|
import { RunDisplayMode } from "#app/ui/run-info-ui-handler";
|
||||||
|
import { PokemonHeldItemModifier } from "#app/modifier/held-item-modifier";
|
||||||
|
|
||||||
const SESSION_SLOTS_COUNT = 5;
|
const SESSION_SLOTS_COUNT = 5;
|
||||||
const SLOTS_ON_SCREEN = 3;
|
const SLOTS_ON_SCREEN = 3;
|
||||||
@ -445,7 +446,7 @@ class SessionSlot extends Phaser.GameObjects.Container {
|
|||||||
let visibleModifierIndex = 0;
|
let visibleModifierIndex = 0;
|
||||||
for (const m of data.modifiers) {
|
for (const m of data.modifiers) {
|
||||||
const modifier = m.toModifier(Modifier[m.className]);
|
const modifier = m.toModifier(Modifier[m.className]);
|
||||||
if (modifier instanceof Modifier.PokemonHeldItemModifier) {
|
if (modifier instanceof PokemonHeldItemModifier) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const icon = modifier?.getIcon(false);
|
const icon = modifier?.getIcon(false);
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { BattlerIndex } from "#app/battle";
|
import { BattlerIndex } from "#app/battle";
|
||||||
import { PostTurnRestoreBerryAbAttr } from "#app/data/abilities/ability";
|
import { PostTurnRestoreBerryAbAttr } from "#app/data/abilities/ability";
|
||||||
import type Pokemon from "#app/field/pokemon";
|
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 { ModifierOverride } from "#app/modifier/modifier-type";
|
||||||
import type { BooleanHolder } from "#app/utils/common";
|
import type { BooleanHolder } from "#app/utils/common";
|
||||||
import { Abilities } from "#enums/abilities";
|
import { Abilities } from "#enums/abilities";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { TurnHeldItemTransferModifier } from "#app/modifier/modifier";
|
import { TurnHeldItemTransferModifier } from "#app/modifier/held-item-modifier";
|
||||||
import {
|
import {
|
||||||
Achv,
|
Achv,
|
||||||
AchvTier,
|
AchvTier,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { GameModes } from "#app/game-mode";
|
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 { Abilities } from "#enums/abilities";
|
||||||
import { Biome } from "#enums/biome";
|
import { Biome } from "#enums/biome";
|
||||||
import { Moves } from "#enums/moves";
|
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 { NumberHolder, randItem } from "#app/utils/common";
|
||||||
import { Species } from "#enums/species";
|
import { Species } from "#enums/species";
|
||||||
import { Stat } from "#enums/stat";
|
import { Stat } from "#enums/stat";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Abilities } from "#app/enums/abilities";
|
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 { NumberHolder } from "#app/utils/common";
|
||||||
import GameManager from "#test/testUtils/gameManager";
|
import GameManager from "#test/testUtils/gameManager";
|
||||||
import Phase from "phaser";
|
import Phase from "phaser";
|
||||||
|
@ -19,13 +19,17 @@ import {
|
|||||||
HitHealModifier,
|
HitHealModifier,
|
||||||
PokemonInstantReviveModifier,
|
PokemonInstantReviveModifier,
|
||||||
PokemonNatureWeightModifier,
|
PokemonNatureWeightModifier,
|
||||||
PreserveBerryModifier,
|
|
||||||
} from "#app/modifier/held-item-modifier";
|
} from "#app/modifier/held-item-modifier";
|
||||||
import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases";
|
import { MysteryEncounterPhase } from "#app/phases/mystery-encounter-phases";
|
||||||
import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||||
import { BerryType } from "#enums/berry-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 namespace = "mysteryEncounters/delibirdy";
|
||||||
const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA];
|
const defaultParty = [Species.LAPRAS, Species.GENGAR, Species.ABRA];
|
||||||
|
Loading…
Reference in New Issue
Block a user