Add endless mode

Add endless mode; prevent stat booster items from being transferred or stolen
This commit is contained in:
Flashfyre committed 2023-05-31 19:54:57 -04:00
1 parent ac9814e665
commit 9faa489f19
16 files changed
+241 -112

No files matched your search

+3 -3
View File
@@ -11,6 +11,7 @@ import * as Utils from '../utils';
import { TempBattleStat, getTempBattleStatBoosterItemName, getTempBattleStatName } from '../data/temp-battle-stat';
import { BerryType, getBerryEffectDescription, getBerryName } from '../data/berry';
import { Unlockables } from '../system/unlockables';
import { GameMode } from '../game-mode';
type Modifier = Modifiers.Modifier;
@@ -694,7 +695,7 @@ const modifierPool = {
const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMove().pp - m.ppUsed) <= 5).length).length, 3);
return thresholdPartyMemberCount;
}),
new WeightedModifierType(modifierTypes.MAP, 1),
new WeightedModifierType(modifierTypes.MAP, (party: Pokemon[]) => party[0].scene.gameMode === GameMode.CLASSIC ? 1 : 0),
new WeightedModifierType(modifierTypes.TM_GREAT, 2),
new WeightedModifierType(modifierTypes.EXP_SHARE, 1),
new WeightedModifierType(modifierTypes.BASE_STAT_BOOSTER, 3)
@@ -745,8 +746,7 @@ const enemyModifierPool = {
new WeightedModifierType(modifierTypes.SHELL_BELL, 1),
].map(m => { m.setTier(ModifierTier.ULTRA); return m; }),
[ModifierTier.MASTER]: [
new WeightedModifierType(modifierTypes.GOLDEN_EGG, 1),
new WeightedModifierType(modifierTypes.MINI_BLACK_HOLE, 1)
new WeightedModifierType(modifierTypes.GOLDEN_EGG, 1)
].map(m => { m.setTier(ModifierTier.MASTER); return m; })
};
+15 -1
View File
@@ -283,6 +283,10 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier {
return super.shouldApply(args) && args.length && args[0] instanceof Pokemon && (this.pokemonId === -1 || (args[0] as Pokemon).id === this.pokemonId);
}
getTransferrable(withinParty: boolean) {
return true;
}
getIcon(scene: BattleScene, forSummary?: boolean): Phaser.GameObjects.Container {
const container = !forSummary ? scene.add.container(0, 0) : super.getIcon(scene);
@@ -357,6 +361,10 @@ export class PokemonBaseStatModifier extends PokemonHeldItemModifier {
return true;
}
getTransferrable(_withinParty: boolean): boolean {
return false;
}
}
export class AttackTypeBoosterModifier extends PokemonHeldItemModifier {
@@ -1014,9 +1022,11 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier {
if (!transferredItemCount)
return false;
const withinParty = pokemon.isPlayer() === targetPokemon.isPlayer();
const transferredModifierTypes: ModifierTypes.ModifierType[] = [];
const itemModifiers = pokemon.scene.findModifiers(m => m instanceof PokemonHeldItemModifier
&& (m as PokemonHeldItemModifier).pokemonId === targetPokemon.id && !m.matchType(this), targetPokemon.isPlayer()) as PokemonHeldItemModifier[];
&& (m as PokemonHeldItemModifier).pokemonId === targetPokemon.id && m.getTransferrable(withinParty), targetPokemon.isPlayer()) as PokemonHeldItemModifier[];
for (let i = 0; i < transferredItemCount; i++) {
if (!itemModifiers.length)
@@ -1053,6 +1063,10 @@ export class TurnHeldItemTransferModifier extends HeldItemTransferModifier {
return new TurnHeldItemTransferModifier(this.type, this.pokemonId, this.stackCount);
}
getTransferrable(withinParty: boolean) {
return withinParty;
}
getTransferredItemCount(): integer {
return this.getStackCount();
}