summaryrefslogtreecommitdiff
path: root/src/resources/beingcommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources/beingcommon.cpp')
-rw-r--r--src/resources/beingcommon.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/resources/beingcommon.cpp b/src/resources/beingcommon.cpp
index d78f9e7ad..b37a6e879 100644
--- a/src/resources/beingcommon.cpp
+++ b/src/resources/beingcommon.cpp
@@ -23,6 +23,8 @@
#include "configuration.h"
#include "logger.h"
+#include "enums/resources/map/blockmask.h"
+
#include "utils/files.h"
#include "resources/beinginfo.h"
@@ -50,6 +52,21 @@ void BeingCommon::readBasicAttributes(BeingInfo *const info,
info->setHpBarOffsetX(XML::getProperty(node, "hpBarOffsetX", 0));
info->setHpBarOffsetY(XML::getProperty(node, "hpBarOffsetY", 0));
+
+ unsigned char block = 0;
+ std::string walkStr = XML::getProperty(
+ node, "walkType", "walk");
+ if (walkStr == "walk")
+ block = BlockMask::WATER | BlockMask::AIR;
+ else if (walkStr == "fly")
+ block = 0;
+ else if (walkStr == "swim")
+ block = BlockMask::GROUND | BlockMask::AIR;
+ else if (walkStr == "walkswim" || walkStr == "swimwalk")
+ block = BlockMask::AIR;
+
+ info->setBlockWalkMask(static_cast<unsigned char>(
+ BlockMask::WALL | block));
}
void BeingCommon::getIncludeFiles(const std::string &dir,