diff --git a/common/game_data/scripts/run/run_data.gd b/common/game_data/scripts/run/run_data.gd index 289afac..59a91c9 100644 --- a/common/game_data/scripts/run/run_data.gd +++ b/common/game_data/scripts/run/run_data.gd @@ -18,6 +18,8 @@ var run_seed = randi() current_run_point_changed.emit(v) @export var visited_run_points : Array[RunPoint] = [] +@export var last_used_modifier_name = "" + #region ------------------ Generation ------------------ func generate_next_run_points(level = 0) -> Array[RunPoint]: @@ -36,7 +38,7 @@ func generate_next_run_point(level = 0) -> RunPoint: var region_parameter = RegionParameter.new() region_parameter.level = level region_parameter.region_flags = get_region_flags(region_parameter) - + region_parameter.modifiers = get_region_modifiers(level + 1) return RunPoint.new( level, @@ -64,6 +66,8 @@ func choose_next_run_point(run_point : RunPoint) -> RunPoint: current_run_point = run_point GameInfo.game_data.start_region(run_point.region_parameter) next_run_points = generate_next_run_points(current_run_point.level + 1) + if len(current_run_point.region_parameter.modifiers): + last_used_modifier_name = current_run_point.region_parameter.modifiers[0].get_modifier_name() return current_run_point func get_region_flags(region_parameter : RegionParameter) -> Array[String]: @@ -73,3 +77,21 @@ func get_region_flags(region_parameter : RegionParameter) -> Array[String]: flags.append("borea") return flags + +func get_region_modifiers(level : int) -> Array[RegionModifier]: + var possible_modifiers : Array[RegionModifier] = [ + AridModifier.new(level), + HumidModifier.new(level), + PoorModifier.new(level), + HarshModifier.new(level) + ] + + possible_modifiers = possible_modifiers.filter( + func (m): return m.get_modifier_name() != last_used_modifier_name + ) + + var choosen_modifier : RegionModifier = possible_modifiers.pick_random() + + last_used_modifier_name = choosen_modifier.get_modifier_name() + + return [choosen_modifier]