Inventory Types Reference¶
Header: FWInventoryTypes.h
All type definitions used by the FWInventorySystem plugin. Every struct is marked BlueprintType for full Blueprint compatibility.
Enums¶
EFWItemType¶
Categorizes items by their fundamental behavior.
UENUM(BlueprintType)
enum class EFWItemType : uint8
{
Equipment, // Equippable gear (weapons, armor, accessories)
Consumable, // Single-use items (potions, food, scrolls)
Material, // Crafting materials
Quest, // Quest-related items (non-tradeable)
Currency, // Currency tokens
Augmentor, // Items used to augment other items
Gizmo, // Perks/gizmos slotted into equipment
Tool, // Tools (fishing rod, pickaxe, etc.)
Container // Containers that hold other items
};
EFWEquipmentType¶
Defines the equipment slot an item occupies.
UENUM(BlueprintType)
enum class EFWEquipmentType : uint8
{
MeleeWeapon,
RangedWeapon,
Shield,
Helmet,
Chest,
Legs,
Boots,
Gloves,
Ring,
Amulet,
Cloak,
Belt,
Bag
};
| Slot | Description | Typical Stats |
|---|---|---|
MeleeWeapon |
Main-hand melee weapon | Damage, Strength, CritChance |
RangedWeapon |
Main-hand ranged weapon | Damage, Dexterity, Range |
Shield |
Off-hand defensive | Defense, Block, Vitality |
Helmet |
Head armor | Defense, Intelligence, MagicResist |
Chest |
Body armor | Defense, Vitality, MaxHP |
Legs |
Leg armor | Defense, Vitality |
Boots |
Foot armor | Defense, MoveSpeed |
Gloves |
Hand armor | Defense, AttackSpeed, CritChance |
Ring |
Finger accessory | Various stats |
Amulet |
Neck accessory | Various stats |
Cloak |
Back slot | Defense, MagicResist, Stealth |
Belt |
Waist slot | Vitality, PotionSlots |
Bag |
Inventory expansion | InventorySlots |
EFWItemQuality¶
Item rarity/quality tier, affecting visuals, stats, and vendor pricing.
UENUM(BlueprintType)
enum class EFWItemQuality : uint8
{
Poor, // Grey
Common, // White
Uncommon, // Green
Rare, // Blue
Epic, // Purple
Legendary, // Orange
Mythic, // Red
Artifact // Gold
};
| Quality | Color | Max Affixes | Vendor Multiplier |
|---|---|---|---|
| Poor | Grey | 0 | 0.5x |
| Common | White | 0 | 1.0x |
| Uncommon | Green | 1 | 1.5x |
| Rare | Blue | 2 | 2.5x |
| Epic | Purple | 3 | 5.0x |
| Legendary | Orange | 4 | 10.0x |
| Mythic | Red | 5 | 25.0x |
| Artifact | Gold | 6 | 50.0x |
EFWItemBinding¶
Determines when and how an item becomes bound to a player.
UENUM(BlueprintType)
enum class EFWItemBinding : uint8
{
None, // Freely tradeable
BindOnEquip, // Binds when equipped
BindOnPickup, // Binds when looted/received
BindOnUse, // Binds when consumed
AccountBound // Bound to the account, tradeable between characters
};
EFWAugmentState¶
Tracks the augmentation progress of an item instance.
UENUM(BlueprintType)
enum class EFWAugmentState : uint8
{
None, // Not augmented
Augmented_1, // First augmentation tier
Augmented_2, // Second augmentation tier
Augmented_3, // Third augmentation tier
Augmented_4, // Fourth augmentation tier
Augmented_5, // Fifth (maximum) augmentation tier
Failed // Augmentation failed (item may be degraded)
};
Augmentation Mechanics
Each augmentation tier increases the item's stat values by a percentage. Higher tiers have lower success rates. A failed augmentation may reduce the item's augment level by one tier or reset it entirely, depending on configuration.
EFWInventoryType¶
Identifies the type of inventory container.
UENUM(BlueprintType)
enum class EFWInventoryType : uint8
{
Backpack, // Player's main inventory
Equipment, // Currently equipped items
Bank, // Personal bank storage
GuildBank, // Shared guild bank
Trade, // Trade window
Mail, // Mail attachments
Loot, // Loot window from kills/chests
Vendor, // Vendor shop inventory
Crafting // Crafting material slots
};
Structs¶
FFWItemInstance¶
Runtime representation of an individual item. Contains the item's unique identity, current state, and generated properties.
USTRUCT(BlueprintType)
struct FFWItemInstance
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
FGuid InstanceId;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
TObjectPtr<UFWItemDefinition> Definition;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
int32 Quantity = 1;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
float Durability = -1.0f; // -1 = indestructible
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
TArray<FFWAffixInstance> Affixes;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
EFWAugmentState AugmentState = EFWAugmentState::None;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
int32 AugmentLevel = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
FString BoundToPlayerId;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
FDateTime AcquiredAt;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
int32 ItemLevel = 1;
// Helpers
bool IsValid() const { return InstanceId.IsValid() && Definition != nullptr; }
bool IsBound() const { return !BoundToPlayerId.IsEmpty(); }
bool HasDurability() const { return Durability >= 0.0f; }
float GetDurabilityPercent() const;
};
| Field | Type | Description |
|---|---|---|
InstanceId |
FGuid |
Globally unique identifier for this specific item instance. |
Definition |
UFWItemDefinition* |
Reference to the item's data asset definition. |
Quantity |
int32 |
Stack count. Always 1 for non-stackable items. |
Durability |
float |
Current durability. -1 means indestructible. |
Affixes |
TArray<FFWAffixInstance> |
Generated affixes with rolled stat values. |
AugmentState |
EFWAugmentState |
Current augmentation tier. |
AugmentLevel |
int32 |
Numeric augment level (0-5). |
BoundToPlayerId |
FString |
Player ID this item is bound to. Empty if unbound. |
AcquiredAt |
FDateTime |
Timestamp when the item was first obtained. |
ItemLevel |
int32 |
Effective item level (affects affix scaling). |
FFWAffixRule¶
Defines a single affix that can roll on an item, including stat, value range, weight, and constraints.
USTRUCT(BlueprintType)
struct FFWAffixRule
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Affix")
FGameplayTag StatTag;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Affix")
float MinValue = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Affix")
float MaxValue = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Affix")
bool bIsPercentage = false;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Affix")
float Weight = 1.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Affix")
int32 RequiredItemLevel = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Affix")
FGameplayTagContainer ExclusionTags;
};
| Field | Type | Description |
|---|---|---|
StatTag |
FGameplayTag |
The stat this affix modifies (e.g., Stat.Strength). |
MinValue |
float |
Minimum rolled value (inclusive). |
MaxValue |
float |
Maximum rolled value (inclusive). |
bIsPercentage |
bool |
Whether the value is a percentage modifier. |
Weight |
float |
Relative weight in the affix pool. Higher = more likely. |
RequiredItemLevel |
int32 |
Minimum item level for this affix to be eligible. |
ExclusionTags |
FGameplayTagContainer |
Tags of other affixes that cannot appear alongside this one. |
Affix Rule Example
FFWAffixInstance¶
A rolled affix instance on an item, with the concrete value determined by the affix rule's range.
USTRUCT(BlueprintType)
struct FFWAffixInstance
{
GENERATED_BODY()
UPROPERTY(BlueprintReadOnly, Category = "Affix")
FGameplayTag StatTag;
UPROPERTY(BlueprintReadOnly, Category = "Affix")
float Value;
UPROPERTY(BlueprintReadOnly, Category = "Affix")
bool bIsPercentage;
UPROPERTY(BlueprintReadOnly, Category = "Affix")
FGameplayTag AffixId;
};
FFWRecipeIngredient¶
A single material requirement for a crafting recipe.
USTRUCT(BlueprintType)
struct FFWRecipeIngredient
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Crafting")
TObjectPtr<UFWItemDefinition> ItemDefinition;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Crafting")
int32 Quantity = 1;
};
FFWEquipmentSlotConfig¶
Configuration for a single equipment slot, allowing customization of slot behavior.
USTRUCT(BlueprintType)
struct FFWEquipmentSlotConfig
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Equipment")
EFWEquipmentType SlotType;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Equipment")
bool bIsEnabled = true;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Equipment")
int32 SlotCount = 1; // >1 for slots like Ring (2 ring slots)
};
Type Relationships¶
UFWItemDefinition (Data Asset)
|
+-- EFWItemType (categorization)
+-- EFWEquipmentType (slot mapping)
+-- EFWItemQuality (rarity)
+-- EFWItemBinding (trade restrictions)
+-- TArray<FFWAffixRule> (affix pool)
|
v
FFWItemInstance (Runtime)
|
+-- FGuid InstanceId (unique)
+-- int32 Quantity (stack)
+-- float Durability (wear)
+-- TArray<FFWAffixInstance> (rolled affixes)
+-- EFWAugmentState (upgrade tier)
+-- FString BoundToPlayerId (binding)