aboutsummaryrefslogtreecommitdiff
path: root/src/game/SkillExtraItems.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/SkillExtraItems.cpp')
-rw-r--r--src/game/SkillExtraItems.cpp145
1 files changed, 0 insertions, 145 deletions
diff --git a/src/game/SkillExtraItems.cpp b/src/game/SkillExtraItems.cpp
deleted file mode 100644
index cc50d3683f4..00000000000
--- a/src/game/SkillExtraItems.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
- *
- * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "SkillExtraItems.h"
-#include "Database/DatabaseEnv.h"
-#include "Log.h"
-#include "ProgressBar.h"
-#include "Player.h"
-#include <map>
-
-// some type definitions
-// no use putting them in the header file, they're only used in this .cpp
-
-// struct to store information about extra item creation
-// one entry for every spell that is able to create an extra item
-struct SkillExtraItemEntry
-{
- // the spell id of the specialization required to create extra items
- uint32 requiredSpecialization;
- // the chance to create one additional item
- float additionalCreateChance;
- // maximum number of extra items created per crafting
- uint8 additionalMaxNum;
-
- SkillExtraItemEntry()
- : requiredSpecialization(0), additionalCreateChance(0.0f), additionalMaxNum(0) {}
-
- SkillExtraItemEntry(uint32 rS, float aCC, uint8 aMN)
- : requiredSpecialization(rS), additionalCreateChance(aCC), additionalMaxNum(aMN) {}
-};
-
-// map to store the extra item creation info, the key is the spellId of the creation spell, the mapped value is the assigned SkillExtraItemEntry
-typedef std::map<uint32,SkillExtraItemEntry> SkillExtraItemMap;
-
-SkillExtraItemMap SkillExtraItemStore;
-
-// loads the extra item creation info from DB
-void LoadSkillExtraItemTable()
-{
- uint32 count = 0;
-
- SkillExtraItemStore.clear(); // need for reload
-
- // 0 1 2 3
- QueryResult_AutoPtr result = WorldDatabase.Query("SELECT spellId, requiredSpecialization, additionalCreateChance, additionalMaxNum FROM skill_extra_item_template");
-
- if (result)
- {
- barGoLink bar(result->GetRowCount());
-
- do
- {
- Field *fields = result->Fetch();
- bar.step();
-
- uint32 spellId = fields[0].GetUInt32();
-
- if (!sSpellStore.LookupEntry(spellId))
- {
- sLog.outError("Skill specialization %u has non-existent spell id in `skill_extra_item_template`!", spellId);
- continue;
- }
-
- uint32 requiredSpecialization = fields[1].GetUInt32();
- if (!sSpellStore.LookupEntry(requiredSpecialization))
- {
- sLog.outError("Skill specialization %u have not existed required specialization spell id %u in `skill_extra_item_template`!", spellId,requiredSpecialization);
- continue;
- }
-
- float additionalCreateChance = fields[2].GetFloat();
- if (additionalCreateChance <= 0.0f)
- {
- sLog.outError("Skill specialization %u has too low additional create chance in `skill_extra_item_template`!", spellId);
- continue;
- }
-
- uint8 additionalMaxNum = fields[3].GetUInt8();
- if (!additionalMaxNum)
- {
- sLog.outError("Skill specialization %u has 0 max number of extra items in `skill_extra_item_template`!", spellId);
- continue;
- }
-
- SkillExtraItemEntry& skillExtraItemEntry = SkillExtraItemStore[spellId];
-
- skillExtraItemEntry.requiredSpecialization = requiredSpecialization;
- skillExtraItemEntry.additionalCreateChance = additionalCreateChance;
- skillExtraItemEntry.additionalMaxNum = additionalMaxNum;
-
- ++count;
- } while (result->NextRow());
-
- sLog.outString();
- sLog.outString(">> Loaded %u spell specialization definitions", count);
- }
- else
- {
- sLog.outString();
- sLog.outString(">> Loaded 0 spell specialization definitions. DB table `skill_extra_item_template` is empty.");
- }
-}
-
-bool canCreateExtraItems(Player * player, uint32 spellId, float &additionalChance, uint8 &additionalMax)
-{
- // get the info for the specified spell
- SkillExtraItemMap::const_iterator ret = SkillExtraItemStore.find(spellId);
- if (ret == SkillExtraItemStore.end())
- return false;
-
- SkillExtraItemEntry const* specEntry = &ret->second;
-
- // if no entry, then no extra items can be created
- if (!specEntry)
- return false;
-
- // the player doesn't have the required specialization, return false
- if (!player->HasSpell(specEntry->requiredSpecialization))
- return false;
-
- // set the arguments to the appropriate values
- additionalChance = specEntry->additionalCreateChance;
- additionalMax = specEntry->additionalMaxNum;
-
- // enable extra item creation
- return true;
-}
-