Skip to content

Argaloth and Occuthar. #1

Closed
Closed

Description

No description provided.

Activity

  1. xfurry commented on Mar 25, 2014

    @xfurry
    Member

    Thanks. I will submit both of these to Acid and core once Cata will be updated (eta: probably this weekend).

  2. xfurry commented on Mar 26, 2014

    @xfurry
    Member

    Unfortunately for forum cmangos I blocked by your ISP, for what reason I do not know.

    Poke @cyberium about the forum block issue

  3. cyberium commented on Mar 26, 2014

    @cyberium

    Blocked some adress from ukrain and china because of spam bot, maybe a little bit too much, you could try now.

  4. xfurry commented on Apr 22, 2014

    @xfurry
    Member

    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

  5. xfurry commented on Apr 23, 2014

    @xfurry
    Member

    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.

  6. xfurry commented on Apr 23, 2014

    @xfurry
    Member

    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.

  7. xfurry commented on Apr 23, 2014

    @xfurry
    Member

    You can try to run this script. Please let me know if it works fine:

    -- Creature id: 47120
    UPDATE creature_template SET AIName='EventAI' WHERE entry=47120;
    DELETE FROM 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: 47829
    UPDATE creature_template SET AIName='EventAI' WHERE entry=47829;
    DELETE FROM 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: 52363
    UPDATE creature_template SET AIName='EventAI' WHERE entry=52363;
    DELETE FROM 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: 52369
    UPDATE creature_template SET AIName='EventAI' WHERE entry=52369;
    DELETE FROM 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: 52389
    UPDATE creature_template SET AIName='EventAI' WHERE entry=52389;
    DELETE FROM 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: 55869
    UPDATE creature_template SET AIName='EventAI' WHERE entry=55869;
    DELETE FROM 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: 56350
    UPDATE creature_template SET AIName='EventAI' WHERE entry=56350;
    DELETE FROM 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');
    
    -- Texts
    DELETE FROM 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 target
    DELETE FROM spell_script_target WHERE entry=96931;
    INSERT INTO spell_script_target VALUES
    (96931, 1, 52389, 0);
    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index 8fcf248..2858d19 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -2949,6 +2949,16 @@ void Spell::EffectDummy(SpellEffectEntry const* effect)
                         m_caster->CastSpell(unitTarget, 74454, true, NULL, NULL, m_caster->GetObjectGuid(), m_spellInfo);
                         return;
                     }
    +                case 105065:                                // Seething Hate
    +                case 108090:                                // Seething Hate (h)
    +                case 106248:                                // Blade Dance
    +                {
    +                    if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
    +                        return;
    +
    +                    m_caster->CastSpell(unitTarget, effect->CalculateSimpleValue(), true);
    +                    return;
    +                }
                 }
                 break;
             }
    @@ -8975,6 +8985,14 @@ void Spell::EffectScriptEffect(SpellEffectEntry const* effect)
                         unitTarget->CastSpell(m_caster, effect->CalculateSimpleValue(), true);
                         return;
                     }
    +                case 96931:                                 // Eyes of Occu'thar
    +                {
    +                    if (!unitTarget)
    +                        return;
    +
    +                    m_caster->CastSpell(unitTarget, effect->CalculateSimpleValue(), true);
    +                    return;
    +                }
                 }
                 break;
             }
  8. xfurry commented on Apr 24, 2014

    @xfurry
    Member

    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.

  9. xfurry commented on May 9, 2014

    @xfurry
    Member

    I don't know what the "UpdateSpecialEncounterState" is. Probably you should explain what it should do, and we'll implemented if required.

  10. xfurry commented on May 9, 2014

    @xfurry
    Member

    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);
    
  11. xfurry commented on May 9, 2014

    @xfurry
    Member

    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.

  12. xfurry commented on May 9, 2014

    @xfurry
    Member

    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
  13. xfurry commented on May 9, 2014

    @xfurry
    Member

    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.

    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
    };
    
  14. xfurry commented on May 10, 2014

    @xfurry
    Member

    In Ulduar no frame, it is a mistake Sniffen. Sorry, but I believe my eyes.

    Sniff is never wrong. In 434 Ulduar has frames for all bosses.

  15. ghost closed this as completedon Dec 16, 2014
  16. ghost reopened this on Feb 2, 2015
  17. ghost closed this as completedon Mar 16, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions