extends "res://Objects/SkillSpecific/Building/BuildingZone.gd" func _ready(): super._ready() func _process(delta): super._process(delta) if complete: take_damage(3 * delta) $SelectionRegionIndicator.visible = false var castleDeterioration = (1 - float(float(health)/float(maxHealth))) var stepSize = float(1)/float(6) var castleFrame = floori(castleDeterioration/stepSize) if castleFrame > 5: castleFrame = 5 $MainSprite.frame = castleFrame else: $SelectionRegionIndicator.visible = true func experiencing_destruction(item): LevelManager.get_skill("appreciating").experience_item(item, "washed away") func drop_items(item): pass func get_stages_for_item(item:Item): if item == null: return 0 var stages = 0 if item.get_weight() <= 0: stages = 4 elif item.get_weight() <= 0.2: stages = 40 else: stages = ceili(float(8)/float(item.get_weight())) if item.get_name(false) == "Worm on a String" or item.get_name(false) == "Basket on a String": stages = 8 return stages func take_damage(damage, fireDamage = false): health -= damage if health <= 0: experiencing_destruction(buildingMaterial) unbuilt() func get_stage_xp(): var difficulty = abs(buildingMaterial.get_hardness() - 30) var xpReward = 1 xpReward += difficulty * 0.1 xpReward = floori(xpReward) return xpReward func get_completion_xp(): var difficulty = abs(buildingMaterial.get_hardness() - 30) var xpReward = 48 xpReward += get_stages_for_item(buildingMaterial) * 3 xpReward += difficulty * 4 xpReward = floori(xpReward) return xpReward func get_success_chance(item:Item): var chance = 100 var playerLevel = LevelManager.get_skill("building").currentLevel var difficulty = abs(item.get_hardness() - 30) var difficultyDif = difficulty - playerLevel - 10 if difficultyDif <= 0: difficultyDif = 0 var difficultySteps = floori(difficultyDif/5) chance -= difficultySteps * 5 chance -= difficultyDif * 2 if difficultyDif > 5: chance -= 15 if difficultyDif > 10: chance -= 10 if chance <= 1: chance = 1 elif chance > 100: chance = 100 return chance func fully_built(loadedState = false): if !loadedState: LevelManager.get_skill("appreciating").experience_item(buildingMaterial, "castled") maxHealth = get_max_health() health = maxHealth complete = true if buildingMaterial.get_name(false) == "Worm on a String" or buildingMaterial.get_name(false) == "Basket on a String": $MainSprite.self_modulate = Color.WHITE $MainSprite.play("worm") $MainSprite.visible = true else: $MainSprite.play("default") $MainSprite.visible = true set_visible_bridge_material(buildingMaterial) if buildingMaterial.get_name(false) == "Dirt": AchievementManager.complete_achievement("Hurt") func set_visible_bridge_material(materialItem:Item): var itemSprite = materialItem.get_sprite() var unmodifiedSprite = materialItem.get_sprite(false) var averageColor = SpriteGeneration.get_average_color(unmodifiedSprite.get_image()) $MainSprite.self_modulate = averageColor