mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
* Merged ScriptDev2 928
--HG-- branch : trunk
This commit is contained in:
@@ -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:
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user