mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-05 16:02:20 +02:00
More misc fixes
This commit is contained in:
parent
05b0140075
commit
fcce5998ed
@ -19,7 +19,7 @@ If you have the motivation and experience with Typescript/Javascript (or are wil
|
||||
### ❔ FAQ
|
||||
|
||||
**How do I test a new _______?**
|
||||
- In the `battle-scene.ts` file there are overrides for most values you'll need to change for testing
|
||||
- In the `src/overrides.ts` file there are overrides for most values you'll need to change for testing
|
||||
|
||||
|
||||
## 🪧 To Do
|
||||
|
@ -785,13 +785,16 @@ export class PostDefendAbilitySwapAbAttr extends PostDefendAbAttr {
|
||||
}
|
||||
|
||||
export class PostDefendAbilityGiveAbAttr extends PostDefendAbAttr {
|
||||
constructor() {
|
||||
private ability: Abilities;
|
||||
|
||||
constructor(ability: Abilities) {
|
||||
super();
|
||||
this.ability = ability;
|
||||
}
|
||||
|
||||
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
|
||||
if (move.getMove().checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon) && !attacker.getAbility().hasAttr(UnsuppressableAbilityAbAttr) && !attacker.getAbility().hasAttr(PostDefendAbilityGiveAbAttr)) {
|
||||
attacker.summonData.ability = pokemon.getAbility().id;
|
||||
attacker.summonData.ability = this.ability;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1872,13 +1875,19 @@ export class MoodyAbAttr extends PostTurnAbAttr {
|
||||
}
|
||||
|
||||
applyPostTurn(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
|
||||
// TODO: Edge case of not choosing to buff or debuff a stat that's already maxed
|
||||
let selectableStats = [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD];
|
||||
let increaseStat = selectableStats[Utils.randInt(selectableStats.length)];
|
||||
selectableStats = selectableStats.filter(s => s !== increaseStat);
|
||||
let decreaseStat = selectableStats[Utils.randInt(selectableStats.length)];
|
||||
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [increaseStat], 2));
|
||||
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [decreaseStat], -1));
|
||||
let increaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] < 6);
|
||||
let decreaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] > -6);
|
||||
|
||||
if (increaseStatArray.length > 0) {
|
||||
let increaseStat = increaseStatArray[Utils.randInt(increaseStatArray.length)];
|
||||
decreaseStatArray = decreaseStatArray.filter(s => s !== increaseStat);
|
||||
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [increaseStat], 2));
|
||||
}
|
||||
if (decreaseStatArray.length > 0) {
|
||||
let decreaseStat = selectableStats[Utils.randInt(selectableStats.length)];
|
||||
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [decreaseStat], -1));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -2913,7 +2922,7 @@ export function initAbilities() {
|
||||
new Ability(Abilities.INFILTRATOR, 5)
|
||||
.unimplemented(),
|
||||
new Ability(Abilities.MUMMY, 5)
|
||||
.attr(PostDefendAbilityGiveAbAttr)
|
||||
.attr(PostDefendAbilityGiveAbAttr, Abilities.MUMMY)
|
||||
.bypassFaint(),
|
||||
new Ability(Abilities.MOXIE, 5)
|
||||
.attr(PostVictoryStatChangeAbAttr, BattleStat.ATK, 1),
|
||||
@ -3284,7 +3293,7 @@ export function initAbilities() {
|
||||
.attr(UnswappableAbilityAbAttr)
|
||||
.attr(UnsuppressableAbilityAbAttr),
|
||||
new Ability(Abilities.LINGERING_AROMA, 9)
|
||||
.attr(PostDefendAbilityGiveAbAttr)
|
||||
.attr(PostDefendAbilityGiveAbAttr, Abilities.LINGERING_AROMA)
|
||||
.bypassFaint(),
|
||||
new Ability(Abilities.SEED_SOWER, 9)
|
||||
.attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY),
|
||||
|
@ -15,7 +15,7 @@ import { ArenaTagType } from "./enums/arena-tag-type";
|
||||
import { UnswappableAbilityAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, NoTransformAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr, MoveAbilityBypassAbAttr, ReverseDrainAbAttr, FieldPreventExplosiveMovesAbAttr } from "./ability";
|
||||
import { Abilities } from "./enums/abilities";
|
||||
import { allAbilities } from './ability';
|
||||
import { PokemonHeldItemModifier } from "../modifier/modifier";
|
||||
import { PokemonHeldItemModifier, TempBattleStatBoosterModifier } from "../modifier/modifier";
|
||||
import { BattlerIndex } from "../battle";
|
||||
import { Stat } from "./pokemon-stat";
|
||||
import { TerrainType } from "./terrain";
|
||||
@ -1474,6 +1474,23 @@ export class StatChangeAttr extends MoveEffectAttr {
|
||||
}
|
||||
}
|
||||
|
||||
export class AcupressureStatChangeAttr extends MoveEffectAttr {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean | Promise<boolean> {
|
||||
let randStats = [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD, BattleStat.ACC, BattleStat.EVA ];
|
||||
randStats = randStats.filter(s => target.summonData.battleStats[s] < 6);
|
||||
let boostStat = [randStats[Utils.randInt(randStats.length)]];
|
||||
if (boostStat.length > 0) {
|
||||
user.scene.unshiftPhase(new StatChangePhase(user.scene, target.getBattlerIndex(), this.selfTarget, boostStat, 2));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export class GrowthStatChangeAttr extends StatChangeAttr {
|
||||
constructor() {
|
||||
super([ BattleStat.ATK, BattleStat.SPATK ], 1, true);
|
||||
@ -4741,7 +4758,7 @@ export function initMoves() {
|
||||
.target(MoveTarget.USER_SIDE)
|
||||
.unimplemented(),
|
||||
new StatusMove(Moves.ACUPRESSURE, Type.NORMAL, -1, 30, -1, 0, 4)
|
||||
.attr(StatChangeAttr, BattleStat.RAND, 2)
|
||||
.attr(AcupressureStatChangeAttr)
|
||||
.target(MoveTarget.USER_OR_NEAR_ALLY),
|
||||
new AttackMove(Moves.METAL_BURST, Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4)
|
||||
.attr(CounterDamageAttr, (move: Move) => (move.category === MoveCategory.PHYSICAL || move.category === MoveCategory.SPECIAL), 1.5)
|
||||
|
@ -43,7 +43,7 @@ import { Nature, getNatureStatMultiplier } from '../data/nature';
|
||||
import { SpeciesFormChange, SpeciesFormChangeActiveTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangeStatusEffectTrigger } from '../data/pokemon-forms';
|
||||
import { TerrainType } from '../data/terrain';
|
||||
import { TrainerSlot } from '../data/trainer-config';
|
||||
import { ABILITY_OVERRIDE, MOVE_OVERRIDE, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE, OPP_SHINY_OVERRIDE, OPP_VARIANT_OVERRIDE } from '../overrides';
|
||||
import { ABILITY_OVERRIDE, MOVE_OVERRIDE, MOVE_OVERRIDE_2, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE, OPP_MOVE_OVERRIDE_2, OPP_SHINY_OVERRIDE, OPP_VARIANT_OVERRIDE } from '../overrides';
|
||||
|
||||
export enum FieldPosition {
|
||||
CENTER,
|
||||
@ -712,6 +712,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
this.moveset[0] = new PokemonMove(MOVE_OVERRIDE, Math.min(this.moveset[0].ppUsed, allMoves[MOVE_OVERRIDE].pp));
|
||||
else if (OPP_MOVE_OVERRIDE && !this.isPlayer())
|
||||
this.moveset[0] = new PokemonMove(OPP_MOVE_OVERRIDE, Math.min(this.moveset[0].ppUsed, allMoves[OPP_MOVE_OVERRIDE].pp));
|
||||
if (MOVE_OVERRIDE_2 && this.isPlayer())
|
||||
this.moveset[1] = new PokemonMove(MOVE_OVERRIDE_2, Math.min(this.moveset[1].ppUsed, allMoves[MOVE_OVERRIDE_2].pp));
|
||||
else if (OPP_MOVE_OVERRIDE_2 && !this.isPlayer())
|
||||
this.moveset[1] = new PokemonMove(OPP_MOVE_OVERRIDE_2, Math.min(this.moveset[1].ppUsed, allMoves[OPP_MOVE_OVERRIDE_2].pp));
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -2420,6 +2425,7 @@ export class PlayerPokemon extends Pokemon {
|
||||
if (newEvolution.condition.predicate(this)) {
|
||||
const newPokemon = this.scene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, undefined, this.shiny, this.variant, this.ivs, this.nature);
|
||||
newPokemon.natureOverride = this.natureOverride;
|
||||
newPokemon.passive = this.passive;
|
||||
newPokemon.moveset = this.moveset.slice();
|
||||
newPokemon.fusionSpecies = this.fusionSpecies;
|
||||
newPokemon.fusionFormIndex = this.fusionFormIndex;
|
||||
|
@ -15,9 +15,11 @@ export const WEATHER_OVERRIDE = WeatherType.NONE;
|
||||
|
||||
export const ABILITY_OVERRIDE = Abilities.NONE;
|
||||
export const MOVE_OVERRIDE = Moves.NONE;
|
||||
export const MOVE_OVERRIDE_2 = Moves.NONE;
|
||||
export const OPP_SPECIES_OVERRIDE = 0;
|
||||
export const OPP_ABILITY_OVERRIDE = Abilities.NONE;
|
||||
export const OPP_MOVE_OVERRIDE = Moves.NONE;
|
||||
export const OPP_MOVE_OVERRIDE_2 = Moves.NONE;
|
||||
|
||||
export const OPP_SHINY_OVERRIDE = false;
|
||||
export const OPP_VARIANT_OVERRIDE = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user