extends Node signal achievement_complete(achievement:Achievement) const categoryScripts = [preload("res://Achievements/Categories/LevelsCategory.gd"), preload("res://Achievements/Categories/LevelsIICategory.gd"), preload("res://Achievements/Categories/CollectionCategory.gd"), preload("res://Achievements/Categories/FeatsCategory.gd")] var categories = [] func _ready(): load_achievements() func load_achievements(): for script in categoryScripts: categories.append(script.new()) func get_categories(): return categories func complete_achievement(achievementName): var achievement = get_achievement_by_name(achievementName) achievement.complete() achievement_complete.emit(achievement) Steam.setAchievement(achievementName) Steam.storeStats() print("Achievement Complete!") print(achievementName) func get_achievement_by_name(achievementName): for category in categories: var achievements = category.get_achievements() for achievement in achievements: if achievement.get_name() == achievementName: return achievement func update_achievement_states(): for category in categories: var achievements = category.get_achievements() for achievement in achievements: achievement.update_completion() start_up_level_achievement_checks() func start_up_level_achievement_checks(): var skills = LevelManager.get_all_skills() for skill in skills: skill_level_achievement_checks(skill) func skill_level_achievement_checks(skill): var skillAchievementInfo = [ ["Arson", [["Time to Burn", 20], ["A Burning Fire", 40], ["Burning Brighter", 60]]], ["Basket Weaving", [["Basket Bachelor", 20], ["Basket Master", 40], ["Weaver of All", 60]]], ["Building", [["Piler", 20], ["Stacker", 40], ["Arranger", 60]]], ["Experiencing", [["Experienced", 20], ["Experienceder", 40], ["Experiencedest", 60]]], ["Fast Walking", [["I am Speed", 20], ["KACHOW!", 40], ["Faster than Fast", 60]]], ["Gaming", [["Gamer", 20], ["Pro Gamer", 40], ["Gramer", 60]]], ["Gardening", [["Green Hoof", 20], ["Verdant Hoof", 40], ["Blooming Hoof", 60]]], ["Juice Drinking", [["Juice Fan", 20], ["Juice Connoisseur", 40], ["Juice Enjoyer", 60]]], ["Scavenging", [["Searching for Goodies", 20], ["Finding Treasures", 40], ["Super Scrounger", 60]]], ["Swimming", [["Fish Mode", 20], ["Wahoo Mode", 40], ["Indo-Pacific Sailfish", 60]]], ["Trampolining", [["Bouncin'", 20], ["Soarin'", 40], ["Launchin'", 60]]], ["Walking", [["It's Walking Time", 20], ["Walking On", 40], ["Slow Enjoyer", 60]]] ] for info in skillAchievementInfo: if info[0] == skill.skillName: var achievementsInfo = info[1] for nameLevelPair in achievementsInfo: if skill.currentLevel >= nameLevelPair[1]: complete_achievement(nameLevelPair[0]) break func total_level_achievement_checks(): var minLevel = 100 var skills = LevelManager.get_all_skills() for skill in skills: if skill.currentLevel < minLevel: minLevel = skill.currentLevel if minLevel >= 40: var achievement:Achievement = get_achievement_by_name("Cow Power") if !achievement.completed: complete_achievement("Cow Power") if minLevel >= 60: var achievement:Achievement = get_achievement_by_name("You are Cow") if !achievement.completed: complete_achievement("You are Cow") MessageManager.maxlevel_popup() MessageManager.addMessage("You've reached the max level in every skill! Wow!", null, "System", Color.PURPLE, true, false) func behold_achievement_checks(item): var itemNames = ["Ash Ash", "Caramelized Caramel", "Caramelized Wolfs Milk Slime Mould Basket", "Raisin"] var achievementNames = ["Again", "Essence of Chew", "Wolfs...", "Where did I get this?"] var modified = [false, true, true, false] for i in range(itemNames.size()): var itemName = itemNames[i] if itemName == item.get_name(modified[i]): complete_achievement(achievementNames[i]) func burn_achievement_checks(item): var itemNames = ["Faire Ticket", "Gasoline"] var achievementNames = ["Joker Moment", "Girlbossing"] var modified = [false, false] for i in range(itemNames.size()): var itemName = itemNames[i] if itemName == item.get_name(modified[i]): complete_achievement(achievementNames[i]) func play_achievement_checks(item): var itemNames = ["Trumpet", "Sugary Worm on a String", "Knotted Sticky Hand"] var achievementNames = ["!doot", "Sparkly :)", "I broke it..."] var modified = [false, true, true] for i in range(itemNames.size()): var itemName = itemNames[i] if itemName == item.get_name(modified[i]): complete_achievement(achievementNames[i]) func eat_achievement_checks(item): var itemNames = ["BBQ Sauce", "Knotted Cloud", "Sugary Sugar Stick", "Candy Candy"] var achievementNames = ["Condiment of Flame", "Heavenly Spaghetti", "OwO", "Sugared Concentrate"] var modified = [false, true, true, false] for i in range(itemNames.size()): var itemName = itemNames[i] if itemName == item.get_name(modified[i]): complete_achievement(achievementNames[i]) func drink_achievement_checks(item): var itemNames = ["Maple Tea", "Green Soda Juice", "Juice Juice", "Iron Ingot Juice", "Birch Beer", "Diluted Water", "Ultimate Juice"] var achievementNames = ["Mmmm leafs", "Mmmm green", "Tastes like Juice", "Wolferine", "Barked Beer", "Hydrated", "Ultimate Quencher"] var modified = [false, false, false, true, false, true, false] for i in range(itemNames.size()): var itemName = itemNames[i] if itemName == item.get_name(modified[i]): complete_achievement(achievementNames[i]) func hang_up_achievement_checks(item): var itemNames = ["Basket on a String", "Ketchup Basket", "Basket Basket"] var achievementNames = ["Containment Friend", "Ketchupton Decor", "Basket 2"] var modified = [false, false, false] if item != null: for i in range(itemNames.size()): var itemName = itemNames[i] if itemName == item.get_name(modified[i]): complete_achievement(achievementNames[i])