class_name Item func _init(iDic: Dictionary = {}): if iDic != {}: self.load(iDic) enum ItemType { Restoration, Equippable, Throwable, Bomb, } # only relevant for equipment enum EquipmentType { NONE, MAINHAND, OFFHAND, HEADGEAR, ARMOUR, BOOTS, ACCESSORY } enum WeaponType { NONE, AMMUNITION, BOW, SWORD, AXE, DAGGER, STAFF, SPEAR, MACE, SPELLBOOK, BOMB } var use_function = null var item_name: String = "Red Apple" var description: String = "Restores 5 HP" var spritePath: String = "res://assets/gfx/items_n_shit.png" var equipmentPath: String = "res://assets/gfx/Puny-Characters/Layer 2 - Clothes/Basic Body/BasicRed.png" var colorReplacements: Array = [] var spriteFrames:Vector2i = Vector2i(20,14) var spriteFrame:int = 0 var modifiers: Dictionary = { "hp": +20 } var duration: float = 0 var buy_cost: int = 10 var sell_worth: int = 3 var sellable:bool = true var item_type: ItemType = ItemType.Restoration var equipment_type: EquipmentType = EquipmentType.NONE var weapon_type: WeaponType = WeaponType.NONE var two_handed:bool = false var quantity = 1 var can_have_multiple_of:bool = false var weight: float = 2.0 # Item weight for encumbrance system (default 2.0 for equipment) func save(): var json = { "item_name": item_name, "description": description, "spritePath": spritePath, "equipmentPath": equipmentPath, "colorReplacements": colorReplacements, "spriteFrame": spriteFrame, "modifiers": modifiers, "duration": duration, "buy_cost": buy_cost, "sell_worth": sell_worth, "item_type": item_type, "equipment_type": equipment_type, "weapon_type": weapon_type, "two_handed": two_handed, "quantity": quantity, "can_have_multiple_of": can_have_multiple_of, "weight": weight } return json func from_dict(iDic: Dictionary) -> Item: self.load(iDic) return self func load(iDic: Dictionary): if iDic.has("item_name"): item_name = iDic.get("item_name") if iDic.has("description"): description = iDic.get("description") if iDic.has("spritePath"): spritePath = iDic.get("spritePath") if iDic.has("equipmentPath"): equipmentPath = iDic.get("equipmentPath") #if iDic.has("spriteFrames"): #spriteFrames = iDic.get("spriteFrames") if iDic.has("spriteFrame"): spriteFrame = iDic.get("spriteFrame") if iDic.has("modifiers"): modifiers = iDic.get("modifiers") if iDic.has("duration"): duration = iDic.get("duration") if iDic.has("buy_cost"): buy_cost = iDic.get("buy_cost") if iDic.has("sell_worth"): sell_worth = iDic.get("sell_worth") if iDic.has("item_type"): item_type = iDic.get("item_type") if iDic.has("equipment_type"): equipment_type = iDic.get("equipment_type") if iDic.has("weapon_type"): weapon_type = iDic.get("weapon_type") if iDic.has("two_handed"): two_handed = iDic.get("two_handed") if iDic.has("quantity"): quantity = iDic.get("quantity") if iDic.has("can_have_multiple_of"): can_have_multiple_of = iDic.get("can_have_multiple_of") if iDic.has("weight"): weight = iDic.get("weight") if iDic.has("colorReplacements"): colorReplacements = iDic.get("colorReplacements", []) pass