Files
Pf2eDataScrapper/dbml/schema.dbml
T
2025-04-09 18:57:09 +04:00

648 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// https://dbml.dbdiagram.io/docs
// Entity
Table entity {
id int [pk]
name varchar [not null, note: "{*}.name"]
img varchar(100) [note: "{*}.img"]
description text [not null, note: "{*}.system.description(.value)"]
description_gm text [null, note: "{*}.system.description.gm"]
type entity_type [not null]
slug varchar
rarity entity_rarity [not null, default: "common", note: "{*}.system.rarity"]
is_translated bool [default: false, note: "Первичный импорт идёт из англоязычного источника, перевод приходит вторым"]
is_checked bool [default: false, note: "Флаг, указывающий, что перевод был проверен вручную и не требует обновления парсером"]
}
Enum entity_type {
feat
}
Enum entity_rarity {
common
uncommon
rare
}
// Alias
Table entity_aliases {
id int [pk, increment]
entity_id int [ref: > entity.id]
alias varchar [not null]
type alias_type [not null]
}
Enum alias_type {
old
english
hobby
}
// Keywords
Table keyword {
id int [pk, increment]
}
Table entity_keywords {
entity_id int [ref: > entity.id]
keyword_id int [ref: > keyword.id]
}
Table keyword_aliases {
keyword_id int [pk, ref: keyword.id]
type alias_type [pk]
value varchar
}
// Sources
Table source {
id int [pk, increment]
name varchar
url varchar
}
Table entity_sources {
entity_id int [ref: > entity.id]
source_id int [ref: > source.id]
suffix varchar [default: ""]
}
// External links
Table external_target {
id int
name varchar
icon varchar
}
Table entity_external {
entity_id int [ref: > entity.id]
target_id int [ref: > external_target.id]
path varchar
}
// ----------------------------------------------
// Traits
Table trait {
id int [pk]
name varchar [not null]
description text
type trait_type
}
Table entity_traits {
entity_id int [ref: > entity.id]
trait_id int [ref: > trait.id]
}
Enum trait_type {
regular
tradition
}
// Frequency
Table frequency {
id int [pk, ref: - entity.id]
max int [not null, note: "{}.max"]
per int [not null, note: "{}.per"]
value int [null, note: "{}.value"]
Note: '''{} = {Item.[action|feat].system.frequency}
Используется для подключения полей из таблиц схем {Item.feat} и {Item.action}'''
}
// Languages
Table language {
id int [pk]
name varchar
rarity entity_rarity
}
// ----------------------------------------------
// Action
Table action {
id int [pk, ref: - entity.id]
type action_type [not null, note: "{}.actionType.value"]
actions int [null, note: "{}.actions?.value"]
category action_category [null, note: "{}.category"] // Нет у 81 объекта
death_note bool [null, note: "{}.deathNote"]
Note: '''{} = Item.action.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
{}.frequency -> frequency
Рассмотреть:
{}.selfEffect - служебный словарь Foundry
'''
}
Enum action_type {
action
free
reaction
passive
}
Enum action_category {
offensive
defensive
interaction
familiar
}
// Ancestery
Table ancestry {
id int [pk, ref: - entity.id]
hp int [not null, note: "{}.hp"]
reach int [not null, note: "{}.reach"]
size ancestry_size [not null, note: "{}.size"]
speed int [not null, note: "{}.speed"]
vision ancestry_vision [not null, note: "{}.vision"]
Note: '''{} = Item.ancestry.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
{}.languages -> ancestry_languages
{}.additionalLanguages -> ancestry_languages
{}.boosts -> ancestry_boosts
{}.flaws -> ancestry_boosts
Рассмотреть:
{}.items - TODO добавить в определение dict-типа
Не использованы поля:
{}.additionalLanguages
'''
}
Enum ancestry_size {
med
lanuages
system
tiny
}
Enum ancestry_vision {
normal
low_light_vision // low-light-vision
darkvision
}
Table ancestry_languages {
ancestry_id int [pk, ref: > ancestry.id]
language_id int [pk, ref: > language.id]
additional bool [not null]
}
Table ancestry_boosts {
id int [pk, increment]
ancestry_id int [ref: > ancestry.id]
boost bool [not null, default: true, note: "false = flaw"]
value varchar(3) [null, note: "null = free boost (all 6 values in foundry)"]
}
// Armor
Table armor {
id int [pk, ref: - entity.id]
ac_bonus int [not null, note: "{}.acBonus"]
strength int [null, note: "{}.strength"]
check_penalty int [not null, note: "{}.checkPenalty"]
dex_cap int [not null, note: "{}.dexCap"]
speed_penalty int [not null, note: "{}.speedPenalty"]
bulk float [not null, note: "{}.bulk"]
category armor_category [not null, note: "{}.category"]
group armor_group [null, note: "{}.group"] // 16 без группы
level int [not null, note: "{}.level.value"]
price int [not null, note: "price({}.price.value)"]
size armor_size [not null, note: "{}.size"]
Note: '''{} = Item.armor.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
Рассмотреть:
{}.base_item - возможно связь на себя
{}.material
{}.runes
{}.specific
Не использованы поля:
{}.containerId - пустое
{}.hardness - всегда 0
{}.hp - всегда 0
{}.quantity - всегда 1
'''
}
Enum armor_category {
light
heavy
medium
light_barding // light-barding
heavy_barding // heavy-barding
unarmored
}
Enum armor_group {
leather
plate
wood
chain
cloth
skeletal
composite
}
Enum armor_size {
med
lg
}
// Background
Table background {
id int [pk, ref: - entity.id]
Note: '''{} = Item.background.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
{}.items -> background_items
{}.trainedSkills -> background_skills
Рассмотреть:
{}.boosts
Не использованы поля:
'''
}
Table background_items {
id int [pk]
background_id int [ref: > background.id]
entity_id int [ref: > entity.id, note: "{}.name"]
level int [note: "{}.level"]
name string [note: "{}.name (?)"]
Note: "{} = Item.background.system.items"
}
Table background_skills {
id int [pk]
background_id int [ref: > background.id]
name varchar [note: "{}.[]"]
is_skill bool [note: "true = [value] false = [lore]"]
Note: "{} = Item.background.system.items.[lore|value]"
}
// Backpack
Table backpack {
id int [pk, ref: - entity.id]
level int [note: "{}.bulk.level.value"]
capacity int [note: "{}.bulk.heldOrStowed"]
heldOrStowed float [note: "{}.bulk.heldOrStowed"]
ignored int [note: "{}.bulk.ignored"]
value float [note: "{}.bulk.value"]
hardness int [note: "{}.bulk.hardness"]
quantity int [note: "{}.bulk.quantity"]
price int [note: "price({}.price.value)"]
size varchar [note: "{}.bulk.size (always med)"]
stowing bool [note: "{}.stowing"]
usage
Note: '''{} = Item.backpack.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
Рассмотреть:
{}.material
Не использованы поля:
{}.collapsed - всегда false
'''
}
Enum backpack_usage {
wornbackpack
held_in_two_hands // held-in-two-hands
worn
held_in_one_hand // held-in-one-hand
worngarment
}
// Campaign Feature
Table campaign_feature {
id int [pk, ref: - entity.id]
level int [note: "{}.level"]
type action_type [note: "{}.actionType"]
action int [note: "{}.actions"]
category campaign_feature_category [note: "{}.category"]
Note: '''{} = Item.campaignFeature.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
Рассмотреть:
{}.prerequisites - очень странная структура,
но, похоже, просто одиночное value
Не использованы поля:
{}.requirements - всегда пустое
{}.trigger - всегда пустое
'''
}
Enum campaign_feature_category {
army_tactic // army-tactic
army_war_action // army-war-action
kingdom_activity // kingdom-activity
kingdom_feat // kingdom-feat
kingdom_feature // kingdom-feature
}
// Class
Table class {
id int [pk, ref: - entity.id]
hp int [note: "{}.hp"]
perception int [note: "{}.perception"]
spellcasting bool [note: "{}.spellcasting"]
Note: '''{} = Item.class.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
{}.ancestryFeatLevels -> class_progression
{}.classFeatLevels -> class_progression
{}.generalFeatLevels -> class_progression
{}.items -> class_progression
{}.skillFeatLevels -> class_progression
{}.skillIncreaseLevels -> class_progression
{}.attacks.[!other] -> class_trainings
{}.defenses -> class_trainings
{}.savingThrows -> class_trainings
Рассмотреть:
{}.keyAbility
{}.attacks.other
Не использованы поля:
'''
}
Table class_progression {
id int [pk, increment]
class_id int [ref: > class.id]
level int
type class_progression_type
entity_id [null, ref: > entity.id]
}
Table class_trainings {
id int [pk, increment]
class_id int [ref: class.id]
item varchar [note: "Возможно нужна связь с чем-то ещё"]
stage: int [note: "0-untrained, 1-trained..."]
}
Enum class_progression_type {
entity [note: "{}.system.items"]
ancestry_feat [note: "{}.system.ancestryFeatLevels"]
class_feat [note: "{}.system.classFeatLevels"]
general_feat [note: "{}.system.generalFeatLevels"]
skill_feat [note: "{}.system.skillFeatLevels"]
skill_increase [note: "{}.system.skillIncreaseLevels"]
}
// Condition
Table condition {
id int [pk, ref: - entity.id]
group condition_group
Note: '''{} = Item.condition.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
Рассмотреть:
{}.duration
{}.overrides
{}.references - всегда пустое
{}.value
Не использованы поля:
'''
}
Enum condition_group {
senses
abilities
death
attitudes
detection
}
// Deity
Table deity {
id int [pk, ref: - entity.id]
category deity_category
Note: '''{} = Item.deity.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
{}.attribute -> deity_attribute
{}.skill -> deity_skills
{}.spells -> deity_spells
{}.weapons -> deity_weapons
Рассмотреть:
{}.domains - нужная другая таблица?
{}.font
{}.sanctification
Не использованы поля:
'''
}
Table deity_attributes {
deity_id int [pk, ref: > deity.id]
attribute varchar(3) [pk]
}
Table deity_skills {
deity_id int [pk, ref: > deity.id]
skill varchar [pk]
}
Table deity_spells {
id int [pk, increment]
deity_id int [ref: > deity.id]
level int
spell_id int [ref: > spell.id]
}
Table deity_weapons {
id int [pk, increment]
deity_id int [ref: > deity.id]
weapon varchar
}
Enum deity_category {
deity
pantheon
covenant
philosophy
}
// Feat
Table feat {
id int [pk, ref: - entity.id]
action_type feat_action_type [note: "{}.actionType.value"]
actions int [null, note: "{}.actions?.value"]
category feat_category [not null, note: "{}.category"]
level int [not null, note: "{}.level.value"]
level_taker int [null, note: "{}.level.taken"] // Всего 2 значения: 1, 2
max_takable int [null, note: "{}.level.maxTakable"]
location varchar(12) [null, note: "{}.level.location"]
only_level_1 bool [null, note: "{}.onlyLevel1"]
Note: '''{} = Item.feat.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
{}.frequency -> frequency
Рассмотреть:
{}.prerequisites
{}.selfEffect
{}.duration
{}.start - .value всегда 103462347
{}.target
Не использованы поля:
{}.subfeatures - пишем в описании пока что, потом подключение таблицы
{}.actionCategory - всегда пробел???
'''
}
Enum feat_action_type {
passive
action
reaction
free
}
Enum feat_category {
ancestryfeature
classfeature
calling
class
skill
general
ancestry
bonus
deityboon
curse
pfsboon
}
// Heritage
Table heritage {
id int [pk, ref: - entity.id]
ancestry_id [null, ref: > ancestry.id]
Note: '''{} = Item.heritage.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
Рассмотреть:
Не использованы поля:
'''
}
// Spell
Table spell {
id int [pk, ref: - entity.id]
level int [note: "{}.level"]
cost int [note: "{}.cost"]
counteraction bool [note: "{}.counteraction"]
sustained bool [note: "{}.duration.sustained"]
duration varchar [note: "{}.duration.value"]
range varchar [note: "{}.range.value"]
requirements varchar [note: "{}.requirements"]
target varchar [note: "{}.target.value"]
time varchar [note: "{}.time.value"]
can_heightening bool [note: "{}.heightening != null"]
Note: '''{} = Item.spell.system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
Рассмотреть:
{}.area
damage
defense
Не использованы поля:
heightening
overlays
'''
}
Table spell_ritual {
spell_id int [pk, ref: - spell.id]
primary_check varchar [note: "{}.primary.check"]
secondary_casters int [note: "{}.secondary.casters"]
secondary_checks varchar [note: "{}.secondary.checks"]
Note: "{} = Item.spell.system.ritual"
}
/*
Table template {
id int [pk, ref: - entity.id]
Note: '''{} = Item..system
Перенаправление:
{}.publication -> entity_sources
{}.traits -> entity_traits
Рассмотреть:
Не использованы поля:
'''
}
*/
// consumable -> equipment?
// effect???
// equipment
// kit -> equipment
// shield -> equipment
// treasure -> equipment
// weapon -> equipment