From 6e8c734b607d45bc615c27f9a52f0ff7b12fc3c8 Mon Sep 17 00:00:00 2001 From: Eevee Date: Sun, 5 Dec 2010 18:41:04 -0800 Subject: [PATCH 01/16] Mention buggy interaction between freefall and Gravity. #376 --- pokedex/data/csv/move_effects.csv | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pokedex/data/csv/move_effects.csv b/pokedex/data/csv/move_effects.csv index ab0848f..0cf256f 100644 --- a/pokedex/data/csv/move_effects.csv +++ b/pokedex/data/csv/move_effects.csv @@ -705,11 +705,13 @@ Sunset | [Ground]{type} Waterfall | [Grass]{type} " 215,Heals the user by half its max HP.,"Heals the user for half its max [HP]{mechanic}. If the user is [Flying]{type}, its [Flying]{type} type is ignored until the end of this turn." -216,Disables moves and immunities that involve flying or levitating for five turns.,"For five turns (including this one), all immunities to [Ground]{type} moves are disabled. For the duration of this effect, the [evasion]{mechanic} of every Pokémon on the field is lowered by two [stages]{mechanic:stage}. +216,Disables moves and immunities that involve flying or levitating for five turns.,"For five turns (including this one), all immunities to [Ground]{type} moves are disabled. For the duration of this effect, the [evasion]{mechanic} of every Pokémon on the field is lowered by two [stages]{mechanic:stage}. Cancels the effects of [Bounce]{move}, [Fly]{move}, and [freefall]{move}. Specifically, [Flying]{type} Pokémon and those with [Levitate]{ability} or that have used [Magnet Rise]{move} are no longer immune to [Ground]{type} attacks, [Arena Trap]{ability}, [Spikes]{move}, or [Toxic Spikes]{move}. -[Bounce]{move}, [Fly]{move}, [freefall]{move}, [Hi Jump Kick]{move}, [Jump Kick]{move}, and [Splash]{move} cannot be used while this move is in effect." +[Bounce]{move}, [Fly]{move}, [freefall]{move}, [Hi Jump Kick]{move}, [Jump Kick]{move}, and [Splash]{move} cannot be used while this move is in effect. + +*Bug*: If this move is used during a double or triple battle while Pokémon are under the effect of [freefall]{move}, freefall's effect is not correctly canceled on freefall's target, and it remains high in the air indefinitely. As freefall prevents the target from acting, the only way to subsequently remove it from the field is to faint it." 217,"Forces the target to have no evasion, and allows it to be hit by Psychic moves even if it's Dark.",Resets the target's [evasion]{mechanic} to normal and prevents any further boosting until the target leaves the [field]{mechanic}. A [Dark]{type} Pokémon under this effect takes normal damage from [Psychic]{type} moves. This move itself ignores [accuracy]{mechanic} and [evasion]{mechanic} modifiers. 218,"If the target is asleep, has double power and wakes it up.","Inflicts [regular damage]{mechanic}. If the target is [sleep]{mechanic}ing, this move has double power, and the target wakes up." 219,Lowers user's Speed by one stage.,"Inflicts [regular damage]{mechanic}, then lowers the user's [Speed]{mechanic} by one [stage]{mechanic}." @@ -952,7 +954,9 @@ This move cannot be selected by [Assist]{move} or [Metronome]{move}. 310,Heals the target for half its max HP.,Heals the target for half its max [HP]{mechanic}. 311,Has double power if the target has a major status ailment.,"Inflicts [regular damage]. If the target has a [major status ailment]{mechanic}, this move has double power." 312,"Carries the target high into the air, dodging all attacks against either, and drops it next turn.","Inflicts [regular damage]{mechanic}. User carries the target high into the air for one turn, during which no moves will hit either Pokémon and neither can act. On the following turn, the user drops the target, inflicting damage and ending the effect. + If the target is [Flying]{type}-type, this move will function as normal but inflict no damage. + [Gust]{move}, [hurricane]{move}, [knock down]{move}, [Sky Uppercut]{move}, [Thunder]{move}, [Twister]{move}, and [Whirlwind]{move} can hit both the user and the target during this effect. [Gust]{move} and [Twister]{move} will additionally have double power. The damage from [Hail]{move} and [Sandstorm]{move} still applies during this effect. @@ -961,7 +965,9 @@ Either Pokémon may be hit during this effect if also under the effect of [Lock- This move cannot be used while [Gravity]{move} is in effect. -This move cannot be selected by [Sleep Talk]{move}." +This move cannot be selected by [Sleep Talk]{move}. + +*Bug*: If [Gravity]{move} is used during a double or triple battle while this move is in effect, this move is not correctly canceled on the target, and it remains high in the air indefinitely. As this move prevents the target from acting, the only way to subsequently remove it from the field is to faint it." 313,Raises the user's Attack by one stage and its Speed by two stages.,Raises the user's [Attack]{mechanic} by one [stage]{mechanic} and its [Speed]{mechanic} by two stages. 314,Ends wild battles. Forces trainers to switch Pokémon.,"Inflicts [regular damage]{mechanic}, then [switches]{mechanic:switch out} the target out for another of its trainer's Pokémon, selected at random. -- 2.7.4 From 0144c108a79b0e28e4a71138b385950e53d14116 Mon Sep 17 00:00:00 2001 From: Brigit Lemanski Date: Mon, 6 Dec 2010 16:15:48 -0500 Subject: [PATCH 02/16] Corrected effect of shell break, added a few idiosyncrasies for rest --- pokedex/data/csv/move_effects.csv | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pokedex/data/csv/move_effects.csv b/pokedex/data/csv/move_effects.csv index 0cf256f..108c265 100644 --- a/pokedex/data/csv/move_effects.csv +++ b/pokedex/data/csv/move_effects.csv @@ -51,9 +51,11 @@ If the user is holding [Light Clay]{item}, the barrier lasts for eight turns. [Brick Break]{move} or [Defog]{move} used by an opponent will destroy the barrier." 37,"Has a $effect_chance% chance to burn, freeze, or paralyze the target.","Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [burn]{mechanic}, [freeze]{mechanic}, or [paralyze]{mechanic} the target. One of these effects is selected at random; they do not each have independent chances to occur." -38,"User sleeps for two turns, completely healing itself.","User falls to [sleep]{mechanic} and immediately regains all its [HP]{mechanic}. If the user has another [major status effect]{mechanic}, [sleep]{mechanic} will replace it. The user will always wake up after two turns. +38,"User sleeps for two turns, completely healing itself.","User falls to [sleep]{mechanic} and immediately regains all its [HP]{mechanic}. If the user has another [major status effect]{mechanic}, [sleep]{mechanic} will replace it. The user will always wake up after two turns, or one turn with [Early Bird]{ability}. -This move cannot be used during an [Uproar]{move}." +This move fails if the Pokémon cannot fall asleep due to [Uproar]{move}, [Insomnia]{ability}, or [Vital Spirit]{ability}. + +After Generation III, this move fails if the Pokémon is already asleep." 39,Causes a one-hit KO.,"Inflicts damage equal to the target's max [HP]{mechanic}. Ignores [accuracy]{mechanic} and [evasion]{mechanic} modifiers. This move's [accuracy]{mechanic} is 30% plus 1% for each level the user is higher than the target. If the user is a lower level than the target, this move will [fail]{mechanic}. Because this move inflicts a specific and finite amount of damage, [Endure]{move} still prevents the target from fainting. @@ -950,7 +952,7 @@ If the user successfully used [Detect]{move}, [Endure]{move}, [fast guard]{move} This move cannot be selected by [Assist]{move} or [Metronome]{move}. " 308,User switches places with the friendly Pokémon opposite it.,"User switches position on the field with the friendly Pokémon opposite it. If the user is in the middle position in a triple battle, or there are no other friendly Pokémon, this move will fail." -309,"Raises user's Attack, Special Attack, and Speed by one stage. Lower user's Defense and Special Defense by one stage.","Raises the user's [Attack]{mechanic}, [Special Attack]{mechanic}, and [Speed]{mechanic} by two [stages]{mechanic:stage} each. Lowers the user's [Defense]{mechanic} and [Special Defense]{mechanic} by one stage each." +309,"Raises user's Attack, Special Attack, and Speed by two stages. Lower user's Defense and Special Defense by one stage.","Raises the user's [Attack]{mechanic}, [Special Attack]{mechanic}, and [Speed]{mechanic} by two [stages]{mechanic:stage} each. Lowers the user's [Defense]{mechanic} and [Special Defense]{mechanic} by one stage each." 310,Heals the target for half its max HP.,Heals the target for half its max [HP]{mechanic}. 311,Has double power if the target has a major status ailment.,"Inflicts [regular damage]. If the target has a [major status ailment]{mechanic}, this move has double power." 312,"Carries the target high into the air, dodging all attacks against either, and drops it next turn.","Inflicts [regular damage]{mechanic}. User carries the target high into the air for one turn, during which no moves will hit either Pokémon and neither can act. On the following turn, the user drops the target, inflicting damage and ending the effect. -- 2.7.4 From 1e28a1ce5b5aa66bdaf06b49a31416f7c4d89b02 Mon Sep 17 00:00:00 2001 From: Zhorken Date: Mon, 6 Dec 2010 17:38:11 -0500 Subject: [PATCH 03/16] Various B/W ability fixes based on Smogon's research. --- pokedex/data/csv/abilities.csv | 128 +++++++++++++++++++++++------------------ 1 file changed, 73 insertions(+), 55 deletions(-) diff --git a/pokedex/data/csv/abilities.csv b/pokedex/data/csv/abilities.csv index f394da4..e1c75a8 100644 --- a/pokedex/data/csv/abilities.csv +++ b/pokedex/data/csv/abilities.csv @@ -1,7 +1,9 @@ id,name,generation_id,effect,short_effect -1,Stench,3,"Overworld: The wild encounter rate is halved while this Pokémon is in the party. +1,Stench,3,"This Pokémon's moves have approximately an 8-10% chance to make the target [flinch]{mechanic}. The exact probability is not yet known. -In Pokémon Black and White, this Pokémon's moves have a 10% chance of [flinching]{mechanic:flinch}.",Decreases the wild encounter rate. +This ability does not stack with a [King's Rock]{item}. + +Overworld: The wild encounter rate is halved while this Pokémon is in the party.",Has a chance of making the opponent [flinch]{mechanic}. Decreases the wild encounter rate. 2,Drizzle,3,"The [weather]{mechanic} changes to [rain]{mechanic} when this Pokémon enters battle and does not end unless replaced by another weather condition. The weather abilities follow [Speed]{mechanic}. If multiple Pokémon with this ability, [Drought]{ability}, [Sand Stream]{ability}, or [Snow Warning]{ability} are sent out at the same time, each will take effect and be cancelled by the next, and only the slowest Pokémon's ability (or the fastest during [Trick Room]{move}) will have its weather stay.",Summons [rain]{mechanic} that lasts indefinitely upon entering battle. @@ -9,9 +11,9 @@ The weather abilities follow [Speed]{mechanic}. If multiple Pokémon with this 4,Battle Armor,3,"Moves cannot score [critical hits]{mechanic:critical hit} against this Pokémon. This ability functions identically to [Shell Armor]{ability}.",Protects against [critical hits]{mechanic:critical hit}. -5,Sturdy,3,"This Pokémon is immune to the one-hit KO moves: [Fissure]{move}, [Guillotine]{move}, [Horn Drill]{move}, and [Sheer Cold]{move}. +5,Sturdy,3,"When this Pokémon is at full [HP]{mechanic}, any hit that would otherwise knock it out will leave it with 1 HP. It is also immune to the one-hit KO moves, regardless of its current HP: [Fissure]{move}, [Guillotine]{move}, [Horn Drill]{move}, and [Sheer Cold]{move}. -In Pokémon Black and White, this Pokémon also cannot be knocked out in one hit, functioning effectively as a permanent [Focus Sash]{item}.",Protects against one-hit KO moves. +If this Pokémon is holding a [Focus Sash]{item}, this ability takes precedence and the Focus Sash will not be consumed.",Prevents being knocked out from full [HP]{mechanic}. Protects against the one-hit KO moves. 6,Damp,3,"While this Pokémon is in battle, [Selfdestruct]{move} and [Explosion]{move} will fail and [Aftermath]{ability} will not take effect.","Prevents any use of [Selfdestruct]{move} or [Explosion]{move}, as well as [Aftermath]{ability}, while the Pokémon is in battle." 7,Limber,3,"This Pokémon cannot be [paralyzed]{mechanic:paralysis}. @@ -26,12 +28,12 @@ Overworld: If the lead Pokémon has this ability, the wild encounter rate is hal Pokémon that are immune to [Electric]{type}-type moves can still be paralyzed by this ability. Overworld: In Pokémon Emerald and all subsequent games, if the lead Pokémon has this ability, there is a 50% chance that encounters will be with an [Electric]{type} Pokémon, if applicable.",Has a 30% chance of [paralyzing]{mechanic:paralysis} attacking Pokémon on contact. -10,Volt Absorb,3,"Whenever an [Electric]{type}-type move hits this Pokémon, it heals for 1/4 of its maximum [HP]{mechanic} instead. +10,Volt Absorb,3,"Whenever an [Electric]{type}-type move hits this Pokémon, it heals for 1/4 of its maximum [HP]{mechanic} and the move is negated. This ability will not take effect if this Pokémon is immune to Electric moves. Electric moves will ignore this Pokémon's [Substitute]{move}. This effect includes non-damaging moves, i.e. [Thunder Wave]{move}. Prior to Generation IV, Thunder Wave does not trigger this ability.","Absorbs [Electric]{type} moves, healing for 1/4 max [HP]{mechanic}." -11,Water Absorb,3,"Whenever a [Water]{type}-type move hits this Pokémon, it heals for 1/4 of its maximum [HP]{mechanic} instead. +11,Water Absorb,3,"Whenever a [Water]{type}-type move hits this Pokémon, it heals for 1/4 of its maximum [HP]{mechanic} and the move is negated. Water moves will ignore this Pokémon's [Substitute]{move}.","Absorbs [Water]{type} moves, healing for 1/4 max [HP]{mechanic}." 12,Oblivious,3,"This Pokémon cannot be [infatuated]{mechanic:infatuation} and is immune to [Captivate]{move}. @@ -54,6 +56,8 @@ This ability functions identically to [Vital Spirit]{ability} in battle.",Preven If the Pokémon has two types, both are overridden. The Pokémon must directly take damage; for example, moves blocked by a [Substitute]{move} will not trigger this ability, nor will moves that deal damage indirectly, such as [Spikes]{move}. +This ability takes effect on only the last hit of a multiple-hit attack. + In Pokémon Colosseum and XD: Gale of Darkness, this ability does not take effect on Shadow-type moves.",Changes type to match when hit by a damaging move. 17,Immunity,3,"This Pokémon cannot be [poisoned]{mechanic:poison}. This includes bad poison. @@ -86,7 +90,7 @@ Other Pokémon with this ability are unaffected. Pokémon can still switch out Overworld: In Pokémon Emerald and all subsequent games, if the lead Pokémon has this ability, the wild encounter rate is halved.",Prevents opponents from fleeing or switching out. 24,Rough Skin,3,"Whenever a move makes contact with this Pokémon, the move's user takes 1/8 of its maximum [HP]{mechanic} in damage. -Prior to Generation IV, this ability only inflicts 1/16 maximum HP in damage.",Damages attacking Pokémon for 1/8 their max [HP]{mechanic} on contact. +This ability is identical to [iron thorns]{ability}.",Damages attacking Pokémon for 1/8 their max [HP]{mechanic} on contact. 25,Wonder Guard,3,"This Pokémon is immune to damaging moves that are not [super effective]{mechanic} against it. Moves that inflict fixed damage, such as [Night Shade]{move} or [Seismic Toss]{move}, are considered super effective if their types are. Damage not directly dealt by moves, such as damage from [weather]{mechanic}, a [status ailment]{mechanic}, or [Spikes]{move}, is not prevented. @@ -104,7 +108,7 @@ This ability is disabled during [Gravity]{move} or [Ingrain]{move}, or while hol Nothing is done to compensate if the move's user is immune to one of these ailments; there is simply a lower chance that the move's user will be affected.","Has a 30% chance of inflcting either [paralysis]{mechanic}, [poison]{mechanic}, or [sleep]{mechanic} on attacking Pokémon on contact." 28,Synchronize,3,"Whenever this Pokémon is [burned]{mechanic:burn}, [paralyzed]{mechanic:paralysis}, or [poisoned]{mechanic:poison}, the Pokémon who gave this Pokémon that ailment is also given the ailment. -If this Pokémon is badly poisoned, this ability only passes back regular poison. This ability cannot pass back a status ailment that the Pokémon did not directly receive from another Pokémon, such as the poison from [Toxic Spikes]{move} or the burn from a [Flame Orb]{item}. +If this Pokémon is badly poisoned, this ability passes back bad poison. This ability cannot pass back a status ailment that the Pokémon did not directly receive from another Pokémon, such as the poison from [Toxic Spikes]{move} or the burn from a [Flame Orb]{item}. Overworld: In Pokémon Emerald and all subsequent games, if the lead Pokémon has this ability, wild Pokémon have a 50% chance of having the lead Pokémon's nature, and a 50% chance of being given a random nature as usual; this results in a 52% chance of having the lead Pokémon's nature. This does not work on Pokémon received outside of battle or roaming legendaries. In Emerald, this also does not work on Pokémon encountered by interacting with them on the overworld.","Copies [burns]{mechanic:burn}, [paralysis]{mechanic}, and [poison]{mechanic} received onto the Pokémon that inflicted them." 29,Clear Body,3,"This Pokémon cannot have its stats [lowered]{mechanic:stat modifier} by other Pokémon. @@ -115,14 +119,14 @@ This ability functions identically to [White Smoke]{ability} in battle.",Protect 30,Natural Cure,3,"This Pokémon is cured of any [major status ailment]{mechanic} upon leaving battle. If this ability is acquired during battle, the Pokémon is cured upon leaving battle before losing the temporary ability.",Cures any [major status ailment]{mechanic} upon leaving battle. -31,Lightningrod,3,"All other Pokémon's single-target [Electric]{type}-type moves will hit this Pokémon, including its ally's, ignoring target and [accuracy]{mechanic}. +31,Lightningrod,3,"All other Pokémon's single-target [Electric]{type}-type moves will hit this Pokémon, including its ally's, ignoring target and [accuracy]{mechanic}. This Pokémon is immune to Electric moves, and its [Special Attack]{mechanic} rises one [stage]{mechanic:stat modifier} upon being hit by one. -[Hidden Power]{move} and multiple-target moves, i.e. [Discharge]{move}, are completely unaffected. +[Ground]{type}-type Pokémon's Electric immunity takes precedence over this ability, preventing the Special Attack boost. -[Follow Me]{move} takes precedence over this ability. +[Hidden Power]{move} and multiple-target moves, i.e. [Discharge]{move}, cannot be redirected. -In Pokémon Black and White, this ability additionally grants an immunity to [Electric]{type}-type moves and raises [Special Attack]{stat} by one level. This effect is ignored if the Pokémon is immune to [Electric]{type} moves from the [Ground]{type}.","Draws in all other Pokémon's [Electric]{type} moves, ignoring target and [accuracy]{mechanic}." -32,Serene Grace,3,"This Pokémon's moves twice their usual effect chance. +[Follow Me]{move} takes precedence over this ability.","Draws in and absorbs all other Pokémon's [Electric]{type} moves, raising [Special Attack]{mechanic} by one stage, ignoring target and [accuracy]{mechanic}." +32,Serene Grace,3,"This Pokémon's moves have twice their usual effect chance. An effect chance is a move's chance to inflict a [status ailment]{mechanic}, cause a [stat change]{mechanic:stat modifier}, or make the target [flinch]{mechanic:flinching} in addition to the move's main effect. For example, [Flamethrower]{move}'s chance of [burning]{mechanic:burn} the target is doubled, but [Protect]{move}'s chance of success and [Air Cutter]{move}'s increased [critical hit]{mechanic} rate are unaffected.",Doubles the chance of moves' extra effects occurring. 33,Swift Swim,3,"This Pokémon's [Speed]{mechanic} is doubled during [rain]{mechanic}. @@ -208,11 +212,11 @@ Overworld: If the lead Pokémon has this ability, lower-levelled Pokémon have t This ability does not prevent any Attack losses other than [stat modifiers]{mechanic}, such as the Attack cut from a [burn]{mechanic}; nor self-inflicted Attack drops, such as the Attack drop from [Superpower]{move}; nor opponent-triggered Attack boosts, such as the Attack boost from [Swagger]{move}. This Pokémon can still be passed negative Attack modifiers through [Heart Swap]{move} or [Power Swap]{move}. Overworld: In Pokémon Emerald, if any Pokémon in the party has this ability, [Cut]{move}'s radius for cutting grass is doubled. (After Generation III, Cut can no longer cut down tall grass.)",Protects against opponent-inflicted [Attack]{mechanic} [drops]{mechanic:stat modifiers}. -53,Pickup,3,"After each battle, this Pokémon has a 10% chance of picking up an item if it is not already holding one. The items that may be found vary by game, and, since Pokémon Emerald, by the Pokémon's level. +53,Pickup,3,"At the end of each turn, if another Pokémon consumed or [Flung]{move:Fling} a held item that turn, this Pokémon picks up the item if it is not already holding one. After each battle, this Pokémon has a 10% chance of picking up an item if it is not already holding one. -This ability is checked after the battle ends, at which point any temporary ability changes have worn off. +The [balloon]{item} and [escape button]{item} cannot be picked up. -During battle in Pokémon Black and White, this Pokémon will pick up all items [flung]{move:Fling} and most items consumed by the opponent if it is not already holding an item. Items not able to be picked up include: [Balloon]{item} and [Escape Button]{item}",The Pokémon has a 10% chance of picking up an item after battle. +The items that may be found vary by game, and, since Pokémon Emerald, by the Pokémon's level. This ability is checked after the battle ends, at which point any temporary ability changes have worn off.",Picks up other Pokémon's used and [Flung]{move} held items. May also pick up an item after battle. 54,Truant,3,"Every second turn on which this Pokémon should attempt to use a move, it will instead do nothing (""loaf around""). Loafing around interrupts moves that take multiple turns the same way [paralysis]{mechanic}, [flinching]{mechanic}, etc do. Most such moves, for example [Bide]{move} or [Rollout]{move}, are simply cut off upon loafing around. Attacks with a recharge turn, such as [Hyper Beam]{move}, do not have to recharge; attacks with a preparation turn, such as [Fly]{move}, do not end up being used. Moves that are forced over multiple turns and keep going through failure, such as [Outrage]{move}, [Uproar]{move}, or any move forced by [Encore]{move}, keep going as usual. @@ -301,7 +305,7 @@ This ability functions identically to [Battle Armor]{ability}.",Protects against This ability functions identically to [Cloud Nine]{ability}.","Negates all effects of [weather]{mechanic}, but does not prevent the weather itself." 77,Tangled Feet,4,"When this Pokémon is [confused]{mechanic:confusion}, it has twice its [evasion]{mechanic}.",Doubles [evasion]{mechanic} when [confused]{mechanic:confusion}. -78,Motor Drive,4,"Whenever an [Electric]{type}-type move hits this Pokémon, damage is negated and its [Speed]{mechanic} rises one [stage]{mechanic:stat modifier}. +78,Motor Drive,4,"Whenever an [Electric]{type}-type move hits this Pokémon, its [Speed]{mechanic} rises one [stage]{mechanic:stat modifier} and the move is negated. This ability will not take effect if this Pokémon is immune to Electric moves. Electric moves will ignore this Pokémon's [Substitute]{move}. @@ -373,8 +377,6 @@ As [Thunder Wave]{move} is prevented by immunities, unlike most non-damaging mov For example, this Pokémon takes no damage from from [weather]{mechanic}, recoil, [status ailments]{mechanic}, or [Spikes]{move}, but it still suffers from the [Attack]{mechanic} cut when [burned]{mechanic:burn}, and a [Life Orb]{item} will still power up this Pokémon's moves without damaging it. Anything that directly depends on such damage will also not happen; for example, [Leech Seed]{move} will neither hurt this Pokémon nor heal the opponent, and Pokémon with a [Jaboca Berry]{item} or [Rowap Berry]{item} will not consume the berry when hit by this Pokémon. -Also, [paralysis]{mechanic} cannot prevent this Pokémon from moving, though the [Speed]{mechanic} cut is unaffected. - [Struggle]{move}'s recoil; [Pain Split]{move}, whether used by or against this Pokémon; and the [HP]{mechanic} costs of [Belly Drum]{move} and [Substitute]{move} are unaffected. If this Pokémon is [badly poisoned]{mechanic:poison}, the poison counter is still increased each turn; if the Pokémon loses this ability, it will begin taking as much damage as it would be if it had been taking increasing damage each turn. This Pokémon still takes poison damage outside of battle.",Protects against damage not directly caused by a move. @@ -397,12 +399,12 @@ This ability works as usual during [Trick Room]{move}: Pokémon with this abilit This includes moves of variable power, such as [Hidden Power]{move} and [Magnitude]{move}, when their power is 60 or less.",Strengthens moves of 60 base power or less to inflict 1.5× damage. 102,Leaf Guard,4,"This Pokémon cannot be given a [major status ailment]{mechanic} during [strong sunlight]{mechanic}. -This ability does not heal prior status ailments. [Yawn]{move} will immediately fail if used on this Pokémon during strong sunlight, and an already-used Yawn will fail if the weather turns to strong sunlight in the meantime. [Sleep]{mechanic} from [Rest]{move} is unaffected.",Protects against [major status ailments]{mechanic} during [strong sunlight]{mechanic}. -103,Klutz,4,"In battle, this Pokémon cannot use its held item, and the item will not have any passive effect on the battle, positive or negative. +This ability does not heal prior status ailments. [Yawn]{move} will immediately fail if used on this Pokémon during strong sunlight, and an already-used Yawn will fail if the weather turns to strong sunlight in the meantime. This Pokémon cannot use [Rest]{move} during strong sunlight.",Protects against [major status ailments]{mechanic} during [strong sunlight]{mechanic}. +103,Klutz,4,"In battle, this Pokémon cannot use its held item, and the item will not have any passive effect on the battle, positive or negative. This Pokémon cannot use [Fling]{move}. The [Speed]{mechanic} cut from the [Iron Ball]{item} and the effort items (the [Macho Brace]{item}, [Power Weight]{item}, [Power Bracer]{item}, [Power Belt]{item}, [Power Lens]{item}, [Power Band]{item}, and [Power Anklet]{item}) is unaffected. Items that do not directly affect the battle, such as the [Exp. Share]{item}, the [Amulet Coin]{item}, or the [Soothe Bell]{item}, work as usual. All held items work as usual out of battle. -Moves that use the held item, such as [Fling]{move}, [Natural Gift]{move}, and [Switcheroo]{move}, work as usual.",Negates all battle effects of the Pokémon's held item. +Other moves that use the held item, such as [Natural Gift]{move}, and [Switcheroo]{move}, work as usual.",Prevents the Pokémon from using its held item in battle. 104,Mold Breaker,4,"This Pokémon's moves completely ignore abilities that could hinder or prevent their effect on the target. This Pokémon's moves ignore abilities that would prevent them, such as [Levitate]{ability}, [Soundproof]{ability}, and [Water Absorb]{ability}; abilities that would prevent their effects, such as [Clear Body]{ability}, [Shell Armor]{ability}, and [Sticky Hold]{ability}; abilities that grant any protective benefit, such as [Simple]{ability}, [Snow Cloak]{ability}, and [Thick Fat]{ability}; and abilities that would prevent them from hitting the intended target, i.e. [Lightningrod]{ability} and [Storm Drain]{ability}. If an ability could either hinder or help this Pokémon's moves, e.g. [Dry Skin]{ability} or [Unaware]{ability}, the ability is ignored either way. @@ -445,7 +447,7 @@ This ability also takes effect when acquired during battle. If this Pokémon lo 113,Scrappy,4,"This Pokémon ignores [Ghost]{type}-type Pokémon's immunity to [Normal]{type}- and [Fighting]{type}-type moves. Ghost Pokémon's other types affect damage as usual.",Lets the Pokémon's [Normal]{type} and [Fighting]{type} moves hit [Ghost]{type} Pokémon. -114,Storm Drain,4,"All other Pokémon's single-target [Water]{type}-type moves will hit this Pokémon, including its ally's, ignoring selected target and [accuracy]{mechanic}. +114,Storm Drain,4,"All other Pokémon's single-target [Water]{type}-type moves will hit this Pokémon, including its ally's, ignoring selected target and [accuracy]{mechanic}. This Pokémon is immune to Water moves and its [Special Attack]{mechanic} rises one [stage]{mechanic:stat modifier} upon being hit by one. [Hidden Power]{move} and multiple-target moves, e.g. [Surf]{move}, are completely unaffected. @@ -487,44 +489,60 @@ Unlike [Forecast]{ability} and [Multitype]{ability}, this ability is not tied to 123,Bad Dreams,4,"Opposing Pokémon take 1/8 of their maximum [HP]{mechanic} in damage after each turn while they are [asleep]{mechanic}. This ability stacks if two allied Pokémon have it.",Damages [sleeping]{mechanic:sleep} opponents for 1/8 their max [HP]{mechanic} after each turn. -124,wicked trick,5,"Whenever a move makes contact with this Pokémon, it steals the attacker's held item.",Steals attacking Pokémon's held item on contact. -125,brute force,5,"This Pokémon's moves with an [effect chance]{mechanic} have their power multipled by 1.3 but their effect chance is reduced to 0.","Moves have greater power, but secondary effects never occur." -126,antagonist,5,Stat changes are inverted for this Pokémon.,Stat changes are inverted. +124,wicked trick,5,"Whenever a move makes contact with this Pokémon, it steals the attacker's held item if it does not already have an item. + +This Pokémon cannot steal upon being knocked out. It can steal if the attacker has a [Substitute]{move}, but cannot steal when its own Substitute is hit.",Steals attacking Pokémon's held item on contact. +125,brute force,5,This Pokémon's moves with an [effect chance]{mechanic} have their power multipled by 1.3 but their effect chance is reduced to 0.,"Moves have greater power, but secondary effects never occur." +126,antagonist,5,Stat modifiers are inverted for this Pokémon.,Inverts stat modifiers. 127,tension,5,Opposing Pokémon will not automatically eat held Berries.,Opposing Pokémon can't eat their Berries. -128,competitive spirit,5,"When any of this Pokémon's stats are lowered, its Attack raises by two stages.",Attack sharply rises when stats are lowered. -129,faint-hearted,5,"When this Pokémon has less than half its max HP, its stats are lower.",Stats drop when HP is less than half. -130,cursed body,5,"Moves that hit this Pokémon have a 30% chance of being disabled.",Moves that hit this Pokémon have a chance of being disabled. -131,healing heart,5,Occasionally cures friendly Pokémon's major status ailments. (?),Cures allies' major status ailments. (?) +128,competitive spirit,5,"When any of this Pokémon's stats are [lowered]{mechanic:stat modifier}, its [Attack]{mechanic} rises by two stages.",Raises [Attack]{mechanic} two [stages]{mechanic:stat modifier} upon having any stat lowered. +129,faint-hearted,5,This Pokémon's [Attack]{mechanic} and [Special Attack]{mechanic} are halved when it has less than half its [HP]{mechanic}.,Halves [Attack]{mechanic} and [Special Attack]{mechanic} below 50% [HP]{mechanic}. +130,cursed body,5,Moves that hit this Pokémon have a 30% chance of being [Disabled]{move:Disable].,Has a 30% chance of [Disabling]{move:Disable} any move that hits the Pokémon. +131,healing heart,5,Friendly Pokémon next to this Pokémon in double and triple battles each have a 30% chance of being cured of any [major status ailment]{mechanic} after each turn.,Has a 30% chance of curing each adjacent ally of any [major status ailment]{mechanic} after each turn. 132,friend guard,5,Takes less damage from allies. (?),Takes less damage from allies. (?) -133,fragile armor,5,Every physical move that hits this Pokémon lowers its Defense and raises its Speed. Multi-hit moves such as [Icicle Spear]{move} trigger this ability on each hit.,Physical hits lower Defense and raise Speed. -134,heavy metal,5,This Pokémon has double the usual weight for its species.,Weighs twice normal. -135,light metal,5,This Pokémon has half the usual weight for its species.,Weighs half normal. -136,multi-scale,5,Takes less damage with full HP. (?),Takes less damage with full HP. (?) -137,poison rampage,5,This Pokémon's [Attack]{stat} is multiplied by 1.5 when poisoned.,Attack increases when poisoned. -138,heat rampage,5,This Pokémon's [Special Attack]{stat} is multiplied by 1.5 when poisoned,Special Attack increases when burned. +133,fragile armor,5,"Whenever any move hits this Pokémon, its [Speed]{mechanic} rises one stage and its [Defense]{mechanic} falls one stage. + +This ability triggers on every hit of a multiple-hit move.",Raises [Speed]{mechanic} and lowers [Defense]{mechanic} by one stage upon being hit by any move. +134,heavy metal,5,This Pokémon has double the usual weight for its species.,Doubles the Pokémon's weight. +135,light metal,5,This Pokémon has half the usual weight for its species.,Halves the Pokémon's weight. +136,multi-scale,5,This Pokémon takes half as much damage when it is hit having full [HP]{mechanic}.,Halves damage taken from full [HP]{mechanic}. +137,poison rampage,5,This Pokémon has 1.5× its [Attack]{mechanic} when [poisoned]{mechanic:poison}.,Increases [Attack]{mechanic} to 1.5× when [poisoned]{mechanic:poison}. +138,heat rampage,5,This Pokémon has 1.5× its [Special Attack]{mechanic} when [burned]{mechanic:burn}.,Increases [Special Attack]{mechanic} to 1.5× when [burned]{mechanic:burn}. 139,harvest,5,"If this Pokémon consumed a berry either through [Natural Gift]{move} or by meeting the requirements to eat it, the berry will be restored at the end of the turn. While the Pokémon may consume the berry again that turn, the berry will not be regenerated until the end of the next turn.",Held berry is reusable. -140,telepathy,5,This Pokémon does not take damage from friendly Pokémon's moves.,Avoids attacks from friendly Pokémon. -141,sudden impulse,5,"When this Pokémon enters the field, one of its stats raises by one stage, and one of its stats lowers by one stage.",One stat is raised and one stat is lowered. -142,dustproof,5,This Pokémon takes no damage from weather.,Takes no damage from weather. -143,poisoned drink,5,Poisons attacking Pokémon on contact.,Poisons attacking Pokémon on contact. -144,regeneration,5,Recovers a little HP when switched out. (?),Recovers a little HP when switched out. (?) +140,telepathy,5,"This Pokémon does not take damage from friendly Pokémon's moves, including single-targed moves aimed at it.",Protects against damaging moves from friendly Pokémon. +141,sudden impulse,5,"After each turn, one of this Pokémon's stats rises two [stages]{mechanic:stat modifier}, and another falls one stage.",Raises one stat two [stages]{mechanic:stat modifier} and lowers another one stage after each turn. +142,dustproof,5,This Pokémon does not take damage from [weather]{mechanic}.,Protects against damage from [weather]{mechanic}. +143,poisoned drink,5,This Pokémon's contact moves have a 20% chance of [poisoning]{mechanic:poison} the target.,Has a 20% chance of [poisoning]{mechanic:poison} the target upon hitting it with a contact move. +144,regeneration,5,This Pokémon regains 1/3 of its maximum [HP]{mechanic} upon leaving battle.,Heals for 1/3 max [HP]{mechanic} upon leaving battle. 145,pigeon chest,5,This Pokémon's Defense cannot be lowered.,Defense cannot be lowered. -146,sand fence,5,This Pokémon's Speed is raised during Sandstorm.,Raises Speed during Sandstorm. -147,miracle skin,5,Not affected by non-damaging moves. (?),Not affected by non-damaging moves. (?) +146,sand fence,5,This Pokémon's [Speed]{mechanic} is doubled during a [sandstorm]{mechanic}.,Doubles [Speed]{mechanic} during a [sandstorm]{mechanic}. +147,miracle skin,5,"Moves whose main effect is to inflict a [major status ailment]{mechanic}, such as [Thunder Wave]{move}, have a 50% chance of failing against this Pokémon. + +Damaging moves that inflict major status ailments as an extra effect, such as [Thunderbolt]{move}, are unaffected.",Has a 50% chance of protecting against non-damaging moves that inflict [major status ailments]{mechanic:major status ailment}. 148,analyze,5,This Pokémon inflicts more damage when it moves last within a turn.,Raises power when moving last. -149,illusion,5,Changes to the appearance of an ally. (?),Changes to the appearance of an ally. (?) -150,eccentric,5,Uses Transform upon entering battle.,Uses Transform upon entering battle. +149,illusion,5,"This Pokémon, upon being sent out, appears to have the species, nickname, and Poké Ball of the last Pokémon in the party that is able to battle. This illusion breaks upon being hit by a damaging move. + +Other damage, e.g. from [weather]{mechanic} or [Spikes]{move}, does not break the illusion, nor does damage done to a [Substitute]{move}.",Changes to the appearance of an ally. (?) +150,eccentric,5,This Pokémon uses [Transform] upon entering battle.,Uses Transform upon entering battle. 151,slip through,5,Ignores Barrier and Light Screen. (?),Ignores Barrier and Light Screen. (?) -152,mummify,5,"Whenever a contact move hits this Pokémon, the attacking Pokémon's ability changes to mummify.",Attacker's ability changes to mummify on contact. -153,brazen,5,"When this Pokémon faints another Pokémon, its Attack rises by one stage.",Attack raises by one stage after fainting a Pokémon. +152,mummify,5,"Whenever a contact move hits this Pokémon, the attacking Pokémon's ability changes to mummify.",Changes attacking Pokémon's abilities to mummify on contact. +153,brazen,5,"This Pokémon's [Attack]{mechanic} rises one stage upon knocking out another Pokémon, even a friendly Pokémon. + +This ability does not take effect when the Pokémon indirectly causes another Pokémon to faint, e.g. through [poison]{mechanic} or [Spikes]{move}.",Raises [Attack]{mechanic} one stage upon KOing a Pokémon. 154,righteous heart,5,"Whenever a [Dark]{type}-type move hits this Pokémon, its [Attack]{mechanic} rises one [stage]{mechanic:stat modifier}. It still takes normal damage.",Raises Attack when hit by dark-type moves. -155,skittish,5,"Speed rises when hit by a [Dark]{type}, [Ghost]{type}, or [Bug]{type}-type attack. Multiple hits (such as from [Beat Up]{move} or [Twineedle]{move} trigger this ability each time they hit.","Speed rises when hit by Dark, Ghost, or Bug moves." -156,magic mirror,5,"When this Pokémon is targeted by a non-damaging move, that move will instead hit its user.",Reflects non-damaging moves back at their user. -157,herbivore,5,"Whenever a [Grass]{type}-type move hits this Pokémon, damage is negated (if applicable) and its [Attack]{mechanic} rises one [stage]{mechanic:stat modifier}.",Raises Attack when hit by grass-type moves. -158,mischievous heart,5,"This Pokémon's non-damaging moves have their priority increased by 1. Moves with priority 0 like [Taunt]{move} have the same priority as [Quick Attack]{move}, while [Trick Room]{move}'s priority is increased from -7 to -6.",Non-damaging moves have increased priority. -159,sand power,5,"During a [sandstorm]{mechanic}, this Pokémon's [Rock]{type}-, [Ground]{type}-, and [Steel]{type}-type moves have 1.3× their base power, and it does not take sandstorm damage regardless of type.","Powers up Rock, Ground, and Steel moves during sandstorm." -160,iron thorns,5,"Whenever a move makes contact with this Pokémon, the move's user takes 1/8 of its maximum [HP]{mechanic} in damage.",Damages attacking Pokémon for 1/8 their max [HP]{mechanic} on contact. -161,daruma mode,5,Changes to Daruma form in a pinch.,Changes to Daruma form in a pinch. -162,victory star,5,"Raises every friendly Pokémon's Accuracy, including this Pokémon's.","Raises every friendly Pokémon's Accuracy, including this Pokémon's." +155,skittish,5,"This Pokémon's [Speed]{mechanic} rises one stage with each hit from a damaging [Dark]{type}-, [Ghost]{type}-, or [Bug]{type}-type move.","Raises [Speed]{mechanic} one [stage]{mechanic:stat modifier} when hit by a [Dark]{type}, [Ghost]{type}, or [Bug]{type} move." +156,magic mirror,5,"When this Pokémon is targeted by a non-damaging move, that move will instead hit its user. + +This ability cannot reflect moves that have already been reflected by another Pokémon with this ability. This ability is ignored by [Mold Breaker]{ability}, [Teravolt]{ability}, and [Turboblaze]{ability}.",Reflects non-damaging moves back at their user. +157,herbivore,5,"Whenever a [Grass]{type}-type move hits this Pokémon, its [Attack]{mechanic} rises one [stage]{mechanic:stat modifier} and the move is negated.","Eats [Grass]{type} moves, raising [Attack]{mechanic} one [stage]{mechanic:stat modifier}." +158,mischievous heart,5,This Pokémon's non-damaging moves have their priority increased by 1.,Raises non-damaging moves' priority by one stage. +159,sand power,5,"During a [sandstorm]{mechanic}, this Pokémon's [Rock]{type}-, [Ground]{type}-, and [Steel]{type}-type moves have 1.3× their base power. This Pokémon does not take sandstorm damage, regardless of type.","Powers up [Rock]{type}, [Ground]{type}, and [Steel]{type} moves during a [sandstorm]{mechanic}." +160,iron thorns,5,"Whenever a move makes contact with this Pokémon, the move's user takes 1/8 of its maximum [HP]{mechanic} in damage. + +This ability is identical to [Rough Skin]{ability}.",Damages attacking Pokémon for 1/8 their max [HP]{mechanic} on contact. +161,daruma mode,5,"This Pokémon changes to daruma mode when it falls below 50% of its maximum [HP]{mechanic}. + +This ability has no effect if this Pokémon is not a [hihidaruma]{pokemon}.",Changes [hihidaruma]{pokemon} to daruma mode below 50% max [HP]{mechanic}. +162,victory star,5,"All friendly Pokémon's moves, including this Pokémon's own moves, have 1.1× their usual accuracy.",Raises moves' accuracy to 1.1× for friendly Pokémon. 163,Turboblaze,5,"When this Pokémon acts, if the target has an ability that would hinder or prevent this Pokémon's selected move, that ability is ignored.",Moves ignore abilities that would hinder or prevent them. 164,Teravolt,5,"When this Pokémon acts, if the target has an ability that would hinder or prevent this Pokémon's selected move, that ability is ignored.",Moves ignore abilities that would hinder or prevent them. -- 2.7.4 From a8d1ef5fbcb02ebc7d3356ad3e096da6469d9473 Mon Sep 17 00:00:00 2001 From: Zhorken Date: Mon, 6 Dec 2010 17:45:43 -0500 Subject: [PATCH 04/16] Implement an ability changelog; add a few changes. #78 --- pokedex/data/csv/ability_changelog.csv | 12 ++++++++++++ pokedex/db/tables.py | 22 +++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 pokedex/data/csv/ability_changelog.csv diff --git a/pokedex/data/csv/ability_changelog.csv b/pokedex/data/csv/ability_changelog.csv new file mode 100644 index 0000000..345a0d5 --- /dev/null +++ b/pokedex/data/csv/ability_changelog.csv @@ -0,0 +1,12 @@ +ability_id,changed_in_version_group_id,effect +1,11,Has no effect in battle. +16,11,Triggers on every hit of multiple-hit moves. +24,8,Inflicts only 1/16 of the attacker's maximum [HP]{mechanic} in damage. +28,11,Passes back toxic [poison]{mechanic} as regular poison. +31,8,"Does not absorb non-damaging [Electric]{type} moves, i.e. [Thunder Wave]{move}." +31,11,Grants no [Electric]{type} immunity or [Special Attack]{mechanic} boosts. +53,11,Has no effect in battle. +98,11,"Paralysis cannot prevent the Pokémon from moving, though the [Speed]{mechanic} cut is unaffected." +102,11,[Rest]{move} works as normal during [strong sunlight]{mechanic}. +103,11,[Fling]{move} can be used as normal. +114,11,Grants no [Water]{type} immunity or [Special Attack]{mechanic} boosts. diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py index 1db5898..958cfb7 100644 --- a/pokedex/db/tables.py +++ b/pokedex/db/tables.py @@ -53,6 +53,16 @@ class Ability(TableBase): short_effect = Column(markdown.MarkdownColumn(255), nullable=False, info=dict(description="Short summary of this ability's effect", format='markdown')) +class AbilityChangelog(TableBase): + """History of changes to abilities across main game versions.""" + __tablename__ = 'ability_changelog' + ability_id = Column(Integer, ForeignKey('abilities.id'), primary_key=True, nullable=False, + info=dict(description="The ID of the ability that changed")) + changed_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True, nullable=False, + info=dict(description="The ID of the version group in which the ability changed")) + effect = Column(markdown.MarkdownColumn(255), nullable=False, + info=dict(description="A description of the old behavior", format='markdown')) + class AbilityFlavorText(TableBase): u"""In-game flavor text of an ability """ @@ -1261,18 +1271,22 @@ class VersionGroupRegion(TableBase): info=dict(description=u"ID of the region")) class Version(TableBase): - u"""A version of a mainline pokémon game + u"""An individual main-series Pokémon game """ __tablename__ = 'versions' id = Column(Integer, primary_key=True, nullable=False, - info=dict(description=u"A numeric ID")) + info=dict(description=u"A unique ID for this version")) version_group_id = Column(Integer, ForeignKey('version_groups.id'), nullable=False, - info=dict(description=u"ID of the version group this game belongs to")) + info=dict(description=u"The ID of the version group this game belongs to")) name = Column(Unicode(32), nullable=False, info=dict(description=u'The English name of the game, without the "Pokémon" prefix', official=True, format='plaintext')) ### Relations down here, to avoid ordering problems +Ability.changelog = relation(AbilityChangelog, + order_by=AbilityChangelog.changed_in_version_group_id.desc(), + backref='ability', +) Ability.flavor_text = relation(AbilityFlavorText, order_by=AbilityFlavorText.version_group_id, backref='ability') Ability.foreign_names = relation(AbilityName, backref='ability') Ability.generation = relation(Generation, backref='abilities') @@ -1280,6 +1294,8 @@ Ability.pokemon = relation(Pokemon, secondary=PokemonAbility.__table__, ) +AbilityChangelog.changed_in = relation(VersionGroup, backref='ability_changelog') + AbilityFlavorText.version_group = relation(VersionGroup) AbilityName.language = relation(Language) -- 2.7.4 From fe2921bc415947e45f12d4a639fe97412b018e22 Mon Sep 17 00:00:00 2001 From: Zhorken Date: Mon, 6 Dec 2010 17:56:43 -0500 Subject: [PATCH 05/16] Make version_group.versions an actual relation with an order_by(). --- pokedex/db/tables.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py index 958cfb7..0e336ce 100644 --- a/pokedex/db/tables.py +++ b/pokedex/db/tables.py @@ -1578,9 +1578,10 @@ Type.foreign_names = relation(TypeName, backref='type') TypeName.language = relation(Language) -Version.version_group = relation(VersionGroup, backref='versions') +Version.version_group = relation(VersionGroup, back_populates='versions') Version.generation = association_proxy('version_group', 'generation') +VersionGroup.versions = relation(Version, order_by=Version.id, back_populates='version_group') VersionGroup.generation = relation(Generation, backref='version_groups') VersionGroup.version_group_regions = relation(VersionGroupRegion, backref='version_group') VersionGroup.regions = association_proxy('version_group_regions', 'region') -- 2.7.4 From 9b1ce598afe825450b213baffd25dc33bf288b36 Mon Sep 17 00:00:00 2001 From: Zhorken Date: Mon, 6 Dec 2010 18:04:46 -0500 Subject: [PATCH 06/16] Capitalize types' names. #259 --- pokedex/data/csv/types.csv | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pokedex/data/csv/types.csv b/pokedex/data/csv/types.csv index 8f74b4a..abd1afa 100644 --- a/pokedex/data/csv/types.csv +++ b/pokedex/data/csv/types.csv @@ -1,19 +1,19 @@ id,name,abbreviation,generation_id,damage_class_id -1,normal,NRM,1,2 -2,fighting,FGT,1,2 -3,flying,FLY,1,2 -4,poison,PSN,1,2 -5,ground,GRN,1,2 -6,rock,RCK,1,2 -7,bug,BUG,1,2 -8,ghost,GST,1,2 -9,steel,STL,2,2 -10,fire,FIR,1,3 -11,water,WTR,1,3 -12,grass,GRS,1,3 -13,electric,ELE,1,3 -14,psychic,PSY,1,3 -15,ice,ICE,1,3 -16,dragon,DRG,1,3 -17,dark,DAR,2,3 +1,Normal,NRM,1,2 +2,Fighting,FGT,1,2 +3,Flying,FLY,1,2 +4,Poison,PSN,1,2 +5,Ground,GRN,1,2 +6,Rock,RCK,1,2 +7,Bug,BUG,1,2 +8,Ghost,GST,1,2 +9,Steel,STL,2,2 +10,Fire,FIR,1,3 +11,Water,WTR,1,3 +12,Grass,GRS,1,3 +13,Electric,ELE,1,3 +14,Psychic,PSY,1,3 +15,Ice,ICE,1,3 +16,Dragon,DRG,1,3 +17,Dark,DAR,2,3 18,???,???,2,1 -- 2.7.4 From aed38ff426f082a2c4f3ae10433b915bd44aee08 Mon Sep 17 00:00:00 2001 From: Zhorken Date: Mon, 6 Dec 2010 18:10:52 -0500 Subject: [PATCH 07/16] Order move changelogs descendingly. --- pokedex/db/tables.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py index 0e336ce..177309a 100644 --- a/pokedex/db/tables.py +++ b/pokedex/db/tables.py @@ -1375,7 +1375,7 @@ Machine.item = relation(Item) Machine.version_group = relation(VersionGroup) Move.changelog = relation(MoveChangelog, - order_by=MoveChangelog.changed_in_version_group_id.asc(), + order_by=MoveChangelog.changed_in_version_group_id.desc(), backref='move', ) Move.contest_effect = relation(ContestEffect, backref='moves') -- 2.7.4 From e5122a7bc586d84006bccc6f6e2f4e241e4a8ad0 Mon Sep 17 00:00:00 2001 From: Eevee Date: Mon, 6 Dec 2010 21:41:45 -0800 Subject: [PATCH 08/16] New names: Zorua/Zoroark, Illusion, Hone Claws/Foul Play. #451 --- pokedex/data/csv/abilities.csv | 2 +- pokedex/data/csv/moves.csv | 4 ++-- pokedex/data/csv/pokemon.csv | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pokedex/data/csv/abilities.csv b/pokedex/data/csv/abilities.csv index e1c75a8..6aff93a 100644 --- a/pokedex/data/csv/abilities.csv +++ b/pokedex/data/csv/abilities.csv @@ -520,7 +520,7 @@ This ability triggers on every hit of a multiple-hit move.",Raises [Speed]{mecha Damaging moves that inflict major status ailments as an extra effect, such as [Thunderbolt]{move}, are unaffected.",Has a 50% chance of protecting against non-damaging moves that inflict [major status ailments]{mechanic:major status ailment}. 148,analyze,5,This Pokémon inflicts more damage when it moves last within a turn.,Raises power when moving last. -149,illusion,5,"This Pokémon, upon being sent out, appears to have the species, nickname, and Poké Ball of the last Pokémon in the party that is able to battle. This illusion breaks upon being hit by a damaging move. +149,Illusion,5,"This Pokémon, upon being sent out, appears to have the species, nickname, and Poké Ball of the last Pokémon in the party that is able to battle. This illusion breaks upon being hit by a damaging move. Other damage, e.g. from [weather]{mechanic} or [Spikes]{move}, does not break the illusion, nor does damage done to a [Substitute]{move}.",Changes to the appearance of an ally. (?) 150,eccentric,5,This Pokémon uses [Transform] upon entering battle.,Uses Transform upon entering battle. diff --git a/pokedex/data/csv/moves.csv b/pokedex/data/csv/moves.csv index eedbbe9..f5d8f92 100644 --- a/pokedex/data/csv/moves.csv +++ b/pokedex/data/csv/moves.csv @@ -466,7 +466,7 @@ id,name,generation_id,type_id,power,pp,accuracy,priority,target_id,damage_class_ 465,Seed Flare,4,12,120,5,85,0,10,3,272,40,1,,22 466,Ominous Wind,4,8,60,5,100,0,10,3,141,10,4,,11 467,Shadow Force,4,8,120,5,100,0,10,2,273,,4,,22 -468,claw sharpen,5,17,0,15,,0,7,1,278,,,, +468,Hone Claws,5,17,0,15,,0,7,1,278,,,, 469,wide guard,5,6,0,10,,3,4,1,279,,,, 470,guard share,5,14,0,10,,0,10,1,280,,,, 471,power share,5,14,0,10,,0,10,1,281,,,, @@ -490,7 +490,7 @@ id,name,generation_id,type_id,power,pp,accuracy,priority,target_id,damage_class_ 489,snake coil,5,4,0,20,,0,7,1,323,,,, 490,low kick 2.0,5,2,60,20,100,0,10,2,21,100,,, 491,acid bomb,5,4,40,20,100,0,10,3,297,100,,, -492,trickery,5,17,95,15,100,0,10,2,298,,,, +492,Foul Play,5,17,95,15,100,0,10,2,298,,,, 493,simple beam,5,1,0,15,100,0,10,1,299,,,, 494,befriend,5,1,0,15,100,0,10,1,300,,,, 495,after you,5,1,0,15,,0,10,1,301,,,, diff --git a/pokedex/data/csv/pokemon.csv b/pokedex/data/csv/pokemon.csv index 9d708c3..eb3bca7 100644 --- a/pokedex/data/csv/pokemon.csv +++ b/pokedex/data/csv/pokemon.csv @@ -568,8 +568,8 @@ id,name,generation_id,evolution_chain_id,height,weight,species,color_id,pokemon_ 567,aakeosu,5,289,14,320,さいこどり,10,,,1,45,177,70,0,30,0,0 568,yabukuron,5,290,6,310,ゴミぶくろ,5,,,4,190,66,70,0,20,0,0 569,dasutodasu,5,290,19,1073,ゴミすてば,5,,,4,60,166,70,0,20,0,0 -570,zoroa,5,291,7,125,わるぎつね,4,,,1,75,66,70,0,25,0,0 -571,zoroaaku,5,291,16,811,ばけぎつね,4,,,1,45,179,70,0,20,0,0 +570,Zorua,5,291,7,125,Tricky Fox,4,,,1,75,66,70,0,25,0,0 +571,Zoroark,5,291,16,811,Illusion Fox,4,,,1,45,179,70,0,20,0,0 572,chiraamy,5,292,4,58,チンチラ,4,,,6,255,60,70,0,15,0,0 573,chirachiino,5,292,5,75,スカーフ,4,,,6,60,165,70,0,15,0,0 574,gochimu,5,293,4,58,ぎょうし,7,,,6,200,58,70,0,20,0,0 -- 2.7.4 From a7f54ec5d68f5ca1a4b5e2480ea60c8bb70498b2 Mon Sep 17 00:00:00 2001 From: Eevee Date: Mon, 6 Dec 2010 22:00:53 -0800 Subject: [PATCH 09/16] Get rid of the final Gen V ability (?)s. #376 --- pokedex/data/csv/abilities.csv | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pokedex/data/csv/abilities.csv b/pokedex/data/csv/abilities.csv index 6aff93a..636332e 100644 --- a/pokedex/data/csv/abilities.csv +++ b/pokedex/data/csv/abilities.csv @@ -499,7 +499,7 @@ This Pokémon cannot steal upon being knocked out. It can steal if the attacker 129,faint-hearted,5,This Pokémon's [Attack]{mechanic} and [Special Attack]{mechanic} are halved when it has less than half its [HP]{mechanic}.,Halves [Attack]{mechanic} and [Special Attack]{mechanic} below 50% [HP]{mechanic}. 130,cursed body,5,Moves that hit this Pokémon have a 30% chance of being [Disabled]{move:Disable].,Has a 30% chance of [Disabling]{move:Disable} any move that hits the Pokémon. 131,healing heart,5,Friendly Pokémon next to this Pokémon in double and triple battles each have a 30% chance of being cured of any [major status ailment]{mechanic} after each turn.,Has a 30% chance of curing each adjacent ally of any [major status ailment]{mechanic} after each turn. -132,friend guard,5,Takes less damage from allies. (?),Takes less damage from allies. (?) +132,friend guard,5,This Pokémon's moves inflict less damage on friendly Pokémon.,Inflicts less damage on friendly Pokémon. 133,fragile armor,5,"Whenever any move hits this Pokémon, its [Speed]{mechanic} rises one stage and its [Defense]{mechanic} falls one stage. This ability triggers on every hit of a multiple-hit move.",Raises [Speed]{mechanic} and lowers [Defense]{mechanic} by one stage upon being hit by any move. @@ -522,9 +522,9 @@ Damaging moves that inflict major status ailments as an extra effect, such as [T 148,analyze,5,This Pokémon inflicts more damage when it moves last within a turn.,Raises power when moving last. 149,Illusion,5,"This Pokémon, upon being sent out, appears to have the species, nickname, and Poké Ball of the last Pokémon in the party that is able to battle. This illusion breaks upon being hit by a damaging move. -Other damage, e.g. from [weather]{mechanic} or [Spikes]{move}, does not break the illusion, nor does damage done to a [Substitute]{move}.",Changes to the appearance of an ally. (?) -150,eccentric,5,This Pokémon uses [Transform] upon entering battle.,Uses Transform upon entering battle. -151,slip through,5,Ignores Barrier and Light Screen. (?),Ignores Barrier and Light Screen. (?) +Other damage, e.g. from [weather]{mechanic} or [Spikes]{move}, does not break the illusion, nor does damage done to a [Substitute]{move}.",Appears to be the last Pokémon in the party until hit by a damaging move. +150,eccentric,5,This Pokémon uses [Transform]{move} upon entering battle.,Uses Transform upon entering battle. +151,slip through,5,"This Pokémon's moves ignore the effects of [Light Screen]{move}, [Reflect]{move}, or [Safeguard]{move} on their targets.","Ignores [Light Screen]{move}, [Reflect]{move}, and [Safeguard]{move} on the target." 152,mummify,5,"Whenever a contact move hits this Pokémon, the attacking Pokémon's ability changes to mummify.",Changes attacking Pokémon's abilities to mummify on contact. 153,brazen,5,"This Pokémon's [Attack]{mechanic} rises one stage upon knocking out another Pokémon, even a friendly Pokémon. -- 2.7.4 From 39c5a5764eb7fa9e3e8d0687f2a4dae98d93dd88 Mon Sep 17 00:00:00 2001 From: Brigit Lemanski Date: Tue, 7 Dec 2010 03:02:31 -0500 Subject: [PATCH 10/16] Added some move changes from RGBY to GSC, fixed explosion for gen v --- pokedex/data/csv/move_changelog.csv | 7 +++++++ pokedex/data/csv/move_effects.csv | 6 ++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pokedex/data/csv/move_changelog.csv b/pokedex/data/csv/move_changelog.csv index f738b61..68b00e3 100644 --- a/pokedex/data/csv/move_changelog.csv +++ b/pokedex/data/csv/move_changelog.csv @@ -1,18 +1,25 @@ move_id,changed_in_version_group_id,power,pp,accuracy +13,3,,,75 +17,3,35,, 20,11,,,75 26,11,85,25, 33,11,35,,95 35,11,,,85 37,11,90,20, +38,3,100,, 50,11,,,80 +59,3,,,90 +67,3,50,,90 80,11,90,20, 83,11,15,,70 92,11,,,85 +120,3,130,, 128,11,,,75 136,11,100,20, 137,11,,,75 139,11,,,55 152,11,,,85 +153,3,170,, 170,11,,40, 178,11,,,85 202,11,60,, diff --git a/pokedex/data/csv/move_effects.csv b/pokedex/data/csv/move_effects.csv index 108c265..c0f9645 100644 --- a/pokedex/data/csv/move_effects.csv +++ b/pokedex/data/csv/move_effects.csv @@ -6,7 +6,9 @@ id,short_effect,effect 5,Has a $effect_chance% chance to burn the target.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [burn]{mechanic} the target. 6,Has a $effect_chance% chance to freeze the target.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [freeze]{mechanic} the target. 7,Has a $effect_chance% chance to paralyze the target.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [paralyze]{mechanic} the target. -8,Inflicts double damage. User faints.,"User [faint]{mechanic}s, even if the attack [fail]{mechanic}s or [miss]{mechanic}es. Inflicts [regular damage]{mechanic}, but halves the target's [Defense]{mechanic} for damage calculation, which is similar to doubling the attack's [power]{mechanic}." +8,User faints.,"User [faint]{mechanic}s, even if the attack [fail]{mechanic}s or [miss]{mechanic}es. Inflicts [regular damage]{mechanic}. + +Before BW: Halves the target's [Defense]{mechanic} for damage calculation, which is similar to doubling the attack's [power]{mechanic}." 9,Only works on sleeping Pokémon. Heals the user by half the damage inflicted.,Only works on [sleep]{mechanic}ing Pokémon. Inflicts [regular damage]{mechanic}. Heals the user for half the damage inflicted. 10,Uses the target's last used move.,"Uses the last move targeted at the user by a Pokémon still on the [field]{mechanic}. A move counts as targeting the user even if it hit multiple Pokémon, as long as the user was one of them; however, moves targeting the [field]{mechanic} itself do not count. If the user has not been targeted by an appropriate move since entering the [field]{mechanic}, or if no Pokémon that targeted the user remains on the [field]{mechanic}, this move will [fail]{mechanic}. @@ -55,7 +57,7 @@ If the user is holding [Light Clay]{item}, the barrier lasts for eight turns. This move fails if the Pokémon cannot fall asleep due to [Uproar]{move}, [Insomnia]{ability}, or [Vital Spirit]{ability}. -After Generation III, this move fails if the Pokémon is already asleep." +Before DP, this move fails if the Pokémon is already asleep." 39,Causes a one-hit KO.,"Inflicts damage equal to the target's max [HP]{mechanic}. Ignores [accuracy]{mechanic} and [evasion]{mechanic} modifiers. This move's [accuracy]{mechanic} is 30% plus 1% for each level the user is higher than the target. If the user is a lower level than the target, this move will [fail]{mechanic}. Because this move inflicts a specific and finite amount of damage, [Endure]{move} still prevents the target from fainting. -- 2.7.4 From 30cf4000f012aabf0ceec70f86e75842a5812987 Mon Sep 17 00:00:00 2001 From: Zhorken Date: Tue, 7 Dec 2010 06:23:55 -0500 Subject: [PATCH 11/16] Add foreign names for Zoroark et al. --- pokedex/data/csv/ability_names.csv | 4 ++++ pokedex/data/csv/move_names.csv | 8 ++++++++ pokedex/data/csv/pokemon_names.csv | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/pokedex/data/csv/ability_names.csv b/pokedex/data/csv/ability_names.csv index bb3b717..830cde1 100644 --- a/pokedex/data/csv/ability_names.csv +++ b/pokedex/data/csv/ability_names.csv @@ -640,6 +640,10 @@ ability_id,language_id,name 147,1,ミラクルスキン 148,1,アナライズ 149,1,イリュージョン +149,5,Illusion +149,6,Trugbild +149,7,Ilusión +149,8,Illusione 150,1,かわりもの 151,1,すりぬけ 152,1,ミイラ diff --git a/pokedex/data/csv/move_names.csv b/pokedex/data/csv/move_names.csv index 4a33507..10e4b8c 100644 --- a/pokedex/data/csv/move_names.csv +++ b/pokedex/data/csv/move_names.csv @@ -2335,6 +2335,10 @@ move_id,language_id,name 467,7,Golpe Umbrío 467,8,Oscurotuffo 468,1,つめとぎ +468,5,Aiguisage +468,6,Klauenwetzer +468,7,Afilagarras +468,8,Unghiaguzze 469,1,ワイドガード 470,1,ガードシェア 471,1,パワーシェア @@ -2359,6 +2363,10 @@ move_id,language_id,name 490,1,ローキック 491,1,アシッドボム 492,1,イカサマ +492,5,Tricherie +492,6,Schmarotzer +492,7,Juego Sucio +492,8,Ripicca 493,1,シンプルビーム 494,1,なかまづくり 495,1,おさきにどうぞ diff --git a/pokedex/data/csv/pokemon_names.csv b/pokedex/data/csv/pokemon_names.csv index ef9966c..b3954e7 100644 --- a/pokedex/data/csv/pokemon_names.csv +++ b/pokedex/data/csv/pokemon_names.csv @@ -3040,7 +3040,11 @@ pokemon_id,language_id,name 568,1,ヤブクロン 569,1,ダストダス 570,1,ゾロア +570,5,Zorua +570,6,Zorua 571,1,ゾロアーク +571,5,Zoroark +571,6,Zoroark 572,1,チラーミィ 573,1,チラチーノ 574,1,ゴチム -- 2.7.4 From f79f5d23ea1fb067fadfe19fb7456c690edaef56 Mon Sep 17 00:00:00 2001 From: "Lynn \"Zhorken\" Vaughan" Date: Tue, 7 Dec 2010 12:43:58 -0500 Subject: [PATCH 12/16] Rename the "none" damage class to "non-damaging". Also decapitalize the classes' names, because they make sense that way and they're not among the things the games always capitalize. --- pokedex/data/csv/move_damage_classes.csv | 6 +++--- .../chrome/damage-classes/{none.png => non-damaging.png} | Bin pokedex/db/tables.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename pokedex/data/media/chrome/damage-classes/{none.png => non-damaging.png} (100%) diff --git a/pokedex/data/csv/move_damage_classes.csv b/pokedex/data/csv/move_damage_classes.csv index 669693a..1baeeda 100644 --- a/pokedex/data/csv/move_damage_classes.csv +++ b/pokedex/data/csv/move_damage_classes.csv @@ -1,4 +1,4 @@ id,name,description -1,None,No damage -2,Physical,"Physical damage, controlled by Attack and Defense" -3,Special,"Special damage, controlled by Special Attack and Special Defense" +1,non-damaging,No damage +2,physical,"Physical damage, controlled by Attack and Defense" +3,special,"Special damage, controlled by Special Attack and Special Defense" diff --git a/pokedex/data/media/chrome/damage-classes/none.png b/pokedex/data/media/chrome/damage-classes/non-damaging.png similarity index 100% rename from pokedex/data/media/chrome/damage-classes/none.png rename to pokedex/data/media/chrome/damage-classes/non-damaging.png diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py index 177309a..59755a7 100644 --- a/pokedex/db/tables.py +++ b/pokedex/db/tables.py @@ -573,7 +573,7 @@ class MoveDamageClass(TableBase): __tablename__ = 'move_damage_classes' id = Column(Integer, primary_key=True, nullable=False, info=dict(description="A numeric ID")) - name = Column(Unicode(8), nullable=False, + name = Column(Unicode(16), nullable=False, info=dict(description="An English name of the class", format='plaintext')) description = Column(Unicode(64), nullable=False, info=dict(description="An English description of the class", format='plaintext')) -- 2.7.4 From 686c1ce41669bfd1d0837d37733e5a6a8616389c Mon Sep 17 00:00:00 2001 From: "Lynn \"Zhorken\" Vaughan" Date: Tue, 7 Dec 2010 14:38:56 -0500 Subject: [PATCH 13/16] Remove the erroneous Dragonite-only Iron Tail tutor. --- pokedex/data/csv/pokemon_moves.csv | 2 -- 1 file changed, 2 deletions(-) diff --git a/pokedex/data/csv/pokemon_moves.csv b/pokedex/data/csv/pokemon_moves.csv index dcecad3..10ca269 100644 --- a/pokedex/data/csv/pokemon_moves.csv +++ b/pokedex/data/csv/pokemon_moves.csv @@ -69993,7 +69993,6 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order 149,9,218,4,0, 149,9,219,1,47, 149,9,219,4,0, -149,9,231,3,0, 149,9,231,4,0, 149,9,237,4,0, 149,9,239,1,1,7 @@ -70086,7 +70085,6 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order 149,10,218,4,0, 149,10,219,1,47, 149,10,219,4,0, -149,10,231,3,0, 149,10,231,4,0, 149,10,237,4,0, 149,10,239,1,1,7 -- 2.7.4 From 650e19ed2270b7ae9eeb135662725fc840579dab Mon Sep 17 00:00:00 2001 From: Brigit Lemanski Date: Tue, 7 Dec 2010 17:05:17 -0500 Subject: [PATCH 14/16] Changelog for RGBY -> GS, HGSS -> BW --- pokedex/data/csv/move_changelog.csv | 101 +++++++++++++++++++++--------------- pokedex/data/csv/move_effects.csv | 10 ++-- pokedex/db/tables.py | 8 ++- 3 files changed, 74 insertions(+), 45 deletions(-) diff --git a/pokedex/data/csv/move_changelog.csv b/pokedex/data/csv/move_changelog.csv index 68b00e3..30425cc 100644 --- a/pokedex/data/csv/move_changelog.csv +++ b/pokedex/data/csv/move_changelog.csv @@ -1,41 +1,60 @@ -move_id,changed_in_version_group_id,power,pp,accuracy -13,3,,,75 -17,3,35,, -20,11,,,75 -26,11,85,25, -33,11,35,,95 -35,11,,,85 -37,11,90,20, -38,3,100,, -50,11,,,80 -59,3,,,90 -67,3,50,,90 -80,11,90,20, -83,11,15,,70 -92,11,,,85 -120,3,130,, -128,11,,,75 -136,11,100,20, -137,11,,,75 -139,11,,,55 -152,11,,,85 -153,3,170,, -170,11,,40, -178,11,,,85 -202,11,60,, -210,11,10,, -248,11,80,15,90 -250,11,15,,70 -251,11,10,, -253,11,50,, -328,11,15,,70 -331,11,10,, -333,11,10,, -343,11,40,, -350,11,,,80 -353,11,120,,85 -382,11,0,, -386,11,60,, -387,11,130,, -409,11,60,5, -463,11,,,70 +move_id,changed_in_version_group_id,type_id,power,pp,accuracy,effect_id,effect_chance +2,3,1,,,,, +13,3,,,,75,, +16,3,1,,,,1, +17,3,,35,,,, +20,11,,,,75,, +23,3,,,,,32, +26,11,,85,25,,, +33,11,,35,,95,, +35,11,,,,85,, +37,11,,90,20,,, +38,3,,100,,,49, +40,3,,,,,,20 +44,3,1,,,,,10 +50,11,,,,80,, +57,5,,,,,1, +59,3,,,,90,, +67,3,,50,,90,1, +74,11,,,,,14, +76,3,,,,,81, +80,11,,90,20,,, +83,11,,15,,70,, +87,3,,,,,7,10 +89,3,,,,,1, +92,11,,,,85,, +94,3,,,,,,30 +120,3,,130,,,, +126,3,,,,,,30 +128,11,,,,75,, +130,3,,,,,81, +136,11,,100,20,,, +137,11,,,,75,, +139,11,,,,55,, +143,3,,,,,81,0 +146,3,,,,,1,0 +152,11,,,,85,, +153,3,,170,,,, +157,3,,,,,1,0 +161,3,,,,,1,0 +170,11,,,40,,, +174,11,18,,,,, +178,11,,,,85,, +202,11,,60,,,, +210,11,,10,,,, +248,11,,80,15,90,, +250,11,,15,,70,, +251,11,,10,,,, +253,11,,50,,,, +294,11,,,,,54, +328,11,,15,,70,, +331,11,,10,,,, +333,11,,10,,,, +343,11,,40,,,, +350,11,,,,80,, +353,11,,120,,85,, +382,11,,0,,,, +386,11,,60,,,, +387,11,,130,,,, +409,11,,60,5,,, +463,11,,,,70,, diff --git a/pokedex/data/csv/move_effects.csv b/pokedex/data/csv/move_effects.csv index c0f9645..972f858 100644 --- a/pokedex/data/csv/move_effects.csv +++ b/pokedex/data/csv/move_effects.csv @@ -77,7 +77,9 @@ Has a 3/8 chance each to hit 2 or 3 times, and a 1/8 chance each to hit 4 or 5 t 45,Hits twice in one turn.,Inflicts [regular damage]{mechanic}. Hits twice in one turn. 46,"If the user misses, it takes half the damage it would have inflicted in recoil.","Inflicts [regular damage]{mechanic}. If this move misses, is blocked by Protect or Detect, or has no effect, the user takes half the damage it would have inflicted in recoil. This recoil damage will not exceed half the user's max HP. -This move cannot be used while [Gravity]{move} is in effect." +This move cannot be used while [Gravity]{move} is in effect. + +Before GS: If this move misses, the user takes 1 point of damage in recoil." 47,Protects the user's stats from being changed by enemy moves.,"Pokémon on the user's side of the [field]{mechanic} are immune to stat-lowering effects for five turns. [Guard Swap]{move}, [Heart Swap]{move}, and [Power Swap]{move} may still be used. @@ -820,9 +822,11 @@ This effect is passed on by [Baton Pass]{move}." 254,User takes 1/3 the damage inflicted in recoil. Has a $effect_chance% chance to burn the target.,"Inflicts [regular damage]{mechanic}. User takes 1/3 the damage it inflicts in recoil. Has a $effect_chance% chance to [burn]{mechanic} the target. [Frozen]{mechanic} Pokémon may use this move, in which case they will thaw." 255,User takes 1/4 its max HP in recoil.,"Inflicts [typeless]{mechanic} [regular damage]{mechanic}. User takes 1/4 its max [HP]{mechanic} in recoil. Ignores [accuracy]{mechanic} and [evasion]{mechanic} modifiers. -This move is used automatically when a Pokémon cannot use any other move legally, e.g., due to having no [PP]{mechanic} remaining or being under the effect of both [Encore]{move} and [Torment]{move} at the same time +This move is used automatically when a Pokémon cannot use any other move legally, e.g., due to having no [PP]{mechanic} remaining or being under the effect of both [Encore]{move} and [Torment]{move} at the same time. + +This move cannot be copied by [Mimic]{move}, [Mirror Move]{move}, or [Sketch]{move}, nor selected by [Assist]{move} or [Metronome]{move}, nor forced by [Encore]{move}. -This move cannot be copied by [Mimic]{move}, [Mirror Move]{move}, or [Sketch]{move}, nor selected by [Assist]{move} or [Metronome]{move}, nor forced by [Encore]{move}." +Before GS: This move inflicts [normal]{type}-type damage and the user receives 1/2 of damage dealt in recoil." 256,"User dives underwater, dodging all attacks, and hits next turn.","Inflicts [regular damage]{mechanic}. User dives underwater for one turn, becoming immune to attack, and hits on the second turn. During the immune turn, [Low Kick]{move}, [Surf]{move}, and [Whirlpool]{move} still hit the user normally. [Surf]{move} and [Whirlpool]{move} also have double power against the user. diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py index 59755a7..8d7f3cf 100644 --- a/pokedex/db/tables.py +++ b/pokedex/db/tables.py @@ -673,7 +673,7 @@ class Move(TableBase): info=dict(description="ID of the damage class (physical/special) of the move")) effect_id = Column(Integer, ForeignKey('move_effects.id'), nullable=False, info=dict(description="ID of the move's effect")) - effect_chance = Column(Integer, + effect_chance = Column(Integer, nullable=True info=dict(description="The chance for a secondary effect. What this is a chance of is specified by the move's effect.")) contest_type_id = Column(Integer, ForeignKey('contest_types.id'), nullable=True, info=dict(description="ID of the move's Contest type (e.g. cool or smart)")) @@ -689,12 +689,18 @@ class MoveChangelog(TableBase): info=dict(description="ID of the move that changed")) changed_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True, nullable=False, info=dict(description="ID of the version group in which the move changed")) + type_id = Column(Integer, ForeignKey('types.id'), nullable=True, + info=dict(description="Prior type of the move, or NULL if unchanged")) power = Column(SmallInteger, nullable=True, info=dict(description="Prior base power of the move, or NULL if unchanged")) pp = Column(SmallInteger, nullable=True, info=dict(description="Prior base PP of the move, or NULL if unchanged")) accuracy = Column(SmallInteger, nullable=True, info=dict(description="Prior accuracy of the move, or NULL if unchanged")) + effect_id = Column(Integer, ForeignKey('move_effects.id'), nullable=True, + info=dict(description="Prior ID of the effect, or NULL if unchanged")) + effect_chance = Column(Integer, nullable=True, + info=dict(description="Prior effect chance, or NULL if unchanged")) class Nature(TableBase): u"""A nature a pokémon can have, such as Calm or Brave -- 2.7.4 From 324b0ea4291c58bd10b6d54ff46888d323a56e34 Mon Sep 17 00:00:00 2001 From: Brigit Lemanski Date: Tue, 7 Dec 2010 18:49:16 -0500 Subject: [PATCH 15/16] Fixing typo in Rest description. --- pokedex/data/csv/move_effects.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pokedex/data/csv/move_effects.csv b/pokedex/data/csv/move_effects.csv index 972f858..7499127 100644 --- a/pokedex/data/csv/move_effects.csv +++ b/pokedex/data/csv/move_effects.csv @@ -57,7 +57,7 @@ If the user is holding [Light Clay]{item}, the barrier lasts for eight turns. This move fails if the Pokémon cannot fall asleep due to [Uproar]{move}, [Insomnia]{ability}, or [Vital Spirit]{ability}. -Before DP, this move fails if the Pokémon is already asleep." +After DP, this move fails if the Pokémon is already asleep." 39,Causes a one-hit KO.,"Inflicts damage equal to the target's max [HP]{mechanic}. Ignores [accuracy]{mechanic} and [evasion]{mechanic} modifiers. This move's [accuracy]{mechanic} is 30% plus 1% for each level the user is higher than the target. If the user is a lower level than the target, this move will [fail]{mechanic}. Because this move inflicts a specific and finite amount of damage, [Endure]{move} still prevents the target from fainting. -- 2.7.4 From 7037abcfe81dcab1fe4e6d65c00b2da0aae427b2 Mon Sep 17 00:00:00 2001 From: Brigit Lemanski Date: Tue, 7 Dec 2010 20:23:14 -0500 Subject: [PATCH 16/16] Implement move effect changelog; misc move fixes. --- pokedex/data/csv/move_changelog.csv | 5 +++++ pokedex/data/csv/move_effect_changelog.csv | 13 +++++++++++++ pokedex/data/csv/move_effects.csv | 26 ++++++++------------------ pokedex/data/csv/moves.csv | 2 +- pokedex/db/tables.py | 10 ++++++++++ 5 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 pokedex/data/csv/move_effect_changelog.csv diff --git a/pokedex/data/csv/move_changelog.csv b/pokedex/data/csv/move_changelog.csv index 30425cc..c31f262 100644 --- a/pokedex/data/csv/move_changelog.csv +++ b/pokedex/data/csv/move_changelog.csv @@ -15,6 +15,7 @@ move_id,changed_in_version_group_id,type_id,power,pp,accuracy,effect_id,effect_c 50,11,,,,80,, 57,5,,,,,1, 59,3,,,,90,, +59,8,,,,,6, 67,3,,50,,90,1, 74,11,,,,,14, 76,3,,,,,81, @@ -24,6 +25,10 @@ move_id,changed_in_version_group_id,type_id,power,pp,accuracy,effect_id,effect_c 89,3,,,,,1, 92,11,,,,85,, 94,3,,,,,,30 +95,8,,,,60,, +95,9,,,,70,, +107,3,,,,,17, +111,3,,,,,12, 120,3,,130,,,, 126,3,,,,,,30 128,11,,,,75,, diff --git a/pokedex/data/csv/move_effect_changelog.csv b/pokedex/data/csv/move_effect_changelog.csv new file mode 100644 index 0000000..d1a5a83 --- /dev/null +++ b/pokedex/data/csv/move_effect_changelog.csv @@ -0,0 +1,13 @@ +effect_id,changed_in_version_group_id,effect +8,11,"Halves the target's [Defense]{mechanic} for damage calculation, which is similar to doubling the attack's [power]{mechanic}." +29,33,"Does nothing in trainer battles." +38,8,"Works while asleep through [Sleep Talk]{move} if not at full health." +46,3,"If this move misses, the user takes 1 point of damage in recoil." +46,11,"If this move misses, the user takes half of the damage it would have inflicted in recoil." +84,3,"Can call any move except for [Struggle]{move} and itself." +109,11,"Raises evasion by one stage." +161,8,"Did not raise [Defense]{mechanic} or [Special Defense]{mechanic}." +175,8,"Did not raise the user's [Special Defense]{mechanic}." +180,11,"Healed replacement Pokémon by half of their max HP." +255,3,"Inflicts [normal]{type}-type damage and the user receives 1/2 of damage dealt in recoil." +274,11,"Ignores [Wonder Guard]{ability}." diff --git a/pokedex/data/csv/move_effects.csv b/pokedex/data/csv/move_effects.csv index 7499127..f0edf53 100644 --- a/pokedex/data/csv/move_effects.csv +++ b/pokedex/data/csv/move_effects.csv @@ -6,9 +6,7 @@ id,short_effect,effect 5,Has a $effect_chance% chance to burn the target.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [burn]{mechanic} the target. 6,Has a $effect_chance% chance to freeze the target.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [freeze]{mechanic} the target. 7,Has a $effect_chance% chance to paralyze the target.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [paralyze]{mechanic} the target. -8,User faints.,"User [faint]{mechanic}s, even if the attack [fail]{mechanic}s or [miss]{mechanic}es. Inflicts [regular damage]{mechanic}. - -Before BW: Halves the target's [Defense]{mechanic} for damage calculation, which is similar to doubling the attack's [power]{mechanic}." +8,User faints.,"User [faint]{mechanic}s, even if the attack [fail]{mechanic}s or [miss]{mechanic}es. Inflicts [regular damage]{mechanic}." 9,Only works on sleeping Pokémon. Heals the user by half the damage inflicted.,Only works on [sleep]{mechanic}ing Pokémon. Inflicts [regular damage]{mechanic}. Heals the user for half the damage inflicted. 10,Uses the target's last used move.,"Uses the last move targeted at the user by a Pokémon still on the [field]{mechanic}. A move counts as targeting the user even if it hit multiple Pokémon, as long as the user was one of them; however, moves targeting the [field]{mechanic} itself do not count. If the user has not been targeted by an appropriate move since entering the [field]{mechanic}, or if no Pokémon that targeted the user remains on the [field]{mechanic}, this move will [fail]{mechanic}. @@ -55,9 +53,7 @@ If the user is holding [Light Clay]{item}, the barrier lasts for eight turns. 37,"Has a $effect_chance% chance to burn, freeze, or paralyze the target.","Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [burn]{mechanic}, [freeze]{mechanic}, or [paralyze]{mechanic} the target. One of these effects is selected at random; they do not each have independent chances to occur." 38,"User sleeps for two turns, completely healing itself.","User falls to [sleep]{mechanic} and immediately regains all its [HP]{mechanic}. If the user has another [major status effect]{mechanic}, [sleep]{mechanic} will replace it. The user will always wake up after two turns, or one turn with [Early Bird]{ability}. -This move fails if the Pokémon cannot fall asleep due to [Uproar]{move}, [Insomnia]{ability}, or [Vital Spirit]{ability}. - -After DP, this move fails if the Pokémon is already asleep." +This move fails if the Pokémon cannot fall asleep due to [Uproar]{move}, [Insomnia]{ability}, or [Vital Spirit]{ability}. It also fails if the Pokémon is at full health or is already asleep." 39,Causes a one-hit KO.,"Inflicts damage equal to the target's max [HP]{mechanic}. Ignores [accuracy]{mechanic} and [evasion]{mechanic} modifiers. This move's [accuracy]{mechanic} is 30% plus 1% for each level the user is higher than the target. If the user is a lower level than the target, this move will [fail]{mechanic}. Because this move inflicts a specific and finite amount of damage, [Endure]{move} still prevents the target from fainting. @@ -77,9 +73,7 @@ Has a 3/8 chance each to hit 2 or 3 times, and a 1/8 chance each to hit 4 or 5 t 45,Hits twice in one turn.,Inflicts [regular damage]{mechanic}. Hits twice in one turn. 46,"If the user misses, it takes half the damage it would have inflicted in recoil.","Inflicts [regular damage]{mechanic}. If this move misses, is blocked by Protect or Detect, or has no effect, the user takes half the damage it would have inflicted in recoil. This recoil damage will not exceed half the user's max HP. -This move cannot be used while [Gravity]{move} is in effect. - -Before GS: If this move misses, the user takes 1 point of damage in recoil." +This move cannot be used while [Gravity]{move} is in effect." 47,Protects the user's stats from being changed by enemy moves.,"Pokémon on the user's side of the [field]{mechanic} are immune to stat-lowering effects for five turns. [Guard Swap]{move}, [Heart Swap]{move}, and [Power Swap]{move} may still be used. @@ -227,7 +221,7 @@ The target may still escape by using [Baton Pass]{move}, [U-turn]{move}, or a [S Both the user and the target pass on this effect with [Baton Pass]{move}." 108,Target loses 1/4 its max HP every turn as long as it's asleep.,"Only works on [sleep]{mechanic}ing Pokémon. Gives the target a nightmare, damaging it for 1/4 its max [HP]{mechanic} every turn. If the target wakes up or leaves the [field]{mechanic}, this effect ends." -109,Raises the user's evasion.,"Raises the user's [evasion]{mechanic} by one [stage]{mechanic}. +109,Raises the user's evasion by two stages.,"Raises the user's [evasion]{mechanic} by two [stage]{mechanic}. [Stomp]{move} has double power against Pokémon that have used this move since entering the [field]{mechanic}." 110,Ghosts pay half their max HP to hurt the target every turn. Others decrease Speed but raise Attack and Defense.,"If the user is a [Ghost]{type}: user pays half its max [HP]{mechanic} to place a curse on the target, damaging it for 1/4 its max [HP]{mechanic} every turn. @@ -569,7 +563,7 @@ This move cannot be selected by [Assist]{move} or [Metronome]{move}." If the target has [Wonder Guard]{ability}, this move will fail. This move cannot be copied by [Mirror Move]{move}." -180,User will recover half its max HP at the end of the next turn.,"At the end of the next turn, user will be healed for half its max [HP]{mechanic}. If the user is [switched out]{mechanic}, its replacement will be healed instead. If the user [faint]{mechanic}s or is forcefully switched by [Roar]{move} or [Whirlwind]{move}, this effect will not activate." +180,User will recover half its max HP at the end of the next turn.,"At the end of the next turn, user will be healed for half its max [HP]{mechanic}. If the user is [switched out]{mechanic}, its replacement will be healed instead for half of the user's max HP. If the user [faint]{mechanic}s or is forcefully switched by [Roar]{move} or [Whirlwind]{move}, this effect will not activate." 181,Randomly selects and uses one of the trainer's other Pokémon's moves.,"Uses a move from another Pokémon in the user's party, both selected at random. Moves from fainted Pokémon can be used. If there are no eligible Pokémon or moves, this move will fail. This move will not select [Assist]{move}, [Chatter]{move}, [Copycat]{move}, [Counter]{move}, [Covet]{move}, [Destiny Bond]{move}, [Detect]{move}, [dragon tail]{move}, [Endure]{move}, [fast guard]{move}, [Feint]{move}, [Focus Punch]{move}, [Follow Me]{move}, [Helping Hand]{move}, [Me First]{move}, [Metronome]{move}, [Mimic]{move}, [Mirror Coat]{move}, [Mirror Move]{move}, [overhead toss]{move}, [Protect]{move}, [Sketch]{move}, [Sleep Talk]{move}, [Snatch]{move}, [Struggle]{move}, [Switcheroo]{move}, [Thief]{move}, [Trick]{move}, or [wide guard]{move}. @@ -824,12 +818,10 @@ This effect is passed on by [Baton Pass]{move}." This move is used automatically when a Pokémon cannot use any other move legally, e.g., due to having no [PP]{mechanic} remaining or being under the effect of both [Encore]{move} and [Torment]{move} at the same time. -This move cannot be copied by [Mimic]{move}, [Mirror Move]{move}, or [Sketch]{move}, nor selected by [Assist]{move} or [Metronome]{move}, nor forced by [Encore]{move}. - -Before GS: This move inflicts [normal]{type}-type damage and the user receives 1/2 of damage dealt in recoil." +This move cannot be copied by [Mimic]{move}, [Mirror Move]{move}, or [Sketch]{move}, nor selected by [Assist]{move} or [Metronome]{move}, nor forced by [Encore]{move}." 256,"User dives underwater, dodging all attacks, and hits next turn.","Inflicts [regular damage]{mechanic}. User dives underwater for one turn, becoming immune to attack, and hits on the second turn. -During the immune turn, [Low Kick]{move}, [Surf]{move}, and [Whirlpool]{move} still hit the user normally. [Surf]{move} and [Whirlpool]{move} also have double power against the user. +During the immune turn, [Surf]{move}, and [Whirlpool]{move} still hit the user normally, and their power is doubled if appropriate. The user may be hit during its immune turn if under the effect of [Lock-On]{move}, [Mind Reader]{move}, or [No Guard]{ability}. @@ -886,9 +878,7 @@ This move cannot be copied by [Mimic]{move}, [Mirror Move]{move}, or [Sketch]{mo This move breaks through [Detect]{move} and [Protect]{move}. This move cannot be selected by [Sleep Talk]{move}." -274,Has a $effect_chance% chance to burn the target and a $effect_chance% chance to make the target flinch.,"Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [burn]{mechanic} the target and a separate $effect_chance% chance to make the target [flinch]{mechanic}. - -This move breaks through [Wonder Guard]{ability} in Generation IV." +274,Has a $effect_chance% chance to burn the target and a $effect_chance% chance to make the target flinch.,"Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [burn]{mechanic} the target and a separate $effect_chance% chance to make the target [flinch]{mechanic}." 275,Has a $effect_chance% chance to freeze the target and a $effect_chance% chance to make the target flinch.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [freeze]{mechanic} the target and a separate $effect_chance% chance to make the target [flinch]{mechanic}. 276,Has a $effect_chance% chance to paralyze the target and a $effect_chance% chance to make the target flinch.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [paralyze]{mechanic} the target and a separate $effect_chance% chance to make the target [flinch]{mechanic}. 277,Has a $effect_chance% chance to raise the user's Special Attack by one stage.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to raise the user's [Special Attack]{mechanic} by one [stage]{mechanic}. diff --git a/pokedex/data/csv/moves.csv b/pokedex/data/csv/moves.csv index f5d8f92..ec125a6 100644 --- a/pokedex/data/csv/moves.csv +++ b/pokedex/data/csv/moves.csv @@ -93,7 +93,7 @@ id,name,generation_id,type_id,power,pp,accuracy,priority,target_id,damage_class_ 92,Toxic,1,4,0,10,90,0,10,1,34,,4,33,19 93,Confusion,1,14,50,25,100,0,10,3,77,10,4,9,5 94,Psychic,1,14,90,10,100,0,10,3,73,10,4,5,17 -95,Hypnosis,1,14,0,20,70,0,10,1,2,,4,5,19 +95,Hypnosis,1,14,0,20,60,0,10,1,2,,4,5,19 96,Meditate,1,14,0,40,,0,7,1,11,,2,32,11 97,Agility,1,14,0,30,,0,7,1,53,,1,30,1 98,Quick Attack,1,1,40,30,100,1,10,2,104,,1,30,1 diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py index 8d7f3cf..67064b8 100644 --- a/pokedex/db/tables.py +++ b/pokedex/db/tables.py @@ -589,6 +589,16 @@ class MoveEffect(TableBase): effect = Column(Unicode(5120), nullable=False, info=dict(description="A detailed description of the effect", format='plaintext')) +class MoveEffectChangelog(TableBase): + """History of changes to move effects across main game versions.""" + __tablename__ = 'move_effect_changelog' + effect_id = Column(Integer, ForeignKey('move_effects.id'), primary_key=True, nullable=False, + info=dict(description="The ID of the effect that changed")) + changed_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True, nullable=False, + info=dict(description="The ID of the version group in which the effect changed")) + effect = Column(markdown.MarkdownColumn(255), nullable=False, + info=dict(description="A description of the old behavior", format='markdown')) + class MoveFlag(TableBase): u"""Maps a move flag to a move """ -- 2.7.4