mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-23 00:32:28 +02:00
Partially implement Teraform Zero ability
The functionality of the ability is all there, it just isn't limited to one use per Terastallization yet.
This commit is contained in:
parent
db22354057
commit
81492fb3b1
@ -265,6 +265,52 @@ export class PostTeraFormChangeStatChangeAbAttr extends AbAttr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a specified weather when a Pokemon is form changed via terastallization.
|
||||||
|
*/
|
||||||
|
export class PostTeraFormChangeRemoveWeatherAbAttr extends AbAttr {
|
||||||
|
private weather: WeatherType[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param weather {@linkcode WeatherType[]} - the weather to be removed
|
||||||
|
*/
|
||||||
|
constructor(weather: WeatherType[]) {
|
||||||
|
super(true);
|
||||||
|
|
||||||
|
this.weather = weather;
|
||||||
|
}
|
||||||
|
|
||||||
|
apply(pokemon: Pokemon, passive: boolean, simulated:boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||||
|
if (!simulated) {
|
||||||
|
globalScene.arena.trySetWeather(WeatherType.NONE, true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a specified terrain when a Pokemon is form changed via terastallization.
|
||||||
|
*/
|
||||||
|
export class PostTeraFormChangeRemoveTerrainAbAttr extends AbAttr {
|
||||||
|
private terrain: TerrainType[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param terrain {@linkcode TerrainType[]} - the terrain to be removed
|
||||||
|
*/
|
||||||
|
constructor(terrain: TerrainType[]) {
|
||||||
|
super(true);
|
||||||
|
|
||||||
|
this.terrain = terrain;
|
||||||
|
}
|
||||||
|
|
||||||
|
apply(pokemon: Pokemon, passive: boolean, simulated:boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
|
||||||
|
if (!simulated) {
|
||||||
|
globalScene.arena.trySetTerrain(TerrainType.NONE, true, true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type PreDefendAbAttrCondition = (pokemon: Pokemon, attacker: Pokemon, move: Move) => boolean;
|
type PreDefendAbAttrCondition = (pokemon: Pokemon, attacker: Pokemon, move: Move) => boolean;
|
||||||
|
|
||||||
export class PreDefendAbAttr extends AbAttr {
|
export class PreDefendAbAttr extends AbAttr {
|
||||||
@ -6373,9 +6419,11 @@ export function initAbilities() {
|
|||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.TERAFORM_ZERO, 9)
|
new Ability(Abilities.TERAFORM_ZERO, 9)
|
||||||
|
.attr(PostTeraFormChangeRemoveWeatherAbAttr, [ WeatherType.SUNNY, WeatherType.RAIN, WeatherType.SANDSTORM, WeatherType.HAIL, WeatherType.SNOW, WeatherType.FOG, WeatherType.HEAVY_RAIN, WeatherType.HARSH_SUN, WeatherType.STRONG_WINDS ])
|
||||||
|
.attr(PostTeraFormChangeRemoveTerrainAbAttr, [ TerrainType.MISTY, TerrainType.ELECTRIC, TerrainType.GRASSY, TerrainType.PSYCHIC ])
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
.unimplemented(),
|
.partial(), // Does not have the one use per Tera restriction yet
|
||||||
new Ability(Abilities.POISON_PUPPETEER, 9)
|
new Ability(Abilities.POISON_PUPPETEER, 9)
|
||||||
.attr(UncopiableAbilityAbAttr)
|
.attr(UncopiableAbilityAbAttr)
|
||||||
.attr(UnswappableAbilityAbAttr)
|
.attr(UnswappableAbilityAbAttr)
|
||||||
|
@ -11,7 +11,7 @@ import { getPokemonNameWithAffix } from "#app/messages";
|
|||||||
import { BattlePhase } from "./battle-phase";
|
import { BattlePhase } from "./battle-phase";
|
||||||
import { MovePhase } from "./move-phase";
|
import { MovePhase } from "./move-phase";
|
||||||
import { PokemonHealPhase } from "./pokemon-heal-phase";
|
import { PokemonHealPhase } from "./pokemon-heal-phase";
|
||||||
import { applyAbAttrs, PostTeraFormChangeStatChangeAbAttr } from "#app/data/ability";
|
import { applyAbAttrs, PostTeraFormChangeRemoveTerrainAbAttr, PostTeraFormChangeRemoveWeatherAbAttr, PostTeraFormChangeStatChangeAbAttr } from "#app/data/ability";
|
||||||
|
|
||||||
export class QuietFormChangePhase extends BattlePhase {
|
export class QuietFormChangePhase extends BattlePhase {
|
||||||
protected pokemon: Pokemon;
|
protected pokemon: Pokemon;
|
||||||
@ -148,6 +148,8 @@ export class QuietFormChangePhase extends BattlePhase {
|
|||||||
}
|
}
|
||||||
if (this.formChange.trigger instanceof SpeciesFormChangeTeraTrigger) {
|
if (this.formChange.trigger instanceof SpeciesFormChangeTeraTrigger) {
|
||||||
applyAbAttrs(PostTeraFormChangeStatChangeAbAttr, this.pokemon, null);
|
applyAbAttrs(PostTeraFormChangeStatChangeAbAttr, this.pokemon, null);
|
||||||
|
applyAbAttrs(PostTeraFormChangeRemoveWeatherAbAttr, this.pokemon, null);
|
||||||
|
applyAbAttrs(PostTeraFormChangeRemoveTerrainAbAttr, this.pokemon, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
super.end();
|
super.end();
|
||||||
|
Loading…
Reference in New Issue
Block a user