azerothcore / mod-npc-talent-template

Template NPC (gear, talents)
http://azerothcore.org/
10 stars 30 forks source link

Talent spells are taught to the player, not granted as talents #11

Closed disclosurez closed 1 year ago

disclosurez commented 5 years ago

Basically, talents are taught to the player instead of being learnt as talents they are taught as spells. If a player respecs, they still have the talents/spells applied from this npc.

This caused such a major issue on my realm, I had to unlearn all the spells listed by this module and reset everyone's talents.

I then proceeded to disable the talent option entirely in the .cpp and made it just apply glyphs/gear.

Be very careful here.

BarbzYHOOL commented 5 years ago

can you find which spell is the right spell then? probably there is a talent spell that teaches the usable spell.

mindsear commented 5 years ago

I apologize that I cannot continue with wow emulation due to real life problems.

BarbzYHOOL commented 5 years ago

Sorry to hear that, thank you for your very good contributions @mindsear

BarbzYHOOL commented 5 years ago

Ok so this module is completely broken because of that

mindsear commented 5 years ago

I managed to clone a fresh ac core and compile it just to test this module only and for me everything seems to be working as it should. Even if I respec or relog, talents are not learnt on spellbook.

Can somebody write down the steps/configuration so I can reproduce?

Edit: Maybe I'm wrong, but.. maybe there's another module that is interfering with this one.

milestorme commented 5 years ago

Thank you @mindsear saw your git pull , @poszer could you reproduce this after we talked ?

KaizerAce commented 3 years ago

Changing this:

void sTemplateNPC::LearnTemplateTalents(Player* player)
{
    for (TalentContainer::const_iterator itr = m_TalentContainer.begin(); itr != m_TalentContainer.end(); ++itr)
    {
        if ((*itr)->playerClass == GetClassString(player).c_str() && (*itr)->playerSpec == sTalentsSpec)
        {
            player->learnSpell((*itr)->talentId);
            player->addTalent((*itr)->talentId, player->GetActiveSpecMask(), 0);
        }
    }

    player->SetFreeTalentPoints(0);
    player->SendTalentsInfoData(false);
}`

to this:
`void sTemplateNPC::LearnTemplateTalents(Player* player)
{
    for (TalentContainer::const_iterator itr = m_TalentContainer.begin(); itr != m_TalentContainer.end(); ++itr)
    {
        if ((*itr)->playerClass == GetClassString(player).c_str() && (*itr)->playerSpec == sTalentsSpec)
        {
            switch (player->getClass())
            {
            case CLASS_WARRIOR:
                if ((*itr)->playerSpec == "PvPArms")
                {//12328,12294,46924,12323
                    player->learnSpellHighRank(12328);
                    player->learnSpellHighRank(12294);
                    player->learnSpellHighRank(12323);
                    player->learnSpellHighRank(46924);
                    //player->AddItem(41398, 1);
                }
                if ((*itr)->playerSpec == "PvPProtection")
                {//12975,12809,20243,46968
                    player->learnSpellHighRank(12975);
                    player->learnSpellHighRank(12809);
                    player->learnSpellHighRank(20243);
                    player->learnSpellHighRank(46968);
                    //player->AddItem(44088, 1);
                }
                break;
            case CLASS_PALADIN:
                if ((*itr)->playerSpec == "PvPHoly")
                {
                    player->learnSpellHighRank(20216);
                    player->learnSpellHighRank(31821);
                    player->learnSpellHighRank(20473);
                    player->learnSpellHighRank(31842);
                    player->learnSpellHighRank(53563);
                    player->learnSpellHighRank(64205);
                    //player->AddItem(41401, 1);
                }
                if ((*itr)->playerSpec == "PvPProtection")
                {
                    player->learnSpellHighRank(64205);
                    player->learnSpellHighRank(20911);
                    player->learnSpellHighRank(20925);
                    player->learnSpellHighRank(31935);
                    player->learnSpellHighRank(53595);
                    //player->AddItem(41398, 1);
                }
                if ((*itr)->playerSpec == "PvPRetribution")
                {
                    player->learnSpellHighRank(20066);
                    player->learnSpellHighRank(35395);
                    player->learnSpellHighRank(53385);
                    player->learnSpellHighRank(64205);
                    //player->AddItem(41398, 1);
                }
                break;
            case CLASS_HUNTER:
                if ((*itr)->playerSpec == "PvPBeastmastery")
                {//19577,19574,19434,23989
                    player->learnSpellHighRank(19577);
                    player->learnSpellHighRank(19574);
                    player->learnSpellHighRank(19434);
                    player->learnSpellHighRank(23989);
                    //player->AddItem(41398, 1);
                }
                if ((*itr)->playerSpec == "PvPMarksmanship")
                {//19434,23989,19506,34490,53209,19503
                    player->learnSpellHighRank(19434);
                    player->learnSpellHighRank(23989);
                    player->learnSpellHighRank(19506);
                    player->learnSpellHighRank(34490);
                    player->learnSpellHighRank(53209);
                    player->learnSpellHighRank(19503);
                    //player->AddItem(41398, 1);
                }
                break;
            case CLASS_ROGUE:
                if ((*itr)->playerSpec == "PvPSubtlety")
                {//14185,16511,14183,36554,51713
                    player->learnSpellHighRank(14185);
                    player->learnSpellHighRank(16511);
                    player->learnSpellHighRank(14183);
                    player->learnSpellHighRank(36554);
                    player->learnSpellHighRank(51713);
                    //player->AddItem(41381, 1);
                }
                break;
            case CLASS_PRIEST:
                if ((*itr)->playerSpec == "PvPDiscipline")
                {//10060,33206,47540,19236, 14751
                    player->learnSpellHighRank(10060);
                    player->learnSpellHighRank(33206);
                    player->learnSpellHighRank(47540);
                    player->learnSpellHighRank(19236);
                    player->learnSpellHighRank(14751);
                    //player->AddItem(41401, 1);
                }
                if ((*itr)->playerSpec == "PvPHoly")
                {//14751,19236,724,34861,47788
                    player->learnSpellHighRank(14751);
                    player->learnSpellHighRank(19236);
                    player->learnSpellHighRank(724);
                    player->learnSpellHighRank(34861);
                    player->learnSpellHighRank(47788);
                    //player->AddItem(41401, 1);
                }
                if ((*itr)->playerSpec == "PvPShadow")
                {//15407,14751,15286,15473,15487,34914,64044,47585
                    player->learnSpellHighRank(15407);
                    player->learnSpellHighRank(14751);
                    player->learnSpellHighRank(15286);
                    player->learnSpellHighRank(15473);
                    player->learnSpellHighRank(15487);
                    player->learnSpellHighRank(34914);
                    player->learnSpellHighRank(64044);
                    player->learnSpellHighRank(47585);
                    //player->AddItem(41401, 1);
                }
                break;
            case CLASS_DEATH_KNIGHT:
                if ((*itr)->playerSpec == "PvPUnholy")
                {//49039,49158,51052,49222,49206,55090
                    player->learnSpellHighRank(49039);
                    player->learnSpellHighRank(49158);
                    player->learnSpellHighRank(51052);
                    player->learnSpellHighRank(49222);
                    player->learnSpellHighRank(49206);
                    player->learnSpellHighRank(55090);
                    //player->AddItem(41285, 1);
                }
                if ((*itr)->playerSpec == "PvPFrost")
                {//49143,51271,49203,49796,49039
                    player->learnSpellHighRank(49143);
                    player->learnSpellHighRank(51271);
                    player->learnSpellHighRank(49203);
                    player->learnSpellHighRank(49796);
                    player->learnSpellHighRank(49039);
                    //player->AddItem(41285, 1);
                }
                break;
            case CLASS_SHAMAN:
                if ((*itr)->playerSpec == "PvPEnhancement")
                {//17364,60103,30823,51533
                    player->learnSpellHighRank(17364);
                    player->learnSpellHighRank(60103);
                    player->learnSpellHighRank(30823);
                    player->learnSpellHighRank(51533);
                    //player->AddItem(41398, 1);
                }
                if ((*itr)->playerSpec == "PvPRestoration")
                {//55198,16188,16190,51886,974,61295
                    player->learnSpellHighRank(55198);
                    player->learnSpellHighRank(16188);
                    player->learnSpellHighRank(16190);
                    player->learnSpellHighRank(51886);
                    player->learnSpellHighRank(974);
                    player->learnSpellHighRank(61295);
                    //player->AddItem(41401, 1);
                }
                if ((*itr)->playerSpec == "PvPElemental")
                {//51490,30706,16166
                    player->learnSpellHighRank(51490);
                    player->learnSpellHighRank(30706);
                    player->learnSpellHighRank(16166);
                    //player->AddItem(41285, 1);
                }
                break;
            case CLASS_MAGE:
                if ((*itr)->playerSpec == "PvPFire")
                {//11366,11113,11129,31661,44457,54646
                    player->learnSpellHighRank(11366);
                    player->learnSpellHighRank(11113);
                    player->learnSpellHighRank(11129);
                    player->learnSpellHighRank(31661);
                    player->learnSpellHighRank(44457);
                    player->learnSpellHighRank(54646);
                    //player->AddItem(41285, 1);
                }
                if ((*itr)->playerSpec == "PvPFrost")
                {//12472,11958,11426,31687,44572,54646
                    player->learnSpellHighRank(12472);
                    player->learnSpellHighRank(11958);
                    player->learnSpellHighRank(11426);
                    player->learnSpellHighRank(31687);
                    player->learnSpellHighRank(44572);
                    player->learnSpellHighRank(54646);
                    //player->AddItem(41401, 1);
                }
                break;
            case CLASS_WARLOCK:
                if ((*itr)->playerSpec == "PvPAffliction")
                {//18223,30108,48181,18708,19028
                    player->learnSpellHighRank(18223);
                    player->learnSpellHighRank(30108);
                    player->learnSpellHighRank(48181);
                    player->learnSpellHighRank(18708);
                    player->learnSpellHighRank(19028);
                    //player->AddItem(41382, 1);
                }
                if ((*itr)->playerSpec == "PvPDestruction")
                {//17877,17962,30283,50796,18708,19028
                    player->learnSpellHighRank(17877);
                    player->learnSpellHighRank(17962);
                    player->learnSpellHighRank(30283);
                    player->learnSpellHighRank(50796);
                    player->learnSpellHighRank(18708);
                    player->learnSpellHighRank(19028);
                    //player->AddItem(41382, 1);
                }
                break;//Ballance
            case CLASS_DRUID:
                if ((*itr)->playerSpec == "PvPRestoration")
                {//17116,18562,65139,48438
                    player->learnSpellHighRank(17116);
                    player->learnSpellHighRank(18562);
                    //player->learnSpellHighRank(65139);
                    //player->learnSpell(65139);
                    player->learnSpellHighRank(48438);
                    //player->AddItem(41401, 1);
                }
                if ((*itr)->playerSpec == "PvPFeral")
                {//61336,49377,33917,50334
                    player->learnSpellHighRank(61336);
                    //player->learnSpellHighRank(49377);
                    //player->CastSpell(player, 33917);
                    player->learnSpellHighRank(33876);
                    player->learnSpellHighRank(33878);
                    player->learnSpellHighRank(50334);
                    //  player->AddItem(44088, 1);
                }
                break;
            }
            player->addTalent((*itr)->talentId, player->GetActiveSpecMask(), 0);
        }
    }
    player->SetFreeTalentPoints(0);
    player->SendTalentsInfoData(false);
}

Resolves the issue.

Helias commented 3 years ago

thank you, @KaizerAce could you make a PR?

KaizerAce commented 3 years ago

thank you, @KaizerAce could you make a PR?

Yes, I will do that today

heyitsbench commented 2 years ago

Is this issue not resolved with #24?

pangolp commented 1 year ago

Is this issue not resolved with #24?

I don't really know, but I think so. In any case, we could close it and if it was not solved, they could notify us. But I think the same was resolved in #24.