It's Cow Game! Version 2.04!

This commit is contained in:
PajamaBee 2024-09-19 23:06:51 -05:00
commit a9e1ed9ddd
3148 changed files with 95332 additions and 0 deletions

View file

@ -0,0 +1,7 @@
extends Node2D
func _process(delta):
if position.y < (LocationManager.currentLocation.upperCameraLimit - 200):
queue_free()
self.translate(Vector2(5, -50)*delta)

View file

@ -0,0 +1,11 @@
[gd_scene load_steps=3 format=3 uid="uid://c86wufmefnko6"]
[ext_resource type="Script" path="res://Objects/SkillSpecific/Building/BeaverDam/BalloonCreature.gd" id="1_egvkc"]
[ext_resource type="Texture2D" uid="uid://cc8l1kncjpjya" path="res://Objects/SkillSpecific/Building/BeaverDam/BalloonDam.png" id="2_r5q60"]
[node name="BalloonCreature" type="Node2D"]
script = ExtResource("1_egvkc")
[node name="BalloonDam" type="Sprite2D" parent="."]
position = Vector2(0, -86)
texture = ExtResource("2_r5q60")

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cc8l1kncjpjya"
path="res://.godot/imported/BalloonDam.png-d79a09e00470a4afb8eacc7c8166c459.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/BeaverDam/BalloonDam.png"
dest_files=["res://.godot/imported/BalloonDam.png-d79a09e00470a4afb8eacc7c8166c459.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,119 @@
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())

View file

@ -0,0 +1,492 @@
[gd_scene load_steps=15 format=3 uid="uid://cp1kh50u1k7sp"]
[ext_resource type="PackedScene" uid="uid://cufhvngt5p0pu" path="res://Objects/SkillSpecific/Building/BuildingZone.tscn" id="1_rsgpe"]
[ext_resource type="Texture2D" uid="uid://c3m2e2k7pa3al" path="res://Items/Foods/Fruits/Sprites/Apple.png" id="2_7ibea"]
[ext_resource type="Script" path="res://Objects/SkillSpecific/Building/BeaverDam/BeaverDam.gd" id="2_8kkhm"]
[ext_resource type="Texture2D" uid="uid://ba25fbsflxkft" path="res://Skills/Arson/FireAnim/Fire1.png" id="4_qcu1w"]
[ext_resource type="Texture2D" uid="uid://dufwp4sp2kyuv" path="res://Skills/Arson/FireAnim/Fire2.png" id="5_af1ax"]
[ext_resource type="Texture2D" uid="uid://b67o4ynk1eu4j" path="res://Objects/SkillSpecific/Building/BeaverDam/BeaverDamBase.png" id="5_tvs6d"]
[ext_resource type="Texture2D" uid="uid://b6a4awj22skbe" path="res://Skills/Arson/FireAnim/Fire3.png" id="6_fpjux"]
[ext_resource type="Texture2D" uid="uid://cdve37obs7abb" path="res://Objects/SkillSpecific/Building/BeaverDam/DamOnAString1.png" id="6_knvos"]
[ext_resource type="Script" path="res://Utils/PlayOnReady.gd" id="7_somjb"]
[ext_resource type="Texture2D" uid="uid://bms7t3kyueg0r" path="res://Objects/SkillSpecific/Building/BeaverDam/DamOnAString2.png" id="7_x7xji"]
[sub_resource type="SpriteFrames" id="SpriteFrames_8kxhm"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("5_tvs6d")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("6_knvos")
}],
"loop": true,
"name": &"worm1",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("7_x7xji")
}],
"loop": true,
"name": &"worm2",
"speed": 5.0
}]
[sub_resource type="CircleShape2D" id="CircleShape2D_kr21r"]
radius = 23.0217
[sub_resource type="SpriteFrames" id="SpriteFrames_6h3kv"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("4_qcu1w")
}, {
"duration": 1.0,
"texture": ExtResource("5_af1ax")
}, {
"duration": 1.0,
"texture": ExtResource("6_fpjux")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_nny5n"]
size = Vector2(448, 139)
[node name="BeaverDam" instance=ExtResource("1_rsgpe")]
y_sort_enabled = true
script = ExtResource("2_8kkhm")
[node name="SelectionRegionIndicator" parent="." index="0"]
position = Vector2(264, 5)
scale = Vector2(0.64, 1.02)
[node name="FrontItems" type="Node2D" parent="." index="1"]
y_sort_enabled = true
position = Vector2(0, 1)
[node name="Sprite2D" type="Sprite2D" parent="FrontItems" index="0"]
position = Vector2(-219.172, 50.7978)
scale = Vector2(1.18333, 1.075)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D2" type="Sprite2D" parent="FrontItems" index="1"]
position = Vector2(-186.172, 49.7978)
scale = Vector2(0.941667, 0.870833)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D3" type="Sprite2D" parent="FrontItems" index="2"]
position = Vector2(-147.172, 54.7978)
scale = Vector2(0.9875, 1.01875)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D4" type="Sprite2D" parent="FrontItems" index="3"]
position = Vector2(-112.172, 57.7978)
scale = Vector2(0.727083, 0.659375)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D6" type="Sprite2D" parent="FrontItems" index="4"]
position = Vector2(-31.1716, 52.7978)
scale = Vector2(1.39375, 1.12604)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D7" type="Sprite2D" parent="FrontItems" index="5"]
position = Vector2(17.6018, 57.7705)
scale = Vector2(1.00755, 0.865755)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D8" type="Sprite2D" parent="FrontItems" index="6"]
position = Vector2(59.8284, 55.7978)
scale = Vector2(1.08177, 0.93151)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D5" type="Sprite2D" parent="FrontItems" index="7"]
position = Vector2(-79.1716, 54.7978)
scale = Vector2(0.938542, 0.821354)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D9" type="Sprite2D" parent="FrontItems" index="8"]
position = Vector2(98.8284, 56.7978)
scale = Vector2(0.877084, 0.776042)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D10" type="Sprite2D" parent="FrontItems" index="9"]
position = Vector2(222.828, 55.7978)
scale = Vector2(0.844271, 0.89401)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D11" type="Sprite2D" parent="FrontItems" index="10"]
position = Vector2(148.828, 56.7978)
scale = Vector2(1.6776, 1.12734)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D12" type="Sprite2D" parent="FrontItems" index="11"]
position = Vector2(194.828, 57.7978)
scale = Vector2(0.605469, 0.613672)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="BackItems" type="Node2D" parent="." index="2"]
y_sort_enabled = true
position = Vector2(4, -109)
[node name="Sprite2D" type="Sprite2D" parent="BackItems" index="0"]
position = Vector2(-221.172, 53.7978)
scale = Vector2(1.18333, 1.075)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D2" type="Sprite2D" parent="BackItems" index="1"]
position = Vector2(-186.172, 49.7978)
scale = Vector2(0.941667, 0.870833)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D3" type="Sprite2D" parent="BackItems" index="2"]
position = Vector2(-147.172, 54.7978)
scale = Vector2(0.9875, 1.01875)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D4" type="Sprite2D" parent="BackItems" index="3"]
position = Vector2(-112.172, 57.7978)
scale = Vector2(0.727083, 0.659375)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D6" type="Sprite2D" parent="BackItems" index="4"]
position = Vector2(-31.1716, 55.7978)
scale = Vector2(1.39375, 1.12604)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D7" type="Sprite2D" parent="BackItems" index="5"]
position = Vector2(17.6018, 57.7705)
scale = Vector2(1.00755, 0.865755)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D8" type="Sprite2D" parent="BackItems" index="6"]
position = Vector2(59.8284, 55.7978)
scale = Vector2(1.08177, 0.93151)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D5" type="Sprite2D" parent="BackItems" index="7"]
position = Vector2(-78.0154, 58.4384)
scale = Vector2(0.938542, 0.821354)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D9" type="Sprite2D" parent="BackItems" index="8"]
position = Vector2(98.8284, 56.7978)
scale = Vector2(0.877084, 0.776042)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D10" type="Sprite2D" parent="BackItems" index="9"]
position = Vector2(214.828, 62.7978)
scale = Vector2(0.844271, 0.89401)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D11" type="Sprite2D" parent="BackItems" index="10"]
position = Vector2(149.828, 57.7978)
scale = Vector2(1.6776, 1.12734)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D12" type="Sprite2D" parent="BackItems" index="11"]
position = Vector2(194.828, 57.7978)
scale = Vector2(0.605469, 0.613672)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="MiddleItems" type="Node2D" parent="." index="3"]
y_sort_enabled = true
[node name="Sprite2D23" type="Sprite2D" parent="MiddleItems" index="0"]
position = Vector2(-217.917, -30.1576)
scale = Vector2(0.975156, 1.03785)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D24" type="Sprite2D" parent="MiddleItems" index="1"]
position = Vector2(-183.354, -27.1013)
scale = Vector2(0.717995, 0.671738)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D36" type="Sprite2D" parent="MiddleItems" index="2"]
position = Vector2(-212.586, 12.8311)
scale = Vector2(1.44714, 1.06319)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D25" type="Sprite2D" parent="MiddleItems" index="3"]
position = Vector2(-103.367, -29.1388)
scale = Vector2(1.37633, 1.14715)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D26" type="Sprite2D" parent="MiddleItems" index="4"]
position = Vector2(-55.2032, -27.1291)
scale = Vector2(0.994956, 0.881988)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D27" type="Sprite2D" parent="MiddleItems" index="5"]
position = Vector2(-13.5044, -29.1388)
scale = Vector2(1.06825, 0.948976)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D28" type="Sprite2D" parent="MiddleItems" index="6"]
position = Vector2(-149.625, -26.4487)
scale = Vector2(0.92681, 0.836754)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D29" type="Sprite2D" parent="MiddleItems" index="7"]
position = Vector2(25.0081, -28.1201)
scale = Vector2(0.86612, 0.790593)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D30" type="Sprite2D" parent="MiddleItems" index="8"]
position = Vector2(148.446, -27.1013)
scale = Vector2(0.833718, 0.910773)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D31" type="Sprite2D" parent="MiddleItems" index="9"]
position = Vector2(75.3706, -27.1013)
scale = Vector2(1.65663, 1.14848)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D32" type="Sprite2D" parent="MiddleItems" index="10"]
position = Vector2(119.808, -27.1013)
scale = Vector2(0.597901, 0.625178)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D3" type="Sprite2D" parent="MiddleItems" index="11"]
position = Vector2(-210.547, 36.8478)
scale = Vector2(0.9875, 1.01875)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D4" type="Sprite2D" parent="MiddleItems" index="12"]
position = Vector2(-175.547, 39.8478)
scale = Vector2(0.727083, 0.659375)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D6" type="Sprite2D" parent="MiddleItems" index="13"]
position = Vector2(-94.5466, 37.8478)
scale = Vector2(1.39375, 1.12604)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D7" type="Sprite2D" parent="MiddleItems" index="14"]
position = Vector2(-45.7732, 39.8205)
scale = Vector2(1.00755, 0.865755)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D8" type="Sprite2D" parent="MiddleItems" index="15"]
position = Vector2(-3.54663, 37.8478)
scale = Vector2(1.08177, 0.93151)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D5" type="Sprite2D" parent="MiddleItems" index="16"]
position = Vector2(-141.39, 40.4884)
scale = Vector2(0.938542, 0.821354)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D9" type="Sprite2D" parent="MiddleItems" index="17"]
position = Vector2(35.8284, 29.7978)
scale = Vector2(0.877084, 0.776042)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D33" type="Sprite2D" parent="MiddleItems" index="18"]
position = Vector2(204.828, 36.7978)
scale = Vector2(1.2776, 0.944375)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D10" type="Sprite2D" parent="MiddleItems" index="19"]
position = Vector2(160.453, 39.8478)
scale = Vector2(0.844271, 0.89401)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D11" type="Sprite2D" parent="MiddleItems" index="20"]
position = Vector2(86.4534, 39.8478)
scale = Vector2(1.6776, 1.12734)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D12" type="Sprite2D" parent="MiddleItems" index="21"]
position = Vector2(131.453, 39.8478)
scale = Vector2(0.605469, 0.613672)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D13" type="Sprite2D" parent="MiddleItems" index="22"]
position = Vector2(-150.547, 2.84776)
scale = Vector2(0.9875, 1.01875)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D14" type="Sprite2D" parent="MiddleItems" index="23"]
position = Vector2(-115.547, 5.84776)
scale = Vector2(0.727083, 0.659375)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D15" type="Sprite2D" parent="MiddleItems" index="24"]
position = Vector2(-34.5466, 3.84776)
scale = Vector2(1.39375, 1.12604)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D16" type="Sprite2D" parent="MiddleItems" index="25"]
position = Vector2(14.2268, 5.82046)
scale = Vector2(1.00755, 0.865755)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D17" type="Sprite2D" parent="MiddleItems" index="26"]
position = Vector2(56.4534, 3.84775)
scale = Vector2(1.08177, 0.93151)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D18" type="Sprite2D" parent="MiddleItems" index="27"]
position = Vector2(-81.3904, 6.48835)
scale = Vector2(0.938542, 0.821354)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D19" type="Sprite2D" parent="MiddleItems" index="28"]
position = Vector2(95.4534, 4.84776)
scale = Vector2(0.877084, 0.776042)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D20" type="Sprite2D" parent="MiddleItems" index="29"]
position = Vector2(220.453, 5.84776)
scale = Vector2(0.844271, 0.89401)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D34" type="Sprite2D" parent="MiddleItems" index="30"]
position = Vector2(199.664, -19.0197)
scale = Vector2(1.10547, 1.04547)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D35" type="Sprite2D" parent="MiddleItems" index="31"]
position = Vector2(-168.172, 17.7978)
scale = Vector2(0.952734, 0.892427)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D21" type="Sprite2D" parent="MiddleItems" index="32"]
position = Vector2(146.453, 5.84776)
scale = Vector2(1.6776, 1.12734)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="Sprite2D22" type="Sprite2D" parent="MiddleItems" index="33"]
position = Vector2(191.453, 5.84776)
scale = Vector2(0.605469, 0.613672)
texture = ExtResource("2_7ibea")
offset = Vector2(0, -16)
[node name="MainSprite" parent="." index="4"]
z_index = -1
sprite_frames = SubResource("SpriteFrames_8kxhm")
[node name="Panel" parent="Interactable" index="1"]
offset_left = 231.0
offset_top = -46.0
offset_right = 296.0
offset_bottom = 56.0
[node name="Buildable" parent="." index="6"]
position = Vector2(295, 5)
[node name="CollisionShape2D" parent="Buildable/InteractionArea" index="0"]
shape = SubResource("CircleShape2D_kr21r")
[node name="BuildingBar" parent="." index="8"]
offset_left = -59.0
offset_top = -103.0
offset_right = 54.0
offset_bottom = -87.0
[node name="HealthBar" parent="." index="9"]
offset_left = -58.0
offset_top = -115.0
offset_right = 52.0
offset_bottom = -101.0
[node name="Fires" parent="." index="11"]
visible = false
y_sort_enabled = true
[node name="Fire" type="AnimatedSprite2D" parent="Fires" index="0"]
position = Vector2(-156, 19)
sprite_frames = SubResource("SpriteFrames_6h3kv")
offset = Vector2(0, -40)
script = ExtResource("7_somjb")
[node name="Fire2" type="AnimatedSprite2D" parent="Fires" index="1"]
position = Vector2(-7, -14)
sprite_frames = SubResource("SpriteFrames_6h3kv")
offset = Vector2(0, -40)
script = ExtResource("7_somjb")
[node name="Fire3" type="AnimatedSprite2D" parent="Fires" index="2"]
position = Vector2(148, 17)
sprite_frames = SubResource("SpriteFrames_6h3kv")
offset = Vector2(0, -40)
script = ExtResource("7_somjb")
[node name="StandingZone" type="Area2D" parent="." index="14"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="StandingZone" index="0"]
position = Vector2(-1, -3.5)
shape = SubResource("RectangleShape2D_nny5n")
[connection signal="area_entered" from="StandingZone" to="." method="_on_standing_zone_area_entered"]
[connection signal="area_exited" from="StandingZone" to="." method="_on_standing_zone_area_exited"]
[editable path="Interactable"]
[editable path="Interactable/ActionMenu"]
[editable path="Buildable"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b67o4ynk1eu4j"
path="res://.godot/imported/BeaverDamBase.png-cb0f888401f4f87ec68d88d76eb9ef48.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/BeaverDam/BeaverDamBase.png"
dest_files=["res://.godot/imported/BeaverDamBase.png-cb0f888401f4f87ec68d88d76eb9ef48.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cdve37obs7abb"
path="res://.godot/imported/DamOnAString1.png-e8e855aced964410a7a46240217c57d7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/BeaverDam/DamOnAString1.png"
dest_files=["res://.godot/imported/DamOnAString1.png-e8e855aced964410a7a46240217c57d7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bms7t3kyueg0r"
path="res://.godot/imported/DamOnAString2.png-976aa6b62d0539119435e7426613360e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/BeaverDam/DamOnAString2.png"
dest_files=["res://.godot/imported/DamOnAString2.png-976aa6b62d0539119435e7426613360e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,399 @@
extends Node2D
@export var savePrefix:String = ""
var materialInvName
var smokeScene = preload("res://Skills/Arson/Smoke.tscn")
var groundItemScene = preload("res://Objects/GroundItems/GroundItem.tscn")
const damFireStarterClass = preload("res://Items/Artificial/Products/DamFireStarter.gd")
var buildingMaterial:Item
var buildingHealth = 0
var buildingProgress = -1
var fireSound:AudioStreamPlayer2D
var onFire = false
var fireDamage = 10
var flintSoundPlayer
var lastSoundIndex = -1
var flintSounds = []
var health = 0
var maxHealth = 0
var fireXpCounter = 10
var fireXpCollected = 0
var complete = false
var rng = RandomNumberGenerator.new()
func _ready():
fireSound = $FireSound
initialize_flint_sounds()
load_build()
if buildingMaterial != null and buildingProgress >= get_stages_for_item(buildingMaterial):
fully_built(true)
else:
if buildingMaterial != null:
%BuildingBar.value = 0
%BuildingBar.max_value = get_stages_for_item(buildingMaterial)
$MainSprite.visible = false
complete = false
hide_other_visuals()
func load_build():
materialInvName = savePrefix + "Material"
var materialInv = InventoryManager.get_inventory(materialInvName)
if materialInv.items.size() > 0:
buildingMaterial = materialInv.items[0]
buildingProgress = SaveManager.get_save_value(savePrefix + "Progress", -1)
func save_build():
var materialInv = InventoryManager.get_inventory(materialInvName)
materialInv.clear()
if buildingMaterial != null:
materialInv.add_item(buildingMaterial)
SaveManager.set_save_value(savePrefix + "Progress", buildingProgress)
func _process(delta):
if onFire:
if !complete:
onFire = false
else:
$Fires.visible = true
if !fireSound.playing:
fireSound.play()
take_damage(fireDamage * delta, true)
else:
$Fires.visible = false
if fireSound != null and fireSound.playing:
fireSound.stop()
if complete:
%StageCounter.visible = false
%BuildingBar.visible = false
if health >= maxHealth:
%HealthBar.visible = false
else:
%HealthBar.visible = true
%HealthBar.max_value = maxHealth
%HealthBar.value = health
else:
if buildingProgress == -1:
%StageCounter.visible = false
%BuildingBar.visible = false
%HealthBar.visible = false
elif buildingProgress >= 0:
%StageCounter.visible = true
%BuildingBar.visible = true
%HealthBar.visible = false
%StageCounter.text = "Stages: " + str(buildingProgress) + "/" + str(get_stages_for_item(buildingMaterial))
%BuildingBar.value = buildingProgress
func take_damage(damage, fireDamage = false):
health -= damage
if fireDamage:
fireXpCounter -= damage
if fireXpCounter <= 0:
LevelManager.add_XP("arson", 6)
fireXpCounter += 10
fireXpCollected += damage
if health <= 0:
if onFire and fireXpCollected > 0:
LevelManager.add_XP("arson", fireXpCollected)
if onFire:
LevelManager.get_skill("appreciating").experience_event("Dam", "burned a", 230)
else:
LevelManager.get_skill("appreciating").experience_event("Dam", "overloaded a", 230)
experiencing_destruction(buildingMaterial)
if get_gumption(buildingMaterial) <= 0:
AchievementManager.complete_achievement("Dunk Trap")
var itemToDrop = buildingMaterial.duplicate()
if onFire:
itemToDrop = AshGenerator.generate_ash(itemToDrop)
drop_items(itemToDrop)
unbuilt()
func experiencing_destruction(item):
pass
func stage_complete():
buildingProgress += 1
var xp = 0
if buildingProgress >= get_stages_for_item(buildingMaterial):
xp += get_completion_xp()
else:
xp += get_stage_xp()
LevelManager.add_XP("building", xp)
save_build()
if buildingProgress < get_stages_for_item(buildingMaterial):
return true
else:
fully_built()
return false
func demolish():
if demolish_check():
var player:Cow = GameVariables.player
player.demolish(self)
func demolish_check():
if !complete and buildingProgress > 0:
return true
return false
func get_demolishing_speed():
if buildingProgress <= 1:
return 100
else:
var speed = 100/(buildingProgress/2)
return speed
func demolished():
unbuilt()
func arson():
if arson_check():
play_flint_sound()
if arson_skill_check():
burn()
func arson_check():
if complete and !onFire:
return true
return false
func arson_skill_check():
var fireChance = buildingMaterial.get_flammability()*0.5
fireChance -= 30
var currentLevel = LevelManager.get_skill("arson").currentLevel
fireChance += currentLevel*1.5
var penalty = floor(((70-buildingMaterial.get_flammability()) - currentLevel)/10)
if penalty > 0:
for i in range(penalty):
fireChance = fireChance * 0.75
if InventoryManager.check_if_in_inventory(damFireStarterClass.new(), 1, "keyItems"):
if fireChance < 0:
fireChance = 0
fireChance += 3
if rng.randi_range(0, 100) <= fireChance:
return true
else:
if fireChance >= 1:
smoke()
return false
func initialize_flint_sounds():
flintSoundPlayer = $FlintSounds
flintSounds.append(load("res://Sounds/SFX/Fire/Flint/flint1.mp3"))
flintSounds.append(load("res://Sounds/SFX/Fire/Flint/flint2.mp3"))
flintSounds.append(load("res://Sounds/SFX/Fire/Flint/flint3.mp3"))
flintSounds.append(load("res://Sounds/SFX/Fire/Flint/flint4.mp3"))
flintSounds.append(load("res://Sounds/SFX/Fire/Flint/flint5.mp3"))
flintSounds.append(load("res://Sounds/SFX/Fire/Flint/flint6.mp3"))
flintSounds.append(load("res://Sounds/SFX/Fire/Flint/flint7.mp3"))
flintSounds.append(load("res://Sounds/SFX/Fire/Flint/flint8.mp3"))
func play_flint_sound():
var newIndex = rng.randi_range(0, flintSounds.size() - 1)
if newIndex == lastSoundIndex:
newIndex = rng.randi_range(0, flintSounds.size() - 1)
flintSoundPlayer.stream = flintSounds[newIndex]
flintSoundPlayer.play()
lastSoundIndex = newIndex
func burn():
onFire = true
func smoke():
var smokeOffsets = [Vector2(-156, 20), Vector2(-7, -14), Vector2(148, 17)]
for offset in smokeOffsets:
var newSmoke = smokeScene.instantiate()
newSmoke.position = position + offset
newSmoke.emitting = true
get_parent().add_child(newSmoke)
func unbuilt():
$MainSprite.visible = false
complete = false
buildingProgress = -1
buildingMaterial = null
hide_other_visuals()
save_build()
func drop_items(item):
var groundItemOffsets = [Vector2(80, 10), Vector2(-80, 10), Vector2(0, -20),
Vector2(-160, 20), Vector2(160, 20)]
var itemsBack = 0
var itemsUsed = get_stages_for_item(buildingMaterial)
if itemsUsed >= 2:
itemsBack += 1
if itemsUsed >= 5:
itemsBack += 1
if itemsUsed >= 25:
itemsBack += 3
for offset in groundItemOffsets:
if itemsBack <= 0:
break
else:
itemsBack -= 1
var newGroundItem = groundItemScene.instantiate()
newGroundItem.set_item(item.duplicate())
newGroundItem.global_position = global_position + offset
LocationManager.currentLocation.add_child(newGroundItem)
func hide_other_visuals():
pass
func fully_built(loadedState = false):
if !loadedState:
LevelManager.get_skill("appreciating").experience_item(buildingMaterial, "dammed")
maxHealth = get_max_health()
health = maxHealth
complete = true
fireXpCollected = ceili(get_completion_xp()/4)
fireXpCounter = 10
func get_max_health():
var newMaxHealth = 20
newMaxHealth += get_gumption(buildingMaterial) * 2
if newMaxHealth > 500:
newMaxHealth = 500
if newMaxHealth <= 5:
newMaxHealth = 5
return newMaxHealth
func get_stage_xp():
var difficulty = abs(buildingMaterial.get_hardness() - 30)
var xpReward = 1
xpReward += difficulty * 0.2
xpReward = floori(xpReward)
return xpReward
func get_completion_xp():
var difficulty = abs(buildingMaterial.get_hardness() - 30)
var xpReward = 250
xpReward += get_stages_for_item(buildingMaterial) * 2
xpReward += difficulty * 8
xpReward = floori(xpReward)
return xpReward
func build():
if build_check():
var player:Cow = GameVariables.player
player.build(buildingMaterial, self)
func build_check():
if buildingProgress >= 0 and !complete:
return true
return false
func plan():
if plan_check():
open_planning_menu()
func open_planning_menu():
$PlanningWindow.popup_centered()
$PlanningWindow.opened()
func plan_check():
if buildingProgress <= 0:
return true
return false
func set_plan(material:Item):
buildingMaterial = material
buildingProgress = 0
%BuildingBar.value = 0
%BuildingBar.max_value = get_stages_for_item(buildingMaterial)
save_build()
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
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 get_stages_for_item(item:Item):
if item == null:
return 0
var stages = 0
if item.get_weight() <= 0:
stages = 10
elif item.get_weight() <= 0.2:
stages = 250
else:
stages = ceili(float(50)/float(item.get_weight()))
if item.get_name(false) == "Worm on a String" or item.get_name(false) == "Basket on a String":
stages = 80
return stages
func get_gumption(item:Item):
var gumption = 0
gumption += item.get_hardness() * 2
if item.get_hardness() > 30:
gumption += (item.get_hardness() - 30) * 2
if item.get_hardness() > 50:
gumption += (item.get_hardness() - 50) * 5
if item.get_hardness() > 70:
gumption += (item.get_hardness() - 70) * 10
if item.get_hardness() > 90:
gumption += (item.get_hardness() - 90) * 50
return gumption

View file

@ -0,0 +1,129 @@
[gd_scene load_steps=13 format=3 uid="uid://cufhvngt5p0pu"]
[ext_resource type="Script" path="res://Objects/SkillSpecific/Building/BuildingZone.gd" id="1_vrk03"]
[ext_resource type="Texture2D" uid="uid://b67o4ynk1eu4j" path="res://Objects/SkillSpecific/Building/BeaverDam/BeaverDamBase.png" id="1_ysxqw"]
[ext_resource type="PackedScene" uid="uid://bqibe7ha6r5ls" path="res://Interactions/Interactable/interactable.tscn" id="3_2nolj"]
[ext_resource type="Texture2D" uid="uid://bl4mkg8ccwrhk" path="res://MiscArt/White.png" id="4_jvrsc"]
[ext_resource type="PackedScene" uid="uid://cf3aqkjfurrjs" path="res://Interactions/Building/BuildingSpot/Buildable.tscn" id="5_4q0jh"]
[ext_resource type="PackedScene" uid="uid://do0yyc8tr7wbh" path="res://UI/Building/PlanningWindow.tscn" id="6_dpwye"]
[ext_resource type="AudioStream" uid="uid://dvhansvh7f4hx" path="res://Sounds/SFX/Fire/fire.mp3" id="7_wapdb"]
[sub_resource type="SpriteFrames" id="SpriteFrames_6l052"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("1_ysxqw")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7gb4c"]
bg_color = Color(0.729412, 0.556863, 0.482353, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0, 0, 0, 1)
corner_radius_top_left = 6
corner_radius_top_right = 6
corner_radius_bottom_right = 6
corner_radius_bottom_left = 6
anti_aliasing = false
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ymita"]
bg_color = Color(0.211765, 0.313726, 0.968627, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0.8, 0.8, 0.8, 0)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
anti_aliasing = false
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rwi2n"]
bg_color = Color(0.929412, 0.866667, 0.968627, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0, 0, 0, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_33uhg"]
bg_color = Color(0.913725, 0, 0.172549, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0.8, 0.8, 0.8, 0)
[node name="BuildingZone" type="Node2D"]
script = ExtResource("1_vrk03")
[node name="SelectionRegionIndicator" type="Sprite2D" parent="."]
self_modulate = Color(0.341176, 1, 1, 0.564706)
z_index = -1
position = Vector2(0, 73)
texture = ExtResource("4_jvrsc")
[node name="MainSprite" type="AnimatedSprite2D" parent="."]
sprite_frames = SubResource("SpriteFrames_6l052")
[node name="Interactable" parent="." instance=ExtResource("3_2nolj")]
[node name="Buildable" parent="." instance=ExtResource("5_4q0jh")]
[node name="PlanningWindow" parent="." instance=ExtResource("6_dpwye")]
visible = false
[node name="BuildingBar" type="ProgressBar" parent="."]
unique_name_in_owner = true
offset_left = -58.0
offset_top = -100.0
offset_right = 55.0
offset_bottom = -84.0
theme_override_styles/background = SubResource("StyleBoxFlat_7gb4c")
theme_override_styles/fill = SubResource("StyleBoxFlat_ymita")
show_percentage = false
[node name="HealthBar" type="ProgressBar" parent="."]
unique_name_in_owner = true
offset_left = -52.0
offset_top = -79.0
offset_right = 51.0
offset_bottom = -70.0
theme_override_styles/background = SubResource("StyleBoxFlat_rwi2n")
theme_override_styles/fill = SubResource("StyleBoxFlat_33uhg")
value = 40.0
show_percentage = false
[node name="StageCounter" type="Label" parent="."]
unique_name_in_owner = true
offset_left = -93.0
offset_top = -134.0
offset_right = 89.0
offset_bottom = -105.0
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 10
theme_override_font_sizes/font_size = 20
text = "Stages: 500/500"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Fires" type="Node2D" parent="."]
[node name="FireSound" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("7_wapdb")
max_distance = 600.0
bus = &"SFX"
[node name="FlintSounds" type="AudioStreamPlayer2D" parent="."]
max_distance = 400.0
bus = &"SFX"
[editable path="Interactable"]
[editable path="Interactable/ActionMenu"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c3cg3cj6squn1"
path="res://.godot/imported/SandCastleSprite.png-287405f6640cd67bc8cf97c6d0767957.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite.png"
dest_files=["res://.godot/imported/SandCastleSprite.png-287405f6640cd67bc8cf97c6d0767957.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://uq5dcqmnqaql"
path="res://.godot/imported/SandCastleSprite1.png-54691a4cc9c89d3b1504496309ce36a5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite1.png"
dest_files=["res://.godot/imported/SandCastleSprite1.png-54691a4cc9c89d3b1504496309ce36a5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 997 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bxtx623v3t51f"
path="res://.godot/imported/SandCastleSprite2.png-c7eefb999ed1fd307b6b1b8305ffec1b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite2.png"
dest_files=["res://.godot/imported/SandCastleSprite2.png-c7eefb999ed1fd307b6b1b8305ffec1b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dtdjvhf5igqb0"
path="res://.godot/imported/SandCastleSprite3.png-745a2a20dfce4f8c57bae7152d11b47a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite3.png"
dest_files=["res://.godot/imported/SandCastleSprite3.png-745a2a20dfce4f8c57bae7152d11b47a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cn27yxm81u1i6"
path="res://.godot/imported/SandCastleSprite4.png-dff1bc366c7a00306e80bcd5a12631d0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite4.png"
dest_files=["res://.godot/imported/SandCastleSprite4.png-dff1bc366c7a00306e80bcd5a12631d0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dti4tf7wh63g6"
path="res://.godot/imported/SandCastleSprite5.png-a530521ff1fd212c1f3b3f4d8a584c6f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite5.png"
dest_files=["res://.godot/imported/SandCastleSprite5.png-a530521ff1fd212c1f3b3f4d8a584c6f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://coscvhegqejkr"
path="res://.godot/imported/SandCastleSprite6.png-2ed72fac70324553c48041b8d2bee3d8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite6.png"
dest_files=["res://.godot/imported/SandCastleSprite6.png-2ed72fac70324553c48041b8d2bee3d8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -0,0 +1,118 @@
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

View file

@ -0,0 +1,180 @@
[gd_scene load_steps=20 format=3 uid="uid://dkp3008p0m1ni"]
[ext_resource type="Script" path="res://Objects/SkillSpecific/Building/SandcastleBuilding/Sandcastle.gd" id="1_sh1by"]
[ext_resource type="Texture2D" uid="uid://c3cg3cj6squn1" path="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite.png" id="3_4suqa"]
[ext_resource type="Texture2D" uid="uid://bbmlkil40xcbc" path="res://MiscArt/WhiteCircle.png" id="3_ev3yg"]
[ext_resource type="Texture2D" uid="uid://cjqngnhrbng5m" path="res://Objects/SkillSpecific/Building/SandcastleBuilding/WormCastleSprite.png" id="4_f1juh"]
[ext_resource type="PackedScene" uid="uid://bqibe7ha6r5ls" path="res://Interactions/Interactable/interactable.tscn" id="4_rkakq"]
[ext_resource type="Texture2D" uid="uid://bxtx623v3t51f" path="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite2.png" id="4_tv006"]
[ext_resource type="Texture2D" uid="uid://dtdjvhf5igqb0" path="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite3.png" id="5_4ni2r"]
[ext_resource type="PackedScene" uid="uid://cf3aqkjfurrjs" path="res://Interactions/Building/BuildingSpot/Buildable.tscn" id="5_b7e6r"]
[ext_resource type="PackedScene" uid="uid://b640j6bgsnyuq" path="res://UI/Building/SandcastlePlanningWindow.tscn" id="6_2q67m"]
[ext_resource type="Texture2D" uid="uid://cn27yxm81u1i6" path="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite4.png" id="6_vrgeq"]
[ext_resource type="Script" path="res://Interactions/Building/BuildingSpot/SandcastleBuildable.gd" id="6_xrxsv"]
[ext_resource type="Texture2D" uid="uid://dti4tf7wh63g6" path="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite5.png" id="7_2j531"]
[ext_resource type="Texture2D" uid="uid://coscvhegqejkr" path="res://Objects/SkillSpecific/Building/SandcastleBuilding/SandCastleSprite6.png" id="8_itbgy"]
[sub_resource type="SpriteFrames" id="SpriteFrames_h8fjf"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("3_4suqa")
}, {
"duration": 1.0,
"texture": ExtResource("4_tv006")
}, {
"duration": 1.0,
"texture": ExtResource("5_4ni2r")
}, {
"duration": 1.0,
"texture": ExtResource("6_vrgeq")
}, {
"duration": 1.0,
"texture": ExtResource("7_2j531")
}, {
"duration": 1.0,
"texture": ExtResource("8_itbgy")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": ExtResource("4_f1juh")
}, {
"duration": 1.0,
"texture": ExtResource("4_f1juh")
}, {
"duration": 1.0,
"texture": ExtResource("4_f1juh")
}, {
"duration": 1.0,
"texture": ExtResource("4_f1juh")
}, {
"duration": 1.0,
"texture": ExtResource("4_f1juh")
}],
"loop": true,
"name": &"worm",
"speed": 5.0
}]
[sub_resource type="CircleShape2D" id="CircleShape2D_ji20m"]
radius = 63.0317
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7gb4c"]
bg_color = Color(0.729412, 0.556863, 0.482353, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0, 0, 0, 1)
corner_radius_top_left = 6
corner_radius_top_right = 6
corner_radius_bottom_right = 6
corner_radius_bottom_left = 6
anti_aliasing = false
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ymita"]
bg_color = Color(0.211765, 0.313726, 0.968627, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0.8, 0.8, 0.8, 0)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
anti_aliasing = false
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rwi2n"]
bg_color = Color(0.929412, 0.866667, 0.968627, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0, 0, 0, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_33uhg"]
bg_color = Color(0.913725, 0, 0.172549, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0.8, 0.8, 0.8, 0)
[node name="Sandcastle" type="Node2D"]
script = ExtResource("1_sh1by")
savePrefix = null
[node name="SelectionRegionIndicator" type="Sprite2D" parent="."]
self_modulate = Color(0.341176, 1, 1, 0.564706)
z_index = -1
position = Vector2(-2, -8)
scale = Vector2(3.05167, 0.926667)
texture = ExtResource("3_ev3yg")
[node name="MainSprite" type="AnimatedSprite2D" parent="."]
position = Vector2(-2, -39)
sprite_frames = SubResource("SpriteFrames_h8fjf")
[node name="Interactable" parent="." instance=ExtResource("4_rkakq")]
[node name="Panel" parent="Interactable" index="1"]
offset_left = -93.0
offset_top = -37.0
offset_right = 90.0
offset_bottom = 20.0
[node name="Buildable" parent="." instance=ExtResource("5_b7e6r")]
position = Vector2(-2, 0)
script = ExtResource("6_xrxsv")
[node name="CollisionShape2D" parent="Buildable/InteractionArea" index="0"]
position = Vector2(4, -22)
shape = SubResource("CircleShape2D_ji20m")
[node name="PlanningWindow" parent="." instance=ExtResource("6_2q67m")]
visible = false
[node name="BuildingBar" type="ProgressBar" parent="."]
unique_name_in_owner = true
offset_left = -58.0
offset_top = -112.0
offset_right = 55.0
offset_bottom = -96.0
theme_override_styles/background = SubResource("StyleBoxFlat_7gb4c")
theme_override_styles/fill = SubResource("StyleBoxFlat_ymita")
show_percentage = false
[node name="HealthBar" type="ProgressBar" parent="."]
unique_name_in_owner = true
offset_left = -57.0
offset_top = -111.0
offset_right = 53.0
offset_bottom = -97.0
theme_override_styles/background = SubResource("StyleBoxFlat_rwi2n")
theme_override_styles/fill = SubResource("StyleBoxFlat_33uhg")
value = 40.0
show_percentage = false
[node name="StageCounter" type="Label" parent="."]
unique_name_in_owner = true
offset_left = -90.0
offset_top = -145.0
offset_right = 92.0
offset_bottom = -116.0
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 10
theme_override_font_sizes/font_size = 20
text = "Stages: 500/500"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Fires" type="Node2D" parent="."]
[editable path="Interactable"]
[editable path="Interactable/ActionMenu"]
[editable path="Buildable"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cjqngnhrbng5m"
path="res://.godot/imported/WormCastleSprite.png-b6de59a71f8d9baa8c6685667a72031d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Objects/SkillSpecific/Building/SandcastleBuilding/WormCastleSprite.png"
dest_files=["res://.godot/imported/WormCastleSprite.png-b6de59a71f8d9baa8c6685667a72031d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1