Skip to content

Commit

Permalink
hanni's changes
Browse files Browse the repository at this point in the history
  • Loading branch information
ItsEmpa committed Oct 16, 2024
1 parent a484c5f commit ba51d84
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import at.hannibal2.skyhanni.utils.ItemUtils.name
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.RegexUtils.findMatcher
import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getDungeonStarCount
import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getStarCount
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import net.minecraft.item.ItemStack
import net.minecraftforge.fml.common.eventhandler.EventPriority
Expand All @@ -39,7 +40,7 @@ object ItemStars {
if (!isEnabled()) return
val stack = event.itemStack
if (stack.stackSize != 1) return
val stars = stack.getStarCount() ?: return
val stars = stack.grabStarCount() ?: return
starPattern.findMatcher(stack.name) {
val name = group("name")
event.toolTip[0] = "$name §c$stars"
Expand All @@ -52,11 +53,11 @@ object ItemStars {
if (!CRIMSON_ARMOR.isSelected()) return
val stack = event.stack
if (stack.getInternalNameOrNull()?.isKuudraArmor() != true) return
val stars = stack.getStarCount() ?: return
val stars = stack.grabStarCount() ?: return
event.stackTip = stars.toString()
}

private fun ItemStack.getStarCount(): Int? {
private fun ItemStack.grabStarCount(): Int? {
val internalName = getInternalNameOrNull() ?: return null
val baseStars = getDungeonStarCount() ?: getStarCount() ?: return null
if (internalName.isKuudraArmor()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ package at.hannibal2.skyhanni.features.misc.items

import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.api.ReforgeAPI
import at.hannibal2.skyhanni.features.nether.kuudra.KuudraAPI
import at.hannibal2.skyhanni.features.nether.kuudra.KuudraAPI.getKuudraTier
import at.hannibal2.skyhanni.features.nether.kuudra.KuudraAPI.isKuudraArmor
import at.hannibal2.skyhanni.features.nether.kuudra.KuudraAPI.removeKuudraTier
import at.hannibal2.skyhanni.test.command.ErrorManager
import at.hannibal2.skyhanni.utils.CollectionUtils.addOrPut
import at.hannibal2.skyhanni.utils.CollectionUtils.sorted
Expand All @@ -26,6 +28,7 @@ import at.hannibal2.skyhanni.utils.NEUItems.getItemStackOrNull
import at.hannibal2.skyhanni.utils.NEUItems.getNpcPriceOrNull
import at.hannibal2.skyhanni.utils.NEUItems.getPriceOrNull
import at.hannibal2.skyhanni.utils.NEUItems.getRawCraftCostOrNull
import at.hannibal2.skyhanni.utils.NEUItems.removePrefix
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.NumberUtil.shortFormat
import at.hannibal2.skyhanni.utils.PrimitiveIngredient
Expand Down Expand Up @@ -71,9 +74,6 @@ object EstimatedItemValueCalculator {

private val config get() = SkyHanniMod.feature.inventory.estimatedItemValues

// TODO move into KuudraAPI
private val kuudraSets = listOf("AURORA", "CRIMSON", "TERROR", "HOLLOW", "FERVOR")

var starChange = 0
get() = if (SkyHanniMod.feature.dev.debug.enabled) field else 0

Expand Down Expand Up @@ -137,23 +137,22 @@ object EstimatedItemValueCalculator {
return Pair(totalPrice, basePrice)
}

fun isKuudraSet(internalName: String) = internalName.asInternalName().isKuudraArmor()

private fun addAttributeCost(stack: ItemStack, list: MutableList<String>): Double {
val attributes = stack.getAttributes() ?: return 0.0
var internalName = removeKuudraArmorPrefix(stack.getInternalName().asString().removePrefix("VANQUISHED_"))
var genericName = internalName
if (isKuudraSet(internalName)) {
genericName = kuudraSets.fold(internalName) { acc, part -> acc.replace(part, "GENERIC_KUUDRA") }
val internalName = stack.getInternalName()
val internalNameString = internalName.removeKuudraTier().removePrefix("VANQUISHED_").asString()
var genericName = internalNameString
if (internalName.isKuudraArmor()) {
genericName = KuudraAPI.kuudraSets.fold(internalNameString) { acc, part -> acc.replace(part, "GENERIC_KUUDRA") }
}
stack.getAttributeFromShard()?.let {
return 0.0
}
if (attributes.size != 2) return 0.0
val basePrice = internalName.asInternalName().getPriceOrNull() ?: 0.0
val basePrice = internalName.getPriceOrNull() ?: 0.0
var subTotal = 0.0
val combo = ("$internalName+ATTRIBUTE_${attributes[0].first}+ATTRIBUTE_${attributes[1].first}")
var comboPrice = combo.asInternalName().getPriceOrNull()
val combo = ("$internalNameString+ATTRIBUTE_${attributes[0].first}+ATTRIBUTE_${attributes[1].first}")
val comboPrice = combo.asInternalName().getPriceOrNull()

if (comboPrice != null) {
val useless = isUselessAttribute(combo)
Expand Down Expand Up @@ -189,16 +188,6 @@ object EstimatedItemValueCalculator {
return subTotal + 0.1
}

private fun removeKuudraArmorPrefix(original: String): String {
if (!isKuudraSet(original)) return original

var internalName = original
for (prefix in kuudraUpgradeTiers) {
internalName = internalName.removePrefix(prefix)
}
return internalName
}

private fun addAttributePrice(attributePrice: Double, basePrice: Double): Double = if (attributePrice > basePrice) {
attributePrice - basePrice
} else {
Expand Down Expand Up @@ -488,14 +477,13 @@ object EstimatedItemValueCalculator {
inputStars: Int,
): Pair<EssenceItemUtils.EssenceUpgradePrice, Pair<Int, Int>>? {
var totalStars = inputStars
val rawInternalName = internalName.asString()
val (price, maxStars) = if (isKuudraSet(rawInternalName)) {
val (price, maxStars) = if (internalName.isKuudraArmor()) {
val tier = internalName.getKuudraTier() ?: 0
totalStars += tier * 10

var remainingStars = totalStars

val removed = removeKuudraArmorPrefix(rawInternalName)
val removed = internalName.removeKuudraTier().asString()
var maxStars = 0
var finalPrice: EssenceItemUtils.EssenceUpgradePrice? = null

Expand Down Expand Up @@ -681,7 +669,7 @@ object EstimatedItemValueCalculator {
}

private fun addBaseItem(stack: ItemStack, list: MutableList<String>): Double {
val internalName = removeKuudraArmorPrefix(stack.getInternalName().asString()).asInternalName()
val internalName = stack.getInternalName().removeKuudraTier()

stack.getAttributeFromShard()?.let {
val price = it.getAttributePrice()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,11 @@ import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.NEUInternalName
import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName
import at.hannibal2.skyhanni.utils.NEUItems.removePrefix
import at.hannibal2.skyhanni.utils.RegexUtils.matchGroup
import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
import at.hannibal2.skyhanni.utils.RegexUtils.matches
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent

Expand All @@ -26,28 +30,29 @@ object KuudraAPI {
"chat.complete",
"§.\\s*(?:§.)*KUUDRA DOWN!"
)
private val kuudraArmorPattern by patternGroup.pattern(
"internalname.armor",
"(?<tier>HOT|BURNING|FIERY|INFERNAL|)_?(?<type>AURORA|CRIMSON|TERROR|HOLLOW|FERVOR)_(?:HELMET|CHESTPLATE|LEGGINGS|BOOTS)"
)

private val kuudraTiers = listOf("HOT_", "BURNING_", "FIERY_", "INFERNAL_")
private val kuudraTiers = listOf("", "HOT", "BURNING", "FIERY", "INFERNAL")
val kuudraSets = listOf("AURORA", "CRIMSON", "TERROR", "HOLLOW", "FERVOR")

private val kuudraArmors: List<String>
fun NEUInternalName.isKuudraArmor(): Boolean = kuudraArmorPattern.matches(asString())

init {
val kuudraSets = listOf("AURORA_", "CRIMSON_", "TERROR_", "HOLLOW_", "FERVOR_")
val armorPieces = listOf("HELMET", "CHESTPLATE", "LEGGINGS", "BOOTS")
kuudraArmors = (kuudraTiers + "").flatMap { tier ->
kuudraSets.flatMap { set ->
armorPieces.map { piece ->
"$set$tier$piece"
}
}
}
fun NEUInternalName.getKuudraTier(): Int? {
val tier = kuudraArmorPattern.matchGroup(asString(), "tier") ?: return null
return (kuudraTiers.indexOf(tier) + 1).takeIf { it != 0 }
}

fun NEUInternalName.isKuudraArmor(): Boolean = asString() in kuudraArmors

fun NEUInternalName.getKuudraTier(): Int? = kuudraTiers.indexOfFirst { asString().startsWith(it) }.takeIf { it != -1 }?.let { it + 1 }
fun NEUInternalName.removeKuudraTier(): NEUInternalName {
val prefix = kuudraArmorPattern.matchGroup(asString(), "tier") ?: return this
return removePrefix("${prefix}_")
}

var kuudraTier: Int? = null
private set

fun inKuudra() = kuudraTier != null

@SubscribeEvent
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,13 @@ object NEUItems {

fun NEUInternalName.isVanillaItem(): Boolean = manager.auctionManager.isVanillaItem(this.asString())

fun NEUInternalName.removePrefix(prefix: String): NEUInternalName {
if (prefix.isEmpty()) return this
val string = asString()
if (!string.startsWith(prefix)) return this
return string.substring(prefix.length).asInternalName()
}

const val itemFontSize = 2.0 / 3.0

fun ItemStack.renderOnScreen(
Expand Down

0 comments on commit ba51d84

Please sign in to comment.