Creatures of the Eco-Domes (10427)

Issue #932 resolved
bewtihozzy
created an issue

Creatures of the Eco-Domes (10427) Tag 12 Talbuks for Aurine Moonblaze at the Stormspire. You may tag either Talbuk Sires or Talbuk Does using the Talbuk Tagger.

bug: Cannot tag any mob. The item (29817) does some wierd effect but quest wont progress

Comments (14)

  1. Selphius

    Fixed it not long ago, here is a proper fix:

    /*######
    ## npc_talbuk_sire
    ######*/
    
    #define EMOTE_TALBUK_SIRE "Talbuk Sire seems to have weakened."
    
    struct npc_talbuk_sireAI : public ScriptedAI
    {
        npc_talbuk_sireAI(Creature* pCreature) : ScriptedAI(pCreature) {}
    
        void Reset()
        {
            spellHit = false;
    
            me->RemoveAllAuras();
            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
            me->SetStandState(UNIT_STAND_STATE_STAND);
            me->setFaction(14);
            reset_timer = 0;
            stun_timer = urand(8000, 10000);
        }
    
        bool spellHit;
    
        uint32 stun_timer;
        uint32 reset_timer;
    
        void SpellHit(Unit* Hitter, const SpellEntry* Spellkind)
        {
            if (Spellkind->Id == 35771 && !spellHit)
            {       
                if (Player* player = Hitter->GetCharmerOrOwnerPlayerOrPlayerItself())
                {
                    DoCast(player, 40347);
                    player->ClearInCombat();
                }
    
                me->MonsterTextEmote(EMOTE_TALBUK_SIRE, 0, false);
                me->CombatStop();
                me->setFaction(35);
                DoCast(me, 20373);
                me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
                me->SetStandState(UNIT_STAND_STATE_DEAD);
                reset_timer = 120000;
                spellHit = true;
            }
        }
    
        void UpdateAI(const uint32 diff)
        {
            if (!UpdateVictim())
            {
                if (reset_timer <= diff)
                {
                    Reset();
                }
                else reset_timer -= diff;
            }
    
            if (stun_timer <= diff)
            {
                DoCastVictim(32023);
                stun_timer = urand(18000, 22000);
            }
            else stun_timer -= diff;
    
            DoMeleeAttackIfReady();
        }
    };
    
    CreatureAI* GetAI_npc_talbuk_sire(Creature* pCreature)
    {
        return new npc_talbuk_sireAI(pCreature);
    }
    
    /*######
    ## npc_talbuk_doe
    ######*/
    
    #define EMOTE_TALBUK_DOE "Talbuk Doe seems to have weakened."
    
    struct npc_talbuk_doeAI : public ScriptedAI
    {
        npc_talbuk_doeAI(Creature* pCreature) : ScriptedAI(pCreature) {}
    
        void Reset()
        {
            spellHit = false;
    
            me->RemoveAllAuras();
            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
            me->SetStandState(UNIT_STAND_STATE_STAND);
            me->setFaction(15);
            reset_timer = 0;
            gore_timer = urand(4000, 7000);
        }
    
        bool spellHit;
    
        uint32 gore_timer;
        uint32 reset_timer;
    
        void SpellHit(Unit* Hitter, const SpellEntry* Spellkind)
        {
            if (Spellkind->Id == 35771 && !spellHit)
            {
                if (Player* player = Hitter->GetCharmerOrOwnerPlayerOrPlayerItself())
                {
                    DoCast(player, 40347);
                    player->ClearInCombat();
                }
    
                me->MonsterTextEmote(EMOTE_TALBUK_DOE, 0, false);
                me->CombatStop();
                me->setFaction(35);
                DoCast(me, 20373);
                me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
                me->SetStandState(UNIT_STAND_STATE_DEAD);
                reset_timer = 120000;
                spellHit = true;
            }
        }
    
        void UpdateAI(const uint32 diff)
        {
            if (!UpdateVictim())
            {
                if (reset_timer <= diff)
                {
                    Reset();
                }
                else reset_timer -= diff;
            }
    
            if (gore_timer <= diff)
            {
                DoCastVictim(32019);
                gore_timer = urand(18000, 22000);
            }
            else gore_timer -= diff;
    
            DoMeleeAttackIfReady();
        }
    };
    
    CreatureAI* GetAI_npc_talbuk_doe(Creature* pCreature)
    {
        return new npc_talbuk_doeAI(pCreature);
    }
    
    newscript = new Script;
        newscript->Name = "npc_talbuk_doe";
        newscript->GetAI = &GetAI_npc_talbuk_doe;
        newscript->RegisterSelf();
    
        newscript = new Script;
        newscript->Name = "npc_talbuk_sire";
        newscript->GetAI = &GetAI_npc_talbuk_sire;
        newscript->RegisterSelf();
    
  2. AlphaFox
    #include "ScriptPCH.h"
    #include "ScriptMgr.h"
    #include "ScriptedCreature.h"
    #include "ScriptedGossip.h"
    #include <cstring>
    
    /*######
    ## npc_talbuk_sire
    ######*/
    
    #define EMOTE_TALBUK_SIRE "Talbuk Sire seems to have weakened."
    
    struct npc_talbuk_sireAI : public ScriptedAI
    {
        npc_talbuk_sireAI(Creature* pCreature) : ScriptedAI(pCreature) {}
    
        void Reset()
        {
            spellHit = false;
    
            me->RemoveAllAuras();
            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
            me->SetStandState(UNIT_STAND_STATE_STAND);
            me->setFaction(14);
            reset_timer = 0;
            stun_timer = urand(8000, 10000);
        }
    
        bool spellHit;
    
        uint32 stun_timer;
        uint32 reset_timer;
    
        void SpellHit(Unit* Hitter, const SpellEntry* Spellkind)
        {
            if (Spellkind->Id == 35771 && !spellHit)
            {       
                if (Player* player = Hitter->GetCharmerOrOwnerPlayerOrPlayerItself())
                {
                    DoCast(player, 40347);
                    player->ClearInCombat();
                }
    
                me->MonsterTextEmote(EMOTE_TALBUK_SIRE, 0, false);
                me->CombatStop();
                me->setFaction(35);
                DoCast(me, 20373);
                me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
                me->SetStandState(UNIT_STAND_STATE_DEAD);
                reset_timer = 120000;
                spellHit = true;
            }
        }
    
        void UpdateAI(const uint32 diff)
        {
            if (!UpdateVictim())
            {
                if (reset_timer <= diff)
                {
                    Reset();
                }
                else reset_timer -= diff;
            }
    
            if (stun_timer <= diff)
            {
                DoCastVictim(32023);
                stun_timer = urand(18000, 22000);
            }
            else stun_timer -= diff;
    
            DoMeleeAttackIfReady();
        }
    };
    
    CreatureAI* GetAI_npc_talbuk_sire(Creature* pCreature)
    {
        return new npc_talbuk_sireAI(pCreature);
    }
    
    /*######
    ## npc_talbuk_doe
    ######*/
    
    #define EMOTE_TALBUK_DOE "Talbuk Doe seems to have weakened."
    
    struct npc_talbuk_doeAI : public ScriptedAI
    {
        npc_talbuk_doeAI(Creature* pCreature) : ScriptedAI(pCreature) {}
    
        void Reset()
        {
            spellHit = false;
    
            me->RemoveAllAuras();
            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
            me->SetStandState(UNIT_STAND_STATE_STAND);
            me->setFaction(15);
            reset_timer = 0;
            gore_timer = urand(4000, 7000);
        }
    
        bool spellHit;
    
        uint32 gore_timer;
        uint32 reset_timer;
    
        void SpellHit(Unit* Hitter, const SpellEntry* Spellkind)
        {
            if (Spellkind->Id == 35771 && !spellHit)
            {
                if (Player* player = Hitter->GetCharmerOrOwnerPlayerOrPlayerItself())
                {
                    DoCast(player, 40347);
                    player->ClearInCombat();
                }
    
                me->MonsterTextEmote(EMOTE_TALBUK_DOE, 0, false);
                me->CombatStop();
                me->setFaction(35);
                DoCast(me, 20373);
                me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
                me->SetStandState(UNIT_STAND_STATE_DEAD);
                reset_timer = 120000;
                spellHit = true;
            }
        }
    
        void UpdateAI(const uint32 diff)
        {
            if (!UpdateVictim())
            {
                if (reset_timer <= diff)
                {
                    Reset();
                }
                else reset_timer -= diff;
            }
    
            if (gore_timer <= diff)
            {
                DoCastVictim(32019);
                gore_timer = urand(18000, 22000);
            }
            else gore_timer -= diff;
    
            DoMeleeAttackIfReady();
        }
    };
    
    CreatureAI* GetAI_npc_talbuk_doe(Creature* pCreature)
    {
        return new npc_talbuk_doeAI(pCreature);
    }
    
    
    void AddSC_npc_talbuk_doe()
    {
        Script* newscript;
    
        newscript = new Script;
        newscript->Name = "npc_talbuk_doe";
        newscript->GetAI = &GetAI_npc_talbuk_doe;
        newscript->RegisterSelf();
    }
    
    void AddSC_npc_talbuk_sire()
    {
        Script* newscript;
    
       newscript = new Script;
        newscript->Name = "npc_talbuk_sire";
        newscript->GetAI = &GetAI_npc_talbuk_sire;
        newscript->RegisterSelf();
    }
    
  3. job bais

    tested this script, for me this does not work currently.. and yes i have the npc_talbuk_sire attached to the appropiate npc and that doe aswell :P the item simply does nothing, it makes the sound but thats it.

  4. Selphius

    @job bais First try if the script does work for you by using gm command. Target the talbuk and type .cast 35771 It's a spell which the item should use. If the talbuk will lay down, sleep etc. that will mean my script does work like intended and the problem is with the item in your DB.

  5. job bais

    indeed it does work when i use the cast command, so it has to be something with the item provided that is not attached propably to some script i think.

    and the item now works also... beats me what it was....

  6. Selphius

    Well if the item didn't work, you would need to go to item template, search for this item and check what "cast" it uses. (spellid) if it's correct. That would be it.

    Since it works, you don't need to do that anymore. Glad to hear it was solved.

  7. Selphius

    Can be added to the repo. Resolved.

    /*######
    ## npc_talbuk_sire
    ######*/
    
    #define EMOTE_TALBUK_SIRE "Talbuk Sire seems to have weakened."
    
    struct npc_talbuk_sireAI : public ScriptedAI
    {
        npc_talbuk_sireAI(Creature* pCreature) : ScriptedAI(pCreature) {}
    
        void Reset()
        {
            spellHit = false;
    
            me->RemoveAllAuras();
            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
            me->SetStandState(UNIT_STAND_STATE_STAND);
            me->setFaction(14);
            reset_timer = 0;
            stun_timer = urand(8000, 10000);
        }
    
        bool spellHit;
    
        uint32 stun_timer;
        uint32 reset_timer;
    
        void SpellHit(Unit* Hitter, const SpellEntry* Spellkind)
        {
            if (Spellkind->Id == 35771 && !spellHit)
            {       
                if (Player* player = Hitter->GetCharmerOrOwnerPlayerOrPlayerItself())
                {
                    DoCast(player, 40347);
                    player->ClearInCombat();
                }
    
                me->MonsterTextEmote(EMOTE_TALBUK_SIRE, 0, false);
                me->CombatStop();
                me->setFaction(35);
                DoCast(me, 20373);
                me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
                me->SetStandState(UNIT_STAND_STATE_DEAD);
                reset_timer = 120000;
                spellHit = true;
            }
        }
    
        void UpdateAI(const uint32 diff)
        {
            if (!UpdateVictim())
            {
                if (reset_timer <= diff)
                {
                    Reset();
                }
                else reset_timer -= diff;
            }
    
            if (stun_timer <= diff)
            {
                DoCastVictim(32023);
                stun_timer = urand(18000, 22000);
            }
            else stun_timer -= diff;
    
            DoMeleeAttackIfReady();
        }
    };
    
    CreatureAI* GetAI_npc_talbuk_sire(Creature* pCreature)
    {
        return new npc_talbuk_sireAI(pCreature);
    }
    
    /*######
    ## npc_talbuk_doe
    ######*/
    
    #define EMOTE_TALBUK_DOE "Talbuk Doe seems to have weakened."
    
    struct npc_talbuk_doeAI : public ScriptedAI
    {
        npc_talbuk_doeAI(Creature* pCreature) : ScriptedAI(pCreature) {}
    
        void Reset()
        {
            spellHit = false;
    
            me->RemoveAllAuras();
            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
            me->SetStandState(UNIT_STAND_STATE_STAND);
            me->setFaction(15);
            reset_timer = 0;
            gore_timer = urand(4000, 7000);
        }
    
        bool spellHit;
    
        uint32 gore_timer;
        uint32 reset_timer;
    
        void SpellHit(Unit* Hitter, const SpellEntry* Spellkind)
        {
            if (Spellkind->Id == 35771 && !spellHit)
            {
                if (Player* player = Hitter->GetCharmerOrOwnerPlayerOrPlayerItself())
                {
                    DoCast(player, 40347);
                    player->ClearInCombat();
                }
    
                me->MonsterTextEmote(EMOTE_TALBUK_DOE, 0, false);
                me->CombatStop();
                me->setFaction(35);
                DoCast(me, 20373);
                me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
                me->SetStandState(UNIT_STAND_STATE_DEAD);
                reset_timer = 120000;
                spellHit = true;
            }
        }
    
        void UpdateAI(const uint32 diff)
        {
            if (!UpdateVictim())
            {
                if (reset_timer <= diff)
                {
                    Reset();
                }
                else reset_timer -= diff;
            }
    
            if (gore_timer <= diff)
            {
                DoCastVictim(32019);
                gore_timer = urand(18000, 22000);
            }
            else gore_timer -= diff;
    
            DoMeleeAttackIfReady();
        }
    };
    
    CreatureAI* GetAI_npc_talbuk_doe(Creature* pCreature)
    {
        return new npc_talbuk_doeAI(pCreature);
    }
    
    void AddSC_netherstorm()
    {
        Script* newscript;
    
    newscript = new Script;
    newscript->Name = "npc_talbuk_doe";
    newscript->GetAI = &GetAI_npc_talbuk_doe;
    newscript->RegisterSelf();
    
    newscript = new Script;
    newscript->Name = "npc_talbuk_sire";
    newscript->GetAI = &GetAI_npc_talbuk_sire;
    newscript->RegisterSelf();
    }
    
    INSERT INTO `creature_template` (`entry`, `heroic_entry`, `KillCredit1`, `KillCredit2`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (20610, 0, 0, 0, 19696, 0, 19696, 0, 'Talbuk Doe', NULL, NULL, 0, 68, 69, 6542, 6761, 0, 0, 6342, 15, 15, 0, 1.125, 1, 0, 88, 198, 0, 1001, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 328.82, 459.08, 100, 1, 0, 20610, 0, 70063, 0, 0, 0, 0, 0, 0, 32019, 0, 0, 0, 0, 0, 0, '', 1, 3, 0, 1, 0, 0, 0, 'npc_talbuk_doe');
    INSERT INTO `creature_template` (`entry`, `heroic_entry`, `KillCredit1`, `KillCredit2`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (20777, 0, 0, 0, 19779, 0, 19779, 0, 'Talbuk Sire', NULL, NULL, 0, 68, 69, 6116, 6326, 0, 0, 6342, 14, 14, 0, 1.125, 1, 0, 88, 198, 0, 1001, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 328.82, 459.08, 100, 1, 0, 20777, 0, 70063, 0, 0, 0, 0, 0, 0, 32023, 0, 0, 0, 0, 0, 0, '', 1, 3, 0, 1, 0, 0, 0, 'npc_talbuk_sire');
    
  8. Log in to comment