Template:ArtifactDef: Difference between revisions

From Heroes of Might and Magic: Olden Era Official Wiki
obelisk-bot: uploading initial Cargo templates
obelisk-bot: Pushing translation table rework
 
Line 6: Line 6:
The bot emits each artifact at <code>Data:Artifact/<id></code> carrying:
The bot emits each artifact at <code>Data:Artifact/<id></code> carrying:


# <code><nowiki>{{ArtifactDef | id=… | name=… | description=… | slot=| rarity=… | …}}</nowiki></code> — main row.
# <code><nowiki>{{ArtifactDef | id=… | slot=… | rarity=… | …}}</nowiki></code> — main structural row.
# <code><nowiki>{{TranslationDef | type=artifact | target_id=<id> | …}}</nowiki></code> — name + description i18n.
# N × <code><nowiki>{{TranslationDef | type=artifact | target_id=<id> | language=… | name=… | description=… }}</nowiki></code> — name + description, one row per language.
# N × <code><nowiki>{{TranslationDef | type=artifact_upgrade | target_id=<id> | language=… | description=… }}</nowiki></code> — upgrade text (in the <code>description</code> column), one row per language, when an <code>upgrade_description_sid</code> exists.
# N × <code><nowiki>{{TranslationDef | type=artifact_narrative | target_id=<id> | language=… | description=… }}</nowiki></code> — narrative/lore text (in the <code>description</code> column), one row per language, when a <code>narrative_description_sid</code> exists.
# N × <code><nowiki>{{BonusDef | parent_type=artifact | parent_id=<id> | …}}</nowiki></code> — bonuses, in the unified Bonus table.
# N × <code><nowiki>{{BonusDef | parent_type=artifact | parent_id=<id> | …}}</nowiki></code> — bonuses, in the unified Bonus table.
The artifact's three translatable text fields each get their own <code>type</code> discriminator rather than extra columns on the shared Translation table — the same approach Hero uses for its motto.


== Schema ==
== Schema ==
{{#cargo_declare:_table=Artifact
{{#cargo_declare:_table=Artifact
| id = String
| id = String
| name = String
| description = Wikitext
| name_sid = String
| name_sid = String
| description_sid = String
| description_sid = String
| upgrade_description_sid = String
| upgrade_description_sid = String
| upgrade_description = Wikitext
| narrative_description_sid = String
| narrative_description_sid = String
| narrative_description = Wikitext
| icon = String
| icon = String
| slot = String
| slot = String
Line 40: Line 40:
* [[Template:ItemSetDef|ItemSet]] — joined on <code>Artifact.artifact_set_id = ItemSet.id</code>.
* [[Template:ItemSetDef|ItemSet]] — joined on <code>Artifact.artifact_set_id = ItemSet.id</code>.
* [[Template:BonusDef|Bonus]] — joined on <code>Artifact.id = Bonus.parent_id</code>, filtered by <code>Bonus.parent_type='artifact'</code>.
* [[Template:BonusDef|Bonus]] — joined on <code>Artifact.id = Bonus.parent_id</code>, filtered by <code>Bonus.parent_type='artifact'</code>.
* [[Template:TranslationDef|Translation]] — one row per artifact with <code>type=artifact</code>, joined on <code>Artifact.id = Translation.target_id</code>.
* [[Template:TranslationDef|Translation]] — display text in every language (English included), joined on <code>Artifact.id = Translation.target_id</code> with <code>Translation.type IN ('artifact', 'artifact_upgrade', 'artifact_narrative')</code> and the desired <code>language</code> filter.


[[Category:Cargo Definitions]]
[[Category:Cargo Definitions]]
</noinclude><includeonly>{{#cargo_store:_table=Artifact
</noinclude><includeonly>{{#cargo_store:_table=Artifact
| id = {{{id|}}}
| id = {{{id|}}}
| name = {{{name|}}}
| description = {{{description|}}}
| name_sid = {{{name_sid|}}}
| name_sid = {{{name_sid|}}}
| description_sid = {{{description_sid|}}}
| description_sid = {{{description_sid|}}}
| upgrade_description_sid = {{{upgrade_description_sid|}}}
| upgrade_description_sid = {{{upgrade_description_sid|}}}
| upgrade_description = {{{upgrade_description|}}}
| narrative_description_sid = {{{narrative_description_sid|}}}
| narrative_description_sid = {{{narrative_description_sid|}}}
| narrative_description = {{{narrative_description|}}}
| icon = {{{icon|}}}
| icon = {{{icon|}}}
| slot = {{{slot|}}}
| slot = {{{slot|}}}

Latest revision as of 20:47, 14 May 2026

This template defines and stores rows for the Artifact Cargo table. One row per artifact / equipment item. 304 rows in the 2026-05-03 corpus, across 13 source slot files (armor, head, ring, boots, back, belt, right_hand, left_hand, item_slot, unic_slot, magic_scroll, enchante_magic_scroll, mythic_scroll_box).

The source folder is DB/items/items/ — using the JSON's "item" spelling. The wiki side uses artifact per the in-game player-facing label.

The bot emits each artifact at Data:Artifact/<id> carrying:

  1. {{ArtifactDef | id=… | slot=… | rarity=… | …}} — main structural row.
  2. N × {{TranslationDef | type=artifact | target_id=<id> | language=… | name=… | description=… }} — name + description, one row per language.
  3. N × {{TranslationDef | type=artifact_upgrade | target_id=<id> | language=… | description=… }} — upgrade text (in the description column), one row per language, when an upgrade_description_sid exists.
  4. N × {{TranslationDef | type=artifact_narrative | target_id=<id> | language=… | description=… }} — narrative/lore text (in the description column), one row per language, when a narrative_description_sid exists.
  5. N × {{BonusDef | parent_type=artifact | parent_id=<id> | …}} — bonuses, in the unified Bonus table.

The artifact's three translatable text fields each get their own type discriminator rather than extra columns on the shared Translation table — the same approach Hero uses for its motto.

Schema

This template defines the table "Artifact". View table.

Related tables

  • ItemSet — joined on Artifact.artifact_set_id = ItemSet.id.
  • Bonus — joined on Artifact.id = Bonus.parent_id, filtered by Bonus.parent_type='artifact'.
  • Translation — display text in every language (English included), joined on Artifact.id = Translation.target_id with Translation.type IN ('artifact', 'artifact_upgrade', 'artifact_narrative') and the desired language filter.