2024-05-27 19:54:22 -04:00

79 lines
1.7 KiB
GDScript

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