-ability_changelog_id,language_id,effect
+ability_changelog_id,local_language_id,effect
1,9,Has no effect in battle.
2,9,Does not prevent regular KOs from full [HP]{mechanic}.
3,9,Has no overworld effect.
-ability_id,language_id,name
+ability_id,local_language_id,name
1,1,あくしゅう
1,5,Puanteur
1,6,Duftnote
-ability_id,language_id,effect,short_effect
+ability_id,local_language_id,effect,short_effect
1,9,"This Pokémon's moves have approximately a 10% chance to make the target [flinch]{mechanic}.
This ability does not stack with a held [King's Rock]{item}.
-berry_firmness_id,language_id,name
+berry_firmness_id,local_language_id,name
1,9,Very Soft
2,9,Soft
3,9,Hard
-contest_effect_id,language_id,flavor_text,effect
+contest_effect_id,local_language_id,flavor_text,effect
1,9,A highly appealing move.,Gives a high number of appeal points wth no other effects.
2,9,Affected by how well the appeal in front goes.,"If the Pokémon that appealed before the user earned less than three appeal points, user earns six; if three, user earns three; if more than three, user earns none."
3,9,"After this move, the user is more easily startled.","If the user is jammed this turn after using this move, it will receive twice as many jam points."
-contest_type_id,language_id,name,flavor,color
+contest_type_id,local_language_id,name,flavor,color
1,9,Cool,Spicy,Red
2,9,Beauty,Dry,Blue
3,9,Cute,Sweet,Pink
-egg_group_id,language_id,name
+egg_group_id,local_language_id,name
1,9,Monster
2,9,Water 1
3,9,Bug
-encounter_condition_id,language_id,name
+encounter_condition_id,local_language_id,name
1,9,Swarm
2,9,Time of day
3,9,PokeRadar
-encounter_condition_value_id,language_id,name
+encounter_condition_value_id,local_language_id,name
1,9,During a swarm
2,9,Not during a swarm
3,9,In the morning
-encounter_terrain_id,language_id,name
+encounter_terrain_id,local_language_id,name
1,9,Walking in tall grass or a cave
2,9,Fishing with an Old Rod
3,9,Fishing with a Good Rod
-evolution_trigger_id,language_id,name
+evolution_trigger_id,local_language_id,name
1,9,Level_up
2,9,Trade
3,9,Use_item
-generation_id,language_id,name
+generation_id,local_language_id,name
1,9,Generation I
2,9,Generation II
3,9,Generation III
-growth_rate_id,language_id,name
+growth_rate_id,local_language_id,name
1,9,slow
2,9,medium
3,9,fast
-item_category_id,language_id,name
+item_category_id,local_language_id,name
1,9,Stat boosts
2,9,Effort drop
3,9,Medicine
-item_flag_id,language_id,name,description
+item_flag_id,local_language_id,name,description
1,9,Countable,Has a count in the bag
2,9,Consumable,Consumed when used
3,9,Usable_overworld,Usable outside battle
-item_fling_effect_id,language_id,effect
+item_fling_effect_id,local_language_id,effect
1,9,Badly poisons the target.
2,9,Burns the target.
3,9,Immediately activates the berry's effect on the target.
-item_id,language_id,name
+item_id,local_language_id,name
1,1,マスターボール
1,5,Master Ball
1,6,Meisterball
-item_pocket_id,language_id,name
+item_pocket_id,local_language_id,name
1,9,Items
2,9,Medicine
3,9,Poké Balls
-item_id,language_id,short_effect,effect
+item_id,local_language_id,short_effect,effect
1,9,,In battle: Captures one Pokémon without fail. Has a capture rate of 255.
2,9,,In battle: Attempts to capture one Pokémon. Has a capture rate of 2.
3,9,,In battle: Attempts to capture one Pokémon. Has a capture rate of 1.5.
-lang_id,language_id,name
+language_id,local_language_id,name
1,9,Japanese
2,9,Official Roomaji
3,9,Korean
-location_area_id,language_id,name
+location_area_id,local_language_id,name
1,9,
2,9,
3,9,
-location_id,language_id,name
+location_id,local_language_id,name
1,9,Canalave City
2,9,Eterna City
3,9,Pastoria City
-move_battle_style_id,language_id,name
+move_battle_style_id,local_language_id,name
1,9,Attack
2,9,Defense
3,9,Support
-move_damage_class_id,language_id,name,description
+move_damage_class_id,local_language_id,name,description
1,9,non-damaging,No damage
2,9,physical,"Physical damage, controlled by Attack and Defense"
3,9,special,"Special damage, controlled by Special Attack and Special Defense"
-move_effect_category_id,language_id,name
+move_effect_category_id,local_language_id,name
1,9,Regular damage
2,9,Power varies
3,9,Special damage
-move_effect_changelog_id,language_id,effect
+move_effect_changelog_id,local_language_id,effect
1,9,"Halves the target's [Defense]{mechanic} for damage calculation, which is similar to doubling the attack's [power]{mechanic}."
2,9,Hits Pokémon under the effects of [Dig]{move} and [Fly]{move}.
3,9,Does nothing in trainer battles.
-move_effect_id,language_id,short_effect,effect
+move_effect_id,local_language_id,short_effect,effect
1,9,Inflicts regular damage with no additional effect.,Inflicts [regular damage]{mechanic}.
2,9,Puts the target to sleep.,Puts the target to [sleep]{mechanic}.
3,9,Has a $effect_chance% chance to poison the target.,Inflicts [regular damage]{mechanic}. Has a $effect_chance% chance to [poison]{mechanic} the target.
-move_flag_type_id,language_id,name,description
+move_flag_type_id,local_language_id,name,description
1,9,Makes contact,"User touches the target. This triggers some abilities (e.g., [Static]{ability}) and items (e.g., [Sticky Barb]{item})."
2,9,Has a charging turn,This move has a charging turn that can be skipped with a [Power Herb]{item}.
3,9,Must recharge,"The turn after this move is used, the Pokémon's action is skipped so it can recharge."
-move_meta_ailment_id,language_id,name
+move_meta_ailment_id,local_language_id,name
-1,9,????
0,9,none
1,9,Paralysis
-move_meta_category_id,language_id,description
+move_meta_category_id,local_language_id,description
0,9,Inflicts damage
1,9,No damage; inflicts status ailment
2,9,No damage; lowers target's stats or raises user's stats
-move_id,language_id,name
+move_id,local_language_id,name
1,1,はたく
1,5,Écras'Face
1,6,Pfund
-move_target_id,language_id,name,description
+move_target_id,local_language_id,name,description
1,9,Specific move,One specific move. How this move is chosen depends upon on the move being used.
2,9,Selected Pokémon,"One other Pokémon on the field, selected by the trainer. Stolen moves reuse the same target."
3,9,Ally,The user's ally (if any).
-nature_id,language_id,name
+nature_id,local_language_id,name
1,1,がんばりや
1,5,Hardi
1,6,Robust
-pokeathlon_stat_id,language_id,name
+pokeathlon_stat_id,local_language_id,name
1,9,Speed
2,9,Power
3,9,Skill
-pokedex_id,language_id,name,description
+pokedex_id,local_language_id,name,description
1,9,National,Entire National dex
2,9,Kanto,Red/Blue/Yellow Kanto dex
3,9,Original Johto,"Gold/Silver/Crystal Johto dex—called the ""New"" Pokédex in-game"
-pokemon_color_id,language_id,name
+pokemon_color_id,local_language_id,name
1,9,Black
2,9,Blue
3,9,Brown
-pokemon_form_group_id,language_id,term,description
+pokemon_form_group_id,local_language_id,term,description
172,9,,"Spiky-eared Pichu can only be received by taking the shiny Pichu from an official promotion to [Celebi]{pokemon}'s shrine in [Ilex Forest]{location}. Spiky-eared Pichu is always female, cannot evolve, and cannot be taken into the Wi-Fi Club or the Union Room, but is otherwise a normal Pichu."
201,9,,Forms only affect appearance. A form is determined at random before a wild encounter and cannot be changed.
351,9,Form,"Form changes along with type to match the [weather]{mechanic} in battle, due to [Forecast]{ability}. Castform is always in its normal form outside of battle, regardless of weather."
-pokemon_form_id,language_id,name
+pokemon_form_id,local_language_id,name
1,9,
2,9,
3,9,
-pokemon_habitat_id,language_id,name
+pokemon_habitat_id,local_language_id,name
1,9,cave
2,9,forest
3,9,grassland
-pokemon_move_method_id,language_id,name,description
+pokemon_move_method_id,local_language_id,name,description
1,9,Level up,Learned when a Pokémon reaches a certain level.
2,9,Egg,"Appears on a newly-hatched Pokémon, if the father had the same move."
3,9,Tutor,Can be taught at any time by an NPC.
-pokemon_id,language_id,name,species
+pokemon_id,local_language_id,name,species
1,1,フシギダネ,
1,2,Fushigidane,
1,3,이상해씨,
-pokemon_shape_id,language_id,name,awesome_name
+pokemon_shape_id,local_language_id,name,awesome_name
1,9,Ball,Pomaceous
2,9,Squiggle,Caudal
3,9,Fish,Ichthyic
-region_id,language_id,name
+region_id,local_language_id,name
1,9,Kanto
2,9,Johto
3,9,Hoenn
-stat_hint_id,language_id,message
+stat_hint_id,local_language_id,message
1,9,Loves to eat
2,9,Proud of its power
3,9,Sturdy body
-stat_id,language_id,name
+stat_id,local_language_id,name
1,9,HP
2,9,Attack
3,9,Defense
-super_contest_effect_id,language_id,flavor_text
+super_contest_effect_id,local_language_id,flavor_text
1,9,Enables the user to perform first in the next turn.
2,9,Enables the user to perform last in the next turn.
4,9,Earn +2 if the Judge's Voltage goes up.
-type_id,language_id,name
+type_id,local_language_id,name
1,1,ノーマル
1,5,Normal
1,6,Normal
-version_id,language_id,name
+version_id,local_language_id,name
1,9,Red
2,9,Blue
3,9,Yellow
`foreign_class` must have a `__singlename__`, currently only used to create
the name of the foreign key column.
-TODO remove this requirement
Also supports the notion of a default language, which is attached to the
session. This is English by default, for historical and practical reasons.
# want to create tables entirely separate from the pokedex metadata
foreign_key_name = foreign_class.__singlename__ + '_id'
- # A foreign key "language_id" will clash with the language_id we naturally
- # put in every table. Rename it something else
- if foreign_key_name == 'language_id':
- # TODO change language_id below instead and rename this
- foreign_key_name = 'lang_id'
Translations = type(_table_name, (object,), {
- '_language_identifier': association_proxy('language', 'identifier'),
+ '_language_identifier': association_proxy('local_language', 'identifier'),
})
# Create the table object
table = Table(_table_name, foreign_class.__table__.metadata,
Column(foreign_key_name, Integer, ForeignKey(foreign_class.id),
primary_key=True, nullable=False),
- Column('language_id', Integer, ForeignKey(language_class.id),
+ Column('local_language_id', Integer, ForeignKey(language_class.id),
primary_key=True, nullable=False),
)
Translations.__table__ = table
# Construct ye mapper
mapper(Translations, table, properties={
- # TODO change to foreign_id
- 'object_id': synonym(foreign_key_name),
- # TODO change this as appropriate
- 'language': relationship(language_class,
- primaryjoin=table.c.language_id == language_class.id,
+ 'foreign_id': synonym(foreign_key_name),
+ 'local_language': relationship(language_class,
+ primaryjoin=table.c.local_language_id == language_class.id,
lazy='joined',
innerjoin=True),
- # TODO does this need to join to the original table?
})
# Add full-table relations to the original class
setattr(foreign_class, relation_name + '_table', Translations)
# Foo.bars
setattr(foreign_class, relation_name, relationship(Translations,
- primaryjoin=foreign_class.id == Translations.object_id,
- collection_class=attribute_mapped_collection('language'),
+ primaryjoin=foreign_class.id == Translations.foreign_id,
+ collection_class=attribute_mapped_collection('local_language'),
# TODO
lazy='select',
))
language_class_a = aliased(language_class)
setattr(foreign_class, local_relation_name, relationship(Translations,
primaryjoin=and_(
- foreign_class.id == Translations.object_id,
- Translations.language_id == select(
+ foreign_class.id == Translations.foreign_id,
+ Translations.local_language_id == select(
[language_class_a.id],
language_class_a.identifier ==
bindparam('_default_language', required=True),
# these are passed as *args anyway
def creator(language, value):
row = Translations()
- row.language = language
+ row.local_language = language
setattr(row, name, value)
return row
setattr(foreign_class, name + '_map',
create_translation_table('egg_group_prose', EggGroup, 'names',
name = Column(Unicode(16), nullable=False, index=True,
- info=dict(description="The name", format='plaintext', official=False)),
+ info=dict(description="The name", format='plaintext', official=True)),
)
class Encounter(TableBase):
create_translation_table('super_contest_effect_prose', SuperContestEffect, 'prose',
flavor_text = Column(Unicode(64), nullable=False,
- info=dict(description=u"A description of the effect.", format='plaintext')),
+ info=dict(description=u"A description of the effect.", format='plaintext', official=True)),
)