added inventory service for armor and jewelry

This commit is contained in:
erik 2025-06-12 23:05:33 +00:00
parent 09a6cd4946
commit 57a2384511
13 changed files with 2630 additions and 25 deletions

View file

@ -34,6 +34,29 @@ class Item(Base):
value = Column(Integer, default=0)
burden = Column(Integer, default=0)
# Equipment status
current_wielded_location = Column(Integer, default=0, index=True) # 0 = not equipped
# Item state
bonded = Column(Integer, default=0) # 0=Normal, 1=Bonded, 2=Sticky, 4=Destroy on drop
attuned = Column(Integer, default=0) # 0=Normal, 1=Attuned
unique = Column(Boolean, default=False)
# Stack/Container properties
stack_size = Column(Integer, default=1)
max_stack_size = Column(Integer, default=1)
items_capacity = Column(Integer) # For containers
containers_capacity = Column(Integer) # For containers
# Durability
structure = Column(Integer) # Current durability
max_structure = Column(Integer) # Maximum durability
# Special item flags
rare_id = Column(Integer) # For rare items
lifespan = Column(Integer) # Item decay timer
remaining_lifespan = Column(Integer) # Remaining decay time
# Metadata flags
has_id_data = Column(Boolean, default=False)
last_id_time = Column(BigInteger, default=0)
@ -60,6 +83,11 @@ class ItemCombatStats(Base):
elemental_damage_vs_monsters = Column(Float)
variance = Column(Float)
# Advanced damage properties
cleaving = Column(Integer) # Cleaving damage
crit_damage_rating = Column(Integer) # Critical damage multiplier
damage_over_time = Column(Integer) # DoT damage
# Attack properties
attack_bonus = Column(Float)
weapon_time = Column(Integer)
@ -74,9 +102,24 @@ class ItemCombatStats(Base):
# Resistances
resist_magic = Column(Integer)
crit_resist_rating = Column(Integer)
crit_damage_resist_rating = Column(Integer)
dot_resist_rating = Column(Integer)
life_resist_rating = Column(Integer)
nether_resist_rating = Column(Integer)
# Healing/Recovery
heal_over_time = Column(Integer)
healing_resist_rating = Column(Integer)
# Mana properties
mana_conversion_bonus = Column(Float)
# PvP properties
pk_damage_rating = Column(Integer)
pk_damage_resist_rating = Column(Integer)
gear_pk_damage_rating = Column(Integer)
gear_pk_damage_resist_rating = Column(Integer)
class ItemRequirements(Base):
"""Wield requirements and skill prerequisites."""
@ -105,8 +148,30 @@ class ItemEnhancements(Base):
workmanship = Column(Float)
salvage_workmanship = Column(Float)
# Advanced tinkering
num_times_tinkered = Column(Integer, default=0)
free_tinkers_bitfield = Column(Integer) # Which tinkers are free
num_items_in_material = Column(Integer) # Salvage yield
# Additional imbue effects
imbue_attempts = Column(Integer, default=0)
imbue_successes = Column(Integer, default=0)
imbued_effect2 = Column(Integer)
imbued_effect3 = Column(Integer)
imbued_effect4 = Column(Integer)
imbued_effect5 = Column(Integer)
imbue_stacking_bits = Column(Integer) # Which imbues stack
# Set information
item_set = Column(String(100), index=True)
equipment_set_extra = Column(Integer) # Additional set bonuses
# Special properties
aetheria_bitfield = Column(Integer) # Aetheria slot properties
heritage_specific_armor = Column(Integer) # Heritage armor type
# Cooldowns
shared_cooldown = Column(Integer) # Cooldown group ID
class ItemRatings(Base):
"""Modern rating system properties."""
@ -126,6 +191,22 @@ class ItemRatings(Base):
heal_boost_rating = Column(Integer)
vitality_rating = Column(Integer)
mana_conversion_rating = Column(Integer)
weakness_rating = Column(Integer) # Weakness debuff strength
nether_over_time = Column(Integer) # Nether DoT
# Gear totals
gear_damage = Column(Integer) # Total gear damage
gear_damage_resist = Column(Integer) # Total gear damage resist
gear_crit = Column(Integer) # Total gear crit
gear_crit_resist = Column(Integer) # Total gear crit resist
gear_crit_damage = Column(Integer) # Total gear crit damage
gear_crit_damage_resist = Column(Integer) # Total gear crit damage resist
gear_healing_boost = Column(Integer) # Total gear healing boost
gear_max_health = Column(Integer) # Total gear max health
gear_nether_resist = Column(Integer) # Total gear nether resist
gear_life_resist = Column(Integer) # Total gear life resist
gear_overpower = Column(Integer) # Total gear overpower
gear_overpower_resist = Column(Integer) # Total gear overpower resist
# Calculated totals
total_rating = Column(Integer)
@ -164,6 +245,9 @@ def create_indexes(engine):
# Item search indexes
sa.Index('ix_items_search', Item.character_name, Item.name, Item.object_class).create(engine, checkfirst=True)
# Equipment status index for filtering equipped items
sa.Index('ix_items_equipped', Item.character_name, Item.current_wielded_location).create(engine, checkfirst=True)
# Combat stats indexes for filtering
sa.Index('ix_combat_damage', ItemCombatStats.max_damage).create(engine, checkfirst=True)
sa.Index('ix_combat_armor', ItemCombatStats.armor_level).create(engine, checkfirst=True)