diff options
-rw-r--r-- | example/abilities.xml | 40 | ||||
-rw-r--r-- | example/scripts/abilities.lua | 4 | ||||
-rw-r--r-- | example/scripts/monster/basic_ai.lua | 2 | ||||
-rw-r--r-- | src/game-server/abilitycomponent.cpp | 3 | ||||
-rw-r--r-- | src/game-server/abilitymanager.cpp | 57 | ||||
-rw-r--r-- | src/game-server/abilitymanager.h | 17 | ||||
-rw-r--r-- | src/game-server/commandhandler.cpp | 3 | ||||
-rw-r--r-- | src/game-server/settingsmanager.cpp | 4 | ||||
-rw-r--r-- | src/scripting/lua.cpp | 17 |
9 files changed, 29 insertions, 118 deletions
diff --git a/example/abilities.xml b/example/abilities.xml index 71330dd0..1165c7f8 100644 --- a/example/abilities.xml +++ b/example/abilities.xml @@ -1,26 +1,20 @@ <?xml version="1.0" encoding="utf-8"?> <abilities> - <ability-category name="Magic"> - <ability - id="1" - name="Test Spell 1" - target="point" - useaction="attack" - /> - </ability-category> - <ability-category name="Monster attack"> - <ability - id="2" - name="Basic Monster strike" - target="being" - useaction="attack" - /> - </ability-category> - <ability-category name="debug"> - <ability - id="3" - name="debug" - target="point" - /> - </ability-category> + <ability + id="1" + name="Magic/Test Spell 1" + target="point" + useaction="attack" + /> + <ability + id="2" + name="Monster attack/Basic Monster strike" + target="being" + useaction="attack" + /> + <ability + id="3" + name="debug" + target="point" + /> </abilities> diff --git a/example/scripts/abilities.lua b/example/scripts/abilities.lua index 3878815a..cbdc22d3 100644 --- a/example/scripts/abilities.lua +++ b/example/scripts/abilities.lua @@ -8,7 +8,7 @@ --]] -local spell1 = get_ability_info("Magic_Test Spell 1") +local spell1 = get_ability_info("Magic/Test Spell 1") spell1:on_use(function(user, x, y, abilityId) target = target or user local s_x, s_y = user:position() @@ -38,7 +38,7 @@ spell1:on_use(function(user, x, y, abilityId) end) --spell1:on_recharged(function(ch) ch:say("Hoooooooo...") end) -local debugspell = get_ability_info("debug_debug") +local debugspell = get_ability_info("debug") debugspell:on_use(function(user) WARN("USED") user:give_experience(10) diff --git a/example/scripts/monster/basic_ai.lua b/example/scripts/monster/basic_ai.lua index b1dba32c..18d81640 100644 --- a/example/scripts/monster/basic_ai.lua +++ b/example/scripts/monster/basic_ai.lua @@ -172,7 +172,7 @@ local function mob_recharged(mob, ability_id) end local mob_attack_ability = - get_ability_info("Monster attack_Basic Monster strike") + get_ability_info("Monster attack/Basic Monster strike") mob_attack_ability:on_use(mob_attack) mob_attack_ability:on_recharged(mob_recharged) diff --git a/src/game-server/abilitycomponent.cpp b/src/game-server/abilitycomponent.cpp index d3154490..e8113e67 100644 --- a/src/game-server/abilitycomponent.cpp +++ b/src/game-server/abilitycomponent.cpp @@ -42,7 +42,7 @@ void AbilityComponent::update(Entity &entity) if (!ability.recharged && ability.rechargeTimeout.expired()) { ability.recharged = true; - if (ability.abilityInfo->rechargedCallback) { + if (ability.abilityInfo->rechargedCallback.isValid()) { Script *script = ScriptManager::currentState(); script->prepare(ability.abilityInfo->rechargedCallback); script->push(&entity); @@ -95,7 +95,6 @@ bool AbilityComponent::abilityUseCheck(AbilityMap::iterator it) if (!ability.abilityInfo->useCallback.isValid()) { LOG_WARN("No callback for use of ability " - << ability.abilityInfo->categoryName << "/" << ability.abilityInfo->name << ". Ignoring ability."); return false; } diff --git a/src/game-server/abilitymanager.cpp b/src/game-server/abilitymanager.cpp index b03c0828..3e923800 100644 --- a/src/game-server/abilitymanager.cpp +++ b/src/game-server/abilitymanager.cpp @@ -36,32 +36,6 @@ static AbilityManager::TargetMode getTargetByString(const std::string &str) return AbilityManager::TARGET_BEING; } - -/** - * Read a <special> element from settings. - * Used by SettingsManager. - */ -void AbilityManager::readAbilityCategoryNode(xmlNodePtr node, - const std::string &filename) -{ - std::string categoryName = XML::getProperty(node, "name", std::string()); - if (categoryName.empty()) - { - LOG_WARN("The " << filename << " file contains unamed " - << "<ability-category> tags and will be ignored."); - return; - } - - categoryName = utils::toLower(categoryName); - - for_each_xml_child_node(specialNode, node) - { - if (xmlStrEqual(specialNode->name, BAD_CAST "ability")) { - readAbilityNode(specialNode, categoryName); - } - } -} - /** * Check the status of recently loaded configuration. */ @@ -70,9 +44,8 @@ void AbilityManager::checkStatus() LOG_INFO("Loaded " << mAbilitiesInfo.size() << " abilities"); } - void AbilityManager::readAbilityNode(xmlNodePtr abilityNode, - const std::string &categoryName) + const std::string &filename) { std::string name = utils::toLower( XML::getProperty(abilityNode, "name", std::string())); @@ -80,8 +53,7 @@ void AbilityManager::readAbilityNode(xmlNodePtr abilityNode, if (id <= 0 || name.empty()) { - LOG_WARN("Invalid ability (empty name or id <= 0) in category: " - << categoryName); + LOG_WARN("Invalid ability (empty name or id <= 0) in " << filename); return; } @@ -97,7 +69,6 @@ void AbilityManager::readAbilityNode(xmlNodePtr abilityNode, } AbilityInfo *newInfo = new AbilityManager::AbilityInfo; - newInfo->categoryName = categoryName; newInfo->name = name; newInfo->id = id; @@ -106,8 +77,7 @@ void AbilityManager::readAbilityNode(xmlNodePtr abilityNode, mAbilitiesInfo[newInfo->id] = newInfo; - std::string keyName = categoryName + "/" + newInfo->name; - mNamedAbilitiesInfo[keyName] = newInfo; + mNamedAbilitiesInfo[name] = newInfo; } void AbilityManager::initialize() @@ -131,13 +101,6 @@ void AbilityManager::clear() mNamedAbilitiesInfo.clear(); } -unsigned AbilityManager::getId(const std::string &category, - const std::string &name) const -{ - std::string key = utils::toLower(category) + "/" + utils::toLower(name); - return getId(key); -} - unsigned AbilityManager::getId(const std::string &abilityName) const { if (mNamedAbilitiesInfo.contains(abilityName)) @@ -152,12 +115,6 @@ const std::string AbilityManager::getAbilityName(int id) const return it != mAbilitiesInfo.end() ? it->second->name : ""; } -const std::string AbilityManager::getCategoryName(int id) const -{ - AbilitiesInfo::const_iterator it = mAbilitiesInfo.find(id); - return it != mAbilitiesInfo.end() ? it->second->categoryName : ""; -} - AbilityManager::AbilityInfo *AbilityManager::getAbilityInfo(int id) const { AbilitiesInfo::const_iterator it = mAbilitiesInfo.find(id); @@ -165,14 +122,6 @@ AbilityManager::AbilityInfo *AbilityManager::getAbilityInfo(int id) const } AbilityManager::AbilityInfo *AbilityManager::getAbilityInfo( - const std::string &category, - const std::string &name) const -{ - std::string key = utils::toLower(category) + "/" + utils::toLower(name); - return getAbilityInfo(key); -} - -AbilityManager::AbilityInfo *AbilityManager::getAbilityInfo( const std::string &abilityName) const { if (mNamedAbilitiesInfo.contains(abilityName)) diff --git a/src/game-server/abilitymanager.h b/src/game-server/abilitymanager.h index ef16c230..573db415 100644 --- a/src/game-server/abilitymanager.h +++ b/src/game-server/abilitymanager.h @@ -47,7 +47,6 @@ public: unsigned id; std::string name; - std::string categoryName; TargetMode target; Script::Ref rechargedCallback; Script::Ref useCallback; @@ -70,38 +69,26 @@ public: void reload(); /** - * Gets the abilities Id from a category and a ability string. - */ - unsigned getId(const std::string &category, const std::string &name) const; - - /** * Gets the abilities Id from a string formatted in this way: * "categoryname_skillname" */ unsigned getId(const std::string &abilityName) const; const std::string getAbilityName(int id) const; - const std::string getCategoryName(int id) const; AbilityInfo *getAbilityInfo(int id) const; - AbilityInfo *getAbilityInfo(const std::string &category, - const std::string &name) const; AbilityInfo *getAbilityInfo(const std::string &abilityName) const; - - void readAbilityCategoryNode(xmlNodePtr node, const std::string &filename); - void checkStatus(); + void readAbilityNode(xmlNodePtr skillNode, const std::string &filename); + private: /** * Clears up the ability maps. */ void clear(); - void readAbilityNode(xmlNodePtr skillNode, - const std::string &categoryName); - typedef std::map<unsigned, AbilityInfo*> AbilitiesInfo; AbilitiesInfo mAbilitiesInfo; typedef utils::NameMap<AbilityInfo*> NamedAbilitiesInfo; diff --git a/src/game-server/commandhandler.cpp b/src/game-server/commandhandler.cpp index a426a144..4c2adad3 100644 --- a/src/game-server/commandhandler.cpp +++ b/src/game-server/commandhandler.cpp @@ -1702,8 +1702,7 @@ static void handleListAbility(Entity *player, std::string &args) { const AbilityValue &info = abilityIt.second; std::stringstream str; - str << info.abilityInfo->id << ": " << info.abilityInfo->categoryName - << "/" << info.abilityInfo->name; + str << info.abilityInfo->id << ": " << info.abilityInfo->name; say(str.str(), player); } } diff --git a/src/game-server/settingsmanager.cpp b/src/game-server/settingsmanager.cpp index 29c4f214..d6e5e564 100644 --- a/src/game-server/settingsmanager.cpp +++ b/src/game-server/settingsmanager.cpp @@ -135,10 +135,10 @@ void SettingsManager::loadFile(const std::string &filename) // attribute config attributeManager->readAttributeNode(childNode); } - else if (xmlStrEqual(childNode->name, BAD_CAST "ability-category")) + else if (xmlStrEqual(childNode->name, BAD_CAST "ability")) { // ability config - abilityManager->readAbilityCategoryNode(childNode, filename); + abilityManager->readAbilityNode(childNode, filename); } else if (xmlStrEqual(childNode->name, BAD_CAST "slot")) { diff --git a/src/scripting/lua.cpp b/src/scripting/lua.cpp index c8c9e17c..759ae50b 100644 --- a/src/scripting/lua.cpp +++ b/src/scripting/lua.cpp @@ -2907,22 +2907,6 @@ static int abilityinfo_on_recharged(lua_State *s) return 0; } -/** LUA abilityinfo:category (abilityinfo) - * abilityinfo:category(function callback) - ** - * **Return value:** The set-name of the ability as defined in the - * [abilities.xml](abilities.xml.html) - * - * **Note:** See [get_ability_info](scripting.html#get_ability_info) for getting - * a abilityinfo object. - */ -static int abilitiyinfo_get_category(lua_State *s) -{ - auto *info = LuaAbilityInfo::check(s, 1); - push(s, info->categoryName); - return 1; -} - /** LUA_CATEGORY Status effect class (statuseffectclass) */ @@ -3439,7 +3423,6 @@ LuaScript::LuaScript(): { "name", abilityinfo_get_name }, { "on_use", abilityinfo_on_use }, { "on_recharged", abilityinfo_on_recharged }, - { "category", abilitiyinfo_get_category }, { nullptr, nullptr} }; |