diff --git a/Crawler/Crawler.vcxproj.filters b/Crawler/Crawler.vcxproj.filters
index 9ac70e6c..087d0ecc 100644
--- a/Crawler/Crawler.vcxproj.filters
+++ b/Crawler/Crawler.vcxproj.filters
@@ -177,9 +177,6 @@
Header Files\Game States
-
- Configurations
-
Header Files\Interface
@@ -258,6 +255,9 @@
Header Files\Interface
+
+ Header Files
+
diff --git a/Crawler/Monster.h b/Crawler/Monster.h
index e7cf2494..7f16b31a 100644
--- a/Crawler/Monster.h
+++ b/Crawler/Monster.h
@@ -40,6 +40,8 @@ SUCH DAMAGE.
#include "DamageNumber.h"
#include "DEFINES.h"
#include "Attributable.h"
+#include "Item.h"
+#include "safemap.h"
INCLUDE_ITEM_DATA
@@ -61,7 +63,7 @@ struct MonsterDropData{
int minQty=1;
int maxQty=1;
MonsterDropData(std::string itemName,float dropChance,int minQty=1,int maxQty=1)
- :item(ITEM_DATA.at(itemName)),dropChance(dropChance),minQty(minQty),maxQty(maxQty){}
+ :item(&ITEM_DATA.at(itemName)),dropChance(dropChance),minQty(minQty),maxQty(maxQty){}
};
struct MonsterData{
@@ -78,9 +80,10 @@ struct MonsterData{
std::string jumpAnimation="WARRIOR_IDLE_S";
std::string shootAnimation="WARRIOR_IDLE_S";
std::string deathAnimation="WARRIOR_IDLE_S";
+ std::vector dropData;
public:
MonsterData();
- MonsterData(int id,std::string name,int hp,int atk,std::vectoranimations,float moveSpd=1.0f,float size=1.0f,int strategy=0,int collisionDmg=0);
+ MonsterData(int id,std::string name,int hp,int atk,std::vectoranimations,std::vectordrops,float moveSpd=1.0f,float size=1.0f,int strategy=0,int collisionDmg=0);
int GetHealth();
int GetAttack();
float GetMoveSpdMult();
@@ -95,6 +98,7 @@ struct MonsterData{
std::vectorGetAnimations(){
return animations;
}
+ const std::vector&GetDropData();
std::string GetDisplayName();
static void InitializeMonsterData();
static std::mapimgs;
diff --git a/Crawler/MonsterData.cpp b/Crawler/MonsterData.cpp
index f37b372e..8ce11679 100644
--- a/Crawler/MonsterData.cpp
+++ b/Crawler/MonsterData.cpp
@@ -37,18 +37,20 @@ SUCH DAMAGE.
#include "config.h"
#include "DEFINES.h"
#include "safemap.h"
+#include "Item.h"
INCLUDE_DATA
INCLUDE_STRATEGY_DATA
INCLUDE_ANIMATION_DATA
+INCLUDE_ITEM_DATA
std::mapMONSTER_DATA;
safemapMONSTER_NAME_DATA;
MonsterData::MonsterData()
:atk(0),collisionDmg(0),hp(0),id(0),moveSpd(0),size(0),strategy(0){}
-MonsterData::MonsterData(int id,std::string name,int hp,int atk,std::vectoranimations,float moveSpd,float size,int strategy,int collisionDmg):
- id(id),name(name),hp(hp),atk(atk),moveSpd(moveSpd),size(size),strategy(strategy),animations(animations),collisionDmg(collisionDmg){}
+MonsterData::MonsterData(int id,std::string name,int hp,int atk,std::vectoranimations,std::vectordrops,float moveSpd,float size,int strategy,int collisionDmg):
+ id(id),name(name),hp(hp),atk(atk),moveSpd(moveSpd),size(size),strategy(strategy),animations(animations),dropData(drops),collisionDmg(collisionDmg){}
void MonsterData::InitializeMonsterData(){
int id=0;
@@ -119,12 +121,26 @@ void MonsterData::InitializeMonsterData(){
animationCounter++;
}
+ std::vectordrops;
+
+ //Add drop items to monster data from the config.
+ int dropDataCounter=0;
+ while(DATA["Monsters"][std::to_string(id)].HasProperty("DROP["+std::to_string(dropDataCounter)+"]")){
+ datafile drop=DATA["Monsters"][std::to_string(id)]["DROP["+std::to_string(dropDataCounter)+"]"];
+ if(!ITEM_DATA.count(drop.GetString(0))){
+ ERR("Could not add drop "<&MonsterData::GetDropData(){
+ return dropData;
+}
\ No newline at end of file
diff --git a/Crawler/Version.h b/Crawler/Version.h
index 00bc6463..f9f19365 100644
--- a/Crawler/Version.h
+++ b/Crawler/Version.h
@@ -35,7 +35,7 @@ SUCH DAMAGE.
#define VERSION_MAJOR 0
#define VERSION_MINOR 2
#define VERSION_PATCH 1
-#define VERSION_BUILD 2992
+#define VERSION_BUILD 2998
#define stringify(a) stringify_(a)
#define stringify_(a) #a