refactor medal achievement unlocking code, might be more reliable? unsure

This commit is contained in:
JHDev2006
2025-09-21 13:18:56 +01:00
parent 73063290a7
commit 04ac4ba97b

View File

@@ -313,43 +313,45 @@ func get_best_time() -> float:
func check_for_medal_achievement() -> void: func check_for_medal_achievement() -> void:
var has_gold_warp := true var has_gold_levels_warpless := true
var has_gold_warpless := true var has_gold_levels_any := true
var has_silver_warpless := true
var has_silver_warp := true
var has_bronze_warpless := true
var has_bronze_warp := true
var has_gold_full := false var has_gold_full := false
var has_silver_levels_warpless := true
var has_silver_levels_any := true
var has_silver_full := false var has_silver_full := false
var has_bronze_levels_warpless := true
var has_bronze_levels_any := true
var has_bronze_full := false var has_bronze_full := false
if Global.current_campaign == "SMBANN": if Global.current_campaign == "SMBANN":
return return
for i in LEVEL_GOLD_ANY_TIMES[Global.current_campaign]: for i in LEVEL_GOLD_ANY_TIMES[Global.current_campaign]:
if best_level_any_times.has(i): if best_level_any_times.has(i):
if best_level_any_times[i] > LEVEL_GOLD_ANY_TIMES[Global.current_campaign][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]: 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]: 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 var world := 0
for i in best_level_warpless_times: for i in best_level_warpless_times:
var level := 0 var level := 0
for x in i: for x in i:
if x < 0: if x < 0:
has_gold_warpless = false has_gold_levels_warpless = false
has_silver_warpless = false has_silver_levels_warpless = false
has_bronze_warpless = false has_bronze_levels_warpless = false
if x > LEVEL_GOLD_WARPLESS_TIMES[Global.current_campaign][world][level]: 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]: 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]: 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 level += 1
world += 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]: 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 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: match Global.current_campaign:
"SMB1": Global.unlock_achievement(Global.AchievementID.SMB1_GOLD) "SMB1": Global.unlock_achievement(Global.AchievementID.SMB1_GOLD)
"SMBLL": Global.unlock_achievement(Global.AchievementID.SMBLL_GOLD) "SMBLL": Global.unlock_achievement(Global.AchievementID.SMBLL_GOLD)
"SMBS": Global.unlock_achievement(Global.AchievementID.SMBS_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: match Global.current_campaign:
"SMB1": Global.unlock_achievement(Global.AchievementID.SMB1_SILVER) "SMB1": Global.unlock_achievement(Global.AchievementID.SMB1_SILVER)
"SMBLL": Global.unlock_achievement(Global.AchievementID.SMBLL_SILVER) "SMBLL": Global.unlock_achievement(Global.AchievementID.SMBLL_SILVER)
"SMBS": Global.unlock_achievement(Global.AchievementID.SMBS_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: match Global.current_campaign:
"SMB1": Global.unlock_achievement(Global.AchievementID.SMB1_BRONZE) "SMB1": Global.unlock_achievement(Global.AchievementID.SMB1_BRONZE)
"SMBLL": Global.unlock_achievement(Global.AchievementID.SMBLL_BRONZE) "SMBLL": Global.unlock_achievement(Global.AchievementID.SMBLL_BRONZE)