aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2011_12_26_07_world_sai.sql18
-rw-r--r--sql/updates/world/2011_12_26_08_world_sai.sql19
-rwxr-xr-xsrc/server/game/Entities/Creature/CreatureGroups.cpp23
-rw-r--r--src/server/scripts/World/npcs_special.cpp10
4 files changed, 51 insertions, 19 deletions
diff --git a/sql/updates/world/2011_12_26_07_world_sai.sql b/sql/updates/world/2011_12_26_07_world_sai.sql
new file mode 100644
index 00000000000..ffe55b0e5f9
--- /dev/null
+++ b/sql/updates/world/2011_12_26_07_world_sai.sql
@@ -0,0 +1,18 @@
+-- [Q] [A/H] Scarlet Armies Approach...
+-- Orbaz Bloodbane SAI
+SET @ENTRY := 28914;
+SET @QUEST := 12757;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=@QUEST;
+DELETE FROM `quest_start_scripts` WHERE `id`=@QUEST;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@ENTRY,@ENTRY*100);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,19,0,100,0,@QUEST,0,0,0,80,@ENTRY*100,0,2,0,0,0,1,0,0,0,0,0,0,0,"Orbaz Bloodbane - On Quest Accept - Run Script"),
+(@ENTRY*100,9,0,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Orbaz Bloodbane - On Script - Say Line 0"),
+(@ENTRY*100,9,1,0,0,0,100,0,3000,3000,0,0,11,53097,0,0,0,0,0,1,0,0,0,0,0,0,0,"Orbaz Bloodbane - On Script - Cast Portal: Acherus");
+-- Text
+DELETE FROM `waypoint_scripts` WHERE `id`=491;
+DELETE FROM `db_script_string` WHERE `entry`=2000000008;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0,"Make haste, $N. Use the portal!",12,0,100,25,0,0,"Orbaz Bloodlane");
diff --git a/sql/updates/world/2011_12_26_08_world_sai.sql b/sql/updates/world/2011_12_26_08_world_sai.sql
new file mode 100644
index 00000000000..6633e97f2b4
--- /dev/null
+++ b/sql/updates/world/2011_12_26_08_world_sai.sql
@@ -0,0 +1,19 @@
+-- [Q] [H] Hinott's Assistance
+-- Serge Hinott SAI
+SET @ENTRY := 2391;
+SET @QUEST := 2480;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+UPDATE `quest_template` SET `StartScript`=0,`CompleteScript`=0 WHERE `id`=@QUEST;
+DELETE FROM `quest_start_scripts` WHERE `id`=@QUEST;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@ENTRY,@ENTRY*100);
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,19,0,100,0,@QUEST,0,0,0,80,@ENTRY*100,0,2,0,0,0,1,0,0,0,0,0,0,0,"Serge Hinott - On Quest Accept - Run Script"),
+(@ENTRY*100,9,0,0,0,0,100,0,2000,2000,0,0,69,0,0,0,0,0,0,8,0,0,0,-4.33,-900.68,57.54,1.54,"Serge Hinott - On Script - Move To Pos"),
+(@ENTRY*100,9,1,0,0,0,100,0,18000,18000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Serge Hinott - On Script - Say Line 0"),
+(@ENTRY*100,9,2,0,0,0,100,0,10000,10000,0,0,15,@QUEST,0,0,0,0,0,7,0,0,0,0,0,0,0,"Serge Hinott - On Script - Quest Credit"),
+(@ENTRY*100,9,3,0,0,0,100,0,1000,1000,0,0,69,0,0,0,0,0,0,8,0,0,0,-4.66,-903.92,57.54,3.48,"Serge Hinott - On Script - Move To Pos");
+-- Text
+DELETE FROM `db_script_string` WHERE `entry`=2000000026;
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0,"Whoops!",12,0,100,113,0,0,"Serge Hinott");
diff --git a/src/server/game/Entities/Creature/CreatureGroups.cpp b/src/server/game/Entities/Creature/CreatureGroups.cpp
index 0167aa08d30..d32eff862bb 100755
--- a/src/server/game/Entities/Creature/CreatureGroups.cpp
+++ b/src/server/game/Entities/Creature/CreatureGroups.cpp
@@ -88,21 +88,6 @@ void LoadCreatureFormations()
return;
}
- std::set<uint32> guidSet;
-
- QueryResult guidResult = WorldDatabase.PQuery("SELECT guid FROM creature");
- if (guidResult)
- {
- do
- {
- Field* fields = guidResult->Fetch();
- uint32 guid = fields[0].GetUInt32();
-
- guidSet.insert(guid);
-
- } while (guidResult->NextRow());
- }
-
uint32 count = 0;
Field* fields;
FormationInfo* group_member;
@@ -114,8 +99,8 @@ void LoadCreatureFormations()
//Load group member data
group_member = new FormationInfo;
group_member->leaderGUID = fields[0].GetUInt32();
- uint32 memberGUID = fields[1].GetUInt32();
- group_member->groupAI = fields[4].GetUInt8();
+ uint32 memberGUID = fields[1].GetUInt32();
+ group_member->groupAI = fields[4].GetUInt8();
//If creature is group leader we may skip loading of dist/angle
if (group_member->leaderGUID != memberGUID)
{
@@ -130,14 +115,14 @@ void LoadCreatureFormations()
// check data correctness
{
- if (guidSet.find(group_member->leaderGUID) == guidSet.end())
+ if (!sObjectMgr->GetCreatureData(group_member->leaderGUID))
{
sLog->outErrorDb("creature_formations table leader guid %u incorrect (not exist)", group_member->leaderGUID);
delete group_member;
continue;
}
- if (guidSet.find(memberGUID) == guidSet.end())
+ if (!sObjectMgr->GetCreatureData(memberGUID))
{
sLog->outErrorDb("creature_formations table member guid %u incorrect (not exist)", memberGUID);
delete group_member;
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index 38a56f7b64a..03fc07c9582 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -2026,6 +2026,16 @@ public:
{
DoCast(me, 59907, false); // Spell for Lightwell Charges
}
+
+ void EnterEvadeMode()
+ {
+ if (!me->isAlive())
+ return;
+
+ me->DeleteThreatList();
+ me->CombatStop(true);
+ me->ResetPlayerDamageReq();
+ }
};
CreatureAI* GetAI(Creature* creature) const