More work on quests

This commit is contained in:
2025-11-19 14:42:59 -05:00
parent 379fa4bd70
commit 4ed4ab95f3
36 changed files with 3911 additions and 75 deletions

View File

@@ -14,11 +14,13 @@ enum Status{
} }
enum Locations{ enum Locations{
VOID,
NESTORS_WOODS NESTORS_WOODS
} }
class Event: class Event:
var enemy_types: Dictionary[String, PackedScene] = { var enemy_types: Dictionary[String, PackedScene] = {
"feral pig": preload("res://templates/enemies/feral_pig.tscn"),
"goo": preload("res://templates/enemies/goo.tscn") "goo": preload("res://templates/enemies/goo.tscn")
} }
enum Type{ enum Type{
@@ -299,11 +301,15 @@ func is_eligible(member : Adventurer) -> bool:
func is_taken() -> bool: func is_taken() -> bool:
return status == Status.TAKEN return status == Status.TAKEN
func location_name() -> String: static func location_name(location : Locations) -> String:
match(location): match(location):
Locations.VOID: return "The Endless Void"
Locations.NESTORS_WOODS: return "Nestor's Woods" Locations.NESTORS_WOODS: return "Nestor's Woods"
return "ERROR" return "ERROR"
func get_location_name() -> String:
return Quest.location_name(location)
func difficulty_name() -> String: func difficulty_name() -> String:
match(difficulty): match(difficulty):
0: return "None" 0: return "None"
@@ -330,7 +336,16 @@ static func load_quest_list() -> void:
dir.list_dir_end() dir.list_dir_end()
static func generate(parameters : Dictionary) -> Quest: static func generate(parameters : Dictionary) -> Quest:
return null var candidates : Array[Quest] = []
var l = list
for q in list:
if parameters.location != -1 and q.location != parameters.location:
continue
if q.difficulty < parameters.min_difficulty or q.difficulty > parameters.max_difficulty:
continue
candidates.append(q)
var choice : Quest = candidates.pick_random()
return choice.duplicate()
func save() -> Dictionary: func save() -> Dictionary:
var d : Dictionary = {} var d : Dictionary = {}

View File

@@ -0,0 +1,42 @@
extends Quest
func _init() -> void:
name = "[1] A Quest for Nestor's Woods that Ann Marie Promised Me"
super._init()
func setup() -> void:
var event_weights = [1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,4,4,5]
var num_events = 3 # event_weights.pick_random()
#The first event is guaranteed to be at the 50% mark.
var first : bool = true
var pranges : Array = []
var margin : float = 0.1
for i in range(num_events):
var evt : Quest.Event = Quest.Event.new()
evt.type = Quest.Event.Type.COMBAT
evt.enemies = ["goo"]
evt.time = 5
if first:
#Make invisible
evt.progress_point = .5
pranges.append([margin, evt.progress_point-margin])
pranges.append([evt.progress_point+margin, 1 - margin])
first = false
else:
evt.hidden = true
pranges.shuffle()
var range = pranges.pop_back()
evt.progress_point = randf_range(range[0], range[1])
if evt.progress_point - range[0] >= 2 * margin:
pranges.append([range[0], evt.progress_point - margin])
if range[1] - evt.progress_point >= 2 * margin:
pranges.append([evt.progress_point + margin, range[1]])
events.append(evt)
events.sort_custom(func(a,b): return a.progress_point < b.progress_point)
desc = "One day Ann Marie will write me."
location = Quest.Locations.NESTORS_WOODS
rewards = {"exp":10, "gold":5}
guild_rewards = {"glory":10, "gold":5}
covenant_cost = 5

View File

@@ -0,0 +1 @@
uid://w6t0lkkxmbl2

49
data/quests/feral_pigs.gd Normal file
View File

@@ -0,0 +1,49 @@
extends Quest
func _init() -> void:
name = "Fight of the Feral Pigs"
location = Quest.Locations.NESTORS_WOODS
difficulty = 1
super._init()
func setup() -> void:
var event_weights = [1,1,1,1,1,1,1,1,2,2,2,2,3,3,3]
var num_events = event_weights.pick_random()
#The first event is guaranteed to be at the 50% mark.
var first : bool = true
var pranges : Array = []
var margin : float = 0.1
for i in range(num_events):
var evt : Quest.Event = Quest.Event.new()
evt.type = Quest.Event.Type.COMBAT
evt.enemies = []
for j in range(randi() %3 + 1):
evt.enemies.append("feral pig")
evt.time = 600
evt.completed.connect(_on_combat_complete.bind(evt))
if first:
#Make invisible
evt.progress_point = .5
pranges.append([margin, evt.progress_point-margin])
pranges.append([evt.progress_point+margin, 1 - margin])
first = false
else:
evt.hidden = true
pranges.shuffle()
var range = pranges.pop_back()
evt.progress_point = randf_range(range[0], range[1])
if evt.progress_point - range[0] >= 2 * margin:
pranges.append([range[0], evt.progress_point - margin])
if range[1] - evt.progress_point >= 2 * margin:
pranges.append([evt.progress_point + margin, range[1]])
events.append(evt)
events.sort_custom(func(a,b): return a.progress_point < b.progress_point)
desc = "Pigs got out of Old Johns farm again. Poor fella dont know up from down at his age, he cant help it. Trouble is, pigs are causing trouble in them there woods and John sure aint takin care of it. Handle 'em for us, would you?"
location = Quest.Locations.NESTORS_WOODS
rewards = {"exp":10, "gold":5}
guild_rewards = {"glory":5, "gold":5}
covenant_cost = 5
func _on_combat_complete(event : Quest.Event) -> void:
rewards.gold += 2 * len(event.enemies)

View File

@@ -0,0 +1 @@
uid://nnl5qvb3csr0

View File

@@ -1,7 +1,11 @@
extends Quest extends Quest
func setup() -> void: func _init() -> void:
name = "A Sticky Situation" name = "A Sticky Situation"
location = Quest.Locations.VOID
super._init()
func setup() -> void:
var event_weights = [1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,4,4,5] var event_weights = [1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,4,4,5]
var num_events = 3 # event_weights.pick_random() var num_events = 3 # event_weights.pick_random()
#The first event is guaranteed to be at the 50% mark. #The first event is guaranteed to be at the 50% mark.

View File

@@ -61,4 +61,4 @@ layer_info = {
"16": SubResource("Resource_qx0md"), "16": SubResource("Resource_qx0md"),
"17": SubResource("Resource_dv5be") "17": SubResource("Resource_dv5be")
} }
metadata/_latest_layer = "13" metadata/_latest_layer = ""

View File

@@ -2,6 +2,8 @@ And after that, all that was left was to... just open the guild gate, I guess?
It took me a little while to find the thing in the middle of Nestor's Woods despite growing up there. I knew Guildhalls were hidden in another dimension, but I'd always pictured the Guild Gates would be more... magical looking? It took me a little while to find the thing in the middle of Nestor's Woods despite growing up there. I knew Guildhalls were hidden in another dimension, but I'd always pictured the Guild Gates would be more... magical looking?
do Game.switch_scenes("first_guildhall") do Game.switch_scenes("first_guildhall")
player: (Wow this is a mess... nobody's been here for a while. I should...) player: (Wow this is a mess... nobody's been here for a while. I should...)
- Stuff
Stuff stuff.
- set up some lights. - set up some lights.
Hey, no touching! This isn't your home! Get out! Hey, no touching! This isn't your home! Get out!
- clean it out. - clean it out.

BIN
external/animated-flower.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

40
external/animated-flower.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bl05n76gr2dae"
path="res://.godot/imported/animated-flower.png-97452da660b05abe194469bd94b63006.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/animated-flower.png"
dest_files=["res://.godot/imported/animated-flower.png-97452da660b05abe194469bd94b63006.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

BIN
external/boar.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

40
external/boar.png.import vendored Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://op4td4qm3tx5"
path="res://.godot/imported/boar.png-0161cfc5f286f436bdc0954a6e815cd6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/boar.png"
dest_files=["res://.godot/imported/boar.png-0161cfc5f286f436bdc0954a6e815cd6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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

@@ -1,7 +1,8 @@
[gd_scene load_steps=12 format=3 uid="uid://dlmodaf4nojin"] [gd_scene load_steps=13 format=3 uid="uid://dlmodaf4nojin"]
[ext_resource type="Texture2D" uid="uid://jhaiu4lbwswl" path="res://external/test-map.png" id="1_2klcf"] [ext_resource type="Texture2D" uid="uid://jhaiu4lbwswl" path="res://external/test-map.png" id="1_2klcf"]
[ext_resource type="Texture2D" uid="uid://dy3o1xtqg03at" path="res://external/map-region-ninepatch.png" id="1_2lpho"] [ext_resource type="Texture2D" uid="uid://dy3o1xtqg03at" path="res://external/map-region-ninepatch.png" id="1_2lpho"]
[ext_resource type="Script" uid="uid://c2jtg58mno7fj" path="res://scripts/map.gd" id="1_nakos"]
[ext_resource type="PackedScene" uid="uid://dqt38n43p58vx" path="res://templates/map_pin.tscn" id="2_paxxb"] [ext_resource type="PackedScene" uid="uid://dqt38n43p58vx" path="res://templates/map_pin.tscn" id="2_paxxb"]
[ext_resource type="Shader" uid="uid://m6q35taes6nx" path="res://shaders/map_point.gdshader" id="3_2lpho"] [ext_resource type="Shader" uid="uid://m6q35taes6nx" path="res://shaders/map_point.gdshader" id="3_2lpho"]
[ext_resource type="Script" uid="uid://bhahhdhn3a7kr" path="res://scripts/map_cloud.gd" id="5_nakos"] [ext_resource type="Script" uid="uid://bhahhdhn3a7kr" path="res://scripts/map_cloud.gd" id="5_nakos"]
@@ -36,13 +37,14 @@ shader_parameter/fringe_color = SubResource("GradientTexture1D_0cso3")
shader_parameter/fringe_threshold = 0.10000000000582077 shader_parameter/fringe_threshold = 0.10000000000582077
shader_parameter/threshold = 0.361 shader_parameter/threshold = 0.361
[node name="Control" type="Control"] [node name="Map" type="Control"]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_nakos")
[node name="NinePatchRect6" type="NinePatchRect" parent="."] [node name="NinePatchRect6" type="NinePatchRect" parent="."]
modulate = Color(0.38170326, 0.38170323, 0.38170323, 1) modulate = Color(0.38170326, 0.38170323, 0.38170323, 1)
@@ -147,6 +149,7 @@ offset_top = 641.0
offset_right = 717.0 offset_right = 717.0
offset_bottom = 711.0 offset_bottom = 711.0
label = "Spire" label = "Spire"
id = null
locked_brief = "" locked_brief = ""
unlocked_brief = "" unlocked_brief = ""
@@ -167,7 +170,7 @@ offset_bottom = 188.0
mouse_filter = 2 mouse_filter = 2
[node name="Label" parent="Spire Pin/CanvasGroup/Banner" index="0"] [node name="Label" parent="Spire Pin/CanvasGroup/Banner" index="0"]
text = "" text = "Spire"
[node name="Nestor\'s Woods Pin" parent="." instance=ExtResource("2_paxxb")] [node name="Nestor\'s Woods Pin" parent="." instance=ExtResource("2_paxxb")]
layout_mode = 0 layout_mode = 0
@@ -177,6 +180,7 @@ offset_right = 214.0
offset_bottom = 452.0 offset_bottom = 452.0
primed = true primed = true
label = "Nestor's Woods" label = "Nestor's Woods"
id = 1
locked_brief = "" locked_brief = ""
unlocked_brief = "" unlocked_brief = ""
@@ -188,6 +192,7 @@ offset_right = -64.0
offset_bottom = 150.0 offset_bottom = 150.0
primed = true primed = true
label = "Iko Gorge" label = "Iko Gorge"
id = null
locked_brief = "Mysterious cliffs in the frozen north." locked_brief = "Mysterious cliffs in the frozen north."
unlocked_brief = "One of the few northernmost lands uninhabited by [giants]. The snowy creatures of the Iko region run rampant here. Some say they are protected by the [giant] goddess, [Nakari]." unlocked_brief = "One of the few northernmost lands uninhabited by [giants]. The snowy creatures of the Iko region run rampant here. Some say they are protected by the [giant] goddess, [Nakari]."
@@ -213,6 +218,7 @@ offset_top = 303.0
offset_right = 507.0 offset_right = 507.0
offset_bottom = 373.0 offset_bottom = 373.0
label = "" label = ""
id = null
locked_brief = "" locked_brief = ""
unlocked_brief = "" unlocked_brief = ""
@@ -223,6 +229,7 @@ offset_top = 585.0
offset_right = 349.0 offset_right = 349.0
offset_bottom = 655.0 offset_bottom = 655.0
label = "Echo Valley Monastery" label = "Echo Valley Monastery"
id = null
locked_brief = "" locked_brief = ""
unlocked_brief = "" unlocked_brief = ""
@@ -233,6 +240,7 @@ offset_top = 596.0
offset_right = -152.0 offset_right = -152.0
offset_bottom = 666.0 offset_bottom = 666.0
label = "Crystal Cave" label = "Crystal Cave"
id = null
locked_brief = "" locked_brief = ""
unlocked_brief = "" unlocked_brief = ""
@@ -507,6 +515,34 @@ patch_margin_right = 4
patch_margin_bottom = 4 patch_margin_bottom = 4
script = ExtResource("5_nakos") script = ExtResource("5_nakos")
[node name="Cloud31" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 377.0
offset_top = 967.0
offset_right = 938.0
offset_bottom = 1313.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud38" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 635.0
offset_top = 834.0
offset_right = 1196.0
offset_bottom = 1180.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud21" type="NinePatchRect" parent="Clouds"] [node name="Cloud21" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1) modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0 layout_mode = 0
@@ -549,6 +585,34 @@ patch_margin_right = 4
patch_margin_bottom = 4 patch_margin_bottom = 4
script = ExtResource("5_nakos") script = ExtResource("5_nakos")
[node name="Cloud39" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1286.0
offset_top = 720.0
offset_right = 1847.0
offset_bottom = 1066.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud37" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 846.0
offset_top = 447.0
offset_right = 1407.0
offset_bottom = 793.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud24" type="NinePatchRect" parent="Clouds"] [node name="Cloud24" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1) modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0 layout_mode = 0
@@ -563,6 +627,90 @@ patch_margin_right = 4
patch_margin_bottom = 4 patch_margin_bottom = 4
script = ExtResource("5_nakos") script = ExtResource("5_nakos")
[node name="Cloud28" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1339.0
offset_top = 879.0
offset_right = 1900.0
offset_bottom = 1225.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud32" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1589.0
offset_top = 760.0
offset_right = 2150.0
offset_bottom = 1106.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud29" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1443.0
offset_top = 596.0
offset_right = 2004.0
offset_bottom = 942.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud40" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1255.0
offset_top = 216.0
offset_right = 1816.0
offset_bottom = 562.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud30" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1497.0
offset_top = 308.0
offset_right = 2058.0
offset_bottom = 654.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud35" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1597.0
offset_top = 144.0
offset_right = 2158.0
offset_bottom = 490.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud25" type="NinePatchRect" parent="Clouds"] [node name="Cloud25" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1) modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0 layout_mode = 0
@@ -577,6 +725,20 @@ patch_margin_right = 4
patch_margin_bottom = 4 patch_margin_bottom = 4
script = ExtResource("5_nakos") script = ExtResource("5_nakos")
[node name="Cloud36" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1094.0
offset_top = -86.0
offset_right = 1655.0
offset_bottom = 260.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud26" type="NinePatchRect" parent="Clouds"] [node name="Cloud26" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1) modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0 layout_mode = 0
@@ -605,5 +767,33 @@ patch_margin_right = 4
patch_margin_bottom = 4 patch_margin_bottom = 4
script = ExtResource("5_nakos") script = ExtResource("5_nakos")
[node name="Cloud33" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1817.0
offset_top = -157.0
offset_right = 2378.0
offset_bottom = 189.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[node name="Cloud34" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1501.0
offset_top = -254.0
offset_right = 2062.0
offset_bottom = 92.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
script = ExtResource("5_nakos")
[editable path="Spire Pin"] [editable path="Spire Pin"]
[editable path="Iko Gorge Pin"] [editable path="Iko Gorge Pin"]

View File

@@ -1,5 +1,21 @@
class_name Enemy extends QuestSprite class_name Enemy extends QuestSprite
static var list : Dictionary[String, PackedScene] = {}
static func load_enemy_list() -> void:
var folder_path = "res://templates/enemies"
var dir = DirAccess.open(folder_path)
if dir:
dir.list_dir_begin()
var filename = dir.get_next()
while filename != "":
if not dir.current_is_dir():
var template : PackedScene = ResourceLoader.load(folder_path.path_join(filename))
if template:
list[template.name] = template
filename = dir.get_next()
dir.list_dir_end()
func attack(target : QuestSprite) -> void: func attack(target : QuestSprite) -> void:
print("Attack by %s to %s" % [name, target.name]) print("Attack by %s to %s" % [name, target.name])

View File

@@ -1,5 +1,6 @@
extends Node extends Node
var player_data : Adventurer = null var player_data : Adventurer = null
var player : Player = null var player : Player = null
var panel : GamePanel = null var panel : GamePanel = null
@@ -28,7 +29,10 @@ func _process(delta: float) -> void:
confirm_end_shift() confirm_end_shift()
if Input.is_action_just_pressed("test"): if Input.is_action_just_pressed("test"):
test_save() test_save()
func add_quest_progress_bar(quest : Quest) -> void: func add_quest_progress_bar(quest : Quest) -> void:
panel.add_quest_progress_bar(quest) panel.add_quest_progress_bar(quest)

View File

@@ -2,21 +2,23 @@ extends Control
var quest : Quest var quest : Quest
var selected_location : Quest.Locations = -1
var min_difficulty : int = 0
var max_difficulty : int = 5
@onready var map : QuestMap = $Map
func generate_quest() -> void: func generate_quest() -> void:
quest = Quest.new() quest = Quest.generate({
quest.name = "A Test Quest" "location":selected_location,
quest.location = Quest.Locations.NESTORS_WOODS "min_difficulty": min_difficulty,
quest.difficulty = 1 "max_difficulty": max_difficulty,
quest.length = 60 })
quest.rewards = {"exp":100,"gold":1}
func update_quest_window() -> void: func update_quest_window() -> void:
if quest: if quest:
%NameField.text = quest.name %NameField.text = quest.name
%DifficultyField.text = quest.difficulty_name() %DifficultyField.text = quest.difficulty_name()
%LocationField.text = quest.location_name() %LocationField.text = quest.get_location_name()
#for reward in quest.rewards.: #for reward in quest.rewards.:
func reset() -> void: func reset() -> void:
@@ -45,3 +47,15 @@ func _on_post_back_button_pressed() -> void:
func _on_generate_back_button_pressed() -> void: func _on_generate_back_button_pressed() -> void:
hide() hide()
reset() reset()
func _on_location_options_pressed() -> void:
map.visible = true
func _on_map_location_selected(location: Quest.Locations) -> void:
selected_location = location
%LocationOptions.text = Quest.location_name(location)
map.visible = false
#TODO: Make Location show up correctly

12
scripts/map.gd Normal file
View File

@@ -0,0 +1,12 @@
class_name QuestMap extends Control
signal location_selected(location : Quest.Locations)
func _ready() -> void:
for child in get_children():
if child is MapPoint:
child.selected.connect(_on_location_pressed)
func _on_location_pressed(location : Quest.Locations):
location_selected.emit(location)

1
scripts/map.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://c2jtg58mno7fj

View File

@@ -1,5 +1,5 @@
@tool @tool
extends TextureButton class_name MapPoint extends TextureButton
@onready var panel : PanelContainer = %BriefPanel @onready var panel : PanelContainer = %BriefPanel
@@ -20,9 +20,12 @@ var thickness : float = 5
var max_circle_size : float = 200 var max_circle_size : float = 200
@export var label : String = "" @export var label : String = ""
@export var id : Quest.Locations
@export var locked_brief : String = "" @export var locked_brief : String = ""
@export var unlocked_brief : String = "" @export var unlocked_brief : String = ""
signal selected(location : Quest.Locations)
func _ready() -> void: func _ready() -> void:
#TODO: Add a nine-patch and resize the banner based on the label contents #TODO: Add a nine-patch and resize the banner based on the label contents
%Label.text = label %Label.text = label
@@ -61,6 +64,8 @@ func _on_mouse_entered() -> void:
func _buttonn_pressed() -> void: func _buttonn_pressed() -> void:
if primed: if primed:
unlock() unlock()
elif !locked:
selected.emit(id)
func _on_mouse_exited() -> void: func _on_mouse_exited() -> void:
if panel_shown: if panel_shown:

View File

@@ -16,7 +16,7 @@ func setup(qst : Quest) -> void:
func update() -> void: func update() -> void:
nameLabel.text = quest.name nameLabel.text = quest.name
difficultyLabel.text = quest.difficulty_name() difficultyLabel.text = quest.difficulty_name()
locationLabel.text = quest.location_name() locationLabel.text = quest.get_location_name()
#TODO: Show the current status of the quest #TODO: Show the current status of the quest
func close() -> void: func close() -> void:

View File

@@ -0,0 +1,263 @@
[gd_scene load_steps=19 format=3 uid="uid://bu5voitpttp7p"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_2ri6t"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_87jvf"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_8hyc4"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_vo4pp"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_u1ndo"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_87jvf"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_87jvf")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_vo4pp")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Alley Slime" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_2ri6t")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
visible = false
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_8hyc4")
[node name="Sprite" type="Sprite2D" parent="."]
visible = false
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_u1ndo")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_87jvf")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Alley
Slime"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,263 @@
[gd_scene load_steps=19 format=3 uid="uid://xveoe42s3cpy"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_30p0h"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_6opmj"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_mo0fh"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_bwjs8"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_4ymsi"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_6opmj"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_6opmj")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_bwjs8")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Amethyst Deceiver" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_30p0h")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
visible = false
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_mo0fh")
[node name="Sprite" type="Sprite2D" parent="."]
visible = false
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_4ymsi")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_6opmj")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Amethyst
Deceiver"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,263 @@
[gd_scene load_steps=19 format=3 uid="uid://cqusuc0ams6eh"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_up48k"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_rxxf6"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_2busj"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_gkykv"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_7b0ly"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_rxxf6"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_rxxf6")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_gkykv")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Animated Flower" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_up48k")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
visible = false
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_2busj")
[node name="Sprite" type="Sprite2D" parent="."]
visible = false
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_7b0ly")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_rxxf6")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Animated
Flower"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,261 @@
[gd_scene load_steps=19 format=3 uid="uid://r3c0xgvul2jx"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_d7xna"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_1davx"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_4s5de"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_yio0x"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_502cf"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_1davx"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_1davx")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_yio0x")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Animated Staff" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_d7xna")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_4s5de")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_502cf")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_1davx")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Animated
Staff"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,260 @@
[gd_scene load_steps=19 format=3 uid="uid://d166wy4tvfwe3"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_k0wc2"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_ionm2"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_dj700"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_ttqbh"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_nil6w"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_vqxas"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_ionm2")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_ttqbh")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Bluecap" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_k0wc2")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_dj700")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_nil6w")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_vqxas")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Bluecap"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,260 @@
[gd_scene load_steps=19 format=3 uid="uid://c440svdousb6b"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_xmqw2"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_1yx6e"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_t6cpo"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_c2tce"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_1y115"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_1yx6e"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_1yx6e")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_c2tce")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Crystal Crab" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_xmqw2")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_t6cpo")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_1y115")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_1yx6e")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Crystal Crab"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,259 @@
[gd_scene load_steps=19 format=3 uid="uid://br433u6yix3r7"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_narfe"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_d81qa"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_sqc2i"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_kf7hm"]
[ext_resource type="Texture2D" uid="uid://op4td4qm3tx5" path="res://external/boar.png" id="5_8p183"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_fmtu6"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_d81qa")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_kf7hm")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(),
"transitions": PackedFloat32Array(),
"update": 1,
"values": []
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(),
"transitions": PackedFloat32Array(),
"update": 1,
"values": []
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(),
"transitions": PackedFloat32Array(),
"update": 1,
"values": []
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Feral Pig" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_narfe")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(-3.9999998, -42)
scale = Vector2(1.7, 1)
texture = ExtResource("3_sqc2i")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_8p183")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
visible = false
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_fmtu6")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Feral Pig"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,260 @@
[gd_scene load_steps=19 format=3 uid="uid://t8il7knb04d4"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_qtf88"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_xmucg"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_ukc8a"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_bi2hu"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_x4ac5"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_xmucg"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_xmucg")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_bi2hu")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Giant Firefly" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_qtf88")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_ukc8a")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_x4ac5")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_xmucg")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Giant Firefly"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -17,54 +17,6 @@ shader_parameter/flash = false
shader_parameter/flash_strength = 0.4 shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0) shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_rfgh2"] [sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001 length = 0.001
tracks/0/type = "value" tracks/0/type = "value"
@@ -104,10 +56,9 @@ tracks/2/keys = {
"values": [Color(1, 1, 1, 0)] "values": [Color(1, 1, 1, 0)]
} }
[sub_resource type="Animation" id="Animation_t5s0y"] [sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "running" resource_name = "attack"
length = 0.46667004 length = 0.80000335
loop_mode = 1
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
@@ -115,10 +66,27 @@ tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004), "times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1, "update": 1,
"values": [2, 3, 4, 5, 6, 7, 1] "values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
} }
[sub_resource type="Animation" id="Animation_in6p1"] [sub_resource type="Animation" id="Animation_in6p1"]
@@ -178,6 +146,38 @@ tracks/3/keys = {
}] }]
} }
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = { _data = {
&"RESET": SubResource("Animation_rfgh2"), &"RESET": SubResource("Animation_rfgh2"),

View File

@@ -0,0 +1,260 @@
[gd_scene load_steps=19 format=3 uid="uid://cloxbd42ovk36"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_hh07h"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_812mx"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_qddks"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_b7gat"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_3k37n"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_812mx"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_812mx")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_b7gat")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Mugger" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_hh07h")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_qddks")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_3k37n")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_812mx")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Mugger"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,261 @@
[gd_scene load_steps=19 format=3 uid="uid://otxmn0tg06wk"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_y4ik6"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_k3tw5"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_mp3h0"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_33i5w"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_xb3gv"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_k3tw5"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_k3tw5")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_33i5w")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Rock Lizard" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_y4ik6")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_mp3h0")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_xb3gv")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_k3tw5")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Rock
Lizard"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,261 @@
[gd_scene load_steps=19 format=3 uid="uid://ca8iaja6scjir"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_6adff"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_dq8bk"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_r0mhx"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_pwiye"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_tpfws"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_dq8bk"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_dq8bk")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_pwiye")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Rogue Bot" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_6adff")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_r0mhx")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_tpfws")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_dq8bk")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Rogue
Bot"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,261 @@
[gd_scene load_steps=19 format=3 uid="uid://ca016a7sc0wsi"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_hyp08"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_8gw2y"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_u4o7h"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_r4aiw"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_330w5"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_8gw2y"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_8gw2y")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_r4aiw")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Shadow Self" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_hyp08")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_u4o7h")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_330w5")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_8gw2y")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Shadow
Self"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -0,0 +1,261 @@
[gd_scene load_steps=19 format=3 uid="uid://d13ukmpyaa7r1"]
[ext_resource type="Script" uid="uid://fxixa11vqdrn" path="res://scripts/enemy.gd" id="1_d1eqt"]
[ext_resource type="Script" uid="uid://727tgvtmq4nb" path="res://data/statblock.gd" id="2_oxf3b"]
[ext_resource type="Texture2D" uid="uid://cf31h0xgcc2yi" path="res://graphics/questview/goo shadow.png" id="3_iy7yx"]
[ext_resource type="Shader" uid="uid://ctod7r3yre02d" path="res://shaders/nonvariant_sprite.gdshader" id="4_vchky"]
[ext_resource type="Texture2D" uid="uid://bmkpn7sex6buo" path="res://graphics/questview/goo-sheet.png" id="5_ln8c0"]
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="6_oxf3b"]
[sub_resource type="Resource" id="Resource_bfuvr"]
script = ExtResource("2_oxf3b")
metadata/_custom_type_script = "uid://727tgvtmq4nb"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h6sl2"]
resource_local_to_scene = true
shader = ExtResource("4_vchky")
shader_parameter/flash = false
shader_parameter/flash_strength = 0.4
shader_parameter/highlight = Color(1, 1, 1, 0)
[sub_resource type="Animation" id="Animation_rfgh2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [9]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_q2yeo"]
resource_name = "attack"
length = 0.80000335
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.16666667, 0.33333334, 0.36666667, 0.43333334, 0.49999997),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [8, 9, 10, 11, 12, 13]
}
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [],
"method": &"trigger_hit"
}, {
"args": [true, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_in6p1"]
resource_name = "hurt"
length = 0.23333667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.099999994, 0.13333333, 0.16666667, 0.2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 1,
"values": [14, 15, 16, 17, 18]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.16666667, 0.23333335),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, -48), Vector2(0, -60), Vector2(0, -48), Vector2(0, -48)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite:material:shader_parameter/highlight")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.16666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "method"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath(".")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.23333333),
"transitions": PackedFloat32Array(1, 1),
"values": [{
"args": [0.2],
"method": &"knockback"
}, {
"args": [false, "idle"],
"method": &"complete_action"
}]
}
[sub_resource type="Animation" id="Animation_fnqwt"]
resource_name = "idle"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_t5s0y"]
resource_name = "running"
length = 0.46667004
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.06666667, 0.13333333, 0.20000002, 0.26666668, 0.33333334, 0.40000004),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2, 3, 4, 5, 6, 7, 1]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_45clm"]
_data = {
&"RESET": SubResource("Animation_rfgh2"),
&"attack": SubResource("Animation_q2yeo"),
&"hurt": SubResource("Animation_in6p1"),
&"idle": SubResource("Animation_fnqwt"),
&"running": SubResource("Animation_t5s0y")
}
[sub_resource type="Gradient" id="Gradient_nqdtq"]
offsets = PackedFloat32Array(0)
colors = PackedColorArray(0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_fehp8"]
gradient = SubResource("Gradient_nqdtq")
width = 1
[sub_resource type="Gradient" id="Gradient_yy18h"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bfuvr"]
gradient = SubResource("Gradient_yy18h")
width = 1
[node name="Silent Spectre" type="Control"]
layout_mode = 3
anchors_preset = 0
script = ExtResource("1_d1eqt")
life = 10
max_life = 10
stats = SubResource("Resource_bfuvr")
[node name="Shadow" type="Sprite2D" parent="."]
modulate = Color(0, 0, 0, 0.57254905)
position = Vector2(0, -48)
texture = ExtResource("3_iy7yx")
[node name="Sprite" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_h6sl2")
position = Vector2(0, -48)
texture = ExtResource("5_ln8c0")
hframes = 8
vframes = 3
frame = 9
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_45clm")
}
[node name="LifeBar" type="TextureProgressBar" parent="."]
layout_mode = 0
offset_left = -37.0
offset_top = 16.0
offset_right = 38.0
offset_bottom = 26.0
nine_patch_stretch = true
texture_under = SubResource("GradientTexture1D_fehp8")
texture_progress = SubResource("GradientTexture1D_bfuvr")
tint_over = Color(1, 0, 0, 1)
tint_progress = Color(1, 0, 0, 1)
[node name="BannerOffset" type="Node2D" parent="."]
position = Vector2(0, -57)
[node name="TestSprite" type="Sprite2D" parent="."]
self_modulate = Color(0, 0, 0, 1)
position = Vector2(0, -53)
texture = ExtResource("6_oxf3b")
[node name="Label" type="Label" parent="TestSprite"]
offset_left = -39.0
offset_top = -27.0
offset_right = 37.0
offset_bottom = 22.0
text = "Silent
Spectre"
horizontal_alignment = 1
metadata/_edit_lock_ = true

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=16 format=3 uid="uid://c7jagw4y7w42l"] [gd_scene load_steps=17 format=3 uid="uid://c7jagw4y7w42l"]
[ext_resource type="Texture2D" uid="uid://c0e0iw8osv0qh" path="res://graphics/top-icon-members.png" id="1_krxmy"] [ext_resource type="Texture2D" uid="uid://c0e0iw8osv0qh" path="res://graphics/top-icon-members.png" id="1_krxmy"]
[ext_resource type="Script" uid="uid://wyv0gt0ww6fp" path="res://scripts/game_menu.gd" id="1_o3fau"] [ext_resource type="Script" uid="uid://wyv0gt0ww6fp" path="res://scripts/game_menu.gd" id="1_o3fau"]
@@ -15,6 +15,7 @@
[ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="10_3nqsh"] [ext_resource type="Texture2D" uid="uid://bldpiytpdrge6" path="res://graphics/icon.svg" id="10_3nqsh"]
[ext_resource type="Texture2D" uid="uid://cnrqig3gojcls" path="res://graphics/options-mopt.png" id="10_acyux"] [ext_resource type="Texture2D" uid="uid://cnrqig3gojcls" path="res://graphics/options-mopt.png" id="10_acyux"]
[ext_resource type="Texture2D" uid="uid://dupdvrthv3edd" path="res://graphics/options-mopt-hover.png" id="11_xu0sb"] [ext_resource type="Texture2D" uid="uid://dupdvrthv3edd" path="res://graphics/options-mopt-hover.png" id="11_xu0sb"]
[ext_resource type="PackedScene" uid="uid://dlmodaf4nojin" path="res://scenes/map.tscn" id="16_s68b7"]
[node name="GameMenu" type="Control"] [node name="GameMenu" type="Control"]
layout_mode = 3 layout_mode = 3
@@ -228,7 +229,7 @@ size_flags_vertical = 3
layout_mode = 2 layout_mode = 2
text = "Location" text = "Location"
[node name="LocationOptions" type="OptionButton" parent="GenerateQuestDialog/Window/GenerateQuest"] [node name="LocationOptions" type="Button" parent="GenerateQuestDialog/Window/GenerateQuest"]
unique_name_in_owner = true unique_name_in_owner = true
custom_minimum_size = Vector2(480, 35) custom_minimum_size = Vector2(480, 35)
layout_mode = 2 layout_mode = 2
@@ -442,11 +443,17 @@ custom_minimum_size = Vector2(248, 60)
layout_mode = 2 layout_mode = 2
text = "BACK" text = "BACK"
[node name="Map" parent="GenerateQuestDialog" instance=ExtResource("16_s68b7")]
visible = false
layout_mode = 1
[connection signal="pressed" from="Menu/GuildButton" to="." method="_on_guild_button_pressed"] [connection signal="pressed" from="Menu/GuildButton" to="." method="_on_guild_button_pressed"]
[connection signal="pressed" from="Menu/MembersButton" to="." method="_on_members_button_pressed"] [connection signal="pressed" from="Menu/MembersButton" to="." method="_on_members_button_pressed"]
[connection signal="pressed" from="Menu/QuestsButton" to="." method="_on_quests_button_pressed"] [connection signal="pressed" from="Menu/QuestsButton" to="." method="_on_quests_button_pressed"]
[connection signal="pressed" from="Quests/Panel/VBoxContainer/Button" to="." method="_on_quest_generate_button_pressed"] [connection signal="pressed" from="Quests/Panel/VBoxContainer/Button" to="." method="_on_quest_generate_button_pressed"]
[connection signal="pressed" from="GenerateQuestDialog/Window/GenerateQuest/LocationOptions" to="GenerateQuestDialog" method="_on_location_options_pressed"]
[connection signal="pressed" from="GenerateQuestDialog/Window/GenerateQuest/HBoxContainer/GenerateButton" to="GenerateQuestDialog" method="_on_generate_button_pressed"] [connection signal="pressed" from="GenerateQuestDialog/Window/GenerateQuest/HBoxContainer/GenerateButton" to="GenerateQuestDialog" method="_on_generate_button_pressed"]
[connection signal="pressed" from="GenerateQuestDialog/Window/GenerateQuest/HBoxContainer/GenerateBackButton" to="GenerateQuestDialog" method="_on_generate_back_button_pressed"] [connection signal="pressed" from="GenerateQuestDialog/Window/GenerateQuest/HBoxContainer/GenerateBackButton" to="GenerateQuestDialog" method="_on_generate_back_button_pressed"]
[connection signal="pressed" from="GenerateQuestDialog/Window/PostQuest/HBoxContainer/PostQuestButton" to="GenerateQuestDialog" method="_on_post_button_pressed"] [connection signal="pressed" from="GenerateQuestDialog/Window/PostQuest/HBoxContainer/PostQuestButton" to="GenerateQuestDialog" method="_on_post_button_pressed"]
[connection signal="pressed" from="GenerateQuestDialog/Window/PostQuest/HBoxContainer/ApprovalBackButton" to="GenerateQuestDialog" method="_on_post_back_button_pressed"] [connection signal="pressed" from="GenerateQuestDialog/Window/PostQuest/HBoxContainer/ApprovalBackButton" to="GenerateQuestDialog" method="_on_post_back_button_pressed"]
[connection signal="location_selected" from="GenerateQuestDialog/Map" to="GenerateQuestDialog" method="_on_map_location_selected"]