Add logic to better control enemy trainer party member evolutions
This commit is contained in:
parent
19bea46574
commit
890bf47e26
|
@ -575,7 +575,7 @@ export const modifierTypes = {
|
||||||
EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(false),
|
EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(false),
|
||||||
MEGA_EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(true),
|
MEGA_EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(true),
|
||||||
|
|
||||||
MEGA_BRACELET: () => new ModifierType('Mega Bracelet', 'Allows access to mega stones', (type, _args) => new Modifiers.MegaEvolutionAccessModifier(type)),
|
MEGA_BRACELET: () => new ModifierType('Mega Bracelet', 'Mega stones become available', (type, _args) => new Modifiers.MegaEvolutionAccessModifier(type)),
|
||||||
|
|
||||||
MAP: () => new ModifierType('Map', 'Allows you to choose your destination at a crossroads', (type, _args) => new Modifiers.MapModifier(type)),
|
MAP: () => new ModifierType('Map', 'Allows you to choose your destination at a crossroads', (type, _args) => new Modifiers.MapModifier(type)),
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import BattleScene from "./battle-scene";
|
import BattleScene from "./battle-scene";
|
||||||
|
import { pokemonPrevolutions } from "./data/pokemon-evolutions";
|
||||||
import PokemonSpecies, { getPokemonSpecies } from "./data/pokemon-species";
|
import PokemonSpecies, { getPokemonSpecies } from "./data/pokemon-species";
|
||||||
import { TrainerConfig, TrainerPartyCompoundTemplate, TrainerPartyMemberStrength, TrainerPartyTemplate, TrainerPoolTier, TrainerType, trainerConfigs, trainerPartyTemplates } from "./data/trainer-type";
|
import { TrainerConfig, TrainerPartyCompoundTemplate, TrainerPartyMemberStrength, TrainerPartyTemplate, TrainerPoolTier, TrainerType, trainerConfigs, trainerPartyTemplates } from "./data/trainer-type";
|
||||||
import { EnemyPokemon } from "./pokemon";
|
import { EnemyPokemon } from "./pokemon";
|
||||||
|
@ -146,7 +147,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
||||||
const battle = this.scene.currentBattle;
|
const battle = this.scene.currentBattle;
|
||||||
const template = this.getPartyTemplate();
|
const template = this.getPartyTemplate();
|
||||||
|
|
||||||
let ret: PokemonSpecies;
|
let species: PokemonSpecies;
|
||||||
if (this.config.speciesPools) {
|
if (this.config.speciesPools) {
|
||||||
const tierValue = Utils.randSeedInt(512);
|
const tierValue = Utils.randSeedInt(512);
|
||||||
let tier = tierValue >= 156 ? TrainerPoolTier.COMMON : tierValue >= 32 ? TrainerPoolTier.UNCOMMON : tierValue >= 6 ? TrainerPoolTier.RARE : tierValue >= 1 ? TrainerPoolTier.SUPER_RARE : TrainerPoolTier.ULTRA_RARE
|
let tier = tierValue >= 156 ? TrainerPoolTier.COMMON : tierValue >= 32 ? TrainerPoolTier.UNCOMMON : tierValue >= 6 ? TrainerPoolTier.RARE : tierValue >= 1 ? TrainerPoolTier.SUPER_RARE : TrainerPoolTier.ULTRA_RARE
|
||||||
|
@ -156,14 +157,26 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
||||||
tier--;
|
tier--;
|
||||||
}
|
}
|
||||||
const tierPool = this.config.speciesPools[tier];
|
const tierPool = this.config.speciesPools[tier];
|
||||||
ret = getPokemonSpecies(getPokemonSpecies(Phaser.Math.RND.pick(tierPool)).getSpeciesForLevel(level, true));
|
species = getPokemonSpecies(Phaser.Math.RND.pick(tierPool));
|
||||||
} else
|
} else
|
||||||
ret = getPokemonSpecies(this.scene.randomSpecies(battle.waveIndex, level, false, this.config.speciesFilter).getSpeciesForLevel(level, true));
|
species = this.scene.randomSpecies(battle.waveIndex, level, false, this.config.speciesFilter);
|
||||||
|
|
||||||
if (template.isBalanced(battle.enemyParty.length)) {
|
let ret = getPokemonSpecies(species.getSpeciesForLevel(level, true));
|
||||||
|
let retry = false;
|
||||||
|
|
||||||
|
console.log(ret.getName());
|
||||||
|
|
||||||
|
if (pokemonPrevolutions.hasOwnProperty(species.speciesId) && ret.speciesId !== species.speciesId)
|
||||||
|
retry = true;
|
||||||
|
else if (template.isBalanced(battle.enemyParty.length)) {
|
||||||
const partyMemberTypes = battle.enemyParty.map(p => p.getTypes()).flat();
|
const partyMemberTypes = battle.enemyParty.map(p => p.getTypes()).flat();
|
||||||
if ((attempt || 0) < 10 && (partyMemberTypes.indexOf(ret.type1) > -1 || (ret.type2 !== null && partyMemberTypes.indexOf(ret.type2) > -1)))
|
if (partyMemberTypes.indexOf(ret.type1) > -1 || (ret.type2 !== null && partyMemberTypes.indexOf(ret.type2) > -1))
|
||||||
ret = this.genNewPartyMemberSpecies(level, (attempt || 0) + 1);
|
retry = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retry && (attempt || 0) < 10) {
|
||||||
|
console.log('Rerolling party member...')
|
||||||
|
ret = this.genNewPartyMemberSpecies(level, (attempt || 0) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue