class SealOptionData(db.Model): __tablename__ = "seal_option_data" _mapper_utils = { "files": { "server": ["s_SealOptionValueData.bin"] }, } code = CustomColumn(db.String(32), primary_key=True, mapper_key="코드") effect_code = CustomColumn(db.Enum(EffectCode), nullable=False, mapper_key="효과코드", transform=lambda v: EffectCode(v)) operator = CustomColumn(db.String(4), mapper_key="Operator", transform=lambda v: v if v != "#" else None) def to_dict(self) -> dict: intervalls = {} for cname in COLUMN_NAMES: intervalls[cname.lower()] = getattr(self, cname) return { "code": self.code, "effect_code": self.effect_code.to_dict(), "operator": self.operator, "intervalls": intervalls, }
def passive_3_code(cls): return CustomColumn( Enum(EffectCode), mapper_key="패시브코드3", transform=lambda v: EffectCode(v) if v != MAX_INT else None)
def effect_4_code(cls): return CustomColumn( Enum(EffectCode), mapper_key="지속코드4", transform=lambda v: EffectCode(v) if v != MAX_INT else None)
item.to_dict(with_item_data=True) for item in item_columns if item ], "effects": effects, } # Add effect columns for i in range(1, 13): # Code setattr( ItemSet, f"effect_{i}_code", CustomColumn(db.Enum(EffectCode), mapper_key=f"효과코드_{i}", transform=(lambda v: EffectCode(v) if v != MAX_INT else None))) # Operator setattr( ItemSet, f"effect_{i}_operator", CustomColumn(db.String(4), mapper_key=f"수치연산자_{i}", transform=lambda v: v if v != "#" else None)) # Value setattr( ItemSet, f"effect_{i}_value", CustomColumn(db.Float, mapper_key=f"효과값_{i}", transform=bonus_value_transform))
def bonus_5_code(cls): return CustomColumn( Enum(EffectCode), mapper_key="효과코드_5", transform=lambda v: EffectCode(v) if v != MAX_INT else None)