mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-15 21:02:18 +02:00
Transfer held items from released Pokemon
This commit is contained in:
parent
0aca9aed9c
commit
46870f1288
@ -465,6 +465,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
return this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === this.id, this.isPlayer()) as PokemonHeldItemModifier[];
|
return this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === this.id, this.isPlayer()) as PokemonHeldItemModifier[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getTransferrableHeldItems(): PokemonHeldItemModifier[] {
|
||||||
|
return this.getHeldItems().filter(m => m.getTransferrable(true));
|
||||||
|
}
|
||||||
|
|
||||||
updateScale(): void {
|
updateScale(): void {
|
||||||
this.setScale(this.getSpriteScale());
|
this.setScale(this.getSpriteScale());
|
||||||
}
|
}
|
||||||
|
@ -4455,8 +4455,7 @@ export class SelectModifierPhase extends BattlePhase {
|
|||||||
this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.MODIFIER_TRANSFER, -1, (fromSlotIndex: integer, itemIndex: integer, toSlotIndex: integer) => {
|
this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.MODIFIER_TRANSFER, -1, (fromSlotIndex: integer, itemIndex: integer, toSlotIndex: integer) => {
|
||||||
if (toSlotIndex !== undefined && fromSlotIndex < 6 && toSlotIndex < 6 && fromSlotIndex !== toSlotIndex && itemIndex > -1) {
|
if (toSlotIndex !== undefined && fromSlotIndex < 6 && toSlotIndex < 6 && fromSlotIndex !== toSlotIndex && itemIndex > -1) {
|
||||||
this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)).then(() => {
|
this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)).then(() => {
|
||||||
const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier
|
const itemModifiers = party[fromSlotIndex].getTransferrableHeldItems();
|
||||||
&& (m as PokemonHeldItemModifier).getTransferrable(true) && (m as PokemonHeldItemModifier).pokemonId === party[fromSlotIndex].id) as PokemonHeldItemModifier[];
|
|
||||||
const itemModifier = itemModifiers[itemIndex];
|
const itemModifier = itemModifiers[itemIndex];
|
||||||
this.scene.tryTransferHeldItemModifier(itemModifier, party[toSlotIndex], true, true);
|
this.scene.tryTransferHeldItemModifier(itemModifier, party[toSlotIndex], true, true);
|
||||||
});
|
});
|
||||||
|
@ -246,8 +246,7 @@ export default class PartyUiHandler extends MessageUiHandler {
|
|||||||
filterResult = this.moveSelectFilter(pokemon.moveset[this.optionsCursor]);
|
filterResult = this.moveSelectFilter(pokemon.moveset[this.optionsCursor]);
|
||||||
} else {
|
} else {
|
||||||
const transferPokemon = this.scene.getParty()[this.transferCursor];
|
const transferPokemon = this.scene.getParty()[this.transferCursor];
|
||||||
const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier
|
const itemModifiers = transferPokemon.getTransferrableHeldItems();
|
||||||
&& (m as PokemonHeldItemModifier).getTransferrable(true) && (m as PokemonHeldItemModifier).pokemonId === transferPokemon.id) as PokemonHeldItemModifier[];
|
|
||||||
filterResult = (this.selectFilter as PokemonModifierTransferSelectFilter)(pokemon, itemModifiers[this.transferOptionCursor]);
|
filterResult = (this.selectFilter as PokemonModifierTransferSelectFilter)(pokemon, itemModifiers[this.transferOptionCursor]);
|
||||||
}
|
}
|
||||||
if (filterResult === null) {
|
if (filterResult === null) {
|
||||||
@ -548,8 +547,7 @@ export default class PartyUiHandler extends MessageUiHandler {
|
|||||||
: null;
|
: null;
|
||||||
|
|
||||||
const itemModifiers = this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER
|
const itemModifiers = this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER
|
||||||
? this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier
|
? pokemon.getTransferrableHeldItems()
|
||||||
&& (m as PokemonHeldItemModifier).getTransferrable(true) && (m as PokemonHeldItemModifier).pokemonId === pokemon.id) as PokemonHeldItemModifier[]
|
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (this.options.length) {
|
if (this.options.length) {
|
||||||
@ -732,15 +730,24 @@ export default class PartyUiHandler extends MessageUiHandler {
|
|||||||
this.clearPartySlots();
|
this.clearPartySlots();
|
||||||
this.scene.removePartyMemberModifiers(slotIndex);
|
this.scene.removePartyMemberModifiers(slotIndex);
|
||||||
const releasedPokemon = this.scene.getParty().splice(slotIndex, 1)[0];
|
const releasedPokemon = this.scene.getParty().splice(slotIndex, 1)[0];
|
||||||
|
const releasedItems = releasedPokemon.getTransferrableHeldItems();
|
||||||
|
|
||||||
releasedPokemon.destroy();
|
releasedPokemon.destroy();
|
||||||
this.populatePartySlots();
|
this.populatePartySlots();
|
||||||
|
|
||||||
if (this.cursor >= this.scene.getParty().length)
|
if (this.cursor >= this.scene.getParty().length)
|
||||||
this.setCursor(this.cursor - 1);
|
this.setCursor(this.cursor - 1);
|
||||||
if (this.partyUiMode === PartyUiMode.RELEASE) {
|
if (this.partyUiMode === PartyUiMode.RELEASE) {
|
||||||
const selectCallback = this.selectCallback;
|
const selectCallback = this.selectCallback;
|
||||||
this.selectCallback = null;
|
this.selectCallback = null;
|
||||||
selectCallback(this.cursor, PartyOption.RELEASE);
|
selectCallback(this.cursor, PartyOption.RELEASE);
|
||||||
|
if (releasedItems && releasedItems.length > 0) {
|
||||||
|
const newPokemon = this.scene.getParty()[this.scene.getParty().length - 1];
|
||||||
|
releasedItems.forEach(i => this.scene.tryTransferHeldItemModifier(i, newPokemon, true, false));
|
||||||
|
this.showText("Items were transferred beep boop");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.showText(null, 0);
|
this.showText(null, 0);
|
||||||
}, null, true);
|
}, null, true);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user