summaryrefslogtreecommitdiff
path: root/src/resources
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-06-08 00:43:48 +0300
committerAndrei Karas <akaras@inbox.ru>2012-06-08 00:43:48 +0300
commitdbc3b324a0c5dcb1a0ee29b289e71423a06e85fd (patch)
treef7cda00f7415c35fb2a9e4466a751d18852070bf /src/resources
parentcbb805a1922e3423fdaae88242835fb717a903bf (diff)
downloadmv-dbc3b324a0c5dcb1a0ee29b289e71423a06e85fd.tar.gz
mv-dbc3b324a0c5dcb1a0ee29b289e71423a06e85fd.tar.bz2
mv-dbc3b324a0c5dcb1a0ee29b289e71423a06e85fd.tar.xz
mv-dbc3b324a0c5dcb1a0ee29b289e71423a06e85fd.zip
Add to npc option targetSelection to allow/disallow npc selection.
Diffstat (limited to 'src/resources')
-rw-r--r--src/resources/beinginfo.cpp21
-rw-r--r--src/resources/beinginfo.h7
-rw-r--r--src/resources/npcdb.cpp8
3 files changed, 27 insertions, 9 deletions
diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp
index 9c8799bc0..1f2bd3e9a 100644
--- a/src/resources/beinginfo.cpp
+++ b/src/resources/beinginfo.cpp
@@ -32,15 +32,18 @@
BeingInfo *BeingInfo::unknown = nullptr;
Attack *BeingInfo::empty = new Attack(SpriteAction::ATTACK, "", "");
-BeingInfo::BeingInfo():
- mName(_("unnamed")),
- mTargetCursorSize(ActorSprite::TC_MEDIUM),
- mWalkMask(Map::BLOCKMASK_WALL | Map::BLOCKMASK_CHARACTER
- | Map::BLOCKMASK_MONSTER | Map::BLOCKMASK_AIR
- | Map::BLOCKMASK_WATER),
- mBlockType(Map::BLOCKTYPE_CHARACTER),
- mTargetOffsetX(0), mTargetOffsetY(0),
- mMaxHP(0), mStaticMaxHP(false)
+BeingInfo::BeingInfo() :
+ mName(_("unnamed")),
+ mTargetCursorSize(ActorSprite::TC_MEDIUM),
+ mWalkMask(Map::BLOCKMASK_WALL | Map::BLOCKMASK_CHARACTER
+ | Map::BLOCKMASK_MONSTER | Map::BLOCKMASK_AIR
+ | Map::BLOCKMASK_WATER),
+ mBlockType(Map::BLOCKTYPE_CHARACTER),
+ mTargetOffsetX(0),
+ mTargetOffsetY(0),
+ mMaxHP(0),
+ mStaticMaxHP(false),
+ mTargetSelection(true)
{
SpriteDisplay display;
display.sprites.push_back(SpriteReference::Empty);
diff --git a/src/resources/beinginfo.h b/src/resources/beinginfo.h
index 4aa8f96c8..227bc686e 100644
--- a/src/resources/beinginfo.h
+++ b/src/resources/beinginfo.h
@@ -146,6 +146,12 @@ class BeingInfo
void setStaticMaxHP(bool n)
{ mStaticMaxHP = n; }
+ void setTargetSelection(bool n)
+ { mTargetSelection = n; }
+
+ bool isTargetSelection() const
+ { return mTargetSelection; }
+
static void clear();
private:
@@ -160,6 +166,7 @@ class BeingInfo
int mTargetOffsetY;
int mMaxHP;
bool mStaticMaxHP;
+ bool mTargetSelection;
};
typedef std::map<int, BeingInfo*> BeingInfos;
diff --git a/src/resources/npcdb.cpp b/src/resources/npcdb.cpp
index 832fa26d6..26f5e53cb 100644
--- a/src/resources/npcdb.cpp
+++ b/src/resources/npcdb.cpp
@@ -38,6 +38,8 @@ namespace
bool mLoaded = false;
}
+extern int serverVersion;
+
void NPCDB::load()
{
if (mLoaded)
@@ -70,6 +72,12 @@ void NPCDB::load()
BeingInfo *currentInfo = new BeingInfo;
+ if (serverVersion > 0)
+ {
+ currentInfo->setTargetSelection(XML::getProperty(
+ npcNode, "targetSelection", true));
+ }
+
currentInfo->setTargetCursorSize(XML::getProperty(npcNode,
"targetCursor", "medium"));