From e41f35537a08155d3c2bff70175ee25ca553e97a Mon Sep 17 00:00:00 2001 From: Travja Date: Wed, 31 Jan 2024 19:58:13 -0700 Subject: [PATCH] Fix attack speed once and for all --- .../quantumrpg/stats/items/ItemStats.java | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/main/java/su/nightexpress/quantumrpg/stats/items/ItemStats.java b/src/main/java/su/nightexpress/quantumrpg/stats/items/ItemStats.java index cd603010..8323f064 100644 --- a/src/main/java/su/nightexpress/quantumrpg/stats/items/ItemStats.java +++ b/src/main/java/su/nightexpress/quantumrpg/stats/items/ItemStats.java @@ -37,17 +37,26 @@ public class ItemStats { private static final Map> ATTRIBUTES = new HashMap<>(); private static final Map> MULTI_ATTRIBUTES = new HashMap<>(); private static final QuantumRPG plugin = QuantumRPG.getInstance(); - private static final NamespacedKey KEY_ID = new NamespacedKey(plugin, ItemTags.TAG_ITEM_ID); - private static final NamespacedKey KEY_MODULE = new NamespacedKey(plugin, ItemTags.TAG_ITEM_MODULE); - private static final NamespacedKey KEY_LEVEL = new NamespacedKey(plugin, ItemTags.TAG_ITEM_LEVEL); - private static final NamespacedKey KEY_SOCKET = new NamespacedKey(plugin, ItemTags.TAG_ITEM_SOCKET_RATE); - private static final NamespacedKey KEY_ID2 = NamespacedKey.fromString("quantumrpg:" + ItemTags.TAG_ITEM_ID.toLowerCase()); - private static final NamespacedKey KEY_MODULE2 = NamespacedKey.fromString("quantumrpg:" + ItemTags.TAG_ITEM_MODULE.toLowerCase()); - private static final NamespacedKey KEY_LEVEL2 = NamespacedKey.fromString("quantumrpg:" + ItemTags.TAG_ITEM_LEVEL.toLowerCase()); - private static final NamespacedKey KEY_SOCKET2 = NamespacedKey.fromString("quantumrpg:" + ItemTags.TAG_ITEM_SOCKET_RATE.toLowerCase()); + private static final NamespacedKey KEY_ID = + new NamespacedKey(plugin, ItemTags.TAG_ITEM_ID); + private static final NamespacedKey KEY_MODULE = + new NamespacedKey(plugin, ItemTags.TAG_ITEM_MODULE); + private static final NamespacedKey KEY_LEVEL = + new NamespacedKey(plugin, ItemTags.TAG_ITEM_LEVEL); + private static final NamespacedKey KEY_SOCKET = + new NamespacedKey(plugin, ItemTags.TAG_ITEM_SOCKET_RATE); + private static final NamespacedKey KEY_ID2 = + NamespacedKey.fromString("quantumrpg:" + ItemTags.TAG_ITEM_ID.toLowerCase()); + private static final NamespacedKey KEY_MODULE2 = + NamespacedKey.fromString("quantumrpg:" + ItemTags.TAG_ITEM_MODULE.toLowerCase()); + private static final NamespacedKey KEY_LEVEL2 = + NamespacedKey.fromString("quantumrpg:" + ItemTags.TAG_ITEM_LEVEL.toLowerCase()); + private static final NamespacedKey KEY_SOCKET2 = + NamespacedKey.fromString("quantumrpg:" + ItemTags.TAG_ITEM_SOCKET_RATE.toLowerCase()); private static DamageAttribute DAMAGE_DEFAULT; private static DefenseAttribute DEFENSE_DEFAULT; + private static final double DEFAULT_ATTACK_SPEED = 4D; // TODO Register logs @@ -305,10 +314,10 @@ private static void addAttribute(@NotNull ItemStack item, @NotNull NBTAttribute value = 0.1 * (1D + value / 100D) - 0.1; } else if (att == NBTAttribute.ATTACK_SPEED) { value /= 100D; - double baseSpeed = getStat(item, AbstractStat.Type.BASE_ATTACK_SPEED) + AbstractStat.getDefaultAttackSpeed(item); - double defaultSpeed = AbstractStat.getDefaultAttackSpeed(item); - double extra = baseSpeed * value; - value = baseSpeed + extra - defaultSpeed; + + double baseSpeed = getStat(item, AbstractStat.Type.BASE_ATTACK_SPEED) + DEFAULT_ATTACK_SPEED; + double weaponModifier = AbstractStat.getDefaultAttackSpeed(item); + value = (baseSpeed + weaponModifier) * (1 + value) - DEFAULT_ATTACK_SPEED; } for (EquipmentSlot slot : ItemUtils.getItemSlots(item)) {