diff options
author | Philipp Sehmisch <crush@themanaworld.org> | 2009-01-17 16:57:59 +0100 |
---|---|---|
committer | Philipp Sehmisch <crush@themanaworld.org> | 2009-01-17 16:59:09 +0100 |
commit | 85b659f70cbe7374eb511acf6a61abc443332752 (patch) | |
tree | e2f0df3f01966b262fade169987247f92673a0e6 /src | |
parent | 8b171e3a7e006aa492e2369969999a2336e2a731 (diff) | |
download | manaserv-85b659f70cbe7374eb511acf6a61abc443332752.tar.gz manaserv-85b659f70cbe7374eb511acf6a61abc443332752.tar.bz2 manaserv-85b659f70cbe7374eb511acf6a61abc443332752.tar.xz manaserv-85b659f70cbe7374eb511acf6a61abc443332752.zip |
Filenames of item use scripts are now taken from the items.xml
Diffstat (limited to 'src')
-rw-r--r-- | src/game-server/item.cpp | 4 | ||||
-rw-r--r-- | src/game-server/itemmanager.cpp | 29 | ||||
-rw-r--r-- | src/game-server/spawnarea.cpp | 2 |
3 files changed, 19 insertions, 16 deletions
diff --git a/src/game-server/item.cpp b/src/game-server/item.cpp index 892be2cf..817c81ec 100644 --- a/src/game-server/item.cpp +++ b/src/game-server/item.cpp @@ -147,9 +147,9 @@ bool ItemClass::use(Being *itemUser) if (mType != ITEM_USABLE) return false; if (mScript) { - mScript->prepare("item_use"); - mScript->push(mDatabaseID); + mScript->prepare("use"); mScript->push(itemUser); + mScript->push(mDatabaseID); // ID of the item mScript->execute(); } mModifiers.applyAttributes(itemUser); diff --git a/src/game-server/itemmanager.cpp b/src/game-server/itemmanager.cpp index 3f67ae8b..e275d1a6 100644 --- a/src/game-server/itemmanager.cpp +++ b/src/game-server/itemmanager.cpp @@ -135,7 +135,7 @@ void ItemManager::reload() int value = XML::getProperty(node, "value", 0); int maxPerSlot = XML::getProperty(node, "max-per-slot", 0); int sprite = XML::getProperty(node, "sprite_id", 0); - std::string scriptName = XML::getProperty(node, "script_name", std::string()); + std::string scriptFile = XML::getProperty(node, "script", ""); std::string attackShape = XML::getProperty(node, "attack-shape", "cone"); std::string attackTarget = XML::getProperty(node, "attack-target", "multi"); int attackRange = XML::getProperty(node, "attack-range", 32); @@ -172,8 +172,8 @@ void ItemManager::reload() if (maxPerSlot == 0) { - LOG_WARN("Item Manager: Missing max-per-slot property for " - "item " << id << " in " << itemReferenceFile << '.'); + //LOG_WARN("Item Manager: Missing max-per-slot property for " + // "item " << id << " in " << itemReferenceFile << '.'); maxPerSlot = 1; } @@ -193,21 +193,24 @@ void ItemManager::reload() } // TODO: Clean this up some - Script *s = 0; - std::stringstream filename; - filename << "scripts/items/" << id << ".lua"; - - if (ResourceManager::exists(filename.str())) // file exists! + if (scriptFile != "") { - LOG_INFO("Loading item script: " + filename.str()); - s = Script::create("lua"); - s->loadFile(filename.str()); + std::stringstream filename; + filename << "scripts/items/" << scriptFile; + if (ResourceManager::exists(filename.str())) // file exists! + { + LOG_INFO("Loading item script: " << filename.str()); + Script *s = Script::create("lua"); + s->loadFile(filename.str()); + item->setScript(s); + } else { + LOG_WARN("Could not find script file \"" << filename.str() << "\" for item #"<<id); + } } item->setWeight(weight); item->setCost(value); item->setMaxPerSlot(maxPerSlot); - item->setScript(s); item->setModifiers(modifiers); item->setSpriteID(sprite ? sprite : id); ++nbItems; @@ -250,7 +253,7 @@ void ItemManager::reload() LOG_DEBUG("Item: ID: " << id << ", itemType: " << itemType << ", weight: " << weight << ", value: " << value << - ", scriptName: " << scriptName << ", maxPerSlot: " << maxPerSlot << "."); + ", script: " << scriptFile << ", maxPerSlot: " << maxPerSlot << "."); } LOG_INFO("Loaded " << nbItems << " items from " diff --git a/src/game-server/spawnarea.cpp b/src/game-server/spawnarea.cpp index db7a01d6..fc493848 100644 --- a/src/game-server/spawnarea.cpp +++ b/src/game-server/spawnarea.cpp @@ -85,7 +85,7 @@ void SpawnArea::update() if (being->getModifiedAttribute(BASE_ATTR_HP) <= 0) { - LOG_WARN("Refusing to spawn dead monster " << mSpecy->getType()); + //LOG_WARN("Refusing to spawn dead monster " << mSpecy->getType()); delete being; being = 0; } |