Gossip dont work after single click

Hello.I have a bug with my gossip.For example: I make script to npc buffer.Its have a check for numbers of items needed than destroy it.If didnt have its type “you dont have”.But after its type “you dont have” no one gossip work.I click any and no responce.Whats wrong in my code or how to fix it?

#include "ScriptPCH.h"
#include "WorldPacket.h"


class npc_morph : public CreatureScript
{
    public:
        npc_morph()
            : CreatureScript("npc_buff")
        {
        }

bool OnGossipHello(Player* pPlayer, Creature* pCreature)
{
    pPlayer->PlayerTalkClass->ClearMenus(); 
    pPlayer->ADD_GOSSIP_ITEM( 7, "|cff4169E1|TInterfaceiconsSpell_magic_greaterblessingofkings:38|t Buffs|r"                    , GOSSIP_SENDER_MAIN, 20001);
    return true;
}
void SendDefaultMenu(Player* pPlayer, Creature* pCreature, uint32 uiAction)
{
    
switch(uiAction)
{

case 20001: //Buffs
   pPlayer->PlayerTalkClass->ClearMenus();
pPlayer->ADD_GOSSIP_ITEM( 7, "|TInterfacePaperDollInfoFrameUI-GearManager-Undo.blp:38|t  Main Menu"                             , GOSSIP_SENDER_MAIN, 50016);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsspell_magic_greaterblessingofkings:38|t  Greater Blessing of Kings|r"             , GOSSIP_SENDER_MAIN, 1001);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsSpell_holy_greaterblessingofsanctuary:38|t  Greater Blessing of Sanctuary|r"      , GOSSIP_SENDER_MAIN, 1005);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsAbility_warrior_battleshout:38|t  Master Buff(Melee)|r"                           , GOSSIP_SENDER_MAIN, 1010);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsSpell_holy_magicalsentry:38|t  Master Buff(Magic)|r"                              , GOSSIP_SENDER_MAIN, 1025);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsAbility_hunter_pathfinding:38|t  Master Buff(Ranged)|r"                           , GOSSIP_SENDER_MAIN, 1030);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsinv_enchant_essenceeternallarge:38|t  Legasy of the Mountain King|r"              , GOSSIP_SENDER_MAIN, 1015);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsinv_misc_toy_03:38|t  Charm of the Raging Defender|r"                             , GOSSIP_SENDER_MAIN, 1020);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsinv_misc_toy_04:38|t  Charm of the Bloodletter|r"                                 , GOSSIP_SENDER_MAIN, 1055);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsinv_misc_toy_02:38|t  Charm of of Mighty Mojo|r"                                  , GOSSIP_SENDER_MAIN, 1056);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsSpell_nature_polymorph_cow:38|t  Crit Buffs|r"                                    , GOSSIP_SENDER_MAIN, 1035);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsability_creature_poison_05:38|t  Spirit of Zandalar|r"                            , GOSSIP_SENDER_MAIN, 1040);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsspell_arcane_teleportorgrimmar:38|t  Warchief's Blessing|r"                       , GOSSIP_SENDER_MAIN, 1045);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsinv_misc_head_dragon_01:38|t  Rallying Cry of the Dragonslayer|r"                 , GOSSIP_SENDER_MAIN, 1050);
    pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsinv_enchant_essencemysticallarge:38|t  Wrath of the Titans|r"                     , GOSSIP_SENDER_MAIN, 1057);
pPlayer->ADD_GOSSIP_ITEM( 2, "|TInterfaceiconsinv_holiday_brewfestbuff_01:38|t  Brewfest Enthusiast|r"                          , GOSSIP_SENDER_MAIN, 1058);

pPlayer->SEND_GOSSIP_MENU(550001,pCreature->GetGUID());
break;
 }

 {
    pPlayer->PlayerTalkClass->ClearMenus(); 
    pPlayer->ADD_GOSSIP_ITEM( 7, "|cff4169E1|TInterfaceiconsSpell_magic_greaterblessingofkings:30|t Buffs|r"                    , GOSSIP_SENDER_MAIN, 20001);
    pPlayer->ADD_GOSSIP_ITEM( 7, "|cff4169E1|TInterfaceiconsSpell_shadow_twistedfaith:30|t Morphs|r"                    , GOSSIP_SENDER_MAIN, 20002);
    pPlayer->ADD_GOSSIP_ITEM( 7, "|cff4169E1|TInterfaceiconsInv_misc_book_04:30|t Professions|r"                    , GOSSIP_SENDER_MAIN, 20003);
    pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID());
    return;
    
 }

case 1001: // Buff me Greater Blessing of Kings
    if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pCreature->CastSpell(pPlayer,25898,false);
    pPlayer->DestroyItemCount(38186, 20, true);
break;

case 1005: // Buff me Greater Blessing of Sanctuary
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pCreature->CastSpell(pPlayer,25899,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;

case 1010: // Buff me Master Buff(Melee)
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,35874,true);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;  

case 1025: // Buff me Master Buff(Magic)
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,35912,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;  

case 1030: // Buff me Master Buff(Ranged)
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,38734,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;  

case 1015: // Buff me Legasy of the Mountain King
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,30562,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;  

case 1020: // Buff me Charm of the Raging Defender
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,43822,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break; 

case 1035: // Buff me Crit Buffs
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,31305,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;

case 1040: // Buff me Spirit of Zandalar
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,24425,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;

case 1045: // Buff me Warchief's Blessing
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,16609,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;

case 1050: // Buff me Rallying Cry of the Dragonslayer
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,22888,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;

case 1055: // Buff me Charm of the Bloodletter
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,43816,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;

case 1056: // Buff me Charm of Mighty Mojo
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,43818,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;

case 1057: // Buff me Wrath of the Titans
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pPlayer->CastSpell(pPlayer,30557,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;

case 1058: // Buff me Brewfest Enthusiast
if (pPlayer->GetItemCount(38186) < 20 )  
   {   
   pCreature->MonsterSay("You dont have enough Event Coins, need 20!", LANG_UNIVERSAL, NULL);
   return;
  }
    pPlayer->CLOSE_GOSSIP_MENU();
    pCreature->CastSpell(pPlayer,42138,false);
    pPlayer->DestroyItemCount(38186, 20, true);       
break;

   }


}


bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
{
        if (uiSender == GOSSIP_SENDER_MAIN)
        SendDefaultMenu(pPlayer, pCreature, uiAction);
        return true;
}

};

void AddSC_npc_buff()
{
        new npc_buff;
}

You need to re send the menu that was open.

You could also try removing some of that redundancy you got there.

Hm.Good idea.Thanks