diff --git a/Scripts/Classes/Singletons/SpeedrunHandler.gd b/Scripts/Classes/Singletons/SpeedrunHandler.gd index 8fc2ee9..4428099 100644 --- a/Scripts/Classes/Singletons/SpeedrunHandler.gd +++ b/Scripts/Classes/Singletons/SpeedrunHandler.gd @@ -313,43 +313,45 @@ func get_best_time() -> float: func check_for_medal_achievement() -> void: - var has_gold_warp := true - var has_gold_warpless := true - var has_silver_warpless := true - var has_silver_warp := true - var has_bronze_warpless := true - var has_bronze_warp := true - + var has_gold_levels_warpless := true + var has_gold_levels_any := true var has_gold_full := false + + var has_silver_levels_warpless := true + var has_silver_levels_any := true var has_silver_full := false + + var has_bronze_levels_warpless := true + var has_bronze_levels_any := true var has_bronze_full := false if Global.current_campaign == "SMBANN": return + for i in LEVEL_GOLD_ANY_TIMES[Global.current_campaign]: if best_level_any_times.has(i): if best_level_any_times[i] > LEVEL_GOLD_ANY_TIMES[Global.current_campaign][i]: - has_gold_warp = false + has_gold_levels_any = false if best_level_any_times[i] > LEVEL_GOLD_ANY_TIMES[Global.current_campaign][i] * MEDAL_CONVERSIONS[1]: - has_silver_warp = false + has_silver_levels_any = false if best_level_any_times[i] > LEVEL_GOLD_ANY_TIMES[Global.current_campaign][i] * MEDAL_CONVERSIONS[0]: - has_bronze_warp = false + has_bronze_levels_any = false var world := 0 for i in best_level_warpless_times: var level := 0 for x in i: if x < 0: - has_gold_warpless = false - has_silver_warpless = false - has_bronze_warpless = false + has_gold_levels_warpless = false + has_silver_levels_warpless = false + has_bronze_levels_warpless = false if x > LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level]: - has_gold_warpless = false + has_gold_levels_warpless = false if x > LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level] * MEDAL_CONVERSIONS[1]: - has_silver_warpless = false + has_silver_levels_warpless = false if x > LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level] * MEDAL_CONVERSIONS[0]: - has_bronze_warpless = false + has_bronze_levels_warpless = false level += 1 world += 1 @@ -360,19 +362,19 @@ func check_for_medal_achievement() -> void: if marathon_best_any_time <= GOLD_ANY_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[0] and marathon_best_warpless_time <= GOLD_WARPLESS_TIMES[Global.current_campaign] * MEDAL_CONVERSIONS[0]: has_bronze_full = true - if has_gold_warp and has_gold_warpless and has_gold_full: + if has_gold_levels_warpless and has_gold_levels_any and has_gold_full: match Global.current_campaign: "SMB1": Global.unlock_achievement(Global.AchievementID.SMB1_GOLD) "SMBLL": Global.unlock_achievement(Global.AchievementID.SMBLL_GOLD) "SMBS": Global.unlock_achievement(Global.AchievementID.SMBS_GOLD) - if has_silver_warp and has_silver_warpless and has_silver_full: + if has_silver_levels_any and has_silver_levels_warpless and has_silver_full: match Global.current_campaign: "SMB1": Global.unlock_achievement(Global.AchievementID.SMB1_SILVER) "SMBLL": Global.unlock_achievement(Global.AchievementID.SMBLL_SILVER) "SMBS": Global.unlock_achievement(Global.AchievementID.SMBS_SILVER) - if has_bronze_warp and has_bronze_warpless and has_bronze_full: + if has_bronze_levels_warpless and has_bronze_levels_any and has_bronze_full: match Global.current_campaign: "SMB1": Global.unlock_achievement(Global.AchievementID.SMB1_BRONZE) "SMBLL": Global.unlock_achievement(Global.AchievementID.SMBLL_BRONZE)