nc5432 427237ebbf Sounds and settings
- Added sounds
- Started getting settings saving working properly but it's broken
2024-05-29 20:50:12 -04:00

158 lines
4.0 KiB
GDScript

class_name Data extends Node
enum Element{
NORMAL,
FIRE,
ICE,
POISON,
STONE,
HEALING
}
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
@onready var opponentBook: Spellbook = load("res://Resources/Spellbooks/wizardSpellbook.tres")
@onready var soundEffectScene: PackedScene = load("res://Scenes/soundEffectPlayer.tscn")
@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 getSpellbook():
var spells: Array[Spell] = lockedSpells.duplicate()
spells.append_array(unlockedSpells)
#print("Initial List")
#for spel: Spell in spells:
#print(spel.name)
#print()
var spellCount: int
var rarityChance: Dictionary
var rar: Rarity
var chosenSpells: Array[Spell] = []
match (difficulty):
Difficulty.EASY:
spellCount = 4
rarityChance = {
Rarity.COMMON: 85,
Rarity.RARE: 10,
Rarity.LEGENDARY: 5,
Rarity.GODLIKE: 0
}
Difficulty.NORMAL:
spellCount = 5
rarityChance = {
Rarity.COMMON: 65,
Rarity.RARE: 20,
Rarity.LEGENDARY: 14,
Rarity.GODLIKE: 1
}
Difficulty.HARD:
spellCount = 6
rarityChance = {
Rarity.COMMON: 50,
Rarity.RARE: 27,
Rarity.LEGENDARY: 22,
Rarity.GODLIKE: 1
}
Difficulty.GAMER:
spellCount = 6
rarityChance = {
Rarity.COMMON: 40,
Rarity.RARE: 30,
Rarity.LEGENDARY: 20,
Rarity.GODLIKE: 10
}
for i in range(spellCount):
var num: int = randi_range(0, 99)
if (num < rarityChance[Rarity.COMMON]):
rar = Rarity.COMMON
elif (num < rarityChance[Rarity.COMMON] + rarityChance[Rarity.RARE]):
rar = Rarity.RARE
elif (num < rarityChance[Rarity.COMMON] + rarityChance[Rarity.RARE] + rarityChance[Rarity.LEGENDARY]):
rar = Rarity.LEGENDARY
else:
rar = Rarity.GODLIKE
var options: Array[Spell] = spells.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 as Rarity
count += 1
if (count >= 4): return null
options = spells.filter(func(spel): return spel.rarity == rar)
var spell: Spell = options[randi_range(0, options.size() - 1)]
chosenSpells.append(spell)
spells.erase(spell)
#print("Chosen spell: " + spell.name)
#print("List after " + str(i) + " choices")
#for spel: Spell in spells:
#print(spel.name)
#print()
opponentBook.spells = chosenSpells
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 as Rarity
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
func playSound(sound: AudioStream):
var soundPlayer: SoundEffectPlayer = soundEffectScene.instantiate()
soundPlayer.stream = sound
get_tree().root.add_child(soundPlayer)