Fix attack type boosters applying universally and buff Soul Dew
This commit is contained in:
parent
925bb73f0b
commit
e76fa25bc8
|
@ -1,6 +1,7 @@
|
|||
import { Stat, getStatName } from "./pokemon-stat";
|
||||
import * as Utils from "../utils";
|
||||
import { TextStyle, getBBCodeFrag } from "../ui/text";
|
||||
import { UiTheme } from "#app/enums/ui-theme";
|
||||
|
||||
export enum Nature {
|
||||
HARDY,
|
||||
|
@ -30,7 +31,7 @@ export enum Nature {
|
|||
QUIRKY
|
||||
}
|
||||
|
||||
export function getNatureName(nature: Nature, includeStatEffects: boolean = false, forStarterSelect: boolean = false, ignoreBBCode: boolean = false): string {
|
||||
export function getNatureName(nature: Nature, includeStatEffects: boolean = false, forStarterSelect: boolean = false, ignoreBBCode: boolean = false, uiTheme: UiTheme = UiTheme.DEFAULT): string {
|
||||
let ret = Utils.toReadableString(Nature[nature]);
|
||||
if (includeStatEffects) {
|
||||
const stats = Utils.getEnumValues(Stat).slice(1);
|
||||
|
@ -44,7 +45,7 @@ export function getNatureName(nature: Nature, includeStatEffects: boolean = fals
|
|||
decreasedStat = stat;
|
||||
}
|
||||
const textStyle = forStarterSelect ? TextStyle.SUMMARY_ALT : TextStyle.WINDOW;
|
||||
const getTextFrag = !ignoreBBCode ? getBBCodeFrag : (text: string, style: TextStyle) => text;
|
||||
const getTextFrag = !ignoreBBCode ? (text: string, style: TextStyle) => getBBCodeFrag(text, style, uiTheme) : (text: string, style: TextStyle) => text;
|
||||
if (increasedStat && decreasedStat)
|
||||
ret = `${getTextFrag(`${ret}${!forStarterSelect ? '\n' : ' '}(`, textStyle)}${getTextFrag(`+${getStatName(increasedStat, true)}`, TextStyle.SUMMARY_PINK)}${getTextFrag('/', textStyle)}${getTextFrag(`-${getStatName(decreasedStat, true)}`, TextStyle.SUMMARY_BLUE)}${getTextFrag(')', textStyle)}`;
|
||||
else
|
||||
|
|
|
@ -1092,7 +1092,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||
this.scene.applyModifiers(PokemonMultiHitModifier, source.isPlayer(), source, new Utils.IntegerHolder(0), power);
|
||||
if (!typeless) {
|
||||
this.scene.arena.applyTags(WeakenMoveTypeTag, move.type, power);
|
||||
this.scene.applyModifiers(AttackTypeBoosterModifier, source.isPlayer(), source, power);
|
||||
this.scene.applyModifiers(AttackTypeBoosterModifier, source.isPlayer(), source, move.type, power);
|
||||
}
|
||||
if (source.getTag(HelpingHandTag))
|
||||
power.value *= 1.5;
|
||||
|
|
|
@ -845,7 +845,7 @@ export const modifierTypes = {
|
|||
|
||||
SOOTHE_BELL: () => new PokemonFriendshipBoosterModifierType('Soothe Bell'),
|
||||
|
||||
SOUL_DEW: () => new PokemonHeldItemModifierType('Soul Dew', 'Increases the influence of a Pokémon\'s nature on its stats by 5% (additive)', (type, args) => new Modifiers.PokemonNatureWeightModifier(type, (args[0] as Pokemon).id)),
|
||||
SOUL_DEW: () => new PokemonHeldItemModifierType('Soul Dew', 'Increases the influence of a Pokémon\'s nature on its stats by 10% (additive)', (type, args) => new Modifiers.PokemonNatureWeightModifier(type, (args[0] as Pokemon).id)),
|
||||
|
||||
NUGGET: () => new MoneyRewardModifierType('Nugget', 1, 'small'),
|
||||
BIG_NUGGET: () => new MoneyRewardModifierType('Big Nugget', 2.5, 'moderate'),
|
||||
|
@ -1012,7 +1012,6 @@ const modifierPool: ModifierPool = {
|
|||
new WeightedModifierType(modifierTypes.TM_ULTRA, 8),
|
||||
new WeightedModifierType(modifierTypes.RARER_CANDY, 4),
|
||||
new WeightedModifierType(modifierTypes.SOOTHE_BELL, (party: Pokemon[]) => party.find(p => (pokemonEvolutions.hasOwnProperty(p.species.speciesId) && pokemonEvolutions[p.species.speciesId].find(e => e.condition && e.condition instanceof SpeciesFriendshipEvolutionCondition)) || p.moveset.find(m => m.moveId === Moves.RETURN)) ? 16 : 0, 16),
|
||||
new WeightedModifierType(modifierTypes.SOUL_DEW, 2),
|
||||
new WeightedModifierType(modifierTypes.GOLDEN_PUNCH, 2),
|
||||
new WeightedModifierType(modifierTypes.IV_SCANNER, 4),
|
||||
new WeightedModifierType(modifierTypes.EXP_CHARM, 8),
|
||||
|
@ -1029,6 +1028,7 @@ const modifierPool: ModifierPool = {
|
|||
new WeightedModifierType(modifierTypes.BERRY_POUCH, 4),
|
||||
new WeightedModifierType(modifierTypes.GRIP_CLAW, 5),
|
||||
new WeightedModifierType(modifierTypes.BATON, 2),
|
||||
new WeightedModifierType(modifierTypes.SOUL_DEW, 8),
|
||||
//new WeightedModifierType(modifierTypes.OVAL_CHARM, 6),
|
||||
new WeightedModifierType(modifierTypes.ABILITY_CHARM, 6),
|
||||
new WeightedModifierType(modifierTypes.FOCUS_BAND, 5),
|
||||
|
|
|
@ -681,11 +681,14 @@ export class AttackTypeBoosterModifier extends PokemonHeldItemModifier {
|
|||
}
|
||||
|
||||
apply(args: any[]): boolean {
|
||||
(args[1] as Utils.NumberHolder).value = Math.floor((args[1] as Utils.NumberHolder).value * (1 + (this.getStackCount() * this.boostMultiplier)));
|
||||
|
||||
if (args[1] === this.moveType) {
|
||||
(args[2] as Utils.NumberHolder).value = Math.floor((args[2] as Utils.NumberHolder).value * (1 + (this.getStackCount() * this.boostMultiplier)));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
getScoreMultiplier(): number {
|
||||
return 1.2;
|
||||
}
|
||||
|
@ -1424,7 +1427,7 @@ export class PokemonNatureWeightModifier extends PokemonHeldItemModifier {
|
|||
apply(args: any[]): boolean {
|
||||
const multiplier = args[1] as Utils.IntegerHolder;
|
||||
if (multiplier.value !== 1) {
|
||||
multiplier.value += 0.05 * this.getStackCount() * (multiplier.value > 1 ? 1 : -1);
|
||||
multiplier.value += 0.1 * this.getStackCount() * (multiplier.value > 1 ? 1 : -1);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1432,7 +1435,7 @@ export class PokemonNatureWeightModifier extends PokemonHeldItemModifier {
|
|||
}
|
||||
|
||||
getMaxHeldItemCount(pokemon: Pokemon): integer {
|
||||
return 5;
|
||||
return 10;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -123,10 +123,10 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container {
|
|||
const ability = pokemon.getAbility(true);
|
||||
const abilityTextStyle = ability.id === pokemon.getSpeciesForm().abilityHidden ? TextStyle.MONEY : TextStyle.WINDOW;
|
||||
this.pokemonAbilityText.setText(ability.name);
|
||||
this.pokemonAbilityText.setColor(getTextColor(abilityTextStyle));
|
||||
this.pokemonAbilityText.setShadowColor(getTextColor(abilityTextStyle, true));
|
||||
this.pokemonAbilityText.setColor(getTextColor(abilityTextStyle, false, this.scene.uiTheme));
|
||||
this.pokemonAbilityText.setShadowColor(getTextColor(abilityTextStyle, true, this.scene.uiTheme));
|
||||
|
||||
this.pokemonNatureText.setText(getNatureName(pokemon.getNature(), true));
|
||||
this.pokemonNatureText.setText(getNatureName(pokemon.getNature(), true, false, false, this.scene.uiTheme));
|
||||
|
||||
const originalIvs: integer[] = this.scene.gameData.dexData[pokemon.species.speciesId].caughtAttr
|
||||
? this.scene.gameData.dexData[pokemon.species.speciesId].ivs
|
||||
|
|
|
@ -1135,7 +1135,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
|||
this.pokemonAbilityText.setColor(this.getTextColor(!isHidden ? TextStyle.SUMMARY_ALT : TextStyle.SUMMARY_GOLD));
|
||||
this.pokemonAbilityText.setShadowColor(this.getTextColor(!isHidden ? TextStyle.SUMMARY_ALT : TextStyle.SUMMARY_GOLD, true));
|
||||
|
||||
this.pokemonNatureText.setText(getNatureName(natureIndex as unknown as Nature, true, true));
|
||||
this.pokemonNatureText.setText(getNatureName(natureIndex as unknown as Nature, true, true, false, this.scene.uiTheme));
|
||||
|
||||
let levelMoves: LevelMoves;
|
||||
if (pokemonFormLevelMoves.hasOwnProperty(species.speciesId) && pokemonFormLevelMoves[species.speciesId].hasOwnProperty(formIndex))
|
||||
|
|
|
@ -114,8 +114,8 @@ function getTextStyleOptions(style: TextStyle, uiTheme: UiTheme, extraStyleOptio
|
|||
return [ styleOptions, shadowColor, shadowSize ];
|
||||
}
|
||||
|
||||
export function getBBCodeFrag(content: string, textStyle: TextStyle): string {
|
||||
return `[color=${getTextColor(textStyle)}][shadow=${getTextColor(textStyle, true)}]${content}`;
|
||||
export function getBBCodeFrag(content: string, textStyle: TextStyle, uiTheme: UiTheme = UiTheme.DEFAULT): string {
|
||||
return `[color=${getTextColor(textStyle, false, uiTheme)}][shadow=${getTextColor(textStyle, true, uiTheme)}]${content}`;
|
||||
}
|
||||
|
||||
export function getTextColor(textStyle: TextStyle, shadow?: boolean, uiTheme: UiTheme = UiTheme.DEFAULT): string {
|
||||
|
|
Loading…
Reference in New Issue