extends RefCounted class_name AshGenerator static func generate_ash(item:Item): var tentativeItemOverride = check_for_overrides(item) if tentativeItemOverride != null: return tentativeItemOverride var baseCheckedItem = ItemGenerationUtils.base_item_check(item) baseCheckedItem.itemModifications = item.itemModifications.duplicate(true) if Item.modifications.Knotted in baseCheckedItem.itemModifications: baseCheckedItem.itemModifications.erase(Item.modifications.Knotted) return generate_standard_ash_item(baseCheckedItem) static func check_for_overrides(item): var newItem = null if item.get_name(false) == "Sugar": newItem = load("res://Items/Foods/Snack/Caramel.gd").new() if item.get_name(false) == "Ketchup": newItem = load("res://Items/Foods/Condiments/BBQSauce.gd").new() if item.get_name(false) == "Old Ketchup": newItem = load("res://Items/Foods/Condiments/OldBBQSauce.gd").new() if item.get_name(false) == "Corn": newItem = load("res://Items/Foods/Snack/Popcorn.gd").new() if item.get_name(false) == "Sand": newItem = load("res://Items/Glass/Glass.gd").new() if item.get_name(false) == "Worm on a String": newItem = item if item.get_name(false) == "Basket on a String": newItem = item if newItem != null: newItem.itemModifications = item.itemModifications.duplicate(true) if Item.modifications.Knotted in newItem.itemModifications: newItem.itemModifications.erase(Item.modifications.Knotted) return newItem static func generate_standard_ash_item(item): var ashItem = Item.new() ashItem.itemName = item.get_name(false) + " Ash" ashItem.itemDescription = "The ashes of a " + item.get_name(false) + "." ashItem.value = 1 ashItem.weight = 0.01 ashItem.hardness = 2 ashItem.edibility = item.edibility - 60 if ashItem.edibility < 0: ashItem.edibility = 0 ashItem.basketPower = 1 ashItem.basketabilityDifficulty = 99 ashItem.flammability = 2 ashItem.itemTypes.append(Item.types.Ash) ashItem.itemModifications = item.itemModifications.duplicate(true) var itemSprite = item.get_sprite(false) var averageColor = SpriteGeneration.get_average_color(itemSprite.get_image()) var defaultAshSprite = load("res://Items/Ash/Ash.png") var ashImage = SpriteGeneration.color_multipy_image(defaultAshSprite.get_image(), averageColor) var ashSprite = ImageTexture.new() ashSprite = ImageTexture.create_from_image(ashImage) ashItem.itemSprite = ashSprite return ashItem