Add shared movesets for spliced Pokemon
This commit is contained in:
parent
d0a60a7f86
commit
1236cb948d
|
@ -3476,10 +3476,10 @@ export function initMoves() {
|
|||
new AttackMove(Moves.STORED_POWER, "Stored Power (N)", Type.PSYCHIC, MoveCategory.SPECIAL, 20, 100, 10, 41, "Power increases when user's stats have been raised.", -1, 0, 5),
|
||||
new SelfStatusMove(Moves.QUICK_GUARD, "Quick Guard (N)", Type.FIGHTING, -1, 15, -1, "Protects the user's team from high-priority moves.", -1, 3, 5)
|
||||
.target(MoveTarget.USER_SIDE),
|
||||
new StatusMove(Moves.ALLY_SWITCH, "Ally Switch (N)", Type.PSYCHIC, -1, 15, -1, "User switches with opposite teammate.", -1, 0, 5)
|
||||
new StatusMove(Moves.ALLY_SWITCH, "Ally Switch (N)", Type.PSYCHIC, -1, 15, -1, "User switches with opposite teammate.", -1, 2, 5)
|
||||
.ignoresProtect()
|
||||
.target(MoveTarget.USER), // TODO
|
||||
new AttackMove(Moves.SCALD, "Scald", Type.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, "May burn opponent.", 30, 1, 5)
|
||||
new AttackMove(Moves.SCALD, "Scald", Type.WATER, MoveCategory.SPECIAL, 80, 100, 15, -1, "May burn opponent.", 30, 0, 5)
|
||||
.attr(StatusEffectAttr, StatusEffect.BURN),
|
||||
new SelfStatusMove(Moves.SHELL_SMASH, "Shell Smash", Type.NORMAL, -1, 15, -1, "Sharply raises user's Attack, Special Attack and Speed but lowers Defense and Special Defense.", -1, 0, 5)
|
||||
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], 2, true)
|
||||
|
|
|
@ -77,8 +77,8 @@ export abstract class PokemonSpeciesForm {
|
|||
|
||||
getLevelMoves(): LevelMoves {
|
||||
if (pokemonSpeciesFormLevelMoves.hasOwnProperty(this.speciesId) && pokemonSpeciesFormLevelMoves[this.speciesId].hasOwnProperty(this.formIndex))
|
||||
return pokemonSpeciesFormLevelMoves[this.speciesId][this.formIndex];
|
||||
return pokemonSpeciesLevelMoves[this.speciesId];
|
||||
return pokemonSpeciesFormLevelMoves[this.speciesId][this.formIndex].slice(0);
|
||||
return pokemonSpeciesLevelMoves[this.speciesId].slice(0);
|
||||
}
|
||||
|
||||
isObtainable() {
|
||||
|
|
|
@ -29,7 +29,7 @@ import { Mode } from './ui/ui';
|
|||
import PartyUiHandler, { PartyOption, PartyUiMode } from './ui/party-ui-handler';
|
||||
import SoundFade from 'phaser3-rex-plugins/plugins/soundfade';
|
||||
import { GameMode } from './game-mode';
|
||||
import { pokemonFormLevelMoves } from './data/pokemon-level-moves';
|
||||
import { LevelMoves, pokemonFormLevelMoves } from './data/pokemon-level-moves';
|
||||
|
||||
export enum FieldPosition {
|
||||
CENTER,
|
||||
|
@ -539,10 +539,27 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||
|
||||
getLevelMoves(startingLevel?: integer): Moves[] {
|
||||
const ret: Moves[] = [];
|
||||
const levelMoves = this.getSpeciesForm().getLevelMoves();
|
||||
if (levelMoves) {
|
||||
if (!startingLevel)
|
||||
let levelMoves = this.getSpeciesForm().getLevelMoves();
|
||||
if (!startingLevel)
|
||||
startingLevel = this.level;
|
||||
if (this.fusionSpecies) {
|
||||
const fusionLevelMoves = this.getFusionSpeciesForm().getLevelMoves();
|
||||
const newLevelMoves: LevelMoves = [];
|
||||
for (let l = startingLevel; l <= this.level; l++) {
|
||||
while (levelMoves.length && levelMoves[0][0] === l) {
|
||||
const levelMove = levelMoves.shift();
|
||||
if (!newLevelMoves.find(lm => lm[1] === levelMove[1]))
|
||||
newLevelMoves.push(levelMove);
|
||||
}
|
||||
while (fusionLevelMoves.length && fusionLevelMoves[0][0] === l) {
|
||||
const fusionLevelMove = fusionLevelMoves.shift();
|
||||
if (!newLevelMoves.find(lm => lm[1] === fusionLevelMove[1]))
|
||||
newLevelMoves.push(fusionLevelMove);
|
||||
}
|
||||
}
|
||||
levelMoves = newLevelMoves;
|
||||
}
|
||||
if (levelMoves) {
|
||||
for (let lm of levelMoves) {
|
||||
const level = lm[0];
|
||||
if (level < startingLevel)
|
||||
|
@ -1160,7 +1177,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||
|
||||
// Failsafe
|
||||
this.scene.time.delayedCall(Utils.fixedInt(3000), () => {
|
||||
console.log(faintCryTimer)
|
||||
if (!faintCryTimer || !this.scene)
|
||||
return;
|
||||
if (cry?.isPlaying)
|
||||
|
@ -1357,11 +1373,11 @@ export class PlayerPokemon extends Pokemon {
|
|||
const moveId = parseInt(tm) as Moves;
|
||||
for (let p of tmSpecies[tm]) {
|
||||
if (Array.isArray(p)) {
|
||||
if (p[0] === this.species.speciesId) {
|
||||
if (p[0] === this.species.speciesId || (this.fusionSpecies && p[0] === this.fusionSpecies.speciesId)) {
|
||||
this.compatibleTms.push(moveId);
|
||||
break;
|
||||
}
|
||||
} else if (p === this.species.speciesId) {
|
||||
} else if (p === this.species.speciesId || (this.fusionSpecies && p === this.fusionSpecies.speciesId)) {
|
||||
this.compatibleTms.push(moveId);
|
||||
break;
|
||||
}
|
||||
|
@ -1440,6 +1456,7 @@ export class PlayerPokemon extends Pokemon {
|
|||
}
|
||||
|
||||
this.calculateStats();
|
||||
this.generateCompatibleTms();
|
||||
this.updateInfo(true).then(() => {
|
||||
const fusedPartyMemberIndex = this.scene.getParty().indexOf(pokemon);
|
||||
const fusedPartyMemberHeldModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier
|
||||
|
@ -1466,6 +1483,7 @@ export class PlayerPokemon extends Pokemon {
|
|||
this.fusionGender = 0;
|
||||
|
||||
this.calculateStats();
|
||||
this.generateCompatibleTms();
|
||||
this.updateInfo(true).then(() => resolve());
|
||||
});
|
||||
}
|
||||
|
|
|
@ -566,6 +566,7 @@ export default class PartyUiHandler extends MessageUiHandler {
|
|||
|
||||
for (let o = optionStartIndex; o < optionEndIndex; o++) {
|
||||
const option = this.options[this.options.length - (o + 1)];
|
||||
let altText = false;
|
||||
let optionName: string;
|
||||
if ((this.partyUiMode !== PartyUiMode.REMEMBER_MOVE_MODIFIER && (this.partyUiMode !== PartyUiMode.MODIFIER_TRANSFER || this.transferMode)) || option === PartyOption.CANCEL) {
|
||||
switch (option) {
|
||||
|
@ -586,6 +587,7 @@ export default class PartyUiHandler extends MessageUiHandler {
|
|||
else if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER) {
|
||||
const move = learnableLevelMoves[option];
|
||||
optionName = allMoves[move].name;
|
||||
altText = !!pokemon.getSpeciesForm().getLevelMoves().find(plm => plm[1] === move);
|
||||
} else {
|
||||
const itemModifier = itemModifiers[option];
|
||||
optionName = itemModifier.type.name;
|
||||
|
@ -595,6 +597,10 @@ export default class PartyUiHandler extends MessageUiHandler {
|
|||
|
||||
const yCoord = -6 - 16 * o;
|
||||
const optionText = addTextObject(this.scene, -79 - (wideOptions ? 50 : 0), yCoord - 16, optionName, TextStyle.WINDOW);
|
||||
if (altText) {
|
||||
optionText.setColor('#40c8f8');
|
||||
optionText.setShadowColor('#006090')
|
||||
}
|
||||
optionText.setOrigin(0, 0);
|
||||
|
||||
this.optionsContainer.add(optionText);
|
||||
|
|
Loading…
Reference in New Issue