game: add enemy mods
This commit is contained in:
58
scenes/enemies/enemy_mod_pool.gd
Normal file
58
scenes/enemies/enemy_mod_pool.gd
Normal file
@@ -0,0 +1,58 @@
|
||||
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
|
Reference in New Issue
Block a user