Weighted character selection
This commit is contained in:
55
addons/weighted_choice/demo/lootbox.gd
Normal file
55
addons/weighted_choice/demo/lootbox.gd
Normal file
@@ -0,0 +1,55 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user