Add Annihilape with Rage Fist move

This commit is contained in:
Flashfyre committed 2023-11-28 21:35:52 -05:00
1 parent 233e33bbed
commit ad9d8a8507
24 files changed
+13781 -45

No files matched your search

+1
View File
@@ -207,6 +207,7 @@ export class ConfusedTag extends BattlerTag {
pokemon.scene.queueMessage('It hurt itself in its\nconfusion!');
pokemon.scene.unshiftPhase(new DamagePhase(pokemon.scene, pokemon.getBattlerIndex()));
pokemon.damage(damage);
pokemon.battleData.hitCount++;
(pokemon.scene.getCurrentPhase() as MovePhase).cancel();
}
}
+16 -5
View File
@@ -820,7 +820,8 @@ export enum Moves {
PHANTOM_FORCE,
GEOMANCY,
OBLIVION_WING,
DYNAMAX_CANNON
DYNAMAX_CANNON,
RAGE_FIST
}
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;
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 {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
//const accuracy = args[0] as Utils.NumberHolder;
@@ -2901,11 +2910,11 @@ export function initMoves() {
.target(MoveTarget.USER_AND_ALLIES)
.soundBased(),
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)
.makesContact(false),
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)
.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)
@@ -3634,6 +3643,8 @@ export function initMoves() {
.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)
.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)
);
}
+3
View File
@@ -951,6 +951,9 @@ export const pokemonEvolutions: PokemonEvolutions = {
[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)
],
[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]: [
new SpeciesEvolution(Species.PIKACHU, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT)
],
+24 -2
View File
@@ -886,10 +886,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 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.SWAGGER ],
[ 35, Moves.RAGE_FIST ],
[ 41, Moves.CROSS_CHOP ],
[ 47, Moves.THRASH ],
[ 53, Moves.PUNISHMENT ],
@@ -10974,7 +10975,28 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 72, Moves.RECOVER ],
[ 80, Moves.HYPER_BEAM ],
[ 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 = {
+5 -4
View File
@@ -1,4 +1,4 @@
import { Abilities } from './ability';
import { Abilities, Ability } from './ability';
import BattleScene, { AnySound } from '../battle-scene';
import { GrowthRate } from './exp';
import { SpeciesWildEvolutionDelay, pokemonEvolutions, pokemonPrevolutions } from './pokemon-evolutions';
@@ -82,7 +82,7 @@ export abstract class PokemonSpeciesForm {
}
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 {
@@ -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.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("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)
);
}
+2 -1
View File
@@ -650,5 +650,6 @@ export enum Species {
GENESECT,
XERNEAS = 716,
YVELTAL,
ETERNATUS = 890
ETERNATUS = 890,
ANNIHILAPE = 979
};