Compare commits

...

4 Commits

90 changed files with 4732 additions and 423 deletions

View File

@@ -6,6 +6,9 @@ enum Slots{
ACCESSORY ACCESSORY
} }
var last_id : int = 1
var id : int
@export var image : Texture2D @export var image : Texture2D
@export var name : StringName @export var name : StringName
@export var brief : String @export var brief : String
@@ -15,6 +18,9 @@ enum Slots{
@export var per : bool @export var per : bool
@export var grade : String = "F" @export var grade : String = "F"
func _init() -> void:
last_id += 1
id = last_id
func item_type_name() -> String: func item_type_name() -> String:
return "Item" return "Item"

View File

@@ -2,7 +2,7 @@ class_name Quest extends Resource
#The list of available quests #The list of available quests
static var list : Array[Quest] static var list : Array[Quest]
static var last_id : int = 1
enum Status{ enum Status{
OPEN, OPEN,
@@ -14,13 +14,11 @@ enum Status{
} }
enum Locations{ enum Locations{
VOID,
NESTORS_WOODS NESTORS_WOODS
} }
class Event: class Event:
var enemy_types: Dictionary[String, PackedScene] = {
"goo": preload("res://templates/enemies/goo.tscn")
}
enum Type{ enum Type{
WAIT, WAIT,
COMBAT, COMBAT,
@@ -32,6 +30,7 @@ class Event:
VICTORY, VICTORY,
DEFEAT DEFEAT
} }
var hidden : bool = false var hidden : bool = false
var type : Type = Type.WAIT var type : Type = Type.WAIT
var enemies : Array[String] = [] var enemies : Array[String] = []
@@ -51,7 +50,7 @@ class Event:
func setup() -> void: func setup() -> void:
pass pass
func save_dict() -> Dictionary: func save() -> Dictionary:
var d : Dictionary = {} var d : Dictionary = {}
d.hidden = hidden d.hidden = hidden
d.type = type d.type = type
@@ -70,7 +69,7 @@ class Event:
combat_state = CombatState.FIGHTING combat_state = CombatState.FIGHTING
var enemy_list = [] var enemy_list = []
for enemy_name in enemies: for enemy_name in enemies:
enemy_list.append(enemy_types[enemy_name].instantiate()) enemy_list.append(Enemy.list[enemy_name].instantiate())
quest.questview.set_questor_animation("idle") quest.questview.set_questor_animation("idle")
for enemy in enemy_list: for enemy in enemy_list:
enemy.flip_h() enemy.flip_h()
@@ -236,6 +235,7 @@ class Event:
complete = true complete = true
completed.emit() completed.emit()
var id : int
var base_name : String = "" var base_name : String = ""
var name : String = "A Basic Quest" var name : String = "A Basic Quest"
var desc : String = "The default quest, with no special anything." var desc : String = "The default quest, with no special anything."
@@ -259,6 +259,8 @@ var questor : Adventurer = null
signal status_changed(status : Status) signal status_changed(status : Status)
func _init() -> void: func _init() -> void:
last_id += 1
id = last_id
pass pass
func initiate(member : Adventurer) -> void: func initiate(member : Adventurer) -> void:
@@ -295,11 +297,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"
@@ -326,10 +332,20 @@ 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_dict() -> Dictionary: func save() -> Dictionary:
var d : Dictionary = {} var d : Dictionary = {}
d.id = id
d.name = name d.name = name
d.base_name = base_name d.base_name = base_name
d.desc = desc d.desc = desc
@@ -349,6 +365,6 @@ func save_dict() -> Dictionary:
var lst : Array = [] var lst : Array = []
for evt in events: for evt in events:
lst.append(evt.save_dict()) lst.append(evt.save())
d.events = lst d.events = lst
return d return d

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.

Binary file not shown.

BIN
external/animated-flower.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://80esel4mewm6" uid="uid://bl05n76gr2dae"
path="res://.godot/imported/3.png-b550413aa080c1c70e88acfeb4d322e4.ctex" path="res://.godot/imported/animated-flower.png-97452da660b05abe194469bd94b63006.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://external/tc/3.png" source_file="res://external/animated-flower.png"
dest_files=["res://.godot/imported/3.png-b550413aa080c1c70e88acfeb4d322e4.ctex"] dest_files=["res://.godot/imported/animated-flower.png-97452da660b05abe194469bd94b63006.ctex"]
[params] [params]

BIN
external/banner.clip vendored Normal file

Binary file not shown.

BIN
external/boar.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://urxa6h4cf4of" uid="uid://op4td4qm3tx5"
path="res://.godot/imported/2.png-2701862056f74824807b22e68ca27909.ctex" path="res://.godot/imported/boar.png-0161cfc5f286f436bdc0954a6e815cd6.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://external/tc/2.png" source_file="res://external/boar.png"
dest_files=["res://.godot/imported/2.png-2701862056f74824807b22e68ca27909.ctex"] dest_files=["res://.godot/imported/boar.png-0161cfc5f286f436bdc0954a6e815cd6.ctex"]
[params] [params]

BIN
external/forest.clip vendored Normal file

Binary file not shown.

BIN
external/glowing-line.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

View File

@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dxvwm21nupadm" uid="uid://dck0g2dl7vbcr"
path="res://.godot/imported/1.png-b132cb4bd58ce4915bfe3a2aad13b672.ctex" path="res://.godot/imported/glowing-line.png-71ab75e25179832dabf598a26bfa404d.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://external/tc/1.png" source_file="res://external/glowing-line.png"
dest_files=["res://.godot/imported/1.png-b132cb4bd58ce4915bfe3a2aad13b672.ctex"] dest_files=["res://.godot/imported/glowing-line.png-71ab75e25179832dabf598a26bfa404d.ctex"]
[params] [params]

BIN
external/map-region-ninepatch.aseprite vendored Normal file

Binary file not shown.

BIN
external/map-region-ninepatch.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

View File

@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bngkacv3iag6e" uid="uid://dy3o1xtqg03at"
path="res://.godot/imported/10.png-d7bac63bd3ed15459cfc452ed238de0d.ctex" path="res://.godot/imported/map-region-ninepatch.png-0bd1376157ab4c11204e39e912041887.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://external/tc/10.png" source_file="res://external/map-region-ninepatch.png"
dest_files=["res://.godot/imported/10.png-d7bac63bd3ed15459cfc452ed238de0d.ctex"] dest_files=["res://.godot/imported/map-region-ninepatch.png-0bd1376157ab4c11204e39e912041887.ctex"]
[params] [params]

BIN
external/tc/1.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

BIN
external/tc/10.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

BIN
external/tc/2.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

BIN
external/tc/3.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

BIN
external/tc/4.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://g1pb1a8r4asn"
path="res://.godot/imported/4.png-e4764e4f9d3e0c20595afa27b361faa1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/tc/4.png"
dest_files=["res://.godot/imported/4.png-e4764e4f9d3e0c20595afa27b361faa1.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/tc/5.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dh66mvfitp17t"
path="res://.godot/imported/5.png-cc15f7f59c27faf4c8e7b9d2ac49aad5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/tc/5.png"
dest_files=["res://.godot/imported/5.png-cc15f7f59c27faf4c8e7b9d2ac49aad5.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/tc/6.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cjfxnltsbwfmn"
path="res://.godot/imported/6.png-b4209f047bfa66b90b5bd6b95afeda56.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/tc/6.png"
dest_files=["res://.godot/imported/6.png-b4209f047bfa66b90b5bd6b95afeda56.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/tc/7.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

View File

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://djhk6gp250uew"
path="res://.godot/imported/7.png-bf37caa12efccbf460eb9e7a5d9d490c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/tc/7.png"
dest_files=["res://.godot/imported/7.png-bf37caa12efccbf460eb9e7a5d9d490c.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/tc/8.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

View File

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ym644n7w01ag"
path="res://.godot/imported/8.png-a2d258d90ed799301fd544bf2cabf011.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/tc/8.png"
dest_files=["res://.godot/imported/8.png-a2d258d90ed799301fd544bf2cabf011.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/tc/9.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bpaavgmkmgtbh"
path="res://.godot/imported/9.png-8e14eaf91108f19c019426d203539c8f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://external/tc/9.png"
dest_files=["res://.godot/imported/9.png-8e14eaf91108f19c019426d203539c8f.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

View File

@@ -120,5 +120,4 @@ behavior_tree/behavior_tree_default_dir="res://demo/ai/trees"
[rendering] [rendering]
textures/canvas_textures/default_texture_filter=0 textures/canvas_textures/default_texture_filter=0
renderer/rendering_method="gl_compatibility" viewport/hdr_2d=true
renderer/rendering_method.mobile="gl_compatibility"

View File

@@ -4,7 +4,7 @@
[ext_resource type="Texture2D" uid="uid://c5yxq22ao1oyf" path="res://graphics/doorlight.png" id="2_ivnss"] [ext_resource type="Texture2D" uid="uid://c5yxq22ao1oyf" path="res://graphics/doorlight.png" id="2_ivnss"]
[ext_resource type="Script" uid="uid://ccorfvcfa84gf" path="res://scripts/guildhall.gd" id="3_sxwyg"] [ext_resource type="Script" uid="uid://ccorfvcfa84gf" path="res://scripts/guildhall.gd" id="3_sxwyg"]
[ext_resource type="Shader" uid="uid://hr8vdp56p4yo" path="res://shaders/void.tres" id="4_ej4lk"] [ext_resource type="Shader" uid="uid://hr8vdp56p4yo" path="res://shaders/void.tres" id="4_ej4lk"]
[ext_resource type="PackedScene" uid="uid://c8ofw6na082gv" path="res://templates/main_panel.tscn" id="5_blfjh"] [ext_resource type="PackedScene" uid="uid://c8ofw6na082gv" path="res://templates/game_panel.tscn" id="5_blfjh"]
[ext_resource type="Texture2D" uid="uid://bbh444vapab3y" path="res://graphics/voidcircle.png" id="5_dpsgu"] [ext_resource type="Texture2D" uid="uid://bbh444vapab3y" path="res://graphics/voidcircle.png" id="5_dpsgu"]
[ext_resource type="PackedScene" uid="uid://c7jagw4y7w42l" path="res://templates/top_menu.tscn" id="6_2j6ej"] [ext_resource type="PackedScene" uid="uid://c7jagw4y7w42l" path="res://templates/top_menu.tscn" id="6_2j6ej"]
[ext_resource type="Shader" uid="uid://cenbje61a2wi6" path="res://shaders/void_composite.gdshader" id="6_l1y25"] [ext_resource type="Shader" uid="uid://cenbje61a2wi6" path="res://shaders/void_composite.gdshader" id="6_l1y25"]

View File

@@ -1,8 +1,11 @@
[gd_scene load_steps=10 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="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"]
[sub_resource type="Gradient" id="Gradient_be0no"] [sub_resource type="Gradient" id="Gradient_be0no"]
offsets = PackedFloat32Array(0, 0.5344828, 1) offsets = PackedFloat32Array(0, 0.5344828, 1)
@@ -34,15 +37,103 @@ 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="."]
modulate = Color(0.38170326, 0.38170323, 0.38170323, 1)
layout_mode = 0
offset_left = -457.0
offset_top = -257.0
offset_right = 2436.0
offset_bottom = 1370.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="NinePatchRect7" type="NinePatchRect" parent="."]
modulate = Color(0.7539839, 0.75398386, 0.75398386, 1)
layout_mode = 0
offset_left = -320.0
offset_top = 70.0
offset_right = 1304.0
offset_bottom = 1114.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="NinePatchRect" type="NinePatchRect" parent="."]
layout_mode = 0
offset_left = 57.0
offset_top = 235.0
offset_right = 618.0
offset_bottom = 581.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="NinePatchRect2" type="NinePatchRect" parent="."]
layout_mode = 0
offset_left = -350.0
offset_top = 20.0
offset_right = 147.0
offset_bottom = 219.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="NinePatchRect3" type="NinePatchRect" parent="."]
layout_mode = 0
offset_left = 405.0
offset_top = 272.0
offset_right = 541.0
offset_bottom = 407.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="NinePatchRect4" type="NinePatchRect" parent="."]
layout_mode = 0
offset_left = -274.0
offset_top = 534.0
offset_right = -89.0
offset_bottom = 733.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="NinePatchRect5" type="NinePatchRect" parent="."]
layout_mode = 0
offset_left = 651.0
offset_top = 645.0
offset_right = 715.0
offset_bottom = 709.0
texture = ExtResource("1_2lpho")
patch_margin_left = 4
patch_margin_top = 4
patch_margin_right = 4
patch_margin_bottom = 4
[node name="TextureRect" type="TextureRect" parent="."] [node name="TextureRect" type="TextureRect" parent="."]
visible = false
layout_mode = 0 layout_mode = 0
offset_left = -453.00003 offset_left = -453.00003
offset_top = -256.0 offset_top = -256.0
@@ -51,36 +142,37 @@ offset_bottom = 824.0
scale = Vector2(1.5, 1.5) scale = Vector2(1.5, 1.5)
texture = ExtResource("1_2klcf") texture = ExtResource("1_2klcf")
[node name="Map Pin2" parent="." instance=ExtResource("2_paxxb")] [node name="Spire Pin" parent="." instance=ExtResource("2_paxxb")]
layout_mode = 0 layout_mode = 0
offset_left = 389.0 offset_left = 647.0
offset_top = 554.0 offset_top = 641.0
offset_right = 459.0 offset_right = 717.0
offset_bottom = 624.0 offset_bottom = 711.0
label = "" label = "Spire"
id = null
locked_brief = "" locked_brief = ""
unlocked_brief = "" unlocked_brief = ""
[node name="Brief" parent="Map Pin2/BriefPanel" index="0"] [node name="Brief" parent="Spire Pin/BriefPanel" index="0"]
text = "" text = ""
[node name="CanvasGroup" parent="Map Pin2" index="1"] [node name="CanvasGroup" parent="Spire Pin" index="1"]
material = SubResource("ShaderMaterial_gldc4") material = SubResource("ShaderMaterial_gldc4")
[node name="Pin" parent="Map Pin2/CanvasGroup" index="0"] [node name="Pin" parent="Spire Pin/CanvasGroup" index="0"]
mouse_filter = 2 mouse_filter = 2
[node name="Banner" parent="Map Pin2/CanvasGroup" index="1"] [node name="Banner" parent="Spire Pin/CanvasGroup" index="1"]
offset_left = 0.0 offset_left = 0.0
offset_top = 0.0 offset_top = 0.0
offset_right = 188.0 offset_right = 188.0
offset_bottom = 188.0 offset_bottom = 188.0
mouse_filter = 2 mouse_filter = 2
[node name="Label" parent="Map Pin2/CanvasGroup/Banner" index="0"] [node name="Label" parent="Spire Pin/CanvasGroup/Banner" index="0"]
text = "" text = "Spire"
[node name="Map Pin3" parent="." instance=ExtResource("2_paxxb")] [node name="Nestor\'s Woods Pin" parent="." instance=ExtResource("2_paxxb")]
layout_mode = 0 layout_mode = 0
offset_left = 144.0 offset_left = 144.0
offset_top = 382.0 offset_top = 382.0
@@ -88,34 +180,620 @@ 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 = ""
[node name="Map Pin4" parent="." instance=ExtResource("2_paxxb")] [node name="Iko Gorge Pin" parent="." instance=ExtResource("2_paxxb")]
layout_mode = 0 layout_mode = 0
offset_left = 229.0 offset_left = -134.0
offset_top = 89.0 offset_top = 80.0
offset_right = 299.0 offset_right = -64.0
offset_bottom = 159.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]."
[node name="BriefPanel" parent="Map Pin4" index="0"] [node name="BriefPanel" parent="Iko Gorge Pin" index="0"]
offset_left = 56.0 offset_left = 56.0
offset_top = 53.0 offset_top = 53.0
offset_right = 356.0 offset_right = 356.0
offset_bottom = 153.0 offset_bottom = 153.0
[node name="Brief" parent="Map Pin4/BriefPanel" index="0"] [node name="Brief" parent="Iko Gorge Pin/BriefPanel" index="0"]
text = "Mysterious cliffs in the frozen north." text = "Mysterious cliffs in the frozen north."
[node name="CanvasGroup" parent="Map Pin4" index="1"] [node name="CanvasGroup" parent="Iko Gorge Pin" index="1"]
material = SubResource("ShaderMaterial_2klcf") material = SubResource("ShaderMaterial_2klcf")
[node name="Label" parent="Map Pin4/CanvasGroup/Banner" index="0"] [node name="Label" parent="Iko Gorge Pin/CanvasGroup/Banner" index="0"]
text = "Iko Gorge" text = "Iko Gorge"
[editable path="Map Pin2"] [node name="Alikia Glade" parent="." instance=ExtResource("2_paxxb")]
[editable path="Map Pin4"] layout_mode = 0
offset_left = 437.0
offset_top = 303.0
offset_right = 507.0
offset_bottom = 373.0
label = ""
id = null
locked_brief = ""
unlocked_brief = ""
[node name="Echo Valley Monastery Pin" parent="." instance=ExtResource("2_paxxb")]
layout_mode = 0
offset_left = 279.0
offset_top = 585.0
offset_right = 349.0
offset_bottom = 655.0
label = "Echo Valley Monastery"
id = null
locked_brief = ""
unlocked_brief = ""
[node name="Crystal Cave Pin" parent="." instance=ExtResource("2_paxxb")]
layout_mode = 0
offset_left = -222.0
offset_top = 596.0
offset_right = -152.0
offset_bottom = 666.0
label = "Crystal Cave"
id = null
locked_brief = ""
unlocked_brief = ""
[node name="Clouds" type="Control" parent="."]
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="Cloud" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -602.0
offset_top = -123.0
offset_right = -41.0
offset_bottom = 223.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="Cloud2" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -511.0
offset_top = 32.0
offset_right = 50.0
offset_bottom = 378.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="Cloud3" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -160.0
offset_top = -104.0
offset_right = 401.0
offset_bottom = 242.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="Cloud4" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 295.0
offset_top = 100.0
offset_right = 856.0
offset_bottom = 446.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="Cloud5" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 468.0
offset_top = -120.0
offset_right = 1029.0
offset_bottom = 226.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="Cloud6" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 116.0
offset_top = -186.0
offset_right = 677.0
offset_bottom = 160.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="Cloud7" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -727.0
offset_top = 348.0
offset_right = -166.0
offset_bottom = 694.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="Cloud8" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -526.0
offset_top = 481.0
offset_right = 35.0
offset_bottom = 827.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="Cloud9" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -810.0
offset_top = 773.0
offset_right = -249.0
offset_bottom = 1119.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="Cloud10" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -911.0
offset_top = 548.0
offset_right = -350.0
offset_bottom = 894.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="Cloud11" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -293.0
offset_top = 690.0
offset_right = 268.0
offset_bottom = 1036.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="Cloud12" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -105.0
offset_top = 630.0
offset_right = 456.0
offset_bottom = 976.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="Cloud13" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 171.0
offset_top = 551.0
offset_right = 732.0
offset_bottom = 897.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="Cloud15" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 347.0
offset_top = 339.0
offset_right = 908.0
offset_bottom = 685.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="Cloud16" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 702.0
offset_top = 129.0
offset_right = 1263.0
offset_bottom = 475.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="Cloud17" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 533.0
offset_top = 580.0
offset_right = 1094.0
offset_bottom = 926.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="Cloud18" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -144.0
offset_top = 832.0
offset_right = 417.0
offset_bottom = 1178.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="Cloud19" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = -575.0
offset_top = 956.0
offset_right = -14.0
offset_bottom = 1302.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="Cloud20" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 385.0
offset_top = 736.0
offset_right = 946.0
offset_bottom = 1082.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="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"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 600.0
offset_top = 287.0
offset_right = 1161.0
offset_bottom = 633.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="Cloud22" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 893.0
offset_top = 889.0
offset_right = 1454.0
offset_bottom = 1235.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="Cloud23" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 997.0
offset_top = 606.0
offset_right = 1558.0
offset_bottom = 952.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="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"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1051.0
offset_top = 318.0
offset_right = 1612.0
offset_bottom = 664.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="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"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 955.0
offset_top = 38.0
offset_right = 1516.0
offset_bottom = 384.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="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"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 986.0
offset_top = -229.0
offset_right = 1547.0
offset_bottom = 117.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="Cloud27" type="NinePatchRect" parent="Clouds"]
modulate = Color(0.84532857, 0.74155146, 0.35449484, 1)
layout_mode = 0
offset_left = 1430.0
offset_top = 10.0
offset_right = 1991.0
offset_bottom = 356.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="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="Iko Gorge Pin"]

View File

@@ -1,12 +1,11 @@
[gd_scene load_steps=12 format=3 uid="uid://dfa6ep4o53s08"] [gd_scene load_steps=11 format=3 uid="uid://155hlphgft66"]
[ext_resource type="Script" uid="uid://cci652umkym1f" path="res://scripts/test_scene.gd" id="1_752n1"] [ext_resource type="Texture2D" uid="uid://c5yxq22ao1oyf" path="res://graphics/doorlight.png" id="2_g60ou"]
[ext_resource type="Texture2D" uid="uid://c5yxq22ao1oyf" path="res://graphics/doorlight.png" id="2_oi1nh"] [ext_resource type="PackedScene" uid="uid://cd08dp16bixfv" path="res://templates/guildhall.tscn" id="3_6js5w"]
[ext_resource type="PackedScene" uid="uid://cd08dp16bixfv" path="res://templates/guildhall.tscn" id="2_rma72"] [ext_resource type="Script" uid="uid://bnbljf6u2d3kh" path="res://scripts/visitor_spawner.gd" id="4_3jgpx"]
[ext_resource type="Script" uid="uid://bnbljf6u2d3kh" path="res://scripts/visitor_spawner.gd" id="3_oi1nh"] [ext_resource type="PackedScene" uid="uid://c8ofw6na082gv" path="res://templates/game_panel.tscn" id="5_qf35n"]
[ext_resource type="PackedScene" uid="uid://c8ofw6na082gv" path="res://templates/main_panel.tscn" id="4_4k18p"] [ext_resource type="PackedScene" uid="uid://c7jagw4y7w42l" path="res://templates/top_menu.tscn" id="6_sqcvo"]
[ext_resource type="PackedScene" uid="uid://c7jagw4y7w42l" path="res://templates/top_menu.tscn" id="5_p1w2f"] [ext_resource type="AudioStream" uid="uid://cmray2frojcd" path="res://sounds/Door Hinge Creaking Door.wav" id="7_xvhcj"]
[ext_resource type="AudioStream" uid="uid://cmray2frojcd" path="res://sounds/Door Hinge Creaking Door.wav" id="7_oi1nh"]
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_752n1"] [sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_752n1"]
blend_mode = 3 blend_mode = 3
@@ -59,8 +58,7 @@ _data = {
&"open": SubResource("Animation_4k18p") &"open": SubResource("Animation_4k18p")
} }
[node name="Active Scene" type="Node2D"] [node name="Open Shift Scene" type="Node2D"]
script = ExtResource("1_752n1")
[node name="ColorRect" type="ColorRect" parent="."] [node name="ColorRect" type="ColorRect" parent="."]
visible = false visible = false
@@ -84,7 +82,7 @@ self_modulate = Color(2.5713813, 2.5713813, 2.5713813, 0.36078432)
z_index = 100 z_index = 100
position = Vector2(866, 654) position = Vector2(866, 654)
scale = Vector2(2, 2) scale = Vector2(2, 2)
texture = ExtResource("2_oi1nh") texture = ExtResource("2_g60ou")
hframes = 5 hframes = 5
frame = 1 frame = 1
@@ -93,13 +91,13 @@ libraries = {
&"": SubResource("AnimationLibrary_dtjin") &"": SubResource("AnimationLibrary_dtjin")
} }
[node name="Guildhall" parent="." instance=ExtResource("2_rma72")] [node name="Guildhall" parent="." instance=ExtResource("3_6js5w")]
position = Vector2(421, 289) position = Vector2(421, 289)
[node name="VisitorSpawner" type="Node2D" parent="Guildhall"] [node name="VisitorSpawner" type="Node2D" parent="Guildhall"]
position = Vector2(453, 533) position = Vector2(453, 533)
script = ExtResource("3_oi1nh") script = ExtResource("4_3jgpx")
total_visitors = 1 total_visitors = 3
[node name="Timer" type="Timer" parent="Guildhall/VisitorSpawner"] [node name="Timer" type="Timer" parent="Guildhall/VisitorSpawner"]
@@ -111,16 +109,16 @@ offset_top = 23.0
offset_right = 1886.0 offset_right = 1886.0
offset_bottom = 351.0 offset_bottom = 351.0
[node name="MainPanel" parent="UI/VBoxContainer" instance=ExtResource("4_4k18p")] [node name="MainPanel" parent="UI/VBoxContainer" instance=ExtResource("5_qf35n")]
layout_mode = 2 layout_mode = 2
[node name="Notices" type="Control" parent="UI/VBoxContainer"] [node name="Notices" type="Control" parent="UI/VBoxContainer"]
layout_mode = 2 layout_mode = 2
[node name="Control" parent="UI" instance=ExtResource("5_p1w2f")] [node name="Control" parent="UI" instance=ExtResource("6_sqcvo")]
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("7_oi1nh") stream = ExtResource("7_xvhcj")
volume_db = -24.535 volume_db = -24.535
[connection signal="timeout" from="Guildhall/VisitorSpawner/Timer" to="Guildhall/VisitorSpawner" method="_on_timer_timeout"] [connection signal="timeout" from="Guildhall/VisitorSpawner/Timer" to="Guildhall/VisitorSpawner" method="_on_timer_timeout"]

View File

@@ -0,0 +1,9 @@
[gd_scene load_steps=3 format=3 uid="uid://dfa6ep4o53s08"]
[ext_resource type="Script" uid="uid://cci652umkym1f" path="res://scripts/test_scene.gd" id="1_2vxxa"]
[ext_resource type="PackedScene" uid="uid://155hlphgft66" path="res://scenes/open_shift_scene.tscn" id="2_o2nb0"]
[node name="Node" type="Node"]
script = ExtResource("1_2vxxa")
[node name="Open Shift Scene" parent="." instance=ExtResource("2_o2nb0")]

View File

@@ -192,3 +192,32 @@ func generate_appearance(features=null) -> void:
#appearance.eye_type = randi_range(0,len(job.portrait.eye_types) - 1) #appearance.eye_type = randi_range(0,len(job.portrait.eye_types) - 1)
appearance.skin.color = AdventurerPortrait.random_color(ColorVariant.Types.SKIN) appearance.skin.color = AdventurerPortrait.random_color(ColorVariant.Types.SKIN)
changed.emit() changed.emit()
func save_inventory() -> Dictionary:
return {}
func save_equipment() -> Dictionary:
return {}
func save() -> Dictionary:
var dict = {}
dict.name = [given_name, surname]
dict.gender = gender
dict.gold = gold
if quest:
dict.quest = quest.id
dict.exp = exp
dict.level = level
dict.appearance = appearance.duplicate()
dict.stats = stats.duplicate()
dict.life = [life, max_life]
dict.energy = [energy, max_energy]
#TODO: Prepare for more on these later
dict.job = {}
dict.abilities = {}
dict.inventory = save_inventory()
dict.equipment = save_equipment()
return dict
func load(dict : Dictionary) -> void:
return

View File

@@ -29,7 +29,7 @@ func set_appearance(appearance) -> void:
set_color(ColorVariant.Types.EYES, appearance.eyes.color) set_color(ColorVariant.Types.EYES, appearance.eyes.color)
#set_color(ColorVariant.Types.EYES, appearance.eyes.type) #set_color(ColorVariant.Types.EYES, appearance.eyes.type)
func get_random_appearance() -> Dictionary: static func get_random_appearance() -> Dictionary:
var app = { var app = {
"hair":{ "hair":{
"type":"", "type":"",

17
scripts/employee_panel.gd Normal file
View File

@@ -0,0 +1,17 @@
extends PanelContainer
var employee : GuildEmployee
func setup(employee : GuildEmployee) -> void:
self.employee = employee
global_position = Vector2(get_viewport().get_mouse_position()) - size / 2
return
func display_develop_tree() -> void:
pass
func _on_develop_button_pressed() -> void:
display_develop_tree()
func _on_focus_exited() -> void:
queue_free()

View File

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

View File

@@ -1,7 +1,30 @@
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:
print("Attack by %s to %s" % [name, target.name])
hitting.connect(hit.bind(target), CONNECT_ONE_SHOT)
anim_player.play("attack")
func set_animation(anim_name : String) -> void: func set_animation(anim_name : String) -> void:
anim_player.play(anim_name) anim_player.play(anim_name)
func hit(target : QuestSprite) -> void:
target.take_damage(self, 2)

View File

@@ -1,16 +1,19 @@
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
var player_profile : Window = null var player_profile : Window = null
var quest_log : QuestLog = null var quest_log : QuestLog = null
var top_menu : TopMenu = null var menu : GameMenu = null
var open : bool = false var open : bool = false
var end_shift_confirmation : ConfirmationDialog var end_shift_confirmation : ConfirmationDialog
var end_shift_confirm_template = preload("res://templates/end_shift_confirmation.tscn") var end_shift_confirm_template = preload("res://templates/end_shift_confirmation.tscn")
var player_profile_template = preload("res://templates/player_profile_window.tscn") var player_profile_template = preload("res://templates/player_profile_window.tscn")
var last_screenshot : Image var last_screenshot : Image
var shifts : Array[float] = []
var current_shift = -1
func _ready() -> void: func _ready() -> void:
player_data = Adventurer.new() player_data = Adventurer.new()
Quest.load_quest_list() Quest.load_quest_list()
@@ -27,6 +30,9 @@ func _process(delta: float) -> void:
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)
@@ -46,10 +52,17 @@ func toggle_player_profile():
add_child(player_profile) add_child(player_profile)
player_profile.setup(player.data) player_profile.setup(player.data)
func start_shift(shift_num) -> void:
current_shift = shift_num
if len(shifts) < 1:
panel.reset_timer(600)
else:
panel.reset_timer(shifts[shift_num])
func end_shift() -> void: func end_shift() -> void:
take_screenshot() take_screenshot()
open = false open = !open
start_shift(wrap(current_shift+1, 0, len(shifts)))
if player_profile != null: if player_profile != null:
toggle_player_profile() toggle_player_profile()
panel.switch_panel(open) panel.switch_panel(open)
@@ -66,7 +79,7 @@ func end_shift() -> void:
#window.per #window.per
Guild.hall.process_mode = Node.PROCESS_MODE_DISABLED Guild.hall.process_mode = Node.PROCESS_MODE_DISABLED
Guild.hall.visible = false Guild.hall.visible = false
top_menu.hide() menu.hide()
panel.get_parent().global_position = Vector2i(5,5) panel.get_parent().global_position = Vector2i(5,5)
window.size = Vector2i(415,700) window.size = Vector2i(415,700)
panel.populate_quest_views() panel.populate_quest_views()
@@ -86,26 +99,30 @@ func test_save() -> void:
take_screenshot() take_screenshot()
var save_dict = { var save_dict = {
"savetime": Time.get_datetime_string_from_system(), "savetime": Time.get_datetime_string_from_system(),
"screenshot": last_screenshot "screenshot": last_screenshot.save_png_to_buffer().hex_encode()
} }
#Save the guild data #Save the guild data
save_dict["guildname"] = Guild.name save_dict["guildname"] = Guild.name
save_dict["guildlevel"] = Guild.level save_dict["guildlevel"] = Guild.level
#Save the player data #Save the player data
if player: if player:
save_dict["playername"] = player.data.full_name() save_dict.player = player.save()
save_dict["playerlevel"] = player.data.level
#Save the employee data #Save the employee data
#Save the adventurer data #Save the adventurer data
var members = Guild.save_members()
if len(members) > 0:
save_dict.members = members
#Save the quest data #Save the quest data
#Save the quest progress var quests = Guild.save_quests()
if len(quests) > 0:
save_dict.quests = quests
var save_file = FileAccess.open("user://savefile.save", FileAccess.WRITE) var save_file = FileAccess.open("user://savefile.save", FileAccess.WRITE)
save_file.store_line(JSON.stringify(save_dict)) save_file.store_line(JSON.stringify(save_dict, "\t"))
func get_savefile_data(filename : String) -> Dictionary: func get_savefile_data(filename : String) -> Dictionary:
var load_file = FileAccess.open("user://" + filename, FileAccess.READ) var load_file = FileAccess.open("user://" + filename, FileAccess.READ)
var json = JSON.new() var json = JSON.new()
var json_string = load_file.get_line() var json_string = load_file.get_as_text()
var parse_result = json.parse(json_string) var parse_result = json.parse(json_string)
if not parse_result == OK: if not parse_result == OK:
printerr("JSON Parse Error: ", json.get_error_message(), " in ", json_string, " at line ", json.get_error_line()) printerr("JSON Parse Error: ", json.get_error_message(), " in ", json_string, " at line ", json.get_error_line())
@@ -114,14 +131,7 @@ func get_savefile_data(filename : String) -> Dictionary:
var ss : String = json.data.screenshot var ss : String = json.data.screenshot
#print(ss.data) #print(ss.data)
image.load_png_from_buffer(ss.hex_decode()) image.load_png_from_buffer(ss.hex_decode())
var data_dict = { var data_dict = json.data.duplicate_deep()
"playername": json.data.playername,
"playerlevel": json.data.playerlevel,
"guildname": json.data.guildname,
"guildlevel": json.data.guildlevel,
"savetime": json.data.savetime,
"screenshot": image
}
return data_dict return data_dict
func test_load(filename : String) -> void: func test_load(filename : String) -> void:

View File

@@ -1,4 +1,4 @@
class_name TopMenu extends Control class_name GameMenu extends Control
const member_panel_entry_template = preload("res://templates/member_panel_entry.tscn") const member_panel_entry_template = preload("res://templates/member_panel_entry.tscn")
const quest_panel_entry_template = preload("res://templates/quest_panel_entry.tscn") const quest_panel_entry_template = preload("res://templates/quest_panel_entry.tscn")
@@ -9,7 +9,7 @@ const guild_info_window_template = preload("res://templates/guild_info_window.ts
@onready var quest_list = %QuestList @onready var quest_list = %QuestList
@onready var quests = %Quests @onready var quests = %Quests
func _ready() -> void: func _ready() -> void:
Game.top_menu = self Game.menu = self
func hide_submenus() -> void: func hide_submenus() -> void:
members.visible = false members.visible = false

View File

@@ -40,7 +40,6 @@ func switch_panel(active : bool) -> void:
%OpenShift.visible = active %OpenShift.visible = active
%WorkingShift.visible = !active %WorkingShift.visible = !active
%QuestView.visible = !active %QuestView.visible = !active
%Timer.start(300 if active else 1500)
audioplayer.play() audioplayer.play()
func _on_show_quests_pressed() -> void: func _on_show_quests_pressed() -> void:
@@ -59,6 +58,11 @@ func connect_visitor_spawner(spawner : VisitorSpawner) -> void:
func update_visitor_count(current : int, total : int) -> void: func update_visitor_count(current : int, total : int) -> void:
%OpenList/VisitorsLabel.text = "Visitors: %d/%d" % [current, total] %OpenList/VisitorsLabel.text = "Visitors: %d/%d" % [current, total]
func reset_timer(time : float) -> void:
timer.start(time)
if timer.paused:
timer.paused = false
func populate_quest_views() -> void: func populate_quest_views() -> void:
var count : int = 0 var count : int = 0
for quest in Guild.quests: for quest in Guild.quests:

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

View File

@@ -57,7 +57,7 @@ func _ready() -> void:
func register_guild_member(member : Adventurer, first : bool = false) -> void: func register_guild_member(member : Adventurer, first : bool = false) -> void:
members.append(member) members.append(member)
Game.top_menu.add_member(member) Game.menu.add_member(member)
changed.emit() changed.emit()
if first: if first:
Game.notice("%s has joined the guild!" % member.name, 5) Game.notice("%s has joined the guild!" % member.name, 5)
@@ -69,13 +69,25 @@ func has_guild_member(member : Adventurer) -> bool:
func add_quest(quest : Quest) -> void: func add_quest(quest : Quest) -> void:
quests[quest] = false quests[quest] = false
Game.top_menu.add_quest(quest) Game.menu.add_quest(quest)
#Game.quest_log.add_entry(quest) #Game.quest_log.add_entry(quest)
func assign_quest(member : Adventurer, quest : Quest) -> void: func assign_quest(member : Adventurer, quest : Quest) -> void:
member.assign_quest(quest) member.assign_quest(quest)
quests[quest] = true #Mark it as active quests[quest] = true #Mark it as active
func save_members() -> Array:
var array : Array[Dictionary] = []
for member in members:
array.append(member.save())
return array
func save_quests() -> Array:
var array : Array[Dictionary] = []
for quest in quests:
array.append(quest.save())
return array
func spawn_visitor(pos : Vector2) -> void: func spawn_visitor(pos : Vector2) -> void:
var data : Adventurer = visitors["test"].data.instantiate() var data : Adventurer = visitors["test"].data.instantiate()
var sprite : AdventurerSprite = visitors["test"].sprite.instantiate() var sprite : AdventurerSprite = visitors["test"].sprite.instantiate()

View File

@@ -1,5 +1,7 @@
class_name GuildEmployee extends AdventurerSprite class_name GuildEmployee extends AdventurerSprite
const employee_panel_template = preload("res://templates/employee_panel.tscn")
@export var speech :String @export var speech :String
@onready var queue : GuildQueue = $Queue @onready var queue : GuildQueue = $Queue
@@ -10,3 +12,14 @@ func interact(interactor, type : String = "") -> void:
Guild.register_guild_member(interactor.data, true) Guild.register_guild_member(interactor.data, true)
#interactor.advance_ #interactor.advance_
service_provided.emit() service_provided.emit()
func _on_mouse_area_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void:
if event is not InputEventMouseButton:
return
var evt = event as InputEventMouseButton
if evt.button_index == MOUSE_BUTTON_RIGHT:
var emp_panel : PanelContainer = employee_panel_template.instantiate()
get_tree().root.add_child(emp_panel)
emp_panel.setup(self)
emp_panel.grab_focus()

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

26
scripts/map_cloud.gd Normal file
View File

@@ -0,0 +1,26 @@
extends NinePatchRect
var max_displacement : float = 50
var speed : float = 10
var move_dir : Vector2
var start_position : Vector2
func _ready() -> void:
start_position = position
move_dir = Vector2.UP.rotated(randf() * 2 * PI)
func _process(delta: float) -> void:
var offset = (position - start_position).length() / max_displacement
var turn = randf_range(-PI / 6.0, PI / 6.0) * offset
var a_dir = move_dir.rotated(turn)
var b_dir = move_dir.rotated(-turn)
var ap = position + speed * delta * a_dir
var bp = position + speed * delta * b_dir
var mpsq = max_displacement * max_displacement
if ap.distance_squared_to(start_position) < mpsq:
position = ap
move_dir = a_dir
else:
position = bp
move_dir = b_dir

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

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

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

@@ -14,6 +14,8 @@ var data : Adventurer
func _ready() -> void: func _ready() -> void:
Game.player = self Game.player = self
data = Adventurer.new() data = Adventurer.new()
data.life = 20
data.max_life = 20
data.inventory_size = Vector2(4,2) data.inventory_size = Vector2(4,2)
data.name = "Player" data.name = "Player"
setup.call_deferred() setup.call_deferred()
@@ -48,7 +50,7 @@ func _physics_process(delta: float) -> void:
func _unhandled_input(event: InputEvent) -> void: func _unhandled_input(event: InputEvent) -> void:
var evt : InputEventMouseButton = event as InputEventMouseButton var evt : InputEventMouseButton = event as InputEventMouseButton
if evt and evt.pressed: if evt and evt.button_index == MOUSE_BUTTON_LEFT and evt.pressed:
approach(evt.global_position) approach(evt.global_position)
nav_agent.target_desired_distance = stop_range nav_agent.target_desired_distance = stop_range
interaction_target = null interaction_target = null
@@ -81,3 +83,9 @@ func try_interact(obj : Interactable) -> void:
func interact(obj : Interactable) -> void: func interact(obj : Interactable) -> void:
obj.interact(self) obj.interact(self)
func save() -> Dictionary:
return data.save()
func load(dict : Dictionary) -> void:
return

View File

@@ -13,7 +13,7 @@ func _ready() -> void:
if Game.player_data.appearance.size() != 0: if Game.player_data.appearance.size() != 0:
appearance = Game.player_data.appearance appearance = Game.player_data.appearance
else: else:
appearance = portrait.get_random_appearance() appearance = AdventurerPortrait.get_random_appearance()
portrait.set_appearance(appearance) portrait.set_appearance(appearance)
choices.resize(portrait.option_sets.size()) choices.resize(portrait.option_sets.size())
choices.fill(0) choices.fill(0)
@@ -73,5 +73,5 @@ func _on_accept_button_pressed() -> void:
func _on_random_button_pressed() -> void: func _on_random_button_pressed() -> void:
appearance = portrait.get_random_appearance() appearance = AdventurerPortrait.get_random_appearance()
portrait.set_appearance(appearance) portrait.set_appearance(appearance)

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

@@ -63,14 +63,6 @@ func approach(target, offset) -> void:
tween.tween_callback(anim_player.play.bind("idle")) tween.tween_callback(anim_player.play.bind("idle"))
tween.tween_callback(arrived.emit) tween.tween_callback(arrived.emit)
func attack(target : QuestSprite) -> void:
print("Attack by %s to %s" % [name, target.name])
hitting.connect(spear_hit.bind(target), CONNECT_ONE_SHOT)
anim_player.play("spear attack")
func spear_hit(target : QuestSprite) -> void:
target.take_damage(self, 5)
func take_damage(source : QuestSprite, amount : int) -> void: func take_damage(source : QuestSprite, amount : int) -> void:
busy.emit() busy.emit()
var damage_banner = damage_banner_template.instantiate() var damage_banner = damage_banner_template.instantiate()

View File

@@ -61,3 +61,11 @@ func _on_level_up() -> void:
func _on_questor_changed() -> void: func _on_questor_changed() -> void:
pass pass
func attack(target : QuestSprite) -> void:
print("Attack by %s to %s" % [name, target.name])
hitting.connect(spear_hit.bind(target), CONNECT_ONE_SHOT)
anim_player.play("spear attack")
func spear_hit(target : QuestSprite) -> void:
target.take_damage(self, 5)

View File

@@ -1,8 +1,10 @@
extends Node2D extends Node
var test_adv = preload("res://templates/test_adventurer.tscn") var test_adv = preload("res://templates/test_adventurer.tscn")
var test_item = preload("res://data/items/pitchfork.tres") var test_item = preload("res://data/items/pitchfork.tres")
@onready var door_player : AudioStreamPlayer = $AudioStreamPlayer @onready var door_player : AudioStreamPlayer = $AudioStreamPlayer
func _ready() -> void: func _ready() -> void:
Game.shifts = [600, 600, 600]
Game.start_shift(0)
#var adv : Adventurer = test_adv.instantiate() as Adventurer #var adv : Adventurer = test_adv.instantiate() as Adventurer
#Guild.register_guild_member(adv) #Guild.register_guild_member(adv)
var lst = Quest.list var lst = Quest.list
@@ -11,8 +13,10 @@ func _ready() -> void:
Guild.add_quest(quest) Guild.add_quest(quest)
Guild.assign_quest(Game.player.data, quest) Guild.assign_quest(Game.player.data, quest)
var itm = test_item.duplicate() var itm = test_item.duplicate()
Game.player.data.appearance = AdventurerPortrait.get_random_appearance()
Game.player.data.pickup_item(itm) Game.player.data.pickup_item(itm)
Game.player.data.move_item(Vector2(0,0), Vector2(1,0)) Game.player.data.move_item(Vector2(0,0), Vector2(1,0))
Game.open = true
#Game.end_shift() #Game.end_shift()
#var tween = create_tween() #var tween = create_tween()
#tween.tween_interval(3) #tween.tween_interval(3)

View File

@@ -0,0 +1,13 @@
// NOTE: Shader automatically converted from Godot Engine 4.5.1.stable.mono's CanvasItemMaterial.
shader_type canvas_item;
render_mode blend_mix;
uniform sampler2D main_texture;
void vertex() {
}
void fragment() {
vec4 col = texture(main_texture, UV);
COLOR = col;
}

View File

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

View File

@@ -0,0 +1,94 @@
[gd_scene load_steps=4 format=3 uid="uid://dv4pmw8f0qr3i"]
[sub_resource type="Environment" id="Environment_dkoub"]
ambient_light_source = 1
reflected_light_source = 1
glow_enabled = true
glow_intensity = 8.0
glow_strength = 2.0
glow_bloom = 1.0
[sub_resource type="Shader" id="Shader_dkoub"]
code = "// NOTE: Shader automatically converted from Godot Engine 4.5.1.stable.mono's CanvasItemMaterial.
shader_type canvas_item;
render_mode blend_mix;
uniform sampler2D main_texture;
void vertex() {
}
void fragment() {
vec4 col = texture(main_texture, UV);
COLOR = col;
}"
[sub_resource type="ShaderMaterial" id="ShaderMaterial_000fu"]
shader = SubResource("Shader_dkoub")
[node name="Control" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_dkoub")
[node name="PanelContainer" type="PanelContainer" parent="."]
layout_mode = 0
offset_right = 800.0
offset_bottom = 427.0
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
layout_mode = 2
[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/PanelContainer"]
layout_mode = 2
text = "Development Options"
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer"]
custom_minimum_size = Vector2(800, 400)
layout_mode = 2
theme_override_constants/margin_left = 5
theme_override_constants/margin_right = 5
theme_override_constants/margin_bottom = 5
[node name="Container" type="Control" parent="PanelContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
[node name="Button" type="Button" parent="PanelContainer/VBoxContainer/MarginContainer/Container"]
layout_mode = 0
offset_top = 152.0
offset_right = 97.0
offset_bottom = 183.0
text = "Sign-up List"
[node name="Button2" type="Button" parent="PanelContainer/VBoxContainer/MarginContainer/Container"]
layout_mode = 0
offset_left = 189.0
offset_top = 152.0
offset_right = 340.0
offset_bottom = 183.0
text = "Roster Sheet"
[node name="Button3" type="Button" parent="PanelContainer/VBoxContainer/MarginContainer/Container"]
layout_mode = 0
offset_left = 412.0
offset_top = 151.0
offset_right = 559.0
offset_bottom = 182.0
text = "Roster Book"
[node name="Line2D" type="Line2D" parent="PanelContainer/VBoxContainer/MarginContainer/Container"]
material = SubResource("ShaderMaterial_000fu")
position = Vector2(101, 168)
points = PackedVector2Array(0, 0, 84, 0)
width = 3.0
begin_cap_mode = 2
antialiased = true

View File

@@ -0,0 +1,34 @@
[gd_scene load_steps=2 format=3 uid="uid://ejiv2wdgeeva"]
[ext_resource type="Script" uid="uid://pwj0ai6mg7o2" path="res://scripts/employee_panel.gd" id="1_ls6g8"]
[node name="Employee Panel" type="PanelContainer"]
offset_right = 126.0
offset_bottom = 70.0
focus_mode = 1
script = ExtResource("1_ls6g8")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer"]
layout_mode = 2
mouse_filter = 2
[node name="Label" type="Label" parent="VBoxContainer/PanelContainer"]
layout_mode = 2
text = "Employee Name"
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 3
theme_override_constants/margin_top = 4
theme_override_constants/margin_right = 4
theme_override_constants/margin_bottom = 0
[node name="DevelopButton" type="Button" parent="VBoxContainer"]
layout_mode = 2
text = "Develop"
[connection signal="focus_exited" from="." to="." method="_on_focus_exited"]
[connection signal="pressed" from="VBoxContainer/DevelopButton" to="." method="_on_develop_button_pressed"]

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,265 @@
[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
[node name="Button" type="Button" parent="."]
layout_mode = 0
offset_right = 8.0
offset_bottom = 8.0
toggle_mode = 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,6 +1,6 @@
[gd_scene load_steps=10 format=3 uid="uid://c8ofw6na082gv"] [gd_scene load_steps=10 format=3 uid="uid://c8ofw6na082gv"]
[ext_resource type="Script" uid="uid://dhw85vqlvw33s" path="res://scripts/main_panel.gd" id="1_pdekv"] [ext_resource type="Script" uid="uid://dhw85vqlvw33s" path="res://scripts/game_panel.gd" id="1_pdekv"]
[ext_resource type="Script" uid="uid://4jrp67ckp7vt" path="res://scripts/timer_label.gd" id="2_5rs2c"] [ext_resource type="Script" uid="uid://4jrp67ckp7vt" path="res://scripts/timer_label.gd" id="2_5rs2c"]
[ext_resource type="StyleBox" uid="uid://by1jk8r2avjp4" path="res://styles/open_shift_panel.tres" id="2_b7y1i"] [ext_resource type="StyleBox" uid="uid://by1jk8r2avjp4" path="res://styles/open_shift_panel.tres" id="2_b7y1i"]
[ext_resource type="Texture2D" uid="uid://bwaiuy7yf7tu3" path="res://graphics/ui/time-frame.png" id="3_7oi8q"] [ext_resource type="Texture2D" uid="uid://bwaiuy7yf7tu3" path="res://graphics/ui/time-frame.png" id="3_7oi8q"]
@@ -21,7 +21,7 @@ corner_radius_bottom_right = 3
corner_radius_bottom_left = 3 corner_radius_bottom_left = 3
corner_detail = 5 corner_detail = 5
[node name="MainPanel" type="MarginContainer"] [node name="GamePanel" type="MarginContainer"]
offset_right = 401.0 offset_right = 401.0
offset_bottom = 853.0 offset_bottom = 853.0
theme_override_constants/margin_left = 0 theme_override_constants/margin_left = 0
@@ -220,6 +220,8 @@ layout_mode = 2
stream = ExtResource("6_osxme") stream = ExtResource("6_osxme")
volume_db = -10.31 volume_db = -10.31
[connection signal="time_changed" from="." to="VBoxContainer/OpenShift/Margin/OpenList/TimerLabel" method="_on_time_changed"]
[connection signal="time_changed" from="." to="VBoxContainer/WorkingShift/MarginContainer/WorkingList/TimerLabel" method="_on_time_changed"]
[connection signal="pressed" from="VBoxContainer/OpenShift/TextureButton" to="." method="_on_options_button_pressed"] [connection signal="pressed" from="VBoxContainer/OpenShift/TextureButton" to="." method="_on_options_button_pressed"]
[connection signal="pressed" from="VBoxContainer/OpenShift/Margin/OpenList/Button" to="." method="_on_end_shift_pressed"] [connection signal="pressed" from="VBoxContainer/OpenShift/Margin/OpenList/Button" to="." method="_on_end_shift_pressed"]
[connection signal="gui_input" from="VBoxContainer/WorkingShift/DragRegion" to="." method="_on_drag_region_gui_input"] [connection signal="gui_input" from="VBoxContainer/WorkingShift/DragRegion" to="." method="_on_drag_region_gui_input"]

View File

@@ -1,6 +1,6 @@
[gd_scene load_steps=3 format=3 uid="uid://tbf3tvn8m54l"] [gd_scene load_steps=3 format=3 uid="uid://tbf3tvn8m54l"]
[ext_resource type="Script" uid="uid://dhw85vqlvw33s" path="res://scripts/main_panel.gd" id="1_sihtn"] [ext_resource type="Script" uid="uid://dhw85vqlvw33s" path="res://scripts/game_panel.gd" id="1_sihtn"]
[ext_resource type="Script" uid="uid://4jrp67ckp7vt" path="res://scripts/timer_label.gd" id="2_xnrrg"] [ext_resource type="Script" uid="uid://4jrp67ckp7vt" path="res://scripts/timer_label.gd" id="2_xnrrg"]
[node name="PanelContainer" type="PanelContainer"] [node name="PanelContainer" type="PanelContainer"]

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=8 format=3 uid="uid://cf6nnjyp8kv78"] [gd_scene load_steps=9 format=3 uid="uid://cf6nnjyp8kv78"]
[ext_resource type="Script" uid="uid://b2unuudq5qfl" path="res://scripts/guild_employee.gd" id="1_vwytd"] [ext_resource type="Script" uid="uid://b2unuudq5qfl" path="res://scripts/guild_employee.gd" id="1_vwytd"]
[ext_resource type="Texture2D" uid="uid://nrhxsevqn82" path="res://graphics/receptionist.png" id="2_dlmqr"] [ext_resource type="Texture2D" uid="uid://nrhxsevqn82" path="res://graphics/receptionist.png" id="2_dlmqr"]
@@ -12,6 +12,10 @@ height = 54.0
[sub_resource type="BlackboardPlan" id="BlackboardPlan_xsrct"] [sub_resource type="BlackboardPlan" id="BlackboardPlan_xsrct"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_51mum"]
radius = 29.0
height = 108.0
[node name="Receptionist" type="CharacterBody2D"] [node name="Receptionist" type="CharacterBody2D"]
script = ExtResource("1_vwytd") script = ExtResource("1_vwytd")
@@ -38,3 +42,12 @@ position = Vector2(44, -93)
[node name="BTPlayer" type="BTPlayer" parent="."] [node name="BTPlayer" type="BTPlayer" parent="."]
behavior_tree = ExtResource("7_qmbsn") behavior_tree = ExtResource("7_qmbsn")
blackboard_plan = SubResource("BlackboardPlan_xsrct") blackboard_plan = SubResource("BlackboardPlan_xsrct")
[node name="MouseArea" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="MouseArea"]
position = Vector2(0, -50)
shape = SubResource("CapsuleShape2D_51mum")
debug_color = Color(0.19833331, 0.7, 0, 0.41960785)
[connection signal="input_event" from="MouseArea" to="." method="_on_mouse_area_input_event"]

View File

@@ -1,7 +1,7 @@
[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/top_menu.gd" id="1_o3fau"] [ext_resource type="Script" uid="uid://wyv0gt0ww6fp" path="res://scripts/game_menu.gd" id="1_o3fau"]
[ext_resource type="Texture2D" uid="uid://hc1lmivi4bjs" path="res://graphics/top-icon-members-hover.png" id="2_370kg"] [ext_resource type="Texture2D" uid="uid://hc1lmivi4bjs" path="res://graphics/top-icon-members-hover.png" id="2_370kg"]
[ext_resource type="Texture2D" uid="uid://w8xkghjv3t6r" path="res://graphics/shelf.png" id="2_hoboc"] [ext_resource type="Texture2D" uid="uid://w8xkghjv3t6r" path="res://graphics/shelf.png" id="2_hoboc"]
[ext_resource type="Texture2D" uid="uid://dkb0bhk4t15fh" path="res://graphics/guild-mopt.png" id="2_kvelj"] [ext_resource type="Texture2D" uid="uid://dkb0bhk4t15fh" path="res://graphics/guild-mopt.png" id="2_kvelj"]
@@ -15,8 +15,9 @@
[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="TopMenu" type="Control"] [node name="GameMenu" type="Control"]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@@ -152,6 +153,7 @@ text = "Generate Quest"
unique_name_in_owner = true unique_name_in_owner = true
visible = false visible = false
layout_mode = 1 layout_mode = 1
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
offset_left = 4.0 offset_left = 4.0
@@ -227,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
@@ -441,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"]