Implement Shed Skin (and Hydration!) (#84)
* Implement Shed Skin (and Hydration!) Implemented Shed Skin, with a 1/3 chance to remove a non-volatile status condition if inflicted with it at the end of each turn. While doing this I noticed Hydration is the same effect but in Rain/Heavy Rain, so I implemented that too. * Update to ability.ts based on changes. Formatting errors should be largely fixed, and we've switched from Math.rand to Utils. * Update src/data/ability.ts --------- Co-authored-by: Samuel H <flashfireex@gmail.com>pull/86/head
parent
b2beb8e0c8
commit
b9a068e3b7
|
@ -7,7 +7,7 @@ import { getPokemonMessage } from "../messages";
|
||||||
import { Weather, WeatherType } from "./weather";
|
import { Weather, WeatherType } from "./weather";
|
||||||
import { BattlerTag } from "./battler-tags";
|
import { BattlerTag } from "./battler-tags";
|
||||||
import { BattlerTagType } from "./enums/battler-tag-type";
|
import { BattlerTagType } from "./enums/battler-tag-type";
|
||||||
import { StatusEffect, getStatusEffectDescriptor } from "./status-effect";
|
import { StatusEffect, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect";
|
||||||
import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, allMoves } from "./move";
|
import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, allMoves } from "./move";
|
||||||
import { ArenaTagType } from "./enums/arena-tag-type";
|
import { ArenaTagType } from "./enums/arena-tag-type";
|
||||||
import { Stat } from "./pokemon-stat";
|
import { Stat } from "./pokemon-stat";
|
||||||
|
@ -1366,6 +1366,20 @@ export class PostTurnAbAttr extends AbAttr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class PostTurnResetStatusAbAttr extends PostTurnAbAttr {
|
||||||
|
applyPostTurn(pokemon: Pokemon, args: any[]): boolean {
|
||||||
|
if (pokemon.status) {
|
||||||
|
|
||||||
|
pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status?.effect)));
|
||||||
|
pokemon.resetStatus();
|
||||||
|
pokemon.updateInfo();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class PostTurnStatChangeAbAttr extends PostTurnAbAttr {
|
export class PostTurnStatChangeAbAttr extends PostTurnAbAttr {
|
||||||
private stats: BattleStat[];
|
private stats: BattleStat[];
|
||||||
private levels: integer;
|
private levels: integer;
|
||||||
|
@ -2376,7 +2390,8 @@ export function initAbilities() {
|
||||||
.attr(BlockItemTheftAbAttr)
|
.attr(BlockItemTheftAbAttr)
|
||||||
.passive()
|
.passive()
|
||||||
.ignorable(),
|
.ignorable(),
|
||||||
new Ability(Abilities.SHED_SKIN, "Shed Skin (N)", "The Pokémon may heal its own status conditions by shedding its skin.", 3),
|
new Ability(Abilities.SHED_SKIN, "Shed Skin", "The Pokémon may heal its own status conditions by shedding its skin.", 3)
|
||||||
|
.conditionalAttr(pokemon => !Utils.randSeedInt(3), PostTurnResetStatusAbAttr),
|
||||||
new Ability(Abilities.GUTS, "Guts", "It's so gutsy that having a status condition boosts the Pokémon's Attack stat.", 3)
|
new Ability(Abilities.GUTS, "Guts", "It's so gutsy that having a status condition boosts the Pokémon's Attack stat.", 3)
|
||||||
.attr(BypassBurnDamageReductionAbAttr)
|
.attr(BypassBurnDamageReductionAbAttr)
|
||||||
.conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5),
|
.conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5),
|
||||||
|
@ -2451,7 +2466,9 @@ export function initAbilities() {
|
||||||
.attr(StabBoostAbAttr),
|
.attr(StabBoostAbAttr),
|
||||||
new Ability(Abilities.SKILL_LINK, "Skill Link", "Maximizes the number of times multistrike moves hit.", 4)
|
new Ability(Abilities.SKILL_LINK, "Skill Link", "Maximizes the number of times multistrike moves hit.", 4)
|
||||||
.attr(MaxMultiHitAbAttr),
|
.attr(MaxMultiHitAbAttr),
|
||||||
new Ability(Abilities.HYDRATION, "Hydration (N)", "Heals status conditions if it's raining.", 4),
|
new Ability(Abilities.HYDRATION, "Hydration", "Heals status conditions if it's raining.", 4)
|
||||||
|
.attr(PostTurnResetStatusAbAttr)
|
||||||
|
.condition(getWeatherCondition(WeatherType.RAIN, WeatherType.HEAVY_RAIN)),
|
||||||
new Ability(Abilities.SOLAR_POWER, "Solar Power", "Boosts the Sp. Atk stat in harsh sunlight, but HP decreases every turn.", 4)
|
new Ability(Abilities.SOLAR_POWER, "Solar Power", "Boosts the Sp. Atk stat in harsh sunlight, but HP decreases every turn.", 4)
|
||||||
.attr(PostWeatherLapseDamageAbAttr, 2, WeatherType.SUNNY, WeatherType.HARSH_SUN)
|
.attr(PostWeatherLapseDamageAbAttr, 2, WeatherType.SUNNY, WeatherType.HARSH_SUN)
|
||||||
.attr(BattleStatMultiplierAbAttr, BattleStat.SPATK, 1.5)
|
.attr(BattleStatMultiplierAbAttr, BattleStat.SPATK, 1.5)
|
||||||
|
|
Loading…
Reference in New Issue