From 877c44c3727484141d353c84accc0ff1e513914f Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Fri, 6 Oct 2023 17:19:02 -0500 Subject: [PATCH] Setup Items, item categories, and item scripts, and all associated configuration files for them. --- Crawler/Crawler.cpp | 8 +++ Crawler/Crawler.vcxproj | 7 ++ Crawler/Crawler.vcxproj.filters | 24 +++++++ Crawler/DEFINES.h | 1 + Crawler/Item.cpp | 38 ++++++++++ Crawler/Item.h | 39 ++++++++++ Crawler/ItemComponent.h | 19 +++++ Crawler/Menu.cpp | 25 ++++++- Crawler/Menu.h | 6 ++ Crawler/Version.h | 2 +- Crawler/assets/config/configuration.txt | 6 ++ Crawler/assets/config/gfx/themes.txt | 2 + Crawler/assets/config/items/ItemCategory.txt | 19 +++++ Crawler/assets/config/items/ItemDatabase.txt | 67 ++++++++++++++++++ Crawler/assets/config/items/ItemScript.txt | 14 ++++ Crawler/assets/config/items/items.txt | 6 ++ Crawler/assets/items/Bandages.png | Bin 0 -> 942 bytes Crawler/assets/items/Blue Slime Remains.png | Bin 0 -> 682 bytes Crawler/assets/items/Green Slime Remains.png | Bin 0 -> 677 bytes Crawler/assets/items/Large Health Potion.png | Bin 0 -> 8413 bytes Crawler/assets/items/Large Mana Potion.png | Bin 0 -> 8419 bytes Crawler/assets/items/Medium Health Potion.png | Bin 0 -> 821 bytes Crawler/assets/items/Medium Mana Potion.png | Bin 0 -> 8310 bytes Crawler/assets/items/Red Slime Remains.png | Bin 0 -> 687 bytes Crawler/assets/items/Small Health Potion.png | Bin 0 -> 789 bytes Crawler/assets/items/Small Mana Potion.png | Bin 0 -> 798 bytes Crawler/safemap.h | 1 - 27 files changed, 280 insertions(+), 4 deletions(-) create mode 100644 Crawler/Item.cpp create mode 100644 Crawler/Item.h create mode 100644 Crawler/ItemComponent.h create mode 100644 Crawler/assets/config/items/ItemCategory.txt create mode 100644 Crawler/assets/config/items/ItemDatabase.txt create mode 100644 Crawler/assets/config/items/ItemScript.txt create mode 100644 Crawler/assets/config/items/items.txt create mode 100644 Crawler/assets/items/Bandages.png create mode 100644 Crawler/assets/items/Blue Slime Remains.png create mode 100644 Crawler/assets/items/Green Slime Remains.png create mode 100644 Crawler/assets/items/Large Health Potion.png create mode 100644 Crawler/assets/items/Large Mana Potion.png create mode 100644 Crawler/assets/items/Medium Health Potion.png create mode 100644 Crawler/assets/items/Medium Mana Potion.png create mode 100644 Crawler/assets/items/Red Slime Remains.png create mode 100644 Crawler/assets/items/Small Health Potion.png create mode 100644 Crawler/assets/items/Small Mana Potion.png diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp index ccc8dab2..ec011f37 100644 --- a/Crawler/Crawler.cpp +++ b/Crawler/Crawler.cpp @@ -72,6 +72,14 @@ Crawler::Crawler() std::string THEMES_CONFIG = CONFIG_PATH + "themes_config"_S; utils::datafile::Read(DATA,THEMES_CONFIG); + std::string ITEM_CONFIG = CONFIG_PATH + "item_config"_S; + utils::datafile::Read(DATA,ITEM_CONFIG); + + for(auto&key:DATA.GetProperty("ItemConfiguration").GetKeys()){ + std::string config = DATA["ItemConfiguration"][key.first].GetString(); + utils::datafile::Read(DATA,CONFIG_PATH + "item_directory"_S + config); + } + DEBUG_PATHFINDING="debug_pathfinding"_I; for(std::string&cl:DATA.GetProperty("class_list").GetValues()){ diff --git a/Crawler/Crawler.vcxproj b/Crawler/Crawler.vcxproj index 59d053da..4ed301a3 100644 --- a/Crawler/Crawler.vcxproj +++ b/Crawler/Crawler.vcxproj @@ -272,6 +272,8 @@ + + @@ -314,6 +316,7 @@ + @@ -359,6 +362,10 @@ + + + + diff --git a/Crawler/Crawler.vcxproj.filters b/Crawler/Crawler.vcxproj.filters index 372ed3b2..61e9dd84 100644 --- a/Crawler/Crawler.vcxproj.filters +++ b/Crawler/Crawler.vcxproj.filters @@ -52,6 +52,9 @@ {f36af2ba-e884-4e50-b7bd-7e6aa9a8528c} + + {09fc0cbe-06f7-4fdf-944c-9833066bb9c8} + @@ -177,6 +180,12 @@ Header Files\Game States + + Header Files\Interface + + + Configurations + @@ -308,6 +317,9 @@ Source Files\Game States + + Source Files + @@ -362,6 +374,18 @@ Configurations\GFX + + Configurations\Items + + + Configurations\Items + + + Configurations\Items + + + Configurations\Items + diff --git a/Crawler/DEFINES.h b/Crawler/DEFINES.h index 2cb61f1a..e22db22f 100644 --- a/Crawler/DEFINES.h +++ b/Crawler/DEFINES.h @@ -13,6 +13,7 @@ #define INCLUDE_STRATEGY_ID_DATA extern safemapSTRATEGY_ID_DATA; #define INCLUDE_TILE_ANIMATION_DATA extern std::map>>TILE_ANIMATION_DATA; #define INCLUDE_GFX extern safemapGFX; +#define INCLUDE_ITEM_DATA extern safemapITEM_DATA; #define ACCESS_PLAYER Player*p=game->GetPlayer(); diff --git a/Crawler/Item.cpp b/Crawler/Item.cpp new file mode 100644 index 00000000..29286244 --- /dev/null +++ b/Crawler/Item.cpp @@ -0,0 +1,38 @@ +#pragma once +#include "Item.h" +#include "safemap.h" +#include "DEFINES.h" +#include "Crawler.h" + +INCLUDE_game +INCLUDE_DATA + +safemapITEM_DATA; + +typedef std::string IT; + +void ItemInfo::InitializeItems(){ + for(auto&key:DATA["ItemDatabase"].GetKeys()){ + std::cout< +#include +#include +#include "olcPixelGameEngine.h" + +class Crawler; +class ItemInfo; + +class Item{ +private: + int amt; + ItemInfo*it; +}; + +class Inventory{ +public: + void AddItem(std::string it,int amt=1); + void GetItemCount(std::string it); + void UseItem(std::string it,int amt=1); + void RemoveItem(std::string it,int amt=1); +private: + static std::mapinventory; +}; + +class ItemInfo{ + std::string name; + std::string displayName; + Decal*img; + //Returns true if the item can be used, false otherwise + std::functionuseFunc; +public: + static void InitializeItems(); + /* + For the useFunc, return true if the item can be used, false otherwise. + */ + ItemInfo(std::string name,std::string displayName,Decal*img,std::functionuseFunc); +}; \ No newline at end of file diff --git a/Crawler/ItemComponent.h b/Crawler/ItemComponent.h new file mode 100644 index 00000000..9d387950 --- /dev/null +++ b/Crawler/ItemComponent.h @@ -0,0 +1,19 @@ +#pragma once +#include "MenuIconButton.h" +#include "Item.h" + +INCLUDE_game + +class ItemComponent:public MenuIconButton{ + Item::ItemName item; +public: + inline ItemComponent(geom2d::rectrect,Item::ItemName*item,MenuFunc onClick) + :MenuIconButton(rect,,onClick){} +protected: + virtual void inline Update(Crawler*game)override{ + MenuIconButton::Update(game); + } + virtual void inline Draw(Crawler*game,vf2d parentPos,bool focused)override{ + MenuIconButton::Draw(game,parentPos,focused); + } +}; \ No newline at end of file diff --git a/Crawler/Menu.cpp b/Crawler/Menu.cpp index 8491b677..fc799a0e 100644 --- a/Crawler/Menu.cpp +++ b/Crawler/Menu.cpp @@ -45,6 +45,23 @@ void Menu::AddComponent(std::string key,MenuComponent*button){ components[key]=button; } +void Menu::CheckClickAndPerformMenuSelect(Crawler*game){ + if(game->GetMouse(Mouse::LEFT).bReleased||game->GetKey(SPACE).bReleased||game->GetKey(ENTER).bReleased){ + MenuSelect(game); + } +} + +void Menu::HoverMenuSelect(Crawler*game){ + if(selection==vi2d{-1,-1})return; + if(buttons[selection.y][selection.x]->draggable) + if(buttonHoldTime<0.3)CheckClickAndPerformMenuSelect(game); + else{ + draggingComponent=buttons[selection.y][selection.x]; + buttons[selection.y].erase(buttons[selection.y].begin()+selection.x); + } + else CheckClickAndPerformMenuSelect(game); +} + void Menu::MenuSelect(Crawler*game){ if(selection==vi2d{-1,-1})return; buttons[selection.y][selection.x]->onClick(*this,game); @@ -60,6 +77,10 @@ void Menu::MenuSelect(Crawler*game){ void Menu::Update(Crawler*game){ + buttonHoldTime+=game->GetElapsedTime(); + + HoverMenuSelect(game); + for(auto&key:buttons){ for(auto&button:key.second){ button->hovered=false; @@ -207,7 +228,7 @@ void Menu::KeyboardButtonNavigation(Crawler*game,vf2d menuPos){ if(game->GetMouse(0).bPressed||game->GetKey(ENTER).bPressed||game->GetKey(SPACE).bPressed){ MOUSE_NAVIGATION=game->GetMouse(0).bPressed; //If a click occurs we use mouse controls. if(!MOUSE_NAVIGATION){ - MenuSelect(game); + buttonHoldTime=0; //Key presses automatically highlight the first button if it's not highlighted. if(selection==vi2d{-1,-1}&&buttons.size()>0){ //Find the first possible button entry in the map... @@ -234,7 +255,7 @@ void Menu::KeyboardButtonNavigation(Crawler*game,vf2d menuPos){ index++; } } - MenuSelect(game); + buttonHoldTime=0; } } } diff --git a/Crawler/Menu.h b/Crawler/Menu.h index 164ab4e0..ebf806f8 100644 --- a/Crawler/Menu.h +++ b/Crawler/Menu.h @@ -14,12 +14,16 @@ class Menu:IAttributable{ static bool MOUSE_NAVIGATION; static std::mapmenus; + float buttonHoldTime=0; std::map>buttons; //Buttons are stored in rows followed by their column order. + std::map>newButtonArrangement; //The new setup that the buttons will be at if a drag operation completes. std::vectordisplayComponents; //Components that are only for displaying purposes. safemapcomponents; //A friendly way to interrogate any component we are interested in. vi2d selection={-1,-1}; vf2d pos; //Specify the upper-left corner of the window. Using CENTERED will always put this where the upper-left corner would center the window. vf2d size; //Size in tiles (24x24), every menu will be tile-based + + MenuComponent*draggingComponent=nullptr; public: Menu(); Menu(vf2d pos,vf2d size); @@ -33,7 +37,9 @@ public: static safeunorderedmapthemes; static const vf2d CENTERED; private: + void HoverMenuSelect(Crawler*game); void MenuSelect(Crawler*game); + void CheckClickAndPerformMenuSelect(Crawler*game); static const Menu InitializeTestMenu(); static const Menu InitializeTestSubMenu(); //X (0-3), Y (0-2) for specific 9-patch tile (tiled version). diff --git a/Crawler/Version.h b/Crawler/Version.h index c9730cb2..f560b929 100644 --- a/Crawler/Version.h +++ b/Crawler/Version.h @@ -2,7 +2,7 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 0 -#define VERSION_BUILD 1782 +#define VERSION_BUILD 1796 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/assets/config/configuration.txt b/Crawler/assets/config/configuration.txt index aef3b484..9d2ce96e 100644 --- a/Crawler/assets/config/configuration.txt +++ b/Crawler/assets/config/configuration.txt @@ -39,6 +39,12 @@ class_directory = classes/ # Class list to be loaded into the game. class_list = Warrior, Thief, Ranger, Trapper, Wizard, Witch +# Items Config +item_config = items/items.txt + +# Path to items configuration +item_directory = items/ + # Whether or not to show individual data accesses from config data structure. debug_access_options = 0 diff --git a/Crawler/assets/config/gfx/themes.txt b/Crawler/assets/config/gfx/themes.txt index 7852f762..ee3f6674 100644 --- a/Crawler/assets/config/gfx/themes.txt +++ b/Crawler/assets/config/gfx/themes.txt @@ -4,6 +4,8 @@ ThemeGlobal HighlightTime = 0.2 # How much the R,G,B color components of a menu are multiplied to unfocused windows. MenuUnfocusedColorMult = 0.4 + # Amount of time to hold down an element before a press becomes a drag. + MenuHoldTime = 0.3 } Themes diff --git a/Crawler/assets/config/items/ItemCategory.txt b/Crawler/assets/config/items/ItemCategory.txt new file mode 100644 index 00000000..bcbc3ddf --- /dev/null +++ b/Crawler/assets/config/items/ItemCategory.txt @@ -0,0 +1,19 @@ +ItemCategory +{ + Consumables + { + Description = Items that will be consumed after a single use. + } + Equipment + { + Description = Gear that can be placed onto a player. + } + Accesories + { + Description = Items worn as extra items on the player. + } + Materials + { + Description = Items used as crafting materials for the forge. + } +} \ No newline at end of file diff --git a/Crawler/assets/config/items/ItemDatabase.txt b/Crawler/assets/config/items/ItemDatabase.txt new file mode 100644 index 00000000..78080fb8 --- /dev/null +++ b/Crawler/assets/config/items/ItemDatabase.txt @@ -0,0 +1,67 @@ +ItemDatabase +{ + Small Health Potion + { + ItemScript = Restore + Description = Restores 40 health points. + HP Restore = 40 + ItemCategory = Consumables + } + Medium Health Potion + { + ItemScript = Restore + Description = Restores 100 health points. + HP Restore = 100 + ItemCategory = Consumables + } + Large Health Potion + { + ItemScript = Restore + Description = Restores 320 health points. + HP Restore = 320 + ItemCategory = Consumables + } + Small Mana Potion + { + ItemScript = Restore + Description = Restores 40 mana points. + MP Restore = 40 + ItemCategory = Consumables + } + Medium Mana Potion + { + ItemScript = Restore + Description = Restores 100 mana points. + MP Restore = 100 + ItemCategory = Consumables + } + Large Mana Potion + { + ItemScript = Restore + Description = Restores 320 mana points. + MP Restore = 320 + ItemCategory = Consumables + } + Bandages + { + ItemScript = Restore + Description = Restores 10% health points. + HP % Restore = 10% + ItemCategory = Consumables + } + Green Slime Remains + { + Description = The remains of a green slime. It stares at you intently. + ItemCategory = Materials + } + Blue Slime Remains + { + Description = The remains of a blue slime. It stares at you intently. + ItemCategory = Materials + } + Red Slime Remains + { + Description = The remains of a red slime. It stares at you intently. + ItemCategory = Materials + } +} \ No newline at end of file diff --git a/Crawler/assets/config/items/ItemScript.txt b/Crawler/assets/config/items/ItemScript.txt new file mode 100644 index 00000000..1d0b7726 --- /dev/null +++ b/Crawler/assets/config/items/ItemScript.txt @@ -0,0 +1,14 @@ +ItemScript +{ + # Used with the Item Database. + # Any of these properties can be overwritten by specifying them in the main item. + + # Restores stats. + Restore + { + HP Restore = 0 + HP % Restore = 0 + MP Restore = 0 + MP % Restore = 0 + } +} \ No newline at end of file diff --git a/Crawler/assets/config/items/items.txt b/Crawler/assets/config/items/items.txt new file mode 100644 index 00000000..345e9e05 --- /dev/null +++ b/Crawler/assets/config/items/items.txt @@ -0,0 +1,6 @@ +ItemConfiguration +{ + Item Database = "ItemDatabase.txt" + Item Scripts = "ItemScript.txt" + Item Categories = "ItemCategory.txt" +} \ No newline at end of file diff --git a/Crawler/assets/items/Bandages.png b/Crawler/assets/items/Bandages.png new file mode 100644 index 0000000000000000000000000000000000000000..59e39a9831b56da06e10f188396248a44185294b GIT binary patch literal 942 zcmV;f15x~mP)EX>4Tx04R}tkv&MmKpe$iQ?*hm4ptCx2vVKwq9Tr^ibb$c+6t{Ym|XfHG-*gu zTpR`0f`cE6RR4rtTPCT<| z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYcrRVPdh=!Ey()vY`@B6Gs$PqkJLf zvch?bvs$UK);;+PLj`R)!*!Y?NMI33q#!~@4I8MyLX=jG6ccIMk9+us9e;{kGPyRu z$T5#9R7j2={11M2YZj*_-K0<)=zg*7k1-&y3pDGt{e5iP%@e@?3|wh#f3*S3ev)2q zYmp0Osl^iikxz=c8K-c00006VoOIv0RI5*0O&tRfg}I`010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=L!ZDDFeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00D+cL_t(Y$E8*wa>FnXJZU=PvIL67Pw*33)Uwj#7iNK( zvWDds4mC?zP_bEHQzq6LWrSRkQ%>?pmRiqvB018oc2_4`K*lvIih+CH8zVwP$O6i;2vqelB0&`~t3-Cl zXqE0P397-s>8_F~z^uPSNz5vl0<62%uH0J1WWiY_Vt@KOhZ6W!`L%&IiKx%M1^X?i z7hP|RkiH#1`pbfG;OqiaWx=VPv!WP;4-5cs-mNUy)V9@K>$GuUs8ssk003p( zz`eIis3N`JjzS+*`gObn0GO)<%+6O_VBSJ3`3LJYMPafBt3Iv}5&iazT(1SOz;s5{u literal 0 HcmV?d00001 diff --git a/Crawler/assets/items/Blue Slime Remains.png b/Crawler/assets/items/Blue Slime Remains.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0e3ee206e717c08e015c0b5f23d949e10e86b3 GIT binary patch literal 682 zcmV;b0#*HqP)EX>4Tx04R}tkv&MmKpe$iQ?*hm4ptCx2vVKwq9Tr^ibb$c+6t{Ym|XfHG-*gu zTpR`0f`cE6RR4rtTPCT<| z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYcrRVPdh=!Ey()vY`@B6Gs$PqkJLf zvch?bvs$UK);;+PLj`R)!*!Y?NMI33q#!~@4I8MyLX=jG6ccIMk9+us9e;{kGPyRu z$T5#9R7j2={11M2YZj*_-K0<)=zg*7k1-&y3pDGt{e5iP%@e@?3|wh#f3*S3ev)2q zYmp0Osl^iikxz=c8K-c00006VoOIv0RI5*0O&tRfg}I`010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=L!ZDD;Gxq-_ig802y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004qXL_t(Y$75g^1*2dTi~@pykyH)*?Ck&1#XkQ0iPIbw zatw;R@PdJXfq~)T%=--2rd#555EDL0m_bf6pJQ0M+(3ds!a#xiAmV3d{|_@*+#FTe z%aag$UR-#EX>4Tx04R}tkv&MmKpe$iQ?*hm4ptCx2vVKwq9Tr^ibb$c+6t{Ym|XfHG-*gu zTpR`0f`cE6RR4rtTPCT<| z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYcrRVPdh=!Ey()vY`@B6Gs$PqkJLf zvch?bvs$UK);;+PLj`R)!*!Y?NMI33q#!~@4I8MyLX=jG6ccIMk9+us9e;{kGPyRu z$T5#9R7j2={11M2YZj*_-K0<)=zg*7k1-&y3pDGt{e5iP%@e@?3|wh#f3*S3ev)2q zYmp0Osl^iikxz=c8K-c00006VoOIv0RI5*0O&tRfg}I`010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=L!ZDDk-0O^Edzi02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004bSL_t(Y$75g^1*2dT&>S$5s)3)K{Xe?c$DcoOn!`el zLGCx27#J8B7)~7c&hRm#9j}9!@JYf9g3&Nb6D9N+c52iySU7N!A4L4@?Ehf~Crap} z$jyIo5yc1if{2k&5Wy@#2PY1EhXfnB7T}5pYyh7HqhJ(_0y+Qy%`q?Wm^0ip00000 LNkvXXu0mjfoJSGJ literal 0 HcmV?d00001 diff --git a/Crawler/assets/items/Large Health Potion.png b/Crawler/assets/items/Large Health Potion.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c87ddb49b5de89afe3d2db78cf9df758b2b784 GIT binary patch literal 8413 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 literal 0 HcmV?d00001 diff --git a/Crawler/assets/items/Large Mana Potion.png b/Crawler/assets/items/Large Mana Potion.png new file mode 100644 index 0000000000000000000000000000000000000000..e99c079268f540ec0203e15c72230e9d413086ce GIT binary patch literal 8419 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 literal 0 HcmV?d00001 diff --git a/Crawler/assets/items/Medium Mana Potion.png b/Crawler/assets/items/Medium Mana Potion.png new file mode 100644 index 0000000000000000000000000000000000000000..84c4cdc29f7f08bb47876223face1fe190ffa20c GIT binary patch literal 8310 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 VF3-8i*`WXc002ovPDHLkV1moT9033T literal 0 HcmV?d00001 diff --git a/Crawler/assets/items/Small Health Potion.png b/Crawler/assets/items/Small Health Potion.png new file mode 100644 index 0000000000000000000000000000000000000000..3d23c17cce4160755cc3fd6ba060e642df552b06 GIT binary patch literal 789 zcmV+w1M2*VP)EX>4Tx04R}tkv&MmKpe$iQ?*hm4ptCx2vVKwq9Tr^ibb$c+6t{Ym|XfHG-*gu zTpR`0f`cE6RR4rtTPCT<| z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYcrRVPdh=!Ey()vY`@B6Gs$PqkJLf zvch?bvs$UK);;+PLj`R)!*!Y?NMI33q#!~@4I8MyLX=jG6ccIMk9+us9e;{kGPyRu z$T5#9R7j2={11M2YZj*_-K0<)=zg*7k1-&y3pDGt{e5iP%@e@?3|wh#f3*S3ev)2q zYmp0Osl^iikxz=c8K-c00006VoOIv0RI5*0O&tRfg}I`010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=L!ZD7%T!{Q^o)Q02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008YtL_t(Y$L*9Y4ue1th2N4UE9nucniRFRib^CBiR2hP z0utFHAXm1gSRA%Tpb|wz11YeuGeI@sDgNd?X1?78Hf>rfLHWp)vNb(_H;uJ^NBxt_ zVL!OPziLvQ!)Z5-JfxAw8j-^>H(jqDQ8)i}CZnmdwK>27rk<3JshCWWEA`KFAazmdq!{hLCYL;}9cct2yvBFLd8w*DYxk z{mz!Extc`=`lLwaK~?e@P|a;2vkbUmGw7BeMdLle-Un2`BnGx4dQOz1`#<#o<78yr TAXsBH00000NkvXXu0mjfcGX2T literal 0 HcmV?d00001 diff --git a/Crawler/assets/items/Small Mana Potion.png b/Crawler/assets/items/Small Mana Potion.png new file mode 100644 index 0000000000000000000000000000000000000000..605a4dd22ada870f254c680a50363e562fec0402 GIT binary patch literal 798 zcmV+(1L6FMP)EX>4Tx04R}tkv&MmKpe$iQ?*hm4ptCx2vVKwq9Tr^ibb$c+6t{Ym|XfHG-*gu zTpR`0f`cE6RR4rtTPCT<| z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYcrRVPdh=!Ey()vY`@B6Gs$PqkJLf zvch?bvs$UK);;+PLj`R)!*!Y?NMI33q#!~@4I8MyLX=jG6ccIMk9+us9e;{kGPyRu z$T5#9R7j2={11M2YZj*_-K0<)=zg*7k1-&y3pDGt{e5iP%@e@?3|wh#f3*S3ev)2q zYmp0Osl^iikxz=c8K-c00006VoOIv0RI5*0O&tRfg}I`010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=L!ZD85laxmNEbU02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008z$L_t(Y$75g^1*3pcz(|ZDes=c%*u+2n{7Fzh3$ZS7 zP!K@jA9(PAD1A(%cy~gC7Q=)HEs}zWi4?=Ju_+EBSok-5P-ED+@C5?{0|SG5yaWRS z!!ZVacJ}{-;(?Kvhz-a{V0d&X97SGEZzaQq84CzTI3qs812PgA7#J8Z3~$?J$WY~V zoM1 z!~$G;@Wz3W)pnu`KX=TN^f(~aa6*>gi~~{u$#DQng2VvyJVA0kAU1-DiUUGLG%i3) c(LFQ)01Go`-LxmWRR91007*qoM6N<$g5LH)g8%>k literal 0 HcmV?d00001 diff --git a/Crawler/safemap.h b/Crawler/safemap.h index cde6f16e..4e99745d 100644 --- a/Crawler/safemap.h +++ b/Crawler/safemap.h @@ -1,5 +1,4 @@ #pragma once -#include "olcPixelGameEngine.h" //A class that has an initialization lock so that when the lock is activated, any further gets that are missing items in it will report themselves for easier debugging detection. template