Implemented Comatose and Shields Down. Partially implemented Flower Veil.

pull/383/head
SamuelHudson 2024-05-01 14:20:24 -05:00
parent 68f3326607
commit 2244bfd5b0
2 changed files with 29 additions and 11 deletions

View File

@ -2961,8 +2961,14 @@ export function initAbilities() {
.ignorable()
.unimplemented(),
new Ability(Abilities.FLOWER_VEIL, 6)
.conditionalAttr(p => (p.isOfType(Type.GRASS)), StatusEffectImmunityAbAttr, StatusEffect.BURN)
.conditionalAttr(p => (p.isOfType(Type.GRASS)), StatusEffectImmunityAbAttr, StatusEffect.FREEZE)
.conditionalAttr(p => (p.isOfType(Type.GRASS)), StatusEffectImmunityAbAttr, StatusEffect.PARALYSIS)
.conditionalAttr(p => (p.isOfType(Type.GRASS)), StatusEffectImmunityAbAttr, StatusEffect.POISON)
.conditionalAttr(p => (p.isOfType(Type.GRASS)), StatusEffectImmunityAbAttr, StatusEffect.SLEEP)
.conditionalAttr(p => (p.isOfType(Type.GRASS)), StatusEffectImmunityAbAttr, StatusEffect.TOXIC)
.ignorable()
.unimplemented(),
.partial(),
new Ability(Abilities.CHEEK_POUCH, 6)
.unimplemented(),
new Ability(Abilities.PROTEAN, 6)
@ -3042,11 +3048,16 @@ export function initAbilities() {
.attr(PostBattleInitFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0))
.attr(PostSummonFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0))
.attr(PostTurnFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0))
.conditionalAttr(p => (p.formIndex < 7), StatusEffectImmunityAbAttr, StatusEffect.BURN)
.conditionalAttr(p => (p.formIndex < 7), StatusEffectImmunityAbAttr, StatusEffect.FREEZE)
.conditionalAttr(p => (p.formIndex < 7), StatusEffectImmunityAbAttr, StatusEffect.PARALYSIS)
.conditionalAttr(p => (p.formIndex < 7), StatusEffectImmunityAbAttr, StatusEffect.POISON)
.conditionalAttr(p => (p.formIndex < 7), StatusEffectImmunityAbAttr, StatusEffect.SLEEP)
.conditionalAttr(p => (p.formIndex < 7), StatusEffectImmunityAbAttr, StatusEffect.TOXIC)
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
.attr(UnsuppressableAbilityAbAttr)
.attr(NoFusionAbilityAbAttr)
.partial(),
.attr(NoFusionAbilityAbAttr),
new Ability(Abilities.STAKEOUT, 7)
.attr(MovePowerBoostAbAttr, (user, target, move) => user.scene.currentBattle.turnCommands[target.getBattlerIndex()].command === Command.POKEMON, 2),
new Ability(Abilities.WATER_BUBBLE, 7)
@ -3112,10 +3123,17 @@ export function initAbilities() {
new Ability(Abilities.CORROSION, 7)
.unimplemented(),
new Ability(Abilities.COMATOSE, 7)
.attr(StatusEffectImmunityAbAttr, StatusEffect.BURN)
.attr(StatusEffectImmunityAbAttr, StatusEffect.FREEZE)
.attr(StatusEffectImmunityAbAttr, StatusEffect.PARALYSIS)
.attr(StatusEffectImmunityAbAttr, StatusEffect.POISON)
.attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP)
.attr(StatusEffectImmunityAbAttr, StatusEffect.TOXIC)
.attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().id == Moves.YAWN)
.attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon == attacker && move.getMove().id == Moves.REST)
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
.attr(UnsuppressableAbilityAbAttr)
.unimplemented(),
.attr(UnsuppressableAbilityAbAttr),
new Ability(Abilities.QUEENLY_MAJESTY, 7)
.attr(FieldPriorityMoveImmunityAbAttr)
.ignorable(),

View File

@ -4120,7 +4120,7 @@ export function initMoves() {
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
new AttackMove(Moves.DREAM_EATER, Type.PSYCHIC, MoveCategory.SPECIAL, 100, 100, 15, -1, 0, 1)
.attr(HitHealAttr)
.condition((user, target, move) => target.status?.effect === StatusEffect.SLEEP)
.condition((user, target, move) => target.status?.effect === StatusEffect.SLEEP || target.hasAbility(Abilities.COMATOSE))
.triageMove(),
new StatusMove(Moves.POISON_GAS, Type.POISON, 90, 40, -1, 0, 1)
.attr(StatusEffectAttr, StatusEffect.POISON)
@ -4221,14 +4221,14 @@ export function initMoves() {
.attr(IgnoreAccuracyAttr),
new StatusMove(Moves.NIGHTMARE, Type.GHOST, 100, 15, -1, 0, 2)
.attr(AddBattlerTagAttr, BattlerTagType.NIGHTMARE)
.condition((user, target, move) => target.status?.effect === StatusEffect.SLEEP),
.condition((user, target, move) => target.status?.effect === StatusEffect.SLEEP || target.hasAbility(Abilities.COMATOSE)),
new AttackMove(Moves.FLAME_WHEEL, Type.FIRE, MoveCategory.PHYSICAL, 60, 100, 25, 10, 0, 2)
.attr(HealStatusEffectAttr, true, StatusEffect.FREEZE)
.attr(StatusEffectAttr, StatusEffect.BURN),
new AttackMove(Moves.SNORE, Type.NORMAL, MoveCategory.SPECIAL, 50, 100, 15, 30, 0, 2)
.attr(BypassSleepAttr)
.attr(FlinchAttr)
.condition((user, target, move) => user.status?.effect === StatusEffect.SLEEP)
.condition((user, target, move) => user.status?.effect === StatusEffect.SLEEP || user.hasAbility(Abilities.COMATOSE))
.soundBased(),
new StatusMove(Moves.CURSE, Type.GHOST, -1, 10, -1, 0, 2)
.attr(StatChangeAttr, BattleStat.SPD, -1, true)
@ -4339,7 +4339,7 @@ export function initMoves() {
new SelfStatusMove(Moves.SLEEP_TALK, Type.NORMAL, -1, 10, -1, 0, 2)
.attr(BypassSleepAttr)
.attr(RandomMovesetMoveAttr)
.condition((user, target, move) => user.status?.effect === StatusEffect.SLEEP)
.condition((user, target, move) => user.status?.effect === StatusEffect.SLEEP || user.hasAbility(Abilities.COMATOSE))
.ignoresVirtual(),
new StatusMove(Moves.HEAL_BELL, Type.NORMAL, -1, 5, -1, 0, 2)
.soundBased()
@ -4737,7 +4737,7 @@ export function initMoves() {
new StatusMove(Moves.MIRACLE_EYE, Type.PSYCHIC, -1, 40, -1, 0, 4)
.unimplemented(),
new AttackMove(Moves.WAKE_UP_SLAP, Type.FIGHTING, MoveCategory.PHYSICAL, 70, 100, 10, -1, 0, 4)
.attr(MovePowerMultiplierAttr, (user, target, move) => target.status?.effect === StatusEffect.SLEEP ? 2 : 1)
.attr(MovePowerMultiplierAttr, (user, target, move) => target.status?.effect === StatusEffect.SLEEP || target.hasAbility(Abilities.COMATOSE) ? 2 : 1)
.attr(HealStatusEffectAttr, false, StatusEffect.SLEEP),
new AttackMove(Moves.HAMMER_ARM, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 90, 10, 100, 0, 4)
.attr(StatChangeAttr, BattleStat.SPD, -1, true)
@ -5141,7 +5141,7 @@ export function initMoves() {
.pulseMove()
.triageMove(),
new AttackMove(Moves.HEX, Type.GHOST, MoveCategory.SPECIAL, 65, 100, 10, -1, 0, 5)
.attr(MovePowerMultiplierAttr, (user, target, move) => target.status ? 2 : 1),
.attr(MovePowerMultiplierAttr, (user, target, move) => target.status || target.hasAbility(Abilities.COMATOSE) ? 2 : 1),
new AttackMove(Moves.SKY_DROP, Type.FLYING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5)
.attr(ChargeAttr, ChargeAnim.SKY_DROP_CHARGING, 'took {TARGET}\ninto the sky!', BattlerTagType.FLYING) // TODO: Add 2nd turn message
.condition(failOnGravityCondition)