You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I reviews the scripts that you submitted and they look good.
But there are some things missing. Also the boss should not despawn on evade (I don't understand why did you add this action).
That's true, but this should be a general functionality handled in the core for all raid and dungeon bosses.
We should never implement despawn and respawn mechanics in scripts, unless it's really mandatory. That's why I only added this to Halion and Kalecgos and Trial of the Crusader.
It might be still possible to implement Alizabal in Acid, using phases and threat handling. Howerver I don't know all the details, so I'm not sure if this will work. I will probably make a test with this the following days.
One more observation:
For spell which have an entry in SpellDifficulty.dbc please add only the event for normal. The core will select the right entry for 25 man and heroic.
You can try to run this script. Please let me know if it works fine:
-- Creature id: 47120UPDATE creature_template SET AIName='EventAI'WHERE entry=47120;
DELETEFROM creature_ai_scripts WHERE creature_id=47120;
INSERT INTO creature_ai_scripts VALUES
('4712001','47120','0','0','100','6','300000','300000','0','0','11','47008','0','3','1','-53','0','0','0','0','0','0','Argaloth - Cast Berserk and Emote'),
('4712002','47120','0','0','100','7','10000','10000','24000','24000','11','88954','0','0','0','0','0','0','0','0','0','0','Argaloth - Cast Consuming Darkness'),
('4712003','47120','0','0','100','7','15000','15000','15000','15000','11','88942','0','0','0','0','0','0','0','0','0','0','Argaloth - Cast Meteor Slash'),
('4712004','47120','2','0','100','6','66','0','0','0','11','88972','0','1','1','-54','0','0','0','0','0','0','Argaloth - Cast Fel Firestorm and Emote at 66% health'),
('4712005','47120','2','0','100','6','33','0','0','0','11','88972','0','1','1','-54','0','0','0','0','0','0','Argaloth - Cast Fel Firestorm and Emote at 33% health');
-- Creature id: 47829UPDATE creature_template SET AIName='EventAI'WHERE entry=47829;
DELETEFROM creature_ai_scripts WHERE creature_id=47829;
INSERT INTO creature_ai_scripts VALUES
('4782901','47829','11','0','100','6','0','0','0','0','11','88973','0','0','0','0','0','0','0','0','0','0','Fel Flames - Cast Fel Firestorm on Spawned');
-- Creature id: 52363UPDATE creature_template SET AIName='EventAI'WHERE entry=52363;
DELETEFROM creature_ai_scripts WHERE creature_id=52363;
INSERT INTO creature_ai_scripts VALUES
('5236301','52363','0','0','100','6','300000','300000','0','0','11','47008','0','3','1','-53','0','0','0','0','0','0','Occu\'thar - Cast Berserk and Emote'),
('5236302','52363','0','0','100','7','5000','5000','25000','25000','11','96913','0','0','0','0','0','0','0','0','0','0','Occu\'thar - Cast Searing Shadow'),
('5236303','52363','0','0','100','7','15000','15000','30000','40000','11','96872','0','0','0','0','0','0','0','0','0','0','Occu\'thar - Cast Focused Fire'),
('5236304','52363','0','0','100','7','22000','22000','60000','60000','11','96920','0','0','0','0','0','0','0','0','0','0','Occu\'thar - Cast Eyes of Occu\'thar'),
('5236305','52363','30','0','100','7','5','52369','0','0','11','96884','6','1','0','0','0','0','0','0','0','0','Occu\'thar - Cast Focused Fire on Received AI event from Eyestalk');
-- Creature id: 52369UPDATE creature_template SET AIName='EventAI'WHERE entry=52369;
DELETEFROM creature_ai_scripts WHERE creature_id=52369;
INSERT INTO creature_ai_scripts VALUES
('5236901','52369','11','0','100','6','0','0','0','0','45','5','100','0','0','0','0','0','0','0','0','0','Eyestalk - Send AI Event on Spawned');
-- Creature id: 52389UPDATE creature_template SET AIName='EventAI'WHERE entry=52389;
DELETEFROM creature_ai_scripts WHERE creature_id=52389;
INSERT INTO creature_ai_scripts VALUES
('5238901','52389','11','0','100','6','0','0','0','0','11','96995','0','0','0','0','0','0','0','0','0','0','Eye of Occu\'thar - Cast Eye of Occu\'thar Visual on Spawned'),
('5238902','52389','0','0','100','7','10000','10000','10000','10000','11','96968','0','0','0','0','0','0','0','0','0','0','Eye of Occu\'thar - Cast Occu\'thar\'s Destruction'),
('5238903','52389','4','0','100','6','0','0','0','0','11','96942','6','0','0','0','0','0','0','0','0','0','Eye of Occu\'thar - Cast Gaze of Occu\'thar on Aggro');
-- Creature id: 55869UPDATE creature_template SET AIName='EventAI'WHERE entry=55869;
DELETEFROM creature_ai_scripts WHERE creature_id=55869;
INSERT INTO creature_ai_scripts VALUES
('5586901','55869','10','0','100','6','0','45','0','0','1','-55','0','0','0','0','0','0','0','0','0','0','Alizabal - Yell Intro'),
('5586902','55869','4','0','100','6','0','0','0','0','1','-56','0','0','0','0','0','0','0','0','0','0','Alizabal - Yell on Aggro'),
('5586903','55869','0','0','100','6','300000','300000','0','0','11','47008','0','3','0','0','0','0','0','0','0','0','Alizabal - Cast Berserk'),
('5586904','55869','0','0','100','39','5000','5000','15000','15000','11','104936','1','0','11','105065','0','0','0','0','0','0','Alizabal - Cast Skewer or Seething Hate'),
('5586905','55869','0','0','100','7','25000','25000','25000','25000','11','106248','0','0','0','0','0','0','0','0','0','0','Alizabal - Cast Blade dance'),
('5586906','55869','5','0','100','7','0','0','0','0','1','-59','-60','-61','0','0','0','0','0','0','0','0','Alizabal - Yell on Kill'),
('5586907','55869','6','0','100','6','0','0','0','0','1','-58','0','0','0','0','0','0','0','0','0','0','Alizabal - Yell on Death'),
('5586908','55869','21','0','100','6','0','0','0','0','1','-57','0','0','0','0','0','0','0','0','0','0','Alizabal - Yell on Reached Home');
-- Creature id: 56350UPDATE creature_template SET AIName='EventAI'WHERE entry=56350;
DELETEFROM creature_ai_scripts WHERE creature_id=56350;
INSERT INTO creature_ai_scripts VALUES
('5635001','56350','0','0','100','7','15000','15000','15000','15000','11','105859','1','0','0','0','0','0','0','0','0','0','Disciple of Hate - Cast Run Through'),
('5635002','56350','0','0','100','7','25000','25000','25000','25000','11','105855','0','0','0','0','0','0','0','0','0','0','Disciple of Hate - Cast Whirl of Blades');
-- TextsDELETEFROM creature_ai_texts WHERE entry IN (-53, -54, -55, -56, -57, -58, -59, -60, -61);
INSERT INTO`creature_ai_texts` (`entry`,`content_default`,`sound`,`type`,`language`,`comment`,`emote`) VALUES
('-53','%s goes into a berserker rage!','0','3','0','Generic - Emote Berserk','0'),
('-54','%s begins to cast Fel Firestorm!','0','3','0','Argaloth - Emote Fel Firestorm','0'),
('-55','How I HATE this place. My captors may be long-dead, but don\'t think I won\'t take it all out on you miserable treasure-hunters.','25779','1','0','Alizabal - Say Intro','0'),
('-56','I hate adventurers.','25777','1','0','Alizabal - Say Aggro','0'),
('-57','I hate incompetent raiders.','25780','1','0','Alizabal - Say Wipe','0'),
('-58','I hate... every one of you...','25778','1','0','Alizabal - Say Death','0'),
('-59','I still hate you.','25781','1','0','Alizabal - Say Slay 1','0'),
('-60','Do you hate me? Good.','25782','1','0','Alizabal - Say Slay 2','0'),
('-61','I hate mercy.','25783','1','0','Alizabal - Say Slay 3','0');
-- Script targetDELETEFROM spell_script_target WHERE entry=96931;
INSERT INTO spell_script_target VALUES
(96931, 1, 52389, 0);
Some parts of that commit are correct. But I'm not sure about the dummy and script effect implementation. We need to check a sniff in order to confirm this.
Also, some parts of the scripts that I provided are not working properly because of some core limitations. That we need to debug and understand.
Isn't this one specific only to Cata? Probably it needs to be added to core then.
// size of this packet is at most 15 (usually less)
WorldPacket data(SMSG_INSTANCE_ENCOUNTER, 15);
data << uint32(state->lastCommand);
switch (state->lastCommand)
{
case ENCOUNTER_FRAME_ENGAGE:
case ENCOUNTER_FRAME_DISENGAGE:
case ENCOUNTER_FRAME_UPDATE_PRIORITY:
data << state->guid.WriteAsPacked();
data << uint8(state->data1);
break;
case ENCOUNTER_FRAME_ADD_TIMER:
case ENCOUNTER_FRAME_ENABLE_OBJECTIVE:
case ENCOUNTER_FRAME_DISABLE_OBJECTIVE:
data << uint8(state->data1);
break;
case ENCOUNTER_FRAME_UPDATE_OBJECTIVE:
data << uint8(state->data1);
data << uint8(state->data2);
break;
case ENCOUNTER_FRAME_UNK7:
default:
break;
}
dungeon->SendToPlayers(&data);
Actually, this is also sent in Wotlk... so yes, we might have to implement this in core, but I won't want this to be script dependent. Probably we should link it to LFG manager.
In that particular case yes. But the opcode that it's sent does more than that.
Currently I see that both R2 and TC only send this for ICC stuff.
However this looks like it's appearing in other instances as well (checked on Ulduar), so I'm thinking that probably we should make this a generic thing for rank 3 (only raid maybe?) bosses.-> poke @Schmoozerd about this as well.
Also it looks like there are other encounter states sent which I couldn't find yet.
diff --git a/src/game/InstanceData.cpp b/src/game/InstanceData.cpp
index 34e8a00..584ddef 100644
--- a/src/game/InstanceData.cpp+++ b/src/game/InstanceData.cpp@@ -52,3 +52,36 @@ bool InstanceData::CheckConditionCriteriaMeet(Player const* /*source*/, uint32 i
instance->GetId(), instance_condition_id, uint32(conditionSourceType));
return false;
}
++void InstanceData::SendEncounterUnit(uint32 type, Unit* source /*= NULL*/, uint8 param1 /*= 0*/, uint8 param2 /*= 0*/)+{+ // size of this packet is at most 15 (usually less)+ WorldPacket data(SMSG_INSTANCE_ENCOUNTER, 15);+ data << uint32(type);++ switch (type)+ {+ case ENCOUNTER_FRAME_ENGAGE:+ case ENCOUNTER_FRAME_DISENGAGE:+ case ENCOUNTER_FRAME_UPDATE_PRIORITY:+ if (!source)+ return;+ data << source->GetObjectGuid().WriteAsPacked();+ data << uint8(param1);+ break;+ case ENCOUNTER_FRAME_ADD_TIMER:+ case ENCOUNTER_FRAME_ENABLE_OBJECTIVE:+ case ENCOUNTER_FRAME_DISABLE_OBJECTIVE:+ data << uint8(param1);+ break;+ case ENCOUNTER_FRAME_UPDATE_OBJECTIVE:+ data << uint8(param1);+ data << uint8(param2);+ break;+ case ENCOUNTER_FRAME_UNK7:+ default:+ break;+ }++ instance->SendToPlayers(&data);+}diff --git a/src/game/InstanceData.h b/src/game/InstanceData.h
index fb66165..7fb019e 100644
--- a/src/game/InstanceData.h+++ b/src/game/InstanceData.h@@ -49,6 +49,18 @@ enum InstanceConditionIDs // Suggested values
INSTANCE_CONDITION_ID_ULDUAR = 33113,
};
+enum EncounterFrameType // only raid UI specific+{+ ENCOUNTER_FRAME_ENGAGE = 0,+ ENCOUNTER_FRAME_DISENGAGE = 1,+ ENCOUNTER_FRAME_UPDATE_PRIORITY = 2,+ ENCOUNTER_FRAME_ADD_TIMER = 3,+ ENCOUNTER_FRAME_ENABLE_OBJECTIVE = 4,+ ENCOUNTER_FRAME_UPDATE_OBJECTIVE = 5,+ ENCOUNTER_FRAME_DISABLE_OBJECTIVE = 6,+ ENCOUNTER_FRAME_UNK7 = 7 // sorting encounter units+};+
class MANGOS_DLL_SPEC InstanceData
{
public:
@@ -119,6 +131,9 @@ class MANGOS_DLL_SPEC InstanceData
// This is used for such things are heroic loot
// See ObjectMgr.h enum ConditionSource for possible values of conditionSourceType
virtual bool CheckConditionCriteriaMeet(Player const* source, uint32 instance_condition_id, WorldObject const* conditionSource, uint32 conditionSourceType) const;
++ // Special UI unit frame - sent mostly for raid bosses+ void SendEncounterUnit(uint32 type, Unit* source = NULL, uint8 param1 = 0, uint8 param2 = 0);
};
#endif
Activity
xfurry commentedon Mar 25, 2014
Thanks. I will submit both of these to Acid and core once Cata will be updated (eta: probably this weekend).
xfurry commentedon Mar 26, 2014
Poke @cyberium about the forum block issue
cyberium commentedon Mar 26, 2014
Blocked some adress from ukrain and china because of spam bot, maybe a little bit too much, you could try now.
xfurry commentedon Apr 22, 2014
I reviews the scripts that you submitted and they look good.
But there are some things missing. Also the boss should not despawn on evade (I don't understand why did you add this action).
In order for this to be complete (so we can add it to Acid) I still need the script for http://www.wowhead.com/npc=55869 and http://www.wowhead.com/npc=56350 and the instance script (door handling + encounter in progress). Thanks
xfurry commentedon Apr 23, 2014
That's true, but this should be a general functionality handled in the core for all raid and dungeon bosses.
We should never implement despawn and respawn mechanics in scripts, unless it's really mandatory. That's why I only added this to Halion and Kalecgos and Trial of the Crusader.
It might be still possible to implement Alizabal in Acid, using phases and threat handling. Howerver I don't know all the details, so I'm not sure if this will work. I will probably make a test with this the following days.
xfurry commentedon Apr 23, 2014
One more observation:
For spell which have an entry in SpellDifficulty.dbc please add only the event for normal. The core will select the right entry for 25 man and heroic.
xfurry commentedon Apr 23, 2014
You can try to run this script. Please let me know if it works fine:
xfurry commentedon Apr 24, 2014
Some parts of that commit are correct. But I'm not sure about the dummy and script effect implementation. We need to check a sniff in order to confirm this.
Also, some parts of the scripts that I provided are not working properly because of some core limitations. That we need to debug and understand.
xfurry commentedon May 9, 2014
I don't know what the "UpdateSpecialEncounterState" is. Probably you should explain what it should do, and we'll implemented if required.
xfurry commentedon May 9, 2014
Isn't this one specific only to Cata? Probably it needs to be added to core then.
xfurry commentedon May 9, 2014
Actually, this is also sent in Wotlk... so yes, we might have to implement this in core, but I won't want this to be script dependent. Probably we should link it to LFG manager.
xfurry commentedon May 9, 2014
In that particular case yes. But the opcode that it's sent does more than that.
Currently I see that both R2 and TC only send this for ICC stuff.
However this looks like it's appearing in other instances as well (checked on Ulduar), so I'm thinking that probably we should make this a generic thing for rank 3 (only raid maybe?) bosses.-> poke @Schmoozerd about this as well.
Also it looks like there are other encounter states sent which I couldn't find yet.
xfurry commentedon May 9, 2014
Sniff doesn't lie. In Ulduar it happens, but the sniff version is 434. I think that for 4.x it's done for a lot of raid bosses.
However in 335 Ulduar sniff it's not set. In ICC 335 I can find it only in certain bosses, and for RS I haven't checked.
Also for 335 it's not clear what all the other encounter frames do, apart from 0 and 1.
So far I could only find 0, 1 and 7 in sniffs.
xfurry commentedon May 10, 2014
Sniff is never wrong. In 434 Ulduar has frames for all bosses.