├── .gitattributes
├── .gitignore
├── 00_Globals
├── global_audio_manager.gd
├── global_audio_manager.gd.uid
├── global_effect_manager.gd
├── global_effect_manager.gd.uid
├── global_effects
│ ├── damage_text.gd
│ ├── damage_text.gd.uid
│ └── damage_text.tscn
├── global_level_manager.gd
├── global_level_manager.gd.uid
├── global_player_manager.gd
├── global_player_manager.gd.uid
├── global_save_manager.gd
└── global_save_manager.gd.uid
├── Enemies
├── Scripts
│ ├── drop_data.gd
│ ├── drop_data.gd.uid
│ ├── enemy.gd
│ ├── enemy.gd.uid
│ ├── enemy_state_machine.gd
│ ├── enemy_state_machine.gd.uid
│ ├── pathfinder.gd
│ ├── pathfinder.gd.uid
│ ├── states
│ │ ├── enemy_state.gd
│ │ ├── enemy_state.gd.uid
│ │ ├── enemy_state_chase.gd
│ │ ├── enemy_state_chase.gd.uid
│ │ ├── enemy_state_destroy.gd
│ │ ├── enemy_state_destroy.gd.uid
│ │ ├── enemy_state_idle.gd
│ │ ├── enemy_state_idle.gd.uid
│ │ ├── enemy_state_stun.gd
│ │ ├── enemy_state_stun.gd.uid
│ │ ├── enemy_state_wander.gd
│ │ └── enemy_state_wander.gd.uid
│ ├── vision_area.gd
│ └── vision_area.gd.uid
├── Slime
│ ├── DestroySmoke.png
│ ├── DestroySmoke.png.import
│ ├── Slime.png
│ ├── Slime.png.import
│ ├── hit_00.wav
│ ├── hit_00.wav.import
│ ├── hit_01.wav
│ ├── hit_01.wav.import
│ └── slime.tscn
├── goblin
│ ├── goblin.png
│ ├── goblin.png.import
│ └── goblin.tscn
├── pathfinder.tscn
└── vision_area.tscn
├── GUI
├── dialog_system
│ ├── audio
│ │ ├── voice_blip.wav
│ │ └── voice_blip.wav.import
│ ├── dialog_choice_theme.tres
│ ├── dialog_system.tscn
│ ├── icons
│ │ ├── answer_bubble.svg
│ │ ├── answer_bubble.svg.import
│ │ ├── chat_bubble.svg
│ │ ├── chat_bubble.svg.import
│ │ ├── chat_bubbles.svg
│ │ ├── chat_bubbles.svg.import
│ │ ├── picture_bubble.svg
│ │ ├── picture_bubble.svg.import
│ │ ├── question_bubble.svg
│ │ ├── question_bubble.svg.import
│ │ ├── star_bubble.svg
│ │ ├── star_bubble.svg.import
│ │ ├── text_bubble.svg
│ │ └── text_bubble.svg.import
│ ├── scripts
│ │ ├── dialog_portrait.gd
│ │ ├── dialog_portrait.gd.uid
│ │ ├── dialog_system.gd
│ │ └── dialog_system.gd.uid
│ └── sprites
│ │ ├── text-bubble.png
│ │ └── text-bubble.png.import
├── fonts
│ ├── Abaddon Bold.ttf
│ ├── Abaddon Bold.ttf.import
│ ├── Abaddon Light.ttf
│ ├── Abaddon Light.ttf.import
│ ├── m5x7.ttf
│ └── m5x7.ttf.import
├── pause_menu
│ ├── inventory
│ │ ├── inventory_slot.tscn
│ │ ├── player_inventory.tres
│ │ └── scripts
│ │ │ ├── inventory_data.gd
│ │ │ ├── inventory_data.gd.uid
│ │ │ ├── inventory_slot_ui.gd
│ │ │ ├── inventory_slot_ui.gd.uid
│ │ │ ├── inventory_ui.gd
│ │ │ ├── inventory_ui.gd.uid
│ │ │ ├── slot_data.gd
│ │ │ └── slot_data.gd.uid
│ ├── pause_menu.gd
│ ├── pause_menu.gd.uid
│ ├── pause_menu.tscn
│ ├── quests
│ │ ├── checkbox.png
│ │ ├── checkbox.png.import
│ │ ├── quest_item.gd
│ │ ├── quest_item.gd.uid
│ │ ├── quest_item.tscn
│ │ ├── quest_step_item.gd
│ │ ├── quest_step_item.gd.uid
│ │ └── quest_step_item.tscn
│ ├── quests_ui.gd
│ ├── quests_ui.gd.uid
│ └── stats
│ │ ├── stats.gd
│ │ ├── stats.gd.uid
│ │ └── stats.tscn
├── player_hud
│ ├── boss-hp.png
│ ├── boss-hp.png.import
│ ├── gui-health.png
│ ├── gui-health.png.import
│ ├── heart_gui.gd
│ ├── heart_gui.gd.uid
│ ├── heart_gui.tscn
│ ├── notification.wav
│ ├── notification.wav.import
│ ├── notifications.gd
│ ├── notifications.gd.uid
│ ├── panel_notification.png
│ ├── panel_notification.png.import
│ ├── player_hud.gd
│ ├── player_hud.gd.uid
│ └── player_hud.tscn
├── scene_transition
│ ├── scene_transition.gd
│ ├── scene_transition.gd.uid
│ └── scene_transition.tscn
└── shop_menu
│ ├── audio
│ ├── error.wav
│ ├── error.wav.import
│ ├── open_shop.wav
│ ├── open_shop.wav.import
│ ├── purchase.wav
│ └── purchase.wav.import
│ ├── shop_item_button.gd
│ ├── shop_item_button.gd.uid
│ ├── shop_item_button.tscn
│ ├── shop_menu.gd
│ ├── shop_menu.gd.uid
│ └── shop_menu.tscn
├── GeneralNodes
├── EnemyCounter
│ ├── enemy_counter.gd
│ ├── enemy_counter.gd.uid
│ └── enemy_counter.tscn
├── HitBox
│ ├── hit_box.gd
│ ├── hit_box.gd.uid
│ └── hit_box.tscn
├── HurtBox
│ ├── hurt_box.gd
│ ├── hurt_box.gd.uid
│ └── hurt_box.tscn
├── ItemDropper
│ ├── dungeon_discovery.wav
│ ├── dungeon_discovery.wav.import
│ ├── item_dropper.gd
│ ├── item_dropper.gd.uid
│ └── item_dropper.tscn
├── ItemMagnet
│ ├── item_magnet.gd
│ ├── item_magnet.gd.uid
│ └── item_magnet.tscn
├── PersistentDataHandler
│ ├── persistent-data-handler.gd
│ ├── persistent-data-handler.gd.uid
│ └── persistent-data-handler.tscn
└── footstep_audio_2d
│ ├── footstep_01.wav
│ ├── footstep_01.wav.import
│ ├── footstep_02.wav
│ ├── footstep_02.wav.import
│ ├── footstep_03.wav
│ ├── footstep_03.wav.import
│ ├── footstep_audio_2d.gd
│ ├── footstep_audio_2d.gd.uid
│ └── footstep_audio_2d.tscn
├── Interactables
├── TreasureChest
│ ├── treasure-chest.gd
│ ├── treasure-chest.gd.uid
│ ├── treasure-chest.png
│ ├── treasure-chest.png.import
│ ├── treasure-chest.tscn
│ ├── treasure-open.wav
│ └── treasure-open.wav.import
├── dialog
│ ├── dialog_interaction.tscn
│ ├── scripts
│ │ ├── dialog_branch.gd
│ │ ├── dialog_branch.gd.uid
│ │ ├── dialog_choice.gd
│ │ ├── dialog_choice.gd.uid
│ │ ├── dialog_interaction.gd
│ │ ├── dialog_interaction.gd.uid
│ │ ├── dialog_item.gd
│ │ ├── dialog_item.gd.uid
│ │ ├── dialog_text.gd
│ │ └── dialog_text.gd.uid
│ └── sprites
│ │ ├── dialog_interactable.png
│ │ └── dialog_interactable.png.import
├── dungeon
│ ├── barred_door.tscn
│ ├── bars_open.wav
│ ├── bars_open.wav.import
│ ├── dungeon_props.png
│ ├── dungeon_props.png.import
│ ├── lever-01.wav
│ ├── lever-01.wav.import
│ ├── lever-02.wav
│ ├── lever-02.wav.import
│ ├── locked_door.tscn
│ ├── locked_door.wav
│ ├── locked_door.wav.import
│ ├── pressure_plate.tscn
│ ├── push_stone.wav
│ ├── push_stone.wav.import
│ ├── pushable_statue.tscn
│ ├── scripts
│ │ ├── barred_door.gd
│ │ ├── barred_door.gd.uid
│ │ ├── locked_door.gd
│ │ ├── locked_door.gd.uid
│ │ ├── pressure_plate.gd
│ │ ├── pressure_plate.gd.uid
│ │ ├── pushable_statue.gd
│ │ └── pushable_statue.gd.uid
│ ├── unlock_door.wav
│ └── unlock_door.wav.import
├── shopkeeper
│ ├── shopkeeper.gd
│ ├── shopkeeper.gd.uid
│ └── shopkeeper.tscn
└── throwable
│ ├── throwable.gd
│ ├── throwable.gd.uid
│ └── throwable.tscn
├── Items
├── a_ninja_suit.tres
├── a_tunic.tres
├── apple.tres
├── gem.tres
├── item_effects
│ ├── hp-up.wav
│ ├── hp-up.wav.import
│ ├── item_effect.gd
│ ├── item_effect.gd.uid
│ ├── item_effect_heal.gd
│ └── item_effect_heal.gd.uid
├── item_pickup
│ ├── item_pickup.gd
│ ├── item_pickup.gd.uid
│ ├── item_pickup.tscn
│ ├── item_pickup.wav
│ └── item_pickup.wav.import
├── key_dungeon.tres
├── magical_flute.tres
├── potion.tres
├── scripts
│ ├── equipable_item_data.gd
│ ├── equipable_item_data.gd.uid
│ ├── equipable_item_modifier.gd
│ ├── equipable_item_modifier.gd.uid
│ ├── item_data.gd
│ └── item_data.gd.uid
├── sprites
│ ├── flute.png
│ ├── flute.png.import
│ ├── gear.png
│ ├── gear.png.import
│ ├── items.png
│ └── items.png.import
├── stone.tres
├── w_iron_sword.tres
└── w_katana.tres
├── LICENSE
├── Levels
├── Area01
│ ├── 01.tscn
│ ├── 02.tscn
│ ├── 02_shop.tscn
│ └── 03.tscn
├── Dungeon01
│ ├── 01.tscn
│ ├── 02.tscn
│ ├── 03.tscn
│ ├── 04.tscn
│ └── dark_wizard
│ │ ├── audio
│ │ ├── boss_beam.wav
│ │ ├── boss_beam.wav.import
│ │ ├── boss_destroy.wav
│ │ ├── boss_destroy.wav.import
│ │ ├── boss_fireball.wav
│ │ ├── boss_fireball.wav.import
│ │ ├── boss_fireball_hit.wav
│ │ ├── boss_fireball_hit.wav.import
│ │ ├── boss_hurt.wav
│ │ └── boss_hurt.wav.import
│ │ ├── energy_beam.tscn
│ │ ├── energy_explosion.tscn
│ │ ├── energy_orb.tscn
│ │ ├── script
│ │ ├── beam_attack.gd
│ │ ├── beam_attack.gd.uid
│ │ ├── dark_wizard_boss.gd
│ │ ├── dark_wizard_boss.gd.uid
│ │ ├── energy_beam_sprite.gd
│ │ ├── energy_beam_sprite.gd.uid
│ │ ├── energy_orb.gd
│ │ └── energy_orb.gd.uid
│ │ └── sprites
│ │ ├── boss-cloak.png
│ │ ├── boss-cloak.png.import
│ │ ├── boss-hand.png
│ │ ├── boss-hand.png.import
│ │ ├── energy-beam-large.png
│ │ ├── energy-beam-large.png.import
│ │ ├── energy-beam.png
│ │ ├── energy-beam.png.import
│ │ ├── energy-explosion.png
│ │ └── energy-explosion.png.import
├── level_transition.tscn
├── level_transition_interact.tscn
├── music
│ ├── example_music_01.ogg
│ ├── example_music_01.ogg.import
│ ├── example_music_02.ogg
│ ├── example_music_02.ogg.import
│ ├── example_music_03.ogg
│ └── example_music_03.ogg.import
├── player_spawn.tscn
├── playground.tscn
└── scripts
│ ├── level.gd
│ ├── level.gd.uid
│ ├── level_transition.gd
│ ├── level_transition.gd.uid
│ ├── level_transition_interact.gd
│ ├── level_transition_interact.gd.uid
│ ├── player_spawn.gd
│ └── player_spawn.gd.uid
├── Player
├── Sprites
│ ├── AttackSprite01.png
│ ├── AttackSprite01.png.import
│ ├── ExamplePlayerSprite.png.import
│ ├── PlayerSprite02.png.import
│ ├── Shadow.png
│ ├── Shadow.png.import
│ ├── boomerang.png
│ ├── boomerang.png.import
│ ├── player_sprite.png
│ ├── player_sprite.png.import
│ ├── player_sprite_ninja_suit.png
│ ├── player_sprite_ninja_suit.png.import
│ ├── player_sprite_sword.png
│ ├── player_sprite_sword.png.import
│ ├── player_sprite_sword_katana.png
│ ├── player_sprite_sword_katana.png.import
│ ├── spin_effect.png
│ └── spin_effect.png.import
├── audio
│ ├── SwordSwoosh.wav
│ ├── SwordSwoosh.wav.import
│ ├── boomerang.wav
│ ├── boomerang.wav.import
│ ├── catch.wav
│ ├── catch.wav.import
│ ├── charged.wav
│ ├── charged.wav.import
│ ├── exhausted.wav
│ ├── exhausted.wav.import
│ ├── hit_player.wav
│ ├── hit_player.wav.import
│ ├── hm_.wav
│ ├── hm_.wav.import
│ ├── hmm.wav
│ ├── hmm.wav.import
│ ├── huwh.wav
│ ├── huwh.wav.import
│ ├── hwaah.wav
│ ├── hwaah.wav.import
│ ├── hyah.wav
│ ├── hyah.wav.import
│ ├── level_up_jingle.wav
│ ├── level_up_jingle.wav.import
│ ├── spin-attack.wav
│ ├── spin-attack.wav.import
│ ├── throw.wav
│ └── throw.wav.import
├── boomerang.tscn
├── pla660.tmp
├── player.tscn
└── scripts
│ ├── abilities
│ ├── abilities.gd
│ ├── abilities.gd.uid
│ ├── boomerang.gd
│ └── boomerang.gd.uid
│ ├── player.gd
│ ├── player.gd.uid
│ ├── player_camera.gd
│ ├── player_camera.gd.uid
│ ├── player_interactions_host.gd
│ ├── player_interactions_host.gd.uid
│ ├── player_sprite.gd
│ ├── player_sprite.gd.uid
│ ├── player_state_machine.gd
│ ├── player_state_machine.gd.uid
│ ├── push_area.gd
│ ├── push_area.gd.uid
│ └── states
│ ├── state.gd
│ ├── state.gd.uid
│ ├── state_attack.gd
│ ├── state_attack.gd.uid
│ ├── state_carry.gd
│ ├── state_carry.gd.uid
│ ├── state_charge_attack.gd
│ ├── state_charge_attack.gd.uid
│ ├── state_dash.gd
│ ├── state_dash.gd.uid
│ ├── state_death.gd
│ ├── state_death.gd.uid
│ ├── state_idle.gd
│ ├── state_idle.gd.uid
│ ├── state_lift.gd
│ ├── state_lift.gd.uid
│ ├── state_stun.gd
│ ├── state_stun.gd.uid
│ ├── state_walk.gd
│ └── state_walk.gd.uid
├── Props
├── Plants
│ ├── plant.gd
│ ├── plant.gd.uid
│ └── plant.tscn
├── Sprites
│ ├── Props.png
│ └── Props.png.import
├── pot
│ ├── pot.tscn
│ ├── pot_destroy.wav
│ └── pot_destroy.wav.import
└── torches
│ ├── torch.png
│ ├── torch.png.import
│ ├── torch_dungeon.tscn
│ ├── torch_light_flicker.gd
│ └── torch_light_flicker.gd.uid
├── README.md
├── Tile Maps
├── Sprites
│ ├── Grass-01.png
│ ├── Grass-01.png.import
│ ├── dungeon.png
│ ├── dungeon.png.import
│ ├── dungeon_entrance.png
│ ├── dungeon_entrance.png.import
│ ├── shop.png
│ └── shop.png.import
├── dungeon_tiles_01.tscn
├── grass-tiles-01.tscn
├── level_tile_map_layer.gd
├── level_tile_map_layer.gd.uid
└── shop_tilemap_layer.tscn
├── aarpg-tutorial-icon.png
├── aarpg-tutorial-icon.png.import
├── addons
└── michael_games_editor_plugins
│ ├── assets
│ ├── cursor.png
│ ├── cursor.png.import
│ ├── fonts
│ │ ├── LibreBaskerville-Bold.ttf
│ │ ├── LibreBaskerville-Bold.ttf.import
│ │ ├── LibreBaskerville-Italic.ttf
│ │ ├── LibreBaskerville-Italic.ttf.import
│ │ ├── LibreBaskerville-Regular.ttf
│ │ ├── LibreBaskerville-Regular.ttf.import
│ │ ├── Oswald-VariableFont_wght.ttf
│ │ ├── Oswald-VariableFont_wght.ttf.import
│ │ ├── m6x11.ttf
│ │ ├── m6x11.ttf.import
│ │ ├── m6x11plus.ttf
│ │ └── m6x11plus.ttf.import
│ ├── triangle.png
│ └── triangle.png.import
│ ├── juice_my_editor.gd
│ ├── juice_my_editor.gd.uid
│ ├── juice_my_editor.tscn
│ ├── juice_my_editor_node.gd
│ ├── juice_my_editor_node.gd.uid
│ ├── juice_notifs.gd
│ ├── juice_notifs.gd.uid
│ ├── juice_notifs.tscn
│ ├── plugin.cfg
│ ├── shortcut_label.gd
│ ├── shortcut_label.gd.uid
│ ├── shortcut_label.tscn
│ ├── stream_image_backdrop.gd
│ ├── stream_image_backdrop.gd.uid
│ └── stream_image_backdrop.tscn
├── blackboard.tscn
├── default_bus_layout.tres
├── icon.svg
├── icon.svg.import
├── notes.txt
├── npc
├── 00_npcs
│ ├── 00_hero.tres
│ ├── npc_01.tres
│ ├── npc_02.tres
│ └── shopkeeper.tres
├── icons
│ ├── npc.svg
│ ├── npc.svg.import
│ ├── npc_behavior.svg
│ └── npc_behavior.svg.import
├── npc.tscn
├── npc_behavior_patrol.tscn
├── npc_behavior_wander.tscn
├── patrol_location.tscn
├── scripts
│ ├── npc.gd
│ ├── npc.gd.uid
│ ├── npc_behavior.gd
│ ├── npc_behavior.gd.uid
│ ├── npc_behavior_patrol.gd
│ ├── npc_behavior_patrol.gd.uid
│ ├── npc_behavior_wander.gd
│ ├── npc_behavior_wander.gd.uid
│ ├── npc_resource.gd
│ ├── npc_resource.gd.uid
│ ├── patrol_location.gd
│ └── patrol_location.gd.uid
└── sprites
│ ├── npc_sprite.png
│ ├── npc_sprite.png.import
│ ├── npc_sprite_02.png
│ ├── npc_sprite_02.png.import
│ ├── portraits
│ ├── hero_portrait.png
│ ├── hero_portrait.png.import
│ ├── npc_portrait_01.png
│ ├── npc_portrait_01.png.import
│ ├── npc_portrait_02.png
│ ├── npc_portrait_02.png.import
│ ├── portrait_placeholder.png
│ └── portrait_placeholder.png.import
│ ├── shopkeeper.png
│ └── shopkeeper.png.import
├── project.godot
├── quests
├── long_quest.tres
├── recover_lost_flute.tres
├── scripts
│ ├── global_quest_manager.gd
│ ├── global_quest_manager.gd.uid
│ ├── quest_resource.gd
│ ├── quest_resource.gd.uid
│ ├── quest_reward_item.gd
│ └── quest_reward_item.gd.uid
├── short_quest.tres
└── utility_nodes
│ ├── icons
│ ├── quest_advance.png
│ ├── quest_advance.png.import
│ ├── quest_switch.png
│ └── quest_switch.png.import
│ ├── quest_activated_switch.gd
│ ├── quest_activated_switch.gd.uid
│ ├── quest_activated_switch.tscn
│ ├── quest_advance_trigger.gd
│ ├── quest_advance_trigger.gd.uid
│ ├── quest_advance_trigger.tscn
│ ├── quest_node.gd
│ └── quest_node.gd.uid
├── shaders and materials
└── light_material.tres
└── title_scene
├── audio
├── MichaelGamesJingle.wav
├── MichaelGamesJingle.wav.import
├── menu_focus.wav
├── menu_focus.wav.import
├── menu_select.wav
├── menu_select.wav.import
├── waves.mp3
└── waves.mp3.import
├── splash_scene.tscn
├── sprites
├── Michael Games.png
├── Michael Games.png.import
├── title.png
└── title.png.import
├── title_scene.gd
├── title_scene.gd.uid
└── title_scene.tscn
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Normalize EOL for all files that Git considers text files.
2 | * text=auto eol=lf
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Godot 4+ specific ignores
2 | .godot/
3 |
4 | # Godot-specific ignores
5 | .import/
6 | export.cfg
7 | export_presets.cfg
8 |
9 | # Imported translations (automatically generated from CSV files)
10 | *.translation
11 |
12 | # Mono-specific ignores
13 | .mono/
14 | data_*/
15 | mono_crash.*.json
16 |
--------------------------------------------------------------------------------
/00_Globals/global_audio_manager.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bvcmk5wnpw54f
2 |
--------------------------------------------------------------------------------
/00_Globals/global_effect_manager.gd:
--------------------------------------------------------------------------------
1 | extends Node
2 |
3 | const DAMAGE_TEXT = preload("res://00_Globals/global_effects/damage_text.tscn")
4 |
5 |
6 |
7 | func damage_text( _damage : int, _pos : Vector2 ) -> void:
8 | var _t : DamageText = DAMAGE_TEXT.instantiate()
9 | add_child( _t )
10 | _t.start( str( _damage ), _pos )
11 | pass
12 |
--------------------------------------------------------------------------------
/00_Globals/global_effect_manager.gd.uid:
--------------------------------------------------------------------------------
1 | uid://8d8a5polafyq
2 |
--------------------------------------------------------------------------------
/00_Globals/global_effects/damage_text.gd:
--------------------------------------------------------------------------------
1 | class_name DamageText extends Node2D
2 |
3 | var travel_distance : Vector2 = Vector2( 10, -20 )
4 |
5 |
6 | func start( _text : String, _pos : Vector2 ) -> void:
7 | $Label.text = _text
8 | global_position = _pos
9 |
10 | # animate the node
11 | travel_distance.y *= randf_range( 0.5, 1.5 )
12 | travel_distance.x *= randf_range( -1.5, 1.5 )
13 |
14 | var duration : float = randf_range( 0.75, 1.25 )
15 |
16 | var tween : Tween = create_tween().set_parallel( true )
17 | tween.set_ease( Tween.EASE_OUT )
18 | tween.set_trans( Tween.TRANS_QUAD )
19 | # tween position
20 | tween.tween_property( self, "global_position", global_position + travel_distance, duration )
21 | # tween modulate
22 | tween.tween_property( self, "modulate", Color(1, 1, 1, 0), duration ).set_ease( Tween.EASE_IN )
23 | # free the node
24 | tween.chain().tween_callback( self.queue_free )
25 | pass
26 |
--------------------------------------------------------------------------------
/00_Globals/global_effects/damage_text.gd.uid:
--------------------------------------------------------------------------------
1 | uid://sp734jlfvu7c
2 |
--------------------------------------------------------------------------------
/00_Globals/global_effects/damage_text.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://vqmsq1f8nkry"]
2 |
3 | [ext_resource type="Script" uid="uid://sp734jlfvu7c" path="res://00_Globals/global_effects/damage_text.gd" id="1_fy2ui"]
4 | [ext_resource type="FontFile" uid="uid://cnrqk38ddqqwy" path="res://GUI/fonts/m5x7.ttf" id="1_un2ol"]
5 |
6 | [node name="DamageText" type="Node2D"]
7 | z_index = 10
8 | script = ExtResource("1_fy2ui")
9 |
10 | [node name="Label" type="Label" parent="."]
11 | offset_left = -47.0
12 | offset_top = -12.0
13 | offset_right = 47.0
14 | offset_bottom = 6.0
15 | theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
16 | theme_override_constants/shadow_offset_x = 0
17 | theme_override_fonts/font = ExtResource("1_un2ol")
18 | text = "99"
19 | horizontal_alignment = 1
20 |
--------------------------------------------------------------------------------
/00_Globals/global_level_manager.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bw2sohyjqr2s3
2 |
--------------------------------------------------------------------------------
/00_Globals/global_player_manager.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bsmy6mmq5q2w2
2 |
--------------------------------------------------------------------------------
/00_Globals/global_save_manager.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c0yaiy0lt6jhm
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/drop_data.gd:
--------------------------------------------------------------------------------
1 | class_name DropData extends Resource
2 |
3 | @export var item : ItemData
4 | @export_range( 0, 100, 1, "suffix:%" ) var probability : float = 100
5 | @export_range( 1, 10, 1, "suffix:items" ) var min_amount : int = 1
6 | @export_range( 1, 10, 1, "suffix:items" ) var max_amount : int = 1
7 |
8 | func get_drop_count() -> int:
9 | if randf_range( 0, 100 ) >= probability:
10 | return 0
11 | return randi_range( min_amount, max_amount )
12 |
--------------------------------------------------------------------------------
/Enemies/Scripts/drop_data.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dyht4twncfbe
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/enemy.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bm01dty876pk3
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/enemy_state_machine.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ktscfjqbpjb
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/pathfinder.gd.uid:
--------------------------------------------------------------------------------
1 | uid://brfcetstaofmn
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/states/enemy_state.gd:
--------------------------------------------------------------------------------
1 | class_name EnemyState extends Node
2 |
3 |
4 | ## Stores a reference to the enemy that this state belongs to
5 | var enemy : Enemy
6 | var state_machine : EnemyStateMachine
7 |
8 |
9 | ## What happens when we initialize this state?
10 | func init() -> void:
11 | pass
12 |
13 |
14 | ## What happens when the enemy enters this State?
15 | func enter() -> void:
16 | pass
17 |
18 |
19 | ## What happens when the enemy exits this State?
20 | func exit() -> void:
21 | pass
22 |
23 |
24 | ## What happens during the _process update in this State?
25 | func process( _delta : float ) -> EnemyState:
26 | return null
27 |
28 |
29 | ## What happens during the _physics_process update in this State?
30 | func physics( _delta : float ) -> EnemyState:
31 | return null
32 |
--------------------------------------------------------------------------------
/Enemies/Scripts/states/enemy_state.gd.uid:
--------------------------------------------------------------------------------
1 | uid://rdkpwedh8htn
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/states/enemy_state_chase.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c3achloxgf8vs
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/states/enemy_state_destroy.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dn05nlarga6ay
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/states/enemy_state_idle.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ky7luyeckccy
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/states/enemy_state_stun.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dggp8jtenlplh
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/states/enemy_state_wander.gd.uid:
--------------------------------------------------------------------------------
1 | uid://p4obixqhn4pp
2 |
--------------------------------------------------------------------------------
/Enemies/Scripts/vision_area.gd:
--------------------------------------------------------------------------------
1 | class_name VisionArea extends Area2D
2 |
3 | signal player_entered()
4 | signal player_exited()
5 |
6 |
7 | func _ready() -> void:
8 | body_entered.connect( _on_body_enter )
9 | body_exited.connect( _on_body_exit )
10 |
11 | var p = get_parent()
12 | if p is Enemy:
13 | p.direction_changed.connect( _on_direction_change )
14 |
15 |
16 |
17 | func _on_body_enter( _b : Node2D ) -> void:
18 | if _b is Player:
19 | player_entered.emit()
20 | pass
21 |
22 |
23 | func _on_body_exit( _b : Node2D ) -> void:
24 | if _b is Player:
25 | player_exited.emit()
26 | pass
27 |
28 |
29 | func _on_direction_change( new_direction : Vector2 ) -> void:
30 | match new_direction:
31 | Vector2.DOWN:
32 | rotation_degrees = 0
33 | Vector2.UP:
34 | rotation_degrees = 180
35 | Vector2.LEFT:
36 | rotation_degrees = 90
37 | Vector2.RIGHT:
38 | rotation_degrees = -90
39 | _:
40 | rotation_degrees = 0
41 | pass
42 |
--------------------------------------------------------------------------------
/Enemies/Scripts/vision_area.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b1yt7elyow30y
2 |
--------------------------------------------------------------------------------
/Enemies/Slime/DestroySmoke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Enemies/Slime/DestroySmoke.png
--------------------------------------------------------------------------------
/Enemies/Slime/DestroySmoke.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://vs661oue3c1g"
6 | path="res://.godot/imported/DestroySmoke.png-4c509d84002ea89209f31fc8182dda06.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Enemies/Slime/DestroySmoke.png"
14 | dest_files=["res://.godot/imported/DestroySmoke.png-4c509d84002ea89209f31fc8182dda06.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Enemies/Slime/Slime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Enemies/Slime/Slime.png
--------------------------------------------------------------------------------
/Enemies/Slime/Slime.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dfb1ouyn4kesq"
6 | path="res://.godot/imported/Slime.png-ba9221fbb370bff3f2793d278aef25c1.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Enemies/Slime/Slime.png"
14 | dest_files=["res://.godot/imported/Slime.png-ba9221fbb370bff3f2793d278aef25c1.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Enemies/Slime/hit_00.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Enemies/Slime/hit_00.wav
--------------------------------------------------------------------------------
/Enemies/Slime/hit_00.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://jq0tgmmg5c80"
6 | path="res://.godot/imported/hit_00.wav-ac938bce4917c9974dd7d32729daca6e.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Enemies/Slime/hit_00.wav"
11 | dest_files=["res://.godot/imported/hit_00.wav-ac938bce4917c9974dd7d32729daca6e.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Enemies/Slime/hit_01.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Enemies/Slime/hit_01.wav
--------------------------------------------------------------------------------
/Enemies/Slime/hit_01.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://d1jsxmech6qvu"
6 | path="res://.godot/imported/hit_01.wav-24213b87f1218cbd8d164ef6a516b9ef.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Enemies/Slime/hit_01.wav"
11 | dest_files=["res://.godot/imported/hit_01.wav-24213b87f1218cbd8d164ef6a516b9ef.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Enemies/goblin/goblin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Enemies/goblin/goblin.png
--------------------------------------------------------------------------------
/Enemies/goblin/goblin.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://duuvsin2bmq41"
6 | path="res://.godot/imported/goblin.png-677b2e1d480f99d1237d0aa04e1be031.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Enemies/goblin/goblin.png"
14 | dest_files=["res://.godot/imported/goblin.png-677b2e1d480f99d1237d0aa04e1be031.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Enemies/vision_area.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://bmxmydv0m20du"]
2 |
3 | [ext_resource type="Script" uid="uid://b1yt7elyow30y" path="res://Enemies/Scripts/vision_area.gd" id="1_y7im5"]
4 |
5 | [node name="VisionArea" type="Area2D"]
6 | collision_layer = 0
7 | monitorable = false
8 | script = ExtResource("1_y7im5")
9 |
--------------------------------------------------------------------------------
/GUI/dialog_system/audio/voice_blip.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/dialog_system/audio/voice_blip.wav
--------------------------------------------------------------------------------
/GUI/dialog_system/audio/voice_blip.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://dhn5vek5sbvej"
6 | path="res://.godot/imported/voice_blip.wav-70cd0fd71976225666f8902fa9275ebc.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://GUI/dialog_system/audio/voice_blip.wav"
11 | dest_files=["res://.godot/imported/voice_blip.wav-70cd0fd71976225666f8902fa9275ebc.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/answer_bubble.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://gpgvxpfexuju"
6 | path="res://.godot/imported/answer_bubble.svg-c720a4e4551c33ba93094a363768a929.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/dialog_system/icons/answer_bubble.svg"
14 | dest_files=["res://.godot/imported/answer_bubble.svg-c720a4e4551c33ba93094a363768a929.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/chat_bubble.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/chat_bubble.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://7a5hgopkr12d"
6 | path="res://.godot/imported/chat_bubble.svg-a04a3b1a8c4995eaca621c1d99df9c64.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/dialog_system/icons/chat_bubble.svg"
14 | dest_files=["res://.godot/imported/chat_bubble.svg-a04a3b1a8c4995eaca621c1d99df9c64.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/chat_bubbles.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/chat_bubbles.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://csypwud65s782"
6 | path="res://.godot/imported/chat_bubbles.svg-970dd6efd288612ae07022e08879202f.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/dialog_system/icons/chat_bubbles.svg"
14 | dest_files=["res://.godot/imported/chat_bubbles.svg-970dd6efd288612ae07022e08879202f.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/picture_bubble.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ci8r8hr4esnlt"
6 | path="res://.godot/imported/picture_bubble.svg-ad3d88c49fdb3ebc770ec1ac9cafa293.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/dialog_system/icons/picture_bubble.svg"
14 | dest_files=["res://.godot/imported/picture_bubble.svg-ad3d88c49fdb3ebc770ec1ac9cafa293.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/question_bubble.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b40kvpfg6g4ue"
6 | path="res://.godot/imported/question_bubble.svg-4277174bd2da9a121ee6c0c3ec1b6780.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/dialog_system/icons/question_bubble.svg"
14 | dest_files=["res://.godot/imported/question_bubble.svg-4277174bd2da9a121ee6c0c3ec1b6780.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/star_bubble.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/star_bubble.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dh43kuqlgtty1"
6 | path="res://.godot/imported/star_bubble.svg-6a384597ce841a53a597cf73df7ae811.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/dialog_system/icons/star_bubble.svg"
14 | dest_files=["res://.godot/imported/star_bubble.svg-6a384597ce841a53a597cf73df7ae811.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/GUI/dialog_system/icons/text_bubble.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b8gf5jt8sujkj"
6 | path="res://.godot/imported/text_bubble.svg-0d677c0cdc731cbf92561de2b95fc720.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/dialog_system/icons/text_bubble.svg"
14 | dest_files=["res://.godot/imported/text_bubble.svg-0d677c0cdc731cbf92561de2b95fc720.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/GUI/dialog_system/scripts/dialog_portrait.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ods08yjoggjt
2 |
--------------------------------------------------------------------------------
/GUI/dialog_system/scripts/dialog_system.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bffsawinvj4do
2 |
--------------------------------------------------------------------------------
/GUI/dialog_system/sprites/text-bubble.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/dialog_system/sprites/text-bubble.png
--------------------------------------------------------------------------------
/GUI/dialog_system/sprites/text-bubble.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://be3gd407wfvy4"
6 | path="res://.godot/imported/text-bubble.png-787afbc3e07d534a91c0e1b1e6fb95af.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/dialog_system/sprites/text-bubble.png"
14 | dest_files=["res://.godot/imported/text-bubble.png-787afbc3e07d534a91c0e1b1e6fb95af.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/GUI/fonts/Abaddon Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/fonts/Abaddon Bold.ttf
--------------------------------------------------------------------------------
/GUI/fonts/Abaddon Bold.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://o7gqnagfnby2"
6 | path="res://.godot/imported/Abaddon Bold.ttf-ffc1a1ce97027dba9d4741e19915865f.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://GUI/fonts/Abaddon Bold.ttf"
11 | dest_files=["res://.godot/imported/Abaddon Bold.ttf-ffc1a1ce97027dba9d4741e19915865f.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=1
17 | generate_mipmaps=false
18 | disable_embedded_bitmaps=true
19 | multichannel_signed_distance_field=false
20 | msdf_pixel_range=8
21 | msdf_size=48
22 | allow_system_fallback=true
23 | force_autohinter=false
24 | hinting=1
25 | subpixel_positioning=1
26 | keep_rounding_remainders=true
27 | oversampling=0.0
28 | Fallbacks=null
29 | fallbacks=[]
30 | Compress=null
31 | compress=true
32 | preload=[]
33 | language_support={}
34 | script_support={}
35 | opentype_features={}
36 |
--------------------------------------------------------------------------------
/GUI/fonts/Abaddon Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/fonts/Abaddon Light.ttf
--------------------------------------------------------------------------------
/GUI/fonts/Abaddon Light.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://ufo0hj0jkl1o"
6 | path="res://.godot/imported/Abaddon Light.ttf-9c2223e4b61ca68f5db862721ef73ff8.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://GUI/fonts/Abaddon Light.ttf"
11 | dest_files=["res://.godot/imported/Abaddon Light.ttf-9c2223e4b61ca68f5db862721ef73ff8.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=1
17 | generate_mipmaps=false
18 | disable_embedded_bitmaps=true
19 | multichannel_signed_distance_field=false
20 | msdf_pixel_range=8
21 | msdf_size=48
22 | allow_system_fallback=true
23 | force_autohinter=false
24 | hinting=1
25 | subpixel_positioning=1
26 | keep_rounding_remainders=true
27 | oversampling=0.0
28 | Fallbacks=null
29 | fallbacks=[]
30 | Compress=null
31 | compress=true
32 | preload=[]
33 | language_support={}
34 | script_support={}
35 | opentype_features={}
36 |
--------------------------------------------------------------------------------
/GUI/fonts/m5x7.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/fonts/m5x7.ttf
--------------------------------------------------------------------------------
/GUI/fonts/m5x7.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://cnrqk38ddqqwy"
6 | path="res://.godot/imported/m5x7.ttf-efb1b90301989e46a462a5e4140a42d5.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://GUI/fonts/m5x7.ttf"
11 | dest_files=["res://.godot/imported/m5x7.ttf-efb1b90301989e46a462a5e4140a42d5.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=1
17 | generate_mipmaps=false
18 | disable_embedded_bitmaps=true
19 | multichannel_signed_distance_field=false
20 | msdf_pixel_range=8
21 | msdf_size=48
22 | allow_system_fallback=true
23 | force_autohinter=false
24 | hinting=1
25 | subpixel_positioning=1
26 | keep_rounding_remainders=true
27 | oversampling=0.0
28 | Fallbacks=null
29 | fallbacks=[]
30 | Compress=null
31 | compress=true
32 | preload=[]
33 | language_support={}
34 | script_support={}
35 | opentype_features={}
36 |
--------------------------------------------------------------------------------
/GUI/pause_menu/inventory/scripts/inventory_data.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bxx16sir64hty
2 |
--------------------------------------------------------------------------------
/GUI/pause_menu/inventory/scripts/inventory_slot_ui.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dsy4e5o2emmtl
2 |
--------------------------------------------------------------------------------
/GUI/pause_menu/inventory/scripts/inventory_ui.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b34ukmw1e7pax
2 |
--------------------------------------------------------------------------------
/GUI/pause_menu/inventory/scripts/slot_data.gd:
--------------------------------------------------------------------------------
1 | class_name SlotData extends Resource
2 |
3 | @export var item_data : ItemData
4 | @export var quantity : int = 0 : set = set_quantity
5 |
6 |
7 | func set_quantity( value : int ) -> void:
8 | quantity = value
9 | if Engine.is_editor_hint():
10 | return
11 | if quantity < 1:
12 | emit_changed()
13 |
--------------------------------------------------------------------------------
/GUI/pause_menu/inventory/scripts/slot_data.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dju5abgrax1ej
2 |
--------------------------------------------------------------------------------
/GUI/pause_menu/pause_menu.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ia628h6yaojv
2 |
--------------------------------------------------------------------------------
/GUI/pause_menu/quests/checkbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/pause_menu/quests/checkbox.png
--------------------------------------------------------------------------------
/GUI/pause_menu/quests/checkbox.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bl88i4tylbjqd"
6 | path="res://.godot/imported/checkbox.png-29013c9ea98bbaa1046d4c32a8e8523a.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/pause_menu/quests/checkbox.png"
14 | dest_files=["res://.godot/imported/checkbox.png-29013c9ea98bbaa1046d4c32a8e8523a.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/GUI/pause_menu/quests/quest_item.gd:
--------------------------------------------------------------------------------
1 | class_name QuestItem extends Button
2 |
3 | var quest : Quest
4 |
5 | @onready var title_label: Label = $TitleLabel
6 | @onready var step_label: Label = $StepLabel
7 |
8 |
9 | func intialize( q_data : Quest, q_state ) -> void:
10 | quest = q_data
11 | title_label.text = q_data.title
12 |
13 | if q_state.is_complete:
14 | step_label.text = "Completed"
15 | step_label.modulate = Color.LIGHT_GREEN
16 | else:
17 | var step_count : int = q_data.steps.size()
18 | var completed_count : int = q_state.completed_steps.size()
19 | step_label.text = "quest step: " + str(completed_count) + "/" + str(step_count)
20 | pass
21 |
--------------------------------------------------------------------------------
/GUI/pause_menu/quests/quest_item.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dskpktnf34srq
2 |
--------------------------------------------------------------------------------
/GUI/pause_menu/quests/quest_step_item.gd:
--------------------------------------------------------------------------------
1 | class_name QuestStepItem extends Control
2 |
3 | @onready var label: Label = $Label
4 | @onready var sprite_2d: Sprite2D = $Sprite2D
5 |
6 |
7 |
8 | func initialize( step : String, is_complete : bool ) -> void:
9 | label.text = step
10 | if is_complete == true:
11 | sprite_2d.frame = 1
12 | else:
13 | sprite_2d.frame = 0
14 | pass
15 |
--------------------------------------------------------------------------------
/GUI/pause_menu/quests/quest_step_item.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cfv1puswojtce
2 |
--------------------------------------------------------------------------------
/GUI/pause_menu/quests/quest_step_item.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://dxfstusrlgtqu"]
2 |
3 | [ext_resource type="Script" uid="uid://cfv1puswojtce" path="res://GUI/pause_menu/quests/quest_step_item.gd" id="1_2ed12"]
4 | [ext_resource type="Texture2D" uid="uid://bl88i4tylbjqd" path="res://GUI/pause_menu/quests/checkbox.png" id="2_i03w0"]
5 |
6 | [node name="QuestStepItem" type="Control"]
7 | clip_contents = true
8 | custom_minimum_size = Vector2(215, 22)
9 | layout_mode = 3
10 | anchors_preset = 0
11 | offset_right = 215.0
12 | offset_bottom = 22.0
13 | script = ExtResource("1_2ed12")
14 |
15 | [node name="Label" type="Label" parent="."]
16 | modulate = Color(0.607843, 0.678431, 0.717647, 1)
17 | layout_mode = 0
18 | offset_left = 19.0
19 | offset_right = 59.0
20 | offset_bottom = 18.0
21 | text = "step"
22 |
23 | [node name="Sprite2D" type="Sprite2D" parent="."]
24 | position = Vector2(8, 8)
25 | texture = ExtResource("2_i03w0")
26 | hframes = 2
27 |
--------------------------------------------------------------------------------
/GUI/pause_menu/quests_ui.gd.uid:
--------------------------------------------------------------------------------
1 | uid://v8exnhqk3spq
2 |
--------------------------------------------------------------------------------
/GUI/pause_menu/stats/stats.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c5t0q35cvoa7a
2 |
--------------------------------------------------------------------------------
/GUI/player_hud/boss-hp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/player_hud/boss-hp.png
--------------------------------------------------------------------------------
/GUI/player_hud/boss-hp.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://gb4q1nfypaax"
6 | path="res://.godot/imported/boss-hp.png-27f87b8de827cf90df7653b8464143fb.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/player_hud/boss-hp.png"
14 | dest_files=["res://.godot/imported/boss-hp.png-27f87b8de827cf90df7653b8464143fb.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/GUI/player_hud/gui-health.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/player_hud/gui-health.png
--------------------------------------------------------------------------------
/GUI/player_hud/gui-health.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c214trc1y0053"
6 | path="res://.godot/imported/gui-health.png-aef036b7ece4ade13823322a2db2c0de.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/player_hud/gui-health.png"
14 | dest_files=["res://.godot/imported/gui-health.png-aef036b7ece4ade13823322a2db2c0de.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/GUI/player_hud/heart_gui.gd:
--------------------------------------------------------------------------------
1 | class_name HeartGUI extends Control
2 |
3 |
4 | @onready var sprite = $Sprite2D
5 |
6 |
7 | var value : int = 2 :
8 | set( _value ):
9 | value = _value
10 | update_sprite()
11 |
12 |
13 | func update_sprite() -> void:
14 | sprite.frame = value
15 |
16 |
--------------------------------------------------------------------------------
/GUI/player_hud/heart_gui.gd.uid:
--------------------------------------------------------------------------------
1 | uid://drvk8t2g3khfa
2 |
--------------------------------------------------------------------------------
/GUI/player_hud/heart_gui.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://cnikqj3ie6vv0"]
2 |
3 | [ext_resource type="Texture2D" uid="uid://c214trc1y0053" path="res://GUI/player_hud/gui-health.png" id="1_lgsf3"]
4 | [ext_resource type="Script" uid="uid://drvk8t2g3khfa" path="res://GUI/player_hud/heart_gui.gd" id="1_or207"]
5 |
6 | [node name="Heart" type="Control"]
7 | custom_minimum_size = Vector2(9, 9)
8 | layout_mode = 3
9 | anchors_preset = 0
10 | script = ExtResource("1_or207")
11 |
12 | [node name="Sprite2D" type="Sprite2D" parent="."]
13 | texture = ExtResource("1_lgsf3")
14 | centered = false
15 | hframes = 7
16 | vframes = 2
17 |
--------------------------------------------------------------------------------
/GUI/player_hud/notification.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/player_hud/notification.wav
--------------------------------------------------------------------------------
/GUI/player_hud/notification.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://c7me4bm1wcsua"
6 | path="res://.godot/imported/notification.wav-c3b915a2b3398d00cd0a0ba2fd58e34c.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://GUI/player_hud/notification.wav"
11 | dest_files=["res://.godot/imported/notification.wav-c3b915a2b3398d00cd0a0ba2fd58e34c.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/GUI/player_hud/notifications.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c63jv3sl2cvvx
2 |
--------------------------------------------------------------------------------
/GUI/player_hud/panel_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/player_hud/panel_notification.png
--------------------------------------------------------------------------------
/GUI/player_hud/panel_notification.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dw1xqovae8s7k"
6 | path="res://.godot/imported/panel_notification.png-d657fba93c1888ac93f194630b1b095e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://GUI/player_hud/panel_notification.png"
14 | dest_files=["res://.godot/imported/panel_notification.png-d657fba93c1888ac93f194630b1b095e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/GUI/player_hud/player_hud.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bw213tx6ibmkk
2 |
--------------------------------------------------------------------------------
/GUI/scene_transition/scene_transition.gd:
--------------------------------------------------------------------------------
1 | extends CanvasLayer
2 |
3 | @onready var animation_player: AnimationPlayer = $Control/AnimationPlayer
4 |
5 |
6 | func fade_out() -> bool:
7 | animation_player.play("fade_out")
8 | await animation_player.animation_finished
9 | return true
10 |
11 |
12 | func fade_in() -> bool:
13 | animation_player.play("fade_in")
14 | #await animation_player.animation_finished
15 | return true
16 |
--------------------------------------------------------------------------------
/GUI/scene_transition/scene_transition.gd.uid:
--------------------------------------------------------------------------------
1 | uid://che60dcavsrav
2 |
--------------------------------------------------------------------------------
/GUI/shop_menu/audio/error.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/shop_menu/audio/error.wav
--------------------------------------------------------------------------------
/GUI/shop_menu/audio/error.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://c318mk5yvve55"
6 | path="res://.godot/imported/error.wav-91dcc4e49ede98cbe520f3406f67931d.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://GUI/shop_menu/audio/error.wav"
11 | dest_files=["res://.godot/imported/error.wav-91dcc4e49ede98cbe520f3406f67931d.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=2
25 |
--------------------------------------------------------------------------------
/GUI/shop_menu/audio/open_shop.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/shop_menu/audio/open_shop.wav
--------------------------------------------------------------------------------
/GUI/shop_menu/audio/open_shop.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://ctd8qcobpfe0d"
6 | path="res://.godot/imported/open_shop.wav-4c72390d3d54fc1e2ba33a7fbf6210c0.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://GUI/shop_menu/audio/open_shop.wav"
11 | dest_files=["res://.godot/imported/open_shop.wav-4c72390d3d54fc1e2ba33a7fbf6210c0.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=2
25 |
--------------------------------------------------------------------------------
/GUI/shop_menu/audio/purchase.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GUI/shop_menu/audio/purchase.wav
--------------------------------------------------------------------------------
/GUI/shop_menu/audio/purchase.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://bnjt2lvucbcf7"
6 | path="res://.godot/imported/purchase.wav-5c9239be6b79c38eb140791ddd189ff5.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://GUI/shop_menu/audio/purchase.wav"
11 | dest_files=["res://.godot/imported/purchase.wav-5c9239be6b79c38eb140791ddd189ff5.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=2
25 |
--------------------------------------------------------------------------------
/GUI/shop_menu/shop_item_button.gd:
--------------------------------------------------------------------------------
1 | class_name ShopItemButton extends Button
2 |
3 | var item : ItemData
4 |
5 |
6 | func setup_item( _item : ItemData ) -> void:
7 | item = _item
8 | $Label.text = item.name
9 | $PriceLabel.text = str( item.cost )
10 | $TextureRect.texture = item.texture
11 |
--------------------------------------------------------------------------------
/GUI/shop_menu/shop_item_button.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cqqogeprsce2g
2 |
--------------------------------------------------------------------------------
/GUI/shop_menu/shop_menu.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cfwsq4jpru03i
2 |
--------------------------------------------------------------------------------
/GeneralNodes/EnemyCounter/enemy_counter.gd:
--------------------------------------------------------------------------------
1 | class_name EnemyCounter extends Node2D
2 |
3 |
4 | signal enemies_defeated
5 |
6 |
7 | func _ready() -> void:
8 | child_exiting_tree.connect( _on_enemy_destroyed )
9 | pass
10 |
11 |
12 | func _on_enemy_destroyed( e : Node2D ) -> void:
13 | if e is Enemy:
14 | if enemy_count() <= 1:
15 | enemies_defeated.emit()
16 | pass
17 |
18 |
19 | func enemy_count() -> int:
20 | var _count : int = 0
21 | for c in get_children():
22 | if c is Enemy:
23 | _count += 1
24 | return _count
25 |
--------------------------------------------------------------------------------
/GeneralNodes/EnemyCounter/enemy_counter.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dewiosnhwit3o
2 |
--------------------------------------------------------------------------------
/GeneralNodes/EnemyCounter/enemy_counter.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://b63km2avcjbgb"]
2 |
3 | [ext_resource type="Script" uid="uid://dewiosnhwit3o" path="res://GeneralNodes/EnemyCounter/enemy_counter.gd" id="1_2d55a"]
4 |
5 | [node name="EnemyCounter" type="Node2D"]
6 | y_sort_enabled = true
7 | script = ExtResource("1_2d55a")
8 |
--------------------------------------------------------------------------------
/GeneralNodes/HitBox/hit_box.gd:
--------------------------------------------------------------------------------
1 | class_name HitBox extends Area2D
2 |
3 | signal damaged( hurt_box : HurtBox )
4 |
5 | # Called when the node enters the scene tree for the first time.
6 | func _ready():
7 | pass # Replace with function body.
8 |
9 |
10 |
11 | func take_damage( hurt_box : HurtBox ) -> void:
12 | damaged.emit( hurt_box )
13 |
--------------------------------------------------------------------------------
/GeneralNodes/HitBox/hit_box.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c7i57v7ybv7uw
2 |
--------------------------------------------------------------------------------
/GeneralNodes/HitBox/hit_box.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://c041sb462wu22"]
2 |
3 | [ext_resource type="Script" uid="uid://c7i57v7ybv7uw" path="res://GeneralNodes/HitBox/hit_box.gd" id="1_6q87k"]
4 |
5 | [node name="HitBox" type="Area2D"]
6 | collision_layer = 256
7 | collision_mask = 0
8 | monitoring = false
9 | script = ExtResource("1_6q87k")
10 |
--------------------------------------------------------------------------------
/GeneralNodes/HurtBox/hurt_box.gd:
--------------------------------------------------------------------------------
1 | class_name HurtBox extends Area2D
2 |
3 | signal did_damage
4 |
5 | @export var damage : int = 1
6 |
7 | # Called when the node enters the scene tree for the first time.
8 | func _ready():
9 | area_entered.connect( _area_entered )
10 | pass # Replace with function body.
11 |
12 |
13 |
14 | func _area_entered( a : Area2D ) -> void:
15 | if a is HitBox:
16 | did_damage.emit()
17 | a.take_damage( self )
18 | pass
19 |
--------------------------------------------------------------------------------
/GeneralNodes/HurtBox/hurt_box.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dn3nqgx436vyt
2 |
--------------------------------------------------------------------------------
/GeneralNodes/HurtBox/hurt_box.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://cpvl4rru3x52v"]
2 |
3 | [ext_resource type="Script" uid="uid://dn3nqgx436vyt" path="res://GeneralNodes/HurtBox/hurt_box.gd" id="1_8iv5o"]
4 |
5 | [node name="HurtBox" type="Area2D"]
6 | collision_layer = 0
7 | collision_mask = 2
8 | monitorable = false
9 | script = ExtResource("1_8iv5o")
10 |
--------------------------------------------------------------------------------
/GeneralNodes/ItemDropper/dungeon_discovery.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GeneralNodes/ItemDropper/dungeon_discovery.wav
--------------------------------------------------------------------------------
/GeneralNodes/ItemDropper/dungeon_discovery.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://8wyvb6nisvdo"
6 | path="res://.godot/imported/dungeon_discovery.wav-fac1b6930c3428a9a5343a6b8fd711b1.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://GeneralNodes/ItemDropper/dungeon_discovery.wav"
11 | dest_files=["res://.godot/imported/dungeon_discovery.wav-fac1b6930c3428a9a5343a6b8fd711b1.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/GeneralNodes/ItemDropper/item_dropper.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c62jakwy6ggl0
2 |
--------------------------------------------------------------------------------
/GeneralNodes/ItemMagnet/item_magnet.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dcoojjfi0d6ua
2 |
--------------------------------------------------------------------------------
/GeneralNodes/ItemMagnet/item_magnet.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://ciqutdcievlur"]
2 |
3 | [ext_resource type="Script" uid="uid://dcoojjfi0d6ua" path="res://GeneralNodes/ItemMagnet/item_magnet.gd" id="1_j606o"]
4 | [ext_resource type="AudioStream" uid="uid://cl4y2eoe5b40w" path="res://Player/audio/catch.wav" id="2_8qlsr"]
5 |
6 | [node name="ItemMagnet" type="Area2D"]
7 | collision_layer = 0
8 | monitorable = false
9 | script = ExtResource("1_j606o")
10 |
11 | [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."]
12 | stream = ExtResource("2_8qlsr")
13 |
--------------------------------------------------------------------------------
/GeneralNodes/PersistentDataHandler/persistent-data-handler.gd:
--------------------------------------------------------------------------------
1 | class_name PersistentDataHandler extends Node
2 |
3 | signal data_loaded
4 | var value : bool = false
5 |
6 |
7 | func _ready() -> void:
8 | get_value()
9 | pass
10 |
11 |
12 | func set_value() -> void:
13 | SaveManager.add_persistent_value( _get_name() )
14 | pass
15 |
16 |
17 | func get_value() -> void:
18 | value = SaveManager.check_persistent_value( _get_name() )
19 | data_loaded.emit()
20 | pass
21 |
22 |
23 | func remove_value() -> void:
24 | SaveManager.remove_persistent_value( _get_name() )
25 | pass
26 |
27 |
28 | func _get_name() -> String:
29 | return get_tree().current_scene.scene_file_path + "/" + get_parent().name + "/" + name
30 |
--------------------------------------------------------------------------------
/GeneralNodes/PersistentDataHandler/persistent-data-handler.gd.uid:
--------------------------------------------------------------------------------
1 | uid://uqrsfoga5e2s
2 |
--------------------------------------------------------------------------------
/GeneralNodes/PersistentDataHandler/persistent-data-handler.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://de52jxqemilpu"]
2 |
3 | [ext_resource type="Script" uid="uid://uqrsfoga5e2s" path="res://GeneralNodes/PersistentDataHandler/persistent-data-handler.gd" id="1_au5qa"]
4 |
5 | [node name="PersistentDataHandler" type="Node"]
6 | script = ExtResource("1_au5qa")
7 |
--------------------------------------------------------------------------------
/GeneralNodes/footstep_audio_2d/footstep_01.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GeneralNodes/footstep_audio_2d/footstep_01.wav
--------------------------------------------------------------------------------
/GeneralNodes/footstep_audio_2d/footstep_01.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://d0s7c4x6vvv8r"
6 | path="res://.godot/imported/footstep_01.wav-8f632bbff18c18ef062bac675d81f4ec.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://GeneralNodes/footstep_audio_2d/footstep_01.wav"
11 | dest_files=["res://.godot/imported/footstep_01.wav-8f632bbff18c18ef062bac675d81f4ec.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/GeneralNodes/footstep_audio_2d/footstep_02.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GeneralNodes/footstep_audio_2d/footstep_02.wav
--------------------------------------------------------------------------------
/GeneralNodes/footstep_audio_2d/footstep_02.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://dsi77t43iegk7"
6 | path="res://.godot/imported/footstep_02.wav-bfe10106aa422265679e4caf6968c0f2.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://GeneralNodes/footstep_audio_2d/footstep_02.wav"
11 | dest_files=["res://.godot/imported/footstep_02.wav-bfe10106aa422265679e4caf6968c0f2.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/GeneralNodes/footstep_audio_2d/footstep_03.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/GeneralNodes/footstep_audio_2d/footstep_03.wav
--------------------------------------------------------------------------------
/GeneralNodes/footstep_audio_2d/footstep_03.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://qjmhov4qtufs"
6 | path="res://.godot/imported/footstep_03.wav-d33091606f6203c8fa3408648e0727cc.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://GeneralNodes/footstep_audio_2d/footstep_03.wav"
11 | dest_files=["res://.godot/imported/footstep_03.wav-d33091606f6203c8fa3408648e0727cc.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/GeneralNodes/footstep_audio_2d/footstep_audio_2d.gd:
--------------------------------------------------------------------------------
1 | class_name FootstepAudio2D extends AudioStreamPlayer2D
2 |
3 | var stream_randomizer : AudioStreamRandomizer
4 | @export var footstep_variants : Array[ AudioStream ]
5 |
6 |
7 | func _ready() -> void:
8 | stream_randomizer = stream
9 |
10 |
11 | func play_footstep() -> void:
12 | get_footstep_type()
13 | play()
14 |
15 |
16 | func get_footstep_type() -> void:
17 | for t in get_tree().get_nodes_in_group( "tilemaps" ):
18 | if t is TileMapLayer:
19 | if t.tile_set.get_custom_data_layer_by_name( "footstep_type" ) == -1:
20 | continue
21 | var cell : Vector2i = t.local_to_map( t.to_local( global_position ) )
22 | var data : TileData = t.get_cell_tile_data( cell )
23 | if data:
24 | var type = data.get_custom_data( "footstep_type" )
25 | if type == null:
26 | continue
27 | #stream = footstep_variants[ type ]
28 | stream_randomizer.set_stream( 0, footstep_variants[ type ] )
29 | pass
30 | pass
31 | pass
32 |
--------------------------------------------------------------------------------
/GeneralNodes/footstep_audio_2d/footstep_audio_2d.gd.uid:
--------------------------------------------------------------------------------
1 | uid://i1k3uiqi4g32
2 |
--------------------------------------------------------------------------------
/GeneralNodes/footstep_audio_2d/footstep_audio_2d.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=6 format=3 uid="uid://dkahyrrrdtwhv"]
2 |
3 | [ext_resource type="Script" uid="uid://i1k3uiqi4g32" path="res://GeneralNodes/footstep_audio_2d/footstep_audio_2d.gd" id="1_02ak3"]
4 | [ext_resource type="AudioStream" uid="uid://qjmhov4qtufs" path="res://GeneralNodes/footstep_audio_2d/footstep_03.wav" id="1_03fn2"]
5 | [ext_resource type="AudioStream" uid="uid://dsi77t43iegk7" path="res://GeneralNodes/footstep_audio_2d/footstep_02.wav" id="3_p0pye"]
6 | [ext_resource type="AudioStream" uid="uid://d0s7c4x6vvv8r" path="res://GeneralNodes/footstep_audio_2d/footstep_01.wav" id="4_mynmk"]
7 |
8 | [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_odvol"]
9 | random_pitch = 1.13
10 | random_volume_offset_db = 2.0
11 | streams_count = 1
12 |
13 | [node name="FootstepAudio2D" type="AudioStreamPlayer2D"]
14 | stream = SubResource("AudioStreamRandomizer_odvol")
15 | volume_db = -16.0
16 | script = ExtResource("1_02ak3")
17 | footstep_variants = Array[AudioStream]([ExtResource("1_03fn2"), ExtResource("3_p0pye"), ExtResource("4_mynmk")])
18 |
--------------------------------------------------------------------------------
/Interactables/TreasureChest/treasure-chest.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cgmg5ln1r0wcb
2 |
--------------------------------------------------------------------------------
/Interactables/TreasureChest/treasure-chest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/TreasureChest/treasure-chest.png
--------------------------------------------------------------------------------
/Interactables/TreasureChest/treasure-chest.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cwx6cdfhun1y4"
6 | path="res://.godot/imported/treasure-chest.png-0043e47e026a433ad01a32ea29d9199b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Interactables/TreasureChest/treasure-chest.png"
14 | dest_files=["res://.godot/imported/treasure-chest.png-0043e47e026a433ad01a32ea29d9199b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Interactables/TreasureChest/treasure-open.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/TreasureChest/treasure-open.wav
--------------------------------------------------------------------------------
/Interactables/TreasureChest/treasure-open.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://uyg2cjrpspr5"
6 | path="res://.godot/imported/treasure-open.wav-fbc0456a5f10bec7d5da792bcd847c07.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Interactables/TreasureChest/treasure-open.wav"
11 | dest_files=["res://.godot/imported/treasure-open.wav-fbc0456a5f10bec7d5da792bcd847c07.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Interactables/dialog/scripts/dialog_branch.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c80ln4eok2stu
2 |
--------------------------------------------------------------------------------
/Interactables/dialog/scripts/dialog_choice.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bhoxv42n8rdsq
2 |
--------------------------------------------------------------------------------
/Interactables/dialog/scripts/dialog_interaction.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cbqe6keabesn
2 |
--------------------------------------------------------------------------------
/Interactables/dialog/scripts/dialog_item.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c1rvwk3ustfv
2 |
--------------------------------------------------------------------------------
/Interactables/dialog/scripts/dialog_text.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon( "res://GUI/dialog_system/icons/text_bubble.svg" )
3 | class_name DialogText extends DialogItem
4 |
5 | @export_multiline var text : String = "Placeholder text" : set = _set_text
6 |
7 |
8 |
9 | func _set_text( value : String ) -> void:
10 | text = value
11 | if Engine.is_editor_hint():
12 | if example_dialog != null:
13 | _set_editor_display()
14 |
15 |
16 | func _set_editor_display() -> void:
17 | example_dialog.set_dialog_text( self )
18 | example_dialog.content.visible_characters = -1
19 | pass
20 |
--------------------------------------------------------------------------------
/Interactables/dialog/scripts/dialog_text.gd.uid:
--------------------------------------------------------------------------------
1 | uid://7qrcj0xrfdwc
2 |
--------------------------------------------------------------------------------
/Interactables/dialog/sprites/dialog_interactable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/dialog/sprites/dialog_interactable.png
--------------------------------------------------------------------------------
/Interactables/dialog/sprites/dialog_interactable.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c7618mlo6ajma"
6 | path="res://.godot/imported/dialog_interactable.png-74767f99a1f71aceeae0d30aebf6d247.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Interactables/dialog/sprites/dialog_interactable.png"
14 | dest_files=["res://.godot/imported/dialog_interactable.png-74767f99a1f71aceeae0d30aebf6d247.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Interactables/dungeon/bars_open.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/dungeon/bars_open.wav
--------------------------------------------------------------------------------
/Interactables/dungeon/bars_open.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://c6xa7m21ojqaq"
6 | path="res://.godot/imported/bars_open.wav-935b151726780805fe97766b4c14084f.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Interactables/dungeon/bars_open.wav"
11 | dest_files=["res://.godot/imported/bars_open.wav-935b151726780805fe97766b4c14084f.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Interactables/dungeon/dungeon_props.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/dungeon/dungeon_props.png
--------------------------------------------------------------------------------
/Interactables/dungeon/dungeon_props.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cbcm3770x2tgd"
6 | path="res://.godot/imported/dungeon_props.png-efac48749301c019019c6b8d3f2e2326.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Interactables/dungeon/dungeon_props.png"
14 | dest_files=["res://.godot/imported/dungeon_props.png-efac48749301c019019c6b8d3f2e2326.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Interactables/dungeon/lever-01.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/dungeon/lever-01.wav
--------------------------------------------------------------------------------
/Interactables/dungeon/lever-01.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://dvxranhjjsh6u"
6 | path="res://.godot/imported/lever-01.wav-c1b98d92bfd538c02d6eb01b327c4fa2.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Interactables/dungeon/lever-01.wav"
11 | dest_files=["res://.godot/imported/lever-01.wav-c1b98d92bfd538c02d6eb01b327c4fa2.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Interactables/dungeon/lever-02.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/dungeon/lever-02.wav
--------------------------------------------------------------------------------
/Interactables/dungeon/lever-02.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://d237d8xykxbux"
6 | path="res://.godot/imported/lever-02.wav-a00c481e8b21905a16b6c6443f22dfd4.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Interactables/dungeon/lever-02.wav"
11 | dest_files=["res://.godot/imported/lever-02.wav-a00c481e8b21905a16b6c6443f22dfd4.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Interactables/dungeon/locked_door.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/dungeon/locked_door.wav
--------------------------------------------------------------------------------
/Interactables/dungeon/locked_door.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://ck2d7svu6m2dv"
6 | path="res://.godot/imported/locked_door.wav-16c56a73cb291c61a1c16aae1d94f304.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Interactables/dungeon/locked_door.wav"
11 | dest_files=["res://.godot/imported/locked_door.wav-16c56a73cb291c61a1c16aae1d94f304.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Interactables/dungeon/pressure_plate.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=4 format=3 uid="uid://ch2oxh3rsa2fr"]
2 |
3 | [ext_resource type="Script" uid="uid://dq3o3cqog3yxa" path="res://Interactables/dungeon/scripts/pressure_plate.gd" id="1_603rd"]
4 | [ext_resource type="Texture2D" uid="uid://cbcm3770x2tgd" path="res://Interactables/dungeon/dungeon_props.png" id="2_aqjcl"]
5 |
6 | [sub_resource type="RectangleShape2D" id="RectangleShape2D_xy5g3"]
7 | size = Vector2(8, 8)
8 |
9 | [node name="PressurePlate" type="Node2D"]
10 | script = ExtResource("1_603rd")
11 |
12 | [node name="Sprite2D" type="Sprite2D" parent="."]
13 | z_index = -1
14 | texture = ExtResource("2_aqjcl")
15 | region_enabled = true
16 | region_rect = Rect2(416, 64, 32, 32)
17 |
18 | [node name="Area2D" type="Area2D" parent="."]
19 | collision_layer = 0
20 | collision_mask = 273
21 | monitorable = false
22 |
23 | [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
24 | shape = SubResource("RectangleShape2D_xy5g3")
25 |
26 | [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."]
27 |
--------------------------------------------------------------------------------
/Interactables/dungeon/push_stone.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/dungeon/push_stone.wav
--------------------------------------------------------------------------------
/Interactables/dungeon/push_stone.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://7qnbmax1ajmq"
6 | path="res://.godot/imported/push_stone.wav-e624b1ed93899bf4397348805aa44f6d.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Interactables/dungeon/push_stone.wav"
11 | dest_files=["res://.godot/imported/push_stone.wav-e624b1ed93899bf4397348805aa44f6d.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=2
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Interactables/dungeon/scripts/barred_door.gd:
--------------------------------------------------------------------------------
1 | class_name BarredDoor extends Node2D
2 |
3 |
4 | @onready var animation_player: AnimationPlayer = $AnimationPlayer
5 |
6 |
7 |
8 | func _ready() -> void:
9 | pass
10 |
11 |
12 |
13 | func open_door() -> void:
14 | animation_player.play( "open_door" )
15 | pass
16 |
17 |
18 | func close_door() -> void:
19 | animation_player.play( "close_door" )
20 | pass
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Interactables/dungeon/scripts/barred_door.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c7bxikexw25sm
2 |
--------------------------------------------------------------------------------
/Interactables/dungeon/scripts/locked_door.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c1b08v2bc1iqh
2 |
--------------------------------------------------------------------------------
/Interactables/dungeon/scripts/pressure_plate.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dq3o3cqog3yxa
2 |
--------------------------------------------------------------------------------
/Interactables/dungeon/scripts/pushable_statue.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bnf28lpfqtapi
2 |
--------------------------------------------------------------------------------
/Interactables/dungeon/unlock_door.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Interactables/dungeon/unlock_door.wav
--------------------------------------------------------------------------------
/Interactables/dungeon/unlock_door.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://qmisdb43u5k1"
6 | path="res://.godot/imported/unlock_door.wav-b49fafa75335a4e32b725c29bff09541.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Interactables/dungeon/unlock_door.wav"
11 | dest_files=["res://.godot/imported/unlock_door.wav-b49fafa75335a4e32b725c29bff09541.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Interactables/shopkeeper/shopkeeper.gd:
--------------------------------------------------------------------------------
1 | class_name Shopkeeper extends Node2D
2 |
3 | @export var shop_inventory : Array[ ItemData ]
4 |
5 | @onready var dialog_branch_yes: DialogBranch = $NPC/DialogInteraction/DialogChoice/DialogBranch
6 |
7 |
8 |
9 | func _ready() -> void:
10 | dialog_branch_yes.selected.connect( show_shop_menu )
11 | pass
12 |
13 |
14 | func show_shop_menu() -> void:
15 | print("Show the shop")
16 | ShopMenu.show_menu( shop_inventory )
17 | pass
18 |
--------------------------------------------------------------------------------
/Interactables/shopkeeper/shopkeeper.gd.uid:
--------------------------------------------------------------------------------
1 | uid://81hvwtju8j7n
2 |
--------------------------------------------------------------------------------
/Interactables/throwable/throwable.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dron6o5f1043m
2 |
--------------------------------------------------------------------------------
/Interactables/throwable/throwable.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://dp08lk5aufvli"]
2 |
3 | [ext_resource type="Script" uid="uid://dron6o5f1043m" path="res://Interactables/throwable/throwable.gd" id="1_a6bbh"]
4 | [ext_resource type="PackedScene" uid="uid://cpvl4rru3x52v" path="res://GeneralNodes/HurtBox/hurt_box.tscn" id="2_xu4fk"]
5 |
6 | [node name="Throwable" type="Area2D"]
7 | collision_layer = 0
8 | collision_mask = 4
9 | monitorable = false
10 | script = ExtResource("1_a6bbh")
11 |
12 | [node name="HurtBox" parent="." instance=ExtResource("2_xu4fk")]
13 | collision_mask = 256
14 |
--------------------------------------------------------------------------------
/Items/gem.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="ItemData" load_steps=5 format=3 uid="uid://cixpflhl0cjvo"]
2 |
3 | [ext_resource type="Script" uid="uid://bwq22ry1guuwt" path="res://Items/item_effects/item_effect.gd" id="1_axjn8"]
4 | [ext_resource type="Script" uid="uid://b405hrw22am82" path="res://Items/scripts/item_data.gd" id="1_g6vl3"]
5 | [ext_resource type="Texture2D" uid="uid://bmjan6873e3h5" path="res://Items/sprites/items.png" id="2_ap4ly"]
6 |
7 | [sub_resource type="AtlasTexture" id="AtlasTexture_7aa43"]
8 | atlas = ExtResource("2_ap4ly")
9 | region = Rect2(0, 0, 32, 32)
10 |
11 | [resource]
12 | script = ExtResource("1_g6vl3")
13 | name = "Gem"
14 | description = "A valuable gem!"
15 | texture = SubResource("AtlasTexture_7aa43")
16 | cost = 1
17 | effects = Array[ExtResource("1_axjn8")]([])
18 |
--------------------------------------------------------------------------------
/Items/item_effects/hp-up.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Items/item_effects/hp-up.wav
--------------------------------------------------------------------------------
/Items/item_effects/hp-up.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://bwnitghsawfi0"
6 | path="res://.godot/imported/hp-up.wav-9d935ac3b880ce47ab2669117abd135b.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Items/item_effects/hp-up.wav"
11 | dest_files=["res://.godot/imported/hp-up.wav-9d935ac3b880ce47ab2669117abd135b.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Items/item_effects/item_effect.gd:
--------------------------------------------------------------------------------
1 | class_name ItemEffect extends Resource
2 |
3 | @export var use_description : String
4 |
5 |
6 | func use() -> void:
7 | pass
8 |
--------------------------------------------------------------------------------
/Items/item_effects/item_effect.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bwq22ry1guuwt
2 |
--------------------------------------------------------------------------------
/Items/item_effects/item_effect_heal.gd:
--------------------------------------------------------------------------------
1 | class_name ItemEffectHeal extends ItemEffect
2 |
3 | @export var heal_amount : int = 1
4 | @export var audio : AudioStream
5 |
6 |
7 | func use() -> void:
8 | PlayerManager.player.update_hp( heal_amount )
9 | PauseMenu.play_audio( audio )
10 |
--------------------------------------------------------------------------------
/Items/item_effects/item_effect_heal.gd.uid:
--------------------------------------------------------------------------------
1 | uid://lhem15j5m6we
2 |
--------------------------------------------------------------------------------
/Items/item_pickup/item_pickup.gd.uid:
--------------------------------------------------------------------------------
1 | uid://efs3r0txblyn
2 |
--------------------------------------------------------------------------------
/Items/item_pickup/item_pickup.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Items/item_pickup/item_pickup.wav
--------------------------------------------------------------------------------
/Items/item_pickup/item_pickup.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://dqkscpjlwebc0"
6 | path="res://.godot/imported/item_pickup.wav-8e4761674a856f0b708df376885994aa.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Items/item_pickup/item_pickup.wav"
11 | dest_files=["res://.godot/imported/item_pickup.wav-8e4761674a856f0b708df376885994aa.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Items/key_dungeon.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="ItemData" load_steps=5 format=3 uid="uid://dsahpb7gtws3g"]
2 |
3 | [ext_resource type="Script" uid="uid://bwq22ry1guuwt" path="res://Items/item_effects/item_effect.gd" id="1_3e852"]
4 | [ext_resource type="Script" uid="uid://b405hrw22am82" path="res://Items/scripts/item_data.gd" id="1_7mdpg"]
5 | [ext_resource type="Texture2D" uid="uid://bmjan6873e3h5" path="res://Items/sprites/items.png" id="2_abfbw"]
6 |
7 | [sub_resource type="AtlasTexture" id="AtlasTexture_xrpx2"]
8 | atlas = ExtResource("2_abfbw")
9 | region = Rect2(224, 0, 32, 32)
10 |
11 | [resource]
12 | script = ExtResource("1_7mdpg")
13 | name = "Dungeon Key"
14 | description = "Looks like a standard key. Who knows what kind of doors it will unlock?"
15 | texture = SubResource("AtlasTexture_xrpx2")
16 | cost = 150
17 | effects = Array[ExtResource("1_3e852")]([])
18 |
--------------------------------------------------------------------------------
/Items/magical_flute.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="ItemData" load_steps=4 format=3 uid="uid://bc035w7hy8e2o"]
2 |
3 | [ext_resource type="Script" uid="uid://bwq22ry1guuwt" path="res://Items/item_effects/item_effect.gd" id="1_b2ehb"]
4 | [ext_resource type="Script" uid="uid://b405hrw22am82" path="res://Items/scripts/item_data.gd" id="2_j8bvl"]
5 | [ext_resource type="Texture2D" uid="uid://dl00h6igbpofn" path="res://Items/sprites/flute.png" id="3_srqxh"]
6 |
7 | [resource]
8 | script = ExtResource("2_j8bvl")
9 | name = "Nero's Magical Flute"
10 | description = "This it the Magical Flute that Nero lost in the dungeon!"
11 | texture = ExtResource("3_srqxh")
12 | cost = 0
13 | effects = Array[ExtResource("1_b2ehb")]([])
14 |
--------------------------------------------------------------------------------
/Items/scripts/equipable_item_data.gd:
--------------------------------------------------------------------------------
1 | class_name EquipableItemData extends ItemData
2 |
3 | enum Type { WEAPON, ARMOR, AMULET, RING }
4 | @export var type : Type = Type.WEAPON
5 | @export var modifiers : Array[ EquipableItemModifier ]
6 | @export var sprite_texture : Texture
7 |
--------------------------------------------------------------------------------
/Items/scripts/equipable_item_data.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c5iq7u0bmbjjq
2 |
--------------------------------------------------------------------------------
/Items/scripts/equipable_item_modifier.gd:
--------------------------------------------------------------------------------
1 | class_name EquipableItemModifier extends Resource
2 |
3 | enum Type { HEALTH, ATTACK, DEFENSE, SPEED }
4 | @export var type : Type = Type.HEALTH
5 | @export var value : int = 1
6 |
--------------------------------------------------------------------------------
/Items/scripts/equipable_item_modifier.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cvlavxf8cfh2r
2 |
--------------------------------------------------------------------------------
/Items/scripts/item_data.gd:
--------------------------------------------------------------------------------
1 | class_name ItemData extends Resource
2 |
3 | @export var name : String = ""
4 | @export_multiline var description : String = ""
5 | @export var texture : Texture2D
6 | @export var cost : int = 10
7 |
8 | @export_category("Item Use Effects")
9 | @export var effects : Array[ ItemEffect ]
10 |
11 |
12 | func use() -> bool:
13 | if effects.size() == 0:
14 | return false
15 |
16 | for e in effects:
17 | if e:
18 | e.use()
19 | return true
20 |
--------------------------------------------------------------------------------
/Items/scripts/item_data.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b405hrw22am82
2 |
--------------------------------------------------------------------------------
/Items/sprites/flute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Items/sprites/flute.png
--------------------------------------------------------------------------------
/Items/sprites/flute.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dl00h6igbpofn"
6 | path="res://.godot/imported/flute.png-6f7cc3251b694e00a33fdc8d600f92c3.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Items/sprites/flute.png"
14 | dest_files=["res://.godot/imported/flute.png-6f7cc3251b694e00a33fdc8d600f92c3.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Items/sprites/gear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Items/sprites/gear.png
--------------------------------------------------------------------------------
/Items/sprites/gear.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://d2b30nmoynyc2"
6 | path="res://.godot/imported/gear.png-05ec228c6bd652f530ec253f570f43fb.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Items/sprites/gear.png"
14 | dest_files=["res://.godot/imported/gear.png-05ec228c6bd652f530ec253f570f43fb.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Items/sprites/items.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Items/sprites/items.png
--------------------------------------------------------------------------------
/Items/sprites/items.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bmjan6873e3h5"
6 | path="res://.godot/imported/items.png-24e9197577ce25e8b70b6b4b14f4a4a6.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Items/sprites/items.png"
14 | dest_files=["res://.godot/imported/items.png-24e9197577ce25e8b70b6b4b14f4a4a6.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Items/stone.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="ItemData" load_steps=5 format=3 uid="uid://c0co5vj5hgk12"]
2 |
3 | [ext_resource type="Script" uid="uid://b405hrw22am82" path="res://Items/scripts/item_data.gd" id="1_6wwgd"]
4 | [ext_resource type="Script" uid="uid://bwq22ry1guuwt" path="res://Items/item_effects/item_effect.gd" id="1_gqhqt"]
5 | [ext_resource type="Texture2D" uid="uid://bmjan6873e3h5" path="res://Items/sprites/items.png" id="2_o7eoo"]
6 |
7 | [sub_resource type="AtlasTexture" id="AtlasTexture_sn00s"]
8 | atlas = ExtResource("2_o7eoo")
9 | region = Rect2(64, 0, 32, 32)
10 |
11 | [resource]
12 | script = ExtResource("1_6wwgd")
13 | name = "Stone"
14 | description = "Who doesn't love collecting rocks?"
15 | texture = SubResource("AtlasTexture_sn00s")
16 | cost = 10
17 | effects = Array[ExtResource("1_gqhqt")]([])
18 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_beam.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/audio/boss_beam.wav
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_beam.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://by5dsao4harb2"
6 | path="res://.godot/imported/boss_beam.wav-4c4d0554b4fd3e75cb5a12cc92818309.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Levels/Dungeon01/dark_wizard/audio/boss_beam.wav"
11 | dest_files=["res://.godot/imported/boss_beam.wav-4c4d0554b4fd3e75cb5a12cc92818309.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_destroy.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/audio/boss_destroy.wav
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_destroy.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://b5yd3deroq2i8"
6 | path="res://.godot/imported/boss_destroy.wav-481baf9ccc31feeb9adf29be36d2d324.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Levels/Dungeon01/dark_wizard/audio/boss_destroy.wav"
11 | dest_files=["res://.godot/imported/boss_destroy.wav-481baf9ccc31feeb9adf29be36d2d324.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_fireball.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/audio/boss_fireball.wav
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_fireball.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://bb5nnm7rrak8o"
6 | path="res://.godot/imported/boss_fireball.wav-5af2446607363bbdc3f271db0ced7346.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Levels/Dungeon01/dark_wizard/audio/boss_fireball.wav"
11 | dest_files=["res://.godot/imported/boss_fireball.wav-5af2446607363bbdc3f271db0ced7346.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_fireball_hit.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/audio/boss_fireball_hit.wav
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_fireball_hit.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://cokijl78200bl"
6 | path="res://.godot/imported/boss_fireball_hit.wav-9c0dd3dfb5f383480894e31d5f2f2b71.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Levels/Dungeon01/dark_wizard/audio/boss_fireball_hit.wav"
11 | dest_files=["res://.godot/imported/boss_fireball_hit.wav-9c0dd3dfb5f383480894e31d5f2f2b71.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_hurt.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/audio/boss_hurt.wav
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/audio/boss_hurt.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://crnnfraha4kvi"
6 | path="res://.godot/imported/boss_hurt.wav-828e223e2a04ce279f969f0634a83b04.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Levels/Dungeon01/dark_wizard/audio/boss_hurt.wav"
11 | dest_files=["res://.godot/imported/boss_hurt.wav-828e223e2a04ce279f969f0634a83b04.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/script/beam_attack.gd:
--------------------------------------------------------------------------------
1 | class_name BeamAttack extends Node2D
2 |
3 | @export var use_timer : bool = false
4 | @export var time_between_attacks : float = 3
5 |
6 | @onready var animation_player: AnimationPlayer = $AnimationPlayer
7 |
8 |
9 |
10 | func _ready() -> void:
11 | if use_timer == true:
12 | attack_delay()
13 | pass # Replace with function body.
14 |
15 |
16 |
17 | func attack() -> void:
18 | animation_player.play( "attack" )
19 | await animation_player.animation_finished
20 | animation_player.play( "default" )
21 | if use_timer == true:
22 | attack_delay()
23 |
24 |
25 |
26 | func attack_delay() -> void:
27 | await get_tree().create_timer( time_between_attacks ).timeout
28 | attack()
29 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/script/beam_attack.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ce3swbbiuss7m
2 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/script/dark_wizard_boss.gd.uid:
--------------------------------------------------------------------------------
1 | uid://j4py0ng56jx4
2 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/script/energy_beam_sprite.gd:
--------------------------------------------------------------------------------
1 | extends Sprite2D
2 |
3 |
4 | @export var speed : float = 100
5 |
6 | var rect : Rect2
7 |
8 | func _ready() -> void:
9 | rect = self.region_rect
10 |
11 |
12 | # Called every frame. 'delta' is the elapsed time since the previous frame.
13 | func _process(delta: float) -> void:
14 | region_rect.position += Vector2( speed * delta, 0 )
15 | pass
16 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/script/energy_beam_sprite.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dap1fmwxi0uix
2 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/script/energy_orb.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dqy5oib4xpv4e
2 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/boss-cloak.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/sprites/boss-cloak.png
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/boss-cloak.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bra05ahxi0gin"
6 | path="res://.godot/imported/boss-cloak.png-ed28d13dfd382be6d09aa6981ea35244.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Levels/Dungeon01/dark_wizard/sprites/boss-cloak.png"
14 | dest_files=["res://.godot/imported/boss-cloak.png-ed28d13dfd382be6d09aa6981ea35244.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/boss-hand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/sprites/boss-hand.png
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/boss-hand.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cxawdw6nbh356"
6 | path="res://.godot/imported/boss-hand.png-ed5076e54a37ce328de8c01bf27299fb.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Levels/Dungeon01/dark_wizard/sprites/boss-hand.png"
14 | dest_files=["res://.godot/imported/boss-hand.png-ed5076e54a37ce328de8c01bf27299fb.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/energy-beam-large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/sprites/energy-beam-large.png
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/energy-beam-large.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cob1616ang8i5"
6 | path="res://.godot/imported/energy-beam-large.png-fd4717290db10bb2f3050f1ef8c33f5f.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Levels/Dungeon01/dark_wizard/sprites/energy-beam-large.png"
14 | dest_files=["res://.godot/imported/energy-beam-large.png-fd4717290db10bb2f3050f1ef8c33f5f.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/energy-beam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/sprites/energy-beam.png
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/energy-beam.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dpdp2jjw18el2"
6 | path="res://.godot/imported/energy-beam.png-a853e602924b41f52d8b4b7c9151a828.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Levels/Dungeon01/dark_wizard/sprites/energy-beam.png"
14 | dest_files=["res://.godot/imported/energy-beam.png-a853e602924b41f52d8b4b7c9151a828.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/energy-explosion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/Dungeon01/dark_wizard/sprites/energy-explosion.png
--------------------------------------------------------------------------------
/Levels/Dungeon01/dark_wizard/sprites/energy-explosion.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://droi6y3sam6u4"
6 | path="res://.godot/imported/energy-explosion.png-c7c4e6821534f3f324cf6adbd420048e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Levels/Dungeon01/dark_wizard/sprites/energy-explosion.png"
14 | dest_files=["res://.godot/imported/energy-explosion.png-c7c4e6821534f3f324cf6adbd420048e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Levels/level_transition.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://vlpiuopcomwi"]
2 |
3 | [ext_resource type="Script" uid="uid://bukaqvt4pao3a" path="res://Levels/scripts/level_transition.gd" id="1_qr8du"]
4 |
5 | [sub_resource type="RectangleShape2D" id="RectangleShape2D_qauyy"]
6 | resource_local_to_scene = true
7 | size = Vector2(32, 64)
8 |
9 | [node name="LevelTransition" type="Area2D"]
10 | collision_layer = 0
11 | monitorable = false
12 | script = ExtResource("1_qr8du")
13 |
14 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
15 | position = Vector2(-16, 0)
16 | shape = SubResource("RectangleShape2D_qauyy")
17 | debug_color = Color(0.662745, 0, 1, 0.419608)
18 |
--------------------------------------------------------------------------------
/Levels/level_transition_interact.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://cecpvxcr0tved"]
2 |
3 | [ext_resource type="Script" uid="uid://dcntpfvw0e4a0" path="res://Levels/scripts/level_transition_interact.gd" id="1_3citu"]
4 |
5 | [sub_resource type="RectangleShape2D" id="RectangleShape2D_iilt6"]
6 | resource_local_to_scene = true
7 | size = Vector2(32, 32)
8 |
9 | [node name="LevelTransitionInteract" type="Area2D"]
10 | collision_layer = 0
11 | collision_mask = 4
12 | monitorable = false
13 | script = ExtResource("1_3citu")
14 |
15 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
16 | position = Vector2(0, -16)
17 | shape = SubResource("RectangleShape2D_iilt6")
18 | debug_color = Color(0.662745, 0, 1, 0.419608)
19 |
--------------------------------------------------------------------------------
/Levels/music/example_music_01.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/music/example_music_01.ogg
--------------------------------------------------------------------------------
/Levels/music/example_music_01.ogg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="oggvorbisstr"
4 | type="AudioStreamOggVorbis"
5 | uid="uid://io7jxqk648xa"
6 | path="res://.godot/imported/example_music_01.ogg-5737df881e2a9f358d875b20ff14c265.oggvorbisstr"
7 |
8 | [deps]
9 |
10 | source_file="res://Levels/music/example_music_01.ogg"
11 | dest_files=["res://.godot/imported/example_music_01.ogg-5737df881e2a9f358d875b20ff14c265.oggvorbisstr"]
12 |
13 | [params]
14 |
15 | loop=true
16 | loop_offset=0.0
17 | bpm=0.0
18 | beat_count=0
19 | bar_beats=4
20 |
--------------------------------------------------------------------------------
/Levels/music/example_music_02.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/music/example_music_02.ogg
--------------------------------------------------------------------------------
/Levels/music/example_music_02.ogg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="oggvorbisstr"
4 | type="AudioStreamOggVorbis"
5 | uid="uid://bg0uwtt8v0qps"
6 | path="res://.godot/imported/example_music_02.ogg-44548dcf0a569b1cab0c599c76d8ddb1.oggvorbisstr"
7 |
8 | [deps]
9 |
10 | source_file="res://Levels/music/example_music_02.ogg"
11 | dest_files=["res://.godot/imported/example_music_02.ogg-44548dcf0a569b1cab0c599c76d8ddb1.oggvorbisstr"]
12 |
13 | [params]
14 |
15 | loop=true
16 | loop_offset=0.0
17 | bpm=0.0
18 | beat_count=0
19 | bar_beats=4
20 |
--------------------------------------------------------------------------------
/Levels/music/example_music_03.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Levels/music/example_music_03.ogg
--------------------------------------------------------------------------------
/Levels/music/example_music_03.ogg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="oggvorbisstr"
4 | type="AudioStreamOggVorbis"
5 | uid="uid://bss1hbkoufxql"
6 | path="res://.godot/imported/example_music_03.ogg-c44c87950432cfc97419df968e4b022b.oggvorbisstr"
7 |
8 | [deps]
9 |
10 | source_file="res://Levels/music/example_music_03.ogg"
11 | dest_files=["res://.godot/imported/example_music_03.ogg-c44c87950432cfc97419df968e4b022b.oggvorbisstr"]
12 |
13 | [params]
14 |
15 | loop=true
16 | loop_offset=0.0
17 | bpm=0.0
18 | beat_count=0
19 | bar_beats=4
20 |
--------------------------------------------------------------------------------
/Levels/player_spawn.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://dr4blo7ya448q"]
2 |
3 | [ext_resource type="Script" uid="uid://jdnxjygmgenq" path="res://Levels/scripts/player_spawn.gd" id="1_3xp62"]
4 | [ext_resource type="Texture2D" uid="uid://d3nmq8hjxv1d6" path="res://Player/Sprites/player_sprite.png" id="2_mcbia"]
5 |
6 | [node name="PlayerSpawn" type="Node2D"]
7 | script = ExtResource("1_3xp62")
8 |
9 | [node name="Sprite2D" type="Sprite2D" parent="."]
10 | modulate = Color(0.298039, 1, 0.431373, 0.796078)
11 | position = Vector2(0, -20)
12 | texture = ExtResource("2_mcbia")
13 | hframes = 16
14 | vframes = 8
15 |
--------------------------------------------------------------------------------
/Levels/scripts/level.gd:
--------------------------------------------------------------------------------
1 | class_name Level extends Node2D
2 |
3 | @export var music : AudioStream
4 |
5 |
6 |
7 | func _ready() -> void:
8 | self.y_sort_enabled = true
9 | PlayerManager.set_as_parent( self )
10 | LevelManager.level_load_started.connect( _free_level )
11 | AudioManager.play_music( music )
12 |
13 |
14 |
15 | func _free_level() -> void:
16 | PlayerManager.unparent_player( self )
17 | queue_free()
18 |
--------------------------------------------------------------------------------
/Levels/scripts/level.gd.uid:
--------------------------------------------------------------------------------
1 | uid://d2eyblbal755o
2 |
--------------------------------------------------------------------------------
/Levels/scripts/level_transition.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bukaqvt4pao3a
2 |
--------------------------------------------------------------------------------
/Levels/scripts/level_transition_interact.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | class_name LevelTransitionInteract extends LevelTransition
3 |
4 |
5 | func _ready() -> void:
6 | super()
7 | area_entered.connect( _on_area_entered )
8 | area_exited.connect( _on_area_exited )
9 |
10 |
11 | func player_interact() -> void:
12 | _player_entered( PlayerManager.player )
13 | pass
14 |
15 |
16 | func _on_area_entered( _a : Area2D ) -> void:
17 | PlayerManager.interact_pressed.connect( player_interact )
18 | pass
19 |
20 |
21 | func _on_area_exited( _a : Area2D ) -> void:
22 | PlayerManager.interact_pressed.disconnect( player_interact )
23 | pass
24 |
25 |
26 | func _update_area() -> void:
27 | super()
28 | collision_shape.shape.size = Vector2( 32, 32 )
29 |
--------------------------------------------------------------------------------
/Levels/scripts/level_transition_interact.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dcntpfvw0e4a0
2 |
--------------------------------------------------------------------------------
/Levels/scripts/player_spawn.gd:
--------------------------------------------------------------------------------
1 | extends Node2D
2 |
3 |
4 | func _ready() -> void:
5 | visible = false
6 | if PlayerManager.player_spawned == false:
7 | PlayerManager.set_player_position( global_position )
8 | PlayerManager.player_spawned = true
9 |
--------------------------------------------------------------------------------
/Levels/scripts/player_spawn.gd.uid:
--------------------------------------------------------------------------------
1 | uid://jdnxjygmgenq
2 |
--------------------------------------------------------------------------------
/Player/Sprites/AttackSprite01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/Sprites/AttackSprite01.png
--------------------------------------------------------------------------------
/Player/Sprites/AttackSprite01.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b3nnlf0oh5oco"
6 | path="res://.godot/imported/AttackSprite01.png-a353dabb17e684057aa9decebf8dcc22.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/AttackSprite01.png"
14 | dest_files=["res://.godot/imported/AttackSprite01.png-a353dabb17e684057aa9decebf8dcc22.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/Sprites/ExamplePlayerSprite.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ccvm0bl46hnwo"
6 | path="res://.godot/imported/ExamplePlayerSprite.png-1a0713d9e212d397b05cebe8c8b9b26c.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/ExamplePlayerSprite.png"
14 | dest_files=["res://.godot/imported/ExamplePlayerSprite.png-1a0713d9e212d397b05cebe8c8b9b26c.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/Sprites/PlayerSprite02.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b3cfpikyg8h3v"
6 | path="res://.godot/imported/PlayerSprite02.png-ce9d001717ebf7bf2d0b7f359222e7d8.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/PlayerSprite02.png"
14 | dest_files=["res://.godot/imported/PlayerSprite02.png-ce9d001717ebf7bf2d0b7f359222e7d8.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/Sprites/Shadow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/Sprites/Shadow.png
--------------------------------------------------------------------------------
/Player/Sprites/Shadow.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dxda6pdclrpa"
6 | path="res://.godot/imported/Shadow.png-30e68cc453bd3dfb3929821f6e4fa4be.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/Shadow.png"
14 | dest_files=["res://.godot/imported/Shadow.png-30e68cc453bd3dfb3929821f6e4fa4be.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/Sprites/boomerang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/Sprites/boomerang.png
--------------------------------------------------------------------------------
/Player/Sprites/boomerang.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c3fker5i76tw0"
6 | path="res://.godot/imported/boomerang.png-9088f0d3a0aec2b6802d7d24e629971f.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/boomerang.png"
14 | dest_files=["res://.godot/imported/boomerang.png-9088f0d3a0aec2b6802d7d24e629971f.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/Sprites/player_sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/Sprites/player_sprite.png
--------------------------------------------------------------------------------
/Player/Sprites/player_sprite.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://d3nmq8hjxv1d6"
6 | path="res://.godot/imported/player_sprite.png-b725e88656dbe70f8a11b96831749ee0.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/player_sprite.png"
14 | dest_files=["res://.godot/imported/player_sprite.png-b725e88656dbe70f8a11b96831749ee0.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/Sprites/player_sprite_ninja_suit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/Sprites/player_sprite_ninja_suit.png
--------------------------------------------------------------------------------
/Player/Sprites/player_sprite_ninja_suit.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ccbphnkvbmi6h"
6 | path="res://.godot/imported/player_sprite_ninja_suit.png-35646021292b64dcdf16f245805f4e7b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/player_sprite_ninja_suit.png"
14 | dest_files=["res://.godot/imported/player_sprite_ninja_suit.png-35646021292b64dcdf16f245805f4e7b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/Sprites/player_sprite_sword.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/Sprites/player_sprite_sword.png
--------------------------------------------------------------------------------
/Player/Sprites/player_sprite_sword.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://fg8lhaso7usk"
6 | path="res://.godot/imported/player_sprite_sword.png-e1f60c386845e8034c0ee67631ddc862.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/player_sprite_sword.png"
14 | dest_files=["res://.godot/imported/player_sprite_sword.png-e1f60c386845e8034c0ee67631ddc862.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/Sprites/player_sprite_sword_katana.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/Sprites/player_sprite_sword_katana.png
--------------------------------------------------------------------------------
/Player/Sprites/player_sprite_sword_katana.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bd0c644w7wme2"
6 | path="res://.godot/imported/player_sprite_sword_katana.png-1e9a28bf9f12e12f20f20bce7b57eeec.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/player_sprite_sword_katana.png"
14 | dest_files=["res://.godot/imported/player_sprite_sword_katana.png-1e9a28bf9f12e12f20f20bce7b57eeec.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/Sprites/spin_effect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/Sprites/spin_effect.png
--------------------------------------------------------------------------------
/Player/Sprites/spin_effect.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bqlto87dhifhn"
6 | path="res://.godot/imported/spin_effect.png-a7fd265f1c1a150875f7ca9a4fb75d67.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Player/Sprites/spin_effect.png"
14 | dest_files=["res://.godot/imported/spin_effect.png-a7fd265f1c1a150875f7ca9a4fb75d67.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Player/audio/SwordSwoosh.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/SwordSwoosh.wav
--------------------------------------------------------------------------------
/Player/audio/SwordSwoosh.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://djgew73osuei"
6 | path="res://.godot/imported/SwordSwoosh.wav-becdece7c98872eab8b1ea06def51f2a.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/SwordSwoosh.wav"
11 | dest_files=["res://.godot/imported/SwordSwoosh.wav-becdece7c98872eab8b1ea06def51f2a.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/boomerang.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/boomerang.wav
--------------------------------------------------------------------------------
/Player/audio/boomerang.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://dtv7aveay4k4"
6 | path="res://.godot/imported/boomerang.wav-3388d0c1e54c17a149dba44c767efbb8.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/boomerang.wav"
11 | dest_files=["res://.godot/imported/boomerang.wav-3388d0c1e54c17a149dba44c767efbb8.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=2
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/catch.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/catch.wav
--------------------------------------------------------------------------------
/Player/audio/catch.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://cl4y2eoe5b40w"
6 | path="res://.godot/imported/catch.wav-d992d65b3e3b8aa08a89fa1be6e8d8dc.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/catch.wav"
11 | dest_files=["res://.godot/imported/catch.wav-d992d65b3e3b8aa08a89fa1be6e8d8dc.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/charged.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/charged.wav
--------------------------------------------------------------------------------
/Player/audio/charged.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://cyb6cn6cb5eck"
6 | path="res://.godot/imported/charged.wav-f1e0f89c7bb8e403f76b782a70957e0f.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/charged.wav"
11 | dest_files=["res://.godot/imported/charged.wav-f1e0f89c7bb8e403f76b782a70957e0f.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/exhausted.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/exhausted.wav
--------------------------------------------------------------------------------
/Player/audio/exhausted.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://d2m7c7jmeedu0"
6 | path="res://.godot/imported/exhausted.wav-72387b5194860430386d439652ccc6e1.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/exhausted.wav"
11 | dest_files=["res://.godot/imported/exhausted.wav-72387b5194860430386d439652ccc6e1.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/hit_player.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/hit_player.wav
--------------------------------------------------------------------------------
/Player/audio/hit_player.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://cawdgk7twqcxt"
6 | path="res://.godot/imported/hit_player.wav-112a2f79b456cf96e06cd8ba004e96de.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/hit_player.wav"
11 | dest_files=["res://.godot/imported/hit_player.wav-112a2f79b456cf96e06cd8ba004e96de.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/hm_.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/hm_.wav
--------------------------------------------------------------------------------
/Player/audio/hm_.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://c0er10d7pdijg"
6 | path="res://.godot/imported/hm_.wav-db72e40ec721be451fd0257ecbd3c9a9.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/hm_.wav"
11 | dest_files=["res://.godot/imported/hm_.wav-db72e40ec721be451fd0257ecbd3c9a9.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/hmm.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/hmm.wav
--------------------------------------------------------------------------------
/Player/audio/hmm.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://bq4hg6ctjs2dw"
6 | path="res://.godot/imported/hmm.wav-a2878f723ef69d6046df5491291376a0.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/hmm.wav"
11 | dest_files=["res://.godot/imported/hmm.wav-a2878f723ef69d6046df5491291376a0.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/huwh.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/huwh.wav
--------------------------------------------------------------------------------
/Player/audio/huwh.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://dkbhvl50ijrnx"
6 | path="res://.godot/imported/huwh.wav-ab1bfb8267f893444d4870b0e8864bfb.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/huwh.wav"
11 | dest_files=["res://.godot/imported/huwh.wav-ab1bfb8267f893444d4870b0e8864bfb.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/hwaah.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/hwaah.wav
--------------------------------------------------------------------------------
/Player/audio/hwaah.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://db7poj5jgjgy"
6 | path="res://.godot/imported/hwaah.wav-b437c94c41a1c0575c567e28da579d19.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/hwaah.wav"
11 | dest_files=["res://.godot/imported/hwaah.wav-b437c94c41a1c0575c567e28da579d19.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/hyah.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/hyah.wav
--------------------------------------------------------------------------------
/Player/audio/hyah.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://l23vvwtmydo8"
6 | path="res://.godot/imported/hyah.wav-bb7f969085160dadec0e1581e6958949.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/hyah.wav"
11 | dest_files=["res://.godot/imported/hyah.wav-bb7f969085160dadec0e1581e6958949.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/level_up_jingle.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/level_up_jingle.wav
--------------------------------------------------------------------------------
/Player/audio/level_up_jingle.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://bohmwbmrmqwd5"
6 | path="res://.godot/imported/level_up_jingle.wav-576b67c631baecb321947eed005c3234.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/level_up_jingle.wav"
11 | dest_files=["res://.godot/imported/level_up_jingle.wav-576b67c631baecb321947eed005c3234.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/spin-attack.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/spin-attack.wav
--------------------------------------------------------------------------------
/Player/audio/spin-attack.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://dxq1ukv3mr2q1"
6 | path="res://.godot/imported/spin-attack.wav-a548ae9fa2cf58aa56036c73c3cef9ec.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/spin-attack.wav"
11 | dest_files=["res://.godot/imported/spin-attack.wav-a548ae9fa2cf58aa56036c73c3cef9ec.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/audio/throw.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Player/audio/throw.wav
--------------------------------------------------------------------------------
/Player/audio/throw.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://ccg1xl4m2ge8o"
6 | path="res://.godot/imported/throw.wav-a2865b71cfa5356703288e524d114a9b.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Player/audio/throw.wav"
11 | dest_files=["res://.godot/imported/throw.wav-a2865b71cfa5356703288e524d114a9b.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Player/scripts/abilities/abilities.gd:
--------------------------------------------------------------------------------
1 | class_name PlayerAbilities extends Node
2 |
3 | const BOOMERANG = preload("res://Player/boomerang.tscn")
4 |
5 | enum abilities { BOOMERANG, GRAPPLE }
6 |
7 | var selected_ability = abilities.BOOMERANG
8 | var player : Player
9 | var boomerang_instance : Boomerang = null
10 |
11 |
12 |
13 | func _ready() -> void:
14 | player = PlayerManager.player
15 |
16 |
17 |
18 | func _unhandled_input(event: InputEvent) -> void:
19 | if event.is_action_pressed( "ability" ):
20 | if selected_ability == abilities.BOOMERANG:
21 | boomerang_ability()
22 | pass
23 |
24 |
25 | func boomerang_ability() -> void:
26 | if boomerang_instance != null:
27 | return
28 |
29 | var _b = BOOMERANG.instantiate() as Boomerang
30 | player.add_sibling( _b )
31 | _b.global_position = player.global_position
32 |
33 | var throw_direction = player.direction
34 | if throw_direction == Vector2.ZERO:
35 | throw_direction = player.cardinal_direction
36 |
37 | _b.throw( throw_direction )
38 | boomerang_instance = _b
39 | pass
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Player/scripts/abilities/abilities.gd.uid:
--------------------------------------------------------------------------------
1 | uid://borh5gy3njj8k
2 |
--------------------------------------------------------------------------------
/Player/scripts/abilities/boomerang.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ccuh77gau1yn8
2 |
--------------------------------------------------------------------------------
/Player/scripts/player.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b7e6raial18mb
2 |
--------------------------------------------------------------------------------
/Player/scripts/player_camera.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b6cf2mm5leuys
2 |
--------------------------------------------------------------------------------
/Player/scripts/player_interactions_host.gd:
--------------------------------------------------------------------------------
1 | class_name PlayerInteractionsHost extends Node2D
2 |
3 | @onready var player : Player = $".."
4 |
5 |
6 | # Called when the node enters the scene tree for the first time.
7 | func _ready():
8 | player.direction_changed.connect( _update_direction )
9 | pass # Replace with function body.
10 |
11 |
12 | func _update_direction( new_direction : Vector2 ) -> void:
13 | match new_direction:
14 | Vector2.DOWN:
15 | rotation_degrees = 0
16 | Vector2.UP:
17 | rotation_degrees = 180
18 | Vector2.LEFT:
19 | rotation_degrees = 90
20 | Vector2.RIGHT:
21 | rotation_degrees = -90
22 | _:
23 | rotation_degrees = 0
24 | pass
25 |
26 |
--------------------------------------------------------------------------------
/Player/scripts/player_interactions_host.gd.uid:
--------------------------------------------------------------------------------
1 | uid://uqapv8bltas2
2 |
--------------------------------------------------------------------------------
/Player/scripts/player_sprite.gd:
--------------------------------------------------------------------------------
1 | extends Sprite2D
2 |
3 | const FRAME_COUNT : int = 128
4 |
5 | @onready var weapon_below: Sprite2D = $Sprite2D_Weapon_Below
6 | @onready var weapon_above: Sprite2D = $Sprite2D_Weapon_Above
7 |
8 |
9 | func _ready() -> void:
10 | PlayerManager.INVENTORY_DATA.equipment_changed.connect( _on_equipment_changed )
11 | SaveManager.game_loaded.connect( _on_equipment_changed )
12 | pass
13 |
14 |
15 |
16 | func _process( _delta: float ) -> void:
17 | weapon_below.frame = frame
18 | weapon_above.frame = frame + FRAME_COUNT
19 | pass
20 |
21 |
22 |
23 | func _on_equipment_changed() -> void:
24 | var equipment : Array[ SlotData ] = PlayerManager.INVENTORY_DATA.equipment_slots()
25 | texture = equipment[ 0 ].item_data.sprite_texture
26 | weapon_below.texture = equipment[ 1 ].item_data.sprite_texture
27 | weapon_above.texture = equipment[ 1 ].item_data.sprite_texture
28 | pass
29 |
--------------------------------------------------------------------------------
/Player/scripts/player_sprite.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cfr1sv1mqq0lf
2 |
--------------------------------------------------------------------------------
/Player/scripts/player_state_machine.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bl7bevj0k4spc
2 |
--------------------------------------------------------------------------------
/Player/scripts/push_area.gd:
--------------------------------------------------------------------------------
1 | extends Area2D
2 |
3 |
4 | func _ready() -> void:
5 | body_entered.connect( _on_body_entered )
6 | body_exited.connect( _on_body_exited )
7 |
8 |
9 | func _on_body_entered( b : Node2D ) -> void:
10 | if b is PushableStatue:
11 | b.push_direction = PlayerManager.player.direction
12 | pass
13 |
14 |
15 | func _on_body_exited( b : Node2D ) -> void:
16 | if b is PushableStatue:
17 | b.push_direction = Vector2.ZERO
18 | pass
19 |
--------------------------------------------------------------------------------
/Player/scripts/push_area.gd.uid:
--------------------------------------------------------------------------------
1 | uid://drmpr3xpyacm1
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state.gd:
--------------------------------------------------------------------------------
1 | class_name State extends Node
2 |
3 | ## Stores a reference to the player that this State belongs to
4 | static var player: Player
5 | static var state_machine: PlayerStateMachine
6 |
7 | func _ready():
8 | pass # Replace with function body.
9 |
10 |
11 | ## What happens when we initialize this state?
12 | func init() -> void:
13 | pass
14 |
15 |
16 | ## What happens when the player enters this State?
17 | func enter() -> void:
18 | pass
19 |
20 |
21 | ## What happens when the player exits this State?
22 | func exit() -> void:
23 | pass
24 |
25 |
26 | ## What happens during the _process update in this State?
27 | func process( _delta : float ) -> State:
28 | return null
29 |
30 |
31 | ## What happens during the _physics_process update in this State?
32 | func physics( _delta : float ) -> State:
33 | return null
34 |
35 |
36 | ## What happens with input events in this State?
37 | func handle_input( _event: InputEvent ) -> State:
38 | return null
39 |
--------------------------------------------------------------------------------
/Player/scripts/states/state.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dh33ungej8n6j
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_attack.gd.uid:
--------------------------------------------------------------------------------
1 | uid://brxt453p4en6r
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_carry.gd.uid:
--------------------------------------------------------------------------------
1 | uid://by4twmo0mdixl
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_charge_attack.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cor72ltffhvg4
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_dash.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dbo3c1w031clu
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_death.gd:
--------------------------------------------------------------------------------
1 | class_name State_Death extends State
2 |
3 | @export var exhaust_audio : AudioStream
4 | @onready var audio : AudioStreamPlayer2D = $"../../Audio/AudioStreamPlayer2D"
5 |
6 |
7 |
8 | ## What happens when we initialize this state?
9 | func init() -> void:
10 | pass
11 |
12 |
13 | ## What happens when the player enters this State?
14 | func enter() -> void:
15 | player.animation_player.play( "death" )
16 | audio.stream = exhaust_audio
17 | audio.play()
18 | PlayerHud.show_game_over_screen()
19 | AudioManager.play_music( null )
20 | pass
21 |
22 |
23 | ## What happens when the player exits this State?
24 | func exit() -> void:
25 | pass
26 |
27 |
28 | ## What happens during the _process update in this State?
29 | func process( _delta : float ) -> State:
30 | player.velocity = Vector2.ZERO
31 | return null
32 |
33 |
34 | ## What happens during the _physics_process update in this State?
35 | func physics( _delta : float ) -> State:
36 | return null
37 |
38 |
39 | ## What happens with input events in this State?
40 | func handle_input( _event: InputEvent ) -> State:
41 | return null
42 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_death.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dbm16y8n8apf
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_idle.gd.uid:
--------------------------------------------------------------------------------
1 | uid://qwkletx8xkdj
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_lift.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dx15lk6y18tbj
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_stun.gd.uid:
--------------------------------------------------------------------------------
1 | uid://balw8bf16tnb1
2 |
--------------------------------------------------------------------------------
/Player/scripts/states/state_walk.gd.uid:
--------------------------------------------------------------------------------
1 | uid://6je8bp3f2twi
2 |
--------------------------------------------------------------------------------
/Props/Plants/plant.gd:
--------------------------------------------------------------------------------
1 | class_name Plant extends Node2D
2 |
3 | @onready var animation_player: AnimationPlayer = $AnimationPlayer
4 |
5 |
6 | # Called when the node enters the scene tree for the first time.
7 | func _ready():
8 | $HitBox.damaged.connect( take_damage )
9 | pass # Replace with function body.
10 |
11 |
12 | func take_damage( _damage : HurtBox ) -> void:
13 | animation_player.play("destroy")
14 | await animation_player.animation_finished
15 | queue_free()
16 | pass
17 |
18 |
--------------------------------------------------------------------------------
/Props/Plants/plant.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dc2ole5s83b38
2 |
--------------------------------------------------------------------------------
/Props/Sprites/Props.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Props/Sprites/Props.png
--------------------------------------------------------------------------------
/Props/Sprites/Props.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cvm3p4rqs1a8y"
6 | path="res://.godot/imported/Props.png-64d9c2c8cfc74aa6d4ef206e2ca73999.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Props/Sprites/Props.png"
14 | dest_files=["res://.godot/imported/Props.png-64d9c2c8cfc74aa6d4ef206e2ca73999.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Props/pot/pot_destroy.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Props/pot/pot_destroy.wav
--------------------------------------------------------------------------------
/Props/pot/pot_destroy.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://6i4co4xfo64"
6 | path="res://.godot/imported/pot_destroy.wav-5e48f0021b10345ffed806a554b0b0db.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://Props/pot/pot_destroy.wav"
11 | dest_files=["res://.godot/imported/pot_destroy.wav-5e48f0021b10345ffed806a554b0b0db.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/Props/torches/torch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Props/torches/torch.png
--------------------------------------------------------------------------------
/Props/torches/torch.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dhrq64arl0j8q"
6 | path="res://.godot/imported/torch.png-0eb2a8ae799f5567fa8bfa615dff75be.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Props/torches/torch.png"
14 | dest_files=["res://.godot/imported/torch.png-0eb2a8ae799f5567fa8bfa615dff75be.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Props/torches/torch_light_flicker.gd:
--------------------------------------------------------------------------------
1 | extends PointLight2D
2 |
3 |
4 |
5 | func _ready() -> void:
6 | flicker()
7 |
8 |
9 |
10 | func flicker() -> void:
11 | energy = randf() * 0.1 + 0.9
12 | scale = Vector2( 1, 1 ) * energy
13 | await get_tree().create_timer( 0.1333 ).timeout
14 | flicker()
15 | pass
16 |
--------------------------------------------------------------------------------
/Props/torches/torch_light_flicker.gd.uid:
--------------------------------------------------------------------------------
1 | uid://d3qwjb8j7b0xq
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # 2D Action Adventure RPG Tutorial
4 |
5 | *Michael Games /// https://www.youtube.com/@MichaelGamesOfficial /// https://michaelgames.itch.io/*
6 |
7 | Code Repository for the Michael Games Action Adventure RPG Tutorial Series project.
8 |
9 | This Repository contains the complete project (currently under development) for my YouTube tutorial series.
10 |
11 | The series covers how to build a top down 2D game that features action, adventure and light RPG mechanics, in Godot 4 using GD Script.
12 |
13 | Tutorial Series Playlist: https://www.youtube.com/playlist?list=PLfcCiyd_V9GH8M9xd_QKlyU8jryGcy3Xa
14 |
--------------------------------------------------------------------------------
/Tile Maps/Sprites/Grass-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Tile Maps/Sprites/Grass-01.png
--------------------------------------------------------------------------------
/Tile Maps/Sprites/Grass-01.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://d01qv0qqg01ba"
6 | path="res://.godot/imported/Grass-01.png-41eec86b62a9dad25022328ee9362f55.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Tile Maps/Sprites/Grass-01.png"
14 | dest_files=["res://.godot/imported/Grass-01.png-41eec86b62a9dad25022328ee9362f55.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Tile Maps/Sprites/dungeon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Tile Maps/Sprites/dungeon.png
--------------------------------------------------------------------------------
/Tile Maps/Sprites/dungeon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cnpolkv2ibqxu"
6 | path="res://.godot/imported/dungeon.png-76896205d5527f507b849928a7fc1b06.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Tile Maps/Sprites/dungeon.png"
14 | dest_files=["res://.godot/imported/dungeon.png-76896205d5527f507b849928a7fc1b06.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Tile Maps/Sprites/dungeon_entrance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Tile Maps/Sprites/dungeon_entrance.png
--------------------------------------------------------------------------------
/Tile Maps/Sprites/dungeon_entrance.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://fwby631k8pda"
6 | path="res://.godot/imported/dungeon_entrance.png-3a41f9bcbb257274e25be365fad17f0e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Tile Maps/Sprites/dungeon_entrance.png"
14 | dest_files=["res://.godot/imported/dungeon_entrance.png-3a41f9bcbb257274e25be365fad17f0e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Tile Maps/Sprites/shop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/Tile Maps/Sprites/shop.png
--------------------------------------------------------------------------------
/Tile Maps/Sprites/shop.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bemeay5b84y1p"
6 | path="res://.godot/imported/shop.png-a1a0504b57c95772d3352fc745a2f497.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://Tile Maps/Sprites/shop.png"
14 | dest_files=["res://.godot/imported/shop.png-a1a0504b57c95772d3352fc745a2f497.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/Tile Maps/level_tile_map_layer.gd:
--------------------------------------------------------------------------------
1 | class_name LevelTileMapLayer extends TileMapLayer
2 |
3 | @export var tile_size : float = 32
4 | @export var update_bounds : bool = true
5 |
6 |
7 | # Called when the node enters the scene tree for the first time.
8 | func _ready():
9 | if update_bounds:
10 | LevelManager.change_tilemap_bounds( _get_tilemap_bounds() )
11 | pass # Replace with function body.
12 |
13 |
14 | func _get_tilemap_bounds() -> Array[ Vector2 ]:
15 | var bounds : Array[ Vector2 ] = []
16 | bounds.append(
17 | Vector2( get_used_rect().position * tile_size ) + position
18 | )
19 | bounds.append(
20 | Vector2( get_used_rect().end * tile_size ) + position
21 | )
22 | return bounds
23 |
--------------------------------------------------------------------------------
/Tile Maps/level_tile_map_layer.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bwx222a4l2s5v
2 |
--------------------------------------------------------------------------------
/aarpg-tutorial-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/aarpg-tutorial-icon.png
--------------------------------------------------------------------------------
/aarpg-tutorial-icon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://jquio1mxdgjw"
6 | path="res://.godot/imported/aarpg-tutorial-icon.png-286157c8631197443c482be9b8a523a9.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://aarpg-tutorial-icon.png"
14 | dest_files=["res://.godot/imported/aarpg-tutorial-icon.png-286157c8631197443c482be9b8a523a9.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/cursor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/addons/michael_games_editor_plugins/assets/cursor.png
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/cursor.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cgsvi1hd4ou18"
6 | path="res://.godot/imported/cursor.png-523f4751fd3a5c9e9978fd306600ef38.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://addons/michael_games_editor_plugins/assets/cursor.png"
14 | dest_files=["res://.godot/imported/cursor.png-523f4751fd3a5c9e9978fd306600ef38.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Bold.ttf
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Bold.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://b0udh2pruq7p0"
6 | path="res://.godot/imported/LibreBaskerville-Bold.ttf-13352698c09b1c7e9d977b19bac486c9.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Bold.ttf"
11 | dest_files=["res://.godot/imported/LibreBaskerville-Bold.ttf-13352698c09b1c7e9d977b19bac486c9.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=1
17 | generate_mipmaps=false
18 | disable_embedded_bitmaps=true
19 | multichannel_signed_distance_field=false
20 | msdf_pixel_range=8
21 | msdf_size=48
22 | allow_system_fallback=true
23 | force_autohinter=false
24 | hinting=1
25 | subpixel_positioning=1
26 | keep_rounding_remainders=true
27 | oversampling=0.0
28 | Fallbacks=null
29 | fallbacks=[]
30 | Compress=null
31 | compress=true
32 | preload=[]
33 | language_support={}
34 | script_support={}
35 | opentype_features={}
36 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Italic.ttf
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Italic.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://df3pvj6w4celp"
6 | path="res://.godot/imported/LibreBaskerville-Italic.ttf-3e7de74646b3c3b2c3c6c93d540a919b.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Italic.ttf"
11 | dest_files=["res://.godot/imported/LibreBaskerville-Italic.ttf-3e7de74646b3c3b2c3c6c93d540a919b.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=1
17 | generate_mipmaps=false
18 | disable_embedded_bitmaps=true
19 | multichannel_signed_distance_field=false
20 | msdf_pixel_range=8
21 | msdf_size=48
22 | allow_system_fallback=true
23 | force_autohinter=false
24 | hinting=1
25 | subpixel_positioning=1
26 | keep_rounding_remainders=true
27 | oversampling=0.0
28 | Fallbacks=null
29 | fallbacks=[]
30 | Compress=null
31 | compress=true
32 | preload=[]
33 | language_support={}
34 | script_support={}
35 | opentype_features={}
36 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Regular.ttf
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Regular.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://b1jsd0xtoslsf"
6 | path="res://.godot/imported/LibreBaskerville-Regular.ttf-b4a443d4d7263876b08cd1b051a6d2c4.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://addons/michael_games_editor_plugins/assets/fonts/LibreBaskerville-Regular.ttf"
11 | dest_files=["res://.godot/imported/LibreBaskerville-Regular.ttf-b4a443d4d7263876b08cd1b051a6d2c4.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=1
17 | generate_mipmaps=false
18 | disable_embedded_bitmaps=true
19 | multichannel_signed_distance_field=false
20 | msdf_pixel_range=8
21 | msdf_size=48
22 | allow_system_fallback=true
23 | force_autohinter=false
24 | hinting=1
25 | subpixel_positioning=1
26 | keep_rounding_remainders=true
27 | oversampling=0.0
28 | Fallbacks=null
29 | fallbacks=[]
30 | Compress=null
31 | compress=true
32 | preload=[]
33 | language_support={}
34 | script_support={}
35 | opentype_features={}
36 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/Oswald-VariableFont_wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/addons/michael_games_editor_plugins/assets/fonts/Oswald-VariableFont_wght.ttf
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/Oswald-VariableFont_wght.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://brgumcgqqwy6"
6 | path="res://.godot/imported/Oswald-VariableFont_wght.ttf-d7762be38755aeaa69ba06b15cd38f16.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://addons/michael_games_editor_plugins/assets/fonts/Oswald-VariableFont_wght.ttf"
11 | dest_files=["res://.godot/imported/Oswald-VariableFont_wght.ttf-d7762be38755aeaa69ba06b15cd38f16.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=1
17 | generate_mipmaps=false
18 | disable_embedded_bitmaps=true
19 | multichannel_signed_distance_field=false
20 | msdf_pixel_range=8
21 | msdf_size=48
22 | allow_system_fallback=true
23 | force_autohinter=false
24 | hinting=1
25 | subpixel_positioning=1
26 | keep_rounding_remainders=true
27 | oversampling=0.0
28 | Fallbacks=null
29 | fallbacks=[]
30 | Compress=null
31 | compress=true
32 | preload=[]
33 | language_support={}
34 | script_support={}
35 | opentype_features={}
36 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/m6x11.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/addons/michael_games_editor_plugins/assets/fonts/m6x11.ttf
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/m6x11.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://be1n6lth2hx0h"
6 | path="res://.godot/imported/m6x11.ttf-f27cbb8c8af3befec071dbe5e2a41588.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://addons/michael_games_editor_plugins/assets/fonts/m6x11.ttf"
11 | dest_files=["res://.godot/imported/m6x11.ttf-f27cbb8c8af3befec071dbe5e2a41588.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=0
17 | generate_mipmaps=false
18 | disable_embedded_bitmaps=true
19 | multichannel_signed_distance_field=false
20 | msdf_pixel_range=8
21 | msdf_size=48
22 | allow_system_fallback=true
23 | force_autohinter=false
24 | hinting=1
25 | subpixel_positioning=1
26 | keep_rounding_remainders=true
27 | oversampling=0.0
28 | Fallbacks=null
29 | fallbacks=[]
30 | Compress=null
31 | compress=true
32 | preload=[]
33 | language_support={}
34 | script_support={}
35 | opentype_features={}
36 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/m6x11plus.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/addons/michael_games_editor_plugins/assets/fonts/m6x11plus.ttf
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/fonts/m6x11plus.ttf.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="font_data_dynamic"
4 | type="FontFile"
5 | uid="uid://c5ee0dl2lopao"
6 | path="res://.godot/imported/m6x11plus.ttf-ca77d717aed731e6584d173e0106b6f3.fontdata"
7 |
8 | [deps]
9 |
10 | source_file="res://addons/michael_games_editor_plugins/assets/fonts/m6x11plus.ttf"
11 | dest_files=["res://.godot/imported/m6x11plus.ttf-ca77d717aed731e6584d173e0106b6f3.fontdata"]
12 |
13 | [params]
14 |
15 | Rendering=null
16 | antialiasing=0
17 | generate_mipmaps=false
18 | disable_embedded_bitmaps=true
19 | multichannel_signed_distance_field=false
20 | msdf_pixel_range=8
21 | msdf_size=48
22 | allow_system_fallback=true
23 | force_autohinter=false
24 | hinting=1
25 | subpixel_positioning=1
26 | keep_rounding_remainders=true
27 | oversampling=0.0
28 | Fallbacks=null
29 | fallbacks=[]
30 | Compress=null
31 | compress=true
32 | preload=[]
33 | language_support={}
34 | script_support={}
35 | opentype_features={}
36 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/triangle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/addons/michael_games_editor_plugins/assets/triangle.png
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/assets/triangle.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b615v4yepa33b"
6 | path="res://.godot/imported/triangle.png-6c359cfe07033c9f14c93c3a892e62f6.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://addons/michael_games_editor_plugins/assets/triangle.png"
14 | dest_files=["res://.godot/imported/triangle.png-6c359cfe07033c9f14c93c3a892e62f6.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/juice_my_editor.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends EditorPlugin
3 |
4 | var juice_box
5 | var juice_notifs : JuiceNotifs
6 | var profile_control : Control
7 |
8 | func _enter_tree() -> void:
9 | juice_notifs = preload("res://addons/michael_games_editor_plugins/juice_notifs.tscn").instantiate() as JuiceNotifs
10 | get_tree().root.add_child( juice_notifs )
11 | scene_changed.connect( _on_scene_changed )
12 | profile_control = load("res://addons/michael_games_editor_plugins/stream_image_backdrop.tscn").instantiate() as Control
13 | add_control_to_dock( EditorPlugin.DOCK_SLOT_RIGHT_BL, profile_control )
14 | pass
15 |
16 |
17 | func _on_scene_changed( n ) -> void:
18 | juice_notifs.show_scene_notification( n )
19 | pass
20 |
21 |
22 | func _exit_tree() -> void:
23 | juice_notifs.queue_free()
24 | remove_control_from_docks( profile_control )
25 | profile_control.queue_free()
26 | pass
27 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/juice_my_editor.gd.uid:
--------------------------------------------------------------------------------
1 | uid://662j8b58i3ko
2 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/juice_my_editor.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://uqogtk7q00he"]
2 |
3 | [ext_resource type="Script" uid="uid://7kgvmvfhnacx" path="res://addons/michael_games_editor_plugins/juice_my_editor_node.gd" id="1_lggn6"]
4 |
5 | [node name="JuiceMyEditor" type="Control"]
6 | layout_mode = 3
7 | anchors_preset = 0
8 | mouse_filter = 2
9 | script = ExtResource("1_lggn6")
10 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/juice_my_editor_node.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends Control
3 |
4 | var file_system_dock : FileSystemDock
5 | var editor_file_system : EditorFileSystem
6 | var editor_plugin : EditorPlugin
7 |
8 |
9 | func _ready() -> void:
10 | file_system_dock = EditorInterface.get_file_system_dock()
11 | editor_file_system = EditorInterface.get_resource_filesystem()
12 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/juice_my_editor_node.gd.uid:
--------------------------------------------------------------------------------
1 | uid://7kgvmvfhnacx
2 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/juice_notifs.gd.uid:
--------------------------------------------------------------------------------
1 | uid://3jcw0bumjb4f
2 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/plugin.cfg:
--------------------------------------------------------------------------------
1 | [plugin]
2 |
3 | name="Michael Games Editor Plugins"
4 | description=""
5 | author="Michael Games"
6 | version=""
7 | script="juice_my_editor.gd"
8 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/shortcut_label.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | class_name ShortcutLabel extends Control
3 |
4 | signal on_destroy
5 |
6 | var val : String = ""
7 |
8 | @onready var shortcut_label: Label = %ShortcutLabel
9 | @onready var timer: Timer = $Timer
10 | @onready var animation_player: AnimationPlayer = $AnimationPlayer
11 |
12 |
13 | func _ready() -> void:
14 | animation_player.play("show")
15 | timer.timeout.connect( destroy_me )
16 |
17 |
18 | func set_label( _val : String ) -> void:
19 | val = _val
20 | shortcut_label.text = format_text( _val )
21 |
22 |
23 | func format_text( _str : String ) -> String:
24 | return _str.replace("+", " + ")
25 |
26 |
27 | func destroy_me() -> void:
28 | animation_player.play("hide")
29 | await animation_player.animation_finished
30 | on_destroy.emit()
31 | queue_free()
32 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/shortcut_label.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bk624dgiwd3ro
2 |
--------------------------------------------------------------------------------
/addons/michael_games_editor_plugins/stream_image_backdrop.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bavc6b2xl7quc
2 |
--------------------------------------------------------------------------------
/default_bus_layout.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="AudioBusLayout" format=3 uid="uid://dpd6838vjdkdh"]
2 |
3 | [resource]
4 | bus/1/name = &"SFX"
5 | bus/1/solo = false
6 | bus/1/mute = false
7 | bus/1/bypass_fx = false
8 | bus/1/volume_db = 0.0
9 | bus/1/send = &"Master"
10 | bus/2/name = &"Music"
11 | bus/2/solo = false
12 | bus/2/mute = true
13 | bus/2/bypass_fx = false
14 | bus/2/volume_db = -10.0692
15 | bus/2/send = &"Master"
16 |
--------------------------------------------------------------------------------
/icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/icon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bgv1wnf180t7p"
6 | path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://icon.svg"
14 | dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/notes.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | X) Initiate quest with Nero
5 | X) Quest should make the cave/dungeon available
6 | --) Fixed the Statue
7 | 3) Connect/integtrate the boss into the quest
8 | 4) Add a discoverable magical flute item
9 | 5) Complete the quest by returning the flute to Nero (NPC)
10 |
--------------------------------------------------------------------------------
/npc/00_npcs/00_hero.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="NPCResource" load_steps=4 format=3 uid="uid://cdc3sykvmnn27"]
2 |
3 | [ext_resource type="Texture2D" uid="uid://dgc6kndy4kcip" path="res://npc/sprites/portraits/hero_portrait.png" id="1_pj24m"]
4 | [ext_resource type="Script" uid="uid://vdkoe1ao4p7n" path="res://npc/scripts/npc_resource.gd" id="2_2ld5c"]
5 | [ext_resource type="Texture2D" uid="uid://dhh0vwwt33q08" path="res://npc/sprites/npc_sprite_02.png" id="3_jiuqv"]
6 |
7 | [resource]
8 | script = ExtResource("2_2ld5c")
9 | npc_name = "Hero"
10 | sprite = ExtResource("3_jiuqv")
11 | portrait = ExtResource("1_pj24m")
12 | dialog_audio_pitch = 1.0
13 |
--------------------------------------------------------------------------------
/npc/00_npcs/npc_01.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="NPCResource" load_steps=4 format=3 uid="uid://csvi3x1wp3gy6"]
2 |
3 | [ext_resource type="Script" uid="uid://vdkoe1ao4p7n" path="res://npc/scripts/npc_resource.gd" id="1_pd3hp"]
4 | [ext_resource type="Texture2D" uid="uid://cbjnt02b5xojv" path="res://npc/sprites/portraits/npc_portrait_01.png" id="1_y8f7e"]
5 | [ext_resource type="Texture2D" uid="uid://2701oi0fk3t0" path="res://npc/sprites/npc_sprite.png" id="3_epnud"]
6 |
7 | [resource]
8 | script = ExtResource("1_pd3hp")
9 | npc_name = "Oren"
10 | sprite = ExtResource("3_epnud")
11 | portrait = ExtResource("1_y8f7e")
12 | dialog_audio_pitch = 0.5
13 |
--------------------------------------------------------------------------------
/npc/00_npcs/npc_02.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="NPCResource" load_steps=4 format=3 uid="uid://bqfxxks18ou8u"]
2 |
3 | [ext_resource type="Texture2D" uid="uid://dtoir2hf614xm" path="res://npc/sprites/portraits/npc_portrait_02.png" id="1_lkxcd"]
4 | [ext_resource type="Script" uid="uid://vdkoe1ao4p7n" path="res://npc/scripts/npc_resource.gd" id="2_87af4"]
5 | [ext_resource type="Texture2D" uid="uid://dhh0vwwt33q08" path="res://npc/sprites/npc_sprite_02.png" id="3_jv0ng"]
6 |
7 | [resource]
8 | script = ExtResource("2_87af4")
9 | npc_name = "Nero"
10 | sprite = ExtResource("3_jv0ng")
11 | portrait = ExtResource("1_lkxcd")
12 | dialog_audio_pitch = 1.5
13 |
--------------------------------------------------------------------------------
/npc/00_npcs/shopkeeper.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="NPCResource" load_steps=4 format=3 uid="uid://527g3dhfubbt"]
2 |
3 | [ext_resource type="Texture2D" uid="uid://12bt811ovbyp" path="res://npc/sprites/portraits/portrait_placeholder.png" id="1_uk2ly"]
4 | [ext_resource type="Script" uid="uid://vdkoe1ao4p7n" path="res://npc/scripts/npc_resource.gd" id="1_ynxkf"]
5 | [ext_resource type="Texture2D" uid="uid://dsao26414cmyd" path="res://npc/sprites/shopkeeper.png" id="3_7yjm8"]
6 |
7 | [resource]
8 | script = ExtResource("1_ynxkf")
9 | npc_name = "Shopkeeper"
10 | sprite = ExtResource("3_7yjm8")
11 | portrait = ExtResource("1_uk2ly")
12 | dialog_audio_pitch = 1.8
13 | metadata/_custom_type_script = "uid://vdkoe1ao4p7n"
14 |
--------------------------------------------------------------------------------
/npc/icons/npc.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bvwpnxupm5nwj"
6 | path="res://.godot/imported/npc.svg-c1901a2cf4f675a5f9bd6ab70c643b6a.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://npc/icons/npc.svg"
14 | dest_files=["res://.godot/imported/npc.svg-c1901a2cf4f675a5f9bd6ab70c643b6a.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/npc/icons/npc_behavior.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bjiggc4wj3ni5"
6 | path="res://.godot/imported/npc_behavior.svg-f21146a4635496f2b3496fed5e1a5554.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://npc/icons/npc_behavior.svg"
14 | dest_files=["res://.godot/imported/npc_behavior.svg-f21146a4635496f2b3496fed5e1a5554.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/npc/npc_behavior_patrol.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=2 format=3 uid="uid://dpenv0euqqlkg"]
2 |
3 | [ext_resource type="Script" uid="uid://me4qx1l50fsb" path="res://npc/scripts/npc_behavior_patrol.gd" id="1_yln8h"]
4 |
5 | [node name="NpcBehaviorPatrol" type="Node2D"]
6 | script = ExtResource("1_yln8h")
7 |
8 | [node name="Timer" type="Timer" parent="."]
9 | one_shot = true
10 |
--------------------------------------------------------------------------------
/npc/npc_behavior_wander.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://dapdr3ojo2pha"]
2 |
3 | [ext_resource type="Script" uid="uid://x152poqmwaa3" path="res://npc/scripts/npc_behavior_wander.gd" id="1_euo1i"]
4 |
5 | [sub_resource type="CircleShape2D" id="CircleShape2D_ox6xc"]
6 | radius = 32.0
7 |
8 | [node name="NpcWanderBehavior" type="Node2D"]
9 | script = ExtResource("1_euo1i")
10 |
11 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
12 | shape = SubResource("CircleShape2D_ox6xc")
13 | debug_color = Color(1, 0.788235, 0.223529, 0.0352941)
14 |
--------------------------------------------------------------------------------
/npc/scripts/npc.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dtp7vb8p3dpd6
2 |
--------------------------------------------------------------------------------
/npc/scripts/npc_behavior.gd:
--------------------------------------------------------------------------------
1 | @icon( "res://npc/icons/npc_behavior.svg" )
2 | class_name NPCBehavior extends Node2D
3 |
4 | var npc : NPC
5 |
6 |
7 |
8 | func _ready() -> void:
9 | var p = get_parent()
10 | if p is NPC:
11 | npc = p as NPC
12 | npc.do_behavior_enabled.connect( start )
13 |
14 |
15 | func start() -> void:
16 | pass
17 |
--------------------------------------------------------------------------------
/npc/scripts/npc_behavior.gd.uid:
--------------------------------------------------------------------------------
1 | uid://k5ieq2ekegh6
2 |
--------------------------------------------------------------------------------
/npc/scripts/npc_behavior_patrol.gd.uid:
--------------------------------------------------------------------------------
1 | uid://me4qx1l50fsb
2 |
--------------------------------------------------------------------------------
/npc/scripts/npc_behavior_wander.gd.uid:
--------------------------------------------------------------------------------
1 | uid://x152poqmwaa3
2 |
--------------------------------------------------------------------------------
/npc/scripts/npc_resource.gd:
--------------------------------------------------------------------------------
1 | class_name NPCResource extends Resource
2 |
3 |
4 | @export var npc_name : String = ""
5 | @export var sprite : Texture
6 | @export var portrait : Texture
7 | @export_range(0.5, 1.8, 0.02) var dialog_audio_pitch : float = 1.0
8 |
--------------------------------------------------------------------------------
/npc/scripts/npc_resource.gd.uid:
--------------------------------------------------------------------------------
1 | uid://vdkoe1ao4p7n
2 |
--------------------------------------------------------------------------------
/npc/scripts/patrol_location.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | class_name PatrolLocation extends Node2D
3 |
4 | signal transform_changed
5 |
6 | @export var wait_time : float = 0.0 :
7 | set( v ):
8 | wait_time = v
9 | _update_wait_time_label()
10 |
11 | var target_position : Vector2 = Vector2.ZERO
12 |
13 |
14 |
15 | func _enter_tree() -> void:
16 | set_notify_transform( true )
17 |
18 |
19 | func _notification( what: int ) -> void:
20 | if what == NOTIFICATION_TRANSFORM_CHANGED:
21 | transform_changed.emit()
22 |
23 |
24 | func _ready() -> void:
25 | target_position = global_position
26 | _update_wait_time_label()
27 |
28 | if Engine.is_editor_hint():
29 | return
30 |
31 | $Sprite2D.queue_free()
32 |
33 |
34 |
35 | func update_label( _s : String ) -> void:
36 | $Sprite2D/Label.text = _s
37 |
38 |
39 |
40 | func update_line( next_location : Vector2 ) -> void:
41 | var line : Line2D = $Sprite2D/Line2D
42 | line.points[ 1 ] = next_location - position
43 |
44 |
45 |
46 | func _update_wait_time_label() -> void:
47 | if Engine.is_editor_hint():
48 | $Sprite2D/Label2.text = "wait: " + str( snappedf( wait_time, 0.1 ) ) + "s"
49 |
--------------------------------------------------------------------------------
/npc/scripts/patrol_location.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dwh2u1ajcyfw4
2 |
--------------------------------------------------------------------------------
/npc/sprites/npc_sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/npc/sprites/npc_sprite.png
--------------------------------------------------------------------------------
/npc/sprites/npc_sprite.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://2701oi0fk3t0"
6 | path="res://.godot/imported/npc_sprite.png-305fa6f1506fda7a3002293f984593d1.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://npc/sprites/npc_sprite.png"
14 | dest_files=["res://.godot/imported/npc_sprite.png-305fa6f1506fda7a3002293f984593d1.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/npc/sprites/npc_sprite_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/npc/sprites/npc_sprite_02.png
--------------------------------------------------------------------------------
/npc/sprites/npc_sprite_02.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dhh0vwwt33q08"
6 | path="res://.godot/imported/npc_sprite_02.png-2ae7917210613fd6b8ea8320a52ee3ea.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://npc/sprites/npc_sprite_02.png"
14 | dest_files=["res://.godot/imported/npc_sprite_02.png-2ae7917210613fd6b8ea8320a52ee3ea.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/npc/sprites/portraits/hero_portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/npc/sprites/portraits/hero_portrait.png
--------------------------------------------------------------------------------
/npc/sprites/portraits/hero_portrait.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dgc6kndy4kcip"
6 | path="res://.godot/imported/hero_portrait.png-690f7643dd09529b2262fe4eca5e5cfa.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://npc/sprites/portraits/hero_portrait.png"
14 | dest_files=["res://.godot/imported/hero_portrait.png-690f7643dd09529b2262fe4eca5e5cfa.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/npc/sprites/portraits/npc_portrait_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/npc/sprites/portraits/npc_portrait_01.png
--------------------------------------------------------------------------------
/npc/sprites/portraits/npc_portrait_01.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cbjnt02b5xojv"
6 | path="res://.godot/imported/npc_portrait_01.png-0d842fbb89fe27788e3aacb25efe8d8e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://npc/sprites/portraits/npc_portrait_01.png"
14 | dest_files=["res://.godot/imported/npc_portrait_01.png-0d842fbb89fe27788e3aacb25efe8d8e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/npc/sprites/portraits/npc_portrait_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/npc/sprites/portraits/npc_portrait_02.png
--------------------------------------------------------------------------------
/npc/sprites/portraits/npc_portrait_02.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dtoir2hf614xm"
6 | path="res://.godot/imported/npc_portrait_02.png-86a1956206db42b673650875e4d3b765.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://npc/sprites/portraits/npc_portrait_02.png"
14 | dest_files=["res://.godot/imported/npc_portrait_02.png-86a1956206db42b673650875e4d3b765.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/npc/sprites/portraits/portrait_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/npc/sprites/portraits/portrait_placeholder.png
--------------------------------------------------------------------------------
/npc/sprites/portraits/portrait_placeholder.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://12bt811ovbyp"
6 | path="res://.godot/imported/portrait_placeholder.png-fe3059b7305b9c22b310e3c0f74bbfaa.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://npc/sprites/portraits/portrait_placeholder.png"
14 | dest_files=["res://.godot/imported/portrait_placeholder.png-fe3059b7305b9c22b310e3c0f74bbfaa.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/npc/sprites/shopkeeper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/npc/sprites/shopkeeper.png
--------------------------------------------------------------------------------
/npc/sprites/shopkeeper.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dsao26414cmyd"
6 | path="res://.godot/imported/shopkeeper.png-a35623c0bb382785ce6845fd7ee10a4a.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://npc/sprites/shopkeeper.png"
14 | dest_files=["res://.godot/imported/shopkeeper.png-a35623c0bb382785ce6845fd7ee10a4a.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/quests/scripts/global_quest_manager.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b2st2ahvxhl3r
2 |
--------------------------------------------------------------------------------
/quests/scripts/quest_resource.gd:
--------------------------------------------------------------------------------
1 | class_name Quest extends Resource
2 |
3 | @export var title : String
4 | @export_multiline var description : String
5 |
6 | @export var steps : Array[ String ]
7 |
8 | @export var reward_xp : int
9 | @export var reward_items : Array[ QuestRewardItem ] = []
10 |
--------------------------------------------------------------------------------
/quests/scripts/quest_resource.gd.uid:
--------------------------------------------------------------------------------
1 | uid://ej3xbi7xbvg1
2 |
--------------------------------------------------------------------------------
/quests/scripts/quest_reward_item.gd:
--------------------------------------------------------------------------------
1 | class_name QuestRewardItem extends Resource
2 |
3 | @export var item : ItemData
4 | @export var quantity : int = 1
5 |
--------------------------------------------------------------------------------
/quests/scripts/quest_reward_item.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b73hijmin5dn2
2 |
--------------------------------------------------------------------------------
/quests/short_quest.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="Quest" load_steps=3 format=3 uid="uid://bped8nmqt0pgm"]
2 |
3 | [ext_resource type="Script" uid="uid://b73hijmin5dn2" path="res://quests/scripts/quest_reward_item.gd" id="1_sq38t"]
4 | [ext_resource type="Script" uid="uid://ej3xbi7xbvg1" path="res://quests/scripts/quest_resource.gd" id="2_csw1s"]
5 |
6 | [resource]
7 | script = ExtResource("2_csw1s")
8 | title = "Short Quest"
9 | description = "An example short quest, with only one step required to complete it."
10 | steps = Array[String](["Complete Quest"])
11 | reward_xp = 10
12 | reward_items = Array[ExtResource("1_sq38t")]([])
13 |
--------------------------------------------------------------------------------
/quests/utility_nodes/icons/quest_advance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/quests/utility_nodes/icons/quest_advance.png
--------------------------------------------------------------------------------
/quests/utility_nodes/icons/quest_advance.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://c5v0i0n6bupo0"
6 | path="res://.godot/imported/quest_advance.png-58f1da2c4057052d8ea5bbb36827bc16.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://quests/utility_nodes/icons/quest_advance.png"
14 | dest_files=["res://.godot/imported/quest_advance.png-58f1da2c4057052d8ea5bbb36827bc16.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/quests/utility_nodes/icons/quest_switch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/quests/utility_nodes/icons/quest_switch.png
--------------------------------------------------------------------------------
/quests/utility_nodes/icons/quest_switch.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://fstjrvqapjrp"
6 | path="res://.godot/imported/quest_switch.png-8f5fab9b5625db7f1042aee558be8526.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://quests/utility_nodes/icons/quest_switch.png"
14 | dest_files=["res://.godot/imported/quest_switch.png-8f5fab9b5625db7f1042aee558be8526.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/quests/utility_nodes/quest_activated_switch.gd.uid:
--------------------------------------------------------------------------------
1 | uid://cj17f33sisctc
2 |
--------------------------------------------------------------------------------
/quests/utility_nodes/quest_activated_switch.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://cwby8egx8vwx2"]
2 |
3 | [ext_resource type="Script" uid="uid://cj17f33sisctc" path="res://quests/utility_nodes/quest_activated_switch.gd" id="1_rtkku"]
4 | [ext_resource type="Texture2D" uid="uid://fstjrvqapjrp" path="res://quests/utility_nodes/icons/quest_switch.png" id="2_hhn2m"]
5 |
6 | [node name="QuestActivatedSwitch" type="Node2D"]
7 | script = ExtResource("1_rtkku")
8 |
9 | [node name="Sprite2D" type="Sprite2D" parent="."]
10 | z_index = 10
11 | position = Vector2(-10, -18)
12 | texture = ExtResource("2_hhn2m")
13 |
--------------------------------------------------------------------------------
/quests/utility_nodes/quest_advance_trigger.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | @icon( "res://quests/utility_nodes/icons/quest_advance.png" )
3 | class_name QuestAdvanceTrigger extends QuestNode
4 |
5 | signal advanced
6 |
7 | @export_category( "Parent Signal Connection" )
8 | @export var signal_name : String = ""
9 |
10 |
11 |
12 | func _ready() -> void:
13 | if Engine.is_editor_hint():
14 | return
15 | if has_node("Sprite2D"):
16 | $Sprite2D.queue_free()
17 | if signal_name != "":
18 | if get_parent().has_signal( signal_name ):
19 | get_parent().connect( signal_name, advance_quest )
20 | pass
21 |
22 |
23 |
24 | func advance_quest() -> void:
25 | if linked_quest == null:
26 | return
27 | await get_tree().process_frame
28 | advanced.emit()
29 | var _title : String = linked_quest.title
30 | var _step : String = get_step()
31 |
32 | if _step == "N/A":
33 | _step = ""
34 |
35 | QuestManager.update_quest( _title, _step, quest_complete )
36 | pass
37 |
--------------------------------------------------------------------------------
/quests/utility_nodes/quest_advance_trigger.gd.uid:
--------------------------------------------------------------------------------
1 | uid://b6dytxnramtp4
2 |
--------------------------------------------------------------------------------
/quests/utility_nodes/quest_advance_trigger.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=3 format=3 uid="uid://b523kljtfiar7"]
2 |
3 | [ext_resource type="Script" uid="uid://b6dytxnramtp4" path="res://quests/utility_nodes/quest_advance_trigger.gd" id="1_f7je4"]
4 | [ext_resource type="Texture2D" uid="uid://c5v0i0n6bupo0" path="res://quests/utility_nodes/icons/quest_advance.png" id="2_m0lyb"]
5 |
6 | [node name="QuestAdvanceTrigger" type="Node2D"]
7 | script = ExtResource("1_f7je4")
8 |
9 | [node name="Sprite2D" type="Sprite2D" parent="."]
10 | z_index = 10
11 | position = Vector2(10, -18)
12 | texture = ExtResource("2_m0lyb")
13 |
--------------------------------------------------------------------------------
/quests/utility_nodes/quest_node.gd.uid:
--------------------------------------------------------------------------------
1 | uid://dnv8ywhtc2gbn
2 |
--------------------------------------------------------------------------------
/shaders and materials/light_material.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="CanvasItemMaterial" format=3 uid="uid://b7nld0pj1g7cq"]
2 |
3 | [resource]
4 | blend_mode = 1
5 | light_mode = 1
6 |
--------------------------------------------------------------------------------
/title_scene/audio/MichaelGamesJingle.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/title_scene/audio/MichaelGamesJingle.wav
--------------------------------------------------------------------------------
/title_scene/audio/MichaelGamesJingle.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://dkr2shgx2s1xr"
6 | path="res://.godot/imported/MichaelGamesJingle.wav-4c1e1fcc17ba499575c915be77407349.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://title_scene/audio/MichaelGamesJingle.wav"
11 | dest_files=["res://.godot/imported/MichaelGamesJingle.wav-4c1e1fcc17ba499575c915be77407349.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/title_scene/audio/menu_focus.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/title_scene/audio/menu_focus.wav
--------------------------------------------------------------------------------
/title_scene/audio/menu_focus.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://bs7rsijo2pb3f"
6 | path="res://.godot/imported/menu_focus.wav-02b23abe21a14001b61d3d23b7aaa932.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://title_scene/audio/menu_focus.wav"
11 | dest_files=["res://.godot/imported/menu_focus.wav-02b23abe21a14001b61d3d23b7aaa932.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/title_scene/audio/menu_select.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/title_scene/audio/menu_select.wav
--------------------------------------------------------------------------------
/title_scene/audio/menu_select.wav.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="wav"
4 | type="AudioStreamWAV"
5 | uid="uid://08aqunggwta1"
6 | path="res://.godot/imported/menu_select.wav-2863744766c9b57038c2f7cf008519ea.sample"
7 |
8 | [deps]
9 |
10 | source_file="res://title_scene/audio/menu_select.wav"
11 | dest_files=["res://.godot/imported/menu_select.wav-2863744766c9b57038c2f7cf008519ea.sample"]
12 |
13 | [params]
14 |
15 | force/8_bit=false
16 | force/mono=false
17 | force/max_rate=false
18 | force/max_rate_hz=44100
19 | edit/trim=false
20 | edit/normalize=false
21 | edit/loop_mode=0
22 | edit/loop_begin=0
23 | edit/loop_end=-1
24 | compress/mode=0
25 |
--------------------------------------------------------------------------------
/title_scene/audio/waves.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/title_scene/audio/waves.mp3
--------------------------------------------------------------------------------
/title_scene/audio/waves.mp3.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="mp3"
4 | type="AudioStreamMP3"
5 | uid="uid://cph6d67x0q2hx"
6 | path="res://.godot/imported/waves.mp3-980d1d2cba7c94235676a118953f968e.mp3str"
7 |
8 | [deps]
9 |
10 | source_file="res://title_scene/audio/waves.mp3"
11 | dest_files=["res://.godot/imported/waves.mp3-980d1d2cba7c94235676a118953f968e.mp3str"]
12 |
13 | [params]
14 |
15 | loop=false
16 | loop_offset=0
17 | bpm=0
18 | beat_count=0
19 | bar_beats=4
20 |
--------------------------------------------------------------------------------
/title_scene/sprites/Michael Games.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/title_scene/sprites/Michael Games.png
--------------------------------------------------------------------------------
/title_scene/sprites/Michael Games.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://djv71txg5q3sk"
6 | path="res://.godot/imported/Michael Games.png-bb5d11a90c0ef119bc0b7c76bfdfcfb3.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://title_scene/sprites/Michael Games.png"
14 | dest_files=["res://.godot/imported/Michael Games.png-bb5d11a90c0ef119bc0b7c76bfdfcfb3.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/title_scene/sprites/title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/michaelmalaska/aarpg-tutorial/424628cd8e8d427f87caafd9eafe9f59b062ea22/title_scene/sprites/title.png
--------------------------------------------------------------------------------
/title_scene/sprites/title.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ddmcvrb1ufo3g"
6 | path="res://.godot/imported/title.png-5498a54d74b71921e3ff58e74ebdf55e.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://title_scene/sprites/title.png"
14 | dest_files=["res://.godot/imported/title.png-5498a54d74b71921e3ff58e74ebdf55e.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 |
--------------------------------------------------------------------------------
/title_scene/title_scene.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c2mayusmuuk6r
2 |
--------------------------------------------------------------------------------