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