├── icon.png ├── resources ├── overlap │ ├── Hitbox.gd │ ├── Hurtbox.tscn │ └── Hitbox.tscn ├── UI │ ├── healthbar_empty.png │ ├── healthbar_full.png │ ├── healthbar_border.png │ ├── EntityHealthbar.gd │ ├── DamageIndicator.gd │ ├── EntityHealthbar.tscn │ ├── healthbar_empty.png.import │ ├── healthbar_full.png.import │ ├── healthbar_border.png.import │ └── DamageIndicator.tscn ├── projectiles │ ├── PlayerDagger.gd │ └── PlayerDagger.tscn ├── levels │ └── LevelBase.tscn ├── effects │ ├── HitEffect.tscn │ └── DeathEffect.tscn └── entity │ ├── EntityBase.tscn │ ├── player │ ├── Player.gd │ └── Player.tscn │ ├── enemy │ └── EnemyBase.tscn │ └── EntityBase.gd ├── Dungeon Crawler Pack ├── full tilemap.png ├── full spritesheet.png ├── ui (new) │ ├── health_ui.png │ └── health_ui.png.import ├── heroes │ └── knight │ │ ├── weapon_sword_1.png │ │ ├── knight_run_anim_f0.png │ │ ├── knight_run_anim_f1.png │ │ ├── knight_run_anim_f2.png │ │ ├── knight_run_anim_f3.png │ │ ├── knight_run_anim_f4.png │ │ ├── knight_run_anim_f5.png │ │ ├── knight_idle_anim_f0.png │ │ ├── knight_idle_anim_f1.png │ │ ├── knight_idle_anim_f2.png │ │ ├── knight_idle_anim_f3.png │ │ ├── knight_idle_anim_f4.png │ │ ├── knight_idle_anim_f5.png │ │ ├── knight_idle_spritesheet.png │ │ ├── knight_run_spritesheet.png │ │ ├── weapon_sword_1.png.import │ │ ├── knight_idle_anim_f0.png.import │ │ ├── knight_idle_anim_f1.png.import │ │ ├── knight_idle_anim_f2.png.import │ │ ├── knight_idle_anim_f3.png.import │ │ ├── knight_idle_anim_f4.png.import │ │ ├── knight_idle_anim_f5.png.import │ │ ├── knight_run_anim_f0.png.import │ │ ├── knight_run_anim_f1.png.import │ │ ├── knight_run_anim_f2.png.import │ │ ├── knight_run_anim_f3.png.import │ │ ├── knight_run_anim_f4.png.import │ │ ├── knight_run_anim_f5.png.import │ │ ├── knight_run_spritesheet.png.import │ │ └── knight_idle_spritesheet.png.import ├── enemies │ └── flying creature │ │ ├── fly_anim_f0.png │ │ ├── fly_anim_f1.png │ │ ├── fly_anim_f2.png │ │ ├── fly_anim_f3.png │ │ ├── fly_anim_spritesheet.png │ │ ├── fly_anim_f0.png.import │ │ ├── fly_anim_f1.png.import │ │ ├── fly_anim_f2.png.import │ │ ├── fly_anim_f3.png.import │ │ └── fly_anim_spritesheet.png.import ├── effects (new) │ ├── hit_effect_anim_spritesheet.png │ ├── enemy_afterdead_explosion_anim_spritesheet.png │ ├── hit_effect_anim_spritesheet.png.import │ └── enemy_afterdead_explosion_anim_spritesheet.png.import ├── full tilemap.png.import └── full spritesheet.png.import ├── .gitignore ├── default_env.tres ├── README_PROJECT INFO.txt ├── icon.png.import ├── LICENSE └── project.godot /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/icon.png -------------------------------------------------------------------------------- /resources/overlap/Hitbox.gd: -------------------------------------------------------------------------------- 1 | extends Area2D 2 | 3 | export(int) var damage: int = 10 4 | -------------------------------------------------------------------------------- /resources/UI/healthbar_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/resources/UI/healthbar_empty.png -------------------------------------------------------------------------------- /resources/UI/healthbar_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/resources/UI/healthbar_full.png -------------------------------------------------------------------------------- /resources/UI/healthbar_border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/resources/UI/healthbar_border.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/full tilemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/full tilemap.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/full spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/full spritesheet.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/ui (new)/health_ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/ui (new)/health_ui.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Godot-specific ignores 3 | .import/ 4 | export.cfg 5 | export_presets.cfg 6 | 7 | # Mono-specific ignores 8 | .mono/ 9 | data_*/ 10 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/weapon_sword_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/weapon_sword_1.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_run_anim_f0.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_run_anim_f1.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_run_anim_f2.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_run_anim_f3.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_run_anim_f4.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_run_anim_f5.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f0.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f1.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f2.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f3.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f4.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f5.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_f0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/enemies/flying creature/fly_anim_f0.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_f1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/enemies/flying creature/fly_anim_f1.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_f2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/enemies/flying creature/fly_anim_f2.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_f3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/enemies/flying creature/fly_anim_f3.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_idle_spritesheet.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/heroes/knight/knight_run_spritesheet.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/effects (new)/hit_effect_anim_spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/effects (new)/hit_effect_anim_spritesheet.png -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/enemies/flying creature/fly_anim_spritesheet.png -------------------------------------------------------------------------------- /default_env.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Environment" load_steps=2 format=2] 2 | 3 | [sub_resource type="ProceduralSky" id=1] 4 | 5 | [resource] 6 | background_mode = 2 7 | background_sky = SubResource( 1 ) 8 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/effects (new)/enemy_afterdead_explosion_anim_spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvessJohn/combat-done-right-godot/HEAD/Dungeon Crawler Pack/effects (new)/enemy_afterdead_explosion_anim_spritesheet.png -------------------------------------------------------------------------------- /resources/overlap/Hurtbox.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene format=2] 2 | 3 | [node name="Hurtbox" type="Area2D"] 4 | modulate = Color( 0.556863, 0.905882, 0.172549, 1 ) 5 | monitorable = false 6 | 7 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 8 | -------------------------------------------------------------------------------- /resources/overlap/Hitbox.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://resources/overlap/Hitbox.gd" type="Script" id=1] 4 | 5 | [node name="Hitbox" type="Area2D"] 6 | monitoring = false 7 | script = ExtResource( 1 ) 8 | 9 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 10 | -------------------------------------------------------------------------------- /resources/UI/EntityHealthbar.gd: -------------------------------------------------------------------------------- 1 | extends TextureProgress 2 | 3 | 4 | func _ready(): 5 | yield(get_tree(), "idle_frame") 6 | value = get_parent().hp 7 | max_value = get_parent().hp_max 8 | 9 | func animate_hp_change(new_hp: int, old_hp: int = value): 10 | $Tween.interpolate_property(self, "value", old_hp, 11 | new_hp, 0.1, Tween.TRANS_SINE, Tween.EASE_IN_OUT, 0.025) 12 | $Tween.start() 13 | -------------------------------------------------------------------------------- /resources/UI/DamageIndicator.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | 3 | export(int) var SPEED: int = 30 4 | export(int) var FRICTION: int = 15 5 | var SHIFT_DIRECTION: Vector2 = Vector2.ZERO 6 | 7 | onready var label = $Label 8 | 9 | func _ready(): 10 | SHIFT_DIRECTION = Vector2(rand_range(-1, 1), rand_range(-1, 1)) 11 | 12 | func _process(delta): 13 | global_position += SPEED * SHIFT_DIRECTION * delta 14 | SPEED = max(SPEED - FRICTION * delta, 0) 15 | -------------------------------------------------------------------------------- /resources/projectiles/PlayerDagger.gd: -------------------------------------------------------------------------------- 1 | extends "res://resources/overlap/Hitbox.gd" 2 | 3 | export(int) var SPEED: int = 100 4 | 5 | func _physics_process(delta): 6 | var direction = Vector2.RIGHT.rotated(rotation) 7 | global_position += SPEED * direction * delta 8 | 9 | func destroy(): 10 | queue_free() 11 | 12 | func _on_PlayerDagger_area_entered(area): 13 | destroy() 14 | 15 | func _on_PlayerDagger_body_entered(body): 16 | destroy() 17 | 18 | 19 | func _on_VisibilityNotifier2D_screen_exited(): 20 | queue_free() 21 | -------------------------------------------------------------------------------- /resources/levels/LevelBase.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://resources/entity/player/Player.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://resources/entity/enemy/EnemyBase.tscn" type="PackedScene" id=2] 5 | 6 | [node name="LevelBase" type="Node2D"] 7 | 8 | [node name="Player" parent="." instance=ExtResource( 1 )] 9 | position = Vector2( 41.6693, 38.0976 ) 10 | defense = 5 11 | 12 | [node name="EnemyBase" parent="." instance=ExtResource( 2 )] 13 | position = Vector2( 100.006, 41.6693 ) 14 | -------------------------------------------------------------------------------- /README_PROJECT INFO.txt: -------------------------------------------------------------------------------- 1 | Thank you for taking the time to read this document. 2 | 3 | This project was built for my (John Ivess's) Godot tutorial series "Combat Done Right." 4 | My channel: https://www.youtube.com/channel/UC_6NEtc-WKFEOr8vKpjWHlA 5 | 6 | The code is under MIT license, which allows you to freely use this code with no restrictions. 7 | 8 | The art used for this project IS NOT MINE. o_lobster is the rightful author of the art pack. I have received official permission from him on using his work for this project. The original asset was cut to only the materials directly used in the project. 9 | The original asset pack: https://o-lobster.itch.io/simple-dungeon-crawler-16x16-pixel-pack 10 | o_lobster's itch.io page: https://o-lobster.itch.io/ -------------------------------------------------------------------------------- /icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://icon.png" 13 | dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=true 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /resources/UI/EntityHealthbar.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://resources/UI/healthbar_empty.png" type="Texture" id=1] 4 | [ext_resource path="res://resources/UI/healthbar_full.png" type="Texture" id=2] 5 | [ext_resource path="res://resources/UI/healthbar_border.png" type="Texture" id=3] 6 | [ext_resource path="res://resources/UI/EntityHealthbar.gd" type="Script" id=4] 7 | 8 | [node name="EntityHealthbar" type="TextureProgress" groups=[ 9 | "Healthbar", 10 | ]] 11 | margin_right = 40.0 12 | margin_bottom = 40.0 13 | rect_scale = Vector2( 0.7, 0.5 ) 14 | texture_under = ExtResource( 1 ) 15 | texture_over = ExtResource( 3 ) 16 | texture_progress = ExtResource( 2 ) 17 | script = ExtResource( 4 ) 18 | __meta__ = { 19 | "_edit_use_anchors_": false 20 | } 21 | 22 | [node name="Tween" type="Tween" parent="."] 23 | -------------------------------------------------------------------------------- /resources/UI/healthbar_empty.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/healthbar_empty.png-fa3dd8af02dbccb1e7b434a75e503720.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://resources/UI/healthbar_empty.png" 13 | dest_files=[ "res://.import/healthbar_empty.png-fa3dd8af02dbccb1e7b434a75e503720.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /resources/UI/healthbar_full.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/healthbar_full.png-a64a6ba8df89931fc62279d3ce46988d.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://resources/UI/healthbar_full.png" 13 | dest_files=[ "res://.import/healthbar_full.png-a64a6ba8df89931fc62279d3ce46988d.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/full tilemap.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/full tilemap.png-7bece4cc3f008e6bfe4a084bcda646e1.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/full tilemap.png" 13 | dest_files=[ "res://.import/full tilemap.png-7bece4cc3f008e6bfe4a084bcda646e1.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /resources/UI/healthbar_border.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/healthbar_border.png-b7bc256b2bca4f491ab4da76d86c8b60.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://resources/UI/healthbar_border.png" 13 | dest_files=[ "res://.import/healthbar_border.png-b7bc256b2bca4f491ab4da76d86c8b60.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/ui (new)/health_ui.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/health_ui.png-440ac7fec8bda62c98fd28aff842657b.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/ui (new)/health_ui.png" 13 | dest_files=[ "res://.import/health_ui.png-440ac7fec8bda62c98fd28aff842657b.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/full spritesheet.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/full spritesheet.png-9ca3682c48235b206ea2562325a555cd.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/full spritesheet.png" 13 | dest_files=[ "res://.import/full spritesheet.png-9ca3682c48235b206ea2562325a555cd.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/weapon_sword_1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/weapon_sword_1.png-209af85a5ad6448db34e8ddd6e6d1a42.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/weapon_sword_1.png" 13 | dest_files=[ "res://.import/weapon_sword_1.png-209af85a5ad6448db34e8ddd6e6d1a42.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_f0.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/fly_anim_f0.png-97179109dd7622181ac6d6cd11705595.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/enemies/flying creature/fly_anim_f0.png" 13 | dest_files=[ "res://.import/fly_anim_f0.png-97179109dd7622181ac6d6cd11705595.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_f1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/fly_anim_f1.png-4f9252f0127af15c61ea8346d6e35d79.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/enemies/flying creature/fly_anim_f1.png" 13 | dest_files=[ "res://.import/fly_anim_f1.png-4f9252f0127af15c61ea8346d6e35d79.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_f2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/fly_anim_f2.png-96a2a05f881872d034c69a91faff5621.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/enemies/flying creature/fly_anim_f2.png" 13 | dest_files=[ "res://.import/fly_anim_f2.png-96a2a05f881872d034c69a91faff5621.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_f3.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/fly_anim_f3.png-3bb0a94ed02a5bf35942aee8eecc6a5f.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/enemies/flying creature/fly_anim_f3.png" 13 | dest_files=[ "res://.import/fly_anim_f3.png-3bb0a94ed02a5bf35942aee8eecc6a5f.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f0.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_idle_anim_f0.png-779b881ebfd4def23ea8e50425cd2b2d.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f0.png" 13 | dest_files=[ "res://.import/knight_idle_anim_f0.png-779b881ebfd4def23ea8e50425cd2b2d.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_idle_anim_f1.png-4ee2f047aa67929b5f88fd0d1ba01bb8.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f1.png" 13 | dest_files=[ "res://.import/knight_idle_anim_f1.png-4ee2f047aa67929b5f88fd0d1ba01bb8.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_idle_anim_f2.png-48163b619c563eacadd92a57caa81ec3.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f2.png" 13 | dest_files=[ "res://.import/knight_idle_anim_f2.png-48163b619c563eacadd92a57caa81ec3.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f3.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_idle_anim_f3.png-38c25faae33ea80838dd8cd5f8c48366.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f3.png" 13 | dest_files=[ "res://.import/knight_idle_anim_f3.png-38c25faae33ea80838dd8cd5f8c48366.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f4.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_idle_anim_f4.png-8621e3d5e765d1fc4345c774de9db6b9.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f4.png" 13 | dest_files=[ "res://.import/knight_idle_anim_f4.png-8621e3d5e765d1fc4345c774de9db6b9.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f5.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_idle_anim_f5.png-9ee74c61145a5ec107ef667e2de54afe.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_idle_anim_f5.png" 13 | dest_files=[ "res://.import/knight_idle_anim_f5.png-9ee74c61145a5ec107ef667e2de54afe.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f0.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_run_anim_f0.png-5a7ee5df0deee91e5503ee1d4f1a8eb5.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_run_anim_f0.png" 13 | dest_files=[ "res://.import/knight_run_anim_f0.png-5a7ee5df0deee91e5503ee1d4f1a8eb5.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f1.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_run_anim_f1.png-61ee0e342f8873effc46818b4eb9863c.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_run_anim_f1.png" 13 | dest_files=[ "res://.import/knight_run_anim_f1.png-61ee0e342f8873effc46818b4eb9863c.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_run_anim_f2.png-6e2d70b4375e6cef9cc83e230dc11606.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_run_anim_f2.png" 13 | dest_files=[ "res://.import/knight_run_anim_f2.png-6e2d70b4375e6cef9cc83e230dc11606.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f3.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_run_anim_f3.png-48b003b9fa0415747d5777e134fc6c04.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_run_anim_f3.png" 13 | dest_files=[ "res://.import/knight_run_anim_f3.png-48b003b9fa0415747d5777e134fc6c04.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f4.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_run_anim_f4.png-6c662628c810ad2748c9261abd6b968b.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_run_anim_f4.png" 13 | dest_files=[ "res://.import/knight_run_anim_f4.png-6c662628c810ad2748c9261abd6b968b.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_anim_f5.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_run_anim_f5.png-85d4cc84da0755b3d62f6e8e2ecfd4aa.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_run_anim_f5.png" 13 | dest_files=[ "res://.import/knight_run_anim_f5.png-85d4cc84da0755b3d62f6e8e2ecfd4aa.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_run_spritesheet.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_run_spritesheet.png-0dc1b0ddaea3bd74a00b2431e5a6bec8.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_run_spritesheet.png" 13 | dest_files=[ "res://.import/knight_run_spritesheet.png-0dc1b0ddaea3bd74a00b2431e5a6bec8.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/heroes/knight/knight_idle_spritesheet.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/knight_idle_spritesheet.png-82c37b03790712604b770bd5efe3eee2.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/heroes/knight/knight_idle_spritesheet.png" 13 | dest_files=[ "res://.import/knight_idle_spritesheet.png-82c37b03790712604b770bd5efe3eee2.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/enemies/flying creature/fly_anim_spritesheet.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/fly_anim_spritesheet.png-0e27e81b38214f9920c5fdddc0d14460.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/enemies/flying creature/fly_anim_spritesheet.png" 13 | dest_files=[ "res://.import/fly_anim_spritesheet.png-0e27e81b38214f9920c5fdddc0d14460.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/effects (new)/hit_effect_anim_spritesheet.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/hit_effect_anim_spritesheet.png-4c8a98fdd1ea0fb67c9b6e3808d3a370.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/effects (new)/hit_effect_anim_spritesheet.png" 13 | dest_files=[ "res://.import/hit_effect_anim_spritesheet.png-4c8a98fdd1ea0fb67c9b6e3808d3a370.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /Dungeon Crawler Pack/effects (new)/enemy_afterdead_explosion_anim_spritesheet.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/enemy_afterdead_explosion_anim_spritesheet.png-39023894676c6cd9992d14da1702920e.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Dungeon Crawler Pack/effects (new)/enemy_afterdead_explosion_anim_spritesheet.png" 13 | dest_files=[ "res://.import/enemy_afterdead_explosion_anim_spritesheet.png-39023894676c6cd9992d14da1702920e.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=false 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 IvessJohn 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /resources/projectiles/PlayerDagger.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://resources/overlap/Hitbox.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://Dungeon Crawler Pack/heroes/knight/weapon_sword_1.png" type="Texture" id=2] 5 | [ext_resource path="res://resources/projectiles/PlayerDagger.gd" type="Script" id=3] 6 | 7 | [sub_resource type="RectangleShape2D" id=1] 8 | extents = Vector2( 7, 3 ) 9 | 10 | [node name="PlayerDagger" groups=[ 11 | "Projectile", 12 | ] instance=ExtResource( 1 )] 13 | collision_layer = 8 14 | collision_mask = 5 15 | script = ExtResource( 3 ) 16 | 17 | [node name="Sprite" type="Sprite" parent="." index="0"] 18 | rotation = 0.785398 19 | texture = ExtResource( 2 ) 20 | 21 | [node name="CollisionShape2D" parent="." index="1"] 22 | shape = SubResource( 1 ) 23 | 24 | [node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="." index="2"] 25 | 26 | [connection signal="area_entered" from="." to="." method="_on_PlayerDagger_area_entered"] 27 | [connection signal="body_entered" from="." to="." method="_on_PlayerDagger_body_entered"] 28 | [connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] 29 | -------------------------------------------------------------------------------- /resources/effects/HitEffect.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://Dungeon Crawler Pack/effects (new)/hit_effect_anim_spritesheet.png" type="Texture" id=1] 4 | 5 | [sub_resource type="Animation" id=1] 6 | resource_name = "default" 7 | length = 0.3 8 | tracks/0/type = "value" 9 | tracks/0/path = NodePath(".:frame") 10 | tracks/0/interp = 1 11 | tracks/0/loop_wrap = true 12 | tracks/0/imported = false 13 | tracks/0/enabled = true 14 | tracks/0/keys = { 15 | "times": PoolRealArray( 0, 0.1, 0.2 ), 16 | "transitions": PoolRealArray( 1, 1, 1 ), 17 | "update": 1, 18 | "values": [ 0, 1, 2 ] 19 | } 20 | tracks/1/type = "method" 21 | tracks/1/path = NodePath(".") 22 | tracks/1/interp = 1 23 | tracks/1/loop_wrap = true 24 | tracks/1/imported = false 25 | tracks/1/enabled = true 26 | tracks/1/keys = { 27 | "times": PoolRealArray( 0.3 ), 28 | "transitions": PoolRealArray( 1 ), 29 | "values": [ { 30 | "args": [ ], 31 | "method": "queue_free" 32 | } ] 33 | } 34 | 35 | [node name="HitEffect" type="Sprite" groups=[ 36 | "Effects", 37 | ]] 38 | texture = ExtResource( 1 ) 39 | hframes = 3 40 | frame = 2 41 | 42 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."] 43 | autoplay = "default" 44 | anims/default = SubResource( 1 ) 45 | -------------------------------------------------------------------------------- /resources/effects/DeathEffect.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [sub_resource type="StreamTexture" id=1] 4 | load_path = "res://.import/enemy_afterdead_explosion_anim_spritesheet.png-39023894676c6cd9992d14da1702920e.stex" 5 | 6 | [sub_resource type="Animation" id=2] 7 | length = 0.4 8 | tracks/0/type = "value" 9 | tracks/0/path = NodePath(".:frame") 10 | tracks/0/interp = 1 11 | tracks/0/loop_wrap = true 12 | tracks/0/imported = false 13 | tracks/0/enabled = true 14 | tracks/0/keys = { 15 | "times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), 16 | "transitions": PoolRealArray( 1, 1, 1, 1 ), 17 | "update": 1, 18 | "values": [ 0, 1, 2, 3 ] 19 | } 20 | tracks/1/type = "method" 21 | tracks/1/path = NodePath(".") 22 | tracks/1/interp = 1 23 | tracks/1/loop_wrap = true 24 | tracks/1/imported = false 25 | tracks/1/enabled = true 26 | tracks/1/keys = { 27 | "times": PoolRealArray( 0.4 ), 28 | "transitions": PoolRealArray( 1 ), 29 | "values": [ { 30 | "args": [ ], 31 | "method": "queue_free" 32 | } ] 33 | } 34 | 35 | [node name="DeathEffect" type="Sprite" groups=[ 36 | "Effects", 37 | ]] 38 | texture = SubResource( 1 ) 39 | hframes = 4 40 | frame = 3 41 | 42 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."] 43 | autoplay = "default" 44 | anims/default = SubResource( 2 ) 45 | -------------------------------------------------------------------------------- /resources/entity/EntityBase.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=2] 2 | 3 | [ext_resource path="res://resources/entity/EntityBase.gd" type="Script" id=1] 4 | [ext_resource path="res://resources/overlap/Hurtbox.tscn" type="PackedScene" id=2] 5 | [ext_resource path="res://resources/effects/HitEffect.tscn" type="PackedScene" id=3] 6 | [ext_resource path="res://resources/effects/DeathEffect.tscn" type="PackedScene" id=4] 7 | [ext_resource path="res://resources/UI/EntityHealthbar.tscn" type="PackedScene" id=5] 8 | 9 | [node name="EntityBase" type="KinematicBody2D"] 10 | script = ExtResource( 1 ) 11 | EFFECT_HIT = ExtResource( 3 ) 12 | EFFECT_DIED = ExtResource( 4 ) 13 | 14 | [node name="Sprite" type="Sprite" parent="."] 15 | 16 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 17 | 18 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."] 19 | 20 | [node name="Hurtbox" parent="." instance=ExtResource( 2 )] 21 | 22 | [node name="EntityHealthbar" parent="." instance=ExtResource( 5 )] 23 | visible = false 24 | margin_left = -11.0 25 | margin_top = -20.0 26 | margin_right = 29.0 27 | margin_bottom = 20.0 28 | 29 | [connection signal="died" from="." to="." method="_on_EntityBase_died"] 30 | [connection signal="area_entered" from="Hurtbox" to="." method="_on_Hurtbox_area_entered"] 31 | 32 | [editable path="Hurtbox"] 33 | -------------------------------------------------------------------------------- /resources/entity/player/Player.gd: -------------------------------------------------------------------------------- 1 | extends "res://resources/entity/EntityBase.gd" 2 | 3 | export(PackedScene) var DAGGER: PackedScene = preload("res://resources/projectiles/PlayerDagger.tscn") 4 | 5 | onready var attackTimer = $AttackTimer 6 | 7 | 8 | func _physics_process(delta): 9 | var input_dir = get_input_direction() 10 | if input_dir != Vector2.ZERO: 11 | # PLAYER IS MOVING 12 | velocity = SPEED * input_dir 13 | animPlayer.play("run") 14 | if input_dir.x != 0 and sign(sprite.scale.x) != sign(input_dir.x): 15 | sprite.scale.x *= -1 16 | else: 17 | # PLAYER IS IDLE 18 | velocity = Vector2.ZERO 19 | animPlayer.play("idle") 20 | 21 | if Input.is_action_just_pressed("action_attack") and attackTimer.is_stopped(): 22 | var dagger_direction = self.global_position.direction_to(get_global_mouse_position()) 23 | throw_dagger(dagger_direction) 24 | 25 | move() 26 | 27 | func throw_dagger(dagger_direction: Vector2): 28 | if DAGGER: 29 | var dagger = DAGGER.instance() 30 | get_tree().current_scene.add_child(dagger) 31 | dagger.global_position = self.global_position 32 | 33 | var dagger_rotation = dagger_direction.angle() 34 | dagger.rotation = dagger_rotation 35 | 36 | attackTimer.start() 37 | 38 | func get_input_direction() -> Vector2: 39 | var input_dir: Vector2 = Vector2.ZERO 40 | 41 | input_dir.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left") 42 | input_dir.y = Input.get_action_strength("move_down") - Input.get_action_strength("move_up") 43 | input_dir = input_dir.normalized() 44 | 45 | return input_dir 46 | 47 | -------------------------------------------------------------------------------- /resources/UI/DamageIndicator.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://resources/UI/DamageIndicator.gd" type="Script" id=1] 4 | 5 | [sub_resource type="Animation" id=1] 6 | resource_name = "showDamage" 7 | tracks/0/type = "method" 8 | tracks/0/path = NodePath(".") 9 | tracks/0/interp = 1 10 | tracks/0/loop_wrap = true 11 | tracks/0/imported = false 12 | tracks/0/enabled = true 13 | tracks/0/keys = { 14 | "times": PoolRealArray( 1 ), 15 | "transitions": PoolRealArray( 1 ), 16 | "values": [ { 17 | "args": [ ], 18 | "method": "queue_free" 19 | } ] 20 | } 21 | tracks/1/type = "value" 22 | tracks/1/path = NodePath(".:scale") 23 | tracks/1/interp = 1 24 | tracks/1/loop_wrap = true 25 | tracks/1/imported = false 26 | tracks/1/enabled = true 27 | tracks/1/keys = { 28 | "times": PoolRealArray( 0, 0.3 ), 29 | "transitions": PoolRealArray( 1, 1 ), 30 | "update": 0, 31 | "values": [ Vector2( 0.5, 0.5 ), Vector2( 1, 1 ) ] 32 | } 33 | tracks/2/type = "value" 34 | tracks/2/path = NodePath(".:modulate") 35 | tracks/2/interp = 1 36 | tracks/2/loop_wrap = true 37 | tracks/2/imported = false 38 | tracks/2/enabled = true 39 | tracks/2/keys = { 40 | "times": PoolRealArray( 0, 0.3, 1 ), 41 | "transitions": PoolRealArray( 1, 1, 1 ), 42 | "update": 0, 43 | "values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] 44 | } 45 | 46 | [node name="DamageIndicator" type="Node2D"] 47 | scale = Vector2( 0.5, 0.5 ) 48 | script = ExtResource( 1 ) 49 | 50 | [node name="Label" type="Label" parent="."] 51 | margin_right = 40.0 52 | margin_bottom = 14.0 53 | grow_horizontal = 2 54 | text = "0" 55 | __meta__ = { 56 | "_edit_use_anchors_": false 57 | } 58 | 59 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."] 60 | autoplay = "showDamage" 61 | anims/showDamage = SubResource( 1 ) 62 | -------------------------------------------------------------------------------- /resources/entity/enemy/EnemyBase.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=7 format=2] 2 | 3 | [ext_resource path="res://resources/entity/EntityBase.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://Dungeon Crawler Pack/enemies/flying creature/fly_anim_spritesheet.png" type="Texture" id=2] 5 | [ext_resource path="res://resources/overlap/Hitbox.tscn" type="PackedScene" id=3] 6 | 7 | [sub_resource type="Animation" id=1] 8 | resource_name = "flying" 9 | length = 0.4 10 | loop = true 11 | tracks/0/type = "value" 12 | tracks/0/path = NodePath("Sprite:frame") 13 | tracks/0/interp = 1 14 | tracks/0/loop_wrap = true 15 | tracks/0/imported = false 16 | tracks/0/enabled = true 17 | tracks/0/keys = { 18 | "times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), 19 | "transitions": PoolRealArray( 1, 1, 1, 1 ), 20 | "update": 1, 21 | "values": [ 0, 1, 2, 3 ] 22 | } 23 | 24 | [sub_resource type="CapsuleShape2D" id=2] 25 | radius = 7.0 26 | height = 4.0 27 | 28 | [sub_resource type="CapsuleShape2D" id=3] 29 | radius = 6.0 30 | height = 4.0 31 | 32 | [node name="EnemyBase" instance=ExtResource( 1 )] 33 | collision_layer = 4 34 | collision_mask = 7 35 | 36 | [node name="Sprite" parent="." index="0"] 37 | position = Vector2( 0, -5 ) 38 | texture = ExtResource( 2 ) 39 | hframes = 4 40 | 41 | [node name="AnimationPlayer" parent="." index="2"] 42 | autoplay = "flying" 43 | anims/flying = SubResource( 1 ) 44 | 45 | [node name="Hurtbox" parent="." index="3"] 46 | collision_layer = 4 47 | collision_mask = 8 48 | 49 | [node name="CollisionShape2D" parent="Hurtbox" index="0"] 50 | shape = SubResource( 2 ) 51 | 52 | [node name="Hitbox" parent="." index="4" instance=ExtResource( 3 )] 53 | collision_layer = 4 54 | collision_mask = 2 55 | 56 | [node name="CollisionShape2D" parent="Hitbox" index="0"] 57 | shape = SubResource( 3 ) 58 | 59 | [editable path="Hurtbox"] 60 | [editable path="Hitbox"] 61 | -------------------------------------------------------------------------------- /resources/entity/player/Player.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=8 format=2] 2 | 3 | [ext_resource path="res://resources/entity/EntityBase.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://resources/entity/player/Player.gd" type="Script" id=2] 5 | [ext_resource path="res://Dungeon Crawler Pack/heroes/knight/knight_idle_spritesheet.png" type="Texture" id=3] 6 | [ext_resource path="res://Dungeon Crawler Pack/heroes/knight/knight_run_spritesheet.png" type="Texture" id=4] 7 | 8 | [sub_resource type="Animation" id=1] 9 | resource_name = "idle" 10 | length = 0.6 11 | loop = true 12 | tracks/0/type = "value" 13 | tracks/0/path = NodePath("Sprite:texture") 14 | tracks/0/interp = 1 15 | tracks/0/loop_wrap = true 16 | tracks/0/imported = false 17 | tracks/0/enabled = true 18 | tracks/0/keys = { 19 | "times": PoolRealArray( 0 ), 20 | "transitions": PoolRealArray( 1 ), 21 | "update": 1, 22 | "values": [ ExtResource( 3 ) ] 23 | } 24 | tracks/1/type = "value" 25 | tracks/1/path = NodePath("Sprite:frame") 26 | tracks/1/interp = 1 27 | tracks/1/loop_wrap = true 28 | tracks/1/imported = false 29 | tracks/1/enabled = true 30 | tracks/1/keys = { 31 | "times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5 ), 32 | "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), 33 | "update": 1, 34 | "values": [ 0, 1, 2, 3, 4, 5 ] 35 | } 36 | 37 | [sub_resource type="Animation" id=2] 38 | resource_name = "run" 39 | length = 0.6 40 | loop = true 41 | tracks/0/type = "value" 42 | tracks/0/path = NodePath("Sprite:frame") 43 | tracks/0/interp = 1 44 | tracks/0/loop_wrap = true 45 | tracks/0/imported = false 46 | tracks/0/enabled = true 47 | tracks/0/keys = { 48 | "times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5 ), 49 | "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), 50 | "update": 1, 51 | "values": [ 0, 1, 2, 3, 4, 5 ] 52 | } 53 | tracks/1/type = "value" 54 | tracks/1/path = NodePath("Sprite:texture") 55 | tracks/1/interp = 1 56 | tracks/1/loop_wrap = true 57 | tracks/1/imported = false 58 | tracks/1/enabled = true 59 | tracks/1/keys = { 60 | "times": PoolRealArray( 0 ), 61 | "transitions": PoolRealArray( 1 ), 62 | "update": 1, 63 | "values": [ ExtResource( 4 ) ] 64 | } 65 | 66 | [sub_resource type="CapsuleShape2D" id=3] 67 | radius = 4.0 68 | height = 4.0 69 | 70 | [node name="Player" instance=ExtResource( 1 )] 71 | collision_layer = 2 72 | collision_mask = 5 73 | script = ExtResource( 2 ) 74 | 75 | [node name="Sprite" parent="." index="0"] 76 | texture = ExtResource( 3 ) 77 | hframes = 6 78 | 79 | [node name="AnimationPlayer" parent="." index="2"] 80 | autoplay = "idle" 81 | anims/idle = SubResource( 1 ) 82 | anims/run = SubResource( 2 ) 83 | 84 | [node name="Hurtbox" parent="." index="3"] 85 | collision_layer = 2 86 | collision_mask = 4 87 | 88 | [node name="CollisionShape2D" parent="Hurtbox" index="0"] 89 | shape = SubResource( 3 ) 90 | 91 | [node name="AttackTimer" type="Timer" parent="." index="4"] 92 | wait_time = 0.2 93 | one_shot = true 94 | 95 | [editable path="Hurtbox"] 96 | -------------------------------------------------------------------------------- /resources/entity/EntityBase.gd: -------------------------------------------------------------------------------- 1 | extends KinematicBody2D 2 | 3 | signal hp_max_changed(new_hp_max) 4 | signal hp_changed(new_hp) 5 | signal died 6 | 7 | const INDICATOR_DAMAGE = preload("res://resources/UI/DamageIndicator.tscn") 8 | 9 | 10 | export(int) var hp_max: int = 100 setget set_hp_max 11 | export(int) var hp: int = hp_max setget set_hp, get_hp 12 | export(int) var defense: int = 0 13 | 14 | export(bool) var receives_knockback: bool = true 15 | export(float) var knockback_modifier: float = 0.1 16 | 17 | export(int) var SPEED: int = 75 18 | var velocity: Vector2 = Vector2.ZERO 19 | 20 | export(PackedScene) var EFFECT_HIT: PackedScene = null 21 | export(PackedScene) var EFFECT_DIED: PackedScene = null 22 | 23 | onready var sprite = $Sprite 24 | onready var collShape = $CollisionShape2D 25 | onready var animPlayer = $AnimationPlayer 26 | onready var hurtbox = $Hurtbox 27 | onready var healthBar = $EntityHealthbar 28 | 29 | 30 | func get_hp(): 31 | return hp 32 | 33 | func set_hp(value): 34 | if value != hp: 35 | hp = clamp(value, 0, hp_max) 36 | emit_signal("hp_changed", hp) 37 | # healthBar.value = hp 38 | healthBar.animate_hp_change(hp) 39 | if hp == 0: 40 | emit_signal("died") 41 | elif hp != hp_max: 42 | healthBar.show() 43 | 44 | func set_hp_max(value): 45 | if value != hp_max: 46 | hp_max = max(0, value) 47 | emit_signal("hp_max_changed", hp_max) 48 | healthBar.max_value = hp_max 49 | self.hp = hp 50 | 51 | func _physics_process(delta): 52 | move() 53 | 54 | func move(): 55 | velocity = move_and_slide(velocity) 56 | 57 | func die(): 58 | spawn_effect(EFFECT_DIED) 59 | queue_free() 60 | 61 | func receive_damage(base_damage: int): 62 | var actual_damage = base_damage 63 | actual_damage -= defense 64 | 65 | self.hp -= actual_damage 66 | return actual_damage 67 | 68 | func receive_knockback(damage_source_pos: Vector2, received_damage: int): 69 | if receives_knockback: 70 | var knockback_direction = damage_source_pos.direction_to(self.global_position) 71 | var knockback_strength = received_damage * knockback_modifier 72 | var knockback = knockback_direction * knockback_strength 73 | 74 | global_position += knockback 75 | 76 | 77 | func _on_Hurtbox_area_entered(hitbox): 78 | var actual_damage = receive_damage(hitbox.damage) 79 | 80 | if hitbox.is_in_group("Projectile"): 81 | hitbox.destroy() 82 | 83 | receive_knockback(hitbox.global_position, actual_damage) 84 | spawn_effect(EFFECT_HIT) 85 | spawn_dmgIndicator(actual_damage) 86 | 87 | 88 | func _on_EntityBase_died(): 89 | die() 90 | 91 | func spawn_effect(EFFECT: PackedScene, effect_position: Vector2 = global_position): 92 | if EFFECT: 93 | var effect = EFFECT.instance() 94 | get_tree().current_scene.add_child(effect) 95 | effect.global_position = effect_position 96 | return effect 97 | 98 | func spawn_dmgIndicator(damage: int): 99 | var indicator = spawn_effect(INDICATOR_DAMAGE) 100 | if indicator: 101 | indicator.label.text = str(damage) 102 | -------------------------------------------------------------------------------- /project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=4 10 | 11 | _global_script_classes=[ ] 12 | _global_script_class_icons={ 13 | } 14 | 15 | [application] 16 | 17 | config/name="Combat Done Right" 18 | run/main_scene="res://resources/levels/LevelBase.tscn" 19 | config/icon="res://icon.png" 20 | 21 | [display] 22 | 23 | window/size/width=256 24 | window/size/height=144 25 | window/size/test_width=1024 26 | window/size/test_height=576 27 | window/stretch/mode="2d" 28 | window/stretch/aspect="keep" 29 | 30 | [importer_defaults] 31 | 32 | texture={ 33 | "compress/bptc_ldr": 0, 34 | "compress/hdr_mode": 0, 35 | "compress/lossy_quality": 0.7, 36 | "compress/mode": 0, 37 | "compress/normal_map": 0, 38 | "detect_3d": false, 39 | "flags/anisotropic": false, 40 | "flags/filter": false, 41 | "flags/mipmaps": false, 42 | "flags/repeat": 0, 43 | "flags/srgb": 2, 44 | "process/HDR_as_SRGB": false, 45 | "process/fix_alpha_border": true, 46 | "process/invert_color": false, 47 | "process/premult_alpha": false, 48 | "size_limit": 0, 49 | "stream": false, 50 | "svg/scale": 1.0 51 | } 52 | 53 | [input] 54 | 55 | move_right={ 56 | "deadzone": 0.5, 57 | "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) 58 | ] 59 | } 60 | move_left={ 61 | "deadzone": 0.5, 62 | "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) 63 | ] 64 | } 65 | move_down={ 66 | "deadzone": 0.5, 67 | "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null) 68 | ] 69 | } 70 | move_up={ 71 | "deadzone": 0.5, 72 | "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null) 73 | ] 74 | } 75 | action_attack={ 76 | "deadzone": 0.5, 77 | "events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) 78 | ] 79 | } 80 | 81 | [layer_names] 82 | 83 | 2d_physics/layer_1="Environment" 84 | 2d_physics/layer_2="Player" 85 | 2d_physics/layer_3="Enemy" 86 | 2d_physics/layer_4="Projectile" 87 | 2d_physics/layer_5="Bonus" 88 | 89 | [rendering] 90 | 91 | environment/default_environment="res://default_env.tres" 92 | --------------------------------------------------------------------------------