Skip to content
Brandon edited this page Jun 7, 2026 · 5 revisions

Congrats on making it this far, now we have all of the information necessary to make a custom clan from its basic components

To review, we've learned how to make

Here we will explain the other parts needed for a custom clan, by going over the Mod Template's minimal clan. Next tutorial we will go over the champion.

Clan definition

Clans have quite a bit of information needed to define them we will go over each property:

    {
      "id": "ClassBasic",
      "titles": {
        "english": "Basic",
        "chinese": "示例"
      },
      "descriptions": {
        "english": "A basic minimal clan example as primary.",
        "chinese": "示例氏族介绍。"
      },
      "subclass_descriptions": {
        "english": "A basic minimal clan example as secondary.",
        "chinese": "示例氏族介绍。"
      },
      "icons": {
        "small": "@BasicClanSmallIcon",
        "medium": "@BasicClanMediumIcon",
        "large": "@BasicClanLargeIcon",
        "silhouette": "@BasicClanSilhouetteIcon"
      },
      "card_draft_icon": "@CardDraftIcon",
      "class_select_character_displays": [
        "@ChampionAClassDisplayCharacterArt"
      ],
      "card_style": "@BasicClanCardStyle",
      "ui_color": {
        "r": 1,
        "g": 1,
        "b": 1
      },
      "ui_color_dark": {
        "r": 0.75,
        "g": 0.75,
        "b": 0.75
      },
      "ui_gradient": [
        {
          "time": 0.0,
          "color": {
            "r": 1,
            "g": 1,
            "b": 1
          }
        },
        {
          "time": 1.0,
          "color": {
            "r": 0.75,
            "g": 0.75,
            "b": 0.75
          }
        }
      ],
      "champions": [
        {
          "id": "BasicChampionA",
          "card_data": "@ChampionACard",
          "starter_card": "@ChampionAStarterCard",
          "upgrade_tree": [
            [
              "@ChampionAUpgradePathI",
              "@ChampionAUpgradePathII",
              "@ChampionAUpgradePathIII"
            ]
          ],
          "icon": "@ChampionAIcon",
          "locked_icon": "@ChampionALockedIcon",
          "portrait": "@ChampionAPortrait"
        }
      ]
    }
  • id - Like most things clans have a unique identifier.

  • titles - This defines the name of the clan, we provide both an english and Chinese (simplified) translation.

  • descriptions - This is the description of the clan when selected as the primary clan for the run.

  • subclass_descriptions The description of the clan when selected as the allied clan.

  • icons - Defines icons for the clan

    • small - 48x48 icon for the clan.

    • medium - 128x128 icon for the clan. This is used in the artifact logbook page. Despite the name it is the largest icon.

    • large - 92x92 icon for the clan.

    • silhouette - An all white image for the icon (just white with transparent background) sized 72x72

  • card_draft_icon - A sprite for the card draft icon to be used in the Battle Victory Rewards UI screen.

  • class_select_character_displays - These are references to CharacterArt GameObjects for the champion. Generally this should just be a scaled up version of the in-game version of your champion 2.25x upscale generally looks good.

  • card_style - This defines the look and feel of the inner card frame. We will cover this later.

  • ui_color - Primary color for the clan for usage in various UIs

  • ui_color_dark - Darkened variant of the clan's color used in various UIs.

  • ui_gradient - Color gradient for the clan for various UIs. Specifically used in the Clan Select Dialog as the background.

  • champions - The clan's primary and alternative champion are defined here.

Now that we have this, you can now reference @ClassBasic as the class parameter for various game data to associate it with this new clan.

Clan Banners

Next we need a Map Banner node for the clan, this is required otherwise the game may crash since it can't find the associated banner for our new clan.

Clan Banners are defined in multiple required parts

  • We need a MapNode for the banner, this is what gets generated during run setup and where players will interact with to get a reward.

  • We need a Reward to associate with the MapNode. Specifically for Banner Node it requires a DraftReward. The DraftReward should allow us to pick from any of the Banner Units within the clan.

  • We need a CardPool of banner units for the DraftReward to pick from.

  • Lastly our MapNode needs a GameObject that will be used to display to the player.

Map Nodes

Like Relics, MapNodes come in many different flavors. Things like Merchants, Alcove Events, and Banners are all MapNodes. Since our map node gives something to the player, it is a RewardMapNode.

    {
      "id": "RewardNodeUnitPackBasicClan",
      "type": "reward",
      "map_icon": "@BasicBannerMapIcon",
      "minimap_icon": "@ClanBannerMinimapIcon",
      "prefab": "@BasicClanMapIcon",
      "titles": {
        "english": "Basic Banner",
        "chinese": "示例战旗"
      },
      "descriptions": {
        "english": "Gain a Basic Unit",
        "chinese": "获得一个示例单位。"
      },
      "pools": [
        "RandomChosenMainClassUnit",
        "RandomChosenSubClassUnit"
      ],
      "is_banner_node": true,
      "extensions": [
        {
          "reward": {
            "class": "@ClassBasic",
            "rewards": [
              "@BasicBannerReward"
            ]
          }
        }
      ]
    }
  • type - Required parameter that determines the type of MapNode. Since we want a RewardMapNode reward is the corresponding value to make the MapNode a RewardMapNode.

  • map_icon / minimap_icon Sprites for the icon.

  • prefab This is a reference to the GameObject to display the map icon. We will cover this later.

  • titles - The tooltip title when the player mouses over the icon.

  • descriptions The tooltip description when the player mouses over the icon.

  • pools - Which MapNode pools to add the item to. We add this to the MapNode pools for Banner nodes for both Main clan banners, and Allied clan banners.

  • is_banner_node - Self explanatory.

  • extensions - Just like with artifacts we now set properties exclusive to RewardMapNodes.

    • class - This sets the required Clan to get this reward.

    • rewards - A list of rewards to give to the player. This will be our DraftReward.

Rewards

A reward is anything the game offers the player, and like MapNodes they too come in many different flavors. A few examples of Rewards.

  • Items offered by Merchants - MerchantRewards

  • An upgrade presented in an event - EnhancerRewards

  • Card draft from Banner nodes - DraftRewards

So with that here is our DraftReward definition for our clan banner.

    {
      "id": "BasicBannerReward",
      "type": "draft",
      "costs": [ 100 ],
      "extensions": [
        {
          "draft": {
            "draft_pool": "@UnitsBasicClanBanner",
            "class_type": "main|subclass|nonclass",
            "draft_options_count": 2,
            "rarity_floor": "uncommon",
            "ignore_relic_rarity_override": true,
            "is_service_merchant_reward": true
          }
        }
      ]
    }
  • type - For DraftRewards, we set the type to draft.

  • costs - This is a list of increasing prices if the item is present in the shop. To keep convention with other clan banners just set this to 100. If multiple are specified the first item is the initial cost and as you keep buying the price will move up to the next value.

  • extensions - We now set DraftReward exclusive properties.

    • draft_pool - This is where the clan specific banner CardPool gets used.

    • class_type - This is a mask of class options, by convention set to main|subclass|nonclass for main, sub, and non class enabled.

    • draft_options_count - The number of cards offered for our banner node.

    • rarity_floor - This sets the minimum rarity selected from the card pool. Since by convention there are no 'common' banner units there is no need to leave the default at common. If common banner units existed it would be much, much harder to pull a rare unit.

    • ignore_relic_rarity_override - This setting prevents artifacts from overriding the rarity, namely Shattered Halo. The convention is to set this to true.

    • is_service_merchant_reward - Set to true for convention.

Card Pool

Here is the card pool. We define an empty card pool.

{
  "id": "UnitsBasicClanBanner"
}

Later when we define units we can use @UnitsBasicClanBanner to add each card to this CardPool.

Map Icon Game Objects

Lastly we define a GameObject to display our map icon. This is quite similar to defining card_art or character_art.

    {
      "id": "BasicClanMapIcon",
      "type": "map_node_icon",
      "extensions": {
        "map_node_icon": {
          "disabled_sprite": "@BasicBannerDisabledMapIcon",
          "enabled_sprite": "@BasicBannerEnabledMapIcon",
          "frozen_sprite": "@BasicBannerFrozenMapIcon",
          "visited_sprite_disabled": "@BasicBannerVisitedDisabledIcon"
        }
      }
    }

Map Node Icons require just 4 sprites

  • disabled_sprite - This is the disabled sprite for the clan banner a dimmed version of the enabled sprite, This is used when the player selected the track opposite to where the node is.

  • enabled_sprite - This is the sprite for when the player can activate the node to claim the reward.

  • frozen_sprite - This is the sprite for when the player isn't in this ring. The banner should be covered in snow.

  • visited_sprite_disabled - This is the sprite for when the player has already collected the reward. it should just be a stick and some rocks for banner nodes.

Sprites

Lastly the template defines sprites for everything.

    {
      "id": "BasicBannerMapIcon",
      "path": "textures/banners/BasicBanner_MapIcon.png"
    },
    {
      "id": "ClanBannerMinimapIcon",
      "path": "textures/banners/ClanBannerMinimapIcon.png"
    },
    {
      "id": "BasicBannerDisabledMapIcon",
      "path": "textures/banners/BasicBanner_Disabled.png"
    },
    {
      "id": "BasicBannerEnabledMapIcon",
      "path": "textures/banners/BasicBanner_Enabled.png"
    },
    {
      "id": "BasicBannerFrozenMapIcon",
      "path": "textures/banners/BasicBanner_Frozen.png"
    },
    {
      "id": "BasicBannerVisitedDisabledIcon",
      "path": "textures/banners/BasicBanner_VisitedDisabled.png"
    }

Class Card Style

For the card_style property in our clan definition we can configure the look and feel for the inner frame in card for our clan. All that is required is 4 sprites.

Here is the definition for Basic clan:

  "class_card_styles": [
    {
      "id": "BasicClanCardStyle",
      "equipment_card_frame_sprite": "@BasicClanEquipmentRoomBorder",
      "unit_card_frame_sprite": "@BasicClanUnitBorder",
      "room_card_frame_sprite": "@BasicClanEquipmentRoomBorder",
      "spell_card_frame_sprite": "@BasicClanSpellBorder"
    }
  ],
  "sprites": [
    {
      "id": "BasicClanEquipmentRoomBorder",
      "path": "textures/card_borders/BasicCardBorderEquipmentRoom.png"
    },
    {
      "id": "BasicClanUnitBorder",
      "path": "textures/card_borders/BasicCardBorderUnit.png"
    },
    {
      "id": "BasicClanSpellBorder",
      "path": "textures/card_borders/BasicCardBorderSpell.png"
    }

All sprites should be sized 504x588. The basic clans card borders are just grayish image as a border, you can use these sprites as a template for your own creations.

  • equipment_card_frame_sprite/room_card_frame_sprite - The sprite for Equipment and Rooms is generally shared. And have a squared border.

  • unit_card_frame_sprite - Sprite for units. It has a pointed top border.

  • sprll_card_frame_sprite Sprite for spells. It should have a hexagonal border.

Clan Subtypes

Lastly for convienence, we define clan/clan_subtypes.json which is where we define subtypes for the clan in one place to use across the other files.

  "subtypes": [
    {
      "id": "BasicSubtype",
      "names": {
        "english": "Basic",
        "chinese": "示例"
      }
    }
  ]

Clone this wiki locally