Template:ArtifactDef: Difference between revisions

From Heroes of Might and Magic: Olden Era Official Wiki
obelisk-bot: uploading initial Cargo templates
obelisk-bot: uploading initial Cargo templates
Tag: Manual revert
Line 82: Line 82:


== Related tables ==
== Related tables ==
* [[Template:ItemSetDef|ItemSet]] — joined on
* [[Template:ItemSetDef|ItemSet]] — joined on <code>Artifact.artifact_set_id = ItemSet.id</code> (N:1). The set's own member roster lives on <code>ItemSet.items_in_set</code>; per-tier bonuses on [[Template:ItemSetTierDef|ItemSetTier]].
* [[Template:BonusDef|Bonus]] — joined on <code>Artifact.id = Bonus.parent_id</code> (1:N), 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>.
 
[[Category:Cargo Definitions]]
</noinclude><includeonly>{{#cargo_store:_table=Artifact
| id = {{{id|}}}
| name = {{{name|}}}
| description = {{{description|}}}
| name_sid = {{{name_sid|}}}
| description_sid = {{{description_sid|}}}
| upgrade_description_sid = {{{upgrade_description_sid|}}}
| upgrade_description = {{{upgrade_description|}}}
| narrative_description_sid = {{{narrative_description_sid|}}}
| narrative_description = {{{narrative_description|}}}
| icon = {{{icon|}}}
| slot = {{{slot|}}}
| rarity = {{{rarity|}}}
| artifact_set_id = {{{artifact_set_id|}}}
| goods_value = {{{goods_value|}}}
| max_level = {{{max_level|}}}
| cost_base = {{{cost_base|}}}
| cost_per_level = {{{cost_per_level|}}}
| reward_for_destroy = {{{reward_for_destroy|}}}
| is_special_item = {{{is_special_item|}}}
| use_expand_tooltip = {{{use_expand_tooltip|}}}
| can_destroy = {{{can_destroy|}}}
| can_apply_bonus_always = {{{can_apply_bonus_always|}}}
| source_path = {{{source_path|}}}
}}</includeonly>

Revision as of 00:11, 13 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=… | name=… | description=… | slot=… | rarity=… | …}} — main row with English defaults inline plus the SIDs for all four localizable fields (name, description, upgrade_description, narrative_description).
  2. {{TranslationDef | type=artifact | target_id=<id> | …}} — name + description i18n (per D-026).
  3. N × {{BonusDef | parent_type=artifact | parent_id=<id> | …}} — the artifact's bonuses, in the unified Bonus table (per D-031).

Schema

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

{{ArtifactDef
| id = String
| name = String
| description = Wikitext
| name_sid = String
| description_sid = String
| upgrade_description_sid = String       <!-- shown when the artifact levels up -->
| upgrade_description = Wikitext
| narrative_description_sid = String     <!-- flavor text -->
| narrative_description = Wikitext
| icon = String

| slot = String                  <!-- armor, head, ring, item_slot, ... -->
| rarity = String (allowed values=common,rare,epic,legendary)
| artifact_set_id = String       <!-- joins ItemSet.id -->

| goods_value = Integer          <!-- gold value when sold -->
| max_level = Integer            <!-- 1 = non-upgradable; higher = upgradable -->

<!-- Sparse: only present on artifacts that can level up -->
| cost_base = Integer            <!-- cost to upgrade from level 1 to 2 -->
| cost_per_level = Integer       <!-- additional cost per subsequent level -->

| reward_for_destroy = Integer   <!-- crystal/etc. reward when destroyed -->

| is_special_item = Boolean      <!-- magic scrolls and a few specials -->
| use_expand_tooltip = Boolean
| can_destroy = Boolean
| can_apply_bonus_always = Boolean

| source_path = String
}}

Field notes

  • slot is one of 10 distinct values. item_slot is the catch-all for non-equipment items (magic scrolls live here). unic_slot is for one-of-a-kind unique items. The values preserve the source's lowercase-snake spelling.
  • rarity counts in the 2026-05-03 corpus: rare (114), common (101), epic (50), legendary (39).
  • artifact_set_id is sparse — 83 of 304 artifacts belong to a set. Joins to a future ArtifactSet table (deferred per D-031). Renamed from source's itemSet for terminology consistency.
  • max_level = 1 means the artifact doesn't upgrade. Artifacts with max_level > 1 carry cost_base + cost_per_level populated.
  • is_special_item is true for magic scrolls and a few special items — they typically use bonuses[].type=heroMagicAddition to add a spell to the hero's spellbook. The field name preserves the source's spelling rather than renaming to is_special_artifact (the source field is isSpecialItem).
  • use_expand_tooltip in source ships as both bool and the string "false" on different artifacts; the bot normalizes to a proper bool.
  • No sub-fields for the bonuses[] here — they emit as separate Bonus rows. Query artifacts with their bonuses via tables=Artifact, Bonus | join on=Artifact.id=Bonus.parent_id | where=Bonus.parent_type='artifact'.

Related tables

  • ItemSet — joined on Artifact.artifact_set_id = ItemSet.id (N:1). The set's own member roster lives on ItemSet.items_in_set; per-tier bonuses on ItemSetTier.
  • Bonus — joined on Artifact.id = Bonus.parent_id (1:N), filtered by Bonus.parent_type='artifact'.
  • Translation — one row per artifact with type=artifact, joined on Artifact.id = Translation.target_id.