feat(attributes/ui): display "ATK base + bonus" igual RO + ASPD único
- FZMMOAttributesSnapshot ganha 7 pares (AtkBase/AtkEquipBonus, ...) + Aspd único, espelhando split do server. - ZMMOAttributeNetworkHandler::ToSnapshot mapeia campos novos do FZeusAttributesPayload. - WBP_StatusWindow / RefreshFromSnapshot agora formata derivados como "ATK 51 + 0", "CRIT 1.3 + 0.0", "ASPD 150" (este sem split — cálculo não-linear no server via aspd_base × stats). Quando InventorySystem entrar, equipar arma muda `currentWeapon` no server, Recalculate roda, e UI mostra ATK/MATK/DEF/etc com bonus > 0 e ASPD ajustado pela aspd_base da arma equipada. Sem código de migração — schema do snapshot já está estabilizado.
This commit is contained in:
@@ -35,14 +35,21 @@ namespace
|
||||
S.Sp = P.Sp;
|
||||
S.MaxSp = P.MaxSp;
|
||||
S.Money = P.Money;
|
||||
S.Atk = P.Atk;
|
||||
S.Matk = P.Matk;
|
||||
S.Def = P.Def;
|
||||
S.Mdef = P.Mdef;
|
||||
S.Hit = P.Hit;
|
||||
S.Flee = P.Flee;
|
||||
S.CritX10 = P.CritX10;
|
||||
S.Aspd = P.Aspd;
|
||||
S.AtkBase = P.AtkBase;
|
||||
S.AtkEquipBonus = P.AtkEquipBonus;
|
||||
S.MatkBase = P.MatkBase;
|
||||
S.MatkEquipBonus = P.MatkEquipBonus;
|
||||
S.DefBase = P.DefBase;
|
||||
S.DefEquipBonus = P.DefEquipBonus;
|
||||
S.MdefBase = P.MdefBase;
|
||||
S.MdefEquipBonus = P.MdefEquipBonus;
|
||||
S.HitBase = P.HitBase;
|
||||
S.HitEquipBonus = P.HitEquipBonus;
|
||||
S.FleeBase = P.FleeBase;
|
||||
S.FleeEquipBonus = P.FleeEquipBonus;
|
||||
S.CritBaseX10 = P.CritBaseX10;
|
||||
S.CritEquipBonusX10 = P.CritEquipBonusX10;
|
||||
S.Aspd = P.Aspd;
|
||||
return S;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,14 +50,31 @@ struct ZMMOATTRIBUTES_API FZMMOAttributesSnapshot
|
||||
// === Moeda ===
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes") int64 Money = 0;
|
||||
|
||||
// === Derivados (efetivos; servidor sempre recalcula) ===
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 Atk = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 Matk = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 Def = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 Mdef = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 Hit = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 Flee = 0;
|
||||
// === Derivados split em pares (base, equipBonus) ===
|
||||
// Padrao RO: display mostra "ATK 51 + 0" (base + equip). Cliente NUNCA
|
||||
// recalcula — servidor envia ambos prontos no S_ATTRIBUTE_SNAPSHOT_FULL.
|
||||
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 MatkBase = 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 DefEquipBonus = 0;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 MdefBase = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 MdefEquipBonus = 0;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 HitBase = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 HitEquipBonus = 0;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 FleeBase = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 FleeEquipBonus = 0;
|
||||
|
||||
/** Critico × 10 internamente (10 = 1.0). Divida por 10 para exibir. */
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 CritX10 = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 CritBaseX10 = 0;
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 CritEquipBonusX10 = 0;
|
||||
|
||||
/** ASPD nao splita — calculo nao-linear via aspd_base × stats. Display direto. */
|
||||
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Attributes|Derived") int32 Aspd = 0;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user