├── 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 |
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 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
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
--------------------------------------------------------------------------------