summaryrefslogtreecommitdiff
path: root/src/game-server/mapcomposite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game-server/mapcomposite.cpp')
-rw-r--r--src/game-server/mapcomposite.cpp39
1 files changed, 31 insertions, 8 deletions
diff --git a/src/game-server/mapcomposite.cpp b/src/game-server/mapcomposite.cpp
index ecd39569..4d0581ad 100644
--- a/src/game-server/mapcomposite.cpp
+++ b/src/game-server/mapcomposite.cpp
@@ -727,14 +727,23 @@ void MapComposite::initializeContent()
}
else if (utils::compareStrI(type, "NPC") == 0)
{
+ int npcId = utils::stringToInt(object->getProperty("NPC_ID"));
+ std::string scriptText = object->getProperty("SCRIPT");
+
if (!mScript)
{
- mScript = Script::create("lua");
+ // Determine script engine by xml property
+ std::string scriptEngineName = object->getProperty("ENGINE");
+ if (scriptEngineName.empty())
+ {
+ // Set engine to default value and print warning
+ scriptEngineName = Configuration::getValue("defaultScriptEngine", "lua");
+ LOG_WARN("No script engine specified for map script \""
+ + mName + "\", falling back to default");
+ }
+ mScript = Script::create(scriptEngineName);
}
- int npcId = utils::stringToInt(object->getProperty("NPC_ID"));
- std::string scriptText = object->getProperty("SCRIPT");
-
if (npcId && !scriptText.empty())
{
mScript->loadNPC(object->getName(), npcId,
@@ -748,14 +757,28 @@ void MapComposite::initializeContent()
}
else if (utils::compareStrI(type, "SCRIPT") == 0)
{
+ std::string scriptFilename = object->getProperty("FILENAME");
+ std::string scriptText = object->getProperty("TEXT");
+
if (!mScript)
{
- mScript = Script::create("lua");
+ // Determine script engine by xml property
+ std::string scriptEngineName = object->getProperty("ENGINE");
+ if (!scriptFilename.empty() && scriptEngineName.empty())
+ {
+ // Engine property is empty - determine by filename
+ scriptEngineName = Script::determineEngineByFilename(scriptFilename);
+ }
+ else if (scriptEngineName.empty())
+ {
+ // Set engine to default value and print warning
+ scriptEngineName = Configuration::getValue("defaultScriptEngine", "lua");
+ LOG_WARN("No script engine specified for map script \""
+ + mName + "\", falling back to default");
+ }
+ mScript = Script::create(scriptEngineName);
}
- std::string scriptFilename = object->getProperty("FILENAME");
- std::string scriptText = object->getProperty("TEXT");
-
if (!scriptFilename.empty())
{
mScript->loadFile(scriptFilename);