Drop PickupSlot

This commit is contained in:
Andrew Ekstedt 2012-12-05 02:21:55 -08:00
parent b473c66d95
commit 41e8c4df9c
5 changed files with 677 additions and 770 deletions

View file

@ -177,7 +177,6 @@ Mics tables
.. dex-table:: Experience
.. dex-table:: PalPark
.. dex-table:: PickupItem
.. dex-table:: PickupSlot
.. dex-table:: StatHint
Conquest tables

File diff suppressed because it is too large Load diff

View file

@ -1,67 +0,0 @@
id,version_group_id,slot,rarity
1,6,0,30
2,6,1,10
3,6,2,10
4,6,3,10
5,6,4,10
6,6,5,10
7,6,6,10
8,6,7,5
9,6,8,3
10,6,9,1
11,6,10,1
12,8,0,30
13,8,1,10
14,8,2,10
15,8,3,10
16,8,4,10
17,8,5,10
18,8,6,10
19,8,7,5
20,8,8,3
21,8,9,1
22,8,10,1
23,9,0,30
24,9,1,10
25,9,2,10
26,9,3,10
27,9,4,10
28,9,5,10
29,9,6,10
30,9,7,5
31,9,8,3
32,9,9,1
33,9,10,1
34,10,0,30
35,10,1,10
36,10,2,10
37,10,3,10
38,10,4,10
39,10,5,10
40,10,6,10
41,10,7,5
42,10,8,3
43,10,9,1
44,10,10,1
45,11,0,30
46,11,1,10
47,11,2,10
48,11,3,10
49,11,4,10
50,11,5,10
51,11,6,10
52,11,7,4
53,11,8,4
54,11,9,1
55,11,10,1
56,14,0,30
57,14,1,10
58,14,2,10
59,14,3,10
60,14,4,10
61,14,5,10
62,14,6,10
63,14,7,4
64,14,8,4
65,14,9,1
66,14,10,1
1 id version_group_id slot rarity
2 1 6 0 30
3 2 6 1 10
4 3 6 2 10
5 4 6 3 10
6 5 6 4 10
7 6 6 5 10
8 7 6 6 10
9 8 6 7 5
10 9 6 8 3
11 10 6 9 1
12 11 6 10 1
13 12 8 0 30
14 13 8 1 10
15 14 8 2 10
16 15 8 3 10
17 16 8 4 10
18 17 8 5 10
19 18 8 6 10
20 19 8 7 5
21 20 8 8 3
22 21 8 9 1
23 22 8 10 1
24 23 9 0 30
25 24 9 1 10
26 25 9 2 10
27 26 9 3 10
28 27 9 4 10
29 28 9 5 10
30 29 9 6 10
31 30 9 7 5
32 31 9 8 3
33 32 9 9 1
34 33 9 10 1
35 34 10 0 30
36 35 10 1 10
37 36 10 2 10
38 37 10 3 10
39 38 10 4 10
40 39 10 5 10
41 40 10 6 10
42 41 10 7 5
43 42 10 8 3
44 43 10 9 1
45 44 10 10 1
46 45 11 0 30
47 46 11 1 10
48 47 11 2 10
49 48 11 3 10
50 49 11 4 10
51 50 11 5 10
52 51 11 6 10
53 52 11 7 4
54 53 11 8 4
55 54 11 9 1
56 55 11 10 1
57 56 14 0 30
58 57 14 1 10
59 58 14 2 10
60 59 14 3 10
61 60 14 4 10
62 61 14 5 10
63 62 14 6 10
64 63 14 7 4
65 64 14 8 4
66 65 14 9 1
67 66 14 10 1

View file

@ -1467,43 +1467,30 @@ create_translation_table('pal_park_area_names', PalParkArea, 'names',
)
class PickupItem(TableBase):
u"""Items which can be found with the Pickup ability.
u"""An item which can be found with the Pickup ability.
Level ranges are assumed not to overlap, and max_level is assumed to be
constant with respect to min_level.
Level ranges form tiers. Ranges should not overlap and max_level should be
constant with respect to min_level and the version group.
Rarity shall be constant with respect to slot and version_group, and
the rarities for a given version group and level tier shall sum to 100.
"""
__tablename__ = 'pickup_items'
__singlename__ = 'pickup_item'
slot_id = Column(Integer, ForeignKey('pickup_slots.id'), primary_key=True,
info=dict(description="The slot"))
version_group_id = Column(Integer, ForeignKey('version_groups.id'), primary_key=True,
info=dict(description="The version group"))
min_level = Column(Integer, nullable=False, primary_key=True,
info=dict(description="Minimum level at which this slot applies"))
max_level = Column(Integer, nullable=False,
info=dict(description="Maximum level at which this slot applies"))
slot = Column(Integer, nullable=False, primary_key=True,
info=dict(description="Index of the slot"))
item_id = Column(Integer, ForeignKey('items.id'),
info=dict(description="The item"))
class PickupSlot(TableBase):
u"""The chance of finding a particular item with Pickup."""
__tablename__ = 'pickup_slots'
__singlename__ = 'pickup_slot'
id = Column(Integer, primary_key=True,
info=dict(description=""))
version_group_id = Column(Integer, ForeignKey('version_groups.id'),
info=dict(description="The version group"))
slot = Column(Integer, nullable=False,
info=dict(description="Index of the slot + 1"))
rarity = Column(Integer, nullable=False,
info=dict(description="Percent chance of this slot being chosen"))
__table_args__ = (
UniqueConstraint(version_group_id, slot),
{},
)
info=dict(description="Percent chance of this item being found"))
class PokeathlonStat(TableBase):
u"""A Pokéathlon stat, such as "Stamina" or "Jump".
@ -2510,10 +2497,8 @@ PalPark.area = relationship(PalParkArea,
innerjoin=True, lazy='joined')
PickupItem.slot = relationship(PickupSlot)
PickupItem.item = relationship(Item)
PickupSlot.version_group = relationship(VersionGroup)
PickupItem.version_group = relationship(VersionGroup)
Pokedex.region = relationship(Region,

View file

@ -131,21 +131,8 @@ def get_item(generation_id, item_index):
.one())
return item
def add_slot(version_group, index, rarity):
ps = t.PickupSlot()
ps.version_group = version_group
ps.slot = index
ps.rarity = rarity
sess.add(ps)
return ps
for pickup in pickups:
version_group = version_groups[pickup.version_group]
slots = []
for i, rarity in enumerate(pickup.rates + [1, 1]):
slot = add_slot(version_group, i, rarity)
slots.append(slot)
def get_items(items):
return [get_item(version_group.generation_id, item_index)
@ -153,6 +140,7 @@ for pickup in pickups:
common_items = get_items(pickup.common_items)
rare_items = get_items(pickup.rare_items)
rates = pickup.rates + [1, 1]
for tier in range(10):
min_level = 1 + tier * 10
@ -161,12 +149,14 @@ for pickup in pickups:
items = common_items[tier:tier+len(pickup.rates)]
items += reversed(rare_items[tier:tier+2])
for slot, item in zip(slots, items):
for rarity, slot, item in zip(rates, range(len(rates)), items):
pi = t.PickupItem()
pi.version_group = version_group
pi.min_level = min_level
pi.max_level = max_level
pi.slot = slot
pi.item = item
pi.rarity = rarity
sess.add(pi)
sess.commit()