1 Commits

Author SHA1 Message Date
477574f842 feat(attributes): MATK range min~max no snapshot + display
Espelha breaking change do server (S_ATTRIBUTE_SNAPSHOT_FULL agora envia
matkBaseMin/matkBaseMax em vez de matkBase unico) para suportar MATK
pre-renewal puro (rathena status_base_matk_min/max).

- FZeusAttributesPayload: MatkBaseMin/Max em vez de MatkBase
- FZMMOAttributesSnapshot: idem (BlueprintReadOnly)
- ZMMOStatusWindowWidget: exibe "MATK min ~ max + equip"

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 01:53:02 -03:00
3 changed files with 8 additions and 3 deletions

View File

@@ -113,7 +113,8 @@ void UZMMOStatusWindowWidget::RefreshFromSnapshot(const FZMMOAttributesSnapshot&
// Derivados — formato RO "STAT base + equip" (ex.: "ATK 51 + 0"). // Derivados — formato RO "STAT base + equip" (ex.: "ATK 51 + 0").
// Servidor manda os dois separados; cliente NUNCA recalcula. // Servidor manda os dois separados; cliente NUNCA recalcula.
if (AtkText) AtkText->SetText(FText::FromString(FString::Printf(TEXT("ATK %d + %d"), S.AtkBase, S.AtkEquipBonus))); if (AtkText) AtkText->SetText(FText::FromString(FString::Printf(TEXT("ATK %d + %d"), S.AtkBase, S.AtkEquipBonus)));
if (MatkText) MatkText->SetText(FText::FromString(FString::Printf(TEXT("MATK %d + %d"), S.MatkBase, S.MatkEquipBonus))); // MATK pre-renewal: range "min ~ max + equip" (rathena status_base_matk_min/max).
if (MatkText) MatkText->SetText(FText::FromString(FString::Printf(TEXT("MATK %d ~ %d + %d"), S.MatkBaseMin, S.MatkBaseMax, S.MatkEquipBonus)));
if (DefText) DefText->SetText(FText::FromString(FString::Printf(TEXT("DEF %d + %d"), S.DefBase, S.DefEquipBonus))); if (DefText) DefText->SetText(FText::FromString(FString::Printf(TEXT("DEF %d + %d"), S.DefBase, S.DefEquipBonus)));
if (MdefText) MdefText->SetText(FText::FromString(FString::Printf(TEXT("MDEF %d + %d"), S.MdefBase, S.MdefEquipBonus))); if (MdefText) MdefText->SetText(FText::FromString(FString::Printf(TEXT("MDEF %d + %d"), S.MdefBase, S.MdefEquipBonus)));
if (HitText) HitText->SetText(FText::FromString(FString::Printf(TEXT("HIT %d + %d"), S.HitBase, S.HitEquipBonus))); if (HitText) HitText->SetText(FText::FromString(FString::Printf(TEXT("HIT %d + %d"), S.HitBase, S.HitEquipBonus)));

View File

@@ -37,7 +37,8 @@ namespace
S.Money = P.Money; S.Money = P.Money;
S.AtkBase = P.AtkBase; S.AtkBase = P.AtkBase;
S.AtkEquipBonus = P.AtkEquipBonus; S.AtkEquipBonus = P.AtkEquipBonus;
S.MatkBase = P.MatkBase; S.MatkBaseMin = P.MatkBaseMin;
S.MatkBaseMax = P.MatkBaseMax;
S.MatkEquipBonus = P.MatkEquipBonus; S.MatkEquipBonus = P.MatkEquipBonus;
S.DefBase = P.DefBase; S.DefBase = P.DefBase;
S.DefEquipBonus = P.DefEquipBonus; S.DefEquipBonus = P.DefEquipBonus;

View File

@@ -56,7 +56,10 @@ struct ZMMOATTRIBUTES_API FZMMOAttributesSnapshot
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 AtkBase = 0; UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 AtkBase = 0;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 AtkEquipBonus = 0; UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 AtkEquipBonus = 0;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 MatkBase = 0; /** MATK pre-renewal e' um range [min, max] (rathena status_base_matk_min/max).
* Display: "MATK min ~ max + equip". */
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 MatkBaseMin = 0;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 MatkBaseMax = 0;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 MatkEquipBonus = 0; UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 MatkEquipBonus = 0;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 DefBase = 0; UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 DefBase = 0;