73 lines
2.4 KiB
GDScript
73 lines
2.4 KiB
GDScript
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
|