Files
slopvivors/scenes/enemies/enemy_mod_pool.gd

59 lines
1.3 KiB
GDScript

class_name EnemyModPool
extends Resource
const MAX_HEALTH_MOD: Dictionary = {
"mod_name": "Extra health",
"mod_property": "max_health",
"mod_value": 1.0,
"mod_value_bool": false,
"mod_type": EnemyMod.ModType.MULTIPLICATIVE,
"mod_adjectives":
[
"Sturdy",
"Bulky",
"Ironclad",
"Unyielding",
"Stonehide",
"Thicc",
"Chunky",
"Pudgy",
"Chonky",
"Double-stuffed"
],
}
const MOD_POOL = [
{
"mod_name": "Extra movement speed",
"mod_property": "move_speed",
"mod_value": 1.25,
"mod_value_bool": false,
"mod_type": EnemyMod.ModType.MULTIPLICATIVE,
"mod_adjectives": ["Swift", "Nimble", "Fleet", "Spry", "Skittering", "Zoomy", "Zippy"]
}
]
static func get_random_mods(count: int) -> Array[EnemyMod]:
var mods: Array[EnemyMod] = []
# always include extra health mod
var hp_mod = _dict_to_mod(MAX_HEALTH_MOD)
hp_mod.mod_value *= 5 * count
mods.append(hp_mod)
for i in count:
var mod_data = MOD_POOL.pick_random()
var mod = _dict_to_mod(mod_data)
mods.append(mod)
return mods
static func _dict_to_mod(d: Dictionary) -> EnemyMod:
var mod: EnemyMod = EnemyMod.new()
mod.mod_name = d["mod_name"]
mod.mod_property = d["mod_property"]
mod.mod_value = d["mod_value"]
mod.mod_value_bool = d["mod_value_bool"]
mod.mod_type = d["mod_type"]
mod.adjective = d["mod_adjectives"].pick_random()
return mod