Adding Custom Player Outfits - Kamzik123/AnvilToolkit-Resources GitHub Wiki
This tutorial walks you through adding a new player outfit to AC4: Black Flag by editing the game's XML data files. The outfit will be equipable from the hideout wardrobe and the Jackdaw cabin outfit selection.
Game compatibility: This tutorial was written for and tested on Assassin's Creed IV: Black Flag only. Other AnvilNext titles (AC Rogue, AC3, etc.) may use a similar system but this has not been tested on those games.
A note on
Pathvs ID: ThePathattributes on References and Handles in the XML examples are not used by the game. The engine finds files only by their numeric ID. AnvilToolkit fills in the paths so you can tell which file is referenced. When modding, the ID is what matters.
WARNING: Back up your save file before testing. Editing the PlayerProgressionManager and EconomicSystemSettings can corrupt your save.
- Common Steps
- Method 1: Free Outfit (Main Method)
- Method 2: Shop Outfit
- Method 3: Craftable Outfit
- How It Works
- Reference
| Method | Player gets the outfit | Forges edited |
|---|---|---|
| 1. Free outfit (main) | Automatically on the next load, also on existing saves | DataPC.forge |
| 2. Shop outfit | By buying it at a general store |
DataPC.forge + DataPC_Hideout.forge
|
| 3. Craftable outfit | By crafting it | DataPC.forge |
All methods share steps 1-7. Every XML example uses placeholder IDs and the name MyOutfit, replace them with your own.
- Select Black Flag in AnvilToolkit.
- Unpack
DataPC.forge, then51_-_Game Bootstrap Settings.datainside it. - Export these files to XML into the root of the unpacked
.datafolder (next to the game files):6147_-_ACGA_UI_Page_Shop_Outfits.UIInventoryPage111_-_000000006E1A3E32.EconomicSystemSettings107_-_PlayerProgressionManager_ACGA.PlayerProgressionManager
Every new object, including inline sub-objects, needs a unique 64-bit ID. Use a range far from the game's own IDs and count up. The outfit also needs a unique SubCategory; vanilla uses 0-25, so start at 26.
You also need an EntityBuilder for the outfit's model and a TextureMapSpec for its icon. Both can be reused from existing outfits for testing.
Save as <N>_-_ACGA_Outfit_MyOutfit.xml in the same folder, with <N> higher than the last file index. The part after _-_ becomes the file name.
<?xml version="1.0" encoding="utf-8"?>
<?info tool="AnvilToolkit" toolVersion="1.3.7" type="1"?>
<Object ID="777000000001" Type="InventoryItemSettings" IsManaged="true">
<Bool Name="Locked">False</Bool>
<Bool Name="IsEconomicQuestItem">False</Bool>
<Bool Name="Rechargeable">False</Bool>
<Bool Name="Sellable">False</Bool>
<Enum Name="ULCMode" Type="ULCMode" Value="ULCMode_NotULCItem">0</Enum>
<Unsigned32 Name="DefaultPrice">0</Unsigned32>
<ObjectPtr Name="ResourcePrice" PointerType="Null" />
<BaseObject ID="777000000002" Name="ItemName" Type="UIString">
<Signed32 Name="OasisLineID">-1</Signed32>
<LString Name="TempString"></LString>
</BaseObject>
<BaseObject ID="777000000003" Name="ItemDescription" Type="UIString">
<Signed32 Name="OasisLineID">-1</Signed32>
<LString Name="TempString"></LString>
</BaseObject>
<Object ID="777000000004" Name="Categorization" Type="InventoryItemCategorization">
<Enum Name="Category" Type="InventoryItemCategory" Value="InvItem_Outfit">38</Enum>
<Unsigned32 Name="SubCategory">26</Unsigned32>
</Object>
<Unsigned32 Name="Rank">0</Unsigned32>
<Bool Name="StoreInInventory">True</Bool>
</Object>- Name and description come only from
OasisLineID, a line in the game's localization.TempStringis ignored, and-1shows an empty text. Point it to an existing line (e.g. a vanilla outfit's) or add a new localization line. - Keep
Sellable = False.
Save as <N+1>_-_ACGA_UI_Outfit_MyOutfit.xml.
<?xml version="1.0" encoding="utf-8"?>
<?info tool="AnvilToolkit" toolVersion="1.3.7" type="1"?>
<Object ID="777000000011" Type="UIInventoryItem" IsManaged="true">
<Handle Name="ItemSettings" Type="InventoryItemSettings" PointerType="Inlined" Path="DataPC\Game Bootstrap Settings\ACGA_Outfit_MyOutfit.InventoryItemSettings">777000000001</Handle>
<BaseObject ID="777000000012" Name="ItemName" Type="UIString">
<Signed32 Name="OasisLineID">-1</Signed32>
<LString Name="TempString"></LString>
</BaseObject>
<BaseObject ID="777000000013" Name="ItemDescription" Type="UIString">
<Signed32 Name="OasisLineID">-1</Signed32>
<LString Name="TempString"></LString>
</BaseObject>
<Handle Name="ItemTexture" Type="TextureMapSpec" PointerType="Inlined" Path="DataPC_extra\HeroUpgradeCloakOutfit_MapDesc\HeroUpgradeCloakOutfit_MapDesc.TextureMapSpec">41013951729</Handle>
</Object>ItemTexture is the icon (here the Cloak outfit icon).
In 6147_-_ACGA_UI_Page_Shop_Outfits.xml, append to InventoryItems:
<Reference Type="UIInventoryInfo" PointerType="External" ReferenceType="0" Path="DataPC\Game Bootstrap Settings\ACGA_UI_Outfit_MyOutfit.UIInventoryItem">777000000011</Reference>In 111_-_000000006E1A3E32.xml (export it with the Schema-Based exporter: Shift+Right Click β export Schema-Based), add to InventoryItemSettingsRepository β InventoryItemList:
<Reference Type="InventoryItemSettings" PointerType="External" ReferenceType="0" Path="DataPC\Game Bootstrap Settings\ACGA_Outfit_MyOutfit.InventoryItemSettings">777000000001</Reference>In 107_-_PlayerProgressionManager_ACGA.xml, add to OutfitItemEntityBuilderMapping (top of the file):
<BaseObjectPtr ID="777000000041" Type="OutfitItemDataMapping" PointerType="Inlined">
<Handle Name="OutfitItem" Type="InventoryItemSettings" PointerType="Inlined" Path="DataPC\Game Bootstrap Settings\ACGA_Outfit_MyOutfit.InventoryItemSettings">777000000001</Handle>
<Handle Name="CorrespondingEntityBuilder" Type="EntityBuilder" PointerType="Inlined" Path="DataPC_extra_chr\CHR_P_EdwardKenway_Marooned\CHR_P_EdwardKenway_Marooned.EntityBuilder">33792577160</Handle>
</BaseObjectPtr>Any Edward EntityBuilder works (see the table at the end). For a new EntityBuilder, also add an entry to the PlayerAttributesBuilder array in the same file (not CharacterAttributesBuilderData), otherwise the game falls back to the default outfit model:
<ObjectPtr ID="777000000042" Type="PlayerAttributesBuilder" PointerType="Inlined" IsManaged="true">
<Handle Name="EntityBuilder" Type="EntityBuilder" PointerType="Inlined" Path="[ENTITY_BUILDER_PATH]">[ENTITY_BUILDER_ID]</Handle>
<BaseObject ID="777000000043" Name="ProgressionCharacterSelector" Type="ProgressionCharacterSelector">
<Handle Name="ProgressionCharacter" Type="ProgressionCharacter" PointerType="Inlined" Path="25725995267">25725995267</Handle>
</BaseObject>
<Bool Name="CanBuilderBeOverriden">True</Bool>
<DynamicSmallArray Name="AgeSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="ChestArmorSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="BootsSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="RightArmSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="ShouldersSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="LeftArmSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="RightArmHBSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="PoisonBladeSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="MetalFistSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="KnivesSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="HealthObjectPouchSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="SmokeBombPouchSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="ParachutesPouchSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="CapeSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="ColorSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="NarrativeSelector" Type="ObjectPtr" />
<DynamicSmallArray Name="AssassinMarkSelector" Type="ObjectPtr" />
</ObjectPtr>25725995267 is the main player's ProgressionCharacter, the same for all outfits.
The player owns the outfit automatically on the next load. Works on new and existing saves.
In 107_-_PlayerProgressionManager_ACGA.xml, append this to the end of InventoryUpgradeRuleSettingsRepository β WorldUpgradeInventorySettingsList (one rule per outfit, each with its own IDs):
<ObjectPtr ID="777000000050" Type="WorldUpgradeInventorySettings" PointerType="Inlined" IsManaged="true">
<DynamicSmallArray Name="UpgradeInventoryStates" Type="ObjectPtr">
<ObjectPtr ID="777000000051" Type="DefaultWorldUpgradeRuleState" PointerType="Inlined">
<ObjectPtr Name="WorldUpgradeCondition" PointerType="Null" />
<DynamicSmallArray Name="WorldUpgradeActions" Type="ObjectPtr" />
</ObjectPtr>
<ObjectPtr ID="777000000052" Type="DefaultWorldUpgradeRuleState" PointerType="Inlined">
<ObjectPtr ID="777000000053" Name="WorldUpgradeCondition" Type="WorldUpgradeInventoryCondition" PointerType="Inlined">
<ObjectPtr ID="777000000054" Name="ConditionHolder" Type="BasicInventoryConditionHolder" PointerType="Inlined">
<Object ID="777000000055" Name="InventoryCondition" Type="InventoryCondition" IsManaged="true">
<Bool Name="CheckAllCharacters">False</Bool>
<Bool Name="CheckItemsInSameCharacter">False</Bool>
<Bool Name="CheckAllItems">False</Bool>
<Bool Name="CheckCurrentAgainstMax">False</Bool>
<Enum Name="PlayerCharacterFilter" Type="PlayerCharacterFilter" Value="PlayerCharacterFilter_All">0</Enum>
<BaseObject ID="777000000056" Name="ProgressionCharacterSelector" Type="ProgressionCharacterSelector">
<Handle Name="ProgressionCharacter" Type="ProgressionCharacter" PointerType="Inlined" Path="25725995267">25725995267</Handle>
</BaseObject>
<Enum Name="ItemType" Type="InventoryCondition::ItemType" Value="ItemType_Specific">1</Enum>
<DynamicSmallArray Name="InventoryItems" Type="Handle">
<Handle Type="InventoryItemSettings" PointerType="Inlined" Path="DataPC\Game Bootstrap Settings\ACGA_Outfit_MyOutfit.InventoryItemSettings">777000000001</Handle>
</DynamicSmallArray>
<Enum Name="InventoryCheckType" Type="InventoryCondition::InventoryCheckType" Value="InventoryCheckType_GainedInventory">1</Enum>
<Enum Name="ItemLockStatus" Type="InventoryItemLockStatus" Value="InventoryItemLockStatus_Any">0</Enum>
<Object ID="777000000057" Name="ItemCategorization" Type="InventoryItemCategorization">
<Enum Name="Category" Type="InventoryItemCategory" Value="InvItem_Unset">0</Enum>
<Unsigned32 Name="SubCategory">0</Unsigned32>
</Object>
<Enum Name="ItemCategory" Type="InventoryItemCategory" Value="InvItem_Unset">0</Enum>
<Enum Name="ContainerCategory" Type="InventoryItemCategory" Value="InvItem_Unset">0</Enum>
<Enum Name="ComparisonType" Type="InventoryCondition::ComparisonType" Value="ComparisonType_Equal">0</Enum>
<Unsigned32 Name="Count">0</Unsigned32>
</Object>
</ObjectPtr>
<BaseObject ID="777000000058" Name="ProgressionCharacterSelector" Type="ProgressionCharacterSelector">
<Handle Name="ProgressionCharacter" Type="ProgressionCharacter" PointerType="Inlined" Path="0">0</Handle>
</BaseObject>
</ObjectPtr>
<DynamicSmallArray Name="WorldUpgradeActions" Type="ObjectPtr">
<ObjectPtr ID="777000000059" Type="WorldUpgradeAction" PointerType="Inlined">
<Enum Name="WorldUpgradeActionType" Type="WorldUpgradeActionType" Value="WorldUpgradeActionType_OnUpgrade">1</Enum>
<Bool Name="CanExecuteOffline">True</Bool>
<Enum Name="RevertMode" Type="AbstractWorldUpgradeAction::RevertMode" Value="RevertMode_Never">2</Enum>
<Bool Name="IsExecuteAllowedOnExternalCommit">False</Bool>
<ObjectPtr ID="777000000060" Name="AIAction" Type="ActionItemSettingsLock" PointerType="Inlined" IsManaged="true">
<Enum Name="Type" Type="AIActionType" Value="AIActionType_Reversible">1</Enum>
<Enum Name="LockType" Type="ActionItemSettingsLock::LockType" Value="LockType_Unlock">1</Enum>
<DynamicSmallArray Name="InventoryItems" Type="Handle">
<Handle Type="InventoryItemSettings" PointerType="Inlined" Path="DataPC\Game Bootstrap Settings\ACGA_Outfit_MyOutfit.InventoryItemSettings">777000000001</Handle>
</DynamicSmallArray>
</ObjectPtr>
</ObjectPtr>
<ObjectPtr ID="777000000061" Type="WorldUpgradeAction" PointerType="Inlined">
<Enum Name="WorldUpgradeActionType" Type="WorldUpgradeActionType" Value="WorldUpgradeActionType_OnUpgrade">1</Enum>
<Bool Name="CanExecuteOffline">True</Bool>
<Enum Name="RevertMode" Type="AbstractWorldUpgradeAction::RevertMode" Value="RevertMode_Never">2</Enum>
<Bool Name="IsExecuteAllowedOnExternalCommit">False</Bool>
<ObjectPtr ID="777000000062" Name="AIAction" Type="ActionQuestItem" PointerType="Inlined" IsManaged="true">
<Enum Name="Type" Type="AIActionType" Value="AIActionType_Reversible">1</Enum>
<Enum Name="EntitySelectionMode" Type="AIActionEntity::EntitySelectionMode" Value="EntitySelectionMode_Context">0</Enum>
<Handle Name="Entity" Type="Entity" PointerType="Inlined" Path="0">0</Handle>
<Enum Name="TransactionType" Type="ActionQuestItem::TransactionType" Value="TransactionType_Add">0</Enum>
<DynamicSmallArray Name="ActionQuestItemInventoryItems" Type="ObjectPtr" />
<Object ID="777000000063" Name="InventoryItems" Type="ActionQuestItemInventoryItemWrapper">
<DynamicSmallArray Name="Items" Type="ObjectPtr">
<ObjectPtr ID="777000000064" Type="ActionQuestItemInventoryItem" PointerType="Inlined">
<Handle Name="InventoryItemSettings" Type="InventoryItemSettings" PointerType="Inlined" Path="DataPC\Game Bootstrap Settings\ACGA_Outfit_MyOutfit.InventoryItemSettings">777000000001</Handle>
<Unsigned32 Name="Quantity">1</Unsigned32>
</ObjectPtr>
</DynamicSmallArray>
</Object>
<Bool Name="ForceAction">True</Bool>
<Bool Name="ForceCheckCharacterInventory">False</Bool>
<DynamicSmallArray Name="ActionQuestItemCategories" Type="ObjectPtr" />
<BaseObject ID="777000000065" Name="ProgressionCharacterSelector" Type="ProgressionCharacterSelector">
<Handle Name="ProgressionCharacter" Type="ProgressionCharacter" PointerType="Inlined" Path="25725995267">25725995267</Handle>
</BaseObject>
<Bool Name="ShowTransactionOnHUD">False</Bool>
<Enum Name="TrackingSpendType" Type="ActionQuestItem::TrackingSpendType" Value="TrackingSpendType_Unknown">0</Enum>
<Enum Name="TrackingEarnType" Type="ActionQuestItem::TrackingEarnType" Value="TrackingEarnType_MissionRewards">0</Enum>
<Unsigned32 Name="PreviousQuantity">0</Unsigned32>
</ObjectPtr>
</ObjectPtr>
</DynamicSmallArray>
</ObjectPtr>
</DynamicSmallArray>
</ObjectPtr>The outfit appears in three places in the rule: the condition, the unlock action and the add action. Replace all of them.
Repack 51_-_Game Bootstrap Settings.data, then DataPC.forge.
On the first load the outfit is owned and equipped. With several new outfits, the last one granted ends up equipped. On later loads nothing changes and the player keeps the outfit they chose.
The outfit is sold at a general store. Do steps 1-7, then:
In the outfit item (step 3), set DefaultPrice to the price in reales. To make it buyable only later, set Locked = True and unlock it with an ActionItemSettingsLock (LockType_Unlock) from an upgrade rule or accomplishment.
- Unpack
DataPC_Hideout.forge, then2047_-_Cell00562_DataBlock.data. - Export
106_-_GEN_Shop_GeneralStore_001.Entityto XML in the root of that folder. - Find the
ShopItemGroupwhoseUIPageInfoisACGA_UI_Page_Shop_Outfitsand append to itsItemList:
<ObjectPtr ID="777000000100" Type="ShopItemSettings" PointerType="InlinedManaged" IsManaged="false">
<Float Name="PriceMultiplier">1</Float>
<Handle Name="Item" Type="InventoryItemSettings" PointerType="Inlined" Path="DataPC\Game Bootstrap Settings\ACGA_Outfit_MyOutfit.InventoryItemSettings">777000000001</Handle>
<Handle Name="UIItemInfo" Type="UIInventoryItem" PointerType="Inlined" Path="DataPC\Game Bootstrap Settings\ACGA_UI_Outfit_MyOutfit.UIInventoryItem">777000000011</Handle>
</ObjectPtr>This adds it to the Hideout store only. To sell it in other stores too, repeat this for each store entity (see "Where shops get their items").
- Repack
51_-_Game Bootstrap Settings.data, thenDataPC.forge. - Repack
2047_-_Cell00562_DataBlock.data, thenDataPC_Hideout.forge.
The player crafts the outfit in the crafting menu. Do steps 1-7 with Locked = True on the outfit item, then:
-
Crafting item: create a second
InventoryItemSettingswithCategory = 9(InvItem_QuestItem),SubCategory = 0,Locked = False,StoreInInventory = True, plus aUIInventoryItemfor it. -
Recipe: create a
UICraftingRecipewithCraftedItem= the crafting item,Ingredients=CraftingIngrediententries (item + quantity),CraftingCategory = CraftingCategory_Outfit(4),IsUnique = True. -
CraftingContext (file 2112): add the recipe to the
UICraftingRecipearray. UIInventoryContext: add the crafting item'sUIInventoryItemto theInventoryItemsarray of theCraftingMenuStrutureobject. -
EconomicSystemSettings: also register the crafting item (step 6).
-
Grant rule: add the rule from Method 1, step 8, with these changes:
- Condition: the crafting item,
InventoryCheckType_PlayerInventory(0),ItemLockStatus_Unlocked(1),ComparisonType_Greater(3),Count0. -
CanExecuteOffline = Falseon the add action.
The vanilla Hunter/Poacher/Whaler/Shark Hunter outfits use this setup.
- Condition: the crafting item,
-
Repack as in Method 1.
CraftedItem must be the Category 9 item, crafting can't give Category 38 (outfit) items directly.
An outfit has two states:
-
Locked (
Lockedon the item): a locked outfit is hidden in the wardrobe. - Owned (in the save's gained inventory): an unlocked outfit that isn't owned shows as "Unavailable" in the wardrobe and "Available in shop" when sold.
ActionItemSettingsLock changes the locked state, ActionQuestItem (TransactionType_Add) adds an item to the gained inventory. Buying an outfit also adds it.
Upgrade rules (WorldUpgradeInventorySettings) don't save their own state. On every load, the game re-checks each rule's condition. If it is already true, the game assumes the rule fired in an earlier session and only runs the actions marked CanExecuteOffline. During play, a rule whose condition becomes true runs all its actions.
-
CanExecuteOffline = Trueon the add action: the condition is true when the save loads, so without it the outfit would never be added. - Condition "outfit is owned 0 times": the rule only fires until the outfit is owned. Adding an outfit also equips it, so a condition that stays true would force the outfit back on at every load.
- Append rules at the end of the list rather than inserting them in the middle.
Crafting rules don't need CanExecuteOffline on the add action: the crafted item isn't there when the save loads, so their condition only becomes true during play.
ComparisonType values: 0 Equal, 1 NotEqual, 2 GreaterOrEqual, 3 Greater, 4 LessOrEqual, 5 Less. ItemLockStatus: 0 Any, 1 Unlocked, 2 Locked.
Each shopkeeper has its own item list, the outfit page only names the shop tab:
GEN_Shop_GeneralStore_XXX.Entity
ββ GcLNonSpawningShop
ββ ShopSettings
ββ ItemGroupList[] : ShopItemGroup β one per shop tab
ββ ItemList[] : ShopItemSettings (PriceMultiplier, Item, UIItemInfo)
ββ UIPageInfo (ACGA_UI_Page_Shop_Outfits for outfits)
General store entities:
| Forge | Data file | Entity |
|---|---|---|
| DataPC_Hideout | Cell00562_DataBlock | GEN_Shop_GeneralStore_001 |
| DataPC_Havana | DataBlock_HAV_Interior_GeneralStore_001 / 002 / 003 | GEN_Shop_GeneralStore_001 / 002 / 003 |
| DataPC_Kingston | Cell00139_DataBlock | GEN_Shop_GeneralStore_001 |
| DataPC_Kingston | DataBlock_KIN_Interior_GeneralStore_001 / 002 / 003 | GEN_Shop_GeneralStore_001 / 002 / 003 |
| DataPC_Nassau | DataBlock_NAS_Interior_GeneralStore, DataBlock_NAS_Interior_GeneralStore_002 | GEN_Shop_GeneralStore_001 / 002 |
| DataPC_CaribbeanSea | Cell05298, Cell08935, Cell09240, Cell10303 | GEN_Shop_GeneralStore_002 / 006 / 005 / 003 |
In the shop, a locked outfit is hidden, an owned one can be equipped, anything else is buyable for DefaultPrice * PriceMultiplier.
An accomplishment that starts resolved with an ActionQuestItem doesn't add the outfit. Accomplishments can still unlock an outfit with ActionItemSettingsLock.
| Outfit | SubCategory | Price | How obtained |
|---|---|---|---|
| Default | 0 | 0 | Starting outfit |
| Cloak 1 | 1 | 1500 | Shop |
| Cloak 2 | 2 | 6000 | Shop |
| Cloak 3 | 3 | 3000 | Shop |
| Regular 1 | 4 | 5000 | Shop |
| Regular 2 | 5 | 8000 | Shop |
| Regular 3 | 6 | 0 | |
| Regular 4 | 7 | 10000 | Shop |
| Walpole 1 | 8 | 0 | |
| Walpole 2 | 9 | 0 | |
| Walpole 3 | 10 | 12000 | Shop |
| Templar Armor | 11 | 0 | Accomplishment (Gibbet keys) |
| Stealth | 12 | 0 | |
| Mayan | 13 | 0 | |
| Altair / Connor | 14 | 0 | DLC/Uplay |
| Ezio | 15 | 0 | DLC/Uplay |
| Captain Morgan | 16 | 0 | DLC |
| Stede Bonnet | 17 | 0 | DLC |
| Haytham | 18 | 0 | DLC |
| Captain Drake | 19 | 0 | DLC |
| Legend | 20 | 0 | |
| Whaler | 21 | 0 | Crafting |
| Hunter | 22 | 0 | Crafting |
| Poacher | 23 | 0 | Crafting |
| Shark Hunter | 24 | 0 | Crafting |
| Swim | 25 | 0 | Story |
| Walpole, Marooned, Foreigner, Simple Sailor, FlashBack 1/2 | 0 | 0 | Story |
| Outfit | EntityBuilder Path |
|---|---|
| Default | DataPC_extra_chr\CHR_P_EdwardKenway_Default\CHR_P_EdwardKenway_Default.EntityBuilder |
| Walpole | DataPC_extra_chr\CHR_P_EdwardKenway_Walpole\CHR_P_EdwardKenway_Walpole.EntityBuilder |
| Marooned | DataPC_extra_chr\CHR_P_EdwardKenway_Marooned\CHR_P_EdwardKenway_Marooned.EntityBuilder |
| Foreigner | DataPC_extra_chr\CHR_P_EdwardKenway_Foreigner\CHR_P_EdwardKenway_Foreigner.EntityBuilder |
| Simple Sailor | DataPC_extra_chr\CHR_P_EdwardKenway_SimpleSalor\CHR_P_EdwardKenway_SimpleSalor.EntityBuilder |
| FlashBack 1 | DataPC_extra_chr\CHR_P_EdwardKenway_FlashBack\CHR_P_EdwardKenway_FlashBack.EntityBuilder |
| FlashBack 2 | DataPC_extra_chr\CHR_P_EdwardKenway_FlashBack2\CHR_P_EdwardKenway_FlashBack2.EntityBuilder |
| Swim | DataPC_extra_chr\CHR_P_EdwardKenway_Swim\CHR_P_EdwardKenway_Swim.EntityBuilder |
| Hunter | DataPC_extra_chr\CHR_P_EdwardKenway_Hunter\CHR_P_EdwardKenway_Hunter.EntityBuilder |
| Poacher | DataPC_extra_chr\CHR_P_EdwardKenway_Poacher\CHR_P_EdwardKenway_Poacher.EntityBuilder |
| Whaler | DataPC_extra_chr\CHR_P_EdwardKenway_Whaler\CHR_P_EdwardKenway_Whaler.EntityBuilder |
| Shark Hunter | DataPC_extra_chr\CHR_P_EdwardKenway_Shark_Hunter\CHR_P_EdwardKenway_Shark_Hunter.EntityBuilder |
| Cloak 1 | DataPC_extra_chr\CHR_P_EdwardKenway_Cloak_1\CHR_P_EdwardKenway_Cloak_1.EntityBuilder |
| Cloak 2 | DataPC_extra_chr\CHR_P_EdwardKenway_Cloak_2\CHR_P_EdwardKenway_Cloak_2.EntityBuilder |
| Cloak 3 | DataPC_extra_chr\CHR_P_EdwardKenway_Cloak_3\CHR_P_EdwardKenway_Cloak_3.EntityBuilder |
| Regular 1 | DataPC_extra_chr\CHR_P_EdwardKenway_Regular_1\CHR_P_EdwardKenway_Regular_1.EntityBuilder |
| Regular 2 | DataPC_extra_chr\CHR_P_EdwardKenway_Regular_2\CHR_P_EdwardKenway_Regular_2.EntityBuilder |
| Regular 3 | DataPC_extra_chr\CHR_P_EdwardKenway_Regular_3\CHR_P_EdwardKenway_Regular_3.EntityBuilder |
| Regular 4 | DataPC_extra_chr\CHR_P_EdwardKenway_Regular_4\CHR_P_EdwardKenway_Regular_4.EntityBuilder |
| Walpole 1 | DataPC_extra_chr\CHR_P_EdwardKenway_Walpole_1\CHR_P_EdwardKenway_Walpole_1.EntityBuilder |
| Walpole 2 | DataPC_extra_chr\CHR_P_EdwardKenway_Walpole_2\CHR_P_EdwardKenway_Walpole_2.EntityBuilder |
| Walpole 3 | DataPC_extra_chr\CHR_P_EdwardKenway_Walpole_3\CHR_P_EdwardKenway_Walpole_3.EntityBuilder |
| Captain Drake | DataPC_extra_chr\CHR_P_EdwardKenway_Captain_Drake\CHR_P_EdwardKenway_Captain_Drake.EntityBuilder |
| Captain Morgan | DataPC_extra_chr\CHR_P_EdwardKenway_Captain_Morgan\CHR_P_EdwardKenway_Captain_Morgan.EntityBuilder |
| Haytham | DataPC_extra_chr\CHR_P_EdwardKenway_Haytham\CHR_P_EdwardKenway_Haytham.EntityBuilder |
| Legend | DataPC_extra_chr\CHR_P_EdwardKenway_Legend\CHR_P_EdwardKenway_Legend.EntityBuilder |
| Mayan | DataPC_extra_chr\CHR_P_EdwardKenway_Mayan1stCiv_Outfit\CHR_P_EdwardKenway_Mayan1stCiv_Outfit.EntityBuilder |
| Stealth | DataPC_extra_chr\CHR_P_EdwardKenway_Stealth_Outfit\CHR_P_EdwardKenway_Stealth_Outfit.EntityBuilder |
| Stede Bonnet | DataPC_extra_chr\CHR_P_EdwardKenway_Stede_Bonnet\CHR_P_EdwardKenway_Stede_Bonnet.EntityBuilder |
| Templar Armor | DataPC_extra_chr\CHR_P_EdwardKenway_TemplarArmor\CHR_P_EdwardKenway_TemplarArmor.EntityBuilder |
| Altair | DataPC_extra_chr\CHR_P_EdwardKenway_AltairOutfit\CHR_P_EdwardKenway_AltairOutfit.EntityBuilder |
| Ezio | DataPC_extra_chr\CHR_P_EdwardKenway_EzioOutfit\CHR_P_EdwardKenway_EzioOutfit.EntityBuilder |
| Connor | DataPC_extra_chr\CHR_P_EdwardKenway_ConnorOutfit\CHR_P_EdwardKenway_ConnorOutfit.EntityBuilder |
| File # | Name | Purpose |
|---|---|---|
| 69 | Cheat Manager | Shows the unlock actions for every outfit |
| 107 | PlayerProgressionManager_ACGA | Outfitβmodel mapping, upgrade rules |
| 111 | 000000006E1A3E32 (EconomicSystemSettings) | Master item list |
| 2112 | CraftingContext | Crafting recipe list |
| 3041-3073 | ACGA_Outfit_* | Vanilla outfit items |
| 6147 | ACGA_UI_Page_Shop_Outfits | Outfit page (wardrobe list, shop tab) |
| 7767-7792 | ACGA_UI_Outfit_* | Vanilla outfit UI items |