70 lines
1.4 KiB
GDScript
70 lines
1.4 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
|
|
}
|
|
|
|
@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
|
|
|
|
func getNewSpell() -> Spell:
|
|
var num: int = randi_range(0, 99)
|
|
var rar: Rarity
|
|
if (num < commonChance):
|
|
rar = Rarity.COMMON
|
|
elif (num < rareChance):
|
|
rar = Rarity.RARE
|
|
elif (num < legendaryChance):
|
|
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.difficulty == rar)
|
|
var spell: Spell = options[randi_range(0, options.size() - 1)]
|
|
lockedSpells.erase(spell)
|
|
unlockedSpells.append(spell)
|
|
return spell
|