Skip to content

Feature 7: Equipment System (Equip/Unequip Items) #132

@aphexlog

Description

@aphexlog

Description

Allow items to be marked as equipped, with visual indicators and stat modifiers applied.

Priority

P2 (Medium) - Enhances inventory system

Estimated Effort

3 days

Dependencies

Acceptance Criteria

  • Toggle button to equip/unequip items
  • Equipped items have visual indicator (checkmark, highlight)
  • Equipped weapon/armor affects stats
  • Only one weapon and one armor equipped at a time
  • Equipping new item unequips old one
  • Stat modifiers calculated and displayed

Implementation Details

const equipItem = async (itemId: string) => {
  const item = inventory.find(i => i.id === itemId);
  
  // Unequip other items of same type
  const updatedInventory = inventory.map(i => ({
    ...i,
    equipped: i.id === itemId ? true : (i.type === item.type ? false : i.equipped)
  }));
  
  await updateInventory(updatedInventory);
  
  // Recalculate stats based on equipped items
  recalculateStats(updatedInventory);
};

const recalculateStats = (inventory: InventoryItem[]) => {
  const equippedItems = inventory.filter(i => i.equipped);
  
  let acBonus = 0;
  let damageBonus = 0;
  
  equippedItems.forEach(item => {
    if (item.stats?.armorClass) acBonus += item.stats.armorClass;
    if (item.stats?.damage) damageBonus += item.stats.damage;
  });
  
  // Update character stats
  updateCharacterStat('armorClass', baseAC + acBonus);
};

Testing

  • Equip weapon → stat bonus applied
  • Equip armor → AC increases
  • Equipping new weapon unequips old
  • Visual indicator shows equipped
  • Stats recalculate correctly

Related Documentation

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2: MediumMedium priority - enhanced UXcharacter-sheetCharacter sheet featuresenhancementNew feature or requestgame-masterGame Master mode features

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions