├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── addons ├── httpserver │ ├── http_router.gd │ ├── http_router.gd.uid │ ├── http_server.gd │ └── http_server.gd.uid └── tinymmo │ ├── README.md │ ├── export_plugin │ ├── export_plugin.gd │ └── export_plugin.gd.uid │ ├── inspector_plugin.gd │ ├── inspector_plugin.gd.uid │ ├── main_screen │ ├── generate_dialog.gd │ ├── generate_dialog.gd.uid │ ├── generate_dialog.tscn │ ├── main_panel.gd │ ├── main_panel.gd.uid │ └── main_panel.tscn │ ├── nodepath_helper.gd │ ├── nodepath_helper.gd.uid │ ├── plugin.cfg │ ├── plugin.gd │ ├── plugin.gd.uid │ ├── popup │ ├── confirmation_dialog.gd │ ├── confirmation_dialog.gd.uid │ ├── confirmation_dialog.tscn │ ├── get_property_hint.gd │ ├── get_property_hint.gd.uid │ ├── tree.gd │ └── tree.gd.uid │ ├── property_editor.gd │ ├── property_editor.gd.uid │ └── test_scene │ ├── health_component.gd │ ├── health_component.gd.uid │ ├── node.gd │ ├── node.gd.uid │ └── node.tscn ├── assets ├── audio │ └── music │ │ ├── ekonia-main-theme.wav │ │ └── ekonia-main-theme.wav.import ├── fonts │ ├── Atkinson_Hyperlegible │ │ ├── AtkinsonHyperlegible-Bold.ttf │ │ ├── AtkinsonHyperlegible-Bold.ttf.import │ │ ├── AtkinsonHyperlegible-BoldItalic.ttf │ │ ├── AtkinsonHyperlegible-BoldItalic.ttf.import │ │ ├── AtkinsonHyperlegible-Italic.ttf │ │ ├── AtkinsonHyperlegible-Italic.ttf.import │ │ ├── AtkinsonHyperlegible-Regular.ttf │ │ ├── AtkinsonHyperlegible-Regular.ttf.import │ │ └── OFL.txt │ ├── Cinzel │ │ ├── Cinzel-VariableFont_wght.ttf │ │ ├── Cinzel-VariableFont_wght.ttf.import │ │ ├── OFL.txt │ │ ├── README.txt │ │ └── static │ │ │ ├── Cinzel-Black.ttf │ │ │ ├── Cinzel-Black.ttf.import │ │ │ ├── Cinzel-Bold.ttf │ │ │ ├── Cinzel-Bold.ttf.import │ │ │ ├── Cinzel-ExtraBold.ttf │ │ │ ├── Cinzel-ExtraBold.ttf.import │ │ │ ├── Cinzel-Medium.ttf │ │ │ ├── Cinzel-Medium.ttf.import │ │ │ ├── Cinzel-Regular.ttf │ │ │ ├── Cinzel-Regular.ttf.import │ │ │ ├── Cinzel-SemiBold.ttf │ │ │ └── Cinzel-SemiBold.ttf.import │ ├── kenney_mini.ttf │ ├── kenney_mini.ttf.import │ ├── kenney_mini_square.ttf │ └── kenney_mini_square.ttf.import ├── node_icons │ ├── blue │ │ ├── icon_area_damage.png │ │ ├── icon_area_damage.png.import │ │ ├── icon_area_meteo.png │ │ ├── icon_area_meteo.png.import │ │ ├── icon_audio.png │ │ ├── icon_audio.png.import │ │ ├── icon_bag.png │ │ ├── icon_bag.png.import │ │ ├── icon_beetle.png │ │ ├── icon_beetle.png.import │ │ ├── icon_bell.png │ │ ├── icon_bell.png.import │ │ ├── icon_bone.png │ │ ├── icon_bone.png.import │ │ ├── icon_brain.png │ │ ├── icon_brain.png.import │ │ ├── icon_brush.png │ │ ├── icon_brush.png.import │ │ ├── icon_brush_2.png │ │ ├── icon_brush_2.png.import │ │ ├── icon_bucket.png │ │ ├── icon_bucket.png.import │ │ ├── icon_bullet.png │ │ ├── icon_bullet.png.import │ │ ├── icon_camera_grid.png │ │ ├── icon_camera_grid.png.import │ │ ├── icon_card.png │ │ ├── icon_card.png.import │ │ ├── icon_case.png │ │ ├── icon_case.png.import │ │ ├── icon_cell.png │ │ ├── icon_cell.png.import │ │ ├── icon_character.png │ │ ├── icon_character.png.import │ │ ├── icon_chest.png │ │ ├── icon_chest.png.import │ │ ├── icon_clear.png │ │ ├── icon_clear.png.import │ │ ├── icon_coin.png │ │ ├── icon_coin.png.import │ │ ├── icon_color_correction.png │ │ ├── icon_color_correction.png.import │ │ ├── icon_crate.png │ │ ├── icon_crate.png.import │ │ ├── icon_dialog.png │ │ ├── icon_dialog.png.import │ │ ├── icon_dice.png │ │ ├── icon_dice.png.import │ │ ├── icon_door.png │ │ ├── icon_door.png.import │ │ ├── icon_event.png │ │ ├── icon_event.png.import │ │ ├── icon_file.png │ │ ├── icon_file.png.import │ │ ├── icon_flag.png │ │ ├── icon_flag.png.import │ │ ├── icon_folder.png │ │ ├── icon_folder.png.import │ │ ├── icon_follow.png │ │ ├── icon_follow.png.import │ │ ├── icon_gear.png │ │ ├── icon_gear.png.import │ │ ├── icon_gem.png │ │ ├── icon_gem.png.import │ │ ├── icon_grid.png │ │ ├── icon_grid.png.import │ │ ├── icon_hammer.png │ │ ├── icon_hammer.png.import │ │ ├── icon_hand.png │ │ ├── icon_hand.png.import │ │ ├── icon_hat.png │ │ ├── icon_hat.png.import │ │ ├── icon_heart.png │ │ ├── icon_heart.png.import │ │ ├── icon_hitbox.png │ │ ├── icon_hitbox.png.import │ │ ├── icon_interrogation.png │ │ ├── icon_interrogation.png.import │ │ ├── icon_key.png │ │ ├── icon_key.png.import │ │ ├── icon_lever.png │ │ ├── icon_lever.png.import │ │ ├── icon_light_bulb.png │ │ ├── icon_light_bulb.png.import │ │ ├── icon_liquid.png │ │ ├── icon_liquid.png.import │ │ ├── icon_lock.png │ │ ├── icon_lock.png.import │ │ ├── icon_magnifier.png │ │ ├── icon_magnifier.png.import │ │ ├── icon_map.png │ │ ├── icon_map.png.import │ │ ├── icon_meat.png │ │ ├── icon_meat.png.import │ │ ├── icon_mirror.png │ │ ├── icon_mirror.png.import │ │ ├── icon_money_bag.png │ │ ├── icon_money_bag.png.import │ │ ├── icon_parchment.png │ │ ├── icon_parchment.png.import │ │ ├── icon_particle.png │ │ ├── icon_particle.png.import │ │ ├── icon_path_follow.png │ │ ├── icon_path_follow.png.import │ │ ├── icon_pot.png │ │ ├── icon_pot.png.import │ │ ├── icon_potion.png │ │ ├── icon_potion.png.import │ │ ├── icon_projectile.png │ │ ├── icon_projectile.png.import │ │ ├── icon_propeller.png │ │ ├── icon_propeller.png.import │ │ ├── icon_puzzle.png │ │ ├── icon_puzzle.png.import │ │ ├── icon_ring.png │ │ ├── icon_ring.png.import │ │ ├── icon_save.png │ │ ├── icon_save.png.import │ │ ├── icon_scene.png │ │ ├── icon_scene.png.import │ │ ├── icon_search.png │ │ ├── icon_search.png.import │ │ ├── icon_shield.png │ │ ├── icon_shield.png.import │ │ ├── icon_ship.png │ │ ├── icon_ship.png.import │ │ ├── icon_shovel.png │ │ ├── icon_shovel.png.import │ │ ├── icon_signal.png │ │ ├── icon_signal.png.import │ │ ├── icon_skull.png │ │ ├── icon_skull.png.import │ │ ├── icon_star.png │ │ ├── icon_star.png.import │ │ ├── icon_stat.png │ │ ├── icon_stat.png.import │ │ ├── icon_sword.png │ │ ├── icon_sword.png.import │ │ ├── icon_target.png │ │ ├── icon_target.png.import │ │ ├── icon_target_2.png │ │ ├── icon_target_2.png.import │ │ ├── icon_text_panel.png │ │ ├── icon_text_panel.png.import │ │ ├── icon_time.png │ │ ├── icon_time.png.import │ │ ├── icon_transition.png │ │ ├── icon_transition.png.import │ │ ├── icon_trap.png │ │ ├── icon_trap.png.import │ │ ├── icon_tree.png │ │ ├── icon_tree.png.import │ │ ├── icon_trophy.png │ │ ├── icon_trophy.png.import │ │ ├── icon_unlock.png │ │ └── icon_unlock.png.import │ ├── color │ │ ├── icon_destroyable.png │ │ ├── icon_destroyable.png.import │ │ ├── icon_heart.png │ │ ├── icon_heart.png.import │ │ ├── icon_map_colored.png │ │ ├── icon_map_colored.png.import │ │ ├── icon_meteo.png │ │ ├── icon_meteo.png.import │ │ ├── icon_teleporter.png │ │ ├── icon_teleporter.png.import │ │ ├── icon_weapon.png │ │ └── icon_weapon.png.import │ ├── green │ │ ├── icon_area_damage.png │ │ ├── icon_area_damage.png.import │ │ ├── icon_area_meteo.png │ │ ├── icon_area_meteo.png.import │ │ ├── icon_audio.png │ │ ├── icon_audio.png.import │ │ ├── icon_bag.png │ │ ├── icon_bag.png.import │ │ ├── icon_beetle.png │ │ ├── icon_beetle.png.import │ │ ├── icon_bell.png │ │ ├── icon_bell.png.import │ │ ├── icon_bone.png │ │ ├── icon_bone.png.import │ │ ├── icon_brain.png │ │ ├── icon_brain.png.import │ │ ├── icon_brush.png │ │ ├── icon_brush.png.import │ │ ├── icon_brush_2.png │ │ ├── icon_brush_2.png.import │ │ ├── icon_bucket.png │ │ ├── icon_bucket.png.import │ │ ├── icon_bullet.png │ │ ├── icon_bullet.png.import │ │ ├── icon_camera_grid.png │ │ ├── icon_camera_grid.png.import │ │ ├── icon_card.png │ │ ├── icon_card.png.import │ │ ├── icon_case.png │ │ ├── icon_case.png.import │ │ ├── icon_cell.png │ │ ├── icon_cell.png.import │ │ ├── icon_character.png │ │ ├── icon_character.png.import │ │ ├── icon_chest.png │ │ ├── icon_chest.png.import │ │ ├── icon_clear.png │ │ ├── icon_clear.png.import │ │ ├── icon_coin.png │ │ ├── icon_coin.png.import │ │ ├── icon_color_correction.png │ │ ├── icon_color_correction.png.import │ │ ├── icon_crate.png │ │ ├── icon_crate.png.import │ │ ├── icon_dialog.png │ │ ├── icon_dialog.png.import │ │ ├── icon_dice.png │ │ ├── icon_dice.png.import │ │ ├── icon_door.png │ │ ├── icon_door.png.import │ │ ├── icon_event.png │ │ ├── icon_event.png.import │ │ ├── icon_file.png │ │ ├── icon_file.png.import │ │ ├── icon_flag.png │ │ ├── icon_flag.png.import │ │ ├── icon_folder.png │ │ ├── icon_folder.png.import │ │ ├── icon_follow.png │ │ ├── icon_follow.png.import │ │ ├── icon_gear.png │ │ ├── icon_gear.png.import │ │ ├── icon_gem.png │ │ ├── icon_gem.png.import │ │ ├── icon_grid.png │ │ ├── icon_grid.png.import │ │ ├── icon_hammer.png │ │ ├── icon_hammer.png.import │ │ ├── icon_hand.png │ │ ├── icon_hand.png.import │ │ ├── icon_hat.png │ │ ├── icon_hat.png.import │ │ ├── icon_heart.png │ │ ├── icon_heart.png.import │ │ ├── icon_hitbox.png │ │ ├── icon_hitbox.png.import │ │ ├── icon_interrogation.png │ │ ├── icon_interrogation.png.import │ │ ├── icon_key.png │ │ ├── icon_key.png.import │ │ ├── icon_lever.png │ │ ├── icon_lever.png.import │ │ ├── icon_light_bulb.png │ │ ├── icon_light_bulb.png.import │ │ ├── icon_liquid.png │ │ ├── icon_liquid.png.import │ │ ├── icon_lock.png │ │ ├── icon_lock.png.import │ │ ├── icon_magnifier.png │ │ ├── icon_magnifier.png.import │ │ ├── icon_map.png │ │ ├── icon_map.png.import │ │ ├── icon_meat.png │ │ ├── icon_meat.png.import │ │ ├── icon_mirror.png │ │ ├── icon_mirror.png.import │ │ ├── icon_money_bag.png │ │ ├── icon_money_bag.png.import │ │ ├── icon_parchment.png │ │ ├── icon_parchment.png.import │ │ ├── icon_particle.png │ │ ├── icon_particle.png.import │ │ ├── icon_path_follow.png │ │ ├── icon_path_follow.png.import │ │ ├── icon_pot.png │ │ ├── icon_pot.png.import │ │ ├── icon_potion.png │ │ ├── icon_potion.png.import │ │ ├── icon_projectile.png │ │ ├── icon_projectile.png.import │ │ ├── icon_propeller.png │ │ ├── icon_propeller.png.import │ │ ├── icon_puzzle.png │ │ ├── icon_puzzle.png.import │ │ ├── icon_ring.png │ │ ├── icon_ring.png.import │ │ ├── icon_save.png │ │ ├── icon_save.png.import │ │ ├── icon_scene.png │ │ ├── icon_scene.png.import │ │ ├── icon_search.png │ │ ├── icon_search.png.import │ │ ├── icon_shield.png │ │ ├── icon_shield.png.import │ │ ├── icon_ship.png │ │ ├── icon_ship.png.import │ │ ├── icon_shovel.png │ │ ├── icon_shovel.png.import │ │ ├── icon_signal.png │ │ ├── icon_signal.png.import │ │ ├── icon_skull.png │ │ ├── icon_skull.png.import │ │ ├── icon_star.png │ │ ├── icon_star.png.import │ │ ├── icon_stat.png │ │ ├── icon_stat.png.import │ │ ├── icon_sword.png │ │ ├── icon_sword.png.import │ │ ├── icon_target.png │ │ ├── icon_target.png.import │ │ ├── icon_target_2.png │ │ ├── icon_target_2.png.import │ │ ├── icon_text_panel.png │ │ ├── icon_text_panel.png.import │ │ ├── icon_time.png │ │ ├── icon_time.png.import │ │ ├── icon_transition.png │ │ ├── icon_transition.png.import │ │ ├── icon_trap.png │ │ ├── icon_trap.png.import │ │ ├── icon_tree.png │ │ ├── icon_tree.png.import │ │ ├── icon_trophy.png │ │ ├── icon_trophy.png.import │ │ ├── icon_unlock.png │ │ └── icon_unlock.png.import │ └── info.txt ├── project_icon │ ├── icon128x.png │ ├── icon128x.png.import │ ├── icon_svg.svg │ └── icon_svg.svg.import ├── skyboxes │ ├── cloudy_skybox_0.png │ ├── cloudy_skybox_0.png.import │ ├── mountain_skybox_0.png │ └── mountain_skybox_0.png.import └── sprites │ ├── characters │ ├── goblin │ │ ├── goblin_death.png │ │ ├── goblin_death.png.import │ │ ├── goblin_idle.png │ │ ├── goblin_idle.png.import │ │ ├── goblin_run.png │ │ └── goblin_run.png.import │ ├── knight │ │ ├── knight_death.png │ │ ├── knight_death.png.import │ │ ├── knight_idle.png │ │ ├── knight_idle.png.import │ │ ├── knight_run.png │ │ └── knight_run.png.import │ ├── orc │ │ ├── orc_death.png │ │ ├── orc_death.png.import │ │ ├── orc_idle.png │ │ ├── orc_idle.png.import │ │ ├── orc_run.png │ │ └── orc_run.png.import │ ├── orc_rogue │ │ ├── orc_rogue_death.png │ │ ├── orc_rogue_death.png.import │ │ ├── orc_rogue_idle.png │ │ ├── orc_rogue_idle.png.import │ │ ├── orc_rogue_run.png │ │ └── orc_rogue_run.png.import │ ├── orc_shaman │ │ ├── orc_shaman_death.png │ │ ├── orc_shaman_death.png.import │ │ ├── orc_shaman_idle.png │ │ ├── orc_shaman_idle.png.import │ │ ├── orc_shaman_run.png │ │ └── orc_shaman_run.png.import │ ├── orc_warrior │ │ ├── orc_warrior_death.png │ │ ├── orc_warrior_death.png.import │ │ ├── orc_warrior_idle.png │ │ ├── orc_warrior_idle.png.import │ │ ├── orc_warrior_run.png │ │ └── orc_warrior_run.png.import │ ├── rogue │ │ ├── rogue_death.png │ │ ├── rogue_death.png.import │ │ ├── rogue_idle.png │ │ ├── rogue_idle.png.import │ │ ├── rogue_run.png │ │ └── rogue_run.png.import │ ├── skeleton │ │ ├── skeleton_death.png │ │ ├── skeleton_death.png.import │ │ ├── skeleton_idle.png │ │ ├── skeleton_idle.png.import │ │ ├── skeleton_run.png │ │ └── skeleton_run.png.import │ ├── skeleton_mage │ │ ├── skeleton_mage_death.png │ │ ├── skeleton_mage_death.png.import │ │ ├── skeleton_mage_idle.png │ │ ├── skeleton_mage_idle.png.import │ │ ├── skeleton_mage_run.png │ │ └── skeleton_mage_run.png.import │ ├── skeleton_rogue │ │ ├── skeleton_rogue_death.png │ │ ├── skeleton_rogue_death.png.import │ │ ├── skeleton_rogue_idle.png │ │ ├── skeleton_rogue_idle.png.import │ │ ├── skeleton_rogue_run.png │ │ └── skeleton_rogue_run.png.import │ ├── skeleton_warrior │ │ ├── skeleton_warrior_death.png │ │ ├── skeleton_warrior_death.png.import │ │ ├── skeleton_warrior_idle.png │ │ ├── skeleton_warrior_idle.png.import │ │ ├── skeleton_warrior_run.png │ │ └── skeleton_warrior_run.png.import │ └── wizard │ │ ├── wizard_death.png │ │ ├── wizard_death.png.import │ │ ├── wizard_idle.png │ │ ├── wizard_idle.png.import │ │ ├── wizard_run.png │ │ └── wizard_run.png.import │ ├── environment │ ├── building │ │ ├── Exterior │ │ │ ├── CemiteryWalls.png │ │ │ ├── CemiteryWalls.png.import │ │ │ ├── Garden.png │ │ │ ├── Garden.png.import │ │ │ ├── Props.png │ │ │ ├── Props.png.import │ │ │ ├── Roofs.png │ │ │ ├── Roofs.png.import │ │ │ ├── Walls.png │ │ │ └── Walls.png.import │ │ └── Interior │ │ │ ├── BaseOutpost.png │ │ │ ├── BaseOutpost.png.import │ │ │ ├── Castle.png │ │ │ ├── Castle.png.import │ │ │ ├── Librarytiles.png │ │ │ └── Librarytiles.png.import │ ├── dungeon_prison │ │ ├── dungeon_tiles.png │ │ ├── dungeon_tiles.png.import │ │ ├── props.png │ │ ├── props.png.import │ │ ├── tiles.png │ │ └── tiles.png.import │ ├── environment_objects │ │ ├── barrel.png │ │ ├── barrel.png.import │ │ ├── bars_gate.png │ │ ├── bars_gate.png.import │ │ ├── big_red_potion.png │ │ ├── big_red_potion.png.import │ │ ├── chest.png │ │ ├── chest.png.import │ │ ├── crate.png │ │ ├── crate.png.import │ │ ├── dungeon_barrel.png │ │ ├── dungeon_barrel.png.import │ │ ├── dungeon_crate.png │ │ ├── dungeon_crate.png.import │ │ ├── gold_coin.png │ │ ├── gold_coin.png.import │ │ ├── key.png │ │ ├── key.png.import │ │ ├── pot.png │ │ ├── pot.png.import │ │ ├── pressure_plate.png │ │ ├── pressure_plate.png.import │ │ ├── red_potion.png │ │ ├── red_potion.png.import │ │ ├── saw.png │ │ ├── saw.png.import │ │ ├── spike_trap.png │ │ ├── spike_trap.png.import │ │ ├── switch_horizontal.png │ │ ├── switch_horizontal.png.import │ │ ├── switch_vertical.png │ │ ├── switch_vertical.png.import │ │ ├── urn.png │ │ ├── urn.png.import │ │ ├── wide_chest.png │ │ ├── wide_chest.png.import │ │ ├── wooden_gate.png │ │ └── wooden_gate.png.import │ ├── green_woods │ │ ├── props.png │ │ ├── props.png.import │ │ ├── tiles.png │ │ ├── tiles.png.import │ │ ├── trees.png │ │ └── trees.png.import │ └── world_tileset │ │ ├── Cave │ │ ├── CaveProps.png │ │ ├── CaveProps.png.import │ │ ├── CaveTiles.png │ │ └── CaveTiles.png.import │ │ ├── Desert │ │ ├── Ground.png │ │ ├── Ground.png.import │ │ ├── Props.png │ │ ├── Props.png.import │ │ ├── Sand.png │ │ └── Sand.png.import │ │ └── Forest │ │ ├── Floors_Tiles.png │ │ ├── Floors_Tiles.png.import │ │ ├── Light.png │ │ ├── Light.png.import │ │ ├── Props.png │ │ ├── Props.png.import │ │ ├── Shadown.png │ │ ├── Shadown.png.import │ │ ├── Tiles.png │ │ ├── Tiles.png.import │ │ ├── Tree.png │ │ ├── Tree.png.import │ │ ├── Wall_Tiles.png │ │ ├── Wall_Tiles.png.import │ │ ├── Wall_Variations.png │ │ └── Wall_Variations.png.import │ ├── gui │ ├── .gitkeep │ └── backgrounds │ │ ├── desert.png │ │ ├── desert.png.import │ │ ├── fairy_forest.png │ │ └── fairy_forest.png.import │ ├── items │ ├── icons │ │ ├── Icon109.png │ │ ├── Icon109.png.import │ │ ├── Icon142.png │ │ ├── Icon142.png.import │ │ ├── Icon162.png │ │ ├── Icon162.png.import │ │ ├── Icon182.png │ │ ├── Icon182.png.import │ │ ├── Icon2.png │ │ ├── Icon2.png.import │ │ ├── Icon202.png │ │ ├── Icon202.png.import │ │ ├── Icon222.png │ │ ├── Icon222.png.import │ │ ├── Icon271.png │ │ ├── Icon271.png.import │ │ ├── Icon274.png │ │ ├── Icon274.png.import │ │ ├── Icon301.png │ │ ├── Icon301.png.import │ │ ├── Icon302.png │ │ ├── Icon302.png.import │ │ ├── Icon303.png │ │ ├── Icon303.png.import │ │ ├── Icon304.png │ │ ├── Icon304.png.import │ │ ├── Icon305.png │ │ ├── Icon305.png.import │ │ ├── Icon306.png │ │ ├── Icon306.png.import │ │ ├── Icon307.png │ │ ├── Icon307.png.import │ │ ├── Icon308.png │ │ ├── Icon308.png.import │ │ ├── Icon309.png │ │ ├── Icon309.png.import │ │ ├── Icon310.png │ │ ├── Icon310.png.import │ │ ├── Icon321.png │ │ ├── Icon321.png.import │ │ ├── Icon325.png │ │ └── Icon325.png.import │ └── weapons │ │ ├── bone │ │ ├── bone.png │ │ └── bone.png.import │ │ ├── hands │ │ ├── brown_leather_gloves.png │ │ ├── brown_leather_gloves.png.import │ │ ├── goblin_hands.png │ │ ├── goblin_hands.png.import │ │ ├── human_hands.png │ │ ├── human_hands.png.import │ │ ├── orc_hands.png │ │ └── orc_hands.png.import │ │ └── wood │ │ ├── wood.png │ │ └── wood.png.import │ └── particles │ ├── gold_coin_pick_up.png │ ├── gold_coin_pick_up.png.import │ ├── white_circle.png │ └── white_circle.png.import ├── data └── config │ ├── client_config.cfg │ ├── ekonia │ ├── README.md │ └── client.cfg │ ├── gateway_config.cfg │ ├── master_config.cfg │ ├── tls │ ├── certificate.crt │ └── key.key │ ├── world_config.cfg │ └── world_config_hardcore.cfg ├── icon.svg ├── project.godot └── source ├── client ├── autoload │ ├── client_state.gd │ └── client_state.gd.uid ├── client_main.gd ├── client_main.gd.uid ├── client_main.tscn ├── gateway │ ├── gateway.gd │ ├── gateway.gd.uid │ ├── gateway.tscn │ ├── popup_panel.gd │ └── popup_panel.gd.uid ├── local_player │ ├── local_player.gd │ ├── local_player.gd.uid │ ├── local_player.tscn │ ├── mouse_component.gd │ └── mouse_component.gd.uid ├── network │ ├── instance_client.gd │ ├── instance_client.gd.uid │ ├── instance_manager.gd │ ├── instance_manager.gd.uid │ ├── world_client.gd │ └── world_client.gd.uid ├── ui │ ├── hud │ │ ├── health_bar │ │ │ ├── health_bar.gd │ │ │ ├── health_bar.gd.uid │ │ │ └── health_bar.tscn │ │ ├── hud.gd │ │ ├── hud.gd.uid │ │ ├── hud.tscn │ │ ├── item_slots.gd │ │ ├── item_slots.gd.uid │ │ ├── menu_overlay.gd │ │ └── menu_overlay.gd.uid │ ├── menus │ │ ├── chat │ │ │ ├── chat_menu.gd │ │ │ ├── chat_menu.gd.uid │ │ │ └── chat_menu.tscn │ │ ├── guild │ │ │ ├── create_guild_menu.gd │ │ │ ├── create_guild_menu.gd.uid │ │ │ ├── guild_display.gd │ │ │ ├── guild_display.gd.uid │ │ │ ├── guild_menu.gd │ │ │ ├── guild_menu.gd.uid │ │ │ ├── guild_menu.tscn │ │ │ ├── guild_panel.gd │ │ │ ├── guild_panel.gd.uid │ │ │ ├── no_guild_menu.gd │ │ │ ├── no_guild_menu.gd.uid │ │ │ ├── search_guild_menu.gd │ │ │ └── search_guild_menu.gd.uid │ │ ├── inventory │ │ │ ├── attributes_panel.gd │ │ │ ├── attributes_panel.gd.uid │ │ │ ├── gear_slot.gd │ │ │ ├── gear_slot.gd.uid │ │ │ ├── inventory_menu.gd │ │ │ ├── inventory_menu.gd.uid │ │ │ ├── inventory_menu.tscn │ │ │ ├── item_slot_button.gd │ │ │ ├── item_slot_button.gd.uid │ │ │ ├── stats_panel.gd │ │ │ └── stats_panel.gd.uid │ │ ├── player_profile │ │ │ ├── player_profile.gd │ │ │ ├── player_profile.gd.uid │ │ │ └── player_profile_menu.tscn │ │ └── settings │ │ │ ├── settings.gd │ │ │ ├── settings.gd.uid │ │ │ └── settings_menu.tscn │ ├── shared │ │ ├── sub_panel.gd │ │ └── sub_panel.gd.uid │ ├── themes │ │ ├── styles │ │ │ ├── gradient_button.tres │ │ │ ├── stylebox_gradient.gd │ │ │ └── stylebox_gradient.gd.uid │ │ ├── theme_desert.tres │ │ └── theme_navy.tres │ ├── ui.gd │ ├── ui.gd.uid │ └── ui.tscn └── utils │ ├── button_utils.gd │ ├── button_utils.gd.uid │ ├── theme_changer.gd │ └── theme_changer.gd.uid ├── common ├── gameplay │ ├── characters │ │ ├── animations │ │ │ └── locomotion.tres │ │ ├── character.gd │ │ ├── character.gd.uid │ │ ├── character.tscn │ │ ├── classes │ │ │ ├── character_collection │ │ │ │ ├── knight.tres │ │ │ │ ├── rogue.tres │ │ │ │ └── wizard.tres │ │ │ ├── character_resource.gd │ │ │ └── character_resource.gd.uid │ │ ├── components │ │ │ └── hand │ │ │ │ ├── hand.gd │ │ │ │ ├── hand.gd.uid │ │ │ │ └── hand.tscn │ │ ├── entity.gd │ │ ├── entity.gd.uid │ │ ├── npc │ │ │ ├── npc.gd │ │ │ ├── npc.gd.uid │ │ │ └── npc.tscn │ │ ├── player │ │ │ ├── display_name_label.gd │ │ │ ├── display_name_label.gd.uid │ │ │ ├── player.gd │ │ │ ├── player.gd.uid │ │ │ ├── player.tscn │ │ │ ├── player_resource.gd │ │ │ └── player_resource.gd.uid │ │ └── sprite_frames │ │ │ ├── knight.tres │ │ │ ├── rogue.tres │ │ │ └── wizard.tres │ ├── combat │ │ ├── ability │ │ │ ├── ability.gd │ │ │ ├── ability.gd.uid │ │ │ ├── ability_collection │ │ │ │ └── swing │ │ │ │ │ ├── swing.gd │ │ │ │ │ └── swing.gd.uid │ │ │ └── arrow_shoot │ │ │ │ ├── arrow_shoot.gd │ │ │ │ ├── arrow_shoot.gd.uid │ │ │ │ └── arrow_shoot.tres │ │ ├── attack │ │ │ ├── attack.gd │ │ │ └── attack.gd.uid │ │ ├── attributes │ │ │ ├── attributes_map.gd │ │ │ ├── attributes_map.gd.uid │ │ │ ├── stat_growth │ │ │ │ ├── stat_growth.gd │ │ │ │ └── stat_growth.gd.uid │ │ │ ├── stat_modifier │ │ │ │ ├── stat_modifier.gd │ │ │ │ └── stat_modifier.gd.uid │ │ │ ├── stats_catalog.gd │ │ │ └── stats_catalog.gd.uid │ │ ├── components │ │ │ ├── ability_system_component.gd │ │ │ ├── ability_system_component.gd.uid │ │ │ ├── attributes_mirror.gd │ │ │ ├── attributes_mirror.gd.uid │ │ │ ├── equipment_component.gd │ │ │ └── equipment_component.gd.uid │ │ ├── damage_model │ │ │ ├── DamageModelResource.tres │ │ │ ├── damage_model_resource.gd │ │ │ └── damage_model_resource.gd.uid │ │ ├── effect_spec.gd │ │ ├── effect_spec.gd.uid │ │ ├── gameplay_effect │ │ │ ├── gameplay_effect.gd │ │ │ ├── gameplay_effect.gd.uid │ │ │ └── resources │ │ │ │ ├── burn_effect.gd │ │ │ │ ├── burn_effect.gd.uid │ │ │ │ ├── potion_heal.gd │ │ │ │ ├── potion_heal.gd.uid │ │ │ │ ├── thormail.gd │ │ │ │ └── thormail.gd.uid │ │ ├── gameplay_event.gd │ │ ├── gameplay_event.gd.uid │ │ ├── gameplay_resource │ │ │ ├── fury_resource.gd │ │ │ ├── fury_resource.gd.uid │ │ │ ├── gameplay_resource.gd │ │ │ ├── gameplay_resource.gd.uid │ │ │ ├── health_cost_resource.gd │ │ │ ├── health_cost_resource.gd.uid │ │ │ ├── mana_resource.gd │ │ │ └── mana_resource.gd.uid │ │ └── team │ │ │ ├── team_component.gd │ │ │ └── team_component.gd.uid │ ├── items │ │ ├── consumable_item.gd │ │ ├── consumable_item.gd.uid │ │ ├── consumables │ │ │ └── health_potion.tres │ │ ├── gear_item.gd │ │ ├── gear_item.gd.uid │ │ ├── gears │ │ │ ├── copper_ring.tres │ │ │ └── thornmail.tres │ │ ├── item.gd │ │ ├── item.gd.uid │ │ ├── item_slot │ │ │ ├── item_slot.gd │ │ │ ├── item_slot.gd.uid │ │ │ ├── item_slot_unlock_rule.gd │ │ │ ├── item_slot_unlock_rule.gd.uid │ │ │ └── slots │ │ │ │ ├── helmet.tres │ │ │ │ ├── relic.tres │ │ │ │ ├── ring.tres │ │ │ │ ├── torso.tres │ │ │ │ └── weapon.tres │ │ ├── material_item.gd │ │ ├── material_item.gd.uid │ │ ├── materials │ │ │ └── bone.tres │ │ ├── quest_item.gd │ │ ├── quest_item.gd.uid │ │ ├── weapon_item.gd │ │ ├── weapon_item.gd.uid │ │ └── weapons │ │ │ ├── bow │ │ │ ├── arrow.gd │ │ │ ├── arrow.gd.uid │ │ │ ├── arrow.tscn │ │ │ ├── wooden_bow.gd │ │ │ ├── wooden_bow.gd.uid │ │ │ ├── wooden_bow.item.tres │ │ │ ├── wooden_bow.tscn │ │ │ └── woooden_arrow.tscn │ │ │ ├── dcadrius │ │ │ ├── test_bow.tres │ │ │ ├── test_sword.tres │ │ │ ├── test_sword2.tres │ │ │ ├── weapon_data.gd │ │ │ └── weapon_data.gd.uid │ │ │ ├── empty_hand │ │ │ └── empty_hand.tscn │ │ │ ├── hammer │ │ │ └── hammer.tscn │ │ │ ├── sword │ │ │ ├── sword.gd │ │ │ ├── sword.gd.uid │ │ │ ├── sword.tscn │ │ │ └── sword_animations.tres │ │ │ ├── weapon.gd │ │ │ ├── weapon.gd.uid │ │ │ └── weapon.tscn │ └── maps │ │ ├── components │ │ └── interaction_areas │ │ │ ├── interaction_area.gd │ │ │ ├── interaction_area.gd.uid │ │ │ ├── interaction_area.tscn │ │ │ ├── teleporter │ │ │ ├── teleporter.gd │ │ │ ├── teleporter.gd.uid │ │ │ └── teleporter.tscn │ │ │ └── warper │ │ │ ├── warper.gd │ │ │ ├── warper.gd.uid │ │ │ └── warper.tscn │ │ ├── instance │ │ ├── instance_collection │ │ │ ├── dungeon.tres │ │ │ ├── dungeon │ │ │ │ ├── dungeon.tres │ │ │ │ └── dungeon_entrance.tres │ │ │ ├── dungeon_entrance.tres │ │ │ ├── guild_house │ │ │ │ └── guild_house.tres │ │ │ ├── guild_outpost_base │ │ │ │ └── guild_outpost.tres │ │ │ ├── mining_cave │ │ │ │ └── cave_area1.tres │ │ │ ├── overworld.tres │ │ │ ├── spar_house │ │ │ │ └── spar_house.tres │ │ │ ├── starter_shop │ │ │ │ └── starter_shop.tres │ │ │ └── trade_house │ │ │ │ └── trade_house.tres │ │ ├── instance_resource.gd │ │ └── instance_resource.gd.uid │ │ ├── map.gd │ │ ├── map.gd.uid │ │ ├── maps │ │ ├── dungeon │ │ │ ├── dungeon.tscn │ │ │ └── dungeon_entrance.tscn │ │ ├── guild_house │ │ │ ├── inside_map.tscn │ │ │ └── outside_building.tscn │ │ ├── guild_outpost_base │ │ │ ├── inside_map.tscn │ │ │ └── outside_building.tscn │ │ ├── guild_spar │ │ │ ├── guild_arena_1.tscn │ │ │ ├── guild_arena_2.tscn │ │ │ ├── guild_arena_3.tscn │ │ │ ├── spar_house.tscn │ │ │ └── spar_house_inside.tscn │ │ ├── mining_cave │ │ │ └── cave_area1.tscn │ │ ├── misc_buildings │ │ │ ├── goblin_shaman_house.tscn │ │ │ ├── house.tscn │ │ │ ├── house_1.tscn │ │ │ └── mining_vending.tscn │ │ ├── overworld.tscn │ │ ├── spar_house │ │ │ ├── arena_1.tscn │ │ │ ├── guild_arena_1.tscn │ │ │ ├── guild_arena_2.tscn │ │ │ ├── guild_arena_3.tscn │ │ │ ├── inside_map.tscn │ │ │ ├── outside_building.tscn │ │ │ └── spar_house_inside.tscn │ │ ├── starter_shop │ │ │ ├── inside_map.tscn │ │ │ └── outside_building.tscn │ │ └── trade_house │ │ │ ├── inside_map.tscn │ │ │ └── outside_building.tscn │ │ ├── props │ │ ├── collectibles │ │ │ ├── coin.gd │ │ │ ├── coin.gd.uid │ │ │ └── coin.tscn │ │ ├── doors │ │ │ └── activable_door │ │ │ │ ├── activable_door.gd │ │ │ │ ├── activable_door.gd.uid │ │ │ │ └── activable_door.tscn │ │ └── ground_button │ │ │ ├── ground_button.gd │ │ │ ├── ground_button.gd.uid │ │ │ └── ground_button.tscn │ │ ├── template │ │ └── map_template.tscn │ │ ├── tilesets │ │ ├── base_outpost_inside_tileset.tres │ │ ├── buildings_inside_tileset.tres │ │ ├── buildings_outside_tileset.tres │ │ ├── dungeon_tileset.tres │ │ ├── forest_tiles.tres │ │ ├── forest_tileset.tres │ │ └── mining_cave_tileset.tres │ │ ├── zone_patch_2d.gd │ │ └── zone_patch_2d.gd.uid ├── main.gd ├── main.gd.uid ├── main.tscn ├── network │ ├── endpoints │ │ ├── base_multiplayer_endpoint.gd │ │ └── base_multiplayer_endpoint.gd.uid │ ├── gateway_api.gd │ ├── gateway_api.gd.uid │ ├── sync │ │ ├── property_cache.gd │ │ ├── property_cache.gd.uid │ │ ├── replicated_props.gd │ │ ├── replicated_props.gd.uid │ │ ├── state_synchronizer.gd │ │ ├── state_synchronizer.gd.uid │ │ ├── state_synchronizer_manager_client.gd │ │ ├── state_synchronizer_manager_client.gd.uid │ │ ├── state_synchronizer_manager_server.gd │ │ └── state_synchronizer_manager_server.gd.uid │ ├── utils │ │ ├── sync_utils.gd │ │ ├── sync_utils.gd.uid │ │ ├── tls_options_utils.gd │ │ └── tls_options_utils.gd.uid │ ├── wire.gd │ ├── wire.gd.uid │ ├── wire_codec.gd │ └── wire_codec.gd.uid ├── registry │ ├── content_index.gd │ ├── content_index.gd.uid │ ├── content_registry.gd │ ├── content_registry.gd.uid │ ├── content_registry_hub.gd │ ├── content_registry_hub.gd.uid │ ├── indexes │ │ ├── data_request_handlers_index.tres │ │ ├── items_index.tres │ │ ├── maps_index.tres │ │ └── sprites_index.tres │ ├── path_registry.gd │ └── path_registry.gd.uid └── utils │ ├── anim_utils.gd │ ├── anim_utils.gd.uid │ ├── cmdline_utils.gd │ ├── cmdline_utils.gd.uid │ ├── config_file_utils.gd │ ├── config_file_utils.gd.uid │ ├── credentials_utils.gd │ ├── credentials_utils.gd.uid │ ├── editor_scripts │ ├── generate_crypto_key.gd │ └── generate_crypto_key.gd.uid │ ├── file_utils.gd │ └── file_utils.gd.uid └── server ├── gateway ├── README.md ├── gateway_main.gd ├── gateway_main.gd.uid ├── gateway_main.tscn ├── http_server.gd ├── http_server.gd.uid └── master_gateway_client │ ├── gateway_manager_client.gd │ └── gateway_manager_client.gd.uid ├── master ├── README.md ├── account_models │ ├── account.gd │ ├── account.gd.uid │ ├── account_collection.gd │ └── account_collection.gd.uid ├── components │ ├── authentication_manager.gd │ ├── authentication_manager.gd.uid │ ├── database.gd │ ├── database.gd.uid │ ├── master_gateway_server │ │ ├── master_gateway_server.gd │ │ └── master_gateway_server.gd.uid │ └── master_world_server │ │ ├── master_world_server.gd │ │ └── master_world_server.gd.uid ├── master_main.gd ├── master_main.gd.uid └── master_main.tscn └── world ├── components ├── chat_command │ ├── chat_command.gd │ ├── chat_command.gd.uid │ └── global_commands │ │ ├── getid_command.gd │ │ ├── getid_command.gd.uid │ │ ├── heal_command.gd │ │ ├── heal_command.gd.uid │ │ ├── help_command.gd │ │ ├── help_command.gd.uid │ │ ├── selfadmin_command.gd │ │ ├── selfadmin_command.gd.uid │ │ ├── set_command.gd │ │ ├── set_command.gd.uid │ │ ├── size_command.gd │ │ ├── size_command.gd.uid │ │ ├── toogle_role_command.gd │ │ └── toogle_role_command.gd.uid ├── console.gd ├── console.gd.uid ├── data_request_handlers │ ├── action.perform.gd │ ├── action.perform.gd.uid │ ├── attribute.get.gd │ ├── attribute.get.gd.uid │ ├── attribute.spend.gd │ ├── attribute.spend.gd.uid │ ├── chat.command.exec.gd │ ├── chat.command.exec.gd.uid │ ├── chat.message.send.gd │ ├── chat.message.send.gd.uid │ ├── data_request_handler.gd │ ├── data_request_handler.gd.uid │ ├── guild.create.gd │ ├── guild.create.gd.uid │ ├── guild.get.gd │ ├── guild.get.gd.uid │ ├── guild.quit.gd │ ├── guild.quit.gd.uid │ ├── guild.search.gd │ ├── guild.search.gd.uid │ ├── guild.self.gd │ ├── guild.self.gd.uid │ ├── inventory.get.gd │ ├── inventory.get.gd.uid │ ├── item.equip.gd │ ├── item.equip.gd.uid │ ├── profile.get.gd │ └── profile.get.gd.uid ├── instance_manager.gd ├── instance_manager.gd.uid ├── instance_server.gd ├── instance_server.gd.uid ├── world_database.gd ├── world_database.gd.uid ├── world_manager_client.gd ├── world_manager_client.gd.uid ├── world_server.gd └── world_server.gd.uid ├── data ├── classic.tres ├── guild.gd ├── guild.gd.uid ├── hardcore.tres ├── server_roles.gd ├── server_roles.gd.uid ├── server_roles.tres ├── world_player_data.gd └── world_player_data.gd.uid ├── deprecated ├── camera_probe.gd └── camera_probe.gd.uid ├── world_main.gd ├── world_main.gd.uid └── world_main.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 | export_presets.cfg 4 | 5 | # Imported translations (automatically generated from CSV files) 6 | *.translation 7 | 8 | # System/tool-specific ignores 9 | .directory 10 | *DS_Store 11 | *~ 12 | 13 | # Godot tmp files (https://github.com/godotengine/godot/issues/82270) 14 | *.tmp 15 | 16 | # Project-local volatile data 17 | data/local/ 18 | /source/server/master/account_collection.tres 19 | -------------------------------------------------------------------------------- /addons/httpserver/http_router.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bap1v534e366f 2 | -------------------------------------------------------------------------------- /addons/httpserver/http_server.gd.uid: -------------------------------------------------------------------------------- 1 | uid://3tb0fuhyrr5u 2 | -------------------------------------------------------------------------------- /addons/tinymmo/README.md: -------------------------------------------------------------------------------- 1 | ## TinyMMO addon/plugin 2 | 3 | This plugin is mean to be used only with TinyMMO, won't work outside of it. 4 | 5 | It aims to provide editor tools to help dev: 6 | - Generating content index from editor interface 7 | - Make modification during export (right now simply deleting client autoloads on server) 8 | 9 | -------------------------------------------------------------------------------- /addons/tinymmo/export_plugin/export_plugin.gd: -------------------------------------------------------------------------------- 1 | extends EditorExportPlugin 2 | 3 | 4 | func _export_begin(features: PackedStringArray, is_debug: bool, path: String, flags: int) -> void: 5 | if features.has("client"): 6 | return 7 | 8 | 9 | var config := ConfigFile.new() 10 | var override_content: String = "[autoload] 11 | ClientState=null" 12 | add_file( 13 | "override.cfg", 14 | override_content.to_utf8_buffer(), 15 | true 16 | ) 17 | print("Server export detected. Removing client autoload...") 18 | 19 | 20 | func _export_end() -> void: 21 | pass 22 | 23 | 24 | func _get_name() -> String: 25 | return "No Client Autoload" 26 | -------------------------------------------------------------------------------- /addons/tinymmo/export_plugin/export_plugin.gd.uid: -------------------------------------------------------------------------------- 1 | uid://81nokhxoyo0k 2 | -------------------------------------------------------------------------------- /addons/tinymmo/inspector_plugin.gd: -------------------------------------------------------------------------------- 1 | extends EditorInspectorPlugin 2 | 3 | 4 | var property_editor: GDScript = preload("property_editor.gd") 5 | 6 | 7 | func _can_handle(object: Object): 8 | return true 9 | 10 | 11 | func _parse_property(object: Object, type: Variant.Type, name: String, hint_type: PropertyHint, hint_string: String, usage_flags: int, wide: bool) -> bool: 12 | if type == TYPE_DICTIONARY: 13 | #printt(object, type, name, hint_type, hint_string, usage_flags, wide) 14 | var dict: Dictionary = EditorInterface.get_inspector().get_edited_object()[name] 15 | if dict.get_typed_key_builtin() == TYPE_NODE_PATH: 16 | add_property_editor(name, property_editor.new(), true) 17 | return false 18 | return false 19 | -------------------------------------------------------------------------------- /addons/tinymmo/inspector_plugin.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cykucqu4fyndt 2 | -------------------------------------------------------------------------------- /addons/tinymmo/main_screen/generate_dialog.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bye5rx5hh2swj 2 | -------------------------------------------------------------------------------- /addons/tinymmo/main_screen/main_panel.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bdo6vhrtb1efa 2 | -------------------------------------------------------------------------------- /addons/tinymmo/nodepath_helper.gd: -------------------------------------------------------------------------------- 1 | class_name TinyNodePath 2 | extends Node 3 | 4 | 5 | static func set_property_collection(root: Node, collection: Dictionary[NodePath, Variant]): 6 | for path: NodePath in collection: 7 | var target: Node = root.get_node_or_null(get_path_to_node(path)) 8 | if target: 9 | target.set_indexed(get_path_to_property(path), collection[path]) 10 | 11 | 12 | static func get_path_to_node(path: NodePath) -> NodePath: 13 | return path.slice(0, path.get_name_count()) 14 | 15 | 16 | static func get_path_to_property(path: NodePath) -> NodePath: 17 | return path.slice(path.get_name_count()) 18 | -------------------------------------------------------------------------------- /addons/tinymmo/nodepath_helper.gd.uid: -------------------------------------------------------------------------------- 1 | uid://chp6r0yn06aah 2 | -------------------------------------------------------------------------------- /addons/tinymmo/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="TinyMMO" 4 | description="Editor Plugin to enhance the development workflow of Godot-Tiny-MMO project." 5 | author="Horizon" 6 | version="" 7 | script="plugin.gd" 8 | -------------------------------------------------------------------------------- /addons/tinymmo/plugin.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bib3mk5la0tsa 2 | -------------------------------------------------------------------------------- /addons/tinymmo/popup/confirmation_dialog.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bbggc60f5dh3w 2 | -------------------------------------------------------------------------------- /addons/tinymmo/popup/get_property_hint.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dyleuler7nfho 2 | -------------------------------------------------------------------------------- /addons/tinymmo/popup/tree.gd.uid: -------------------------------------------------------------------------------- 1 | uid://kddgpf3a3t71 2 | -------------------------------------------------------------------------------- /addons/tinymmo/property_editor.gd.uid: -------------------------------------------------------------------------------- 1 | uid://43koo8bbrt73 2 | -------------------------------------------------------------------------------- /addons/tinymmo/test_scene/health_component.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | 4 | @export var health: int = 10 5 | @export var max_health: int = 10 6 | 7 | func foo() -> void: 8 | print("Health: ", health, " | MaxHealth: ", max_health) 9 | -------------------------------------------------------------------------------- /addons/tinymmo/test_scene/health_component.gd.uid: -------------------------------------------------------------------------------- 1 | uid://brx5ni2u12nwd 2 | -------------------------------------------------------------------------------- /addons/tinymmo/test_scene/node.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | 4 | @export var spawn_state: Dictionary[NodePath, Variant] = { 5 | ^"HealthComponent:health": 33, 6 | ^"HealthComponent:max_health": 33, 7 | #^".:char": null 8 | } 9 | 10 | @export var dict_empty: Dictionary 11 | 12 | @export var integer: int 13 | @export var char: CharacterResource = null 14 | @export var position2d: Vector2 = Vector2.ONE 15 | 16 | 17 | func _ready() -> void: 18 | foo();print("ready"); 19 | print(get_node(".")) 20 | func foo(): 21 | TinyNodePath.set_property_collection(self, spawn_state) 22 | -------------------------------------------------------------------------------- /addons/tinymmo/test_scene/node.gd.uid: -------------------------------------------------------------------------------- 1 | uid://1stwntyy7jv3 2 | -------------------------------------------------------------------------------- /addons/tinymmo/test_scene/node.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://m2yryo0nxj3c"] 2 | 3 | [ext_resource type="Script" uid="uid://1stwntyy7jv3" path="res://addons/tinymmo/test_scene/node.gd" id="1_8hu6a"] 4 | [ext_resource type="Script" uid="uid://brx5ni2u12nwd" path="res://addons/tinymmo/test_scene/health_component.gd" id="2_o4e2x"] 5 | 6 | [node name="Node" type="Node"] 7 | script = ExtResource("1_8hu6a") 8 | spawn_state = Dictionary[NodePath, Variant]({ 9 | NodePath("HealthComponent:health"): 33, 10 | NodePath("HealthComponent:max_health"): 33, 11 | NodePath("Salade"): 2, 12 | NodePath(".:integer"): 1, 13 | NodePath(".:position2d"): Vector2(2, 1) 14 | }) 15 | 16 | [node name="HealthComponent" type="Node" parent="."] 17 | script = ExtResource("2_o4e2x") 18 | 19 | [node name="Node2D" type="Node2D" parent="."] 20 | script = ExtResource("2_o4e2x") 21 | 22 | [node name="Node" type="Node" parent="."] 23 | -------------------------------------------------------------------------------- /assets/audio/music/ekonia-main-theme.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/audio/music/ekonia-main-theme.wav -------------------------------------------------------------------------------- /assets/audio/music/ekonia-main-theme.wav.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wav" 4 | type="AudioStreamWAV" 5 | uid="uid://xxr4otrq1cg0" 6 | path="res://.godot/imported/ekonia-main-theme.wav-5f8d10749df7e59623d3d809bea4fc07.sample" 7 | 8 | [deps] 9 | 10 | source_file="res://assets/audio/music/ekonia-main-theme.wav" 11 | dest_files=["res://.godot/imported/ekonia-main-theme.wav-5f8d10749df7e59623d3d809bea4fc07.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 | -------------------------------------------------------------------------------- /assets/fonts/Atkinson_Hyperlegible/AtkinsonHyperlegible-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Atkinson_Hyperlegible/AtkinsonHyperlegible-Bold.ttf -------------------------------------------------------------------------------- /assets/fonts/Atkinson_Hyperlegible/AtkinsonHyperlegible-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Atkinson_Hyperlegible/AtkinsonHyperlegible-BoldItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/Atkinson_Hyperlegible/AtkinsonHyperlegible-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Atkinson_Hyperlegible/AtkinsonHyperlegible-Italic.ttf -------------------------------------------------------------------------------- /assets/fonts/Atkinson_Hyperlegible/AtkinsonHyperlegible-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Atkinson_Hyperlegible/AtkinsonHyperlegible-Regular.ttf -------------------------------------------------------------------------------- /assets/fonts/Cinzel/Cinzel-VariableFont_wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Cinzel/Cinzel-VariableFont_wght.ttf -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Cinzel/static/Cinzel-Black.ttf -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-Black.ttf.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="font_data_dynamic" 4 | type="FontFile" 5 | uid="uid://dcugjnfqo4545" 6 | path="res://.godot/imported/Cinzel-Black.ttf-11c15ed5976550cf842f6c898c745de9.fontdata" 7 | 8 | [deps] 9 | 10 | source_file="res://assets/fonts/Cinzel/static/Cinzel-Black.ttf" 11 | dest_files=["res://.godot/imported/Cinzel-Black.ttf-11c15ed5976550cf842f6c898c745de9.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=4 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 | -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Cinzel/static/Cinzel-Bold.ttf -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-Bold.ttf.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="font_data_dynamic" 4 | type="FontFile" 5 | uid="uid://cehc3gujked8x" 6 | path="res://.godot/imported/Cinzel-Bold.ttf-aa5015b4c86453708efc51cda5f08e33.fontdata" 7 | 8 | [deps] 9 | 10 | source_file="res://assets/fonts/Cinzel/static/Cinzel-Bold.ttf" 11 | dest_files=["res://.godot/imported/Cinzel-Bold.ttf-aa5015b4c86453708efc51cda5f08e33.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=4 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 | -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Cinzel/static/Cinzel-ExtraBold.ttf -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Cinzel/static/Cinzel-Medium.ttf -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-Medium.ttf.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="font_data_dynamic" 4 | type="FontFile" 5 | uid="uid://cyiwjmaowucxo" 6 | path="res://.godot/imported/Cinzel-Medium.ttf-b022b3fc89ad50096987365ab9b56b47.fontdata" 7 | 8 | [deps] 9 | 10 | source_file="res://assets/fonts/Cinzel/static/Cinzel-Medium.ttf" 11 | dest_files=["res://.godot/imported/Cinzel-Medium.ttf-b022b3fc89ad50096987365ab9b56b47.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=4 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 | -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Cinzel/static/Cinzel-Regular.ttf -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-Regular.ttf.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="font_data_dynamic" 4 | type="FontFile" 5 | uid="uid://degl2k4ilqvus" 6 | path="res://.godot/imported/Cinzel-Regular.ttf-0b4a96c90a5450fd1f0b5e9d0983f949.fontdata" 7 | 8 | [deps] 9 | 10 | source_file="res://assets/fonts/Cinzel/static/Cinzel-Regular.ttf" 11 | dest_files=["res://.godot/imported/Cinzel-Regular.ttf-0b4a96c90a5450fd1f0b5e9d0983f949.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=4 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 | -------------------------------------------------------------------------------- /assets/fonts/Cinzel/static/Cinzel-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/Cinzel/static/Cinzel-SemiBold.ttf -------------------------------------------------------------------------------- /assets/fonts/kenney_mini.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/kenney_mini.ttf -------------------------------------------------------------------------------- /assets/fonts/kenney_mini.ttf.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="font_data_dynamic" 4 | type="FontFile" 5 | uid="uid://b6hkljp38x3fi" 6 | path="res://.godot/imported/kenney_mini.ttf-3b5b1f6fae027daa26e3904a3b3b9a0e.fontdata" 7 | 8 | [deps] 9 | 10 | source_file="res://assets/fonts/kenney_mini.ttf" 11 | dest_files=["res://.godot/imported/kenney_mini.ttf-3b5b1f6fae027daa26e3904a3b3b9a0e.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 | -------------------------------------------------------------------------------- /assets/fonts/kenney_mini_square.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/fonts/kenney_mini_square.ttf -------------------------------------------------------------------------------- /assets/fonts/kenney_mini_square.ttf.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="font_data_dynamic" 4 | type="FontFile" 5 | uid="uid://4hwkelg84yr4" 6 | path="res://.godot/imported/kenney_mini_square.ttf-f4549d67dc207e3d94a5e3013002571e.fontdata" 7 | 8 | [deps] 9 | 10 | source_file="res://assets/fonts/kenney_mini_square.ttf" 11 | dest_files=["res://.godot/imported/kenney_mini_square.ttf-f4549d67dc207e3d94a5e3013002571e.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 | -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_area_damage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_area_damage.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_area_meteo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_area_meteo.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_audio.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_bag.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_beetle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_beetle.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_bell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_bell.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_bone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_bone.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_brain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_brain.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_brush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_brush.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_brush_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_brush_2.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_bucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_bucket.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_bullet.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_camera_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_camera_grid.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_card.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_case.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_cell.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_character.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_character.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_chest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_chest.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_clear.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_coin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_coin.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_color_correction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_color_correction.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_crate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_crate.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_dialog.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_dice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_dice.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_door.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_event.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_file.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_flag.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_folder.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_follow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_follow.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_gear.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_gem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_gem.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_grid.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_hammer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_hammer.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_hand.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_hat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_hat.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_hat.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://7ce7m0221tey" 6 | path="res://.godot/imported/icon_hat.png-517cdf0446815ef2e6f61d34a34598c1.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://assets/node_icons/blue/icon_hat.png" 14 | dest_files=["res://.godot/imported/icon_hat.png-517cdf0446815ef2e6f61d34a34598c1.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 | -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_heart.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_hitbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_hitbox.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_interrogation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_interrogation.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_key.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_lever.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_lever.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_light_bulb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_light_bulb.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_liquid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_liquid.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_lock.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_magnifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_magnifier.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_map.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_meat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_meat.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_mirror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_mirror.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_money_bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_money_bag.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_parchment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_parchment.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_particle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_particle.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_path_follow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_path_follow.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_pot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_pot.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_potion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_potion.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_projectile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_projectile.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_propeller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_propeller.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_puzzle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_puzzle.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_ring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_ring.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_save.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_scene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_scene.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_search.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_shield.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_ship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_ship.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_shovel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_shovel.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_signal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_signal.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_skull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_skull.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_star.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_stat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_stat.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_sword.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_sword.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_target.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_target_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_target_2.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_text_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_text_panel.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_time.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_transition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_transition.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_trap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_trap.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_tree.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_trophy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_trophy.png -------------------------------------------------------------------------------- /assets/node_icons/blue/icon_unlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/blue/icon_unlock.png -------------------------------------------------------------------------------- /assets/node_icons/color/icon_destroyable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/color/icon_destroyable.png -------------------------------------------------------------------------------- /assets/node_icons/color/icon_heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/color/icon_heart.png -------------------------------------------------------------------------------- /assets/node_icons/color/icon_map_colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/color/icon_map_colored.png -------------------------------------------------------------------------------- /assets/node_icons/color/icon_meteo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/color/icon_meteo.png -------------------------------------------------------------------------------- /assets/node_icons/color/icon_teleporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/color/icon_teleporter.png -------------------------------------------------------------------------------- /assets/node_icons/color/icon_weapon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/color/icon_weapon.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_area_damage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_area_damage.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_area_meteo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_area_meteo.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_audio.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_bag.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_beetle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_beetle.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_bell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_bell.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_bone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_bone.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_brain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_brain.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_brush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_brush.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_brush_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_brush_2.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_bucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_bucket.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_bullet.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_camera_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_camera_grid.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_card.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_case.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_cell.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_character.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_character.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_chest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_chest.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_clear.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_coin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_coin.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_color_correction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_color_correction.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_crate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_crate.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_dialog.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_dice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_dice.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_door.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_event.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_file.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_flag.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_folder.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_follow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_follow.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_gear.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_gem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_gem.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_grid.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_hammer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_hammer.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_hand.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_hat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_hat.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_heart.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_hitbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_hitbox.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_interrogation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_interrogation.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_key.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_lever.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_lever.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_light_bulb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_light_bulb.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_liquid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_liquid.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_lock.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_magnifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_magnifier.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_map.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_meat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_meat.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_mirror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_mirror.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_money_bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_money_bag.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_parchment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_parchment.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_particle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_particle.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_path_follow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_path_follow.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_pot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_pot.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_potion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_potion.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_projectile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_projectile.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_propeller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_propeller.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_puzzle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_puzzle.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_ring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_ring.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_save.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_scene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_scene.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_search.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_shield.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_ship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_ship.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_shovel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_shovel.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_signal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_signal.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_skull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_skull.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_star.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_stat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_stat.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_sword.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_sword.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_target.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_target_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_target_2.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_text_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_text_panel.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_time.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_transition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_transition.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_trap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_trap.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_tree.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_trophy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_trophy.png -------------------------------------------------------------------------------- /assets/node_icons/green/icon_unlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/node_icons/green/icon_unlock.png -------------------------------------------------------------------------------- /assets/node_icons/info.txt: -------------------------------------------------------------------------------- 1 | License concerning assets inside this folder node_icons/: 2 | > License 3 | > 4 | > They are released under the Creative Commons Zero (CC0) license. 5 | > 6 | > You can use any and all of the assets found in this package in your own games, even commercial ones 7 | > 8 | > No need to credit me. 9 | 10 | Source: 11 | > https://pixel-boy.itch.io/icon-godot-node 12 | -------------------------------------------------------------------------------- /assets/project_icon/icon128x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/project_icon/icon128x.png -------------------------------------------------------------------------------- /assets/project_icon/icon128x.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://0n3jc8bju5rn" 6 | path="res://.godot/imported/icon128x.png-a276f13c9ab65f0141b13afeec50ab83.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://assets/project_icon/icon128x.png" 14 | dest_files=["res://.godot/imported/icon128x.png-a276f13c9ab65f0141b13afeec50ab83.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 | -------------------------------------------------------------------------------- /assets/skyboxes/cloudy_skybox_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/skyboxes/cloudy_skybox_0.png -------------------------------------------------------------------------------- /assets/skyboxes/mountain_skybox_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/skyboxes/mountain_skybox_0.png -------------------------------------------------------------------------------- /assets/sprites/characters/goblin/goblin_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/goblin/goblin_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/goblin/goblin_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/goblin/goblin_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/goblin/goblin_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/goblin/goblin_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/knight/knight_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/knight/knight_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/knight/knight_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/knight/knight_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/knight/knight_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/knight/knight_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc/orc_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc/orc_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc/orc_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc/orc_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc/orc_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc/orc_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc_rogue/orc_rogue_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc_rogue/orc_rogue_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc_rogue/orc_rogue_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc_rogue/orc_rogue_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc_rogue/orc_rogue_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc_rogue/orc_rogue_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc_shaman/orc_shaman_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc_shaman/orc_shaman_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc_shaman/orc_shaman_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc_shaman/orc_shaman_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc_shaman/orc_shaman_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc_shaman/orc_shaman_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc_warrior/orc_warrior_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc_warrior/orc_warrior_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc_warrior/orc_warrior_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc_warrior/orc_warrior_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/orc_warrior/orc_warrior_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/orc_warrior/orc_warrior_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/rogue/rogue_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/rogue/rogue_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/rogue/rogue_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/rogue/rogue_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/rogue/rogue_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/rogue/rogue_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton/skeleton_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton/skeleton_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton/skeleton_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton/skeleton_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton/skeleton_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton/skeleton_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton_mage/skeleton_mage_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton_mage/skeleton_mage_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton_mage/skeleton_mage_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton_mage/skeleton_mage_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton_mage/skeleton_mage_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton_mage/skeleton_mage_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton_rogue/skeleton_rogue_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton_rogue/skeleton_rogue_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton_rogue/skeleton_rogue_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton_rogue/skeleton_rogue_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton_rogue/skeleton_rogue_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton_rogue/skeleton_rogue_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton_warrior/skeleton_warrior_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton_warrior/skeleton_warrior_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton_warrior/skeleton_warrior_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton_warrior/skeleton_warrior_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/skeleton_warrior/skeleton_warrior_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/skeleton_warrior/skeleton_warrior_run.png -------------------------------------------------------------------------------- /assets/sprites/characters/wizard/wizard_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/wizard/wizard_death.png -------------------------------------------------------------------------------- /assets/sprites/characters/wizard/wizard_idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/wizard/wizard_idle.png -------------------------------------------------------------------------------- /assets/sprites/characters/wizard/wizard_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/characters/wizard/wizard_run.png -------------------------------------------------------------------------------- /assets/sprites/environment/building/Exterior/CemiteryWalls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/building/Exterior/CemiteryWalls.png -------------------------------------------------------------------------------- /assets/sprites/environment/building/Exterior/Garden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/building/Exterior/Garden.png -------------------------------------------------------------------------------- /assets/sprites/environment/building/Exterior/Props.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/building/Exterior/Props.png -------------------------------------------------------------------------------- /assets/sprites/environment/building/Exterior/Roofs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/building/Exterior/Roofs.png -------------------------------------------------------------------------------- /assets/sprites/environment/building/Exterior/Walls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/building/Exterior/Walls.png -------------------------------------------------------------------------------- /assets/sprites/environment/building/Interior/BaseOutpost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/building/Interior/BaseOutpost.png -------------------------------------------------------------------------------- /assets/sprites/environment/building/Interior/Castle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/building/Interior/Castle.png -------------------------------------------------------------------------------- /assets/sprites/environment/building/Interior/Librarytiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/building/Interior/Librarytiles.png -------------------------------------------------------------------------------- /assets/sprites/environment/dungeon_prison/dungeon_tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/dungeon_prison/dungeon_tiles.png -------------------------------------------------------------------------------- /assets/sprites/environment/dungeon_prison/props.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/dungeon_prison/props.png -------------------------------------------------------------------------------- /assets/sprites/environment/dungeon_prison/tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/dungeon_prison/tiles.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/barrel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/barrel.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/bars_gate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/bars_gate.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/big_red_potion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/big_red_potion.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/chest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/chest.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/crate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/crate.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/dungeon_barrel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/dungeon_barrel.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/dungeon_crate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/dungeon_crate.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/gold_coin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/gold_coin.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/key.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/pot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/pot.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/pressure_plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/pressure_plate.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/red_potion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/red_potion.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/saw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/saw.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/spike_trap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/spike_trap.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/switch_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/switch_horizontal.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/switch_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/switch_vertical.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/urn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/urn.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/wide_chest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/wide_chest.png -------------------------------------------------------------------------------- /assets/sprites/environment/environment_objects/wooden_gate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/environment_objects/wooden_gate.png -------------------------------------------------------------------------------- /assets/sprites/environment/green_woods/props.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/green_woods/props.png -------------------------------------------------------------------------------- /assets/sprites/environment/green_woods/tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/green_woods/tiles.png -------------------------------------------------------------------------------- /assets/sprites/environment/green_woods/trees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/green_woods/trees.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Cave/CaveProps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Cave/CaveProps.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Cave/CaveTiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Cave/CaveTiles.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Desert/Ground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Desert/Ground.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Desert/Props.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Desert/Props.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Desert/Sand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Desert/Sand.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Forest/Floors_Tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Forest/Floors_Tiles.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Forest/Light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Forest/Light.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Forest/Props.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Forest/Props.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Forest/Shadown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Forest/Shadown.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Forest/Tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Forest/Tiles.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Forest/Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Forest/Tree.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Forest/Wall_Tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Forest/Wall_Tiles.png -------------------------------------------------------------------------------- /assets/sprites/environment/world_tileset/Forest/Wall_Variations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/environment/world_tileset/Forest/Wall_Variations.png -------------------------------------------------------------------------------- /assets/sprites/gui/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/gui/.gitkeep -------------------------------------------------------------------------------- /assets/sprites/gui/backgrounds/desert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/gui/backgrounds/desert.png -------------------------------------------------------------------------------- /assets/sprites/gui/backgrounds/fairy_forest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/gui/backgrounds/fairy_forest.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon109.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon109.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon142.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon142.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon162.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon162.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon182.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon182.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon2.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon2.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cf0y64q72i32l" 6 | path="res://.godot/imported/Icon2.png-b794b81c8fddde11b042ec147cf09a16.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://assets/sprites/items/icons/Icon2.png" 14 | dest_files=["res://.godot/imported/Icon2.png-b794b81c8fddde11b042ec147cf09a16.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 | -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon202.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon202.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon222.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon222.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon271.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon271.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon274.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon274.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon301.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon301.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon302.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon302.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon303.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon303.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon304.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon304.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon305.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon305.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon306.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon306.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon307.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon307.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon308.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon308.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon309.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon309.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon310.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon321.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon321.png -------------------------------------------------------------------------------- /assets/sprites/items/icons/Icon325.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/icons/Icon325.png -------------------------------------------------------------------------------- /assets/sprites/items/weapons/bone/bone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/weapons/bone/bone.png -------------------------------------------------------------------------------- /assets/sprites/items/weapons/hands/brown_leather_gloves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/weapons/hands/brown_leather_gloves.png -------------------------------------------------------------------------------- /assets/sprites/items/weapons/hands/goblin_hands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/weapons/hands/goblin_hands.png -------------------------------------------------------------------------------- /assets/sprites/items/weapons/hands/human_hands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/weapons/hands/human_hands.png -------------------------------------------------------------------------------- /assets/sprites/items/weapons/hands/orc_hands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/weapons/hands/orc_hands.png -------------------------------------------------------------------------------- /assets/sprites/items/weapons/wood/wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/items/weapons/wood/wood.png -------------------------------------------------------------------------------- /assets/sprites/particles/gold_coin_pick_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/particles/gold_coin_pick_up.png -------------------------------------------------------------------------------- /assets/sprites/particles/white_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SlayHorizon/godot-tiny-mmo/515c5e63254cd55ffd1b8f7094271191cb65dc1f/assets/sprites/particles/white_circle.png -------------------------------------------------------------------------------- /data/config/client_config.cfg: -------------------------------------------------------------------------------- 1 | [gateway-client] 2 | address="127.0.0.1" 3 | port=8088 4 | certificate_path="res://data/config/tls/certificate.crt" 5 | -------------------------------------------------------------------------------- /data/config/ekonia/README.md: -------------------------------------------------------------------------------- 1 | Configuration files for Ekonia Online. 2 | -------------------------------------------------------------------------------- /data/config/ekonia/client.cfg: -------------------------------------------------------------------------------- 1 | [gateway-client] 2 | address="127.0.0.1" 3 | port=8088 4 | certificate_path="res://data/config/tls/certificate.crt" 5 | -------------------------------------------------------------------------------- /data/config/gateway_config.cfg: -------------------------------------------------------------------------------- 1 | [gateway-server] 2 | port=8088 3 | bind_address="127.0.0.1" 4 | certificate_path="res://data/config/tls/certificate.crt" 5 | key_path="res://data/config/tls/key.key" 6 | 7 | [gateway-manager-client] 8 | port=8064 9 | address="127.0.0.1" 10 | certificate_path="res://data/config/tls/certificate.crt" 11 | -------------------------------------------------------------------------------- /data/config/master_config.cfg: -------------------------------------------------------------------------------- 1 | [gateway-manager-server] 2 | port=8064 3 | bind_address="127.0.0.1" 4 | certificate_path="res://data/config/tls/certificate.crt" 5 | key_path="res://data/config/tls/key.key" 6 | 7 | [world-manager-server] 8 | port=8062 9 | bind_address="127.0.0.1" 10 | certificate_path="res://data/config/tls/certificate.crt" 11 | key_path="res://data/config/tls/key.key" 12 | -------------------------------------------------------------------------------- /data/config/world_config.cfg: -------------------------------------------------------------------------------- 1 | [world-server] 2 | port=8087 3 | bind_address="127.0.0.1" 4 | certificate_path="res://data/config/tls/certificate.crt" 5 | key_path="res://data/config/tls/key.key" 6 | database_path="." 7 | motd="Welcome to Tiny MMO!" 8 | name="Classic" 9 | max_players=200 10 | hardcore=false 11 | bonus_xp=0.0 12 | max_character=5 13 | pvp=true 14 | 15 | [world-manager-client] 16 | address="127.0.0.1" 17 | port=8062 18 | certificate_path="res://data/config/tls/certificate.crt" 19 | -------------------------------------------------------------------------------- /data/config/world_config_hardcore.cfg: -------------------------------------------------------------------------------- 1 | [world-server] 2 | bind_address="127.0.0.1" 3 | port=8099 4 | certificate_path="res://data/config/tls/certificate.crt" 5 | key_path="res://data/config/tls/key.key" 6 | database_path="." 7 | name="HARDCORE" 8 | max_players=200 9 | hardcore=true 10 | bonus_xp=1.2 11 | max_character=1 12 | pvp=true 13 | 14 | [world-manager-client] 15 | address="127.0.0.1" 16 | port=8062 17 | certificate_path="res://data/config/tls/certificate.crt" 18 | -------------------------------------------------------------------------------- /icon.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/client/autoload/client_state.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dhykbo25unems 2 | -------------------------------------------------------------------------------- /source/client/client_main.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | 4 | func _ready() -> void: 5 | pass 6 | -------------------------------------------------------------------------------- /source/client/client_main.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bfybdk1kgy125 2 | -------------------------------------------------------------------------------- /source/client/gateway/gateway.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ch86ljq7iwgv8 2 | -------------------------------------------------------------------------------- /source/client/gateway/popup_panel.gd: -------------------------------------------------------------------------------- 1 | extends PanelContainer 2 | 3 | 4 | @onready var title_label: Label = $VBoxContainer/TitleLabel 5 | @onready var rich_text_label: RichTextLabel = $VBoxContainer/VBoxContainer/RichTextLabel 6 | @onready var confirm_button: Button = $VBoxContainer/VBoxContainer/ConfirmButton 7 | 8 | 9 | func display_waiting_popup(text: String = "Waiting ...") -> void: 10 | title_label.text = "Waiting" 11 | confirm_button.hide() 12 | rich_text_label.text = text 13 | show() 14 | 15 | 16 | func confirm_message(message: String) -> void: 17 | title_label.text = "Please Confirm" 18 | rich_text_label.text = message 19 | confirm_button.show() 20 | show() 21 | await confirm_button.pressed 22 | hide() 23 | -------------------------------------------------------------------------------- /source/client/gateway/popup_panel.gd.uid: -------------------------------------------------------------------------------- 1 | uid://q5rsjtg6nsto 2 | -------------------------------------------------------------------------------- /source/client/local_player/local_player.gd.uid: -------------------------------------------------------------------------------- 1 | uid://biqs370wdwi6m 2 | -------------------------------------------------------------------------------- /source/client/local_player/local_player.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=3 uid="uid://bcojrmcocbq2k"] 2 | 3 | [ext_resource type="PackedScene" uid="uid://b3wa3c527k5lx" path="res://source/common/gameplay/characters/player/player.tscn" id="1_5bye1"] 4 | [ext_resource type="Script" uid="uid://biqs370wdwi6m" path="res://source/client/local_player/local_player.gd" id="2_qfdgo"] 5 | [ext_resource type="Script" uid="uid://bt74wxkb47dp0" path="res://source/client/local_player/mouse_component.gd" id="3_7fqr5"] 6 | 7 | [node name="LocalPlayer" instance=ExtResource("1_5bye1")] 8 | script = ExtResource("2_qfdgo") 9 | 10 | [node name="Camera2D" type="Camera2D" parent="." index="3"] 11 | zoom = Vector2(3, 3) 12 | 13 | [node name="MouseComponent" type="Node2D" parent="." index="4"] 14 | top_level = true 15 | script = ExtResource("3_7fqr5") 16 | 17 | [node name="AnimatedSprite2D" parent="." index="5"] 18 | frame_progress = 0.0 19 | -------------------------------------------------------------------------------- /source/client/local_player/mouse_component.gd: -------------------------------------------------------------------------------- 1 | class_name MouseComponent 2 | extends Node2D 3 | 4 | 5 | var mouse_ingame: bool = true 6 | var window_focus: bool = true 7 | 8 | 9 | func _notification(what: int) -> void: 10 | if what == NOTIFICATION_WM_MOUSE_ENTER: 11 | mouse_ingame = true 12 | elif what == NOTIFICATION_WM_MOUSE_EXIT: 13 | mouse_ingame = false 14 | if what == NOTIFICATION_WM_WINDOW_FOCUS_IN: 15 | window_focus = true 16 | elif what == NOTIFICATION_WM_WINDOW_FOCUS_OUT: 17 | window_focus = false 18 | 19 | 20 | func _process(_delta: float) -> void: 21 | if mouse_ingame and window_focus: 22 | position = get_global_mouse_position() 23 | -------------------------------------------------------------------------------- /source/client/local_player/mouse_component.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bt74wxkb47dp0 2 | -------------------------------------------------------------------------------- /source/client/network/instance_client.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ce400ua741out 2 | -------------------------------------------------------------------------------- /source/client/network/instance_manager.gd.uid: -------------------------------------------------------------------------------- 1 | uid://df8q30x0onbwg 2 | -------------------------------------------------------------------------------- /source/client/network/world_client.gd.uid: -------------------------------------------------------------------------------- 1 | uid://siq7b6qqrjyq 2 | -------------------------------------------------------------------------------- /source/client/ui/hud/health_bar/health_bar.gd.uid: -------------------------------------------------------------------------------- 1 | uid://nls33odkod4v 2 | -------------------------------------------------------------------------------- /source/client/ui/hud/hud.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dshitaaapbs6x 2 | -------------------------------------------------------------------------------- /source/client/ui/hud/item_slots.gd.uid: -------------------------------------------------------------------------------- 1 | uid://pkprr0ll1y44 2 | -------------------------------------------------------------------------------- /source/client/ui/hud/menu_overlay.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | -------------------------------------------------------------------------------- /source/client/ui/hud/menu_overlay.gd.uid: -------------------------------------------------------------------------------- 1 | uid://brq8mxox5bclj 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/chat/chat_menu.gd.uid: -------------------------------------------------------------------------------- 1 | uid://678x32kmrkb5 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/guild/create_guild_menu.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b6ywedmocoh7m 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/guild/guild_display.gd: -------------------------------------------------------------------------------- 1 | extends GuildPanel 2 | 3 | 4 | @export var no_guild_panel: GuildPanel 5 | 6 | @onready var button: Button = $MarginContainer/VBoxContainer/Button 7 | @onready var guild_name_label: Label = $MarginContainer/VBoxContainer/Label 8 | 9 | 10 | func open(data: Dictionary) -> void: 11 | guild_name_label.text = data.get("name", "No Guild Name") 12 | var is_in_guild: bool = data.get("is_in_guild", false) 13 | if is_in_guild: 14 | button.text = "Leave" 15 | else: 16 | button.text = "Request Join" 17 | 18 | 19 | func _on_button_pressed() -> void: 20 | # Quick n Dirty 21 | if button.text.begins_with("Leave"): 22 | InstanceClient.current.request_data( 23 | &"guild.quit", 24 | func(d): swap_requested.emit(no_guild_panel, {}) 25 | ) 26 | #else: 27 | #InstanceClient.current.request_data( 28 | #&"guild.apply", 29 | #Callable() 30 | #) 31 | -------------------------------------------------------------------------------- /source/client/ui/menus/guild/guild_display.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dlo5k2qp1v3dm 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/guild/guild_menu.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d1cseo7blcif2 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/guild/guild_panel.gd: -------------------------------------------------------------------------------- 1 | class_name GuildPanel 2 | extends PanelContainer 3 | 4 | 5 | signal swap_requested(target: GuildPanel, data: Dictionary) 6 | signal back_requested 7 | 8 | 9 | func open(_data: Dictionary) -> void: 10 | pass 11 | 12 | 13 | func close() -> void: 14 | pass 15 | -------------------------------------------------------------------------------- /source/client/ui/menus/guild/guild_panel.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dnd53fxkhfu66 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/guild/no_guild_menu.gd: -------------------------------------------------------------------------------- 1 | extends GuildPanel 2 | 3 | 4 | @export var search_panel: GuildPanel 5 | @export var create_panel: GuildPanel 6 | 7 | 8 | func _on_search_guild_button_pressed() -> void: 9 | swap_requested.emit(search_panel, {}) 10 | 11 | 12 | func _on_create_guild_button_pressed() -> void: 13 | swap_requested.emit(create_panel, {}) 14 | -------------------------------------------------------------------------------- /source/client/ui/menus/guild/no_guild_menu.gd.uid: -------------------------------------------------------------------------------- 1 | uid://o3kj4urvrykf 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/guild/search_guild_menu.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c0wbbw6du00cs 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/inventory/attributes_panel.gd.uid: -------------------------------------------------------------------------------- 1 | uid://blh63bbqvk7pv 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/inventory/gear_slot.gd: -------------------------------------------------------------------------------- 1 | extends Button 2 | class_name GearSlotButton 3 | 4 | 5 | @export var gear_slot: ItemSlot 6 | 7 | 8 | func _ready() -> void: 9 | if not gear_slot: 10 | disabled = true 11 | return 12 | 13 | tooltip_text = gear_slot.display_name 14 | icon = gear_slot.icon 15 | if gear_slot.unlock_rule.kind == SlotUnlockRule.Kind.PLAYER_LEVEL: 16 | text = str(gear_slot.unlock_rule.level) 17 | -------------------------------------------------------------------------------- /source/client/ui/menus/inventory/gear_slot.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cx6ltmvpbwdng 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/inventory/inventory_menu.gd.uid: -------------------------------------------------------------------------------- 1 | uid://3kue0fgf78ik 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/inventory/item_slot_button.gd: -------------------------------------------------------------------------------- 1 | class_name ItemSlotButton 2 | extends Button 3 | 4 | 5 | var item: Item 6 | 7 | 8 | #func _init() -> void: 9 | 10 | -------------------------------------------------------------------------------- /source/client/ui/menus/inventory/item_slot_button.gd.uid: -------------------------------------------------------------------------------- 1 | uid://x17ssxijuh1t 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/inventory/stats_panel.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dm4es1smo6nxw 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/player_profile/player_profile.gd.uid: -------------------------------------------------------------------------------- 1 | uid://2dnwg3gkbaeg 2 | -------------------------------------------------------------------------------- /source/client/ui/menus/settings/settings.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | 4 | func _ready() -> void: 5 | $VBoxContainer/HBoxContainer/HSlider.value = ClientState.settings.get_key(&"camera_zoom", 2) 6 | 7 | 8 | func _on_h_slider_drag_ended(value_changed: bool) -> void: 9 | if not value_changed: 10 | return 11 | var h_slider: HSlider = $VBoxContainer/HBoxContainer/HSlider 12 | if ClientState.local_player: 13 | ClientState.local_player.set_camera_zoom(h_slider.value * Vector2.ONE) 14 | 15 | ClientState.settings[&"camera_zoom"] = h_slider.value 16 | 17 | 18 | func _on_button_pressed() -> void: 19 | hide() 20 | -------------------------------------------------------------------------------- /source/client/ui/menus/settings/settings.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dtcbv7ryjqh86 2 | -------------------------------------------------------------------------------- /source/client/ui/shared/sub_panel.gd: -------------------------------------------------------------------------------- 1 | class_name SubPanel 2 | extends PanelContainer 3 | 4 | 5 | signal swap_requested(target: SubPanel, data: Dictionary, can_back: bool) 6 | signal back_requested 7 | 8 | 9 | func open(data: Dictionary) -> void: 10 | pass 11 | 12 | 13 | func close() -> void: 14 | pass 15 | -------------------------------------------------------------------------------- /source/client/ui/shared/sub_panel.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c437u84bullo2 2 | -------------------------------------------------------------------------------- /source/client/ui/themes/styles/stylebox_gradient.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dl1qb5l1yivlu 2 | -------------------------------------------------------------------------------- /source/client/ui/ui.gd: -------------------------------------------------------------------------------- 1 | class_name UI 2 | extends CanvasLayer 3 | 4 | 5 | @onready var hud: Control = $HUD 6 | 7 | 8 | func _ready() -> void: 9 | for child: Node in get_children(): 10 | if child is Control: 11 | child.theme = BetterThemeDB.theme 12 | -------------------------------------------------------------------------------- /source/client/ui/ui.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bkb1spvl3spry 2 | -------------------------------------------------------------------------------- /source/client/ui/ui.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://b20pv25ct6nmt"] 2 | 3 | [ext_resource type="Script" uid="uid://bkb1spvl3spry" path="res://source/client/ui/ui.gd" id="1_wpqoj"] 4 | [ext_resource type="PackedScene" uid="uid://dqt8fnt1l33eu" path="res://source/client/ui/hud/hud.tscn" id="2_equq2"] 5 | 6 | [node name="UI" type="CanvasLayer"] 7 | script = ExtResource("1_wpqoj") 8 | 9 | [node name="HUD" parent="." node_paths=PackedStringArray("sub_menu") instance=ExtResource("2_equq2")] 10 | sub_menu = NodePath("../Submenu") 11 | 12 | [node name="Submenu" type="Control" parent="."] 13 | layout_mode = 3 14 | anchors_preset = 15 15 | anchor_right = 1.0 16 | anchor_bottom = 1.0 17 | grow_horizontal = 2 18 | grow_vertical = 2 19 | mouse_filter = 2 20 | -------------------------------------------------------------------------------- /source/client/utils/button_utils.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b3rs2y00cieyw 2 | -------------------------------------------------------------------------------- /source/client/utils/theme_changer.gd: -------------------------------------------------------------------------------- 1 | class_name BetterThemeDB 2 | 3 | 4 | static var theme: Theme: 5 | get = get_theme 6 | 7 | 8 | static func get_theme() -> Theme: 9 | if not theme: 10 | theme = load( 11 | ProjectSettings.get_setting("gui/theme/custom", "res://source/client/ui/themes/theme_navy.tres") 12 | ) 13 | return theme 14 | -------------------------------------------------------------------------------- /source/client/utils/theme_changer.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bssnfet8iyyv4 2 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/character.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bu6yn6ww7d7c8 2 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/classes/character_resource.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b2tgdabbgoor 2 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/components/hand/hand.gd.uid: -------------------------------------------------------------------------------- 1 | uid://kca0ew36ilei 2 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/components/hand/hand.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://c4mlxpbwyc1tw"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://clc768ctxxvjg" path="res://assets/sprites/items/weapons/hands/human_hands.png" id="1_on2c6"] 4 | [ext_resource type="Script" uid="uid://kca0ew36ilei" path="res://source/common/gameplay/characters/components/hand/hand.gd" id="2_6u7qf"] 5 | 6 | [node name="Hand" type="Sprite2D"] 7 | texture = ExtResource("1_on2c6") 8 | region_enabled = true 9 | region_rect = Rect2(16, 16, 16, 16) 10 | script = ExtResource("2_6u7qf") 11 | side = 1 12 | status = 1 13 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/entity.gd.uid: -------------------------------------------------------------------------------- 1 | uid://qjaeni0dgiew 2 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/npc/npc.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cqoy5bqvcyv5b 2 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/npc/npc.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=3 uid="uid://v32667qwpj2l"] 2 | 3 | [ext_resource type="PackedScene" uid="uid://6bcg7fwcl6mi" path="res://source/common/gameplay/characters/character.tscn" id="1_w5sp3"] 4 | [ext_resource type="Script" uid="uid://cqoy5bqvcyv5b" path="res://source/common/gameplay/characters/npc/npc.gd" id="2_yivip"] 5 | 6 | [sub_resource type="CircleShape2D" id="CircleShape2D_e1g67"] 7 | radius = 230.0 8 | 9 | [node name="NPC" instance=ExtResource("1_w5sp3")] 10 | script = ExtResource("2_yivip") 11 | 12 | [node name="DetectionArea" type="Area2D" parent="." index="10"] 13 | 14 | [node name="CollisionShape2D" type="CollisionShape2D" parent="DetectionArea" index="0"] 15 | shape = SubResource("CircleShape2D_e1g67") 16 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/player/display_name_label.gd: -------------------------------------------------------------------------------- 1 | extends Label 2 | 3 | 4 | func _ready() -> void: 5 | if multiplayer.is_server(): 6 | return 7 | get_parent().display_name_changed.connect(_on_display_name_changed) 8 | 9 | 10 | func _on_display_name_changed(new_name: String) -> void: 11 | text = new_name 12 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/player/display_name_label.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cibbkjmyj3j2x 2 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/player/player.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bexas1o2f74ve 2 | -------------------------------------------------------------------------------- /source/common/gameplay/characters/player/player_resource.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ch4h6y276l4i5 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/ability/ability.gd: -------------------------------------------------------------------------------- 1 | class_name AbilityResource 2 | extends Resource 3 | 4 | 5 | @export var name: String 6 | @export var cooldown: float = 1.0 7 | 8 | 9 | var last_action_time: float = -INF 10 | 11 | 12 | func use_ability(_entity: Entity, _direction: Vector2) -> void: 13 | pass 14 | #func use_ability(_entity: Entity, _payload: Dictionary) -> void: 15 | 16 | func can_use() -> bool: 17 | return (Time.get_ticks_msec() / 1000.0) - last_action_time >= cooldown 18 | 19 | 20 | func mark_used(): 21 | last_action_time = Time.get_ticks_msec() / 1000.0 22 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/ability/ability.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b41gujk35w421 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/ability/ability_collection/swing/swing.gd: -------------------------------------------------------------------------------- 1 | extends AbilityResource 2 | 3 | 4 | var damage: float = 10.0 5 | 6 | 7 | func _init() -> void: 8 | cooldown = 1.5 9 | 10 | 11 | func use_ability(entity: Entity, direction: Vector2) -> void: 12 | entity 13 | mark_used() 14 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/ability/ability_collection/swing/swing.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cv7gd6obpo815 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/ability/arrow_shoot/arrow_shoot.gd: -------------------------------------------------------------------------------- 1 | extends AbilityResource 2 | 3 | 4 | var damage: float = 10.0 5 | 6 | 7 | func _init() -> void: 8 | cooldown = 1.5 9 | 10 | 11 | func use_ability(entity: Entity, direction: Vector2) -> void: 12 | mark_used() 13 | 14 | var arrow: Projectile = preload("res://source/common/gameplay/items/weapons/bow/arrow.tscn").instantiate() 15 | arrow.top_level = true 16 | arrow.direction = direction 17 | arrow.global_position = entity.global_position 18 | 19 | arrow.source = entity 20 | arrow.effect = EffectSpec.damage( 21 | damage, ["Damage.Physical", "Projectile", "BasicAttack"], {"pen_tier":1} 22 | ) 23 | 24 | entity.add_child(arrow) 25 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/ability/arrow_shoot/arrow_shoot.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b4jrcnupjg8gh 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/ability/arrow_shoot/arrow_shoot.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" load_steps=2 format=3 uid="uid://e5j5kve7ed7f"] 2 | 3 | [ext_resource type="Script" uid="uid://b4jrcnupjg8gh" path="res://source/common/gameplay/combat/ability/arrow_shoot/arrow_shoot.gd" id="1_i3fqa"] 4 | 5 | [resource] 6 | script = ExtResource("1_i3fqa") 7 | name = "arrow_shoot" 8 | cooldown = 1.0 9 | metadata/_custom_type_script = "uid://b41gujk35w421" 10 | metadata/slug = &"arrow_shoot" 11 | metadata/id = 1 12 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/attack/attack.gd: -------------------------------------------------------------------------------- 1 | class_name Attack 2 | 3 | 4 | var source: Entity 5 | var damage: float 6 | 7 | 8 | func _init(_source: Entity, _damage: float) -> void: 9 | source = _source 10 | damage = _damage 11 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/attack/attack.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bxibfnrmkp3et 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/attributes/attributes_map.gd.uid: -------------------------------------------------------------------------------- 1 | uid://byrtq2fe5vp5v 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/attributes/stat_growth/stat_growth.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b61c4gs0ie8a6 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/attributes/stat_modifier/stat_modifier.gd: -------------------------------------------------------------------------------- 1 | class_name StatModifier 2 | extends Resource 3 | 4 | 5 | enum Op {ADD,MUL} 6 | enum Channel {VALUE, MAX} 7 | 8 | @export var attr: StringName 9 | @export var channel: Channel = Channel.MAX 10 | @export var op: Op = Op.ADD 11 | @export var magnitude: float = 0.0 12 | @export var source_tags: PackedStringArray = [] 13 | @export var runtime_id: int = randi() 14 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/attributes/stat_modifier/stat_modifier.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cvggwjkht4km4 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/attributes/stats_catalog.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dffnbfhrkdebh 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/components/ability_system_component.gd.uid: -------------------------------------------------------------------------------- 1 | uid://gl2cwrrfvlkh 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/components/attributes_mirror.gd.uid: -------------------------------------------------------------------------------- 1 | uid://natfmyvgikpe 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/components/equipment_component.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bu62r4mj8ohfc 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/damage_model/DamageModelResource.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="DamageModelResource" load_steps=2 format=3 uid="uid://djprqmldadljv"] 2 | 3 | [ext_resource type="Script" uid="uid://cecio1i3cyhkw" path="res://source/common/gameplay/combat/damage_model/damage_model_resource.gd" id="1_i54cy"] 4 | 5 | [resource] 6 | script = ExtResource("1_i54cy") 7 | layers_order = ["Armor", "Shield", "Health"] 8 | armor_k = 100.0 9 | overheal_to_shield = true 10 | metadata/_custom_type_script = "uid://cecio1i3cyhkw" 11 | metadata/slug = &"DamageModelResource" 12 | metadata/id = 2 13 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/damage_model/damage_model_resource.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cecio1i3cyhkw 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/effect_spec.gd: -------------------------------------------------------------------------------- 1 | class_name EffectSpec 2 | extends Resource 3 | 4 | 5 | @export var tags: PackedStringArray = [] 6 | 7 | var magnitudes: Dictionary[StringName, float] = {} 8 | var ignore_layers: PackedStringArray = [] 9 | var meta: Dictionary = {} 10 | 11 | 12 | static func damage(amount: float, _tags: PackedStringArray = [], _meta: Dictionary = {}) -> EffectSpec: 13 | var s: EffectSpec = EffectSpec.new() 14 | s.tags = _tags 15 | s.magnitudes[StringName("damage")] = amount 16 | s.meta = _meta 17 | return s 18 | 19 | 20 | static func heal(amount: float, _tags: PackedStringArray = [], _meta: Dictionary = {}) -> EffectSpec: 21 | var s: EffectSpec = EffectSpec.new() 22 | s.tags = _tags 23 | s.magnitudes[StringName("heal")] = amount 24 | s.meta = _meta 25 | return s 26 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/effect_spec.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b7vlsixlfp336 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_effect/gameplay_effect.gd.uid: -------------------------------------------------------------------------------- 1 | uid://chp0417yx5dgc 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_effect/resources/burn_effect.gd: -------------------------------------------------------------------------------- 1 | class_name BurnDotEffect 2 | extends GameplayEffect 3 | 4 | @export var dps: float = 10.0 5 | 6 | 7 | func on_tick(asc: AbilitySystemComponent) -> void: 8 | var amt: float = dps * max(0.0, period) 9 | var spec: EffectSpec = EffectSpec.damage(amt, ["Damage.True", "Periodic", "Burn"]) 10 | asc.apply_spec_server(spec, _source) 11 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_effect/resources/burn_effect.gd.uid: -------------------------------------------------------------------------------- 1 | uid://qh30x7gkkbr 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_effect/resources/potion_heal.gd: -------------------------------------------------------------------------------- 1 | class_name PotionHealEffect 2 | extends GameplayEffect 3 | 4 | 5 | var percent_of_max: float = 0.10 6 | var flat_heal: float = 5.0 7 | 8 | 9 | func on_added(asc: AbilitySystemComponent) -> void: 10 | var max_hp: float = asc.get_max(&"health") 11 | var to_heal: float = flat_heal + percent_of_max * max(0.0, max_hp) 12 | 13 | asc.apply_spec_server(EffectSpec.heal(to_heal)) 14 | 15 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_effect/resources/potion_heal.gd.uid: -------------------------------------------------------------------------------- 1 | uid://4v8isgqu1aho 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_effect/resources/thormail.gd: -------------------------------------------------------------------------------- 1 | class_name ThornmailEffect 2 | extends GameplayEffect 3 | 4 | @export var reflect_ratio: float = 0.25 5 | 6 | func on_added(asc: AbilitySystemComponent) -> void: 7 | _sub(asc, &"OnSpecPostApply", &"Damage", 50, &"_on_post") 8 | 9 | func _on_post(ev: GameplayEvent, self_asc: AbilitySystemComponent) -> void: 10 | #print_debug(ev, self_asc) 11 | if ev.canceled or ev.amount <= 0.0: 12 | return 13 | if ev.spec.tags.has("Reflect"): 14 | return 15 | if ev.source == null: 16 | return 17 | 18 | var back: EffectSpec = EffectSpec.damage(ev.amount * reflect_ratio, ["Damage.Magic", "Reflect"]) 19 | ev.source.apply_spec_server(back, self_asc) 20 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_effect/resources/thormail.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dh0cgupjccloe 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_event.gd: -------------------------------------------------------------------------------- 1 | class_name GameplayEvent 2 | extends RefCounted 3 | 4 | 5 | var spec: EffectSpec 6 | var source: AbilitySystemComponent = null 7 | var target: AbilitySystemComponent = null 8 | var amount: float = 0.0 9 | var canceled: bool = false 10 | 11 | 12 | func mod_mul(f: float) -> void: amount *= f 13 | func mod_add(x: float) -> void: amount += x 14 | func cancel() -> void: canceled = true 15 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_event.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cp23kixn1btxi 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_resource/fury_resource.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b250jcjfkgxxo 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_resource/gameplay_resource.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c2t24masktugg 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_resource/health_cost_resource.gd.uid: -------------------------------------------------------------------------------- 1 | uid://khvtrc5k3kkf 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/gameplay_resource/mana_resource.gd.uid: -------------------------------------------------------------------------------- 1 | uid://blno18cqfqahh 2 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/team/team_component.gd: -------------------------------------------------------------------------------- 1 | class_name Team 2 | 3 | 4 | var team_id: int 5 | var team_name: String 6 | var team_color: Color 7 | 8 | 9 | func _init(_team_id: int, _team_name: String, _team_color: Color) -> void: 10 | team_id = _team_id 11 | team_name = _team_name 12 | team_color = _team_color 13 | -------------------------------------------------------------------------------- /source/common/gameplay/combat/team/team_component.gd.uid: -------------------------------------------------------------------------------- 1 | uid://brcoya3qgadjt 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/consumable_item.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bprsise4rcsak 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/gear_item.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dnmtdktay2df6 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bkat7yo0vssli 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item_slot/item_slot.gd: -------------------------------------------------------------------------------- 1 | class_name ItemSlot 2 | extends Resource 3 | 4 | 5 | # &"Weapon", &"Helmet", ... 6 | ## Should be constant, never changed like an unique identifier. 7 | @export var key: StringName 8 | 9 | ## Can be translated, means to be used in UI. 10 | @export var display_name: String 11 | 12 | @export var unlock_rule: SlotUnlockRule 13 | 14 | ## Option icon for UI 15 | @export var icon: Texture2D 16 | 17 | ## Avoid keeping runtime flag on a resource, may move it later. 18 | var unlocked: bool = false 19 | 20 | 21 | func is_unlocked_for(player: PlayerResource) -> bool: 22 | return unlock_rule and unlock_rule.is_unlocked(player) 23 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item_slot/item_slot.gd.uid: -------------------------------------------------------------------------------- 1 | uid://e40odrowquc8 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item_slot/item_slot_unlock_rule.gd: -------------------------------------------------------------------------------- 1 | class_name SlotUnlockRule 2 | extends Resource 3 | 4 | 5 | enum Kind { 6 | ALWAYS, 7 | PLAYER_LEVEL, 8 | QUEST_COMPLETED, 9 | MANUAL_FLAG 10 | } 11 | 12 | @export var kind: Kind = Kind.ALWAYS 13 | @export var level: int = 0 14 | @export var quest_id: int = 0 15 | @export var flag_key: StringName = &"" 16 | 17 | 18 | func is_unlocked(player: PlayerResource) -> bool: 19 | match kind: 20 | Kind.ALWAYS: return true 21 | Kind.PLAYER_LEVEL: return player.level >= level 22 | # Later ? 23 | #Kind.QUEST_COMPLETED: return player.has_completed_quest(quest_id) 24 | # Later ? 25 | #Kind.MANUAL_FLAG: return player.progress_flags.has(flag_key) 26 | _: return false 27 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item_slot/item_slot_unlock_rule.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b31ll8nrh57dx 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item_slot/slots/helmet.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="ItemSlot" load_steps=4 format=3 uid="uid://dnbj6tmyghec4"] 2 | 3 | [ext_resource type="Script" uid="uid://e40odrowquc8" path="res://source/common/gameplay/items/item_slot/item_slot.gd" id="1_xg0yy"] 4 | [ext_resource type="Script" uid="uid://b31ll8nrh57dx" path="res://source/common/gameplay/items/item_slot/item_slot_unlock_rule.gd" id="2_itos6"] 5 | 6 | [sub_resource type="Resource" id="Resource_0hho8"] 7 | script = ExtResource("2_itos6") 8 | kind = 0 9 | level = 0 10 | quest_id = 0 11 | flag_key = &"" 12 | metadata/_custom_type_script = "uid://b31ll8nrh57dx" 13 | 14 | [resource] 15 | script = ExtResource("1_xg0yy") 16 | key = &"relic" 17 | display_name = "Relic" 18 | unlock_rule = SubResource("Resource_0hho8") 19 | metadata/_custom_type_script = "uid://e40odrowquc8" 20 | metadata/slug = &"helmet" 21 | metadata/id = 4 22 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item_slot/slots/relic.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="ItemSlot" load_steps=4 format=3 uid="uid://dp67jicqi8ovy"] 2 | 3 | [ext_resource type="Script" uid="uid://e40odrowquc8" path="res://source/common/gameplay/items/item_slot/item_slot.gd" id="1_dhxlw"] 4 | [ext_resource type="Script" uid="uid://b31ll8nrh57dx" path="res://source/common/gameplay/items/item_slot/item_slot_unlock_rule.gd" id="2_v4jea"] 5 | 6 | [sub_resource type="Resource" id="Resource_u8pqf"] 7 | script = ExtResource("2_v4jea") 8 | kind = 1 9 | level = 10 10 | quest_id = 0 11 | flag_key = &"" 12 | metadata/_custom_type_script = "uid://b31ll8nrh57dx" 13 | 14 | [resource] 15 | script = ExtResource("1_dhxlw") 16 | key = &"relic" 17 | display_name = "Relic" 18 | unlock_rule = SubResource("Resource_u8pqf") 19 | metadata/_custom_type_script = "uid://e40odrowquc8" 20 | metadata/slug = &"relic" 21 | metadata/id = 5 22 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item_slot/slots/ring.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="ItemSlot" load_steps=4 format=3 uid="uid://cdrd3x2ugfrev"] 2 | 3 | [ext_resource type="Script" uid="uid://e40odrowquc8" path="res://source/common/gameplay/items/item_slot/item_slot.gd" id="1_8gb5j"] 4 | [ext_resource type="Script" uid="uid://b31ll8nrh57dx" path="res://source/common/gameplay/items/item_slot/item_slot_unlock_rule.gd" id="2_3qvo8"] 5 | 6 | [sub_resource type="Resource" id="Resource_kheba"] 7 | script = ExtResource("2_3qvo8") 8 | kind = 1 9 | level = 5 10 | quest_id = 0 11 | flag_key = &"" 12 | metadata/_custom_type_script = "uid://b31ll8nrh57dx" 13 | 14 | [resource] 15 | script = ExtResource("1_8gb5j") 16 | key = &"ring" 17 | display_name = "Ring" 18 | unlock_rule = SubResource("Resource_kheba") 19 | metadata/_custom_type_script = "uid://e40odrowquc8" 20 | metadata/slug = &"ring" 21 | metadata/id = 6 22 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item_slot/slots/torso.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="ItemSlot" load_steps=4 format=3 uid="uid://wi13k03tseev"] 2 | 3 | [ext_resource type="Script" uid="uid://e40odrowquc8" path="res://source/common/gameplay/items/item_slot/item_slot.gd" id="1_d5xem"] 4 | [ext_resource type="Script" uid="uid://b31ll8nrh57dx" path="res://source/common/gameplay/items/item_slot/item_slot_unlock_rule.gd" id="2_bbfj2"] 5 | 6 | [sub_resource type="Resource" id="Resource_jrgqs"] 7 | script = ExtResource("2_bbfj2") 8 | kind = 0 9 | level = 0 10 | quest_id = 0 11 | flag_key = &"" 12 | metadata/_custom_type_script = "uid://b31ll8nrh57dx" 13 | 14 | [resource] 15 | script = ExtResource("1_d5xem") 16 | key = &"torso" 17 | display_name = "Torso" 18 | unlock_rule = SubResource("Resource_jrgqs") 19 | metadata/_custom_type_script = "uid://e40odrowquc8" 20 | metadata/slug = &"torso" 21 | metadata/id = 7 22 | -------------------------------------------------------------------------------- /source/common/gameplay/items/item_slot/slots/weapon.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="ItemSlot" load_steps=4 format=3 uid="uid://qav4p12rsbn3"] 2 | 3 | [ext_resource type="Script" uid="uid://e40odrowquc8" path="res://source/common/gameplay/items/item_slot/item_slot.gd" id="1_0mlcx"] 4 | [ext_resource type="Script" uid="uid://b31ll8nrh57dx" path="res://source/common/gameplay/items/item_slot/item_slot_unlock_rule.gd" id="2_42bjp"] 5 | 6 | [sub_resource type="Resource" id="Resource_r4nvk"] 7 | script = ExtResource("2_42bjp") 8 | kind = 0 9 | level = 0 10 | quest_id = 0 11 | flag_key = &"" 12 | metadata/_custom_type_script = "uid://b31ll8nrh57dx" 13 | 14 | [resource] 15 | script = ExtResource("1_0mlcx") 16 | key = &"weapon" 17 | display_name = "Weapon" 18 | unlock_rule = SubResource("Resource_r4nvk") 19 | metadata/_custom_type_script = "uid://e40odrowquc8" 20 | metadata/slug = &"weapon" 21 | metadata/id = 8 22 | -------------------------------------------------------------------------------- /source/common/gameplay/items/material_item.gd: -------------------------------------------------------------------------------- 1 | class_name MaterialItem 2 | extends Item 3 | # Pure data item for crafting; no runtime hooks needed (not yet?). 4 | # Keep recipes & crafting logic elsewhere. 5 | -------------------------------------------------------------------------------- /source/common/gameplay/items/material_item.gd.uid: -------------------------------------------------------------------------------- 1 | uid://nsr1timk430j 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/materials/bone.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="MaterialItem" load_steps=3 format=3 uid="uid://bme5xgselkbng"] 2 | 3 | [ext_resource type="Script" uid="uid://nsr1timk430j" path="res://source/common/gameplay/items/material_item.gd" id="1_38lmc"] 4 | [ext_resource type="Texture2D" uid="uid://dtvatbrsvpnpe" path="res://assets/sprites/items/icons/Icon271.png" id="1_t2ilm"] 5 | 6 | [resource] 7 | script = ExtResource("1_38lmc") 8 | item_name = &"ItemDefault" 9 | item_icon = ExtResource("1_t2ilm") 10 | description = "A dark magical boned collected from evil skeletons." 11 | can_trade = false 12 | can_sell = false 13 | minimum_price = 0 14 | stack_limit = 0 15 | tags = [] 16 | metadata/_custom_type_script = "uid://nsr1timk430j" 17 | metadata/slug = &"bone" 18 | metadata/id = 4 19 | -------------------------------------------------------------------------------- /source/common/gameplay/items/quest_item.gd: -------------------------------------------------------------------------------- 1 | class_name QuestItem 2 | extends Item 3 | 4 | @export var quest_id: int = 0 5 | @export var auto_bind: bool = true 6 | 7 | 8 | func _init() -> void: 9 | can_trade = false 10 | can_sell = false 11 | stack_limit = 1 12 | #inventory_tab = Item.InventoryTab.OTHER 13 | -------------------------------------------------------------------------------- /source/common/gameplay/items/quest_item.gd.uid: -------------------------------------------------------------------------------- 1 | uid://coakbfwkir3xb 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapon_item.gd: -------------------------------------------------------------------------------- 1 | class_name WeaponItem 2 | extends GearItem 3 | 4 | 5 | @export var scene: PackedScene 6 | @export var second_hand: PackedScene 7 | 8 | 9 | func on_equip(character: Character) -> void: 10 | super.on_equip(character) 11 | var weapon: Weapon = scene.instantiate() 12 | weapon.character = character 13 | character.equipment_component._mounted[slot.key] = weapon 14 | character.right_hand_spot.add_child(weapon) 15 | if second_hand: 16 | var seond_hand_weapon: Weapon = second_hand.instantiate() 17 | seond_hand_weapon.character = character 18 | character.left_hand_spot.add_child(seond_hand_weapon) 19 | else: 20 | if character.left_hand_spot.get_child_count(): 21 | character.left_hand_spot.remove_child(character.left_hand_spot.get_child(0)) 22 | 23 | 24 | func on_unequip(character: Character) -> void: 25 | super.on_unequip(character) 26 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapon_item.gd.uid: -------------------------------------------------------------------------------- 1 | uid://5hk0gl5ng64h 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/bow/arrow.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c2f126nxuonb3 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/bow/arrow.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=3 uid="uid://cckkklpa17vo"] 2 | 3 | [ext_resource type="Script" uid="uid://c2f126nxuonb3" path="res://source/common/gameplay/items/weapons/bow/arrow.gd" id="1_ko7y3"] 4 | [ext_resource type="Texture2D" uid="uid://bogvbnwhxp5ej" path="res://assets/sprites/items/weapons/wood/wood.png" id="2_v0cpe"] 5 | 6 | [sub_resource type="RectangleShape2D" id="RectangleShape2D_ko7y3"] 7 | size = Vector2(16, 6) 8 | 9 | [node name="Arrow" type="Area2D"] 10 | script = ExtResource("1_ko7y3") 11 | 12 | [node name="WeaponSprite" type="Sprite2D" parent="."] 13 | texture = ExtResource("2_v0cpe") 14 | region_enabled = true 15 | region_rect = Rect2(32, 0, 16, 16) 16 | 17 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 18 | position = Vector2(0, -1) 19 | shape = SubResource("RectangleShape2D_ko7y3") 20 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/bow/wooden_bow.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c7ykw8u3nncil 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/bow/woooden_arrow.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://c8ips7xp2ycic"] 2 | 3 | [ext_resource type="PackedScene" uid="uid://64u3mmswdrma" path="res://source/common/gameplay/items/weapons/weapon.tscn" id="1_4mr15"] 4 | [ext_resource type="Texture2D" uid="uid://bogvbnwhxp5ej" path="res://assets/sprites/items/weapons/wood/wood.png" id="2_x105q"] 5 | 6 | [node name="WoodenArrow" instance=ExtResource("1_4mr15")] 7 | 8 | [node name="WeaponSprite" parent="." index="0"] 9 | rotation = -1.5708 10 | texture = ExtResource("2_x105q") 11 | offset = Vector2(1, 1) 12 | flip_h = false 13 | region_rect = Rect2(32, 0, 16, 16) 14 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/dcadrius/test_bow.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://bmxx08wmoehxn"] 2 | 3 | [ext_resource type="Script" uid="uid://bnq3ka3xd6gme" path="res://source/common/gameplay/items/weapons/dcadrius/weapon_data.gd" id="1_fpt0w"] 4 | [ext_resource type="Texture2D" uid="uid://bogvbnwhxp5ej" path="res://assets/sprites/items/weapons/wood/wood.png" id="2_bp8d6"] 5 | 6 | [sub_resource type="AtlasTexture" id="AtlasTexture_k2b6y"] 7 | atlas = ExtResource("2_bp8d6") 8 | region = Rect2(48, 48, 16, 32) 9 | 10 | [resource] 11 | script = ExtResource("1_fpt0w") 12 | weapon_sprite = SubResource("AtlasTexture_k2b6y") 13 | flip_sprite = false 14 | origin_point = Vector2(-4, 0) 15 | class_type = 0 16 | metadata/slug = &"test_bow" 17 | metadata/id = 10 18 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/dcadrius/test_sword.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://b8lxlav7qtxj7"] 2 | 3 | [ext_resource type="Script" uid="uid://bnq3ka3xd6gme" path="res://source/common/gameplay/items/weapons/dcadrius/weapon_data.gd" id="1_scht1"] 4 | [ext_resource type="Texture2D" uid="uid://bl4x3jlsvt3jq" path="res://assets/sprites/items/weapons/bone/bone.png" id="2_7wi12"] 5 | 6 | [sub_resource type="AtlasTexture" id="AtlasTexture_aqxmx"] 7 | atlas = ExtResource("2_7wi12") 8 | region = Rect2(0, 0, 16, 48) 9 | 10 | [resource] 11 | script = ExtResource("1_scht1") 12 | weapon_sprite = SubResource("AtlasTexture_aqxmx") 13 | flip_sprite = true 14 | origin_point = Vector2(0, -15) 15 | class_type = 0 16 | metadata/slug = &"test_sword" 17 | metadata/id = 11 18 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/dcadrius/test_sword2.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="WeaponData" load_steps=4 format=3 uid="uid://hq6wrkb1cgla"] 2 | 3 | [ext_resource type="Script" uid="uid://bnq3ka3xd6gme" path="res://source/common/gameplay/items/weapons/dcadrius/weapon_data.gd" id="1_3s1wa"] 4 | [ext_resource type="Texture2D" uid="uid://bogvbnwhxp5ej" path="res://assets/sprites/items/weapons/wood/wood.png" id="2_euaqe"] 5 | 6 | [sub_resource type="AtlasTexture" id="AtlasTexture_aqxmx"] 7 | atlas = ExtResource("2_euaqe") 8 | region = Rect2(0, 0, 16, 48) 9 | 10 | [resource] 11 | script = ExtResource("1_3s1wa") 12 | weapon_sprite = SubResource("AtlasTexture_aqxmx") 13 | flip_sprite = true 14 | origin_point = Vector2(0, -15) 15 | class_type = 0 16 | metadata/slug = &"test_sword2" 17 | metadata/id = 12 18 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/dcadrius/weapon_data.gd: -------------------------------------------------------------------------------- 1 | @icon("res://assets/node_icons/color/icon_weapon.png") 2 | class_name WeaponData 3 | extends Resource 4 | 5 | enum weapon_class { 6 | Sword, 7 | Dagger, 8 | Staff, 9 | Bow 10 | } 11 | @export_group("Visuals") 12 | @export var weapon_sprite: Texture 13 | @export var flip_sprite: bool = false 14 | @export var origin_point: Vector2 = Vector2.ZERO 15 | @export_group("Data") 16 | @export var class_type: weapon_class = weapon_class.Sword 17 | @export var animation_library: AnimationLibrary 18 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/dcadrius/weapon_data.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bnq3ka3xd6gme 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/empty_hand/empty_hand.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://dslec2qgwwig2"] 2 | 3 | [ext_resource type="PackedScene" uid="uid://64u3mmswdrma" path="res://source/common/gameplay/items/weapons/weapon.tscn" id="1_2tdu7"] 4 | 5 | [node name="EmptyHand" instance=ExtResource("1_2tdu7")] 6 | position = Vector2(0, 0) 7 | 8 | [node name="WeaponSprite" parent="." index="0"] 9 | visible = false 10 | 11 | [node name="Hand" parent="." index="1"] 12 | region_rect = Rect2(16, 0, 16, 16) 13 | status = 0 14 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/sword/sword.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ct0u1fvddy3aa 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/sword/sword.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=3 uid="uid://cq4pqfg3tnqxh"] 2 | 3 | [ext_resource type="PackedScene" uid="uid://64u3mmswdrma" path="res://source/common/gameplay/items/weapons/weapon.tscn" id="1_6bj2e"] 4 | [ext_resource type="Script" uid="uid://ct0u1fvddy3aa" path="res://source/common/gameplay/items/weapons/sword/sword.gd" id="2_gih3n"] 5 | [ext_resource type="AnimationLibrary" uid="uid://rbv6cl1ldcc7" path="res://source/common/gameplay/items/weapons/sword/sword_animations.tres" id="3_xqg3f"] 6 | 7 | [node name="Sword" instance=ExtResource("1_6bj2e")] 8 | script = ExtResource("2_gih3n") 9 | animation_libraries = Dictionary[StringName, AnimationLibrary]({ 10 | &"weapon": ExtResource("3_xqg3f") 11 | }) 12 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/weapon.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cb37imj7qsy82 2 | -------------------------------------------------------------------------------- /source/common/gameplay/items/weapons/weapon.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=3 uid="uid://64u3mmswdrma"] 2 | 3 | [ext_resource type="Script" uid="uid://cb37imj7qsy82" path="res://source/common/gameplay/items/weapons/weapon.gd" id="1_aiw52"] 4 | [ext_resource type="Texture2D" uid="uid://bl4x3jlsvt3jq" path="res://assets/sprites/items/weapons/bone/bone.png" id="2_33udu"] 5 | [ext_resource type="PackedScene" uid="uid://c4mlxpbwyc1tw" path="res://source/common/gameplay/characters/components/hand/hand.tscn" id="3_ydnw2"] 6 | 7 | [node name="Weapon" type="Node2D"] 8 | script = ExtResource("1_aiw52") 9 | 10 | [node name="WeaponSprite" type="Sprite2D" parent="."] 11 | texture = ExtResource("2_33udu") 12 | offset = Vector2(0, -15) 13 | flip_h = true 14 | region_enabled = true 15 | region_rect = Rect2(0, 0, 16, 48) 16 | 17 | [node name="Hand" parent="." instance=ExtResource("3_ydnw2")] 18 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/components/interaction_areas/interaction_area.gd: -------------------------------------------------------------------------------- 1 | @icon("res://assets/node_icons/blue/icon_grid.png") 2 | class_name InteractionArea 3 | extends Area2D 4 | ## Base class of all interactible areas. Can be a collectible, a warper, a teleporter etc. 5 | 6 | signal player_entered_interaction_area(player: Player, interaction_area: InteractionArea) 7 | 8 | 9 | func _init() -> void: 10 | body_entered.connect(_on_body_entered) 11 | 12 | 13 | func _on_body_entered(body: Node2D) -> void: 14 | if body is Player: 15 | player_entered_interaction_area.emit(body, self) 16 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/components/interaction_areas/interaction_area.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b3r6vglj3doxu 2 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/components/interaction_areas/interaction_area.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://d0rhh01b2jj7f"] 2 | 3 | [ext_resource type="Script" uid="uid://b3r6vglj3doxu" path="res://source/common/gameplay/maps/components/interaction_areas/interaction_area.gd" id="1_0ligj"] 4 | 5 | [node name="InteractionArea" type="Area2D"] 6 | script = ExtResource("1_0ligj") 7 | 8 | [connection signal="body_entered" from="." to="." method="_on_body_entered"] 9 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/components/interaction_areas/teleporter/teleporter.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dd13qn2chpxp2 2 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/components/interaction_areas/teleporter/teleporter.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://dbg8y8if4vv5p"] 2 | 3 | [ext_resource type="Script" uid="uid://dd13qn2chpxp2" path="res://source/common/gameplay/maps/components/interaction_areas/teleporter/teleporter.gd" id="1_ctuaa"] 4 | 5 | [sub_resource type="RectangleShape2D" id="RectangleShape2D_atxum"] 6 | size = Vector2(16, 16) 7 | 8 | [node name="Teleporter" type="Area2D"] 9 | z_index = 10 10 | script = ExtResource("1_ctuaa") 11 | 12 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 13 | shape = SubResource("RectangleShape2D_atxum") 14 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/components/interaction_areas/warper/warper.gd: -------------------------------------------------------------------------------- 1 | @icon("res://assets/node_icons/blue/icon_door.png") 2 | class_name Warper 3 | extends InteractionArea 4 | 5 | 6 | @export var target_instance: InstanceResource 7 | @export var warper_id: int = 0 8 | @export var target_id: int = 0 9 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/components/interaction_areas/warper/warper.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cloyd4stl0hfe 2 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/components/interaction_areas/warper/warper.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://b2ckixon7ryh6"] 2 | 3 | [ext_resource type="Script" uid="uid://cloyd4stl0hfe" path="res://source/common/gameplay/maps/components/interaction_areas/warper/warper.gd" id="1_w00al"] 4 | 5 | [sub_resource type="RectangleShape2D" id="RectangleShape2D_5fu4t"] 6 | 7 | [node name="Warper" type="Area2D"] 8 | monitorable = false 9 | script = ExtResource("1_w00al") 10 | 11 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 12 | shape = SubResource("RectangleShape2D_5fu4t") 13 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/dungeon.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://ditnocjiqmbsu"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_yll11"] 4 | 5 | [resource] 6 | script = ExtResource("1_yll11") 7 | instance_name = &"Dungeon" 8 | map_path = "uid://bvpi2a6j7k8s0" 9 | load_at_startup = false 10 | metadata/slug = &"dungeon" 11 | metadata/id = 4 12 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/dungeon/dungeon.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://ditnocjiqmbsu"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_yll11"] 4 | 5 | [resource] 6 | script = ExtResource("1_yll11") 7 | instance_name = &"Dungeon" 8 | map_path = "uid://bvpi2a6j7k8s0" 9 | load_at_startup = false 10 | metadata/slug = &"dungeon" 11 | metadata/id = 4 12 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/dungeon/dungeon_entrance.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://4utja3eou6l6"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_n2sgl"] 4 | 5 | [resource] 6 | script = ExtResource("1_n2sgl") 7 | instance_name = &"DungeonEntrance" 8 | map_path = "uid://5ke1s1ydu7ty" 9 | load_at_startup = false 10 | metadata/slug = &"dungeon_entrance" 11 | metadata/id = 5 12 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/dungeon_entrance.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://4utja3eou6l6"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_n2sgl"] 4 | 5 | [resource] 6 | script = ExtResource("1_n2sgl") 7 | instance_name = &"DungeonEntrance" 8 | map_path = "uid://5ke1s1ydu7ty" 9 | load_at_startup = false 10 | metadata/slug = &"dungeon_entrance" 11 | metadata/id = 5 12 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/guild_house/guild_house.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://c0xqjh15bmdkm"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_2uix5"] 4 | 5 | [resource] 6 | script = ExtResource("1_2uix5") 7 | instance_name = &"GuildHouse" 8 | map_path = "uid://d3td3u4jic7j6" 9 | load_at_startup = false 10 | metadata/_custom_type_script = "uid://deqjrbn7hm53u" 11 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/guild_outpost_base/guild_outpost.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://ci3xj57ys32t7"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_hi3h0"] 4 | 5 | [resource] 6 | script = ExtResource("1_hi3h0") 7 | instance_name = &"GuildOutpost" 8 | map_path = "uid://c0le2suyjl2g7" 9 | load_at_startup = false 10 | metadata/_custom_type_script = "uid://deqjrbn7hm53u" 11 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/mining_cave/cave_area1.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://iuqxmo63ipnn"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_dvqs5"] 4 | 5 | [resource] 6 | script = ExtResource("1_dvqs5") 7 | instance_name = &"CaveArea1" 8 | map_path = "uid://wkvp6lqnmgx5" 9 | load_at_startup = false 10 | metadata/_custom_type_script = "uid://deqjrbn7hm53u" 11 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/overworld.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://doc0umc2oovri"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_5ydet"] 4 | 5 | [resource] 6 | script = ExtResource("1_5ydet") 7 | instance_name = &"Overworld" 8 | map_path = "res://source/common/gameplay/maps/maps/overworld.tscn" 9 | load_at_startup = true 10 | metadata/slug = &"overworld" 11 | metadata/id = 6 12 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/spar_house/spar_house.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://b832bjouifd56"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_hlkax"] 4 | 5 | [resource] 6 | script = ExtResource("1_hlkax") 7 | instance_name = &"SparHouse" 8 | map_path = "uid://c0lsanpe40uo0" 9 | load_at_startup = false 10 | metadata/_custom_type_script = "uid://deqjrbn7hm53u" 11 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/starter_shop/starter_shop.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://csp4j7lr4famg"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_eo6dn"] 4 | 5 | [resource] 6 | script = ExtResource("1_eo6dn") 7 | instance_name = &"Shop" 8 | map_path = "uid://bhorfmdpw4rq3" 9 | load_at_startup = false 10 | metadata/_custom_type_script = "uid://deqjrbn7hm53u" 11 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_collection/trade_house/trade_house.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="InstanceResource" load_steps=2 format=3 uid="uid://bqx2riy2f440w"] 2 | 3 | [ext_resource type="Script" uid="uid://deqjrbn7hm53u" path="res://source/common/gameplay/maps/instance/instance_resource.gd" id="1_1h1k1"] 4 | 5 | [resource] 6 | script = ExtResource("1_1h1k1") 7 | instance_name = &"TradeHouse" 8 | map_path = "uid://be82v7hsu1yi2" 9 | load_at_startup = false 10 | metadata/_custom_type_script = "uid://deqjrbn7hm53u" 11 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_resource.gd: -------------------------------------------------------------------------------- 1 | class_name InstanceResource 2 | extends Resource 3 | 4 | 5 | @export var instance_name: StringName 6 | @export_file("*.tscn") var map_path: String 7 | @export var load_at_startup: bool = false 8 | 9 | var loading_instances: Array 10 | var charged_instances: Array[ServerInstance] 11 | 12 | 13 | @warning_ignore("unused_parameter") 14 | func can_join_instance(player: Player, index: int = -1) -> bool: 15 | return true 16 | 17 | 18 | func get_instance(index: int = -1) -> ServerInstance: 19 | if charged_instances.is_empty() or charged_instances.size() <= index: 20 | return null 21 | return charged_instances[index] 22 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/instance/instance_resource.gd.uid: -------------------------------------------------------------------------------- 1 | uid://deqjrbn7hm53u 2 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/map.gd.uid: -------------------------------------------------------------------------------- 1 | uid://7mbux4mybta0 2 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/maps/guild_spar/spar_house_inside.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://clhv7kagrqam3"] 2 | 3 | [ext_resource type="Script" uid="uid://7mbux4mybta0" path="res://source/common/gameplay/maps/map.gd" id="1_duefv"] 4 | 5 | [node name="Spar_house_inside" type="Node2D"] 6 | script = ExtResource("1_duefv") 7 | metadata/_custom_type_script = "uid://7mbux4mybta0" 8 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/maps/spar_house/spar_house_inside.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://c0lsanpe40uo0"] 2 | 3 | [ext_resource type="Script" uid="uid://7mbux4mybta0" path="res://source/common/gameplay/maps/map.gd" id="1_72o38"] 4 | 5 | [node name="Spar_house_inside" type="Node2D"] 6 | script = ExtResource("1_72o38") 7 | metadata/_custom_type_script = "uid://7mbux4mybta0" 8 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/props/collectibles/coin.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d132hhwqguove 2 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/props/doors/activable_door/activable_door.gd: -------------------------------------------------------------------------------- 1 | extends StaticBody2D 2 | 3 | 4 | @export var door_id: int = 0 5 | 6 | @onready var door_anim: AnimatedSprite2D = $AnimatedSprite2D 7 | @onready var door_collision: CollisionShape2D = $CollisionShape2D 8 | 9 | 10 | func _ready() -> void: 11 | door_anim.play(&"closed") 12 | 13 | 14 | func open_door() -> void: 15 | door_anim.play(&"opening") 16 | door_collision.disabled = true 17 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/props/doors/activable_door/activable_door.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cjqrkmohwgdql 2 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/props/ground_button/ground_button.gd.uid: -------------------------------------------------------------------------------- 1 | uid://wh5map4o52qc 2 | -------------------------------------------------------------------------------- /source/common/gameplay/maps/zone_patch_2d.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ddtm11pnrdkyo 2 | -------------------------------------------------------------------------------- /source/common/main.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bmrprxwywd2oj 2 | -------------------------------------------------------------------------------- /source/common/main.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://vexbi605indu"] 2 | 3 | [ext_resource type="Script" uid="uid://bmrprxwywd2oj" path="res://source/common/main.gd" id="1_gnr3o"] 4 | 5 | [node name="Main" type="Node"] 6 | script = ExtResource("1_gnr3o") 7 | 8 | [node name="ErrorLabel" type="Label" parent="."] 9 | anchors_preset = 8 10 | anchor_left = 0.5 11 | anchor_top = 0.5 12 | anchor_right = 0.5 13 | anchor_bottom = 0.5 14 | offset_left = -20.0 15 | offset_top = -11.5 16 | offset_right = 20.0 17 | offset_bottom = 11.5 18 | grow_horizontal = 2 19 | grow_vertical = 2 20 | text = "You see this label because no valid feature tag was found. 21 | Please check either README.md or common/main.gd for more information." 22 | horizontal_alignment = 1 23 | vertical_alignment = 1 24 | -------------------------------------------------------------------------------- /source/common/network/endpoints/base_multiplayer_endpoint.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ceehsvpysxod8 2 | -------------------------------------------------------------------------------- /source/common/network/gateway_api.gd.uid: -------------------------------------------------------------------------------- 1 | uid://2xupcdx8pavx 2 | -------------------------------------------------------------------------------- /source/common/network/sync/property_cache.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d4nxif5yvfigw 2 | -------------------------------------------------------------------------------- /source/common/network/sync/replicated_props.gd.uid: -------------------------------------------------------------------------------- 1 | uid://wq8klpndipnu 2 | -------------------------------------------------------------------------------- /source/common/network/sync/state_synchronizer.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d1a30n4ktgm71 2 | -------------------------------------------------------------------------------- /source/common/network/sync/state_synchronizer_manager_client.gd.uid: -------------------------------------------------------------------------------- 1 | uid://6g8e62fhjitu 2 | -------------------------------------------------------------------------------- /source/common/network/sync/state_synchronizer_manager_server.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cw1qwe7qjmawv 2 | -------------------------------------------------------------------------------- /source/common/network/utils/sync_utils.gd: -------------------------------------------------------------------------------- 1 | class_name SyncUtils 2 | 3 | 4 | static func roughly_equal(a: Variant, b: Variant) -> bool: 5 | assert(typeof(a) == typeof(b), "Trying to compare different types") 6 | 7 | match typeof(a): 8 | TYPE_FLOAT: 9 | return is_equal_approx(a, b) 10 | TYPE_VECTOR2:#TYPE_VECTOR3 etc. for 3D game 11 | return (a as Vector2).is_equal_approx(b) 12 | _: 13 | return a == b 14 | -------------------------------------------------------------------------------- /source/common/network/utils/sync_utils.gd.uid: -------------------------------------------------------------------------------- 1 | uid://do4ytxvd5htru 2 | -------------------------------------------------------------------------------- /source/common/network/utils/tls_options_utils.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dirs80u4uvapc 2 | -------------------------------------------------------------------------------- /source/common/network/wire.gd: -------------------------------------------------------------------------------- 1 | class_name Wire 2 | 3 | 4 | enum Type { 5 | VARIANT, 6 | BOOL, 7 | U8, U16, U32, U64, 8 | S8, S16, S32, S64, 9 | F16, F32, F64, 10 | STR_UTF8_U16, STR_UTF8_U32, 11 | STR_ASCII_U16, STR_ASCII_U32, 12 | BYTES_U16, BYTES_U32, 13 | VEC2_F32 14 | } 15 | 16 | # U / Unsigned byte 17 | # S / Signed byte 18 | # put_double / f64 / 64 bits 19 | # put_float / f32 / 32 bits / float, single precision 20 | # put_half / f16 / 16 bits/ half, half precision 21 | -------------------------------------------------------------------------------- /source/common/network/wire.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dr4b8g8wxw2bg 2 | -------------------------------------------------------------------------------- /source/common/network/wire_codec.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d36gfss3kn1q2 2 | -------------------------------------------------------------------------------- /source/common/registry/content_index.gd: -------------------------------------------------------------------------------- 1 | class_name ContentIndex 2 | extends Resource 3 | 4 | 5 | @export var content_name: StringName 6 | @export var version: int 7 | @export var next_id: int = 1 8 | ##{ 9 | ## &"slug": &"human_readable, 10 | ## &"id": 123, 11 | ## &"path": &"res://item.tres" or value ? 12 | ##} 13 | ## 14 | @export var entries: Array[Dictionary] 15 | 16 | @export var scan_path: String 17 | @export var filters: PackedStringArray 18 | -------------------------------------------------------------------------------- /source/common/registry/content_index.gd.uid: -------------------------------------------------------------------------------- 1 | uid://0wmtcxri41vp 2 | -------------------------------------------------------------------------------- /source/common/registry/content_registry.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ddfo3eu3rgtko 2 | -------------------------------------------------------------------------------- /source/common/registry/content_registry_hub.gd.uid: -------------------------------------------------------------------------------- 1 | uid://djhp36csl5ao3 2 | -------------------------------------------------------------------------------- /source/common/registry/path_registry.gd.uid: -------------------------------------------------------------------------------- 1 | uid://hsw3c4787kvu 2 | -------------------------------------------------------------------------------- /source/common/utils/anim_utils.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bmx2ncltvma6c 2 | -------------------------------------------------------------------------------- /source/common/utils/cmdline_utils.gd: -------------------------------------------------------------------------------- 1 | class_name CmdlineUtils 2 | 3 | 4 | static func get_parsed_args() -> Dictionary: 5 | var arguments: Dictionary = {} 6 | for argument: String in OS.get_cmdline_args(): 7 | if argument.contains("="): 8 | var key_value := argument.split("=") 9 | arguments[key_value[0].trim_prefix("--")] = key_value[1] 10 | else: 11 | # Options without an argument will be present in the dictionary, 12 | # with the value set to an empty string. 13 | arguments[argument.trim_prefix("--")] = "" 14 | return arguments 15 | -------------------------------------------------------------------------------- /source/common/utils/cmdline_utils.gd.uid: -------------------------------------------------------------------------------- 1 | uid://n1wf1t825rya 2 | -------------------------------------------------------------------------------- /source/common/utils/config_file_utils.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cdr8sdqtr1yq6 2 | -------------------------------------------------------------------------------- /source/common/utils/credentials_utils.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bwr45hjf46dlg 2 | -------------------------------------------------------------------------------- /source/common/utils/editor_scripts/generate_crypto_key.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b52nit56jvoj4 2 | -------------------------------------------------------------------------------- /source/common/utils/file_utils.gd: -------------------------------------------------------------------------------- 1 | class_name FileUtils 2 | 3 | 4 | static func get_all_file_at( 5 | path: String, 6 | pattern: String = "*", 7 | recursive: bool = true 8 | ) -> PackedStringArray: 9 | var result_files: PackedStringArray 10 | var dir: DirAccess = DirAccess.open(path) 11 | 12 | if not dir: 13 | push_error("Failed to open directory at %s with error %s" % [ 14 | path, error_string(DirAccess.get_open_error()) 15 | ]) 16 | return result_files 17 | 18 | dir.list_dir_begin() 19 | var file_name: String = dir.get_next() 20 | 21 | while file_name: 22 | var full_path: String = path.path_join(file_name) 23 | if dir.current_is_dir() and recursive: 24 | result_files += get_all_file_at(full_path) 25 | elif file_name.match(pattern): 26 | result_files.append(full_path) 27 | file_name = dir.get_next() 28 | 29 | dir.list_dir_end() 30 | return result_files 31 | -------------------------------------------------------------------------------- /source/common/utils/file_utils.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dmg6b7mfo0mus 2 | -------------------------------------------------------------------------------- /source/server/gateway/README.md: -------------------------------------------------------------------------------- 1 | ## Gateway 2 | 3 | ./master_gateway_client/ 4 | - Means to communicate with the master server, the orchestrator. 5 | 6 | ./player_gateway_server/ 7 | - Means to communicate with the player with its 'gateway_client.gd'. 8 | -------------------------------------------------------------------------------- /source/server/gateway/gateway_main.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | 4 | func _ready() -> void: 5 | if DisplayServer.get_name() != "headless": 6 | DisplayServer.window_set_title("Gateway Server") 7 | -------------------------------------------------------------------------------- /source/server/gateway/gateway_main.gd.uid: -------------------------------------------------------------------------------- 1 | uid://3snlehf663qv 2 | -------------------------------------------------------------------------------- /source/server/gateway/gateway_main.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=3 uid="uid://bvnp50b85cxif"] 2 | 3 | [ext_resource type="Script" uid="uid://3snlehf663qv" path="res://source/server/gateway/gateway_main.gd" id="1_v0yps"] 4 | [ext_resource type="Script" uid="uid://l075wdufq4jr" path="res://source/server/gateway/master_gateway_client/gateway_manager_client.gd" id="3_m66nj"] 5 | [ext_resource type="Script" uid="uid://bjxnn8cv1untw" path="res://source/server/gateway/http_server.gd" id="5_mufm1"] 6 | 7 | [node name="GatewayMain" type="Node"] 8 | script = ExtResource("1_v0yps") 9 | 10 | [node name="GatewayManagerClient" type="Node" parent="."] 11 | script = ExtResource("3_m66nj") 12 | 13 | [node name="GatewayHTTPServer" type="Node" parent="."] 14 | script = ExtResource("5_mufm1") 15 | -------------------------------------------------------------------------------- /source/server/gateway/http_server.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bjxnn8cv1untw 2 | -------------------------------------------------------------------------------- /source/server/gateway/master_gateway_client/gateway_manager_client.gd.uid: -------------------------------------------------------------------------------- 1 | uid://l075wdufq4jr 2 | -------------------------------------------------------------------------------- /source/server/master/README.md: -------------------------------------------------------------------------------- 1 | ## Master server 2 | 3 | 4 | Right now it has a very limited usefullnes but it does this: 5 | - Lets all gateway and world connect to itself (master server) 6 | - When a player connects to the gateway, the gateway can retrieve the list of available worlds via the server so it doesn't need to know all possible world adresses. 7 | - When a player try to access to a world server, the gateway will ask the master server to fetch him the available informations about the player on this server such as its characters. 8 | - Once the player choose its character on a specific server, a temporary token is generated allowing the client to connect to the target world server. 9 | - Act as the account data base, characters are stored in world servers. 10 | 11 | I'am not sure right now what more it should do. 12 | -------------------------------------------------------------------------------- /source/server/master/account_models/account.gd: -------------------------------------------------------------------------------- 1 | class_name AccountResource 2 | extends Resource 3 | 4 | 5 | @export var id: int 6 | @export var username: String 7 | @export var password: String 8 | 9 | # peer_id = O if not connected 10 | var peer_id: int = 0 11 | 12 | 13 | func init(_id: int, _username: String, _password: String) -> void: 14 | id = _id 15 | username = _username 16 | password = _password 17 | -------------------------------------------------------------------------------- /source/server/master/account_models/account.gd.uid: -------------------------------------------------------------------------------- 1 | uid://620djf1m6nxf 2 | -------------------------------------------------------------------------------- /source/server/master/account_models/account_collection.gd: -------------------------------------------------------------------------------- 1 | class_name AccountResourceCollection 2 | extends Resource 3 | 4 | 5 | @export var collection: Dictionary = {} 6 | 7 | @export var next_account_id: int = 0 8 | #@export var next_player_id: int = 0 9 | 10 | 11 | func get_new_account_id() -> int: 12 | var new_account_id: int = next_account_id 13 | next_account_id += 1 14 | return new_account_id 15 | -------------------------------------------------------------------------------- /source/server/master/account_models/account_collection.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cxrc2yfn6yejc 2 | -------------------------------------------------------------------------------- /source/server/master/components/authentication_manager.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d2cmewfb6gey3 2 | -------------------------------------------------------------------------------- /source/server/master/components/database.gd.uid: -------------------------------------------------------------------------------- 1 | uid://if1byogst5v3 2 | -------------------------------------------------------------------------------- /source/server/master/components/master_gateway_server/master_gateway_server.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dx6y8xcifn6f8 2 | -------------------------------------------------------------------------------- /source/server/master/components/master_world_server/master_world_server.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bcbl4b333f5l5 2 | -------------------------------------------------------------------------------- /source/server/master/master_main.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | 4 | func _ready() -> void: 5 | if DisplayServer.get_name() != "headless": 6 | DisplayServer.window_set_title("Master Server") 7 | -------------------------------------------------------------------------------- /source/server/master/master_main.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bvryexdli570a 2 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/chat_command.gd: -------------------------------------------------------------------------------- 1 | class_name ChatCommand 2 | extends RefCounted 3 | 4 | 5 | var command_name: String = "" 6 | var command_alias: PackedStringArray = [] 7 | var command_priority: int = 0 8 | 9 | 10 | @warning_ignore("unused_parameter") 11 | func execute(args: PackedStringArray, peer_id: int, server_instance: ServerInstance) -> String: 12 | return "Unknown command." 13 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/chat_command.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ldi4mplp3mk8 2 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/getid_command.gd: -------------------------------------------------------------------------------- 1 | extends ChatCommand 2 | 3 | 4 | func _init(): 5 | command_name = 'getid' 6 | command_priority = 0 7 | 8 | 9 | func execute(args: PackedStringArray, peer_id: int, server_instance: ServerInstance) -> String: 10 | if args.size() == 2: 11 | match args[1]: 12 | "network": 13 | return str(peer_id) 14 | "character": 15 | return str(server_instance.world_server.connected_players[peer_id].player_id) 16 | "instance": 17 | return server_instance.instance_resource.instance_name 18 | return "Invalid command format: /getid network/character/instance" 19 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/getid_command.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bp8n6kdvqc62s 2 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/heal_command.gd: -------------------------------------------------------------------------------- 1 | extends ChatCommand 2 | 3 | 4 | func _init(): 5 | command_name = 'heal' 6 | command_priority = 2 7 | 8 | 9 | func execute(args: PackedStringArray, peer_id: int, server_instance: ServerInstance) -> String: 10 | if args.size() != 3: 11 | return "Invalid command format: /heal " 12 | 13 | var target: int = peer_id if args[1] == "self" else args[1].to_int() 14 | var amount: int = args[2].to_int() 15 | 16 | if server_instance.get_player(target) == null: 17 | return "Target not found." 18 | 19 | var error: bool = server_instance.set_player_attr_current(target, &"health", amount) 20 | return ("/heal %s %s" % [str(target), str(amount)]) + (" successful" if error else " failed") 21 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/heal_command.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cjpjeymk604i2 2 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/help_command.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c4c4usbt6n8o6 2 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/selfadmin_command.gd: -------------------------------------------------------------------------------- 1 | extends ChatCommand 2 | 3 | 4 | func _init(): 5 | command_name = 'selfadmin' 6 | command_priority = 2 7 | 8 | # For debugging 9 | if OS.has_feature("debug") or OS.has_feature("editor"): 10 | command_priority = 0 11 | 12 | # Only running in debug mode for now. 13 | func execute(_args: PackedStringArray, peer_id: int, server_instance: ServerInstance) -> String: 14 | server_instance.world_server.connected_players[peer_id].server_roles["senior_admin"] = {} 15 | return "Yes admin" 16 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/selfadmin_command.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d13htpfxs2h37 2 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/set_command.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d3pnmjwxyk381 2 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/size_command.gd: -------------------------------------------------------------------------------- 1 | extends ChatCommand 2 | 3 | 4 | func _init(): 5 | command_name = 'size' 6 | command_priority = 2 7 | 8 | 9 | func execute(args: PackedStringArray, peer_id: int, server_instance: ServerInstance) -> String: 10 | if args.size() != 3: 11 | return "Invalid command format: /size " 12 | 13 | var target: int = peer_id if args[1] == "self" else args[1].to_int() 14 | var amount: int = clampi(args[2].to_int(), 1, 4) 15 | 16 | if server_instance.get_player(target) == null: 17 | return "Target not found." 18 | 19 | var ok := server_instance.set_player_path_value(target, ^":scale", Vector2(amount, amount)) 20 | return ("/size %s %s" % [str(target), str(amount)]) + (" successful" if ok else " failed") 21 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/size_command.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bx8wcoso3dly5 2 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/toogle_role_command.gd: -------------------------------------------------------------------------------- 1 | extends ChatCommand 2 | 3 | 4 | func _init(): 5 | command_name = 'toggle' 6 | command_priority = 2 7 | 8 | 9 | func execute(args: PackedStringArray, peer_id: int, server_instance: ServerInstance) -> String: 10 | if not args.size() == 3: 11 | return "Format " 12 | var player: PlayerResource = server_instance.world_server.connected_players.get(peer_id, null) 13 | if not player: 14 | return "Unknown peer." 15 | if player.server_roles.has(args[1]): 16 | player.server_roles["active"] = true if args[2] == "active" else false 17 | return "Your role state has been changed." 18 | return "You don't have this role." 19 | -------------------------------------------------------------------------------- /source/server/world/components/chat_command/global_commands/toogle_role_command.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b4gf16us3avgp 2 | -------------------------------------------------------------------------------- /source/server/world/components/console.gd.uid: -------------------------------------------------------------------------------- 1 | uid://32l8t618k7dp 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/action.perform.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | var player: Player = instance.players_by_peer_id.get(peer_id, null) 10 | if not player: 11 | return {} 12 | 13 | var action_index: int = args.get("i", 0) 14 | var action_direction: Vector2 = args.get("d", Vector2.ZERO) 15 | if player.equipment_component.can_use(&"weapon", action_index): 16 | player.equipment_component._mounted[&"weapon"].perform_action(action_index, action_direction) 17 | instance.propagate_rpc(instance.data_push.bind( 18 | &"action.perform", 19 | {"i": action_index, "d": action_direction, "p": peer_id} 20 | )) 21 | return {} 22 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/action.perform.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bg12pp1ko4m3f 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/attribute.get.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | var player: Player = instance.players_by_peer_id.get(peer_id, null) 10 | if not player: 11 | return {} 12 | return { 13 | "points": player.player_resource.available_attributes_points, 14 | "attr": player.player_resource.attributes 15 | } 16 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/attribute.get.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cfgkqigw48w7o 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/attribute.spend.gd.uid: -------------------------------------------------------------------------------- 1 | uid://rmtnvx5dw5qp 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/chat.command.exec.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cqcjdfq5hft3k 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/chat.message.send.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | var message: Dictionary = { 10 | "text": args.get("text", ""), 11 | "channel": args.get("channel", 0), 12 | "name": instance.players_by_peer_id[peer_id].player_resource.display_name, 13 | "id": peer_id 14 | #"time": Time.get_ 15 | } 16 | instance.propagate_rpc(instance.data_push.bind(&"chat.message", message)) 17 | return {} # ACK later #{"error": 0} 18 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/chat.message.send.gd.uid: -------------------------------------------------------------------------------- 1 | uid://0almmjrgh4ie 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/data_request_handler.gd: -------------------------------------------------------------------------------- 1 | class_name DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | return {} 10 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/data_request_handler.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ojp2vqpi7mmm 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/guild.create.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c1nnsdk8uda5s 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/guild.get.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | var to_get: String = args.get("q", "") 10 | if to_get.is_empty(): 11 | return {} 12 | var guild: Guild = instance.world_server.database.player_data.guilds.get(to_get) 13 | var guild_info: Dictionary 14 | if guild: 15 | guild_info = {"name": guild.guild_name, "size": guild.members.size()} 16 | return guild_info 17 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/guild.get.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cjqdbfj0lalay 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/guild.quit.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | var player_resource: PlayerResource = instance.world_server.connected_players.get(peer_id, null) 10 | if not player_resource or not player_resource.guild: 11 | return {} 12 | 13 | player_resource.guild.remove_member(player_resource.player_id) 14 | player_resource.guild = null 15 | 16 | return {} 17 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/guild.quit.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dr72dr07b5t51 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/guild.search.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | const MAX_RESULT: int = 10 10 | var i: int = 0 11 | var result: Dictionary 12 | var guild_names: PackedStringArray = instance.world_server.database.player_data.guilds.keys() 13 | var to_search: String = args.get("q", "") 14 | for guild_name: String in guild_names: 15 | if guild_name.to_lower().contains(to_search): 16 | result[guild_name] = 0 17 | if i >= MAX_RESULT: 18 | break 19 | i += 1 20 | return result 21 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/guild.search.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cd68w2h8cfpq 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/guild.self.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | var player: Player = instance.players_by_peer_id.get(peer_id) 10 | if not player: 11 | return {} 12 | 13 | var guild: Guild = player.player_resource.guild 14 | var data: Dictionary 15 | if not guild: 16 | return {} 17 | data = {"name": guild.guild_name} 18 | return data 19 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/guild.self.gd.uid: -------------------------------------------------------------------------------- 1 | uid://caon7j6k57x08 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/inventory.get.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | return instance.players_by_peer_id[peer_id].player_resource.inventory 10 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/inventory.get.gd.uid: -------------------------------------------------------------------------------- 1 | uid://mcj2qur7rdbe 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/item.equip.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | var item_id: int = args.get("id", 0) 10 | 11 | # Check if player has the weapon 12 | var player: Player = instance.players_by_peer_id.get(peer_id, null) 13 | if player and player.player_resource.inventory.has(item_id): 14 | var item: Item = ContentRegistryHub.load_by_id(&"items", item_id) 15 | if item: 16 | if item is GearItem and item.can_equip(player): 17 | player.state_synchronizer.set_by_path(^"EquipmentComponent:mainhand_id", item_id) 18 | elif item is ConsumableItem: 19 | item.on_use(player) 20 | return {} 21 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/item.equip.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c2lqje8seabvj 2 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/profile.get.gd: -------------------------------------------------------------------------------- 1 | extends DataRequestHandler 2 | 3 | 4 | func data_request_handler( 5 | peer_id: int, 6 | instance: ServerInstance, 7 | args: Dictionary 8 | ) -> Dictionary: 9 | var to_get: int = args.get("q", 0) 10 | if not to_get: 11 | return {} 12 | var target_player: Player = instance.players_by_peer_id.get(to_get, null) 13 | if not target_player: 14 | return {} 15 | var player_resource: PlayerResource = target_player.player_resource 16 | var profile: Dictionary = { 17 | "name": player_resource.display_name, 18 | "stats": { 19 | "money": player_resource.golds, 20 | "skin_id": player_resource.skin_id, 21 | "character_class": "???", 22 | "level": player_resource.level 23 | } 24 | } 25 | return profile 26 | -------------------------------------------------------------------------------- /source/server/world/components/data_request_handlers/profile.get.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c05nj5dsua3q3 2 | -------------------------------------------------------------------------------- /source/server/world/components/instance_manager.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d1fja2um2iixv 2 | -------------------------------------------------------------------------------- /source/server/world/components/instance_server.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cyey5t0ublhro 2 | -------------------------------------------------------------------------------- /source/server/world/components/world_database.gd.uid: -------------------------------------------------------------------------------- 1 | uid://d2driy4n25j0s 2 | -------------------------------------------------------------------------------- /source/server/world/components/world_manager_client.gd.uid: -------------------------------------------------------------------------------- 1 | uid://cf4xahse7mg4d 2 | -------------------------------------------------------------------------------- /source/server/world/components/world_server.gd.uid: -------------------------------------------------------------------------------- 1 | uid://dt8py6evrtkvk 2 | -------------------------------------------------------------------------------- /source/server/world/data/guild.gd: -------------------------------------------------------------------------------- 1 | class_name Guild 2 | extends Resource 3 | 4 | 5 | @export var guild_name: String 6 | @export var leader_id: int 7 | ## player_id: rank_name 8 | @export var members: Dictionary[int, String] 9 | 10 | 11 | func add_member(player_id: int, rank: String) -> void: 12 | members[player_id] = rank 13 | 14 | 15 | func remove_member(player_id: int) -> void: 16 | members.erase(player_id) 17 | -------------------------------------------------------------------------------- /source/server/world/data/guild.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bnw6yvttm5kp7 2 | -------------------------------------------------------------------------------- /source/server/world/data/server_roles.gd: -------------------------------------------------------------------------------- 1 | class_name ServerRoles 2 | extends Resource 3 | 4 | # Lower the priority, less access to commands it has. 5 | # Make sure to leave the highest priority (100) to the developer/higher role 6 | # as it will have access to every command. 7 | 8 | @export var roles: Dictionary[String, Dictionary] = { 9 | "default": { 10 | "priority": 0, 11 | "commands": [] 12 | }, 13 | "moderator": { 14 | "priority": 1, 15 | "commands": [] 16 | }, 17 | "admin": { 18 | "priority": 2, 19 | "commands": [] 20 | }, 21 | "senior_admin": { 22 | "priority": 100, 23 | "commands": [] 24 | } 25 | } 26 | 27 | 28 | func get_roles() -> Dictionary: 29 | return roles 30 | 31 | 32 | func create_role() -> void: 33 | pass 34 | 35 | 36 | func delete_role() -> void: 37 | pass 38 | -------------------------------------------------------------------------------- /source/server/world/data/server_roles.gd.uid: -------------------------------------------------------------------------------- 1 | uid://c8vk2auuxjodx 2 | -------------------------------------------------------------------------------- /source/server/world/data/server_roles.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Resource" script_class="ServerRoles" load_steps=2 format=3 uid="uid://dvqbph1xfjbuj"] 2 | 3 | [ext_resource type="Script" uid="uid://c8vk2auuxjodx" path="res://source/server/world/data/server_roles.gd" id="1_rm64p"] 4 | 5 | [resource] 6 | script = ExtResource("1_rm64p") 7 | roles = Dictionary[String, Dictionary]({ 8 | "admin": { 9 | "commands": [], 10 | "priority": 2 11 | }, 12 | "default": { 13 | "commands": [], 14 | "priority": 0 15 | }, 16 | "moderator": { 17 | "commands": [], 18 | "priority": 1 19 | }, 20 | "senior_admin": { 21 | "commands": [], 22 | "priority": 100 23 | } 24 | }) 25 | metadata/_custom_type_script = "uid://c8vk2auuxjodx" 26 | -------------------------------------------------------------------------------- /source/server/world/data/world_player_data.gd.uid: -------------------------------------------------------------------------------- 1 | uid://b0vab61d5a3tr 2 | -------------------------------------------------------------------------------- /source/server/world/deprecated/camera_probe.gd.uid: -------------------------------------------------------------------------------- 1 | uid://ba2vavuatms85 2 | -------------------------------------------------------------------------------- /source/server/world/world_main.gd.uid: -------------------------------------------------------------------------------- 1 | uid://bml22pkupxow5 2 | --------------------------------------------------------------------------------