Combat foundation complete
This commit is contained in:
@@ -86,7 +86,12 @@ class Effect:
|
||||
|
||||
elif self.effect_type in [EffectType.BUFF, EffectType.DEBUFF]:
|
||||
# Buff/Debuff: modify stats
|
||||
result["stat_affected"] = self.stat_affected.value if self.stat_affected else None
|
||||
# Handle stat_affected being Enum or string
|
||||
if self.stat_affected:
|
||||
stat_value = self.stat_affected.value if hasattr(self.stat_affected, 'value') else self.stat_affected
|
||||
else:
|
||||
stat_value = None
|
||||
result["stat_affected"] = stat_value
|
||||
result["stat_modifier"] = self.power * self.stacks
|
||||
if self.effect_type == EffectType.BUFF:
|
||||
result["message"] = f"{self.name} increases {result['stat_affected']} by {result['stat_modifier']}"
|
||||
@@ -159,9 +164,17 @@ class Effect:
|
||||
Dictionary containing all effect data
|
||||
"""
|
||||
data = asdict(self)
|
||||
data["effect_type"] = self.effect_type.value
|
||||
# Handle effect_type (could be Enum or string)
|
||||
if hasattr(self.effect_type, 'value'):
|
||||
data["effect_type"] = self.effect_type.value
|
||||
else:
|
||||
data["effect_type"] = self.effect_type
|
||||
# Handle stat_affected (could be Enum, string, or None)
|
||||
if self.stat_affected:
|
||||
data["stat_affected"] = self.stat_affected.value
|
||||
if hasattr(self.stat_affected, 'value'):
|
||||
data["stat_affected"] = self.stat_affected.value
|
||||
else:
|
||||
data["stat_affected"] = self.stat_affected
|
||||
return data
|
||||
|
||||
@classmethod
|
||||
@@ -193,16 +206,21 @@ class Effect:
|
||||
|
||||
def __repr__(self) -> str:
|
||||
"""String representation of the effect."""
|
||||
# Helper to safely get value from Enum or string
|
||||
def safe_value(obj):
|
||||
return obj.value if hasattr(obj, 'value') else obj
|
||||
|
||||
if self.effect_type in [EffectType.BUFF, EffectType.DEBUFF]:
|
||||
stat_str = safe_value(self.stat_affected) if self.stat_affected else 'N/A'
|
||||
return (
|
||||
f"Effect({self.name}, {self.effect_type.value}, "
|
||||
f"{self.stat_affected.value if self.stat_affected else 'N/A'} "
|
||||
f"Effect({self.name}, {safe_value(self.effect_type)}, "
|
||||
f"{stat_str} "
|
||||
f"{'+' if self.effect_type == EffectType.BUFF else '-'}{self.power * self.stacks}, "
|
||||
f"{self.duration}t, {self.stacks}x)"
|
||||
)
|
||||
else:
|
||||
return (
|
||||
f"Effect({self.name}, {self.effect_type.value}, "
|
||||
f"Effect({self.name}, {safe_value(self.effect_type)}, "
|
||||
f"power={self.power * self.stacks}, "
|
||||
f"duration={self.duration}t, stacks={self.stacks}x)"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user