Add Annihilape with Rage Fist move

pull/12/head
Flashfyre 2023-11-28 21:35:52 -05:00
parent 233e33bbed
commit ad9d8a8507
24 changed files with 13781 additions and 45 deletions

BIN
public/audio/cry/979.mp3 Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "979.png",
"format": "RGBA8888",
"size": {
"w": 72,
"h": 75
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 74,
"h": 77
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 72,
"h": 75
},
"frame": {
"x": 0,
"y": 0,
"w": 72,
"h": 75
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:91e878fd2a0bca81b918e97740b65869:a640148a929eeb1aa680eed467e4eb62:351422d30d3be13e0d9d234ec7c8c043$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,41 @@
{
"textures": [
{
"image": "979.png",
"format": "RGBA8888",
"size": {
"w": 72,
"h": 75
},
"scale": 1,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 74,
"h": 77
},
"spriteSourceSize": {
"x": 1,
"y": 1,
"w": 72,
"h": 75
},
"frame": {
"x": 0,
"y": 0,
"w": 72,
"h": 75
}
}
]
}
],
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:91e878fd2a0bca81b918e97740b65869:a640148a929eeb1aa680eed467e4eb62:351422d30d3be13e0d9d234ec7c8c043$"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -4,8 +4,8 @@
"image": "pokemon_icons_6.png", "image": "pokemon_icons_6.png",
"format": "RGBA8888", "format": "RGBA8888",
"size": { "size": {
"w": 99, "w": 192,
"h": 98 "h": 58
}, },
"scale": 1, "scale": 1,
"frames": [ "frames": [
@ -44,32 +44,11 @@
"w": 55, "w": 55,
"h": 42 "h": 42
}, },
"frame": {
"x": 0,
"y": 56,
"w": 55,
"h": 42
}
},
{
"filename": "717",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 56,
"h": 42
},
"spriteSourceSize": {
"x": 13,
"y": 14,
"w": 32,
"h": 28
},
"frame": { "frame": {
"x": 67, "x": 67,
"y": 0, "y": 0,
"w": 32, "w": 55,
"h": 28 "h": 42
} }
}, },
{ {
@ -87,8 +66,8 @@
"h": 31 "h": 31
}, },
"frame": { "frame": {
"x": 67, "x": 122,
"y": 28, "y": 0,
"w": 31, "w": 31,
"h": 31 "h": 31
} }
@ -108,11 +87,53 @@
"h": 27 "h": 27
}, },
"frame": { "frame": {
"x": 55, "x": 122,
"y": 59, "y": 31,
"w": 38, "w": 38,
"h": 27 "h": 27
} }
},
{
"filename": "979",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 40,
"h": 30
},
"spriteSourceSize": {
"x": 3,
"y": 0,
"w": 32,
"h": 30
},
"frame": {
"x": 160,
"y": 0,
"w": 32,
"h": 30
}
},
{
"filename": "717",
"rotated": false,
"trimmed": true,
"sourceSize": {
"w": 56,
"h": 42
},
"spriteSourceSize": {
"x": 13,
"y": 14,
"w": 32,
"h": 28
},
"frame": {
"x": 160,
"y": 30,
"w": 32,
"h": 28
}
} }
] ]
} }
@ -120,6 +141,6 @@
"meta": { "meta": {
"app": "https://www.codeandweb.com/texturepacker", "app": "https://www.codeandweb.com/texturepacker",
"version": "3.0", "version": "3.0",
"smartupdate": "$TexturePacker:SmartUpdate:da1c77f10b290cc824b731ed2920ec48:84485c60eaa201508ddb6ef0365267bf:96737d38f2029744a75c1ee001bc1929$" "smartupdate": "$TexturePacker:SmartUpdate:56c494a24236874eac973adb00bb5fd9:06e134328126c54e98e3c55aa35c82b0:6a6cc46d6db7bee1b3e18054101832f5$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@ -34,6 +34,7 @@ import { Species } from "./data/species";
import { HealAchv, LevelAchv, MoneyAchv, achvs } from "./system/achv"; import { HealAchv, LevelAchv, MoneyAchv, achvs } from "./system/achv";
import { DexEntry } from "./system/game-data"; import { DexEntry } from "./system/game-data";
import { pokemonPrevolutions } from "./data/pokemon-evolutions"; import { pokemonPrevolutions } from "./data/pokemon-evolutions";
import { getPokemonSpecies } from "./data/pokemon-species";
export class CheckLoadPhase extends BattlePhase { export class CheckLoadPhase extends BattlePhase {
private loaded: boolean; private loaded: boolean;
@ -312,10 +313,15 @@ export class EncounterPhase extends BattlePhase {
doEncounter() { doEncounter() {
this.scene.playBgm(undefined, true); this.scene.playBgm(undefined, true);
if (startingWave > 10) { /*if (startingWave > 10) {
for (let m = 0; m < Math.min(Math.floor(startingWave / 10), 99); m++) for (let m = 0; m < Math.min(Math.floor(startingWave / 10), 99); m++)
this.scene.addModifier(getPlayerModifierTypeOptionsForWave((m + 1) * 10, 1, this.scene.getParty())[0].type.newModifier(), true); this.scene.addModifier(getPlayerModifierTypeOptionsForWave((m + 1) * 10, 1, this.scene.getParty())[0].type.newModifier(), true);
this.scene.updateModifiers(true); this.scene.updateModifiers(true);
}*/
for (let pokemon of this.scene.getParty()) {
if (pokemon)
pokemon.resetBattleData();
} }
this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena.biomeType), false); this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena.biomeType), false);
@ -441,6 +447,11 @@ export class NewBiomeEncounterPhase extends NextEncounterPhase {
} }
doEncounter(): void { doEncounter(): void {
for (let pokemon of this.scene.getParty()) {
if (pokemon)
pokemon.resetBattleData();
}
this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena.biomeType), false); this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena.biomeType), false);
const enemyField = this.scene.getEnemyField(); const enemyField = this.scene.getEnemyField();

View File

@ -682,6 +682,10 @@ export default class BattleScene extends Phaser.Scene {
if (showTrainer) { if (showTrainer) {
playerField.forEach((_, p) => this.unshiftPhase(new ReturnPhase(this, p))); playerField.forEach((_, p) => this.unshiftPhase(new ReturnPhase(this, p)));
this.unshiftPhase(new ShowTrainerPhase(this)); this.unshiftPhase(new ShowTrainerPhase(this));
for (let pokemon of this.getParty()) {
if (pokemon)
pokemon.resetBattleData();
}
} }
if (this.gameMode === GameMode.CLASSIC && !isNewBiome) if (this.gameMode === GameMode.CLASSIC && !isNewBiome)
this.pushPhase(new NextEncounterPhase(this)); this.pushPhase(new NextEncounterPhase(this));

View File

@ -207,6 +207,7 @@ export class ConfusedTag extends BattlerTag {
pokemon.scene.queueMessage('It hurt itself in its\nconfusion!'); pokemon.scene.queueMessage('It hurt itself in its\nconfusion!');
pokemon.scene.unshiftPhase(new DamagePhase(pokemon.scene, pokemon.getBattlerIndex())); pokemon.scene.unshiftPhase(new DamagePhase(pokemon.scene, pokemon.getBattlerIndex()));
pokemon.damage(damage); pokemon.damage(damage);
pokemon.battleData.hitCount++;
(pokemon.scene.getCurrentPhase() as MovePhase).cancel(); (pokemon.scene.getCurrentPhase() as MovePhase).cancel();
} }
} }

View File

@ -820,7 +820,8 @@ export enum Moves {
PHANTOM_FORCE, PHANTOM_FORCE,
GEOMANCY, GEOMANCY,
OBLIVION_WING, OBLIVION_WING,
DYNAMAX_CANNON DYNAMAX_CANNON,
RAGE_FIST
} }
export abstract class MoveAttr { export abstract class MoveAttr {
@ -1618,7 +1619,7 @@ export class SolarBeamPowerAttr extends VariablePowerAttr {
} }
} }
export class WinCountPowerMoveAttr extends VariablePowerAttr { export class WinCountPowerAttr extends VariablePowerAttr {
private invert: boolean; private invert: boolean;
constructor(invert?: boolean) { constructor(invert?: boolean) {
@ -1639,6 +1640,14 @@ export class WinCountPowerMoveAttr extends VariablePowerAttr {
} }
} }
export class HitCountPowerAttr extends VariablePowerAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
(args[0] as Utils.NumberHolder).value += Math.min(user.battleData.hitCount, 6) * 50;
return true;
}
}
export class VariableAccuracyAttr extends MoveAttr { export class VariableAccuracyAttr extends MoveAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
//const accuracy = args[0] as Utils.NumberHolder; //const accuracy = args[0] as Utils.NumberHolder;
@ -2901,11 +2910,11 @@ export function initMoves() {
.target(MoveTarget.USER_AND_ALLIES) .target(MoveTarget.USER_AND_ALLIES)
.soundBased(), .soundBased(),
new AttackMove(Moves.RETURN, "Return", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Power increases with higher Friendship.", -1, 0, 2) new AttackMove(Moves.RETURN, "Return", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Power increases with higher Friendship.", -1, 0, 2)
.attr(WinCountPowerMoveAttr), .attr(WinCountPowerAttr),
new AttackMove(Moves.PRESENT, "Present (N)", Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 15, -1, "Either deals damage or heals.", -1, 0, 2) new AttackMove(Moves.PRESENT, "Present (N)", Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 15, -1, "Either deals damage or heals.", -1, 0, 2)
.makesContact(false), .makesContact(false),
new AttackMove(Moves.FRUSTRATION, "Frustration", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Power decreases with higher Friendship.", -1, 0, 2) new AttackMove(Moves.FRUSTRATION, "Frustration", Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, "Power decreases with higher Friendship.", -1, 0, 2)
.attr(WinCountPowerMoveAttr, true), .attr(WinCountPowerAttr, true),
new SelfStatusMove(Moves.SAFEGUARD, "Safeguard (N)", Type.NORMAL, -1, 25, -1, "The user's party is protected from status conditions.", -1, 0, 2) new SelfStatusMove(Moves.SAFEGUARD, "Safeguard (N)", Type.NORMAL, -1, 25, -1, "The user's party is protected from status conditions.", -1, 0, 2)
.target(MoveTarget.USER_SIDE), .target(MoveTarget.USER_SIDE),
new StatusMove(Moves.PAIN_SPLIT, "Pain Split", Type.NORMAL, -1, 20, -1, "The user's and opponent's HP becomes the average of both.", -1, 0, 2) new StatusMove(Moves.PAIN_SPLIT, "Pain Split", Type.NORMAL, -1, 20, -1, "The user's and opponent's HP becomes the average of both.", -1, 0, 2)
@ -3634,6 +3643,8 @@ export function initMoves() {
.target(MoveTarget.OTHER), .target(MoveTarget.OTHER),
new AttackMove(Moves.DYNAMAX_CANNON, "Dynamax Cannon", Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, "Power is doubled if the target is over level 200.", -1, 0, 8) new AttackMove(Moves.DYNAMAX_CANNON, "Dynamax Cannon", Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 5, -1, "Power is doubled if the target is over level 200.", -1, 0, 8)
.attr(MovePowerMultiplierAttr, (user: Pokemon, target: Pokemon, move: Move) => target.level > 200 ? 2 : 1) .attr(MovePowerMultiplierAttr, (user: Pokemon, target: Pokemon, move: Move) => target.level > 200 ? 2 : 1)
.ignoresVirtual() .ignoresVirtual(),
new AttackMove(Moves.RAGE_FIST, "Rage Fist", Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, "The more times the user has been hit by attacks, the greater the move's power.", -1, 0, 9)
.attr(HitCountPowerAttr)
); );
} }

View File

@ -951,6 +951,9 @@ export const pokemonEvolutions: PokemonEvolutions = {
[Species.SHELMET]: [ [Species.SHELMET]: [
new SpeciesEvolution(Species.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition((p: Pokemon) => !!p.scene.getParty().find(p => p.species.speciesId === Species.KARRABLAST)), SpeciesWildEvolutionDelay.LONG) new SpeciesEvolution(Species.ACCELGOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition((p: Pokemon) => !!p.scene.getParty().find(p => p.species.speciesId === Species.KARRABLAST)), SpeciesWildEvolutionDelay.LONG)
], ],
[Species.PRIMEAPE]: [
new SpeciesEvolution(Species.ANNIHILAPE, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.moveset.filter(m => m.moveId === Moves.RAGE_FIST).length > 0), SpeciesWildEvolutionDelay.VERY_LONG)
],
[Species.PICHU]: [ [Species.PICHU]: [
new SpeciesEvolution(Species.PIKACHU, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT) new SpeciesEvolution(Species.PIKACHU, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT)
], ],

View File

@ -886,10 +886,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 9, Moves.FURY_SWIPES ], [ 9, Moves.FURY_SWIPES ],
[ 13, Moves.KARATE_CHOP ], [ 13, Moves.KARATE_CHOP ],
[ 17, Moves.SEISMIC_TOSS ], [ 17, Moves.SEISMIC_TOSS ],
[ 19, Moves.SWAGGER ],
[ 21, Moves.SCREECH ], [ 21, Moves.SCREECH ],
[ 25, Moves.ASSURANCE ], [ 25, Moves.ASSURANCE ],
[ 28, Moves.RAGE ], [ 28, Moves.RAGE ],
[ 35, Moves.SWAGGER ], [ 35, Moves.RAGE_FIST ],
[ 41, Moves.CROSS_CHOP ], [ 41, Moves.CROSS_CHOP ],
[ 47, Moves.THRASH ], [ 47, Moves.THRASH ],
[ 53, Moves.PUNISHMENT ], [ 53, Moves.PUNISHMENT ],
@ -10974,7 +10975,28 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 72, Moves.RECOVER ], [ 72, Moves.RECOVER ],
[ 80, Moves.HYPER_BEAM ], [ 80, Moves.HYPER_BEAM ],
[ 88, Moves.OUTRAGE ] [ 88, Moves.OUTRAGE ]
] ],
[Species.ANNIHILAPE]: [
[ 1, Moves.LEER ],
[ 1, Moves.FOCUS_ENERGY ],
[ 1, Moves.LOW_KICK ],
[ 1, Moves.SCRATCH ],
[ 1, Moves.FLING ],
[ 9, Moves.FURY_SWIPES ],
[ 13, Moves.KARATE_CHOP ],
[ 17, Moves.SEISMIC_TOSS ],
[ 19, Moves.SWAGGER ],
[ 21, Moves.SCREECH ],
[ 25, Moves.ASSURANCE ],
[ 28, Moves.RAGE ],
[ 35, Moves.RAGE_FIST ],
[ 41, Moves.CROSS_CHOP ],
[ 47, Moves.THRASH ],
[ 53, Moves.PUNISHMENT ],
[ 59, Moves.CLOSE_COMBAT ],
[ 63, Moves.FINAL_GAMBIT ],
[ 68, Moves.OUTRAGE ]
],
}; };
export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = { export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {

View File

@ -1,4 +1,4 @@
import { Abilities } from './ability'; import { Abilities, Ability } from './ability';
import BattleScene, { AnySound } from '../battle-scene'; import BattleScene, { AnySound } from '../battle-scene';
import { GrowthRate } from './exp'; import { GrowthRate } from './exp';
import { SpeciesWildEvolutionDelay, pokemonEvolutions, pokemonPrevolutions } from './pokemon-evolutions'; import { SpeciesWildEvolutionDelay, pokemonEvolutions, pokemonPrevolutions } from './pokemon-evolutions';
@ -82,7 +82,7 @@ export abstract class PokemonSpeciesForm {
} }
isObtainable() { isObtainable() {
return this.generation <= 5 && this.getFormSpriteKey(this.formIndex) !== 'mega'; return (this.generation <= 5 || pokemonPrevolutions.hasOwnProperty(this.speciesId)) && this.getFormSpriteKey(this.formIndex) !== 'mega';
} }
getSpriteAtlasPath(female: boolean, formIndex?: integer, shiny?: boolean): string { getSpriteAtlasPath(female: boolean, formIndex?: integer, shiny?: boolean): string {
@ -1186,9 +1186,10 @@ export function initSpecies() {
), ),
new PokemonSpecies(Species.XERNEAS, "Xerneas", 6, false, true, false, "Life Pokémon", Type.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 306, GrowthRate.SLOW, "Undiscovered", null, null, 120, false), new PokemonSpecies(Species.XERNEAS, "Xerneas", 6, false, true, false, "Life Pokémon", Type.FAIRY, null, 3, 215, Abilities.FAIRY_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 306, GrowthRate.SLOW, "Undiscovered", null, null, 120, false),
new PokemonSpecies(Species.YVELTAL, "Yveltal", 6, false, true, false, "Destruction Pokémon", Type.DARK, Type.FLYING, 5.8, 203, Abilities.DARK_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 306, GrowthRate.SLOW, "Undiscovered", null, null, 120, false), new PokemonSpecies(Species.YVELTAL, "Yveltal", 6, false, true, false, "Destruction Pokémon", Type.DARK, Type.FLYING, 5.8, 203, Abilities.DARK_AURA, Abilities.NONE, Abilities.NONE, 680, 126, 131, 95, 131, 98, 99, 45, 0, 306, GrowthRate.SLOW, "Undiscovered", null, null, 120, false),
new PokemonSpecies(Species.ETERNATUS, "Eternatus", 8, false, true, false, "Gigantic Pokemon", Type.POISON, Type.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, "Undiscovered", null, null, 120, false, false, new PokemonSpecies(Species.ETERNATUS, "Eternatus", 8, false, true, false, "Gigantic Pokémon", Type.POISON, Type.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, "Undiscovered", null, null, 120, false, false,
new PokemonForm("Normal", "", Type.POISON, Type.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, "Undiscovered", null, null, 120, false), new PokemonForm("Normal", "", Type.POISON, Type.DRAGON, 20, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 690, 140, 85, 95, 145, 95, 130, 255, 0, 345, GrowthRate.SLOW, "Undiscovered", null, null, 120, false),
new PokemonForm("Eternamax", "eternamax", Type.POISON, Type.DRAGON, 100, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 1125, 255, 115, 250, 125, 250, 130, 255, 0, 345, GrowthRate.SLOW, "Undiscovered", null, null, 120, false)) new PokemonForm("Eternamax", "eternamax", Type.POISON, Type.DRAGON, 100, 950, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 1125, 255, 115, 250, 125, 250, 130, 255, 0, 345, GrowthRate.SLOW, "Undiscovered", null, null, 120, false)),
new PokemonSpecies(Species.ANNIHILAPE, "Annihilape", 9, false, false, false, "Rage Monkey Pokémon", Type.FIGHTING, Type.GHOST, 1.2, 56, Abilities.VITAL_SPIRIT, Abilities.INNER_FOCUS, Abilities.DEFIANT, 535, 110, 115, 80, 50, 90, 90, 45, 50, 268, GrowthRate.MEDIUM_FAST, "Field", null, 50, 20, false)
); );
} }

View File

@ -650,5 +650,6 @@ export enum Species {
GENESECT, GENESECT,
XERNEAS = 716, XERNEAS = 716,
YVELTAL, YVELTAL,
ETERNATUS = 890 ETERNATUS = 890,
ANNIHILAPE = 979
}; };

View File

@ -381,7 +381,7 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier {
const isIconShown = pokemon instanceof PlayerPokemon || scene.currentBattle.seenEnemyPartyMemberIds.has(pokemon.id); const isIconShown = pokemon instanceof PlayerPokemon || scene.currentBattle.seenEnemyPartyMemberIds.has(pokemon.id);
const iconAtlasKey = isIconShown ? pokemon.getIconAtlasKey() : 'pokemon_icons_0'; const iconAtlasKey = isIconShown ? pokemon.getIconAtlasKey() : 'pokemon_icons_0';
const pokemonIcon = scene.add.sprite(0, 8, iconAtlasKey); const pokemonIcon = scene.add.sprite(0, 8, iconAtlasKey);
if (pokemon.getSpeciesForm().isObtainable()) { if (pokemon.getSpeciesForm().generation <= 5) {
const iconKey = isIconShown ? pokemon.getIconKey() : 'pkmn_icon__000'; const iconKey = isIconShown ? pokemon.getIconKey() : 'pkmn_icon__000';
pokemonIcon.play(iconKey).stop(); pokemonIcon.play(iconKey).stop();
} else { } else {

View File

@ -74,6 +74,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
public fusionGender: Gender; public fusionGender: Gender;
public summonData: PokemonSummonData; public summonData: PokemonSummonData;
public battleData: PokemonBattleData;
public battleSummonData: PokemonBattleSummonData; public battleSummonData: PokemonBattleSummonData;
public turnData: PokemonTurnData; public turnData: PokemonTurnData;
@ -921,6 +922,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
if (source.isPlayer()) if (source.isPlayer())
this.scene.validateAchvs(DamageAchv, damage); this.scene.validateAchvs(DamageAchv, damage);
source.turnData.damageDealt += damage.value; source.turnData.damageDealt += damage.value;
this.battleData.hitCount++;
this.turnData.attacksReceived.unshift({ move: move.id, result: result as DamageResult, damage: damage.value, critical: isCritical, sourceId: source.id }); this.turnData.attacksReceived.unshift({ move: move.id, result: result as DamageResult, damage: damage.value, critical: isCritical, sourceId: source.id });
if (source.isPlayer() && !this.isPlayer()) if (source.isPlayer() && !this.isPlayer())
this.scene.applyModifiers(DamageMoneyRewardModifier, true, source, damage) this.scene.applyModifiers(DamageMoneyRewardModifier, true, source, damage)
@ -1302,9 +1304,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
this.updateFusionPalette(); this.updateFusionPalette();
} }
this.summonData = new PokemonSummonData(); this.summonData = new PokemonSummonData();
if (!this.battleData)
this.resetBattleData();
this.resetBattleSummonData(); this.resetBattleSummonData();
} }
resetBattleData(): void {
this.battleData = new PokemonBattleData();
}
resetBattleSummonData(): void { resetBattleSummonData(): void {
this.battleSummonData = new PokemonBattleSummonData(); this.battleSummonData = new PokemonBattleSummonData();
if (this.getTag(BattlerTagType.SEEDED)) if (this.getTag(BattlerTagType.SEEDED))
@ -1983,6 +1991,10 @@ export class PokemonSummonData {
public types: Type[]; public types: Type[];
} }
export class PokemonBattleData {
public hitCount: integer = 0;
}
export class PokemonBattleSummonData { export class PokemonBattleSummonData {
public turnCount: integer = 1; public turnCount: integer = 1;
public moveHistory: TurnMove[] = []; public moveHistory: TurnMove[] = [];

View File

@ -740,7 +740,12 @@ class PartySlot extends Phaser.GameObjects.Container {
this.add(slotPb); this.add(slotPb);
const pokemonIcon = this.scene.add.sprite(slotPb.x, slotPb.y, this.pokemon.getIconAtlasKey(true)); const pokemonIcon = this.scene.add.sprite(slotPb.x, slotPb.y, this.pokemon.getIconAtlasKey(true));
pokemonIcon.play(this.pokemon.getIconKey(true)); if (this.pokemon.getSpeciesForm().generation <= 5)
pokemonIcon.play(this.pokemon.getIconKey(true));
else {
pokemonIcon.setFrame(this.pokemon.getIconId());
pokemonIcon.setScale(0.75);
}
this.add(pokemonIcon); this.add(pokemonIcon);