56 lines
1.1 KiB
GDScript
56 lines
1.1 KiB
GDScript
extends Node
|
|
|
|
const Rarity = {
|
|
"COMMON":0.8,
|
|
"UNCOMMON": 0.2,
|
|
"RARE": 0.1,
|
|
"LEGENDARY": 0.05
|
|
}
|
|
|
|
var items = {
|
|
"copper_sword": {
|
|
"name": "Copper Sword",
|
|
"sprite": preload("res://addons/weighted_choice/demo/sprites/copper_sword.png"),
|
|
"damage": 10,
|
|
"rarity": Rarity.COMMON
|
|
},
|
|
"iron_sword": {
|
|
"name": "Iron Sword",
|
|
"sprite": preload("res://addons/weighted_choice/demo/sprites/iron_sword.png"),
|
|
"damage": 25,
|
|
"rarity": Rarity.UNCOMMON
|
|
},
|
|
"gold_sword": {
|
|
"name": "Gold Sword",
|
|
"sprite": preload("res://addons/weighted_choice/demo/sprites/gold_sword.png"),
|
|
"damage": 50,
|
|
"rarity": Rarity.RARE
|
|
},
|
|
"diamond_sword": {
|
|
"name": "Diamond Sword",
|
|
"sprite": preload("res://addons/weighted_choice/demo/sprites/diamond_sword.png"),
|
|
"damage": 80,
|
|
"rarity": Rarity.LEGENDARY
|
|
}
|
|
}
|
|
|
|
var opened = false
|
|
var loot
|
|
|
|
func open():
|
|
opened = true
|
|
loot = items[WeightedChoice.pick(items, "rarity")]
|
|
$ItemLabel.text = loot.name
|
|
$ItemSprite2D.texture = loot.sprite
|
|
$AnimationPlayer.play("open")
|
|
|
|
|
|
func _on_texture_button_pressed():
|
|
if not opened:
|
|
open()
|
|
|
|
func _on_reset_button_pressed():
|
|
opened = false
|
|
loot = ""
|
|
$AnimationPlayer.play("close")
|