Various updates and changes
This commit is contained in:
1 parent
dbc4661507
commit
0effdfa7fb
24 files changed
+4428
-3425
No files matched your search
+124
-44
@@ -35,19 +35,36 @@ export class EncounterPhase extends BattlePhase {
|
||||
start() {
|
||||
super.start();
|
||||
|
||||
const battle = this.scene.currentBattle;
|
||||
const enemySpecies = this.scene.arena.randomSpecies(1, battle.enemyLevel);
|
||||
battle.enemyPokemon = new EnemyPokemon(this.scene, enemySpecies, battle.enemyLevel);
|
||||
const enemyPokemon = this.scene.getEnemyPokemon();
|
||||
|
||||
console.log(enemyPokemon.species.name, enemyPokemon.species.speciesId, enemyPokemon.stats);
|
||||
|
||||
enemyPokemon.loadAssets().then(() => {
|
||||
this.scene.field.add(enemyPokemon);
|
||||
if (this.scene.getPlayerPokemon().visible)
|
||||
this.scene.field.moveBelow(enemyPokemon, this.scene.getPlayerPokemon());
|
||||
enemyPokemon.tint(0, 0.5);
|
||||
this.doEncounter();
|
||||
});
|
||||
this.scene.load.start();
|
||||
}
|
||||
|
||||
doEncounter() {
|
||||
const enemyPokemon = this.scene.getEnemyPokemon();
|
||||
enemyPokemon.tint(0, 0.5);
|
||||
this.scene.tweens.add({
|
||||
targets: [ this.scene.arenaEnemy, enemyPokemon, this.scene.arenaPlayer, this.scene.trainer ],
|
||||
x: (_target, _key, value, targetIndex: integer) => targetIndex < 2 ? value + 300 : value - 300,
|
||||
duration: 2000,
|
||||
onComplete: () => {
|
||||
targets: [ this.scene.arenaEnemy, enemyPokemon, this.scene.arenaPlayer, this.scene.trainer ],
|
||||
x: (_target, _key, value, targetIndex: integer) => targetIndex < 2 ? value + 300 : value - 300,
|
||||
duration: 2000,
|
||||
onComplete: () => {
|
||||
enemyPokemon.untint(100, 'Sine.easeOut');
|
||||
enemyPokemon.cry();
|
||||
enemyPokemon.showInfo();
|
||||
this.scene.ui.showText(`A wild ${enemyPokemon.name} appeared!`, null, () => this.end(), 1500);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
end() {
|
||||
@@ -60,38 +77,26 @@ export class EncounterPhase extends BattlePhase {
|
||||
}
|
||||
}
|
||||
|
||||
export class NextEncounterPhase extends BattlePhase {
|
||||
export class NextEncounterPhase extends EncounterPhase {
|
||||
constructor(scene: BattleScene) {
|
||||
super(scene);
|
||||
}
|
||||
|
||||
start() {
|
||||
super.start();
|
||||
|
||||
console.log(this.scene.getPlayerPokemon(), this.scene.getParty().map(p => p.name), this.scene.getPlayerPokemon().id)
|
||||
|
||||
this.scene.getEnemyPokemon().destroy();
|
||||
const newEnemyPokemon = new EnemyPokemon(this.scene, this.scene.randomSpecies(true), this.scene.getLevelForNextWave());
|
||||
newEnemyPokemon.loadAssets().then(() => {
|
||||
this.scene.newBattle(newEnemyPokemon);
|
||||
this.scene.field.add(newEnemyPokemon);
|
||||
this.scene.field.moveBelow(newEnemyPokemon, this.scene.getPlayerPokemon());
|
||||
newEnemyPokemon.tint(0, 0.5);
|
||||
this.scene.tweens.add({
|
||||
targets: [ this.scene.arenaEnemy, this.scene.arenaEnemy2, newEnemyPokemon ],
|
||||
x: '+=300',
|
||||
duration: 2000,
|
||||
onComplete: () => {
|
||||
this.scene.arenaEnemy.setX(this.scene.arenaEnemy2.x);
|
||||
this.scene.arenaEnemy2.setX(this.scene.arenaEnemy2.x - 300);
|
||||
newEnemyPokemon.untint(100, 'Sine.easeOut');
|
||||
newEnemyPokemon.cry();
|
||||
newEnemyPokemon.showInfo();
|
||||
this.scene.ui.showText(`A wild ${newEnemyPokemon.name} appeared!`, null, () => this.end(), 1500);
|
||||
}
|
||||
});
|
||||
doEncounter(): void {
|
||||
const enemyPokemon = this.scene.getEnemyPokemon();
|
||||
this.scene.tweens.add({
|
||||
targets: [ this.scene.arenaEnemy, this.scene.arenaNextEnemy, enemyPokemon ],
|
||||
x: '+=300',
|
||||
duration: 2000,
|
||||
onComplete: () => {
|
||||
this.scene.arenaEnemy.setX(this.scene.arenaNextEnemy.x);
|
||||
this.scene.arenaNextEnemy.setX(this.scene.arenaNextEnemy.x - 300);
|
||||
enemyPokemon.untint(100, 'Sine.easeOut');
|
||||
enemyPokemon.cry();
|
||||
enemyPokemon.showInfo();
|
||||
this.scene.ui.showText(`A wild ${enemyPokemon.name} appeared!`, null, () => this.end(), 1500);
|
||||
}
|
||||
});
|
||||
this.scene.load.start();
|
||||
}
|
||||
|
||||
end() {
|
||||
@@ -104,6 +109,81 @@ export class NextEncounterPhase extends BattlePhase {
|
||||
}
|
||||
}
|
||||
|
||||
export class NewBiomeEncounterPhase extends NextEncounterPhase {
|
||||
constructor(scene: BattleScene) {
|
||||
super(scene);
|
||||
}
|
||||
|
||||
doEncounter(): void {
|
||||
const enemyPokemon = this.scene.getEnemyPokemon();
|
||||
this.scene.tweens.add({
|
||||
targets: [ this.scene.arenaEnemy, enemyPokemon ],
|
||||
x: (_target, _key, value, targetIndex: integer) => targetIndex < 2 ? value + 300 : value - 300,
|
||||
duration: 2000,
|
||||
onComplete: () => {
|
||||
enemyPokemon.untint(100, 'Sine.easeOut');
|
||||
enemyPokemon.cry();
|
||||
enemyPokemon.showInfo();
|
||||
this.scene.ui.showText(`A wild ${enemyPokemon.name} appeared!`, null, () => this.end(), 1500);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class SwitchBiomePhase extends BattlePhase {
|
||||
constructor(scene: BattleScene) {
|
||||
super(scene);
|
||||
}
|
||||
|
||||
start() {
|
||||
super.start();
|
||||
|
||||
this.scene.arena.fadeOutBgm(2000);
|
||||
|
||||
this.scene.tweens.add({
|
||||
targets: this.scene.arenaEnemy,
|
||||
x: '+=300',
|
||||
duration: 2000,
|
||||
onComplete: () => {
|
||||
this.scene.arenaEnemy.setX(this.scene.arenaEnemy.x - 600);
|
||||
|
||||
this.scene.newBiome();
|
||||
|
||||
const biomeKey = this.scene.arena.getBiomeKey();
|
||||
const bgTexture = `${biomeKey}_bg`;
|
||||
const playerTexture = `${biomeKey}_a`;
|
||||
const enemyTexture = `${biomeKey}_b`;
|
||||
this.scene.arenaBgTransition.setTexture(bgTexture)
|
||||
this.scene.arenaBgTransition.setAlpha(0);
|
||||
this.scene.arenaBgTransition.setVisible(true);
|
||||
this.scene.arenaPlayerTransition.setTexture(playerTexture)
|
||||
this.scene.arenaPlayerTransition.setAlpha(0);
|
||||
this.scene.arenaPlayerTransition.setVisible(true);
|
||||
|
||||
this.scene.time.delayedCall(1000, () => this.scene.arena.playBgm());
|
||||
|
||||
this.scene.tweens.add({
|
||||
targets: [ this.scene.arenaBgTransition, this.scene.arenaPlayerTransition ],
|
||||
duration: 1000,
|
||||
delay: 1000,
|
||||
ease: 'Sine.easeInOut',
|
||||
alpha: 1,
|
||||
onComplete: () => {
|
||||
this.scene.arenaBg.setTexture(bgTexture);
|
||||
this.scene.arenaPlayer.setTexture(playerTexture);
|
||||
this.scene.arenaEnemy.setTexture(enemyTexture);
|
||||
this.scene.arenaNextEnemy.setTexture(enemyTexture);
|
||||
this.scene.arenaBgTransition.setVisible(false);
|
||||
this.scene.arenaPlayerTransition.setVisible(false);
|
||||
|
||||
this.end();
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class SummonPhase extends BattlePhase {
|
||||
constructor(scene: BattleScene) {
|
||||
super(scene);
|
||||
@@ -536,7 +616,7 @@ export class VictoryPhase extends PokemonPhase {
|
||||
}
|
||||
}
|
||||
this.scene.unshiftPhase(new SelectModifierPhase(this.scene));
|
||||
this.scene.unshiftPhase(new NextEncounterPhase(this.scene));
|
||||
this.scene.newBattle();
|
||||
|
||||
this.end();
|
||||
}
|
||||
@@ -587,7 +667,7 @@ export class ExpPhase extends PartyMemberPokemonPhase {
|
||||
pokemon.addExp(exp.value);
|
||||
newLevel = pokemon.level;
|
||||
if (newLevel > lastLevel)
|
||||
this.scene.unshiftPhase(new LevelUpPhase(this.scene, newLevel));
|
||||
this.scene.unshiftPhase(new LevelUpPhase(this.scene, this.partyMemberIndex, newLevel));
|
||||
pokemon.updateInfo(() => this.end());
|
||||
}, null, true);
|
||||
}
|
||||
@@ -595,11 +675,11 @@ export class ExpPhase extends PartyMemberPokemonPhase {
|
||||
|
||||
}
|
||||
|
||||
export class LevelUpPhase extends PokemonPhase {
|
||||
export class LevelUpPhase extends PartyMemberPokemonPhase {
|
||||
private level: integer;
|
||||
|
||||
constructor(scene: BattleScene, level: integer) {
|
||||
super(scene, true);
|
||||
constructor(scene: BattleScene, partyMemberIndex: integer, level: integer) {
|
||||
super(scene, partyMemberIndex);
|
||||
|
||||
this.level = level;
|
||||
}
|
||||
@@ -622,18 +702,18 @@ export class LevelUpPhase extends PokemonPhase {
|
||||
continue;
|
||||
else if (level > this.level)
|
||||
break;
|
||||
this.scene.unshiftPhase(new LearnMovePhase(this.scene, lm[1]));
|
||||
this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, lm[1]));
|
||||
}
|
||||
}
|
||||
this.scene.time.delayedCall(1500, () => this.scene.resumeBgm());
|
||||
}
|
||||
}
|
||||
|
||||
export class LearnMovePhase extends PokemonPhase {
|
||||
export class LearnMovePhase extends PartyMemberPokemonPhase {
|
||||
private moveId: Move;
|
||||
|
||||
constructor(scene: BattleScene, moveId: Move) {
|
||||
super(scene, true);
|
||||
constructor(scene: BattleScene, partyMemberIndex: integer, moveId: Move) {
|
||||
super(scene, partyMemberIndex);
|
||||
|
||||
this.moveId = moveId;
|
||||
}
|
||||
@@ -813,7 +893,7 @@ export class SelectModifierPhase extends BattlePhase {
|
||||
regenerateModifierPoolThresholds(this.scene.getParty());
|
||||
const modifierCount = new Utils.IntegerHolder(3);
|
||||
this.scene.applyModifiers(ExtraModifierModifier, modifierCount);
|
||||
const types: Array<ModifierType> = getModifierTypesForWave(this.scene.waveIndex, modifierCount.value);
|
||||
const types: Array<ModifierType> = getModifierTypesForWave(this.scene.currentBattle.waveIndex, modifierCount.value);
|
||||
|
||||
this.scene.ui.setMode(Mode.MODIFIER_SELECT, types, (cursor: integer) => {
|
||||
if (cursor < 0) {
|
||||
@@ -828,7 +908,7 @@ export class SelectModifierPhase extends BattlePhase {
|
||||
this.scene.ui.setModeWithoutClear(Mode.PARTY, false, (slotIndex: integer) => {
|
||||
if (slotIndex < 6) {
|
||||
this.scene.ui.setMode(Mode.MODIFIER_SELECT);
|
||||
this.scene.addModifier(types[cursor].newModifier(this.scene.getParty()[slotIndex].id));
|
||||
this.scene.addModifier(types[cursor].newModifier(this.scene.getParty()[slotIndex]));
|
||||
this.scene.ui.setMode(Mode.MESSAGE);
|
||||
super.end();
|
||||
} else
|
||||
|
||||
+46
-46
@@ -1,7 +1,7 @@
|
||||
import Phaser from 'phaser';
|
||||
import { Biome, BiomeArena } from './biome';
|
||||
import UI from './ui/ui';
|
||||
import { BattlePhase, EncounterPhase, SummonPhase, CommandPhase } from './battle-phase';
|
||||
import { BattlePhase, EncounterPhase, SummonPhase, CommandPhase, NextEncounterPhase, SwitchBiomePhase, NewBiomeEncounterPhase } from './battle-phase';
|
||||
import { PlayerPokemon, EnemyPokemon } from './pokemon';
|
||||
import PokemonSpecies, { allSpecies, getPokemonSpecies } from './pokemon-species';
|
||||
import * as Utils from './utils';
|
||||
@@ -13,18 +13,21 @@ import { Battle } from './battle';
|
||||
|
||||
export default class BattleScene extends Phaser.Scene {
|
||||
private auto: boolean;
|
||||
private autoSpeed: integer = 3;
|
||||
private autoSpeed: integer = 10;
|
||||
|
||||
private phaseQueue: Array<BattlePhase>;
|
||||
private phaseQueuePrepend: Array<BattlePhase>;
|
||||
private currentPhase: BattlePhase;
|
||||
private arena: BiomeArena;
|
||||
public field: Phaser.GameObjects.Container;
|
||||
public fieldUI: Phaser.GameObjects.Container;
|
||||
public arenaBg: Phaser.GameObjects.Image;
|
||||
public arenaBgTransition: Phaser.GameObjects.Image;
|
||||
public arenaPlayer: Phaser.GameObjects.Image;
|
||||
public arenaPlayerTransition: Phaser.GameObjects.Image;
|
||||
public arenaEnemy: Phaser.GameObjects.Image;
|
||||
public arenaEnemy2: Phaser.GameObjects.Image;
|
||||
public arenaEnemyTransition: Phaser.GameObjects.Image;
|
||||
public arenaNextEnemy: Phaser.GameObjects.Image;
|
||||
public arena: BiomeArena;
|
||||
public trainer: Phaser.GameObjects.Sprite;
|
||||
public currentBattle: Battle;
|
||||
public pokeballCounts = Object.fromEntries(Utils.getEnumValues(PokeballType).map(t => [ t, 0 ]));
|
||||
@@ -176,22 +179,24 @@ export default class BattleScene extends Phaser.Scene {
|
||||
|
||||
this.field = field;
|
||||
|
||||
// Init arena
|
||||
const arenas = Utils.getEnumValues(Biome).map(at => new BiomeArena(this, at, Biome[at].toLowerCase()));
|
||||
const arena = arenas[Utils.randInt(11)];
|
||||
this.newBiome();
|
||||
|
||||
this.arena = arena;
|
||||
const biomeKey = this.arena.getBiomeKey();
|
||||
this.arenaBg = this.add.sprite(0, 0, `${biomeKey}_bg`);
|
||||
this.arenaBgTransition = this.add.sprite(0, 0, `${biomeKey}_bg`);
|
||||
this.arenaPlayer = this.add.sprite(340, 20, `${biomeKey}_a`);
|
||||
this.arenaPlayerTransition = this.add.sprite(40, 20, `${biomeKey}_a`);
|
||||
this.arenaEnemy = this.add.sprite(-240, 13, `${biomeKey}_b`);
|
||||
this.arenaNextEnemy = this.add.sprite(-240, 13, `${biomeKey}_b`);
|
||||
|
||||
this.arenaBg = this.add.image(0, 0, `${Biome[arena.biomeType].toLowerCase()}_bg`);
|
||||
this.arenaPlayer = this.add.image(340, 20, `${Biome[arena.biomeType].toLowerCase()}_a`);
|
||||
this.arenaEnemy = this.add.image(-240, 13, `${Biome[arena.biomeType].toLowerCase()}_b`);
|
||||
this.arenaEnemy2 = this.add.image(-240, 13, `${Biome[arena.biomeType].toLowerCase()}_b`);
|
||||
this.arenaBgTransition.setVisible(false);
|
||||
this.arenaPlayerTransition.setVisible(false);
|
||||
|
||||
[this.arenaBg, this.arenaPlayer, this.arenaEnemy, this.arenaEnemy2].forEach(a => {
|
||||
[this.arenaBg, this.arenaBgTransition, this.arenaPlayer, this.arenaPlayerTransition, this.arenaEnemy, this.arenaNextEnemy].forEach(a => {
|
||||
a.setOrigin(0, 0);
|
||||
field.add(a);
|
||||
});
|
||||
//arena.playBgm();
|
||||
this.arena.playBgm();
|
||||
|
||||
const fieldUI = this.add.container(0, this.game.canvas.height);
|
||||
fieldUI.setScale(6);
|
||||
@@ -222,19 +227,7 @@ export default class BattleScene extends Phaser.Scene {
|
||||
this.party.push(playerPokemon);
|
||||
}
|
||||
|
||||
const enemySpecies = arena.randomSpecies(1);
|
||||
console.log(enemySpecies.name);
|
||||
const enemyPokemon = new EnemyPokemon(this, enemySpecies, this.getLevelForNextWave());
|
||||
loadPokemonAssets.push(enemyPokemon.loadAssets());
|
||||
|
||||
this.add.existing(enemyPokemon);
|
||||
|
||||
this.newBattle(enemyPokemon);
|
||||
|
||||
field.add(enemyPokemon);
|
||||
|
||||
console.log(this.getPlayerPokemon().species.name, this.getPlayerPokemon().species.speciesId, this.getPlayerPokemon().stats);
|
||||
console.log(enemyPokemon.species.name, enemyPokemon.species.speciesId, enemyPokemon.stats);
|
||||
|
||||
const trainerPbFrameNames = this.anims.generateFrameNames('trainer_m_pb', { zeroPad: 2, start: 1, end: 12 });
|
||||
this.anims.create({
|
||||
@@ -276,7 +269,7 @@ export default class BattleScene extends Phaser.Scene {
|
||||
if (this.auto)
|
||||
initAutoPlay.apply(this, [ this.autoSpeed ]);
|
||||
|
||||
this.phaseQueue.push(new EncounterPhase(this), new SummonPhase(this));
|
||||
this.newBattle();
|
||||
|
||||
this.shiftPhase();
|
||||
});
|
||||
@@ -299,27 +292,36 @@ export default class BattleScene extends Phaser.Scene {
|
||||
return this.currentBattle.enemyPokemon;
|
||||
}
|
||||
|
||||
newBattle(enemyPokemon: EnemyPokemon): Battle {
|
||||
this.currentBattle = new Battle((this.currentBattle?.waveIndex || 0) + 1, enemyPokemon);
|
||||
newBattle(): Battle {
|
||||
if (this.currentBattle) {
|
||||
console.log(this.getPlayerPokemon(), this.getParty().map(p => p.name), this.getPlayerPokemon().id)
|
||||
|
||||
this.getEnemyPokemon().destroy();
|
||||
if (this.currentBattle.waveIndex % 10)
|
||||
this.unshiftPhase(new NextEncounterPhase(this));
|
||||
else {
|
||||
this.unshiftPhase(new SwitchBiomePhase(this));
|
||||
this.unshiftPhase(new NewBiomeEncounterPhase(this));
|
||||
}
|
||||
} else {
|
||||
this.pushPhase(new EncounterPhase(this));
|
||||
this.pushPhase(new SummonPhase(this));
|
||||
}
|
||||
|
||||
this.currentBattle = new Battle((this.currentBattle?.waveIndex || 0) + 1);
|
||||
return this.currentBattle;
|
||||
}
|
||||
|
||||
randomSpecies(fromArenaPool?: boolean): PokemonSpecies {
|
||||
return fromArenaPool
|
||||
? this.arena.randomSpecies(1)
|
||||
: allSpecies[(Utils.randInt(allSpecies.length)) - 1];
|
||||
newBiome(): BiomeArena {
|
||||
const biome = Utils.randInt(20) as Biome;
|
||||
this.arena = new BiomeArena(this, biome, Biome[biome].toLowerCase());
|
||||
return this.arena;
|
||||
}
|
||||
|
||||
getLevelForNextWave() {
|
||||
const waveIndex = (this.currentBattle?.waveIndex || 0) + 1;
|
||||
let averageLevel = 1 + waveIndex * 0.25;
|
||||
|
||||
if (waveIndex % 10 === 0)
|
||||
return Math.floor(averageLevel * 1.25);
|
||||
|
||||
const deviation = 10 / waveIndex;
|
||||
|
||||
return Math.max(Math.round(averageLevel + Utils.randGauss(deviation)), 1);
|
||||
randomSpecies(level: integer, fromArenaPool?: boolean): PokemonSpecies {
|
||||
return fromArenaPool
|
||||
? this.arena.randomSpecies(1, level)
|
||||
: allSpecies[(Utils.randInt(allSpecies.length)) - 1];
|
||||
}
|
||||
|
||||
checkInput(): boolean {
|
||||
@@ -346,10 +348,8 @@ export default class BattleScene extends Phaser.Scene {
|
||||
}
|
||||
|
||||
playBgm(bgmName: string): void {
|
||||
if (this.bgm) {
|
||||
if (this.bgm && this.bgm.isPlaying)
|
||||
this.bgm.stop();
|
||||
this.bgm.destroy();
|
||||
}
|
||||
this.bgm = this.sound.add(bgmName, { loop: true });
|
||||
this.bgm.play();
|
||||
}
|
||||
|
||||
+17
-5
@@ -1,21 +1,33 @@
|
||||
import { EnemyPokemon, PlayerPokemon } from "./pokemon";
|
||||
import * as Utils from "./utils";
|
||||
|
||||
export class Battle {
|
||||
public waveIndex: integer;
|
||||
public enemyLevel: integer;
|
||||
public enemyPokemon: EnemyPokemon;
|
||||
public playerParticipantIds: Set<integer> = new Set<integer>();
|
||||
|
||||
constructor(waveIndex: integer, enemyPokemon: EnemyPokemon) {
|
||||
constructor(waveIndex: integer) {
|
||||
this.waveIndex = waveIndex;
|
||||
this.enemyPokemon = enemyPokemon;
|
||||
this.enemyLevel = this.getLevelForWave();
|
||||
}
|
||||
|
||||
addParticipant(playerPokemon: PlayerPokemon) {
|
||||
console.log('add participant', playerPokemon.name)
|
||||
private getLevelForWave(): number {
|
||||
let averageLevel = 1 + this.waveIndex * 0.5;
|
||||
|
||||
if (!(this.waveIndex % 10))
|
||||
return Math.floor(averageLevel * 1.25);
|
||||
|
||||
const deviation = 10 / this.waveIndex;
|
||||
|
||||
return Math.max(Math.round(averageLevel + Utils.randGauss(deviation)), 1);
|
||||
}
|
||||
|
||||
addParticipant(playerPokemon: PlayerPokemon): void {
|
||||
this.playerParticipantIds.add(playerPokemon.id);
|
||||
}
|
||||
|
||||
removeFaintedParticipant(playerPokemon: PlayerPokemon) {
|
||||
removeFaintedParticipant(playerPokemon: PlayerPokemon): void {
|
||||
this.playerParticipantIds.delete(playerPokemon.id);
|
||||
}
|
||||
}
|
||||
+3918
-3234
File diff suppressed because it is too large.
Load diff
@@ -172,7 +172,6 @@ export class PokemonBaseStatModifier extends PokemonModifier {
|
||||
for (let modifier of modifiers) {
|
||||
if (modifier instanceof PokemonBaseStatModifier) {
|
||||
const pokemonStatModifier = modifier as PokemonBaseStatModifier;
|
||||
console.log(pokemonStatModifier.stat, this.stat, pokemonStatModifier.pokemonId === this.pokemonId && pokemonStatModifier.stat === this.stat)
|
||||
if (pokemonStatModifier.pokemonId === this.pokemonId && pokemonStatModifier.stat === this.stat) {
|
||||
pokemonStatModifier.incrementStack();
|
||||
modifierBar.updateModifier(pokemonStatModifier, modifiers);
|
||||
|
||||
+86
-87
@@ -2,13 +2,12 @@ import Pokemon from "./pokemon";
|
||||
import { Stat } from "./pokemon-stat";
|
||||
import { Species } from "./species";
|
||||
|
||||
export enum SpeciesWildEvolutionRate {
|
||||
INSTANT,
|
||||
FAST,
|
||||
export enum SpeciesWildEvolutionDelay {
|
||||
NONE,
|
||||
SHORT,
|
||||
MEDIUM,
|
||||
SLOW,
|
||||
VERY_SLOW,
|
||||
TAG_NONE
|
||||
LONG,
|
||||
VERY_LONG
|
||||
}
|
||||
|
||||
export class SpeciesEvolution {
|
||||
@@ -16,14 +15,14 @@ export class SpeciesEvolution {
|
||||
public level: integer;
|
||||
public item: string;
|
||||
public condition: SpeciesEvolutionCondition | string;
|
||||
public wildRate: SpeciesWildEvolutionRate;
|
||||
public wildDelay: SpeciesWildEvolutionDelay;
|
||||
|
||||
constructor(speciesId: Species, level: integer, item: string, condition: SpeciesEvolutionCondition | string, wildRate?: SpeciesWildEvolutionRate) {
|
||||
constructor(speciesId: Species, level: integer, item: string, condition: SpeciesEvolutionCondition | string, wildDelay?: SpeciesWildEvolutionDelay) {
|
||||
this.speciesId = speciesId;
|
||||
this.level = level;
|
||||
this.item = item;
|
||||
this.condition = condition;
|
||||
this.wildRate = wildRate || SpeciesWildEvolutionRate.INSTANT;
|
||||
this.wildDelay = wildDelay || SpeciesWildEvolutionDelay.NONE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,7 +345,7 @@ export const pokemonEvolutions = {
|
||||
],
|
||||
[Species.KIRLIA]: [
|
||||
new SpeciesEvolution(Species.GARDEVOIR, 30, null, new SpeciesEvolutionCondition((p: Pokemon) => !p.gender, true)),
|
||||
new SpeciesEvolution(Species.GALLADE, 1, "Dawn Stone", new SpeciesEvolutionCondition((p: Pokemon) => p.gender, true), SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.GALLADE, 1, "Dawn Stone", new SpeciesEvolutionCondition((p: Pokemon) => p.gender, true), SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.SURSKIT]: [
|
||||
new SpeciesEvolution(Species.MASQUERAIN, 22, null, null)
|
||||
@@ -435,7 +434,7 @@ export const pokemonEvolutions = {
|
||||
],
|
||||
[Species.SNORUNT]: [
|
||||
new SpeciesEvolution(Species.GLALIE, 42, null, null),
|
||||
new SpeciesEvolution(Species.FROSLASS, 1, "Dawn Stone", new SpeciesEvolutionCondition((p: Pokemon) => !p.gender, true), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.FROSLASS, 1, "Dawn Stone", new SpeciesEvolutionCondition((p: Pokemon) => !p.gender, true), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.SPHEAL]: [
|
||||
new SpeciesEvolution(Species.SEALEO, 32, null, null)
|
||||
@@ -726,210 +725,210 @@ export const pokemonEvolutions = {
|
||||
new SpeciesEvolution(Species.VOLCARONA, 59, null, null)
|
||||
],
|
||||
[Species.PIKACHU]: [
|
||||
new SpeciesEvolution(Species.RAICHU, 1, "Thunder Stone", null)
|
||||
new SpeciesEvolution(Species.RAICHU, 1, "Thunder Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.NIDORINA]: [
|
||||
new SpeciesEvolution(Species.NIDOQUEEN, 1, "Moon Stone", null)
|
||||
new SpeciesEvolution(Species.NIDOQUEEN, 1, "Moon Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.NIDORINO]: [
|
||||
new SpeciesEvolution(Species.NIDOKING, 1, "Moon Stone", null)
|
||||
new SpeciesEvolution(Species.NIDOKING, 1, "Moon Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.CLEFAIRY]: [
|
||||
new SpeciesEvolution(Species.CLEFABLE, 1, "Moon Stone", null)
|
||||
new SpeciesEvolution(Species.CLEFABLE, 1, "Moon Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.VULPIX]: [
|
||||
new SpeciesEvolution(Species.NINETALES, 1, "Fire Stone", null)
|
||||
new SpeciesEvolution(Species.NINETALES, 1, "Fire Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.JIGGLYPUFF]: [
|
||||
new SpeciesEvolution(Species.WIGGLYTUFF, 1, "Moon Stone", null)
|
||||
new SpeciesEvolution(Species.WIGGLYTUFF, 1, "Moon Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.GLOOM]: [
|
||||
new SpeciesEvolution(Species.VILEPLUME, 1, "Leaf Stone", null),
|
||||
new SpeciesEvolution(Species.BELLOSSOM, 1, "Sun Stone", null)
|
||||
new SpeciesEvolution(Species.VILEPLUME, 1, "Leaf Stone", null, SpeciesWildEvolutionDelay.LONG),
|
||||
new SpeciesEvolution(Species.BELLOSSOM, 1, "Sun Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.GROWLITHE]: [
|
||||
new SpeciesEvolution(Species.ARCANINE, 1, "Fire Stone", null)
|
||||
new SpeciesEvolution(Species.ARCANINE, 1, "Fire Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.POLIWHIRL]: [
|
||||
new SpeciesEvolution(Species.POLIWRATH, 1, "Water Stone", null, SpeciesWildEvolutionRate.SLOW),
|
||||
new SpeciesEvolution(Species.POLITOED, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* King's rock*/), SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.POLIWRATH, 1, "Water Stone", null, SpeciesWildEvolutionDelay.LONG),
|
||||
new SpeciesEvolution(Species.POLITOED, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* King's rock*/), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.WEEPINBELL]: [
|
||||
new SpeciesEvolution(Species.VICTREEBEL, 1, "Leaf Stone", null)
|
||||
new SpeciesEvolution(Species.VICTREEBEL, 1, "Leaf Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.MAGNETON]: [
|
||||
new SpeciesEvolution(Species.MAGNEZONE, 1, "Thunder Stone", null)
|
||||
new SpeciesEvolution(Species.MAGNEZONE, 1, "Thunder Stone", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.SHELLDER]: [
|
||||
new SpeciesEvolution(Species.CLOYSTER, 1, "Water Stone", null)
|
||||
new SpeciesEvolution(Species.CLOYSTER, 1, "Water Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.EXEGGCUTE]: [
|
||||
new SpeciesEvolution(Species.EXEGGUTOR, 1, "Leaf Stone", null)
|
||||
new SpeciesEvolution(Species.EXEGGUTOR, 1, "Leaf Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.STARYU]: [
|
||||
new SpeciesEvolution(Species.STARMIE, 1, "Water Stone", null)
|
||||
new SpeciesEvolution(Species.STARMIE, 1, "Water Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.EEVEE]: [
|
||||
new SpeciesEvolution(Species.ESPEON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 /* daytime */), SpeciesWildEvolutionRate.MEDIUM),
|
||||
new SpeciesEvolution(Species.UMBREON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 /* nighttime */), SpeciesWildEvolutionRate.MEDIUM),
|
||||
new SpeciesEvolution(Species.VAPOREON, 1, "Water Stone", null, SpeciesWildEvolutionRate.MEDIUM),
|
||||
new SpeciesEvolution(Species.JOLTEON, 1, "Thunder Stone", null, SpeciesWildEvolutionRate.MEDIUM),
|
||||
new SpeciesEvolution(Species.FLAREON, 1, "Fire Stone", null, SpeciesWildEvolutionRate.MEDIUM),
|
||||
new SpeciesEvolution(Species.LEAFEON, 1, "Leaf Stone", null, SpeciesWildEvolutionRate.MEDIUM),
|
||||
new SpeciesEvolution(Species.GLACEON, 1, "Ice Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.ESPEON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 /* daytime */), SpeciesWildEvolutionDelay.MEDIUM),
|
||||
new SpeciesEvolution(Species.UMBREON, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 /* nighttime */), SpeciesWildEvolutionDelay.MEDIUM),
|
||||
new SpeciesEvolution(Species.VAPOREON, 1, "Water Stone", null, SpeciesWildEvolutionDelay.MEDIUM),
|
||||
new SpeciesEvolution(Species.JOLTEON, 1, "Thunder Stone", null, SpeciesWildEvolutionDelay.MEDIUM),
|
||||
new SpeciesEvolution(Species.FLAREON, 1, "Fire Stone", null, SpeciesWildEvolutionDelay.MEDIUM),
|
||||
new SpeciesEvolution(Species.LEAFEON, 1, "Leaf Stone", null, SpeciesWildEvolutionDelay.MEDIUM),
|
||||
new SpeciesEvolution(Species.GLACEON, 1, "Ice Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.TOGETIC]: [
|
||||
new SpeciesEvolution(Species.TOGEKISS, 1, "Shiny Stone", null, SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.TOGEKISS, 1, "Shiny Stone", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.SUNKERN]: [
|
||||
new SpeciesEvolution(Species.SUNFLORA, 1, "Sun Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.SUNFLORA, 1, "Sun Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.MURKROW]: [
|
||||
new SpeciesEvolution(Species.HONCHKROW, 1, "Dusk Stone", null, SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.HONCHKROW, 1, "Dusk Stone", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.MISDREAVUS]: [
|
||||
new SpeciesEvolution(Species.MISMAGIUS, 1, "Dusk Stone", null, SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.MISMAGIUS, 1, "Dusk Stone", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.LOMBRE]: [
|
||||
new SpeciesEvolution(Species.LUDICOLO, 1, "Water Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.LUDICOLO, 1, "Water Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.NUZLEAF]: [
|
||||
new SpeciesEvolution(Species.SHIFTRY, 1, "Leaf Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.SHIFTRY, 1, "Leaf Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.SKITTY]: [
|
||||
new SpeciesEvolution(Species.DELCATTY, 1, "Moon Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.DELCATTY, 1, "Moon Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.ROSELIA]: [
|
||||
new SpeciesEvolution(Species.ROSERADE, 1, "Shiny Stone", null, SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.ROSERADE, 1, "Shiny Stone", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.PANSAGE]: [
|
||||
new SpeciesEvolution(Species.SIMISAGE, 1, "Leaf Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.SIMISAGE, 1, "Leaf Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.PANSEAR]: [
|
||||
new SpeciesEvolution(Species.SIMISEAR, 1, "Fire Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.SIMISEAR, 1, "Fire Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.PANPOUR]: [
|
||||
new SpeciesEvolution(Species.SIMIPOUR, 1, "Water Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.SIMIPOUR, 1, "Water Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.MUNNA]: [
|
||||
new SpeciesEvolution(Species.MUSHARNA, 1, "Moon Stone", null, SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.MUSHARNA, 1, "Moon Stone", null, SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.COTTONEE]: [
|
||||
new SpeciesEvolution(Species.WHIMSICOTT, 1, "Sun Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.WHIMSICOTT, 1, "Sun Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.PETILIL]: [
|
||||
new SpeciesEvolution(Species.LILLIGANT, 1, "Sun Stone", null, SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.LILLIGANT, 1, "Sun Stone", null, SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.MINCCINO]: [
|
||||
new SpeciesEvolution(Species.CINCCINO, 1, "Shiny Stone", null, SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.CINCCINO, 1, "Shiny Stone", null, SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.EELEKTRIK]: [
|
||||
new SpeciesEvolution(Species.EELEKTROSS, 1, "Thunder Stone", null, SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.EELEKTROSS, 1, "Thunder Stone", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.LAMPENT]: [
|
||||
new SpeciesEvolution(Species.CHANDELURE, 1, "Dusk Stone", null, SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.CHANDELURE, 1, "Dusk Stone", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.KADABRA]: [
|
||||
new SpeciesEvolution(Species.ALAKAZAM, 1, "Link Cable", null, SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.ALAKAZAM, 1, "Link Cable", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.MACHOKE]: [
|
||||
new SpeciesEvolution(Species.MACHAMP, 1, "Link Cable", null, SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.MACHAMP, 1, "Link Cable", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.GRAVELER]: [
|
||||
new SpeciesEvolution(Species.GOLEM, 1, "Link Cable", null, SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.GOLEM, 1, "Link Cable", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.SLOWPOKE]: [
|
||||
new SpeciesEvolution(Species.SLOWKING, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* King's rock*/), SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.SLOWKING, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* King's rock*/), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.HAUNTER]: [
|
||||
new SpeciesEvolution(Species.GENGAR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true), SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.GENGAR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.ONIX]: [
|
||||
new SpeciesEvolution(Species.STEELIX, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Metal coat*/ ), SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.STEELIX, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Metal coat*/ ), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.RHYDON]: [
|
||||
new SpeciesEvolution(Species.RHYPERIOR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Protector */), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.RHYPERIOR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Protector */), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.SEADRA]: [
|
||||
new SpeciesEvolution(Species.KINGDRA, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Dragon scale*/), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.KINGDRA, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Dragon scale*/), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.SCYTHER]: [
|
||||
new SpeciesEvolution(Species.SCIZOR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Metal coat*/), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.SCIZOR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Metal coat*/), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.ELECTABUZZ]: [
|
||||
new SpeciesEvolution(Species.ELECTIVIRE, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Electirizer*/), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.ELECTIVIRE, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Electirizer*/), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.MAGMAR]: [
|
||||
new SpeciesEvolution(Species.MAGMORTAR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Magmarizer*/), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.MAGMORTAR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Magmarizer*/), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.PORYGON]: [
|
||||
new SpeciesEvolution(Species.PORYGON2, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /*Upgrade*/), SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.PORYGON2, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /*Upgrade*/), SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.PORYGON2]: [
|
||||
new SpeciesEvolution(Species.PORYGON_Z, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Dubious disc*/), SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.PORYGON_Z, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Dubious disc*/), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.FEEBAS]: [
|
||||
new SpeciesEvolution(Species.MILOTIC, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Prism scale*/), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.MILOTIC, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Prism scale*/), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.DUSCLOPS]: [
|
||||
new SpeciesEvolution(Species.DUSKNOIR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Reaper cloth*/), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.DUSKNOIR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Reaper cloth*/), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.CLAMPERL]: [
|
||||
new SpeciesEvolution(Species.HUNTAIL, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Deep sea tooth*/), SpeciesWildEvolutionRate.MEDIUM),
|
||||
new SpeciesEvolution(Species.GOREBYSS, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Deep sea scale*/), SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.HUNTAIL, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Deep sea tooth*/), SpeciesWildEvolutionDelay.MEDIUM),
|
||||
new SpeciesEvolution(Species.GOREBYSS, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Deep sea scale*/), SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.BOLDORE]: [
|
||||
new SpeciesEvolution(Species.GIGALITH, 1, "Link Cable", null, SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.GIGALITH, 1, "Link Cable", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.GURDURR]: [
|
||||
new SpeciesEvolution(Species.CONKELDURR, 1, "Link Cable", null, SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.CONKELDURR, 1, "Link Cable", null, SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.KARRABLAST]: [
|
||||
new SpeciesEvolution(Species.ESCAVALIER, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Trade with shelmet??*/), SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.ESCAVALIER, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Trade with shelmet??*/), SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.SHELMET]: [
|
||||
new SpeciesEvolution(Species.ACCELGOR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Trade with karrablast??*/), SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.ACCELGOR, 1, "Link Cable", new SpeciesEvolutionCondition((p: Pokemon) => true /* Trade with karrablast??*/), SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.PICHU]: [
|
||||
new SpeciesEvolution(Species.PIKACHU, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.PIKACHU, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.CLEFFA]: [
|
||||
new SpeciesEvolution(Species.CLEFAIRY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.CLEFAIRY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.IGGLYBUFF]: [
|
||||
new SpeciesEvolution(Species.JIGGLYPUFF, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.JIGGLYPUFF, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.GOLBAT]: [
|
||||
new SpeciesEvolution(Species.CROBAT, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.CROBAT, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.CHANSEY]: [
|
||||
new SpeciesEvolution(Species.BLISSEY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.BLISSEY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.VERY_LONG)
|
||||
],
|
||||
[Species.MUNCHLAX]: [
|
||||
new SpeciesEvolution(Species.SNORLAX, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.VERY_SLOW)
|
||||
new SpeciesEvolution(Species.SNORLAX, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.LONG)
|
||||
],
|
||||
[Species.TOGEPI]: [
|
||||
new SpeciesEvolution(Species.TOGETIC, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.TOGETIC, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.AZURILL]: [
|
||||
new SpeciesEvolution(Species.MARILL, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.MARILL, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.BUDEW]: [
|
||||
new SpeciesEvolution(Species.ROSELIA, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount > 10 /* daytime */), SpeciesWildEvolutionRate.FAST)
|
||||
new SpeciesEvolution(Species.ROSELIA, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount > 10 /* daytime */), SpeciesWildEvolutionDelay.SHORT)
|
||||
],
|
||||
[Species.CHINGLING]: [
|
||||
new SpeciesEvolution(Species.CHIMECHO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 /* nighttime */), SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.CHIMECHO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 /* nighttime */), SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.BUNEARY]: [
|
||||
new SpeciesEvolution(Species.LOPUNNY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.LOPUNNY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.RIOLU]: [
|
||||
new SpeciesEvolution(Species.LUCARIO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 /* daytime */), SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.LUCARIO, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10 /* daytime */), SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.WOOBAT]: [
|
||||
new SpeciesEvolution(Species.SWOOBAT, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.MEDIUM)
|
||||
new SpeciesEvolution(Species.SWOOBAT, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.MEDIUM)
|
||||
],
|
||||
[Species.SWADLOON]: [
|
||||
new SpeciesEvolution(Species.LEAVANNY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionRate.SLOW)
|
||||
new SpeciesEvolution(Species.LEAVANNY, 1, null, new SpeciesEvolutionCondition((p: Pokemon) => p.winCount >= 10), SpeciesWildEvolutionDelay.LONG)
|
||||
]
|
||||
}
|
||||
};
|
||||
Reference in new issue
Block a user