Combat foundation complete
This commit is contained in:
@@ -15,7 +15,7 @@ import yaml
|
||||
|
||||
from app.models.items import Item
|
||||
from app.models.effects import Effect
|
||||
from app.models.enums import ItemType, ItemRarity, EffectType
|
||||
from app.models.enums import ItemType, ItemRarity, EffectType, DamageType
|
||||
from app.utils.logging import get_logger
|
||||
|
||||
logger = get_logger(__file__)
|
||||
@@ -178,6 +178,20 @@ class StaticItemLoader:
|
||||
# Parse stat bonuses if present
|
||||
stat_bonuses = template.get("stat_bonuses", {})
|
||||
|
||||
# Parse damage type if present (for weapons)
|
||||
damage_type = None
|
||||
damage_type_str = template.get("damage_type")
|
||||
if damage_type_str:
|
||||
try:
|
||||
damage_type = DamageType(damage_type_str)
|
||||
except ValueError:
|
||||
logger.warning(
|
||||
"Unknown damage type, defaulting to physical",
|
||||
damage_type=damage_type_str,
|
||||
item_id=item_id
|
||||
)
|
||||
damage_type = DamageType.PHYSICAL
|
||||
|
||||
return Item(
|
||||
item_id=instance_id,
|
||||
name=template.get("name", item_id),
|
||||
@@ -188,6 +202,17 @@ class StaticItemLoader:
|
||||
is_tradeable=template.get("is_tradeable", True),
|
||||
stat_bonuses=stat_bonuses,
|
||||
effects_on_use=effects,
|
||||
# Weapon-specific fields
|
||||
damage=template.get("damage", 0),
|
||||
spell_power=template.get("spell_power", 0),
|
||||
damage_type=damage_type,
|
||||
crit_chance=template.get("crit_chance", 0.05),
|
||||
crit_multiplier=template.get("crit_multiplier", 2.0),
|
||||
# Armor-specific fields
|
||||
defense=template.get("defense", 0),
|
||||
resistance=template.get("resistance", 0),
|
||||
# Level requirements
|
||||
required_level=template.get("required_level", 1),
|
||||
)
|
||||
|
||||
def _parse_effect(self, effect_data: Dict) -> Optional[Effect]:
|
||||
|
||||
Reference in New Issue
Block a user