Make trainer switch AI aware of arena traps
This commit is contained in:
1 parent
7ddd834786
commit
203ba1646d
7 files changed
+47
-11
No files matched your search
+9
-1
@@ -488,6 +488,14 @@ export class Arena {
|
||||
: this.tags.find(t => t instanceof tagType && (side === ArenaTagSide.BOTH || t.side === ArenaTagSide.BOTH || t.side === side));
|
||||
}
|
||||
|
||||
findTags(tagPredicate: (t: ArenaTag) => boolean): ArenaTag[] {
|
||||
return this.findTagsOnSide(tagPredicate, ArenaTagSide.BOTH);
|
||||
}
|
||||
|
||||
findTagsOnSide(tagPredicate: (t: ArenaTag) => boolean, side: ArenaTagSide): ArenaTag[] {
|
||||
return this.tags.filter(t => tagPredicate && (side === ArenaTagSide.BOTH || t.side === ArenaTagSide.BOTH || t.side === side));
|
||||
}
|
||||
|
||||
lapseTags(): void {
|
||||
this.tags.filter(t => !(t.lapse(this))).forEach(t => {
|
||||
t.onRemove(this);
|
||||
@@ -662,7 +670,7 @@ export class ArenaBase extends Phaser.GameObjects.Container {
|
||||
const hasProps = getBiomeHasProps(biome);
|
||||
const biomeKey = getBiomeKey(biome);
|
||||
const baseKey = `${biomeKey}_${this.player ? 'a' : 'b'}`;
|
||||
|
||||
|
||||
this.base.setTexture(baseKey);
|
||||
|
||||
if (this.base.texture.frameTotal > 1) {
|
||||
|
||||
@@ -8,6 +8,8 @@ import { EnemyPokemon } from "./pokemon";
|
||||
import * as Utils from "../utils";
|
||||
import { PersistentModifier } from "../modifier/modifier";
|
||||
import { trainerNamePools } from "../data/trainer-names";
|
||||
import { ArenaTagType } from "#app/data/enums/arena-tag-type";
|
||||
import { ArenaTag, ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag";
|
||||
|
||||
export enum TrainerVariant {
|
||||
DEFAULT,
|
||||
@@ -272,7 +274,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
||||
return ret;
|
||||
}
|
||||
|
||||
getPartyMemberMatchupScores(trainerSlot: TrainerSlot = TrainerSlot.NONE): [integer, integer][] {
|
||||
getPartyMemberMatchupScores(trainerSlot: TrainerSlot = TrainerSlot.NONE, forSwitch: boolean = false): [integer, integer][] {
|
||||
if (trainerSlot && !this.isDouble())
|
||||
trainerSlot = TrainerSlot.NONE;
|
||||
|
||||
@@ -288,6 +290,8 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
||||
score /= 2;
|
||||
}
|
||||
score /= playerField.length;
|
||||
if (forSwitch && !p.isOnField())
|
||||
this.scene.arena.findTagsOnSide(t => t instanceof ArenaTrapTag, ArenaTagSide.ENEMY).map(t => score *= (t as ArenaTrapTag).getMatchupScoreMultiplier(p));
|
||||
ret = [ party.indexOf(p), score ];
|
||||
return ret;
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user