* Merged ScriptDev2 928

--HG--
branch : trunk
This commit is contained in:
Muhaha
2009-03-22 23:11:55 +01:00
parent 36ccfd4168
commit d64436a5e4
32 changed files with 681 additions and 114 deletions

View File

@@ -16,7 +16,6 @@
# define _TRINITY_SCRIPT_CONFIG "trinitycore.conf"
#endif _TRINITY_SCRIPT_CONFIG
//*** Global data ***
int num_sc_scripts;
Script *m_scripts[MAX_SCRIPTS];
@@ -48,20 +47,16 @@ enum ChatType
// Text Maps
UNORDERED_MAP<int32, StringTextData> TextMap;
//*** End Global data ***
// Waypoint lists
std::list<PointMovement> PointMovementList;
//*** EventAI data ***
//Event AI structure. Used exclusivly by mob_event_ai.cpp (60 bytes each)
std::list<EventAI_Event> EventAI_Event_List;
//Event AI summon structure. Used exclusivly by mob_event_ai.cpp.
UNORDERED_MAP<uint32, EventAI_Summon> EventAI_Summon_Map;
//Event AI error prevention structure. Used at runtime to prevent error log spam of same creature id.
//UNORDERED_MAP<uint32, EventAI_CreatureError> EventAI_CreatureErrorPreventionList;
uint32 EAI_ErrorLevel;
//*** End EventAI data ***
void FillSpellSummary();
void LoadOverridenSQLData();
@@ -858,6 +853,67 @@ void LoadDatabase()
outstring_log("");
outstring_log(">> Loaded 0 additional Custom Texts data. DB table `custom_texts` is empty.");
}
// Drop Existing Waypoint list
PointMovementList.clear();
uint64 uiCreatureCount = 0;
// Load Waypoints
result = TScriptDB.PQuery("SELECT COUNT(entry) FROM script_waypoint GROUP BY entry");
if (result)
{
uiCreatureCount = result->GetRowCount();
delete result;
}
outstring_log("SD2: Loading Script Waypoints for %u creature(s)...", uiCreatureCount);
result = TScriptDB.PQuery("SELECT entry, pointid, location_x, location_y, location_z, waittime FROM script_waypoint ORDER BY pointid");
if (result)
{
barGoLink bar(result->GetRowCount());
uint32 uiNodeCount = 0;
do
{
bar.step();
Field* pFields = result->Fetch();
PointMovement pTemp;
pTemp.m_uiCreatureEntry = pFields[0].GetUInt32();
pTemp.m_uiPointId = pFields[1].GetUInt32();
pTemp.m_fX = pFields[2].GetFloat();
pTemp.m_fY = pFields[3].GetFloat();
pTemp.m_fZ = pFields[4].GetFloat();
pTemp.m_uiWaitTime = pFields[5].GetUInt32();
CreatureInfo const* pCInfo = GetCreatureTemplateStore(pTemp.m_uiCreatureEntry);
if (!pCInfo)
{
error_db_log("SD2: DB table script_waypoint has waypoint for non-existant creature entry %u", pTemp.m_uiCreatureEntry);
continue;
}
if (!pCInfo->ScriptID)
error_db_log("SD2: DB table script_waypoint has waypoint for creature entry %u, but creature does not have ScriptName defined and then useless.", pTemp.m_uiCreatureEntry);
PointMovementList.push_back(pTemp);
++uiNodeCount;
} while (result->NextRow());
delete result;
outstring_log("");
outstring_log(">> Loaded %u Script Waypoint nodes.", uiNodeCount);
}
else
{
barGoLink bar(1);
bar.step();
outstring_log("");
outstring_log(">> Loaded 0 Script Waypoints. DB table `script_waypoint` is empty.");
}
//Gather additional data for EventAI
result = TScriptDB.PQuery("SELECT id, position_x, position_y, position_z, orientation, spawntimesecs FROM eventai_summons");
@@ -913,6 +969,12 @@ void LoadDatabase()
delete result;
}
outstring_log("SD2: Loading EventAI scripts for %u creature(s)...", uiEAICreatureCount);
if (result)
{
uiEAICreatureCount = result->GetRowCount();
delete result;
}
//Gather event data
result = TScriptDB.PQuery("SELECT id, creature_id, event_type, event_inverse_phase_mask, event_chance, event_flags, "
@@ -1037,7 +1099,6 @@ void LoadDatabase()
}
break;
case EVENT_T_RANGE:
case EVENT_T_FRIENDLY_HP:
case EVENT_T_FRIENDLY_IS_CC:
{