├── requirements.txt ├── .commitlintrc.yml ├── audio ├── Menu │ ├── Accept.wav │ ├── Accept2.wav │ ├── Cancel.wav │ ├── Menu1.wav │ ├── Menu10.wav │ ├── Menu11.wav │ ├── Menu12.wav │ ├── Menu2.wav │ ├── Menu3.wav │ ├── Menu4.wav │ ├── Menu5.wav │ ├── Menu6.wav │ ├── Menu7.wav │ ├── Menu8.wav │ └── Menu9.wav ├── effects │ ├── Fire.wav │ ├── claw.wav │ ├── heal.wav │ ├── hit.wav │ ├── rain.wav │ ├── death.wav │ ├── slash.mp3 │ ├── slash.wav │ ├── sword.wav │ ├── Talking.mp3 │ ├── fireball.mp3 │ └── fireball.wav └── music │ ├── fight.ogg │ ├── main.ogg │ ├── main_intro.ogg │ ├── main_menu.ogg │ ├── pause_menu.ogg │ └── adventure_rain.ogg ├── graphics ├── icon │ └── game.ico ├── objects │ ├── 0.png │ ├── 01.png │ ├── 02.png │ ├── 03.png │ ├── 04.png │ ├── 05.png │ ├── 06.png │ ├── 07.png │ ├── 08.png │ ├── 09.png │ ├── 10.png │ ├── 11.png │ ├── 12.png │ ├── 13.png │ ├── 14.png │ ├── 15.png │ ├── 16.png │ ├── 17.png │ ├── 18.png │ ├── 19.png │ ├── 20.png │ ├── 21.png │ ├── 22.png │ ├── 23.png │ ├── 24.png │ ├── 25.png │ ├── 26.png │ ├── 27.png │ ├── 28.png │ ├── 29.png │ ├── 30.png │ ├── 31.png │ ├── 32.png │ ├── 33.png │ ├── 34.png │ ├── 35.png │ └── 36.png ├── test │ ├── rock.png │ └── player.png ├── font │ └── joystix.ttf ├── grass │ ├── grass_1.png │ ├── grass_2.png │ └── grass_3.png ├── player │ ├── up │ │ ├── up_0.png │ │ ├── up_1.png │ │ ├── up_2.png │ │ └── up_3.png │ ├── down │ │ ├── down_0.png │ │ ├── down_1.png │ │ ├── down_2.png │ │ └── down_3.png │ ├── left │ │ ├── left_0.png │ │ ├── left_1.png │ │ ├── left_2.png │ │ └── left_3.png │ ├── up_idle │ │ └── idle_up.png │ ├── down_idle │ │ └── idle_down.png │ ├── left_idle │ │ └── idle_left.png │ ├── up_attack │ │ └── attack_up.png │ ├── down_attack │ │ └── attack_down.png │ └── left_attack │ │ └── attack_left.png ├── tilemap │ ├── Floor.png │ ├── ground.png │ └── details.png ├── particles │ ├── aura │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ └── 3.png │ ├── claw │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ └── 3.png │ ├── nova │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png │ ├── bamboo │ │ ├── 0.png │ │ └── 1.png │ ├── heal │ │ ├── heal.png │ │ └── frames │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ └── 4.png │ ├── raccoon │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png │ ├── slash │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ └── 3.png │ ├── smoke │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png │ ├── smoke2 │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png │ ├── sparkle │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ └── 4.png │ ├── thunder │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ └── 7.png │ ├── flame │ │ ├── fire.png │ │ └── frames │ │ │ ├── 0.png │ │ │ ├── 01.png │ │ │ ├── 02.png │ │ │ ├── 03.png │ │ │ ├── 04.png │ │ │ ├── 05.png │ │ │ ├── 06.png │ │ │ ├── 07.png │ │ │ ├── 08.png │ │ │ ├── 09.png │ │ │ ├── 10.png │ │ │ └── 11.png │ ├── leaf_attack │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ └── 6.png │ ├── smoke_orange │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png │ ├── leaf1 │ │ ├── leaf1_00000.png │ │ ├── leaf1_00001.png │ │ ├── leaf1_00002.png │ │ ├── leaf1_00003.png │ │ ├── leaf1_00004.png │ │ ├── leaf1_00005.png │ │ ├── leaf1_00006.png │ │ ├── leaf1_00007.png │ │ ├── leaf1_00008.png │ │ ├── leaf1_00009.png │ │ ├── leaf1_00010.png │ │ └── leaf1_00011.png │ ├── leaf2 │ │ ├── leaf1_00000.png │ │ ├── leaf1_00001.png │ │ ├── leaf1_00002.png │ │ ├── leaf1_00003.png │ │ ├── leaf1_00004.png │ │ ├── leaf1_00005.png │ │ ├── leaf1_00006.png │ │ ├── leaf1_00007.png │ │ ├── leaf1_00008.png │ │ ├── leaf1_00009.png │ │ ├── leaf1_00010.png │ │ ├── leaf1_00011.png │ │ └── leaf1_00012.png │ ├── leaf3 │ │ ├── leaf1_00000.png │ │ ├── leaf1_00001.png │ │ ├── leaf1_00002.png │ │ ├── leaf1_00003.png │ │ ├── leaf1_00004.png │ │ ├── leaf1_00005.png │ │ ├── leaf1_00006.png │ │ ├── leaf1_00007.png │ │ ├── leaf1_00008.png │ │ └── leaf1_00009.png │ ├── leaf4 │ │ ├── leaf1_00000.png │ │ ├── leaf1_00001.png │ │ ├── leaf1_00002.png │ │ ├── leaf1_00003.png │ │ ├── leaf1_00004.png │ │ ├── leaf1_00005.png │ │ ├── leaf1_00006.png │ │ ├── leaf1_00007.png │ │ ├── leaf1_00008.png │ │ ├── leaf1_00009.png │ │ └── leaf1_00010.png │ ├── leaf5 │ │ ├── leaf1_00000.png │ │ ├── leaf1_00001.png │ │ ├── leaf1_00002.png │ │ ├── leaf1_00003.png │ │ ├── leaf1_00004.png │ │ ├── leaf1_00005.png │ │ ├── leaf1_00006.png │ │ ├── leaf1_00007.png │ │ ├── leaf1_00008.png │ │ └── leaf1_00009.png │ └── leaf6 │ │ ├── leaf1_00000.png │ │ ├── leaf1_00001.png │ │ ├── leaf1_00002.png │ │ ├── leaf1_00003.png │ │ ├── leaf1_00004.png │ │ ├── leaf1_00005.png │ │ ├── leaf1_00006.png │ │ ├── leaf1_00007.png │ │ ├── leaf1_00008.png │ │ ├── leaf1_00009.png │ │ ├── leaf1_00010.png │ │ └── leaf1_00011.png ├── ui │ ├── emote │ │ ├── emote1.png │ │ ├── emote10.png │ │ ├── emote11.png │ │ ├── emote12.png │ │ ├── emote13.png │ │ ├── emote14.png │ │ ├── emote15.png │ │ ├── emote16.png │ │ ├── emote17.png │ │ ├── emote18.png │ │ ├── emote19.png │ │ ├── emote2.png │ │ ├── emote20.png │ │ ├── emote21.png │ │ ├── emote22.png │ │ ├── emote23.png │ │ ├── emote24.png │ │ ├── emote25.png │ │ ├── emote26.png │ │ ├── emote27.png │ │ ├── emote28.png │ │ ├── emote29.png │ │ ├── emote3.png │ │ ├── emote30.png │ │ ├── emote4.png │ │ ├── emote5.png │ │ ├── emote6.png │ │ ├── emote7.png │ │ ├── emote8.png │ │ └── emote9.png │ └── dialog │ │ ├── DialogInfo_0.png │ │ ├── DialogInfo_1.png │ │ ├── DialogInfo_2.png │ │ └── DialogInfo_3.png ├── weapons │ ├── axe │ │ ├── full.png │ │ └── right.png │ ├── sai │ │ ├── full.png │ │ └── right.png │ ├── lance │ │ ├── full.png │ │ └── right.png │ ├── rapier │ │ ├── full.png │ │ └── right.png │ └── sword │ │ ├── full.png │ │ └── right.png ├── dialog │ ├── UI │ │ ├── DialogBox.png │ │ ├── NoButton.png │ │ ├── YesButton.png │ │ └── DialogBoxFaceset.png │ └── OldManDialog │ │ ├── OldManBox_0.png │ │ ├── OldManBox_1.png │ │ ├── OldManBox_2.png │ │ └── OldManBox_3.png ├── environment │ ├── drops │ │ ├── 0.png │ │ ├── 1.png │ │ └── 2.png │ ├── floor │ │ ├── 0.png │ │ ├── 1.png │ │ └── 2.png │ ├── wind │ │ ├── W401-1.png │ │ ├── W401-10.png │ │ ├── W401-11.png │ │ ├── W401-12.png │ │ ├── W401-13.png │ │ ├── W401-14.png │ │ ├── W401-15.png │ │ ├── W401-16.png │ │ ├── W401-2.png │ │ ├── W401-3.png │ │ ├── W401-4.png │ │ ├── W401-5.png │ │ ├── W401-6.png │ │ ├── W401-7.png │ │ ├── W401-8.png │ │ └── W401-9.png │ └── sprite_buttons_menu │ │ ├── !.png │ │ ├── #.png │ │ ├── $.png │ │ ├── %.png │ │ ├── &.png │ │ ├── (.png │ │ ├── ).png │ │ ├── +.png │ │ ├── -.png │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ ├── 8.png │ │ ├── 9.png │ │ ├── =.png │ │ ├── @.png │ │ ├── A.png │ │ ├── B.png │ │ ├── C.png │ │ ├── D.png │ │ ├── E.png │ │ ├── F.png │ │ ├── F1.png │ │ ├── F2.png │ │ ├── F3.png │ │ ├── F4.png │ │ ├── F5.png │ │ ├── F6.png │ │ ├── F7.png │ │ ├── F8.png │ │ ├── F9.png │ │ ├── FN.png │ │ ├── G.png │ │ ├── H.png │ │ ├── I.png │ │ ├── J.png │ │ ├── K.png │ │ ├── L.png │ │ ├── M.png │ │ ├── N.png │ │ ├── O.png │ │ ├── P.png │ │ ├── Q.png │ │ ├── R.png │ │ ├── S.png │ │ ├── T.png │ │ ├── U.png │ │ ├── V.png │ │ ├── W.png │ │ ├── X.png │ │ ├── Y.png │ │ ├── Z.png │ │ ├── [.png │ │ ├── ].png │ │ ├── ^.png │ │ ├── _.png │ │ ├── `.png │ │ ├── {.png │ │ ├── }.png │ │ ├── ~.png │ │ ├── §.png │ │ ├── °.png │ │ ├── ´.png │ │ ├── €.png │ │ ├── ALT.png │ │ ├── CAPS.png │ │ ├── CTRL.png │ │ ├── DOT.png │ │ ├── END.png │ │ ├── ESC.png │ │ ├── F10.png │ │ ├── F11.png │ │ ├── F12.png │ │ ├── HOME.png │ │ ├── MAC.png │ │ ├── MENU.png │ │ ├── NUM.png │ │ ├── STAR.png │ │ ├── STRG.png │ │ ├── TAB.png │ │ ├── ALTGR.png │ │ ├── ARROWUP.png │ │ ├── COLON.png │ │ ├── COMMA.png │ │ ├── ENTER.png │ │ ├── INSERT.png │ │ ├── PAGEUP.png │ │ ├── PAUSE.png │ │ ├── PRINT.png │ │ ├── SHIFT.png │ │ ├── SPACE.png │ │ ├── WINDOWS.png │ │ ├── ARROWDOWN.png │ │ ├── ARROWLEFT.png │ │ ├── BACKSLASH.png │ │ ├── BACKSPACE.png │ │ ├── PAGEDOWN.png │ │ ├── SEMICOLON.png │ │ ├── APOSTROPHE.png │ │ ├── ARROWRIGHT.png │ │ ├── BIGGERTHAN.png │ │ ├── FORWARDSLASH.png │ │ ├── LESSERTHAN.png │ │ ├── QUESTIONMARK.png │ │ ├── SCROLLLOCK.png │ │ ├── VERTICALLINE.png │ │ └── QUOTATIONMARKS.png ├── background │ └── background.gif ├── monsters │ ├── squid │ │ ├── idle │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ └── 4.png │ │ ├── move │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ └── 3.png │ │ └── attack │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ └── 3.png │ ├── bamboo │ │ ├── attack │ │ │ └── 0.png │ │ ├── idle │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ └── 3.png │ │ └── move │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ └── 3.png │ ├── raccoon │ │ ├── idle │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ └── 5.png │ │ ├── move │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ └── 4.png │ │ └── attack │ │ │ ├── 0.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ └── 3.png │ └── spirit │ │ ├── attack │ │ └── 0.png │ │ ├── idle │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ └── 3.png │ │ └── move │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 2.png │ │ └── 3.png └── npc │ └── oldman │ ├── idle_up │ ├── idle_up_0.png │ ├── idle_up_1.png │ └── idle_up_2.png │ ├── idle_down │ ├── idle_down_0.png │ ├── idle_down_1.png │ └── idle_down_2.png │ └── idle_left │ ├── idle_left_0.png │ ├── idle_left_1.png │ └── idle_left_2.png ├── assets └── background-ninja-adventure-pack.gif ├── .github ├── dependabot.yml └── workflows │ └── commitlint.yml ├── code ├── dev_args.py ├── debug.py ├── tile.py ├── paths.py ├── weapon.py ├── entity.py ├── magic.py ├── memory_check.py ├── support.py ├── ui.py ├── upgrade.py ├── settings.py ├── enemy.py └── chunk_manager.py ├── docs ├── advanced-compatibility.md ├── advanced-assets.md ├── advanced-performance.md ├── advanced-modules.md ├── advanced-events-triggers.md ├── credits.md ├── development_mode.md ├── gameplay.md ├── advanced-db-save.md ├── systemupgrade.md ├── features.md ├── technical.md ├── memory-checker.md ├── eldoria-benchmark.md ├── README.md ├── polling.md ├── verify_resources.md └── changelog.md ├── LICENSE ├── .gitignore └── SECURITY.md /requirements.txt: -------------------------------------------------------------------------------- 1 | pygame-ce==2.5.5 2 | pillow==11.3.0 3 | -------------------------------------------------------------------------------- /.commitlintrc.yml: -------------------------------------------------------------------------------- 1 | extends: 2 | - '@commitlint/config-conventional' 3 | -------------------------------------------------------------------------------- /audio/Menu/Accept.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Accept.wav -------------------------------------------------------------------------------- /audio/Menu/Accept2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Accept2.wav -------------------------------------------------------------------------------- /audio/Menu/Cancel.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Cancel.wav -------------------------------------------------------------------------------- /audio/Menu/Menu1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu1.wav -------------------------------------------------------------------------------- /audio/Menu/Menu10.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu10.wav -------------------------------------------------------------------------------- /audio/Menu/Menu11.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu11.wav -------------------------------------------------------------------------------- /audio/Menu/Menu12.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu12.wav -------------------------------------------------------------------------------- /audio/Menu/Menu2.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu2.wav -------------------------------------------------------------------------------- /audio/Menu/Menu3.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu3.wav -------------------------------------------------------------------------------- /audio/Menu/Menu4.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu4.wav -------------------------------------------------------------------------------- /audio/Menu/Menu5.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu5.wav -------------------------------------------------------------------------------- /audio/Menu/Menu6.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu6.wav -------------------------------------------------------------------------------- /audio/Menu/Menu7.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu7.wav -------------------------------------------------------------------------------- /audio/Menu/Menu8.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu8.wav -------------------------------------------------------------------------------- /audio/Menu/Menu9.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/Menu/Menu9.wav -------------------------------------------------------------------------------- /audio/effects/Fire.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/Fire.wav -------------------------------------------------------------------------------- /audio/effects/claw.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/claw.wav -------------------------------------------------------------------------------- /audio/effects/heal.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/heal.wav -------------------------------------------------------------------------------- /audio/effects/hit.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/hit.wav -------------------------------------------------------------------------------- /audio/effects/rain.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/rain.wav -------------------------------------------------------------------------------- /audio/music/fight.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/music/fight.ogg -------------------------------------------------------------------------------- /audio/music/main.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/music/main.ogg -------------------------------------------------------------------------------- /graphics/icon/game.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/icon/game.ico -------------------------------------------------------------------------------- /graphics/objects/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/0.png -------------------------------------------------------------------------------- /graphics/test/rock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/test/rock.png -------------------------------------------------------------------------------- /audio/effects/death.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/death.wav -------------------------------------------------------------------------------- /audio/effects/slash.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/slash.mp3 -------------------------------------------------------------------------------- /audio/effects/slash.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/slash.wav -------------------------------------------------------------------------------- /audio/effects/sword.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/sword.wav -------------------------------------------------------------------------------- /graphics/objects/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/01.png -------------------------------------------------------------------------------- /graphics/objects/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/02.png -------------------------------------------------------------------------------- /graphics/objects/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/03.png -------------------------------------------------------------------------------- /graphics/objects/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/04.png -------------------------------------------------------------------------------- /graphics/objects/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/05.png -------------------------------------------------------------------------------- /graphics/objects/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/06.png -------------------------------------------------------------------------------- /graphics/objects/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/07.png -------------------------------------------------------------------------------- /graphics/objects/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/08.png -------------------------------------------------------------------------------- /graphics/objects/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/09.png -------------------------------------------------------------------------------- /graphics/objects/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/10.png -------------------------------------------------------------------------------- /graphics/objects/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/11.png -------------------------------------------------------------------------------- /graphics/objects/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/12.png -------------------------------------------------------------------------------- /graphics/objects/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/13.png -------------------------------------------------------------------------------- /graphics/objects/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/14.png -------------------------------------------------------------------------------- /graphics/objects/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/15.png -------------------------------------------------------------------------------- /graphics/objects/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/16.png -------------------------------------------------------------------------------- /graphics/objects/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/17.png -------------------------------------------------------------------------------- /graphics/objects/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/18.png -------------------------------------------------------------------------------- /graphics/objects/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/19.png -------------------------------------------------------------------------------- /graphics/objects/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/20.png -------------------------------------------------------------------------------- /graphics/objects/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/21.png -------------------------------------------------------------------------------- /graphics/objects/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/22.png -------------------------------------------------------------------------------- /graphics/objects/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/23.png -------------------------------------------------------------------------------- /graphics/objects/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/24.png -------------------------------------------------------------------------------- /graphics/objects/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/25.png -------------------------------------------------------------------------------- /graphics/objects/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/26.png -------------------------------------------------------------------------------- /graphics/objects/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/27.png -------------------------------------------------------------------------------- /graphics/objects/28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/28.png -------------------------------------------------------------------------------- /graphics/objects/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/29.png -------------------------------------------------------------------------------- /graphics/objects/30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/30.png -------------------------------------------------------------------------------- /graphics/objects/31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/31.png -------------------------------------------------------------------------------- /graphics/objects/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/32.png -------------------------------------------------------------------------------- /graphics/objects/33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/33.png -------------------------------------------------------------------------------- /graphics/objects/34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/34.png -------------------------------------------------------------------------------- /graphics/objects/35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/35.png -------------------------------------------------------------------------------- /graphics/objects/36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/objects/36.png -------------------------------------------------------------------------------- /graphics/test/player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/test/player.png -------------------------------------------------------------------------------- /audio/effects/Talking.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/Talking.mp3 -------------------------------------------------------------------------------- /audio/effects/fireball.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/fireball.mp3 -------------------------------------------------------------------------------- /audio/effects/fireball.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/effects/fireball.wav -------------------------------------------------------------------------------- /audio/music/main_intro.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/music/main_intro.ogg -------------------------------------------------------------------------------- /audio/music/main_menu.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/music/main_menu.ogg -------------------------------------------------------------------------------- /audio/music/pause_menu.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/music/pause_menu.ogg -------------------------------------------------------------------------------- /graphics/font/joystix.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/font/joystix.ttf -------------------------------------------------------------------------------- /graphics/grass/grass_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/grass/grass_1.png -------------------------------------------------------------------------------- /graphics/grass/grass_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/grass/grass_2.png -------------------------------------------------------------------------------- /graphics/grass/grass_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/grass/grass_3.png -------------------------------------------------------------------------------- /graphics/player/up/up_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/up/up_0.png -------------------------------------------------------------------------------- /graphics/player/up/up_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/up/up_1.png -------------------------------------------------------------------------------- /graphics/player/up/up_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/up/up_2.png -------------------------------------------------------------------------------- /graphics/player/up/up_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/up/up_3.png -------------------------------------------------------------------------------- /graphics/tilemap/Floor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/tilemap/Floor.png -------------------------------------------------------------------------------- /graphics/tilemap/ground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/tilemap/ground.png -------------------------------------------------------------------------------- /graphics/particles/aura/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/aura/0.png -------------------------------------------------------------------------------- /graphics/particles/aura/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/aura/1.png -------------------------------------------------------------------------------- /graphics/particles/aura/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/aura/2.png -------------------------------------------------------------------------------- /graphics/particles/aura/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/aura/3.png -------------------------------------------------------------------------------- /graphics/particles/claw/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/claw/0.png -------------------------------------------------------------------------------- /graphics/particles/claw/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/claw/1.png -------------------------------------------------------------------------------- /graphics/particles/claw/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/claw/2.png -------------------------------------------------------------------------------- /graphics/particles/claw/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/claw/3.png -------------------------------------------------------------------------------- /graphics/particles/nova/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/nova/0.png -------------------------------------------------------------------------------- /graphics/particles/nova/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/nova/1.png -------------------------------------------------------------------------------- /graphics/particles/nova/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/nova/2.png -------------------------------------------------------------------------------- /graphics/particles/nova/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/nova/3.png -------------------------------------------------------------------------------- /graphics/particles/nova/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/nova/4.png -------------------------------------------------------------------------------- /graphics/particles/nova/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/nova/5.png -------------------------------------------------------------------------------- /graphics/tilemap/details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/tilemap/details.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote1.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote10.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote11.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote12.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote13.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote14.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote15.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote16.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote17.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote18.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote19.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote2.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote20.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote21.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote22.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote23.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote24.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote25.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote26.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote27.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote28.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote29.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote3.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote30.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote4.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote5.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote6.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote7.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote8.png -------------------------------------------------------------------------------- /graphics/ui/emote/emote9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/emote/emote9.png -------------------------------------------------------------------------------- /graphics/weapons/axe/full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/axe/full.png -------------------------------------------------------------------------------- /graphics/weapons/sai/full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/sai/full.png -------------------------------------------------------------------------------- /audio/music/adventure_rain.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/audio/music/adventure_rain.ogg -------------------------------------------------------------------------------- /graphics/dialog/UI/DialogBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/dialog/UI/DialogBox.png -------------------------------------------------------------------------------- /graphics/dialog/UI/NoButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/dialog/UI/NoButton.png -------------------------------------------------------------------------------- /graphics/dialog/UI/YesButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/dialog/UI/YesButton.png -------------------------------------------------------------------------------- /graphics/environment/drops/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/drops/0.png -------------------------------------------------------------------------------- /graphics/environment/drops/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/drops/1.png -------------------------------------------------------------------------------- /graphics/environment/drops/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/drops/2.png -------------------------------------------------------------------------------- /graphics/environment/floor/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/floor/0.png -------------------------------------------------------------------------------- /graphics/environment/floor/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/floor/1.png -------------------------------------------------------------------------------- /graphics/environment/floor/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/floor/2.png -------------------------------------------------------------------------------- /graphics/particles/bamboo/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/bamboo/0.png -------------------------------------------------------------------------------- /graphics/particles/bamboo/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/bamboo/1.png -------------------------------------------------------------------------------- /graphics/particles/heal/heal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/heal/heal.png -------------------------------------------------------------------------------- /graphics/particles/raccoon/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/raccoon/0.png -------------------------------------------------------------------------------- /graphics/particles/raccoon/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/raccoon/1.png -------------------------------------------------------------------------------- /graphics/particles/raccoon/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/raccoon/2.png -------------------------------------------------------------------------------- /graphics/particles/raccoon/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/raccoon/3.png -------------------------------------------------------------------------------- /graphics/particles/raccoon/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/raccoon/4.png -------------------------------------------------------------------------------- /graphics/particles/raccoon/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/raccoon/5.png -------------------------------------------------------------------------------- /graphics/particles/slash/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/slash/0.png -------------------------------------------------------------------------------- /graphics/particles/slash/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/slash/1.png -------------------------------------------------------------------------------- /graphics/particles/slash/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/slash/2.png -------------------------------------------------------------------------------- /graphics/particles/slash/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/slash/3.png -------------------------------------------------------------------------------- /graphics/particles/smoke/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke/0.png -------------------------------------------------------------------------------- /graphics/particles/smoke/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke/1.png -------------------------------------------------------------------------------- /graphics/particles/smoke/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke/2.png -------------------------------------------------------------------------------- /graphics/particles/smoke/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke/3.png -------------------------------------------------------------------------------- /graphics/particles/smoke/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke/4.png -------------------------------------------------------------------------------- /graphics/particles/smoke/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke/5.png -------------------------------------------------------------------------------- /graphics/particles/smoke2/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke2/0.png -------------------------------------------------------------------------------- /graphics/particles/smoke2/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke2/1.png -------------------------------------------------------------------------------- /graphics/particles/smoke2/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke2/2.png -------------------------------------------------------------------------------- /graphics/particles/smoke2/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke2/3.png -------------------------------------------------------------------------------- /graphics/particles/smoke2/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke2/4.png -------------------------------------------------------------------------------- /graphics/particles/smoke2/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke2/5.png -------------------------------------------------------------------------------- /graphics/particles/sparkle/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/sparkle/0.png -------------------------------------------------------------------------------- /graphics/particles/sparkle/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/sparkle/1.png -------------------------------------------------------------------------------- /graphics/particles/sparkle/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/sparkle/2.png -------------------------------------------------------------------------------- /graphics/particles/sparkle/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/sparkle/3.png -------------------------------------------------------------------------------- /graphics/particles/sparkle/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/sparkle/4.png -------------------------------------------------------------------------------- /graphics/particles/thunder/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/thunder/0.png -------------------------------------------------------------------------------- /graphics/particles/thunder/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/thunder/1.png -------------------------------------------------------------------------------- /graphics/particles/thunder/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/thunder/2.png -------------------------------------------------------------------------------- /graphics/particles/thunder/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/thunder/3.png -------------------------------------------------------------------------------- /graphics/particles/thunder/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/thunder/4.png -------------------------------------------------------------------------------- /graphics/particles/thunder/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/thunder/5.png -------------------------------------------------------------------------------- /graphics/particles/thunder/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/thunder/6.png -------------------------------------------------------------------------------- /graphics/particles/thunder/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/thunder/7.png -------------------------------------------------------------------------------- /graphics/player/down/down_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/down/down_0.png -------------------------------------------------------------------------------- /graphics/player/down/down_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/down/down_1.png -------------------------------------------------------------------------------- /graphics/player/down/down_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/down/down_2.png -------------------------------------------------------------------------------- /graphics/player/down/down_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/down/down_3.png -------------------------------------------------------------------------------- /graphics/player/left/left_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/left/left_0.png -------------------------------------------------------------------------------- /graphics/player/left/left_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/left/left_1.png -------------------------------------------------------------------------------- /graphics/player/left/left_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/left/left_2.png -------------------------------------------------------------------------------- /graphics/player/left/left_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/left/left_3.png -------------------------------------------------------------------------------- /graphics/weapons/axe/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/axe/right.png -------------------------------------------------------------------------------- /graphics/weapons/lance/full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/lance/full.png -------------------------------------------------------------------------------- /graphics/weapons/lance/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/lance/right.png -------------------------------------------------------------------------------- /graphics/weapons/rapier/full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/rapier/full.png -------------------------------------------------------------------------------- /graphics/weapons/sai/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/sai/right.png -------------------------------------------------------------------------------- /graphics/weapons/sword/full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/sword/full.png -------------------------------------------------------------------------------- /graphics/weapons/sword/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/sword/right.png -------------------------------------------------------------------------------- /graphics/background/background.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/background/background.gif -------------------------------------------------------------------------------- /graphics/monsters/squid/idle/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/idle/0.png -------------------------------------------------------------------------------- /graphics/monsters/squid/idle/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/idle/1.png -------------------------------------------------------------------------------- /graphics/monsters/squid/idle/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/idle/2.png -------------------------------------------------------------------------------- /graphics/monsters/squid/idle/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/idle/3.png -------------------------------------------------------------------------------- /graphics/monsters/squid/idle/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/idle/4.png -------------------------------------------------------------------------------- /graphics/monsters/squid/move/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/move/0.png -------------------------------------------------------------------------------- /graphics/monsters/squid/move/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/move/1.png -------------------------------------------------------------------------------- /graphics/monsters/squid/move/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/move/2.png -------------------------------------------------------------------------------- /graphics/monsters/squid/move/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/move/3.png -------------------------------------------------------------------------------- /graphics/particles/flame/fire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/fire.png -------------------------------------------------------------------------------- /graphics/weapons/rapier/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/weapons/rapier/right.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-1.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-10.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-11.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-12.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-13.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-14.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-15.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-16.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-2.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-3.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-4.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-5.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-6.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-7.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-8.png -------------------------------------------------------------------------------- /graphics/environment/wind/W401-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/wind/W401-9.png -------------------------------------------------------------------------------- /graphics/monsters/bamboo/attack/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/bamboo/attack/0.png -------------------------------------------------------------------------------- /graphics/monsters/bamboo/idle/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/bamboo/idle/0.png -------------------------------------------------------------------------------- /graphics/monsters/bamboo/idle/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/bamboo/idle/1.png -------------------------------------------------------------------------------- /graphics/monsters/bamboo/idle/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/bamboo/idle/2.png -------------------------------------------------------------------------------- /graphics/monsters/bamboo/idle/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/bamboo/idle/3.png -------------------------------------------------------------------------------- /graphics/monsters/bamboo/move/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/bamboo/move/0.png -------------------------------------------------------------------------------- /graphics/monsters/bamboo/move/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/bamboo/move/1.png -------------------------------------------------------------------------------- /graphics/monsters/bamboo/move/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/bamboo/move/2.png -------------------------------------------------------------------------------- /graphics/monsters/bamboo/move/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/bamboo/move/3.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/idle/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/idle/0.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/idle/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/idle/1.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/idle/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/idle/2.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/idle/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/idle/3.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/idle/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/idle/4.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/idle/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/idle/5.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/move/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/move/0.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/move/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/move/1.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/move/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/move/2.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/move/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/move/3.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/move/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/move/4.png -------------------------------------------------------------------------------- /graphics/monsters/spirit/attack/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/spirit/attack/0.png -------------------------------------------------------------------------------- /graphics/monsters/spirit/idle/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/spirit/idle/0.png -------------------------------------------------------------------------------- /graphics/monsters/spirit/idle/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/spirit/idle/1.png -------------------------------------------------------------------------------- /graphics/monsters/spirit/idle/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/spirit/idle/2.png -------------------------------------------------------------------------------- /graphics/monsters/spirit/idle/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/spirit/idle/3.png -------------------------------------------------------------------------------- /graphics/monsters/spirit/move/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/spirit/move/0.png -------------------------------------------------------------------------------- /graphics/monsters/spirit/move/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/spirit/move/1.png -------------------------------------------------------------------------------- /graphics/monsters/spirit/move/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/spirit/move/2.png -------------------------------------------------------------------------------- /graphics/monsters/spirit/move/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/spirit/move/3.png -------------------------------------------------------------------------------- /graphics/monsters/squid/attack/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/attack/0.png -------------------------------------------------------------------------------- /graphics/monsters/squid/attack/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/attack/1.png -------------------------------------------------------------------------------- /graphics/monsters/squid/attack/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/attack/2.png -------------------------------------------------------------------------------- /graphics/monsters/squid/attack/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/squid/attack/3.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/0.png -------------------------------------------------------------------------------- /graphics/particles/heal/frames/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/heal/frames/0.png -------------------------------------------------------------------------------- /graphics/particles/heal/frames/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/heal/frames/1.png -------------------------------------------------------------------------------- /graphics/particles/heal/frames/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/heal/frames/2.png -------------------------------------------------------------------------------- /graphics/particles/heal/frames/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/heal/frames/3.png -------------------------------------------------------------------------------- /graphics/particles/heal/frames/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/heal/frames/4.png -------------------------------------------------------------------------------- /graphics/particles/leaf_attack/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf_attack/0.png -------------------------------------------------------------------------------- /graphics/particles/leaf_attack/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf_attack/1.png -------------------------------------------------------------------------------- /graphics/particles/leaf_attack/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf_attack/2.png -------------------------------------------------------------------------------- /graphics/particles/leaf_attack/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf_attack/3.png -------------------------------------------------------------------------------- /graphics/particles/leaf_attack/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf_attack/4.png -------------------------------------------------------------------------------- /graphics/particles/leaf_attack/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf_attack/5.png -------------------------------------------------------------------------------- /graphics/particles/leaf_attack/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf_attack/6.png -------------------------------------------------------------------------------- /graphics/particles/smoke_orange/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke_orange/0.png -------------------------------------------------------------------------------- /graphics/particles/smoke_orange/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke_orange/1.png -------------------------------------------------------------------------------- /graphics/particles/smoke_orange/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke_orange/2.png -------------------------------------------------------------------------------- /graphics/particles/smoke_orange/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke_orange/3.png -------------------------------------------------------------------------------- /graphics/particles/smoke_orange/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke_orange/4.png -------------------------------------------------------------------------------- /graphics/particles/smoke_orange/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/smoke_orange/5.png -------------------------------------------------------------------------------- /graphics/player/up_idle/idle_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/up_idle/idle_up.png -------------------------------------------------------------------------------- /graphics/ui/dialog/DialogInfo_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/dialog/DialogInfo_0.png -------------------------------------------------------------------------------- /graphics/ui/dialog/DialogInfo_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/dialog/DialogInfo_1.png -------------------------------------------------------------------------------- /graphics/ui/dialog/DialogInfo_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/dialog/DialogInfo_2.png -------------------------------------------------------------------------------- /graphics/ui/dialog/DialogInfo_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/ui/dialog/DialogInfo_3.png -------------------------------------------------------------------------------- /graphics/dialog/UI/DialogBoxFaceset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/dialog/UI/DialogBoxFaceset.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/attack/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/attack/0.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/attack/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/attack/1.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/attack/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/attack/2.png -------------------------------------------------------------------------------- /graphics/monsters/raccoon/attack/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/monsters/raccoon/attack/3.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/01.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/02.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/03.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/04.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/05.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/06.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/07.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/08.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/09.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/10.png -------------------------------------------------------------------------------- /graphics/particles/flame/frames/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/flame/frames/11.png -------------------------------------------------------------------------------- /graphics/player/down_idle/idle_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/down_idle/idle_down.png -------------------------------------------------------------------------------- /graphics/player/left_idle/idle_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/left_idle/idle_left.png -------------------------------------------------------------------------------- /graphics/player/up_attack/attack_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/up_attack/attack_up.png -------------------------------------------------------------------------------- /assets/background-ninja-adventure-pack.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/assets/background-ninja-adventure-pack.gif -------------------------------------------------------------------------------- /graphics/npc/oldman/idle_up/idle_up_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/npc/oldman/idle_up/idle_up_0.png -------------------------------------------------------------------------------- /graphics/npc/oldman/idle_up/idle_up_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/npc/oldman/idle_up/idle_up_1.png -------------------------------------------------------------------------------- /graphics/npc/oldman/idle_up/idle_up_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/npc/oldman/idle_up/idle_up_2.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00000.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00001.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00002.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00003.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00004.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00005.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00006.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00007.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00008.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00009.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00010.png -------------------------------------------------------------------------------- /graphics/particles/leaf1/leaf1_00011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf1/leaf1_00011.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00000.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00001.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00002.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00003.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00004.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00005.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00006.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00007.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00008.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00009.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00010.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00011.png -------------------------------------------------------------------------------- /graphics/particles/leaf2/leaf1_00012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf2/leaf1_00012.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00000.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00001.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00002.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00003.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00004.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00005.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00006.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00007.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00008.png -------------------------------------------------------------------------------- /graphics/particles/leaf3/leaf1_00009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf3/leaf1_00009.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00000.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00001.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00002.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00003.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00004.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00005.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00006.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00007.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00008.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00009.png -------------------------------------------------------------------------------- /graphics/particles/leaf4/leaf1_00010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf4/leaf1_00010.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00000.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00001.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00002.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00003.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00004.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00005.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00006.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00007.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00008.png -------------------------------------------------------------------------------- /graphics/particles/leaf5/leaf1_00009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf5/leaf1_00009.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00000.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00001.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00002.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00003.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00004.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00005.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00006.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00007.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00008.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00009.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00010.png -------------------------------------------------------------------------------- /graphics/particles/leaf6/leaf1_00011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/particles/leaf6/leaf1_00011.png -------------------------------------------------------------------------------- /graphics/dialog/OldManDialog/OldManBox_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/dialog/OldManDialog/OldManBox_0.png -------------------------------------------------------------------------------- /graphics/dialog/OldManDialog/OldManBox_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/dialog/OldManDialog/OldManBox_1.png -------------------------------------------------------------------------------- /graphics/dialog/OldManDialog/OldManBox_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/dialog/OldManDialog/OldManBox_2.png -------------------------------------------------------------------------------- /graphics/dialog/OldManDialog/OldManBox_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/dialog/OldManDialog/OldManBox_3.png -------------------------------------------------------------------------------- /graphics/player/down_attack/attack_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/down_attack/attack_down.png -------------------------------------------------------------------------------- /graphics/player/left_attack/attack_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/player/left_attack/attack_left.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/!.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/!.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/#.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/#.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/$.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/$.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/%.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/%.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/&.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/&.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/(.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/(.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/).png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/+.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/+.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/-.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/-.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/0.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/1.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/2.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/3.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/4.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/5.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/6.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/7.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/8.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/9.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/=.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/=.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/@.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/@.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/A.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/B.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/C.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/D.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/E.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F1.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F2.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F3.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F4.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F5.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F6.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F7.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F8.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F9.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/FN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/FN.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/G.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/G.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/H.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/H.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/I.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/I.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/J.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/J.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/K.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/K.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/L.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/L.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/M.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/M.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/N.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/N.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/O.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/O.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/P.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/P.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/Q.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/Q.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/R.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/R.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/S.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/S.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/T.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/T.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/U.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/U.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/V.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/V.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/W.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/W.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/X.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/Y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/Y.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/Z.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/Z.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/[.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/[.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/].png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/^.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/^.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/_.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/`.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/`.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/{.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/{.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/}.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/}.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/~.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/~.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/§.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/§.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/°.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/°.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/´.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/´.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/€.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/€.png -------------------------------------------------------------------------------- /graphics/npc/oldman/idle_down/idle_down_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/npc/oldman/idle_down/idle_down_0.png -------------------------------------------------------------------------------- /graphics/npc/oldman/idle_down/idle_down_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/npc/oldman/idle_down/idle_down_1.png -------------------------------------------------------------------------------- /graphics/npc/oldman/idle_down/idle_down_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/npc/oldman/idle_down/idle_down_2.png -------------------------------------------------------------------------------- /graphics/npc/oldman/idle_left/idle_left_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/npc/oldman/idle_left/idle_left_0.png -------------------------------------------------------------------------------- /graphics/npc/oldman/idle_left/idle_left_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/npc/oldman/idle_left/idle_left_1.png -------------------------------------------------------------------------------- /graphics/npc/oldman/idle_left/idle_left_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/npc/oldman/idle_left/idle_left_2.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/ALT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/ALT.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/CAPS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/CAPS.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/CTRL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/CTRL.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/DOT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/DOT.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/END.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/END.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/ESC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/ESC.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F10.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F11.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/F12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/F12.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/HOME.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/HOME.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/MAC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/MAC.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/MENU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/MENU.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/NUM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/NUM.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/STAR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/STAR.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/STRG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/STRG.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/TAB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/TAB.png -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "pip" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/ALTGR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/ALTGR.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/ARROWUP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/ARROWUP.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/COLON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/COLON.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/COMMA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/COMMA.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/ENTER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/ENTER.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/INSERT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/INSERT.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/PAGEUP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/PAGEUP.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/PAUSE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/PAUSE.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/PRINT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/PRINT.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/SHIFT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/SHIFT.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/SPACE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/SPACE.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/WINDOWS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/WINDOWS.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/ARROWDOWN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/ARROWDOWN.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/ARROWLEFT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/ARROWLEFT.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/BACKSLASH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/BACKSLASH.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/BACKSPACE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/BACKSPACE.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/PAGEDOWN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/PAGEDOWN.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/SEMICOLON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/SEMICOLON.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/APOSTROPHE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/APOSTROPHE.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/ARROWRIGHT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/ARROWRIGHT.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/BIGGERTHAN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/BIGGERTHAN.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/FORWARDSLASH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/FORWARDSLASH.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/LESSERTHAN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/LESSERTHAN.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/QUESTIONMARK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/QUESTIONMARK.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/SCROLLLOCK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/SCROLLLOCK.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/VERTICALLINE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/VERTICALLINE.png -------------------------------------------------------------------------------- /graphics/environment/sprite_buttons_menu/QUOTATIONMARKS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GabrielNat1/RPG-Eldoria/HEAD/graphics/environment/sprite_buttons_menu/QUOTATIONMARKS.png -------------------------------------------------------------------------------- /code/dev_args.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | 3 | parser = argparse.ArgumentParser() 4 | parser.add_argument('--dev', action='store_true', help='Activate development mode') 5 | args = parser.parse_args() 6 | dev_mode = args.dev -------------------------------------------------------------------------------- /.github/workflows/commitlint.yml: -------------------------------------------------------------------------------- 1 | name: Lint Commit Messages 2 | permissions: 3 | contents: read 4 | 5 | on: 6 | branches: 7 | - main 8 | - master 9 | - develop 10 | 11 | jobs: 12 | commitlint: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v3 17 | 18 | - name: Lint commit messages 19 | uses: wagoid/commitlint-github-action@v4 20 | with: 21 | configFile: '.commitlintrc.yml' 22 | -------------------------------------------------------------------------------- /docs/advanced-compatibility.md: -------------------------------------------------------------------------------- 1 | # 💾 Platform Compatibility 2 | 3 | RPG Eldoria is compatible with: 4 | - **Windows** (fully supported) 5 | - **Linux** (tested on Ubuntu and derivatives) 6 | - **macOS** (may require extra permissions for SDL2) 7 | 8 | ## Known Issues 9 | - On macOS, you may need to allow execution of SDL2 binaries. 10 | - On Linux, install SDL2 dependencies via your package manager. 11 | - Audio and font rendering may vary slightly between platforms due to Pygame/SDL2 differences. 12 | 13 | --- 14 | -------------------------------------------------------------------------------- /docs/advanced-assets.md: -------------------------------------------------------------------------------- 1 | # 📦 Asset Management 2 | 3 | ## Texture Streaming / Lazy Loading 4 | Assets (graphics, audio) are loaded dynamically as needed, especially for map chunks and UI elements. The chunk system loads only visible regions to optimize memory usage. 5 | 6 | ## Recommended Organization 7 | - `graphics/characters/` 8 | - `graphics/ui/` 9 | - `audio/music/` 10 | - `graphics/environment/` 11 | - `graphics/monsters/` 12 | 13 | ## Internal Cache 14 | Dictionaries and LRU caches are used to avoid repeated loading of the same files (see `chunk_manager.py`). 15 | 16 | --- 17 | -------------------------------------------------------------------------------- /docs/advanced-performance.md: -------------------------------------------------------------------------------- 1 | # 🧮 Performance Management 2 | 3 | ## FPS Targets and Dynamic Cap 4 | The game targets 60 FPS by default (see `settings.py`). Performance modes can adjust visible chunks and enemy spawn distances for optimization. 5 | 6 | ## CPU/GPU Profiling 7 | There is no built-in profiler, but you can use external tools (e.g., cProfile, Py-Spy) to analyze performance. Manual garbage collection (`gc.collect()`) is called after unloading chunks. 8 | 9 | ## Memory Cleanup 10 | Memory is freed by unloading distant chunks and calling `gc.collect()` (see `chunk_manager.py`). 11 | 12 | --- 13 | -------------------------------------------------------------------------------- /docs/advanced-modules.md: -------------------------------------------------------------------------------- 1 | # 🧩 Internal Module System 2 | 3 | ## Dynamic Loading 4 | Some systems (e.g., chunk loading, enemy/NPC instantiation) are loaded dynamically as the player moves or interacts with the world. Python's importlib is not used for hot-reloading, but modules are structured for separation. 5 | 6 | ## Isolated and Testable Systems 7 | Each system (inventory, player, enemy, UI, chunk manager) is implemented as a separate class/module and can be tested in isolation. 8 | 9 | ## Communication Patterns 10 | Game systems communicate via method calls and state checks. Some state machines (FSMs) are used for event/trigger logic (see `level.py`). 11 | 12 | --- 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2024-2025 GabrielNat1 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 4 | 5 | THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- /docs/advanced-events-triggers.md: -------------------------------------------------------------------------------- 1 | # 🔁 Event and Trigger System 2 | 3 | ## How Events Are Triggered 4 | Events are triggered by entering map areas, interacting with objects, or performing specific actions. For example, entering a certain tile or colliding with an NPC can start a dialogue or quest. 5 | 6 | ### Example 7 | "When entering the forest, if the player has the golden key, the Old Man NPC appears." 8 | 9 | ## Time- or Action-Based Triggers 10 | - Quest scheduling 11 | - Weather changes (rain, wind, leaves) 12 | - Enemy respawn and boss events 13 | - Cutscenes and dialogues 14 | 15 | The system uses periodic checks and state machines (FSMs) to control event flow. See `level.py` and `npc.py` for implementation details. 16 | 17 | --- 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Python 2 | .venv/ 3 | venv/ 4 | __pycache__/ 5 | *.py[cod] 6 | *$py.class 7 | *.so 8 | .Python 9 | env/ 10 | build/ 11 | develop-eggs/ 12 | dist/ 13 | downloads/ 14 | eggs/ 15 | .eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | wheels/ 22 | *.egg-info/ 23 | .installed.cfg 24 | *.egg 25 | 26 | # IDEs and editors 27 | .idea/ 28 | .vscode/ 29 | *.swp 30 | *.swo 31 | .vs/ 32 | *.sublime-workspace 33 | *.sublime-project 34 | 35 | # Project specific 36 | /chunks/ 37 | /gitgnore/ 38 | __cache_data__/ 39 | 40 | # OS generated files 41 | .DS_Store 42 | .DS_Store? 43 | ._* 44 | .Spotlight-V100 45 | .Trashes 46 | ehthumbs.db 47 | Thumbs.db 48 | 49 | # Environment variables 50 | .env 51 | .env.local 52 | 53 | # Logs 54 | *.log 55 | logs/ 56 | main.exe 57 | -------------------------------------------------------------------------------- /code/debug.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | #import psutil 3 | import gc 4 | 5 | pygame.init() 6 | font = pygame.font.Font(None, 30) 7 | 8 | def debug(info, y=10, x=10): 9 | display_surface = pygame.display.get_surface() 10 | debug_surf = font.render(str(info), True, 'White') 11 | debug_rect = debug_surf.get_rect(topleft=(x, y)) 12 | pygame.draw.rect(display_surface, 'Black', debug_rect) 13 | display_surface.blit(debug_surf, debug_rect) 14 | gc.collect() 15 | 16 | """ 17 | def show_fps(clock, y=10, x=10): 18 | fps = int(clock.get_fps()) 19 | debug(f"FPS: {fps}", y, x) 20 | 21 | def show_memory_usage(y=40, x=10): 22 | process = psutil.Process() 23 | memory_info = process.memory_info() 24 | memory_usage = memory_info.rss / (1024 * 1024) # Convert to MB 25 | debug(f"Memory Usage: {memory_usage:.2f} MB", y, x) 26 | """ -------------------------------------------------------------------------------- /docs/credits.md: -------------------------------------------------------------------------------- 1 | # Credits & Attribution 💡 2 | 3 | ## Development Team 4 | 5 |
6 | Colaborador 1 7 | Colaborador 2 8 | Colaborador 3 9 | Colaborador 4 10 | Colaborador 5 11 | Colaborador 6 12 |
13 | 14 | ## Assets 15 | 16 | [Ninja Adventure Asset Pack](https://pixel-boy.itch.io/ninja-adventure-asset-pack) 17 | 18 | ## Special Thanks 19 | - Community contributors 20 | - Beta testers -------------------------------------------------------------------------------- /docs/development_mode.md: -------------------------------------------------------------------------------- 1 | # Development Mode (`--dev`) 2 | 3 | You can run the game in **development mode** by passing the `--dev` flag when executing the script. This mode speeds up testing by skipping the intro sequence. 4 | 5 | ## How to run in development mode 6 | 7 | ```python 8 | python main.py --dev 9 | ``` 10 | 11 | ## Implementation example 12 | 13 | The game checks for the `--dev` argument using Python’s `argparse` module: 14 | 15 | ```python 16 | import argparse 17 | 18 | parser = argparse.ArgumentParser() 19 | parser.add_argument('--dev', action='store_true', help='Activate development mode') 20 | args = parser.parse_args() 21 | dev_mode = args.dev 22 | 23 | if dev_mode: 24 | # Skip intro sequence or enable dev features 25 | print("Development mode activated: skipping intro...") 26 | # your code here to skip intro 27 | else: 28 | # Normal game start 29 | pass 30 | ``` 31 | -------------------------------------------------------------------------------- /code/tile.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | from settings import * 3 | 4 | class Tile(pygame.sprite.Sprite): 5 | shared_surfaces = {} 6 | 7 | def __init__(self, pos, groups, sprite_type, surface=None): 8 | unique_groups = list(set(groups)) 9 | super().__init__(unique_groups) 10 | self.sprite_type = sprite_type 11 | y_offset = HITBOX_OFFSET[sprite_type] 12 | 13 | if surface is None: 14 | if sprite_type not in Tile.shared_surfaces: 15 | Tile.shared_surfaces[sprite_type] = pygame.Surface((TILESIZE, TILESIZE)) 16 | self.image = Tile.shared_surfaces[sprite_type] 17 | else: 18 | self.image = surface 19 | 20 | if sprite_type == 'object': 21 | self.rect = self.image.get_rect(topleft=(pos[0], pos[1] - TILESIZE)) 22 | else: 23 | self.rect = self.image.get_rect(topleft=pos) 24 | 25 | self.hitbox = self.rect.inflate(0, y_offset) -------------------------------------------------------------------------------- /code/paths.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | def get_base_path(): 5 | """ 6 | Returns the base path for assets. 7 | - If packaged (Nuitka/PyInstaller), use the executable directory. 8 | - Otherwise, use the project root (one level above the 'code' folder). 9 | """ 10 | if getattr(sys, 'frozen', False): 11 | return os.path.dirname(sys.executable) 12 | 13 | # For development: move one folder up from 'code' 14 | return os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 15 | 16 | def get_asset_path(*paths): 17 | """ 18 | Constructs the full path to an asset. 19 | Prints a warning if the asset does not exist. 20 | """ 21 | full_path = os.path.join(get_base_path(), *paths) 22 | if not os.path.exists(full_path): 23 | print(f"⚠️ Warning: Asset not found at {full_path}") 24 | return full_path 25 | 26 | # Asset folders 27 | GRAPHICS_PATH = get_asset_path('graphics') 28 | AUDIO_PATH = get_asset_path('audio') 29 | MAP_PATH = get_asset_path('map') 30 | FONT_PATH = get_asset_path('graphics', 'font') 31 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | We actively maintain the following versions of Eldoria. If you discover a security issue, please check if it affects a supported version. 6 | 7 | | Version | Supported | 8 | | ------- | --------- | 9 | | 1.x.x | ✅ | 10 | | 0.x.x | ❌ | 11 | 12 | ## Reporting a Vulnerability 13 | 14 | If you find a security vulnerability in Eldoria, please report it responsibly. Follow these steps: 15 | 16 | 1. **Do not** create a public GitHub issue for security vulnerabilities. 17 | 2. Open a **private discussion** in the repository or contact the project maintainers. 18 | 3. Include steps to reproduce, potential impact, and any proposed fixes. 19 | 4. We will acknowledge receipt of your report within **48 hours** and work on a fix promptly. 20 | 21 | ## Security Best Practices 22 | 23 | To ensure the security of Eldoria, we follow these guidelines: 24 | 25 | - Regular security audits. 26 | - Dependency vulnerability checks. 27 | - Controlled branch protection rules. 28 | 29 | Thank you for helping to keep Eldoria secure! 30 | -------------------------------------------------------------------------------- /docs/gameplay.md: -------------------------------------------------------------------------------- 1 | # Combat & Gameplay ⚔️ 2 | 3 | 4 | 5 | ## Combat System 6 | - **Combat Mechanics**: 7 | - Light attacks 8 | - Heavy attacks 9 | - Blocking system 10 | - Dodge rolling 11 | - Stamina management 12 | - Critical hits 13 | - Status effects 14 | 15 | ## Character Stats 16 | - **Main Stats**: 17 | - Health Points (HP) 18 | - Stamina 19 | - Attack Power 20 | - Defense 21 | - Speed 22 | - Critical Rate 23 | 24 | ## Controls 25 | ### Basic Movement 26 | - `W` - Move Up 27 | - `S` - Move Down 28 | - `A` - Move Left 29 | - `D` - Move Right 30 | - `SPACE` - Attack 31 | 32 | ### Combat 33 | - `Left Click` - Attack 34 | - `Right Click` - Magic Attack 35 | - `Q` - Choice weapon 36 | - `E` - Choice magic 37 | 38 | ### Interface 39 | - `ESC` - Menu 40 | 41 | ## Quest System 42 | - Main story quests 43 | - Side quests 44 | - Daily tasks 45 | - Hidden challenges 46 | 47 | ## Tips & Strategies 48 | 1. Always keep stamina for dodging 49 | 2. Use terrain to your advantage 50 | 3. Upgrade equipment regularly 51 | 4. Stock up on potions 52 | 5. Complete side quests for rewards 53 | -------------------------------------------------------------------------------- /docs/advanced-db-save.md: -------------------------------------------------------------------------------- 1 | # 🗃️ Internal Save System and Data Storage 2 | 3 | ## Save File Format 4 | RPG Eldoria uses a region-based chunk system for world persistence. Each region is stored as a compressed `.region` file (using Python's `pickle` and `gzip`), containing chunk data such as terrain, objects, and entities. 5 | 6 | - Save files are located in the folder defined by `CHUNKS_FOLDER` (see `settings.py`). 7 | - Each region file is named `region_X_Y.region` where X and Y are region coordinates. 8 | - Data is serialized with `pickle` and compressed with `gzip` for efficiency. 9 | 10 | ### Example: Saving a Chunk 11 | ```python 12 | import pickle, gzip 13 | with gzip.open('region_0_0.region', 'wb') as f: 14 | pickle.dump(region_data, f) 15 | ``` 16 | 17 | ### Data Structure Example 18 | ```python 19 | { 20 | 'version': 1, 21 | 'boundary': [...], 22 | 'grass': [...], 23 | 'object': [...], 24 | 'entities': [...], 25 | 'player': {'x': 100, 'y': 200} 26 | } 27 | ``` 28 | 29 | ## Save Editor 30 | There is no official save editor. Modifying `.region` files is not recommended and may corrupt your game. Use at your own risk. 31 | 32 | --- 33 | -------------------------------------------------------------------------------- /docs/systemupgrade.md: -------------------------------------------------------------------------------- 1 | # 🛡️ Upgrade System 2 | 3 | The player upgrade system is planned to be implemented in future versions of the game. The idea is to allow players to evolve their characters through improvements in skills, equipment, and attributes. ⚔️🛠️ 4 | 5 | It is worth mentioning that the upgrade system was already completed in previous versions of the game. However, issues related to SDL2 are currently preventing the correct rendering of upgrades. 🐞 We intend not only to fix these problems, but also to improve the system, making it more useful and efficient than in previous versions, as well as implementing a new design for the upgrade interface. 🎨 6 | 7 | ## 🏆 Initial Planning 8 | - Players will be able to acquire upgrade points by completing quests or reaching certain milestones in the game. 🎯 9 | - These points can be used to unlock or enhance specific skills, increase attributes (such as strength, agility, intelligence), or improve equipment. 💪 10 | - The system will be designed to offer strategic choices, allowing for different progression styles and character customization. 🧩 11 | - In the future, the upgrade system interface will be integrated into the game's main menu. 🗺️ 12 | 13 | This feature is currently in the planning stage and may change as development progresses. 🔄 14 | -------------------------------------------------------------------------------- /code/weapon.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | from paths import get_asset_path 3 | 4 | class Weapon(pygame.sprite.Sprite): 5 | def __init__(self, player, groups): 6 | super().__init__(groups) 7 | self.sprite_type = 'weapon' 8 | direction = player.status.split('_')[0] 9 | 10 | full_path = get_asset_path('graphics', 'weapons', player.weapon, 'right.png') 11 | self.image = pygame.image.load(full_path).convert_alpha() 12 | 13 | if direction == 'left': 14 | self.image = pygame.transform.flip(self.image, True, False) 15 | elif direction == 'up': 16 | self.image = pygame.transform.rotate(self.image, 90) 17 | elif direction == 'down': 18 | self.image = pygame.transform.rotate(self.image, -90) 19 | 20 | if direction == 'right': 21 | self.rect = self.image.get_rect(midleft=player.rect.midright + pygame.math.Vector2(0, 16)) 22 | elif direction == 'left': 23 | self.rect = self.image.get_rect(midright=player.rect.midleft + pygame.math.Vector2(0, 16)) 24 | elif direction == 'down': 25 | self.rect = self.image.get_rect(midtop=player.rect.midbottom + pygame.math.Vector2(-10, 0)) 26 | else: # 'up' 27 | self.rect = self.image.get_rect(midbottom=player.rect.midtop + pygame.math.Vector2(-10, 0)) 28 | -------------------------------------------------------------------------------- /docs/features.md: -------------------------------------------------------------------------------- 1 | # Features & Systems 🎮 2 | 3 | ## 1. Optimized Chunk System 🌲 4 | - **Map based on chunks**: 5 | - The world is divided into small areas called **chunks** 6 | - Only chunks near the player are loaded 7 | - Explored chunks are temporarily stored in a `chunk` folder 8 | - Dynamic loading of new areas 9 | - Memory efficient design 10 | 11 | ## 2. NPC and Quest System 🧑‍🤝‍🧑 12 | 13 | 14 | - **NPC Interactions** 15 | - Dynamic dialogue system 16 | - Character progression impacts conversations 17 | - Immersive typing effect 18 | - Branching dialogue paths 19 | 20 | - **Quest System** 21 | - Multiple quest types 22 | - Dynamic reward system 23 | - Progress tracking 24 | - Quest-dependent world changes 25 | 26 | ## 3. Performance Optimization 🚀 27 | - **Graphics Modes**: 28 | - Optimized Mode 29 | - Normal Mode 30 | - Extreme Performance Mode 31 | - **Screen Options**: 32 | - Multiple resolution support 33 | - Fullscreen/Windowed modes 34 | - Custom aspect ratios 35 | 36 | ## 4. Audio System 🎵 37 | - Dynamic background music 38 | - Context-sensitive sound effects 39 | - Volume control for: 40 | - Master volume 41 | - Music volume 42 | - Effects volume 43 | - Custom audio triggers 44 | 45 | ## 5. Debug & Development Tools 🛠️ 46 | - FPS counter 47 | - Debug console 48 | - Performance metrics 49 | - Memory usage tracking 50 | -------------------------------------------------------------------------------- /code/entity.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | from math import sin 3 | 4 | class Entity(pygame.sprite.Sprite): 5 | def __init__(self,groups): 6 | super().__init__(groups) 7 | self.frame_index = 0 8 | self.animation_speed = 0.10 9 | self.direction = pygame.math.Vector2() 10 | 11 | def move(self,speed): 12 | if self.direction.magnitude() != 0: 13 | self.direction = self.direction.normalize() 14 | 15 | if hasattr(self, 'alive') and self.alive: 16 | self.hitbox.x += self.direction.x * speed 17 | self.collision('horizontal') 18 | self.hitbox.y += self.direction.y * speed 19 | self.collision('vertical') 20 | self.rect.center = self.hitbox.center 21 | 22 | def collision(self,direction): 23 | if direction == 'horizontal': 24 | for sprite in self.obstacle_sprites: 25 | if sprite.hitbox.colliderect(self.hitbox): 26 | if self.direction.x > 0: # moving right 27 | self.hitbox.right = sprite.hitbox.left 28 | if self.direction.x < 0: # moving left 29 | self.hitbox.left = sprite.hitbox.right 30 | 31 | if direction == 'vertical': 32 | for sprite in self.obstacle_sprites: 33 | if sprite.hitbox.colliderect(self.hitbox): 34 | if self.direction.y > 0: # moving down 35 | self.hitbox.bottom = sprite.hitbox.top 36 | if self.direction.y < 0: # moving up 37 | self.hitbox.top = sprite.hitbox.bottom 38 | 39 | def wave_value(self): 40 | value = sin(pygame.time.get_ticks()) 41 | if value >= 0: 42 | return 255 43 | else: 44 | return 0 -------------------------------------------------------------------------------- /docs/technical.md: -------------------------------------------------------------------------------- 1 | # Technical Details 🛠️ 2 | 3 | ## Technologies Used 4 | - **Python 3.x** 🐍 5 | - **Pygame**: For graphical rendering and gameplay control 🎮 6 | - **Tiled Map Editor**: For map creation and editing 🗺️ 7 | - **SQLite** (future): For implementing the save system 💾 8 | 9 | ## System Requirements 10 | - Operating System: Windows 10/11, Linux, or macOS 11 | - Processor: 1.5 GHz or faster 12 | - Memory: 250 - 500 MB RAM minimum 13 | - Graphics: DirectX 9 compatible graphics card 14 | - Storage: 100 MB available space 15 | - Python 3.x or higher 16 | 17 | ## Dependencies 18 | - pygame-2.6.1 19 | - pillow-11.1.0 20 | 21 | ## Installation 22 | 1. Clone the repository 23 | ```bash 24 | git clone https://github.com/GabrielNat1/RPG-Eldoria.git 25 | ``` 26 | 27 | 2. Install dependencies 28 | ```bash 29 | pip install -r requirements.txt 30 | ``` 31 | 32 | 3. Run the game 33 | ```bash 34 | python main.py 35 | ``` 36 | 37 | ## Development Setup 38 | 1. Set up virtual environment 39 | ```bash 40 | python -m venv .venv 41 | source .venv/bin/activate # Linux/macOS 42 | .venv\Scripts\activate # Windows 43 | ``` 44 | 45 | 2. Install development dependencies 46 | ```bash 47 | pip install -r requirements-dev.txt 48 | ``` 49 | 50 | 3. Install pre-commit hooks 51 | ```bash 52 | pre-commit install 53 | ``` 54 | 55 | ## Building from Source 56 | 1. Clone with submodules 57 | ```bash 58 | git clone --recursive https://github.com/GabrielNat1/RPG-Eldoria.git 59 | ``` 60 | 61 | 62 | ## Contributing 63 | 1. Fork the repository 64 | 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 65 | 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 66 | 4. Push to the branch (`git push origin feature/amazing-feature`) 67 | 5. Open a Pull Request 68 | -------------------------------------------------------------------------------- /code/magic.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | from settings import * 3 | from random import randint 4 | 5 | class MagicPlayer: 6 | def __init__(self,animation_player): 7 | self.animation_player = animation_player 8 | self.sounds = { 9 | 'heal': pygame.mixer.Sound(AUDIO_PATHS['heal']), 10 | 'flame': pygame.mixer.Sound(AUDIO_PATHS['flame']) 11 | } 12 | 13 | def heal(self,player,strength,cost,groups): 14 | if player.energy >= cost: 15 | self.sounds['heal'].play() 16 | player.health += strength 17 | player.energy -= cost 18 | if player.health >= player.stats['health']: 19 | player.health = player.stats['health'] 20 | self.animation_player.create_particles('aura',player.rect.center,groups) 21 | self.animation_player.create_particles('heal',player.rect.center,groups) 22 | 23 | def flame(self,player,cost,groups): 24 | if player.energy >= cost: 25 | player.energy -= cost 26 | self.sounds['flame'].play() 27 | 28 | if player.status.split('_')[0] == 'right': direction = pygame.math.Vector2(1,0) 29 | elif player.status.split('_')[0] == 'left': direction = pygame.math.Vector2(-1,0) 30 | elif player.status.split('_')[0] == 'up': direction = pygame.math.Vector2(0,-1) 31 | else: direction = pygame.math.Vector2(0,1) 32 | 33 | for i in range(1,6): 34 | if direction.x: #horizontal 35 | offset_x = (direction.x * i) * TILESIZE 36 | x = player.rect.centerx + offset_x + randint(-TILESIZE // 3, TILESIZE // 3) 37 | y = player.rect.centery + randint(-TILESIZE // 3, TILESIZE // 3) 38 | self.animation_player.create_particles('flame',(x,y),groups) 39 | else: # vertical 40 | offset_y = (direction.y * i) * TILESIZE 41 | x = player.rect.centerx + randint(-TILESIZE // 3, TILESIZE // 3) 42 | y = player.rect.centery + offset_y + randint(-TILESIZE // 3, TILESIZE // 3) 43 | self.animation_player.create_particles('flame',(x,y),groups) -------------------------------------------------------------------------------- /code/memory_check.py: -------------------------------------------------------------------------------- 1 | import tracemalloc 2 | import time 3 | 4 | def monitor_memory(interval=5, top_n=10): 5 | print("Memory monitoring started...") 6 | tracemalloc.start() 7 | try: 8 | while True: 9 | snapshot = tracemalloc.take_snapshot() 10 | top_stats = snapshot.statistics('traceback') 11 | 12 | print("\n[ Top {} memory allocation locations ]".format(top_n)) 13 | count = 0 14 | for stat in top_stats: 15 | for frame in stat.traceback: 16 | if "rpgeldoria" in frame.filename: 17 | print(f"\nFile: {frame.filename}:{frame.lineno}") 18 | print(f" {stat.size / 1024:.1f} KiB allocated") 19 | print(" Traceback:") 20 | for tb_frame in stat.traceback.format(): 21 | print(" " + tb_frame) 22 | count += 1 23 | break 24 | if count >= top_n: 25 | break 26 | 27 | current, peak = tracemalloc.get_traced_memory() 28 | print(f"Current memory: {current / 1024:.1f} KiB; Peak: {peak / 1024:.1f} KiB") 29 | print("-" * 40) 30 | time.sleep(interval) 31 | except KeyboardInterrupt: 32 | print("Memory monitoring stopped.") 33 | finally: 34 | tracemalloc.stop() 35 | 36 | def memory_usage_demo(): 37 | print("Starting memory usage demo...") 38 | tracemalloc.start() 39 | 40 | data = [i ** 2 for i in range(10000)] 41 | snapshot = tracemalloc.take_snapshot() 42 | top_stats = snapshot.statistics('lineno') 43 | 44 | print("[ Top 10 ]") 45 | for stat in top_stats[:10]: 46 | print(stat) 47 | 48 | current, peak = tracemalloc.get_traced_memory() 49 | print(f"Memory usage: {current / 1024:.1f} KiB; Peak: {peak / 1024:.1f} KiB") 50 | 51 | tracemalloc.stop() 52 | 53 | if __name__ == "__main__": 54 | memory_usage_demo() 55 | -------------------------------------------------------------------------------- /docs/memory-checker.md: -------------------------------------------------------------------------------- 1 | # Memory Check Utility (`memory_check.py`) 2 | 3 | ## 📌 Overview 4 | `memory_check.py` provides tools for monitoring memory usage in Python applications. 5 | Originally designed for the **RPG Eldoria** project, it can be used in any Python program. 6 | 7 | It uses Python’s built-in **`tracemalloc`** library to track memory allocations and report the parts of the code consuming the most resources. 8 | 9 | --- 10 | 11 | ## ✨ Features 12 | - 🔴 **Live Monitoring** – continuously tracks memory usage at runtime 13 | - 📸 **Snapshots** – capture and compare memory states 14 | - 🧩 **Detailed Tracebacks** – shows file, line number, and traceback of allocations 15 | - 📊 **Current & Peak Usage** – reports both current and peak memory in KiB 16 | - 🧪 **Demo Included** – a simple function to test memory tracking 17 | 18 | --- 19 | 20 | ## 🚀 Usage 21 | 22 | ### Run the demo 23 | ```bash 24 | python code/memory_check.py 25 | ``` 26 | 27 | ### Enable live monitoring in your project 28 | In `main.py`, import the monitor after your other imports: 29 | 30 | ```python 31 | from memory_check import monitor_memory 32 | import threading 33 | ``` 34 | 35 | Start the monitor before creating your `Game` instance: 36 | 37 | ```python 38 | if __name__ == '__main__': 39 | threading.Thread(target=monitor_memory, args=(5,), daemon=True).start() 40 | game = Game() 41 | game.run() 42 | ``` 43 | 44 | This enables background memory monitoring while your game is running. 45 | 46 | --- 47 | 48 | ## 🔍 Example Output 49 | ```shell 50 | Memory monitoring started... 51 | 52 | [ Top 10 memory allocation locations ] 53 | 54 | File: code/chunk_manager.py:104 55 | 61.2 KiB allocated 56 | Traceback: 57 | File "code/chunk_manager.py", line 104 58 | 59 | Current memory: 2061.1 KiB; Peak: 3198.6 KiB 60 | ---------------------------------------- 61 | ``` 62 | 63 | --- 64 | 65 | ## 🛠️ When to Use 66 | - Detecting **memory leaks** 67 | - Profiling **memory hotspots** 68 | - Optimizing **resource management** in large projects 69 | 70 | --- 71 | 72 | ## 📦 Requirements 73 | - Python **3.4+** 74 | - No external dependencies (uses only the standard library) 75 | 76 | --- 77 | 78 | ## 📝 Notes 79 | - The monitor is **non-intrusive** and can safely run in the background 80 | - Best used during **gameplay** or **heavy resource loading phases** 81 | -------------------------------------------------------------------------------- /code/support.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | from csv import reader 3 | from os import walk 4 | import platform 5 | import os 6 | 7 | if platform.system() in ["Linux", "Darwin"]: 8 | import resource 9 | 10 | image_cache = {} 11 | 12 | def import_csv_layout(path): 13 | terrain_map = [] 14 | try: 15 | with open(path) as level_map: 16 | layout = reader(level_map, delimiter=',') 17 | for row in layout: 18 | terrain_map.append(list(row)) 19 | if not terrain_map: 20 | print(f"AVISO: O arquivo {path} não contém dados válidos.") 21 | return terrain_map 22 | except FileNotFoundError: 23 | return [] 24 | except Exception as e: 25 | return [] 26 | 27 | def import_folder(path): 28 | surface_list = [] 29 | try: 30 | for _, __, img_files in walk(path): 31 | for image in img_files: 32 | full_path = os.path.join(path, image) 33 | if full_path not in image_cache: 34 | try: 35 | image_surf = pygame.image.load(full_path).convert_alpha() 36 | image_cache[full_path] = image_surf 37 | except pygame.error as e: 38 | continue 39 | surface_list.append(image_cache[full_path]) 40 | if not surface_list: 41 | print(f"AVISO: Nenhuma imagem foi carregada de {path}") 42 | return surface_list 43 | except Exception as e: 44 | print(f"Erro ao acessar o diretório {path}: {e}") 45 | return [] 46 | 47 | def check_os_and_limit_memory(memory_limit_mb): 48 | """ 49 | Scans the operating system and applies a RAM limiter 50 | on macOS or Linux systems. 51 | 52 | :p aram memory_limit_mb: Memory limit in MB. 53 | """ 54 | os_name = platform.system() 55 | if os_name in ["Linux", "Darwin"]: 56 | soft, hard = resource.getrlimit(resource.RLIMIT_AS) 57 | memory_limit_bytes = memory_limit_mb * 1024 * 1024 58 | resource.setrlimit(resource.RLIMIT_AS, (memory_limit_bytes, hard)) 59 | #print(f"Limite de memória definido para {memory_limit_mb} MB no {os_name}.") 60 | else: 61 | #print(f"Sistema operacional {os_name} não suporta limitador de memória.") 62 | pass 63 | 64 | def get_main_surface(): 65 | if hasattr(pygame.display, "get_window"): 66 | try: 67 | return pygame.display.get_window().get_surface() 68 | except Exception: 69 | pass 70 | 71 | return pygame.display.get_surface() -------------------------------------------------------------------------------- /docs/eldoria-benchmark.md: -------------------------------------------------------------------------------- 1 |

2 |
3 | 🖥️ System Requirements 4 |
5 |

6 | 7 | 🎮 RPG Eldoria is designed to run smoothly on low-end hardware, making it accessible to a wide range of players. Below are the minimum and recommended requirements: 8 | 9 | --- 10 | 11 | ## ✅ Minimum Requirements 12 | 13 | - CPU: 1.6 GHz Dual Core 14 | - RAM: 520 MB 15 | - Storage: 300 MB of free space 16 | - GPU: Any integrated graphics (e.g. Intel HD) 17 | - OS: Windows 7 / Linux / macOS 18 | - Dependencies: Python 3.10+, Pygame 2.x 19 | 20 | --- 21 | 22 | ## 💡 Recommended Requirements 23 | 24 | - CPU: 2.4 GHz Quad Core 25 | - RAM: 2 GB or more 26 | - Storage: 500 MB of free space 27 | - GPU: Integrated or entry-level dedicated GPU (Intel UHD / NVIDIA MX) 28 | - OS: Windows 10+ / Linux (latest) 29 | - Dependencies: Python 3.10+, **Pygame-CE with SDL2** 30 | 31 | --- 32 | 33 | ## ⚙️ Performance Comparison – Pygame vs Pygame-CE (SDL2 GPU) 34 | 35 | | Test Scenario | Pygame (Avg FPS) | Pygame-CE (SDL2) | Performance Difference | 36 | |--------------------------------------------|------------------|------------------|---------------------------| 37 | | 500 animated sprites | 42 FPS | 110 FPS | 🔺 +160% | 38 | | 1000 sprites with collisions | 25 FPS | 95 FPS | 🔺 +280% | 39 | | Particle effects (smoke, fire, etc.) | 15 FPS | 85 FPS | 🔺 +467% | 40 | | Real-time rotation and scaling | 30 FPS | 108 FPS | 🔺 +260% | 41 | | CPU Usage | ~85% | ~30% | 🔻 -55% | 42 | | GPU Usage | ~0% | ~35% | ✅ GPU Acceleration | 43 | | Scene loading time | 1.8s | 0.6s | 🔺 +200% faster | 44 | 45 | > 📌 **Notes**: 46 | > - Benchmarks were run on a basic Intel i5 laptop with 8 GB RAM and hybrid GPU setup. 47 | > - Even low-end systems benefit significantly from GPU offloading with Pygame-CE + SDL2. 48 | > - This configuration is now the default as of version **2.1.0**. 49 | 50 | --- 51 | 52 | 🎯 **Conclusion**: With Pygame-CE and SDL2 now fully integrated, Eldoria delivers smoother gameplay, richer effects, and better performance across a broad range of hardware — all while maintaining its lightweight and accessible nature. 53 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 |

2 | 🎮🗡️ RPG Eldoria 🛡️✨ 3 |

4 | 5 |

6 | 7 | Status 8 | License 9 | Language 10 | GitHub Stars 11 | 12 |
13 | 14 | Python 3.10+ 15 | Pygame CE 2.x 16 | SDL2 GPU 17 | Memory Optimized Enemies Planned 18 | 19 | Windows 20 | 21 | Linux 22 | 23 |

24 | 25 |

26 | 27 | 28 | 29 | ## Introduction 🌍 30 | **RPG Eldoria** is a 2D RPG developed in **Python** using the Pygame library. Inspired by games like **Stardew Valley** and **Dark Souls**, the game combines a **pixel art** visual style with challenging combat and exploration mechanics. 31 | 32 | ## 📚 Main Sections 33 | 34 | ### Core Game 35 | - [✨ Features & Systems](./features.md) 36 | - [🗡️ Combat & Gameplay](./gameplay.md) 37 | - [📊 Polling System *(Coming Soon)*](./polling.md) 38 | - [⬆️ System Upgrade *(Coming Soon)*](./systemupgrade.md) 39 | 40 | ### Technical & Legal 41 | - [⚙️ Technical Details](./technical.md) 42 | - [👥 Credits & Attribution](./credits.md) 43 | - [📜 License](../LICENSE) 44 | - [🔐 Security](../SECURITY.md) 45 | 46 | --- 47 | 48 | ## 🔗 Quick Links 49 | - [📥 Installation Guide](./technical.md#installation) 50 | - [🎮 Game Controls](./gameplay.md#controls) 51 | - [📈 Requirements & Benchmark](./eldoria-benchmark.md) 52 | - [📝 ChangeLog](./changelog.md) 53 | - [🐛 Report a Bug / Security Vulnerabilities](../SECURITY.md#reporting-a-vulnerability) 54 | - [📖 Project Wiki](https://github.com/GabrielNat1/RPG-Eldoria/wiki) 55 | 56 | --- 57 | 58 | ## 🧰 Advanced Technical Documentation 59 | - [🗃️ Database & Internal Saving](./advanced-db-save.md) 60 | - [💾 Cross-Platform Compatibility](./advanced-compatibility.md) 61 | - [🔁 Event & Trigger System](./advanced-events-triggers.md) 62 | - [📦 Asset Management](./advanced-assets.md) 63 | - [🧮 Performance Management](./advanced-performance.md) 64 | - [⚙️ Development Mode](./development_mode.md) 65 | - [🛠️ Resource Verification Module](./verify_resources.md) 66 | - [🧩 Internal Module System](./advanced-modules.md) 67 | - [🧠 Memory Checker System](./memory-checker.md) 68 | -------------------------------------------------------------------------------- /docs/polling.md: -------------------------------------------------------------------------------- 1 | # 🎮 Input System – Polling (Coming Soon) 2 | 3 | As Eldoria evolves toward a faster and more responsive combat system, we are migrating to a **polling-based input system**. 4 | 5 | --- 6 | 7 | ## 🧠 What Is Polling? 8 | 9 | **Polling** is a method where the game continuously checks the state of keys (or other inputs) every frame, rather than waiting for discrete input events like key presses or releases. 10 | 11 | This approach is ideal for real-time games that require precise, continuous input. 12 | 13 | ### 🔤 Code Example 14 | 15 | ```python 16 | enemies = [ 17 | Enemy(100, 100), 18 | Enemy(400, 300), 19 | Enemy(600, 150) 20 | ] 21 | 22 | for enemy in enemies: 23 | enemy.update(player.get_position()) 24 | 25 | for enemy in enemies: 26 | if enemy.active: 27 | screen.blit(enemy.image, enemy.rect) 28 | ``` 29 | 30 | --- 31 | 32 | ## ⚔️ Polling Tests 33 | 34 | | Feature/Aspect | Event-Driven (pygame.event.get()) | Polling (pygame.key.get_pressed()) | 35 | |-------------------------------|-----------------------------------|----------------------------------------| 36 | | Style | Reactive | Continuous checking | 37 | | Input latency | Low | Very low | 38 | | Multi-key support | ⚠️ Manual handling required | ✅ Native and easy | 39 | | Suited for Menus / UI | ✅ Yes | ⚠️ Needs extra logic | 40 | | Suited for Real-Time Gameplay | ⚠️ OK, but less fluid | ✅ Excellent for combat and movement | 41 | | CPU usage | Slightly lower | Slightly higher (but negligible) | 42 | | RAM usage | Slightly lower | Slightly higher (but negligible) | 43 | | Key repeat on hold | OS-controlled delays | Full control & faster reaction | 44 | | Implementation complexity | Medium | ✅ Simpler for gameplay logic | 45 | 46 | --- 47 | 48 | ## ✅ Why Polling for Eldoria? 49 | 50 | - 🎯 **Improved responsiveness** during fast-paced actions like dodging, attacking, or casting spells. 51 | - 🧩 **Simpler logic** for handling multiple simultaneous keys (like moving diagonally while sprinting). 52 | - 🔁 **Consistent input detection** across all frames, without relying on OS key repeat timings. 53 | - 🧪 Better suited for upcoming **combat-focused mechanics**. 54 | 55 | --- 56 | 57 | ## 🛠️ Current Plan 58 | 59 | Polling will be used for: 60 | 61 | - Movement 62 | - Combat actions (attack, dash, spell) 63 | - Charged or hold-based abilities 64 | - Real-time interactions with NPCs or world elements 65 | 66 | Event-driven input will still be used for: 67 | 68 | - Menus (pause, inventory) 69 | - Mouse interactions (clicks, UI) 70 | - System events (quit, resize) 71 | 72 | --- 73 | 74 | ## 🔚 Final Notes 75 | 76 | > Polling isn't "better" in every situation — but for **real-time gameplay**, it's a massive upgrade. 77 | > This hybrid model (polling + events) gives Eldoria the best of both worlds: fluid controls and precise UI handling. 78 | -------------------------------------------------------------------------------- /docs/verify_resources.md: -------------------------------------------------------------------------------- 1 | # verify_resources Module Documentation 2 | 3 | ## Overview 4 | 5 | The `verify_resources` module is responsible for checking the integrity of game resources (audio files, graphics, and maps) and providing an interface to repair corrupted or missing files. It only works when the project is in root folders with source code available. For compiled versions (`.exe`, `.deb`), it cannot recover corrupted or missing files. 6 | 7 | ## Main Features 8 | 9 | - **Resource Verification:** Checks if all necessary files are present and intact. 10 | - **Error Interface:** Displays a graphical interface showing missing or corrupted files. 11 | - **Automatic Repair:** Attempts to repair missing or corrupted files (only in development mode). 12 | - **Report Generation:** Exports a report with problematic files. 13 | 14 | ## Limitations 15 | 16 | - **Compiled Versions:** Repair is not possible in compiled versions (`.exe`, `.deb`). If problems occur with executables, users should report the issue through the official repository. 17 | - **Dependencies:** Requires the project to be in root folders with source code available to work properly. 18 | 19 | ## Main Classes 20 | 21 | ### ErrorInterface 22 | 23 | Responsible for displaying the graphical error interface and managing user interaction. 24 | 25 | **Main Methods:** 26 | 27 | - `repair_file(filepath)`: Attempts to repair a missing or corrupted file. 28 | - `repair_all()`: Attempts to repair all problematic files. 29 | - `export_report()`: Exports a report listing problematic files. 30 | - `run()`: Runs the graphical interface. 31 | 32 | ### ResourceVerifier 33 | 34 | Responsible for verifying the integrity of game resources. 35 | 36 | **Main Methods:** 37 | 38 | - `verify_file(category, subcategory, filename)`: Verifies a specific file. 39 | - `verify_all(loading_callback=None)`: Verifies all game resources. 40 | - `show_error_interface()`: Displays the graphical error interface. 41 | 42 | ## How to Use 43 | 44 | ### Resource Verification: 45 | 46 | 47 | ```python 48 | verifier = ResourceVerifier() 49 | verifier.verify_all() 50 | ``` 51 | 52 | ### File Repair: 53 | 54 | - In development versions, the graphical interface will allow repairing missing or corrupted files. 55 | - In compiled versions, the interface will inform that repair is not possible and guide the user to report the issue. 56 | 57 | ### Report Export: 58 | 59 | The graphical interface allows exporting a report with problematic files to facilitate troubleshooting. 60 | 61 | ## Common Error Messages 62 | 63 | - **Missing File:** Indicates a required file was not found. 64 | - **Corrupted File:** Indicates a file is present but cannot be read correctly. 65 | - **Repair Denied:** In compiled versions, informs that repair is not possible and advises the user to reinstall the game or report the issue. 66 | 67 | ## Recommendations 68 | 69 | - **For Developers:** Keep a backup copy of resources in a backup directory to facilitate automatic repair. 70 | - **For Users:** If you encounter problems with compiled versions, report the issue in the official game repository, including details about the error and the operating system used. 71 | 72 | ## Example Error Report 73 | 74 | ```text 75 | 76 | === RPG Eldoria Resource Check Report === 77 | 78 | Date: 2023-10-25 14:30:45 79 | 80 | Missing files: 81 | - graphics/monsters/raccoon/attack/0.png 82 | - audio/music/main.ogg 83 | 84 | Corrupted files: 85 | - graphics/ui/dialog/DialogInfo_0.png 86 | ``` 87 | 88 | --- 89 | 90 | This document should be used as a reference to understand and troubleshoot issues related to game resources. 91 | -------------------------------------------------------------------------------- /code/ui.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | from settings import * 3 | 4 | class UI: 5 | def __init__(self): 6 | # general 7 | self.display_surface = pygame.display.get_surface() 8 | self.font = pygame.font.Font(UI_FONT,UI_FONT_SIZE) 9 | 10 | # bar setup 11 | self.health_bar_rect = pygame.Rect(10,10,HEALTH_BAR_WIDTH,BAR_HEIGHT) 12 | self.energy_bar_rect = pygame.Rect(10,34,ENERGY_BAR_WIDTH,BAR_HEIGHT) 13 | self.stamina_bar_rect = pygame.Rect(10,58,ENERGY_BAR_WIDTH,BAR_HEIGHT) 14 | 15 | # convert weapon dictionary 16 | self.weapon_graphics = [] 17 | self.weapons_data = [] 18 | for weapon in weapon_data.values(): 19 | path = weapon['graphic'] 20 | weapon_surf = pygame.image.load(path).convert_alpha() 21 | self.weapon_graphics.append(weapon_surf) 22 | self.weapons_data.append(weapon) 23 | 24 | # convert magic dictionary 25 | self.magic_graphics = [] 26 | for magic in magic_data.values(): 27 | magic = pygame.image.load(magic['graphic']).convert_alpha() 28 | self.magic_graphics.append(magic) 29 | 30 | def show_bar(self,current,max_amount,bg_rect,color,target_surface): 31 | # draw bg 32 | pygame.draw.rect(target_surface,UI_BG_COLOR,bg_rect) 33 | 34 | # converting stat to pixel 35 | ratio = current / max_amount 36 | current_width = bg_rect.width * ratio 37 | current_rect = bg_rect.copy() 38 | current_rect.width = current_width 39 | 40 | # drawing the bar 41 | pygame.draw.rect(target_surface,color,current_rect) 42 | pygame.draw.rect(target_surface,UI_BORDER_COLOR,bg_rect,3) 43 | 44 | def show_exp(self,exp,target_surface): 45 | text_surf = self.font.render(str(int(exp)),False,TEXT_COLOR) 46 | x = self.display_surface.get_size()[0] - 250 # Moved closer to right edge 47 | y = self.display_surface.get_size()[1] - 250 # Moved closer to bottom edge 48 | text_rect = text_surf.get_rect(bottomright = (x,y)) 49 | 50 | pygame.draw.rect(target_surface,UI_BG_COLOR,text_rect.inflate(20,20)) 51 | target_surface.blit(text_surf,text_rect) 52 | pygame.draw.rect(target_surface,UI_BORDER_COLOR,text_rect.inflate(20,20),3) 53 | 54 | def selection_box(self, left, top, has_switched, target_surface): 55 | bg_rect = pygame.Rect(left, top, ITEM_BOX_SIZE, ITEM_BOX_SIZE) 56 | pygame.draw.rect(target_surface, UI_BG_COLOR, bg_rect) # Draw background on target_surface 57 | if has_switched: 58 | pygame.draw.rect(target_surface, UI_BORDER_COLOR_ACTIVE, bg_rect, 3) 59 | else: 60 | pygame.draw.rect(target_surface, UI_BORDER_COLOR, bg_rect, 3) 61 | return bg_rect 62 | 63 | def weapon_overlay(self, weapon_index, has_switched, target_surface): 64 | if weapon_index is None: 65 | return 66 | 67 | bg_rect = self.selection_box(10, 630, has_switched, target_surface) # Pass target_surface 68 | weapon_surf = self.weapon_graphics[weapon_index] 69 | weapon_rect = weapon_surf.get_rect(center=bg_rect.center) 70 | target_surface.blit(weapon_surf, weapon_rect) 71 | 72 | def magic_overlay(self, magic_index, has_switched, target_surface): 73 | bg_rect = self.selection_box(80, 635, has_switched, target_surface) # Pass target_surface 74 | magic_surf = self.magic_graphics[magic_index] 75 | magic_rect = magic_surf.get_rect(center=bg_rect.center) 76 | target_surface.blit(magic_surf, magic_rect) 77 | 78 | def display(self,player, target_surface): 79 | self.show_bar(player.health, player.stats['health'], self.health_bar_rect, HEALTH_COLOR, target_surface) 80 | self.show_bar(player.energy, player.stats['energy'], self.energy_bar_rect, ENERGY_COLOR, target_surface) 81 | self.show_bar(player.stamina, player.stats['stamina'], self.stamina_bar_rect, ENERGY_COLOR, target_surface) 82 | 83 | self.show_exp(player.exp, target_surface) 84 | 85 | self.weapon_overlay(player.weapon_index, not player.can_switch_weapon, target_surface) 86 | self.magic_overlay(player.magic_index, not player.can_switch_magic, target_surface) -------------------------------------------------------------------------------- /docs/changelog.md: -------------------------------------------------------------------------------- 1 | # 📜 Changelog – RPG-Eldoria 2 | *Project update history* 3 | 4 | --- 5 | 6 | ## **🌌 Version 0.5.0** (2024-11-27) 7 | ### ✨ Core Foundations 8 | - Initial map creation 9 | - Basic player movement system 10 | - First mechanics testing 11 | 12 | ### 🔧 Technical 13 | - Initial directory structure 14 | - Basic sprite and collision configuration 15 | 16 | --- 17 | 18 | ## **🔹 Version 1.0.0** (2024-11-29) 19 | ### ✨ New Features 20 | - Core systems completed (movement, weapons, UI) 21 | - Player interface implementation (weapons/UI) 22 | - Basic monsters and magic systems 23 | 24 | ### ⚙️ Balancing 25 | - Initial health and XP adjustments 26 | - Basic enemy configuration 27 | 28 | ### 🔧 Technical 29 | - Chunk loading optimization 30 | - Improved map area management 31 | 32 | --- 33 | 34 | ## **🔹 Version 1.2.0** (2024-12-17) 35 | ### ✨ New Features 36 | - Functional menus (main/pause) 37 | - Audio system for menus and effects 38 | - Introduction screen and game icon 39 | 40 | ### 🐛 Fixes 41 | - Menu conflicts resolved 42 | - Loading bugs fixed 43 | 44 | --- 45 | 46 | ## **🔹 Version 1.5.0** (2025-01-29) 47 | ### ✨ New Features 48 | - Complete NPC system with dialogues 49 | - Quest progression system 50 | - Stamina mechanic for actions 51 | 52 | ### ⚙️ Balancing 53 | - Attribute rebalancing 54 | - Enemy difficulty adjustments 55 | 56 | ### 🔧 Technical 57 | - Full code refactoring 58 | - Dynamic chunk system 59 | 60 | --- 61 | 62 | ## **🌌 Version 2.0.0** (2025-02-23) 63 | ### ✨ Major Additions 64 | - Expansive new map with village and structures 65 | - Weather system (rain and wind) 66 | - Additional quests and expanded dialogues 67 | 68 | ### ⚡ Improvements 69 | - Sprite memory optimization 70 | - Refactored weapon system 71 | - Dynamic visual effects 72 | 73 | ### 🐛 Critical Fixes 74 | - NPC respawn bugs 75 | - Performance issues in large areas 76 | 77 | --- 78 | 79 | ## **🔧 Technical Updates** (2025-05 to 2025-06) 80 | ### 🚀 Performance 81 | - Complete Cython rebuild 82 | - Multiplatform support (Linux/macOS) 83 | - Implemented graphical benchmarks 84 | 85 | ### 🌧️ Systems 86 | - Optimized rain/wind effects 87 | - Enhanced memory management 88 | 89 | --- 90 | 91 | ## **🌟 Version 2.1.0** (2025-06-22) 92 | ### ✨ New Features 93 | - Full migration to **pygame-ce** 94 | - Initial **GPU acceleration** support 95 | - New **loading screen** with progress bar 96 | - Graphical overhaul: 97 | - Improved lighting 98 | - Enhanced texture quality 99 | - Smoother animations 100 | 101 | ### ⚙️ Technical Improvements 102 | - Fixed Cython integration bugs 103 | - Compatibility fixes (Linux/macOS) 104 | 105 | ### 🐛 Bug Fixes 106 | - Fixed crash on loading screen in some systems 107 | - Partial fix for overlay issues during cutscenes 108 | 109 | --- 110 | 111 | ## **🚧 Future Update – Version 2.1.x** *(In Development)* 112 | ### 🔧 Planned Bug Fixes 113 | - Final fix for overlay glitches during cutscenes 114 | - Stability improvements for GPU acceleration 115 | - Cross-platform graphical compatibility refinements 116 | 117 | --- 118 | 119 | # 📜 Version History – RPG-Eldoria 120 | 121 | | Version | Date | Key Changes | Category | 122 | |------------------|--------------|------------------------------------------------------------------------------|-----------------------| 123 | | **0.5.0** | 2024-11-27 | Initial map, basic movement, mechanic prototypes | Core Foundations | 124 | | **1.0.0** | 2024-11-29 | Core systems (UI/weapons), basic monsters, magic | Initial Release | 125 | | **1.2.0** | 2024-12-17 | Functional menus, audio system, intro screen | Interface/Audio | 126 | | **1.5.0** | 2025-01-29 | NPC dialogues, quest system, stamina mechanic | RPG Systems | 127 | | **2.0.0** | 2025-02-23 | Expanded map, weather system, sprite optimizations | Major Expansion | 128 | | *Tech Updates* | 2025-05-06 | Cython rebuild, multiplatform (Linux/macOS), memory & rain optimization | Performance Patch | 129 | | **2.1.0** | 2025-06-22 | pygame-ce, GPU acceleration, graphical overhaul, loading screen | Feature Release | 130 | | **2.1.x** | *In Dev* | Bug fixes (cutscene overlay, GPU stability, visual adjustments) | Maintenance | 131 | 132 | --- 133 | 134 | > 💡 **Tip**: Check [GitHub commits](https://github.com/GabrielNat1/RPG-Eldoria/commits) for specific details. 135 | > 🔍 Search for: NPC, quest, optimization, map 136 | -------------------------------------------------------------------------------- /code/upgrade.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | import pygame._sdl2.video as sdl2 3 | from settings import * 4 | 5 | class Upgrade: 6 | def __init__(self, player): 7 | self.display_surface = pygame.display.get_surface() 8 | self.player = player 9 | self.font = pygame.font.Font(UI_FONT, 48) # Fonte maior para "Coming Soon" 10 | self.small_font = pygame.font.Font(UI_FONT, 24) 11 | self.is_opening = True 12 | self.animation_progress = 0 13 | self.last_update = pygame.time.get_ticks() 14 | 15 | def input(self): 16 | keys = pygame.key.get_pressed() 17 | if keys[pygame.K_ESCAPE] or keys[pygame.K_u]: 18 | self.is_opening = False 19 | return True 20 | return False 21 | 22 | def animate(self): 23 | current_time = pygame.time.get_ticks() 24 | if current_time - self.last_update >= 16: 25 | if self.is_opening: 26 | self.animation_progress = min(1, self.animation_progress + 0.2) 27 | else: 28 | self.animation_progress = max(0, self.animation_progress - 0.2) 29 | self.last_update = current_time 30 | 31 | def display(self, surface=None): 32 | # surface pode ser passado pelo Level, se não, usa display_surface 33 | if surface is None: 34 | surface = self.display_surface 35 | 36 | if self.input(): 37 | if self.animation_progress <= 0: 38 | return True 39 | 40 | self.animate() 41 | 42 | # Fundo semi-transparente 43 | bg_color = (0, 0, 0, int(180 * self.animation_progress)) 44 | temp_surface = pygame.Surface(surface.get_size(), pygame.SRCALPHA) 45 | temp_surface.fill(bg_color) 46 | 47 | # Texto "Coming Soon" 48 | text = "Coming Soon" 49 | text_surf = self.font.render(text, True, (255, 255, 255)) 50 | text_rect = text_surf.get_rect(center=(surface.get_width() // 2, surface.get_height() // 2 - 20)) 51 | temp_surface.blit(text_surf, text_rect) 52 | 53 | # Texto menor de instrução 54 | info = "O sistema de upgrades estará disponível em breve!" 55 | info_surf = self.small_font.render(info, True, (200, 200, 200)) 56 | info_rect = info_surf.get_rect(center=(surface.get_width() // 2, surface.get_height() // 2 + 40)) 57 | temp_surface.blit(info_surf, info_rect) 58 | 59 | surface.blit(temp_surface, (0, 0)) 60 | return False 61 | 62 | class Item: 63 | def __init__(self, l, t, w, h, index, font): 64 | self.original_rect = pygame.Rect(l, t, w, h) 65 | self.rect = self.original_rect.copy() 66 | self.index = index 67 | self.font = font 68 | 69 | def display(self, surface, selection_num, name, value, max_value, cost, animation_progress): 70 | # Apply animation 71 | offset = 50 * (1 - animation_progress) 72 | self.rect.y = self.original_rect.y + offset 73 | alpha = int(255 * animation_progress) 74 | 75 | # Create temporary surface with transparency 76 | temp_surf = pygame.Surface((self.rect.width, self.rect.height), pygame.SRCALPHA) 77 | 78 | # Draw background 79 | if self.index == selection_num: 80 | bg_color = (*UPGRADE_BG_COLOR_SELECTED[:3], alpha) # Convert to RGBA 81 | border_color = (*UI_BORDER_COLOR[:3], alpha) # Convert to RGBA 82 | else: 83 | bg_color = (*UI_BG_COLOR[:3], alpha) # Convert to RGBA 84 | border_color = (*UI_BORDER_COLOR[:3], alpha) # Convert to RGBA 85 | 86 | pygame.draw.rect(temp_surf, bg_color, temp_surf.get_rect()) 87 | pygame.draw.rect(temp_surf, border_color, temp_surf.get_rect(), 4) 88 | 89 | # Draw content 90 | self.display_names(temp_surf, name, cost, self.index == selection_num, alpha) 91 | self.display_bar(temp_surf, value, max_value, self.index == selection_num, alpha) 92 | 93 | # Blit to main surface 94 | surface.blit(temp_surf, self.rect) 95 | 96 | def display_names(self, surface, name, cost, selected, alpha): 97 | color = TEXT_COLOR_SELECTED if selected else TEXT_COLOR 98 | text_color = (*color[:3], alpha) # Convert to RGBA 99 | 100 | title_surf = self.font.render(name, True, text_color) 101 | title_rect = title_surf.get_rect(midtop=(self.rect.width//2, 20)) 102 | surface.blit(title_surf, title_rect) 103 | 104 | cost_surf = self.font.render(f'{int(cost)}', True, text_color) 105 | cost_rect = cost_surf.get_rect(midbottom=(self.rect.width//2, self.rect.height-20)) 106 | surface.blit(cost_surf, cost_rect) 107 | 108 | def display_bar(self, surface, value, max_value, selected, alpha): 109 | if selected: 110 | color = (*BAR_COLOR_SELECTED[:3], alpha) # Convert to RGBA 111 | else: 112 | color = (*BAR_COLOR[:3], alpha) # Convert to RGBA 113 | 114 | top = pygame.math.Vector2(self.rect.width//2, 60) 115 | bottom = pygame.math.Vector2(self.rect.width//2, self.rect.height-60) 116 | 117 | full_height = bottom.y - top.y 118 | relative_number = (value / max_value) * full_height 119 | value_rect = pygame.Rect(top.x - 15, bottom.y - relative_number, 30, 10) 120 | 121 | pygame.draw.line(surface, color, top, bottom, 5) 122 | pygame.draw.rect(surface, color, value_rect) 123 | 124 | def trigger(self, player): 125 | upgrade_attribute = list(player.stats.keys())[self.index] 126 | 127 | if player.exp >= player.upgrade_cost[upgrade_attribute] and player.stats[upgrade_attribute] < player.max_stats[upgrade_attribute]: 128 | player.exp -= player.upgrade_cost[upgrade_attribute] 129 | player.stats[upgrade_attribute] += 1 130 | player.upgrade_cost[upgrade_attribute] *= 1.4 131 | 132 | if player.stats[upgrade_attribute] > player.max_stats[upgrade_attribute]: 133 | player.stats[upgrade_attribute] = player.max_stats[upgrade_attribute] -------------------------------------------------------------------------------- /code/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | ------------------------------------------- 3 | @ *settings.py* 4 | 5 | @ *note: This file contains all game configuration variables including:* @ 6 | - Display settings (resolution, FPS) 7 | - Game constants (tile size, chunk size) 8 | - UI configuration and colors 9 | - Weapon and magic system data 10 | - Enemy statistics and behavior 11 | - Performance settings 12 | - Audio paths and volume controls 13 | ------------------------------------------- 14 | 15 | """ 16 | 17 | import os 18 | import sys 19 | from paths import * 20 | 21 | # Add base path resolution at the top 22 | base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__))) 23 | 24 | WIDTH = 1280 25 | HEIGTH = 720 26 | FPS = 60 27 | 28 | # chunks config 29 | TILESIZE = 64 30 | CHUNKSIZE = 24 31 | VISIBLE_CHUNKS = 3 32 | REGION_SIZE = 32 33 | LRU_CACHE_SIZE = 64 34 | CHUNK_DATA_VERSION = 1 35 | CHUNKS_FOLDER = os.path.join(base_path, 'region') 36 | 37 | #hitbox config 38 | HITBOX_OFFSET = { 39 | 'player': -26, 40 | 'object': -40, 41 | 'grass': -10, 42 | 'invisible': 0 43 | } 44 | 45 | # UI 46 | BAR_HEIGHT = 20 47 | HEALTH_BAR_WIDTH = 200 48 | ENERGY_BAR_WIDTH = 140 49 | ITEM_BOX_SIZE = 80 50 | UI_FONT = get_asset_path('graphics', 'font', 'joystix.ttf') 51 | UI_FONT_SIZE = 18 52 | 53 | # General colors 54 | BLACK_COLOR = (0, 0, 0) 55 | WATER_COLOR = (113, 221, 238) 56 | UI_BG_COLOR = (34, 34, 34) 57 | UI_BORDER_COLOR = (17, 17, 17) 58 | TEXT_COLOR = (238, 238, 238) 59 | 60 | # UI Colors 61 | HEALTH_COLOR = (255, 0, 0) 62 | ENERGY_COLOR = (0, 0, 255) 63 | STAMINA_COLOR = (0, 255, 0) 64 | UI_BORDER_COLOR_ACTIVE = (255, 215, 0) # gold 65 | 66 | # Upgrade menu 67 | TEXT_COLOR_SELECTED = (17, 17, 17) 68 | BAR_COLOR = (238, 238, 238) 69 | BAR_COLOR_SELECTED = (17, 17, 17) 70 | UPGRADE_BG_COLOR_SELECTED = (238, 238, 238) 71 | 72 | # Weapons 73 | weapon_data = { 74 | 'sword': {'cooldown': 100, 'damage': 15, 'graphic': get_asset_path('graphics', 'weapons', 'sword', 'full.png')}, 75 | 'lance': {'cooldown': 400, 'damage': 30, 'graphic': get_asset_path('graphics', 'weapons', 'lance', 'full.png')}, 76 | 'axe': {'cooldown': 300, 'damage': 20, 'graphic': get_asset_path('graphics', 'weapons', 'axe', 'full.png')}, 77 | 'rapier': {'cooldown': 50, 'damage': 8, 'graphic': get_asset_path('graphics', 'weapons', 'rapier', 'full.png')}, 78 | 'sai': {'cooldown': 80, 'damage': 10, 'graphic': get_asset_path('graphics', 'weapons', 'sai', 'full.png')} 79 | } 80 | 81 | # Magic 82 | magic_data = { 83 | 'flame': {'strength': 5, 'cost': 20, 'graphic': get_asset_path('graphics', 'particles', 'flame', 'fire.png')}, 84 | 'heal': {'strength': 20, 'cost': 10, 'graphic': get_asset_path('graphics', 'particles', 'heal', 'heal.png')} 85 | } 86 | 87 | # Enemy 88 | monster_data = { 89 | 'squid': {'health': 100, 'exp': 100, 'damage': 20, 'attack_type': 'slash', 90 | 'attack_sound': get_asset_path('audio', 'effects', 'slash.wav'), 91 | 'speed': 3, 'resistance': 3, 'attack_radius': 80, 'notice_radius': 360}, 92 | 'raccoon': {'health': 300, 'exp': 250, 'damage': 40, 'attack_type': 'claw', 93 | 'attack_sound': get_asset_path('audio', 'effects', 'claw.wav'), 94 | 'speed': 2, 'resistance': 3, 'attack_radius': 120, 'notice_radius': 400}, 95 | 'spirit': {'health': 100, 'exp': 110, 'damage': 8, 'attack_type': 'thunder', 96 | 'attack_sound': get_asset_path('audio', 'effects', 'slash.wav'), # Alterado para usar slash.wav 97 | 'speed': 4, 'resistance': 3, 'attack_radius': 60, 'notice_radius': 350}, 98 | 'bamboo': {'health': 70, 'exp': 120, 'damage': 6, 'attack_type': 'leaf_attack', 99 | 'attack_sound': get_asset_path('audio', 'effects', 'slash.wav'), # Alterado para usar slash.wav 100 | 'speed': 3, 'resistance': 3, 'attack_radius': 50, 'notice_radius': 300} 101 | } 102 | 103 | # Settings 104 | settings = [ 105 | {"name": "Fullscreen", "type": "toggle", "value": True}, 106 | {"name": "Borderless", "type": "toggle", "value": False}, 107 | {"name": "Resolution", "type": "choice", "choices": [(1280, 720), (1920, 1080), (800, 600), (1024, 768), (1280, 720), (1366, 768)], "value": 1}, 108 | {"name": "Game", "type": "choice", "choices": ["optimized", "normal", "extreme performance"], "value": 1}, 109 | {"name": "Gamma", "type": "slider", "value": 50, "min": 0, "max": 100}, # Default to 50 110 | {"name": "Back", "type": "action"} 111 | ] 112 | 113 | """ 114 | ------------------------------------------- 115 | Performance Mode Settings 116 | - enemy spawn distance: 1500 117 | - enemy despawn distance: 2000 118 | - optimized: 1 chunk visible 119 | - normal: 2 chunks visible 120 | - extreme performance: 3 chunks visible 121 | ------------------------------------------- 122 | """ 123 | 124 | ENEMY_SPAWN_DISTANCE = 1500 125 | ENEMY_DESPAWN_DISTANCE = 2000 126 | 127 | PERFORMANCE_MODE = 'normal' # Default performance mode 128 | 129 | if PERFORMANCE_MODE == 'optimized': 130 | VISIBLE_CHUNKS = 1 131 | elif PERFORMANCE_MODE == 'normal': 132 | VISIBLE_CHUNKS = 2 133 | else: 134 | VISIBLE_CHUNKS = 3 135 | 136 | 137 | 138 | """ 139 | ------------------------------------------- 140 | 141 | @ *constants audio* @ 142 | 143 | ------------------------------------------- 144 | 145 | """ 146 | 147 | # Audio paths and settings 148 | AUDIO_PATHS = { 149 | 'intro': get_asset_path('audio', 'music', 'main_intro.ogg'), 150 | 'loading': get_asset_path('audio', 'music', 'loading.ogg'), 151 | 'menu_select': get_asset_path('audio', 'menu', 'Menu1.wav'), 152 | 'menu_back': get_asset_path('audio', 'menu', 'Menu6.wav'), 153 | 'menu_change': get_asset_path('audio', 'menu', 'Menu9.wav'), 154 | 'main_menu': get_asset_path('audio', 'music', 'main_menu.ogg'), 155 | 'pause_menu': get_asset_path('audio', 'music', 'pause_menu.ogg'), 156 | 'main_game': get_asset_path('audio', 'music', 'main.ogg'), 157 | 'heal': get_asset_path('audio', 'effects', 'heal.wav'), 158 | 'flame': get_asset_path('audio', 'effects', 'Fire.wav'), 159 | 'death': get_asset_path('audio', 'effects', 'death.wav'), 160 | 'hit': get_asset_path('audio', 'effects', 'hit.wav'), 161 | 'attack': get_asset_path('audio', 'effects', 'sword.wav'), 162 | 'fight': get_asset_path('audio', 'music', 'fight.ogg'), 163 | 'npc_talk': get_asset_path('audio', 'effects', 'Talking.mp3'), 164 | 'rain': get_asset_path('audio', 'effects', 'rain.wav'), 165 | 166 | } 167 | 168 | VOLUME_SETTINGS = { 169 | 'music': 0.5, 170 | 'menu_effects': 2.5, 171 | 'enemy_effects': 0.6 172 | } 173 | 174 | # Audio settings 175 | MASTER_VOLUME = 0.5 -------------------------------------------------------------------------------- /code/enemy.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | from settings import * 3 | from entity import Entity 4 | from support import * 5 | from paths import get_asset_path 6 | 7 | class Enemy(Entity): 8 | shared_animations = {} 9 | 10 | # despawn settings 11 | MAX_DESPAWNS_PER_FRAME = 1 12 | last_despawn_frame = 0 13 | despawn_count = 0 14 | 15 | def __init__(self, monster_name, pos, groups, obstacle_sprites, damage_player, trigger_death_particles, add_exp, mission_system=None): 16 | 17 | # general setup 18 | super().__init__(groups) 19 | self.sprite_type = 'enemy' 20 | 21 | # graphics setup 22 | self.load_animations(monster_name) 23 | self.status = 'idle' 24 | self.image = self.animations[self.status][self.frame_index] 25 | 26 | # movement 27 | self.rect = self.image.get_rect(topleft = pos) 28 | self.hitbox = self.rect.inflate(0,-10) 29 | self.obstacle_sprites = obstacle_sprites 30 | 31 | # stats 32 | self.monster_name = monster_name 33 | monster_info = monster_data[self.monster_name] 34 | self.health = monster_info['health'] 35 | self.exp = monster_info['exp'] 36 | self.speed = monster_info['speed'] * 0.5 37 | self.attack_damage = monster_info['damage'] 38 | self.resistance = monster_info['resistance'] 39 | self.attack_radius = monster_info['attack_radius'] 40 | self.notice_radius = monster_info['notice_radius'] 41 | self.attack_type = monster_info['attack_type'] 42 | 43 | if self.monster_name == 'raccoon': 44 | self.health *= 2 45 | 46 | # player interaction 47 | self.can_attack = True 48 | self.attack_time = None 49 | self.attack_cooldown = 400 50 | self.damage_player = damage_player 51 | self.trigger_death_particles = trigger_death_particles 52 | self.add_exp = add_exp 53 | 54 | # invincibility timer 55 | self.vulnerable = True 56 | self.hit_time = None 57 | self.invincibility_duration = 300 58 | 59 | # sounds 60 | self.death_sound = pygame.mixer.Sound(AUDIO_PATHS['death']) 61 | self.hit_sound = pygame.mixer.Sound(AUDIO_PATHS['hit']) 62 | self.attack_sound = pygame.mixer.Sound(monster_info['attack_sound']) 63 | self.death_sound.set_volume(VOLUME_SETTINGS['enemy_effects']) 64 | self.hit_sound.set_volume(VOLUME_SETTINGS['enemy_effects']) 65 | self.attack_sound.set_volume(VOLUME_SETTINGS['enemy_effects']) 66 | 67 | # respawn 68 | self.respawn_time = 60000 69 | self.death_time = None 70 | self.alive = True 71 | self.initial_position = pos 72 | 73 | # mission system 74 | self.mission_system = mission_system 75 | self.player_near = False 76 | self.fight_music_playing = False 77 | self.fight_music = pygame.mixer.Sound(AUDIO_PATHS['fight']) # Preload fight music 78 | self.main_music_path = AUDIO_PATHS['main_game'] # Path to main music 79 | self.music_channel = pygame.mixer.Channel(1) # Use a separate channel for music 80 | 81 | def load_animations(self, name): 82 | if name not in Enemy.shared_animations: 83 | animations = {'idle': [], 'move': [], 'attack': []} 84 | main_path = get_asset_path('graphics', 'monsters', name) 85 | for animation in animations.keys(): 86 | animations[animation] = import_folder(os.path.join(main_path, animation)) 87 | Enemy.shared_animations[name] = animations 88 | 89 | self.animations = Enemy.shared_animations[name] 90 | 91 | def get_player_distance_direction(self, player, in_menu=False): 92 | enemy_vec = pygame.math.Vector2(self.rect.center) 93 | player_vec = pygame.math.Vector2(player.rect.center) 94 | distance = (player_vec - enemy_vec).magnitude() 95 | 96 | if distance > 0: 97 | direction = (player_vec - enemy_vec).normalize() 98 | else: 99 | direction = pygame.math.Vector2() 100 | 101 | if self.monster_name == 'raccoon': 102 | if in_menu: 103 | if self.fight_music_playing: 104 | self.stop_fight_music() 105 | else: 106 | if distance <= 750 and not self.fight_music_playing: # Increased distance 107 | self.start_fight_music() 108 | elif distance > 750 and self.fight_music_playing: 109 | self.stop_fight_music() 110 | 111 | return (distance, direction) 112 | 113 | def start_fight_music(self): 114 | self.fight_music_playing = True 115 | pygame.mixer.music.pause() # Pause the main music 116 | self.music_channel.play(self.fight_music, loops=-1, fade_ms=500) # Reduce fade-in time to minimize lag 117 | 118 | def stop_fight_music(self): 119 | self.fight_music_playing = False 120 | self.music_channel.fadeout(500) # Reduce fadeout time to minimize lag 121 | pygame.mixer.music.unpause() # Resume the main music 122 | 123 | def get_status(self, player): 124 | distance = self.get_player_distance_direction(player)[0] 125 | 126 | if distance <= self.attack_radius and self.can_attack: 127 | if self.status != 'attack': 128 | self.frame_index = 0 129 | self.status = 'attack' 130 | elif distance <= self.notice_radius: 131 | self.status = 'move' 132 | else: 133 | self.status = 'idle' 134 | 135 | def actions(self,player): 136 | if self.status == 'attack': 137 | self.attack_time = pygame.time.get_ticks() 138 | self.damage_player(self.attack_damage,self.attack_type) 139 | self.attack_sound.play() 140 | elif self.status == 'move': 141 | self.direction = self.get_player_distance_direction(player)[1] 142 | else: 143 | self.direction = pygame.math.Vector2() 144 | 145 | def animate(self): 146 | animation = self.animations[self.status] 147 | 148 | self.frame_index += self.animation_speed 149 | if self.frame_index >= len(animation): 150 | if self.status == 'attack': 151 | self.can_attack = False 152 | self.frame_index = 0 153 | 154 | self.image = animation[int(self.frame_index)] 155 | self.rect = self.image.get_rect(center = self.hitbox.center) 156 | 157 | if not self.vulnerable: 158 | alpha = self.wave_value() 159 | self.image.set_alpha(alpha) 160 | else: 161 | self.image.set_alpha(255) 162 | 163 | def cooldowns(self): 164 | current_time = pygame.time.get_ticks() 165 | if not self.can_attack: 166 | if current_time - self.attack_time >= self.attack_cooldown: 167 | self.can_attack = True 168 | 169 | if not self.vulnerable: 170 | if current_time - self.hit_time >= self.invincibility_duration: 171 | self.vulnerable = True 172 | 173 | def get_damage(self,player,attack_type): 174 | if self.vulnerable: 175 | self.hit_sound.play() 176 | self.direction = self.get_player_distance_direction(player)[1] 177 | if attack_type == 'weapon': 178 | self.health -= player.get_full_weapon_damage() 179 | else: 180 | self.health -= player.get_full_magic_damage() 181 | self.hit_time = pygame.time.get_ticks() 182 | self.vulnerable = False 183 | 184 | def check_death(self): 185 | if self.health <= 0 and self.alive: 186 | self.alive = False 187 | self.kill() 188 | self.trigger_death_particles(self.rect.center, self.monster_name) 189 | self.add_exp(self.exp) 190 | self.death_sound.play() 191 | self.death_time = pygame.time.get_ticks() 192 | if self.mission_system: 193 | self.mission_system.enemy_killed() 194 | if self.monster_name == 'raccoon': 195 | self.mission_system.boss_killed = True 196 | self.stop_fight_music() 197 | 198 | # Notify the level about the death time 199 | if hasattr(self, 'initial_position') and hasattr(self, 'groups'): 200 | for group in self.groups(): 201 | if hasattr(group, 'add_enemy_death_time'): 202 | group.add_enemy_death_time(self.initial_position) 203 | 204 | def respawn(self): 205 | if not self.alive and self.death_time and pygame.time.get_ticks() - self.death_time >= self.respawn_time: 206 | data = monster_data[self.monster_name] 207 | self.health = data['health'] 208 | self.alive = True 209 | if self not in self.groups(): 210 | self.add(self.groups()) 211 | self.death_time = None 212 | self.rect.topleft = self.initial_position 213 | self.hitbox.topleft = self.initial_position 214 | 215 | def check_despawn(self, player): 216 | distance = self.get_player_distance_direction(player)[0] 217 | if distance > ENEMY_DESPAWN_DISTANCE: 218 | current_time = pygame.time.get_ticks() 219 | 220 | if not hasattr(self, 'despawn_timer'): 221 | self.despawn_timer = current_time 222 | else: 223 | if current_time - self.despawn_timer >= 3000: 224 | if current_time != Enemy.last_despawn_frame: 225 | Enemy.last_despawn_frame = current_time 226 | Enemy.despawn_count = 0 227 | if Enemy.despawn_count < Enemy.MAX_DESPAWNS_PER_FRAME: 228 | Enemy.despawn_count += 1 229 | self.kill() 230 | self.alive = False 231 | else: 232 | # timer reset 233 | if hasattr(self, 'despawn_timer'): 234 | del self.despawn_timer 235 | 236 | def hit_reaction(self): 237 | if not self.vulnerable: 238 | self.direction *= -self.resistance 239 | 240 | def update(self): 241 | self.hit_reaction() 242 | self.move(self.speed) 243 | self.animate() 244 | self.cooldowns() 245 | self.check_death() 246 | self.respawn() 247 | 248 | def enemy_update(self, player, in_menu=False): 249 | self.get_status(player) 250 | self.actions(player) 251 | self.check_despawn(player) 252 | self.get_player_distance_direction(player, in_menu=in_menu) 253 | self.update() -------------------------------------------------------------------------------- /code/chunk_manager.py: -------------------------------------------------------------------------------- 1 | import os 2 | import pickle 3 | import gzip 4 | from random import randint 5 | from settings import TILESIZE, CHUNKSIZE, CHUNKS_FOLDER, REGION_SIZE, LRU_CACHE_SIZE, CHUNK_DATA_VERSION 6 | from support import import_csv_layout, import_folder 7 | from paths import get_asset_path 8 | import gc 9 | import asyncio 10 | import queue 11 | import threading 12 | import concurrent.futures 13 | from collections import OrderedDict 14 | 15 | _executor = concurrent.futures.ThreadPoolExecutor(max_workers=2) 16 | 17 | def get_region_coords(chunk): 18 | return (chunk[0] // REGION_SIZE, chunk[1] // REGION_SIZE) 19 | 20 | def get_region_file(region_coords): 21 | return os.path.join(CHUNKS_FOLDER, f"region_{region_coords[0]}_{region_coords[1]}.region") 22 | 23 | def get_chunk_key(chunk): 24 | return (chunk[0], chunk[1]) 25 | 26 | def get_chunk_file(chunk): 27 | return os.path.join(CHUNKS_FOLDER, f"chunk_{chunk[0]}_{chunk[1]}.region") 28 | 29 | def generate_chunk_data(chunk): 30 | chunk_data = { 31 | 'version': CHUNK_DATA_VERSION, 32 | 'boundary': [], 33 | 'grass': [], 34 | 'object': [], 35 | 'entities': [] 36 | } 37 | 38 | layouts = { 39 | 'boundary': import_csv_layout(get_asset_path('map', 'map_FloorBlocks.csv')), 40 | 'grass': import_csv_layout(get_asset_path('map', 'map_Grass.csv')), 41 | 'object': import_csv_layout(get_asset_path('map', 'map_Objects.csv')), 42 | 'entities': import_csv_layout(get_asset_path('map', 'map_Entities.csv')) 43 | } 44 | graphics = { 45 | 'grass': import_folder(get_asset_path('graphics', 'Grass')), 46 | 'objects': import_folder(get_asset_path('graphics', 'Objects')) 47 | } 48 | 49 | for style, layout in layouts.items(): 50 | for row_index, row in enumerate(layout): 51 | for col_index, col in enumerate(row): 52 | if col != '-1': 53 | x = col_index * TILESIZE 54 | y = row_index * TILESIZE 55 | 56 | chunk_x = x // (TILESIZE * CHUNKSIZE) 57 | chunk_y = y // (TILESIZE * CHUNKSIZE) 58 | 59 | if (chunk_x, chunk_y) == chunk: 60 | if style == 'boundary': 61 | chunk_data['boundary'].append({ 62 | 'x': x, 63 | 'y': y, 64 | 'sprite_type': 'invisible' 65 | }) 66 | elif style == 'grass': 67 | random_index = randint(0, len(graphics['grass']) - 1) 68 | chunk_data['grass'].append({ 69 | 'x': x, 70 | 'y': y, 71 | 'sprite_type': 'grass', 72 | 'image_index': random_index 73 | }) 74 | elif style == 'object': 75 | chunk_data['object'].append({ 76 | 'x': x, 77 | 'y': y, 78 | 'sprite_type': 'object', 79 | 'object_index': int(col) 80 | }) 81 | elif style == 'entities': 82 | if col == '394': 83 | chunk_data.setdefault("player", {"x": x, "y": y}) 84 | else: 85 | if col == '390': 86 | monster_name = 'bamboo' 87 | elif col == '391': 88 | monster_name = 'spirit' 89 | elif col == '392': 90 | monster_name = 'raccoon' 91 | else: 92 | monster_name = 'squid' 93 | chunk_data['entities'].append({ 94 | 'x': x, 95 | 'y': y, 96 | 'monster_name': monster_name }) 97 | return chunk_data 98 | 99 | def load_region(region_coords): 100 | region_file = get_region_file(region_coords) 101 | if os.path.exists(region_file) and os.path.getsize(region_file) > 0: 102 | try: 103 | with gzip.open(region_file, "rb") as f: 104 | region_data = pickle.load(f) 105 | return region_data 106 | except Exception: 107 | return {} 108 | else: 109 | return {} 110 | 111 | def save_region(region_coords, region_data): 112 | os.makedirs(CHUNKS_FOLDER, exist_ok=True) 113 | region_file = get_region_file(region_coords) 114 | 115 | with gzip.open(region_file, "wb", compresslevel=9) as f: 116 | pickle.dump(region_data, f) 117 | 118 | del region_data 119 | 120 | def save_chunk_data(chunk, data): 121 | region_coords = get_region_coords(chunk) 122 | region_data = load_region(region_coords) 123 | region_data[get_chunk_key(chunk)] = data 124 | save_region(region_coords, region_data) 125 | 126 | del data 127 | del region_data 128 | 129 | def load_chunk_data(chunk): 130 | region_coords = get_region_coords(chunk) 131 | region_data = load_region(region_coords) 132 | return region_data.get(get_chunk_key(chunk), None) 133 | 134 | def unload_chunks(chunks_dict, current_chunk, visibility_radius=2): 135 | chunks_to_unload = [] 136 | for chunk_pos in list(chunks_dict.keys()): 137 | dx = abs(chunk_pos[0] - current_chunk[0]) 138 | dy = abs(chunk_pos[1] - current_chunk[1]) 139 | if dx > visibility_radius or dy > visibility_radius: 140 | chunks_to_unload.append(chunk_pos) 141 | for chunk_pos in chunks_to_unload: 142 | data = chunks_dict[chunk_pos] 143 | # Save chunk data asynchronously in a thread 144 | loop = asyncio.get_event_loop() 145 | loop.run_in_executor(_executor, save_chunk_data, chunk_pos, data) 146 | del chunks_dict[chunk_pos] 147 | gc.collect() # Trigger garbage collection after unloading chunks 148 | 149 | class ChunkPriorityQueue: 150 | def __init__(self): 151 | self.q = queue.PriorityQueue() 152 | self.set = set() 153 | self.lock = threading.Lock() 154 | 155 | def put(self, priority, chunk): 156 | with self.lock: 157 | if chunk not in self.set: 158 | self.q.put((priority, chunk)) 159 | self.set.add(chunk) 160 | 161 | def get(self): 162 | with self.lock: 163 | if not self.q.empty(): 164 | priority, chunk = self.q.get() 165 | self.set.remove(chunk) 166 | return priority, chunk 167 | return None, None 168 | 169 | def empty(self): 170 | with self.lock: 171 | return self.q.empty() 172 | 173 | chunk_queue = ChunkPriorityQueue() 174 | 175 | async def async_load_chunk(chunk, chunks_dict): 176 | loop = asyncio.get_event_loop() 177 | data = await loop.run_in_executor(None, load_chunk_data, chunk) 178 | if data is None: 179 | data = await loop.run_in_executor(None, generate_chunk_data, chunk) 180 | chunks_dict[chunk] = data 181 | 182 | def get_prefetch_chunks(player_chunk, direction, speed, radius=2, prefetch_distance=2): 183 | dx, dy = direction 184 | prefetch_chunks = set() 185 | 186 | for step in range(1, int(prefetch_distance * max(1, speed)) + 1): 187 | target_chunk = (player_chunk[0] + dx * step, player_chunk[1] + dy * step) 188 | prefetch_chunks.add((int(round(target_chunk[0])), int(round(target_chunk[1])))) 189 | 190 | for x in range(-radius, radius + 1): 191 | for y in range(-radius, radius + 1): 192 | prefetch_chunks.add((player_chunk[0] + x, player_chunk[1] + y)) 193 | return list(prefetch_chunks) 194 | 195 | async def chunk_streamer(player_chunk, chunks_dict, radius=2, max_concurrent=2, direction=(0,0), speed=0): 196 | prefetch_chunks = get_prefetch_chunks(player_chunk, direction, speed, radius=radius, prefetch_distance=2) 197 | for chunk in prefetch_chunks: 198 | dist = abs(chunk[0] - player_chunk[0]) + abs(chunk[1] - player_chunk[1]) 199 | 200 | chunk_queue.put(dist, chunk) 201 | sem = asyncio.Semaphore(max_concurrent) 202 | async def worker(): 203 | while not chunk_queue.empty(): 204 | _, chunk = chunk_queue.get() 205 | if chunk is not None and chunk not in chunks_dict: 206 | async with sem: 207 | await async_load_chunk(chunk, chunks_dict) 208 | workers = [asyncio.create_task(worker()) for _ in range(max_concurrent)] 209 | await asyncio.gather(*workers) 210 | 211 | def generate_chunk_mesh(chunk_data): 212 | mesh = [] 213 | 214 | for layer in ['boundary', 'grass', 'object']: 215 | tiles = chunk_data.get(layer, []) 216 | 217 | tiles_by_row = {} 218 | for tile in tiles: 219 | row = tile['y'] 220 | tiles_by_row.setdefault(row, []).append(tile) 221 | for row, row_tiles in tiles_by_row.items(): 222 | row_tiles.sort(key=lambda t: t['x']) 223 | start = None 224 | last_x = None 225 | for tile in row_tiles: 226 | if start is None: 227 | start = tile 228 | last_x = tile['x'] 229 | elif tile['x'] == last_x + TILESIZE: 230 | last_x = tile['x'] 231 | else: 232 | width = last_x - start['x'] + TILESIZE 233 | mesh.append({ 234 | 'x': start['x'], 235 | 'y': start['y'], 236 | 'w': width, 237 | 'h': TILESIZE, 238 | 'sprite_type': start.get('sprite_type', layer), 239 | 'layer': layer 240 | }) 241 | start = tile 242 | last_x = tile['x'] 243 | 244 | if start is not None: 245 | width = last_x - start['x'] + TILESIZE 246 | mesh.append({ 247 | 'x': start['x'], 248 | 'y': start['y'], 249 | 'w': width, 250 | 'h': TILESIZE, 251 | 'sprite_type': start.get('sprite_type', layer), 252 | 'layer': layer 253 | }) 254 | 255 | return mesh 256 | 257 | def occlusion_culling(mesh, camera_rect): 258 | visible = [] 259 | cam_x, cam_y, cam_w, cam_h = camera_rect 260 | for rect in mesh: 261 | rx, ry, rw, rh = rect['x'], rect['y'], rect['w'], rect['h'] 262 | if (rx + rw > cam_x and rx < cam_x + cam_w and 263 | ry + rh > cam_y and ry < cam_y + cam_h): 264 | visible.append(rect) 265 | return visible 266 | 267 | class ChunkLRUCache: 268 | def __init__(self, max_size=LRU_CACHE_SIZE): 269 | self.cache = OrderedDict() 270 | self.max_size = max_size 271 | 272 | def get(self, chunk): 273 | if chunk in self.cache: 274 | self.cache.move_to_end(chunk) 275 | return self.cache[chunk] 276 | return None 277 | 278 | def put(self, chunk, data): 279 | self.cache[chunk] = data 280 | self.cache.move_to_end(chunk) 281 | if len(self.cache) > self.max_size: 282 | old_chunk, old_data = self.cache.popitem(last=False) 283 | 284 | loop = asyncio.get_event_loop() 285 | loop.run_in_executor(_executor, save_chunk_data, old_chunk, old_data) 286 | 287 | def remove(self, chunk): 288 | if chunk in self.cache: 289 | del self.cache[chunk] 290 | 291 | def __contains__(self, chunk): 292 | return chunk in self.cache 293 | 294 | def __getitem__(self, chunk): 295 | return self.get(chunk) 296 | 297 | def __setitem__(self, chunk, data): 298 | self.put(chunk, data) 299 | 300 | def keys(self): 301 | return self.cache.keys() 302 | 303 | def items(self): 304 | return self.cache.items() 305 | 306 | chunk_cache = ChunkLRUCache() 307 | 308 | def unload_chunks(chunks_dict, current_chunk, visibility_radius=2): 309 | chunks_to_unload = [] 310 | for chunk_pos in list(chunk_cache.keys()): 311 | dx = abs(chunk_pos[0] - current_chunk[0]) 312 | dy = abs(chunk_pos[1] - current_chunk[1]) 313 | if dx > visibility_radius or dy > visibility_radius: 314 | chunks_to_unload.append(chunk_pos) 315 | for chunk_pos in chunks_to_unload: 316 | data = chunk_cache[chunk_pos] 317 | loop = asyncio.get_event_loop() 318 | loop.run_in_executor(_executor, save_chunk_data, chunk_pos, data) 319 | chunk_cache.remove(chunk_pos) 320 | gc.collect() 321 | 322 | def load_chunk_data_with_cache(chunk): 323 | data = chunk_cache.get(chunk) 324 | if data is not None: 325 | 326 | if isinstance(data, dict) and data.get('version') == CHUNK_DATA_VERSION: 327 | return data 328 | 329 | chunk_cache.remove(chunk) 330 | data = None 331 | if data is None: 332 | region_coords = get_region_coords(chunk) 333 | region_data = load_region(region_coords) 334 | data = region_data.get(get_chunk_key(chunk), None) 335 | 336 | if isinstance(data, dict) and data.get('version') == CHUNK_DATA_VERSION: 337 | chunk_cache.put(chunk, data) 338 | return data 339 | else: 340 | return None 341 | 342 | return data 343 | 344 | def save_chunk_data_with_cache(chunk, data): 345 | chunk_cache.put(chunk, data) 346 | 347 | async def async_load_chunk(chunk, chunks_dict): 348 | loop = asyncio.get_event_loop() 349 | data = await loop.run_in_executor(None, load_chunk_data_with_cache, chunk) 350 | if data is None: 351 | data = await loop.run_in_executor(None, generate_chunk_data, chunk) 352 | await loop.run_in_executor(_executor, save_chunk_data_with_cache, chunk, data) 353 | chunk_cache.put(chunk, data) 354 | chunks_dict[chunk] = data --------------------------------------------------------------------------------