A creature answers to the key the game writes — acolyteOfTheCult — and to
its slug, and a name is slugged before it is tried. Its loot table comes
with it unasked, where the listing takes ?include=loot: heaviest chance
first and the item id breaking a tie, and a line may carry an
item_client_id with a null item — the capture recorded a drop this
database has no row for, and saying so beats dropping the line.
A line can repeat an item, so a client keying the loot table on the item id
would lose rows. 18 of the 113 creatures name one twice, and three of those
name it a third time — lizardChosen, lizardHighGuard, lizardZaogun,
all on gold coin. Classified by shape the 18 come to exactly three groups:
two repeat at a different chance, 13 at the same chance with a different
cap, and three — deeplingGuard, demon, skeleton — repeat identically
in every column this table has.
Those last three are the case the surrogate key exists for, and the count
to be careful with, because the migration's six is the same fact read
differently: six creatures carry an exactly duplicated pair somewhere in a
group — those three, plus the three lizards, whose third line differs only
in the cap. Either way no column separates a duplicated pair, so a natural
key would drop one of each and report a clean import.
Where the creature turns up comes with it too: the hunts that field it, the
prey group that offers it, the quests that name it and the boss doors that
count kills of it. quests carries a role on every entry saying which of
the two ways a quest names it.
Four fields moved into two objects, which is a breaking change on this endpoint.
bestiary_class is bestiary.class and is a {slug, name} pair rather than a bare
string; kills_required is bestiary.kills_required; outfit_id is outfit.id and
outfit_colors is outfit.colors. Nothing was renamed beyond that and no value
changed. bestiary holds what describes the Bestiary entry rather than the creature,
which is what Tibia's own group of that name holds; outfit holds the looktype and the
colours that recolour it, which are meaningless apart. ?filter[bestiary_class]= is
unchanged and takes either spelling.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||