Compare commits
2 Commits
051406cf40
...
7136b07de5
Author | SHA1 | Date | |
---|---|---|---|
7136b07de5
|
|||
4a900e99bd
|
BIN
animation/generic_anims.res
Normal file
BIN
animation/generic_anims.res
Normal file
Binary file not shown.
BIN
assets/sprites/rat_small.aseprite
(Stored with Git LFS)
Normal file
BIN
assets/sprites/rat_small.aseprite
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/sprites/rat_small.png
(Stored with Git LFS)
Normal file
BIN
assets/sprites/rat_small.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/sprites/rat_small.png.import
Normal file
34
assets/sprites/rat_small.png.import
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://in5id1p5bxux"
|
||||||
|
path="res://.godot/imported/rat_small.png-00253d8b77772b9b3ad68d57407664f2.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sprites/rat_small.png"
|
||||||
|
dest_files=["res://.godot/imported/rat_small.png-00253d8b77772b9b3ad68d57407664f2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
144
scenes/enemies/enemy_base.gd
Normal file
144
scenes/enemies/enemy_base.gd
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
class_name EnemyBase
|
||||||
|
extends CharacterBody2D
|
||||||
|
|
||||||
|
@export var move_speed: float = 100
|
||||||
|
@export var max_health: float = 10.0
|
||||||
|
@export var default_contact_damage: float = 0.0
|
||||||
|
@export var target_distance: float = 6.0
|
||||||
|
@export var path_update_interval: float = 0.5
|
||||||
|
|
||||||
|
@onready var target_cast: RayCast2D = $TargetCast
|
||||||
|
@onready var animation_player: AnimationPlayer = $AnimationPlayer
|
||||||
|
@onready var contact_damage_cd: Timer = $ContactDamageCD
|
||||||
|
@onready var nav_agent: NavigationAgent2D = $NavigationAgent2D
|
||||||
|
@onready var collision_shape_2d: CollisionShape2D = $CollisionShape2D
|
||||||
|
@onready var shape_cast_2d: ShapeCast2D = $ShapeCast2D
|
||||||
|
|
||||||
|
var player: Player
|
||||||
|
var target: Node2D
|
||||||
|
var god_mode: bool = false
|
||||||
|
var is_dead: bool = false
|
||||||
|
var health: float
|
||||||
|
|
||||||
|
var _path_update_timer: float = 0.0
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
health = max_health
|
||||||
|
shape_cast_2d.shape.radius = collision_shape_2d.shape.radius
|
||||||
|
shape_cast_2d.enabled = false
|
||||||
|
_find_player()
|
||||||
|
|
||||||
|
|
||||||
|
func _find_player():
|
||||||
|
if not player:
|
||||||
|
player = get_tree().get_first_node_in_group(GlobalConst.GROUP_PLAYER)
|
||||||
|
target = player
|
||||||
|
|
||||||
|
|
||||||
|
func _physics_process(delta: float) -> void:
|
||||||
|
if not target:
|
||||||
|
return
|
||||||
|
do_movement(delta)
|
||||||
|
check_contact_damage()
|
||||||
|
|
||||||
|
|
||||||
|
func do_movement(delta: float) -> void:
|
||||||
|
if not target:
|
||||||
|
return
|
||||||
|
if global_position.distance_to(target.global_position) < target_distance:
|
||||||
|
return
|
||||||
|
_path_update_timer -= delta
|
||||||
|
if _has_direct_path():
|
||||||
|
shape_cast_2d.enabled = false
|
||||||
|
_do_simple_movement()
|
||||||
|
else:
|
||||||
|
_do_nav_agent_movement()
|
||||||
|
|
||||||
|
|
||||||
|
func _has_direct_path():
|
||||||
|
target_cast.target_position = to_local(target.global_position)
|
||||||
|
target_cast.enabled = true
|
||||||
|
return not target_cast.is_colliding()
|
||||||
|
|
||||||
|
|
||||||
|
func _do_simple_movement():
|
||||||
|
var direction = global_position.direction_to(target.global_position)
|
||||||
|
var distance = global_position.distance_to(target.global_position)
|
||||||
|
if distance > 4:
|
||||||
|
velocity = direction * move_speed
|
||||||
|
move_and_slide()
|
||||||
|
|
||||||
|
|
||||||
|
func _do_nav_agent_movement():
|
||||||
|
if _path_update_timer <= 0.0:
|
||||||
|
_path_update_timer = path_update_interval
|
||||||
|
nav_agent.target_position = target.global_position
|
||||||
|
|
||||||
|
if nav_agent.is_navigation_finished():
|
||||||
|
return
|
||||||
|
var next_point = nav_agent.get_next_path_position()
|
||||||
|
var direction = (next_point - global_position).normalized()
|
||||||
|
shape_cast_2d.target_position = to_local(next_point)
|
||||||
|
shape_cast_2d.enabled = true
|
||||||
|
if shape_cast_2d.is_colliding():
|
||||||
|
direction = direction.bounce(shape_cast_2d.get_collision_normal(0)).normalized()
|
||||||
|
|
||||||
|
velocity = direction * move_speed
|
||||||
|
move_and_slide()
|
||||||
|
|
||||||
|
|
||||||
|
func check_contact_damage():
|
||||||
|
if default_contact_damage == 0.0:
|
||||||
|
return
|
||||||
|
if global_position.distance_to(target.global_position) > target_distance:
|
||||||
|
return
|
||||||
|
deal_contact_damage()
|
||||||
|
|
||||||
|
|
||||||
|
func deal_contact_damage():
|
||||||
|
if target.is_in_group("damagable"):
|
||||||
|
if contact_damage_cd.is_stopped():
|
||||||
|
target.take_damage(default_contact_damage)
|
||||||
|
contact_damage_cd.start()
|
||||||
|
|
||||||
|
|
||||||
|
func take_damage(value: float, is_crit: bool = false):
|
||||||
|
if god_mode:
|
||||||
|
return
|
||||||
|
health -= value
|
||||||
|
var dm = preload("res://scenes/damage_numbers.tscn").instantiate()
|
||||||
|
dm.damage_taken = value
|
||||||
|
dm.critical_damage = is_crit
|
||||||
|
animation_player.play("generic_anims/take_damage")
|
||||||
|
add_child(dm)
|
||||||
|
if health <= 0:
|
||||||
|
die()
|
||||||
|
|
||||||
|
|
||||||
|
func cheer():
|
||||||
|
target_distance = 2
|
||||||
|
if not animation_player.is_playing():
|
||||||
|
animation_player.play("generic_anims/cheer")
|
||||||
|
|
||||||
|
|
||||||
|
func die():
|
||||||
|
if is_dead:
|
||||||
|
return
|
||||||
|
is_dead = true
|
||||||
|
drop_xp_orb()
|
||||||
|
target = null
|
||||||
|
velocity = Vector2.ZERO
|
||||||
|
animation_player.play("generic_anims/die")
|
||||||
|
|
||||||
|
|
||||||
|
func drop_xp_orb() -> void:
|
||||||
|
var orb: XPOrb = preload("res://scenes/xp_orb.tscn").instantiate()
|
||||||
|
orb.value = 5
|
||||||
|
orb.position = position
|
||||||
|
get_parent().add_child(orb)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_animation_player_animation_finished(anim_name: StringName) -> void:
|
||||||
|
if is_dead:
|
||||||
|
queue_free()
|
1
scenes/enemies/enemy_base.gd.uid
Normal file
1
scenes/enemies/enemy_base.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dxn17u7ltuibw
|
75
scenes/enemies/enemy_base.tscn
Normal file
75
scenes/enemies/enemy_base.tscn
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
[gd_scene load_steps=8 format=3 uid="uid://b7vq8xspnlyeu"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dxn17u7ltuibw" path="res://scenes/enemies/enemy_base.gd" id="1_qty17"]
|
||||||
|
[ext_resource type="AnimationLibrary" uid="uid://dos4y853hq1gu" path="res://animation/generic_anims.res" id="2_pkqou"]
|
||||||
|
|
||||||
|
[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_pkqou"]
|
||||||
|
size = Vector2(32, 32)
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id="CircleShape2D_satqt"]
|
||||||
|
radius = 6.0
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_satqt"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Sprite2D:position")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(0, 0)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Sprite2D:modulate")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_qa0nx"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_satqt")
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id="CircleShape2D_pkqou"]
|
||||||
|
|
||||||
|
[node name="EnemyBase" type="CharacterBody2D"]
|
||||||
|
collision_layer = 2
|
||||||
|
collision_mask = 3
|
||||||
|
script = ExtResource("1_qty17")
|
||||||
|
|
||||||
|
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||||
|
texture = SubResource("PlaceholderTexture2D_pkqou")
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
|
shape = SubResource("CircleShape2D_satqt")
|
||||||
|
|
||||||
|
[node name="TargetCast" type="RayCast2D" parent="." groups=["damagable", "enemy"]]
|
||||||
|
enabled = false
|
||||||
|
collision_mask = 3
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_qa0nx"),
|
||||||
|
&"generic_anims": ExtResource("2_pkqou")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="ContactDamageCD" type="Timer" parent="."]
|
||||||
|
wait_time = 0.5
|
||||||
|
|
||||||
|
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="."]
|
||||||
|
|
||||||
|
[node name="ShapeCast2D" type="ShapeCast2D" parent="."]
|
||||||
|
shape = SubResource("CircleShape2D_pkqou")
|
||||||
|
|
||||||
|
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_player_animation_finished"]
|
1
scenes/enemies/enemy_rat.gd
Normal file
1
scenes/enemies/enemy_rat.gd
Normal file
@@ -0,0 +1 @@
|
|||||||
|
extends EnemyBase
|
1
scenes/enemies/enemy_rat.gd.uid
Normal file
1
scenes/enemies/enemy_rat.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://ddvxp8eada0mw
|
13
scenes/enemies/enemy_rat.tscn
Normal file
13
scenes/enemies/enemy_rat.tscn
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[gd_scene load_steps=4 format=3 uid="uid://c7jaqltfjhn5n"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b7vq8xspnlyeu" path="res://scenes/enemies/enemy_base.tscn" id="1_o1awd"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://in5id1p5bxux" path="res://assets/sprites/rat_small.png" id="2_gscll"]
|
||||||
|
[ext_resource type="Script" uid="uid://ddvxp8eada0mw" path="res://scenes/enemies/enemy_rat.gd" id="2_sari4"]
|
||||||
|
|
||||||
|
[node name="EnemyRat" instance=ExtResource("1_o1awd")]
|
||||||
|
script = ExtResource("2_sari4")
|
||||||
|
max_health = 50.0
|
||||||
|
default_contact_damage = 5.0
|
||||||
|
|
||||||
|
[node name="Sprite2D" parent="." index="0"]
|
||||||
|
texture = ExtResource("2_gscll")
|
@@ -7,7 +7,7 @@ extends Node2D
|
|||||||
|
|
||||||
@onready var timer: Timer = $Timer
|
@onready var timer: Timer = $Timer
|
||||||
|
|
||||||
var enemy_scene = preload("res://scenes/enemies/enemy.tscn")
|
const ENEMY_RAT = preload("res://scenes/enemies/enemy_rat.tscn")
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
@@ -20,7 +20,7 @@ func _on_timer_timeout() -> void:
|
|||||||
var enemies = get_tree().get_nodes_in_group(GlobalConst.GROUP_ENEMY)
|
var enemies = get_tree().get_nodes_in_group(GlobalConst.GROUP_ENEMY)
|
||||||
GlobalConst.sig_debug_stats_set.emit("enemy_count", "%s" % len(enemies))
|
GlobalConst.sig_debug_stats_set.emit("enemy_count", "%s" % len(enemies))
|
||||||
if len(enemies) < max_enemies:
|
if len(enemies) < max_enemies:
|
||||||
var new_enemy = enemy_scene.instantiate()
|
var new_enemy = ENEMY_RAT.instantiate()
|
||||||
new_enemy.position = target.position + Vector2(50, 50)
|
new_enemy.position = target.position + Vector2(50, 50)
|
||||||
new_enemy.target = target
|
new_enemy.target = target
|
||||||
add_child(new_enemy)
|
add_child(new_enemy)
|
||||||
|
@@ -5,6 +5,7 @@ extends CharacterBody2D
|
|||||||
@export var main_ui: MainUI
|
@export var main_ui: MainUI
|
||||||
|
|
||||||
@onready var sprite_2d: Sprite2D = $Sprite2D
|
@onready var sprite_2d: Sprite2D = $Sprite2D
|
||||||
|
@onready var attack_sword: Node2D = $AttackSword
|
||||||
|
|
||||||
var player_stats: PlayerStats = PlayerStats.new()
|
var player_stats: PlayerStats = PlayerStats.new()
|
||||||
var modifiers: Array[PlayerStatsModifier] = []
|
var modifiers: Array[PlayerStatsModifier] = []
|
||||||
@@ -59,7 +60,8 @@ func take_damage(value: float) -> void:
|
|||||||
func die():
|
func die():
|
||||||
dead = true
|
dead = true
|
||||||
remove_from_group("damagable")
|
remove_from_group("damagable")
|
||||||
get_tree().call_group("enemy", "cheer_anim")
|
get_tree().call_group("enemy", "cheer")
|
||||||
|
attack_sword.queue_free()
|
||||||
GlobalConst.sig_stop_spawning.emit(true)
|
GlobalConst.sig_stop_spawning.emit(true)
|
||||||
sprite_2d.z_index += 10
|
sprite_2d.z_index += 10
|
||||||
get_taunted()
|
get_taunted()
|
||||||
@@ -75,18 +77,19 @@ func death_animation(delta: float):
|
|||||||
|
|
||||||
|
|
||||||
func get_taunted():
|
func get_taunted():
|
||||||
var taunting_enemies: Array[Enemy] = []
|
var taunting_enemies: Array[EnemyBase] = []
|
||||||
for body in get_tree().get_nodes_in_group(GlobalConst.GROUP_ENEMY):
|
for body in get_tree().get_nodes_in_group(GlobalConst.GROUP_ENEMY):
|
||||||
if global_position.distance_to(body.global_position) < 500.0:
|
print_debug("starting taunt: %s" % global_position.distance_to(body.global_position))
|
||||||
|
if global_position.distance_to(body.global_position) < 1000.0:
|
||||||
taunting_enemies.append(body)
|
taunting_enemies.append(body)
|
||||||
|
print_debug("getting taunted by %s enemies" % len(taunting_enemies))
|
||||||
for i in range(taunting_enemies.size()):
|
for i in range(taunting_enemies.size()):
|
||||||
var angle = (TAU / taunting_enemies.size()) * i
|
var angle = (TAU / taunting_enemies.size()) * i
|
||||||
var target_pos = Vector2(cos(angle), sin(angle)) * 50
|
var target_pos = Vector2(cos(angle), sin(angle)) * 50
|
||||||
var new_target = StaticBody2D.new()
|
var new_target = Marker2D.new()
|
||||||
var collision = CollisionShape2D.new()
|
print_debug("getting taunted by %s" % taunting_enemies[i])
|
||||||
new_target.position = target_pos
|
new_target.position = target_pos
|
||||||
add_child(new_target)
|
add_child(new_target)
|
||||||
new_target.add_child(collision)
|
|
||||||
taunting_enemies[i].target = new_target
|
taunting_enemies[i].target = new_target
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
[gd_resource type="TileSet" load_steps=8 format=3 uid="uid://c3clgitssvdlg"]
|
[gd_resource type="TileSet" load_steps=9 format=3 uid="uid://c3clgitssvdlg"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://2xgqhe7u6lfq" path="res://assets/sprites/roguelikeSheet_transparent.png" id="1_kkifh"]
|
[ext_resource type="Texture2D" uid="uid://2xgqhe7u6lfq" path="res://assets/sprites/roguelikeSheet_transparent.png" id="1_kkifh"]
|
||||||
[ext_resource type="Shader" uid="uid://clpp23h7fpamt" path="res://assets/shaders/water2.gdshader" id="1_n3s2j"]
|
[ext_resource type="Shader" uid="uid://clpp23h7fpamt" path="res://assets/shaders/water2.gdshader" id="1_n3s2j"]
|
||||||
@@ -26,6 +26,12 @@ shader_parameter/noise_tex = SubResource("NoiseTexture2D_m3ddo")
|
|||||||
shader_parameter/noise_speed = Vector2(0.03, 0.01)
|
shader_parameter/noise_speed = Vector2(0.03, 0.01)
|
||||||
shader_parameter/noise_strength = 0.05
|
shader_parameter/noise_strength = 0.05
|
||||||
|
|
||||||
|
[sub_resource type="NavigationPolygon" id="NavigationPolygon_n3s2j"]
|
||||||
|
vertices = PackedVector2Array(8, 8, -8, 8, -8, -8, 8, -8)
|
||||||
|
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||||
|
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||||
|
agent_radius = 0.0
|
||||||
|
|
||||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s7nh2"]
|
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s7nh2"]
|
||||||
texture = ExtResource("1_kkifh")
|
texture = ExtResource("1_kkifh")
|
||||||
separation = Vector2i(1, 1)
|
separation = Vector2i(1, 1)
|
||||||
@@ -74,10 +80,15 @@ separation = Vector2i(1, 1)
|
|||||||
4:0/0/terrains_peering_bit/top_right_corner = 0
|
4:0/0/terrains_peering_bit/top_right_corner = 0
|
||||||
5:0/0 = 0
|
5:0/0 = 0
|
||||||
5:0/0/terrain_set = 0
|
5:0/0/terrain_set = 0
|
||||||
|
5:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
6:0/0 = 0
|
6:0/0 = 0
|
||||||
|
6:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
7:0/0 = 0
|
7:0/0 = 0
|
||||||
|
7:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
8:0/0 = 0
|
8:0/0 = 0
|
||||||
|
8:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
9:0/0 = 0
|
9:0/0 = 0
|
||||||
|
9:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
10:0/0 = 0
|
10:0/0 = 0
|
||||||
11:0/0 = 0
|
11:0/0 = 0
|
||||||
12:0/0 = 0
|
12:0/0 = 0
|
||||||
@@ -197,10 +208,15 @@ separation = Vector2i(1, 1)
|
|||||||
5:1/0/terrains_peering_bit/top_left_corner = 0
|
5:1/0/terrains_peering_bit/top_left_corner = 0
|
||||||
5:1/0/terrains_peering_bit/top_side = 0
|
5:1/0/terrains_peering_bit/top_side = 0
|
||||||
5:1/0/terrains_peering_bit/top_right_corner = 0
|
5:1/0/terrains_peering_bit/top_right_corner = 0
|
||||||
|
5:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
6:1/0 = 0
|
6:1/0 = 0
|
||||||
|
6:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
7:1/0 = 0
|
7:1/0 = 0
|
||||||
|
7:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
8:1/0 = 0
|
8:1/0 = 0
|
||||||
|
8:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
9:1/0 = 0
|
9:1/0 = 0
|
||||||
|
9:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
10:1/0 = 0
|
10:1/0 = 0
|
||||||
11:1/0 = 0
|
11:1/0 = 0
|
||||||
12:1/0 = 0
|
12:1/0 = 0
|
||||||
@@ -311,10 +327,15 @@ separation = Vector2i(1, 1)
|
|||||||
4:2/0/terrains_peering_bit/top_side = 1
|
4:2/0/terrains_peering_bit/top_side = 1
|
||||||
4:2/0/terrains_peering_bit/top_right_corner = 0
|
4:2/0/terrains_peering_bit/top_right_corner = 0
|
||||||
5:2/0 = 0
|
5:2/0 = 0
|
||||||
|
5:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
6:2/0 = 0
|
6:2/0 = 0
|
||||||
|
6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
7:2/0 = 0
|
7:2/0 = 0
|
||||||
|
7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
8:2/0 = 0
|
8:2/0 = 0
|
||||||
|
8:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
9:2/0 = 0
|
9:2/0 = 0
|
||||||
|
9:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
10:2/0 = 0
|
10:2/0 = 0
|
||||||
11:2/0 = 0
|
11:2/0 = 0
|
||||||
12:2/0 = 0
|
12:2/0 = 0
|
||||||
@@ -368,10 +389,15 @@ separation = Vector2i(1, 1)
|
|||||||
3:3/0 = 0
|
3:3/0 = 0
|
||||||
4:3/0 = 0
|
4:3/0 = 0
|
||||||
5:3/0 = 0
|
5:3/0 = 0
|
||||||
|
5:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
6:3/0 = 0
|
6:3/0 = 0
|
||||||
|
6:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
7:3/0 = 0
|
7:3/0 = 0
|
||||||
|
7:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
8:3/0 = 0
|
8:3/0 = 0
|
||||||
|
8:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
9:3/0 = 0
|
9:3/0 = 0
|
||||||
|
9:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
10:3/0 = 0
|
10:3/0 = 0
|
||||||
11:3/0 = 0
|
11:3/0 = 0
|
||||||
12:3/0 = 0
|
12:3/0 = 0
|
||||||
@@ -425,10 +451,15 @@ separation = Vector2i(1, 1)
|
|||||||
3:4/0 = 0
|
3:4/0 = 0
|
||||||
4:4/0 = 0
|
4:4/0 = 0
|
||||||
5:4/0 = 0
|
5:4/0 = 0
|
||||||
|
5:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
6:4/0 = 0
|
6:4/0 = 0
|
||||||
|
6:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
7:4/0 = 0
|
7:4/0 = 0
|
||||||
|
7:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
8:4/0 = 0
|
8:4/0 = 0
|
||||||
|
8:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
9:4/0 = 0
|
9:4/0 = 0
|
||||||
|
9:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
10:4/0 = 0
|
10:4/0 = 0
|
||||||
11:4/0 = 0
|
11:4/0 = 0
|
||||||
12:4/0 = 0
|
12:4/0 = 0
|
||||||
@@ -482,10 +513,15 @@ separation = Vector2i(1, 1)
|
|||||||
3:5/0 = 0
|
3:5/0 = 0
|
||||||
4:5/0 = 0
|
4:5/0 = 0
|
||||||
5:5/0 = 0
|
5:5/0 = 0
|
||||||
|
5:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
6:5/0 = 0
|
6:5/0 = 0
|
||||||
|
6:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
7:5/0 = 0
|
7:5/0 = 0
|
||||||
|
7:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
8:5/0 = 0
|
8:5/0 = 0
|
||||||
|
8:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
9:5/0 = 0
|
9:5/0 = 0
|
||||||
|
9:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_n3s2j")
|
||||||
10:5/0 = 0
|
10:5/0 = 0
|
||||||
11:5/0 = 0
|
11:5/0 = 0
|
||||||
12:5/0 = 0
|
12:5/0 = 0
|
||||||
@@ -1965,5 +2001,6 @@ terrain_set_0/terrain_0/name = "Grass"
|
|||||||
terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1)
|
terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1)
|
||||||
terrain_set_0/terrain_1/name = "Water"
|
terrain_set_0/terrain_1/name = "Water"
|
||||||
terrain_set_0/terrain_1/color = Color(0.5, 0.4375, 0.25, 1)
|
terrain_set_0/terrain_1/color = Color(0.5, 0.4375, 0.25, 1)
|
||||||
|
navigation_layer_0/layers = 1
|
||||||
sources/0 = SubResource("TileSetAtlasSource_s7nh2")
|
sources/0 = SubResource("TileSetAtlasSource_s7nh2")
|
||||||
pattern_0 = SubResource("TileMapPattern_beh8d")
|
pattern_0 = SubResource("TileMapPattern_beh8d")
|
||||||
|
Reference in New Issue
Block a user