extends "res://Objects/SkillSpecific/Building/BuildingZone.gd" const balloonCreatureScene = preload("res://Objects/SkillSpecific/Building/BeaverDam/BalloonCreature.tscn") var itemDisplays = [] var itemsOnBridge = [] var cowOnBridge = false var stateCheckDelay = 0.5 func _ready(): for itemSprite in $FrontItems.get_children(): itemDisplays.append(itemSprite) for itemSprite in $BackItems.get_children(): itemDisplays.append(itemSprite) for itemSprite in $MiddleItems.get_children(): itemDisplays.append(itemSprite) super._ready() state_check() func _process(delta): super._process(delta) if complete: var bridgeLoad = get_bridge_load() var gumption = get_gumption(buildingMaterial) if bridgeLoad > gumption: var overloadDamage = 45 overloadDamage += bridgeLoad - gumption var maxDamage = maxHealth if maxDamage < 200: maxDamage = 200 if overloadDamage > maxDamage: overloadDamage = maxDamage take_damage(overloadDamage * delta) if stateCheckDelay > 0: stateCheckDelay -= delta if stateCheckDelay <= 0: state_check() stateCheckDelay = 0.5 func state_check(): if !SaveManager.get_save_value("BeaverLoveQuestStarted", false): visible = false else: visible = true func get_bridge_load(): var load = 0 if cowOnBridge: load += InventoryManager.get_inventory_weight() for groundItem:GroundItem in itemsOnBridge: if groundItem.item != null: load += groundItem.item.get_weight() return load func hide_other_visuals(): $FrontItems.visible = false $BackItems.visible = false $MiddleItems.visible = false func fully_built(loadedState = false): super.fully_built(loadedState) if "Balloon" in buildingMaterial.get_name(): AchievementManager.complete_achievement("Transient Art") var newCreature:Node2D = balloonCreatureScene.instantiate() get_parent().add_child(newCreature) newCreature.global_position = global_position + Vector2(0, 90) unbuilt() elif buildingMaterial.get_name(false) == "Worm on a String" or buildingMaterial.get_name(false) == "Basket on a String": $MainSprite.self_modulate = Color.WHITE if rng.randi_range(0,1) == 1: $MainSprite.play("worm1") else: $MainSprite.play("worm2") $MainSprite.visible = true $FrontItems.visible = false $BackItems.visible = false $MiddleItems.visible = false else: $MainSprite.play("default") $MainSprite.visible = true set_visible_bridge_material(buildingMaterial) func set_visible_bridge_material(materialItem:Item): var itemSprite = materialItem.get_sprite() for sprite in itemDisplays: sprite.texture = itemSprite $FrontItems.visible = true $BackItems.visible = true $MiddleItems.visible = true var unmodifiedSprite = materialItem.get_sprite(false) var averageColor = SpriteGeneration.get_average_color(unmodifiedSprite.get_image()) $MainSprite.self_modulate = averageColor func _on_standing_zone_area_entered(area): if area.get_parent() is Cow: cowOnBridge = true elif area.get_parent() is GroundItem: itemsOnBridge.append(area.get_parent()) func _on_standing_zone_area_exited(area): if area.get_parent() is Cow: cowOnBridge = false elif area.get_parent() is GroundItem: itemsOnBridge.erase(area.get_parent())