class_name Data extends Node enum Element{ NORMAL, FIRE, ICE, POISON, STONE } enum Difficulty{ EASY, NORMAL, HARD, GAMER } enum Location{ MAINMENU, CREDITS, TAVERN, ARENA, DEAD } enum Rarity{ COMMON, RARE, LEGENDARY, GODLIKE } @onready var musicPlayer: MusicPlayer = $/root/Root/MusicPlayer @export var spellbook: Spellbook @export var difficulty: Difficulty = Difficulty.NORMAL @export var animations: Dictionary = {} @export var player: Combatant @export var opponent: Combatant @export var loc: Location = Location.MAINMENU @export var playing: bool = false @export var lockedSpells: Array[Spell] @export var unlockedSpells: Array[Spell] @export var commonChance: int = 70 @export var rareChance: int = 24 @export var legendaryChance: int = 5 @export var godlikeChance: int = 1 @export var locations: Dictionary = { Location.MAINMENU: "res://Scenes/UI/mainMenu.tscn", Location.CREDITS: "", Location.TAVERN: "res://Scenes/tavern.tscn", Location.ARENA: "res://Scenes/arena.tscn" } func getNewSpell() -> Spell: var num: int = randi_range(0, 99) var rar: Rarity if (num < commonChance): rar = Rarity.COMMON elif (num < rareChance + commonChance): rar = Rarity.RARE elif (num < legendaryChance + rareChance + commonChance): rar = Rarity.LEGENDARY else: rar = Rarity.GODLIKE var options: Array[Spell] = lockedSpells.filter(func(spel): return spel.rarity == rar) var count: int = 1 while (options.size() == 0): rar = (int(rar) + 1) as Rarity if (int(rar) >= 4): rar = 0 count += 1 if (count >= 4): return null options = lockedSpells.filter(func(spel): return spel.rarity == rar) var spell: Spell = options[randi_range(0, options.size() - 1)] lockedSpells.erase(spell) unlockedSpells.append(spell) return spell