41 lines
1.2 KiB
GDScript
41 lines
1.2 KiB
GDScript
extends RefCounted
|
|
|
|
class_name BoneGenerator
|
|
|
|
const boneClasses = ["res://Items/Natural/Bones/CrystalBone.gd",
|
|
"res://Items/Natural/Bones/DirtBone.gd",
|
|
"res://Items/Natural/Bones/HauntedBone.gd",
|
|
"res://Items/Natural/Bones/LicoriceBone.gd",
|
|
"res://Items/Natural/Bones/ParallelogramBone.gd",
|
|
"res://Items/Natural/Bones/PretzelBone.gd",
|
|
"res://Items/Natural/Bones/RedbyBone.gd",
|
|
"res://Items/Natural/Bones/RexBone.gd",
|
|
"res://Items/Natural/Bones/RockBone.gd",
|
|
"res://Items/Natural/Bones/SquareBone.gd",
|
|
"res://Items/Natural/Bones/ZucchiniBone.gd"]
|
|
|
|
const boneOdds = [2, 20, 10, 10, 4, 10, 2, 1, 20, 10, 10]
|
|
const boneXpRewards = [320, 4, 70, 24, 44, 9, 435, 1500, 6, 40, 38]
|
|
|
|
static func get_a_bone():
|
|
var rng = RandomNumberGenerator.new()
|
|
var rngResult = rng.randi_range(1, 99)
|
|
|
|
var chancesChecked = 0
|
|
for boneIndex in range(boneOdds.size()):
|
|
var currentBoneChance = boneOdds[boneIndex]
|
|
chancesChecked += currentBoneChance
|
|
if chancesChecked >= rngResult:
|
|
var boneToGenerate = load(boneClasses[boneIndex]).new()
|
|
return boneToGenerate
|
|
|
|
static func get_xp_reward_for_bone(bone):
|
|
var bonePath = bone.get_script().resource_path
|
|
for i in range(boneClasses.size()):
|
|
var currentPath = boneClasses[i]
|
|
if bonePath == currentPath:
|
|
return boneXpRewards[i]
|
|
|
|
|
|
|