Public feed #893208

Unnamed

public text v1 · immutable
Raw Edit
·published 2008-02-05 23:21 UTC
rendered paste body
#include "StdAfx.h"
#include "Setup.h"

#define SKILL_NPC   30010

class SCRIPT_DECL SkillNPC : public GossipScript{
  public:
    void GossipHello(Object * pObject, Player* Plr, bool AutoSend);
    void GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code);
    void GossipEnd(Object * pObject, Player* Plr);
    void Destroy(){ delete this;}
};


void SkillNPC::GossipHello(Object * pObject, Player* Plr, bool AutoSend){
  GossipMenu *Menu;
  objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  Menu->AddItem(0,  "Learn Weapon Skills", 1);
  if(Plr->getClass() == 1)  Menu->AddItem(0, "I need my stances & abilities", 2);
  if(Plr->getClass() == 7)  Menu->AddItem(0, "I need my totems",  3);
  if(Plr->getClass() == 9)  Menu->AddItem(0, "I need my summons", 4);
  if(Plr->getClass() == 11) Menu->AddItem(0, "I need my forms",   5);
  if(Plr->getClass() == 4) Menu->AddItem(0, "I need my pet skillz",6);

  if(AutoSend) Menu->SendTo(Plr);
}


void SkillNPC::GossipEnd(Object * pObject, Player* Plr){
  GossipScript::GossipEnd(pObject, Plr);
}

void SkillNPC::GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code){
  Creature * pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?((Creature*)pObject):NULL;
  if(pCreature==NULL) return;

  switch(IntId){
    case 1:{
      switch(Plr->getClass()){
        case 1:{ //Warrior
          Plr->addSpell(201); //sword
          Plr->addSpell(674); //dualwield
          Plr->addSpell(1180); //dagger
          Plr->addSpell(198);  //mace
          Plr->addSpell(5011); //xbow
          Plr->addSpell(15590); //fist
          Plr->addSpell(264);  //bow
          Plr->addSpell(266);  //gun
          Plr->addSpell(202);  //2h sword
          Plr->addSpell(197); //2h axe
          Plr->addSpell(199); //2h mace
          Plr->addSpell(196);  //axe
          break;
        }
        case 2:{ //Pally
          Plr->addSpell(201); //sword
          Plr->addSpell(200); //polearm
          Plr->addSpell(202);  //2h sword
          Plr->addSpell(196);  //1h axe
          Plr->addSpell(197); //2h axe
          Plr->addSpell(198);  //mace
          Plr->addSpell(199); //2h mace
          break;
        }
        case 3:{ //Hunter      
          Plr->addSpell(201); //sword
          Plr->addSpell(196);  //axe
          Plr->addSpell(264);  //bow
          Plr->addSpell(266);  //gun
          Plr->addSpell(1180); //daggers
          Plr->addSpell(202);  //2h sword
          Plr->addSpell(197); //2h axe
          Plr->addSpell(674); //xwield
          break;
        }
        case 4:{ //Rogue
          Plr->addSpell(201); //sword
          Plr->addSpell(264);  //bow
          Plr->addSpell(266);  //gun
          Plr->addSpell(674); //xwield
          break;
        }
        case 5:{ //Priest
          Plr->addSpell(198);  //Mace
          Plr->addSpell(1180); //Dagger
          Plr->addSpell(227); //Stave
          Plr->addSpell(5009); //Wand
          break;
        }
        case 7:{ //Shaman
          Plr->addSpell(198);  //Mace
          Plr->addSpell(1180); //Dagger
          Plr->addSpell(227); //Stave
          Plr->addSpell(196);  //Axe
          break;
        }
        case 8:{ //Mage
          Plr->addSpell(198);  //Mace
          Plr->addSpell(1180); //Dagger
          Plr->addSpell(227); //Stave
          Plr->addSpell(5009); //Wand
          break;
        }
        case 9:{ //Warlock
          Plr->addSpell(201); //Sword
          Plr->addSpell(1180); //Dagger
          Plr->addSpell(227); //Stave
          Plr->addSpell(5009); //Wand
          break;
        }
        case 11:{ //Druid
          Plr->addSpell(201); //Sword
          Plr->addSpell(1180); //Dagger
          Plr->addSpell(227); //Stave
          Plr->addSpell(5009); //Wand
          break;
        }
      }
      pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC weapon skills!" );
      Plr->Gossip_Complete();
      break;
    }
    case 2:{
      if(Plr->getLevel() >= 30) Plr->addSpell(2458); //Berserker Stance
      if(Plr->getLevel() >= 10) Plr->addSpell(71);   //Defensive Stance
	  if(Plr->getLevel() >= 30) Plr->addSpell(20252); //Intercept Rank 1
	  if(Plr->getLevel() >= 10) Plr->addSpell(355); //Taunt
      pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Use them well!" );
      Plr->Gossip_Complete();
      break;
    }
    case 3:{ //Sham totoms
      if(Plr->getLevel() >= 38) Plr->addSpell(8170);  //Disease Cleansing Totem
      if(Plr->getLevel() >= 66) Plr->addSpell(2062);  //Earth Elemental Totem
      if(Plr->getLevel() >= 6)  Plr->addSpell(2484);  //Earthbind Totem
      if(Plr->getLevel() >= 68) Plr->addSpell(2894);  //Fire Elemental Totem
      if(Plr->getLevel() >= 12) Plr->addSpell(1535);  //Fire Nova Totem Rank1
      if(Plr->getLevel() >= 22) Plr->addSpell(8489);  //Fire Nova Totem Rank2
      if(Plr->getLevel() >= 32) Plr->addSpell(8499);  //Fire Nova Totem Rank3
      if(Plr->getLevel() >= 42) Plr->addSpell(11314); //Fire Nova Totem Rank4
      if(Plr->getLevel() >= 52) Plr->addSpell(11315); //Fire Nova Totem Rank5
      if(Plr->getLevel() >= 61) Plr->addSpell(25546); //Fire Nova Totem Rank6
      if(Plr->getLevel() >= 70) Plr->addSpell(25547); //Fire Nova Totem Rank7
      if(Plr->getLevel() >= 28) Plr->addSpell(8184);  //Fire Resistance Totem Rank1
      if(Plr->getLevel() >= 42) Plr->addSpell(10537); //Fire Resistance Totem Rank2
      if(Plr->getLevel() >= 58) Plr->addSpell(10538); //Fire Resistance Totem Rank3
      if(Plr->getLevel() >= 68) Plr->addSpell(25563); //Fire Resistance Totem Rank4
      if(Plr->getLevel() >= 28) Plr->addSpell(8227);  //Flametongue Totem Rank1
      if(Plr->getLevel() >= 38) Plr->addSpell(8249);  //Flametongue Totem Rank2
      if(Plr->getLevel() >= 48) Plr->addSpell(10526); //Flametongue Totem Rank3
      if(Plr->getLevel() >= 58) Plr->addSpell(16387); //Flametongue Totem Rank4
      if(Plr->getLevel() >= 67) Plr->addSpell(25557); //Flametongue Totem Rank5
      if(Plr->getLevel() >= 24) Plr->addSpell(8181);  //Frost Resistance Totem Rank1
      if(Plr->getLevel() >= 38) Plr->addSpell(10478); //Frost Resistance Totem Rank2
      if(Plr->getLevel() >= 54) Plr->addSpell(10479); //Frost Resistance Totem Rank3
      if(Plr->getLevel() >= 67) Plr->addSpell(25560); //Frost Resistance Totem Rank4
      if(Plr->getLevel() >= 42) Plr->addSpell(8835);  //Grace of Air Totem Rank1
      if(Plr->getLevel() >= 56) Plr->addSpell(10627); //Grace of Air Totem Rank2
      if(Plr->getLevel() >= 60) Plr->addSpell(25359); //Grace of Air Totem Rank3
      if(Plr->getLevel() >= 30) Plr->addSpell(8177);  //Grounding Totem
      if(Plr->getLevel() >= 15) Plr->addSpell(16258); //Guardian Totems Rank1
      if(Plr->getLevel() >= 16) Plr->addSpell(16293); //Guardian Totems Rank2
      if(Plr->getLevel() >= 20) Plr->addSpell(5394);  //Healing Stream Totem Rank1
      if(Plr->getLevel() >= 30) Plr->addSpell(6375);  //Healing Stream Totem Rank2
      if(Plr->getLevel() >= 40) Plr->addSpell(6377);  //Healing Stream Totem Rank3
      if(Plr->getLevel() >= 50) Plr->addSpell(10462); //Healing Stream Totem Rank4
      if(Plr->getLevel() >= 60) Plr->addSpell(10463); //Healing Stream Totem Rank5
      if(Plr->getLevel() >= 69) Plr->addSpell(25567); //Healing Stream Totem Rank6
      if(Plr->getLevel() >= 26) Plr->addSpell(8190);  //Magma Totem Rank1
      if(Plr->getLevel() >= 36) Plr->addSpell(10585); //Magma Totem Rank2
      if(Plr->getLevel() >= 46) Plr->addSpell(10586); //Magma Totem Rank3
      if(Plr->getLevel() >= 56) Plr->addSpell(10587); //Magma Totem Rank4
      if(Plr->getLevel() >= 65) Plr->addSpell(25552); //Magma Totem Rank5
      if(Plr->getLevel() >= 26) Plr->addSpell(5675);  //Mana Spring Totem Rank1
      if(Plr->getLevel() >= 36) Plr->addSpell(10495); //Mana Spring Totem Rank2
      if(Plr->getLevel() >= 46) Plr->addSpell(10496); //Mana Spring Totem Rank3
      if(Plr->getLevel() >= 56) Plr->addSpell(10497); //Mana Spring Totem Rank4
      if(Plr->getLevel() >= 65) Plr->addSpell(25570); //Mana Spring Totem Rank5
      if(Plr->getLevel() >= 30) Plr->addSpell(10595); //Nature Resistance Totem Rank1
      if(Plr->getLevel() >= 44) Plr->addSpell(10600); //Nature Resistance Totem Rank2
      if(Plr->getLevel() >= 60) Plr->addSpell(10601); //Nature Resistance Totem Rank3
      if(Plr->getLevel() >= 69) Plr->addSpell(25574); //Nature Resistance Totem Rank4
      if(Plr->getLevel() >= 22) Plr->addSpell(8166);  //Poison Cleansing Totem
      if(Plr->getLevel() >= 10) Plr->addSpell(3599);  //Searing Totem Rank1
      if(Plr->getLevel() >= 20) Plr->addSpell(6363);  //Searing Totem Rank2
      if(Plr->getLevel() >= 30) Plr->addSpell(6364);  //Searing Totem Rank3
      if(Plr->getLevel() >= 40) Plr->addSpell(6365);  //Searing Totem Rank4
      if(Plr->getLevel() >= 50) Plr->addSpell(10437); //Searing Totem Rank5
      if(Plr->getLevel() >= 60) Plr->addSpell(10438); //Searing Totem Rank6
      if(Plr->getLevel() >= 69) Plr->addSpell(25533); //Searing Totem Rank7
      if(Plr->getLevel() >= 34) Plr->addSpell(6495);  //Sentry Totem
      if(Plr->getLevel() >= 8)  Plr->addSpell(5730);  //Stoneclaw Totem Rank1
      if(Plr->getLevel() >= 18) Plr->addSpell(6390);  //Stoneclaw Totem Rank2
      if(Plr->getLevel() >= 28) Plr->addSpell(6391);  //Stoneclaw Totem Rank3
      if(Plr->getLevel() >= 38) Plr->addSpell(6392);  //Stoneclaw Totem Rank4
      if(Plr->getLevel() >= 48) Plr->addSpell(10427); //Stoneclaw Totem Rank5
      if(Plr->getLevel() >= 58) Plr->addSpell(10428); //Stoneclaw Totem Rank6
      if(Plr->getLevel() >= 67) Plr->addSpell(25525); //Stoneclaw Totem Rank7
      if(Plr->getLevel() >= 4)  Plr->addSpell(8071);  //Stoneskin Totem Rank1
      if(Plr->getLevel() >= 14) Plr->addSpell(8154);  //Stoneskin Totem Rank2
      if(Plr->getLevel() >= 24) Plr->addSpell(8155);  //Stoneskin Totem Rank3
      if(Plr->getLevel() >= 34) Plr->addSpell(10406); //Stoneskin Totem Rank4
      if(Plr->getLevel() >= 44) Plr->addSpell(10407); //Stoneskin Totem Rank5
      if(Plr->getLevel() >= 54) Plr->addSpell(10408); //Stoneskin Totem Rank6
      if(Plr->getLevel() >= 63) Plr->addSpell(25508); //Stoneskin Totem Rank7
      if(Plr->getLevel() >= 70) Plr->addSpell(25509); //Stoneskin Totem Rank8
      if(Plr->getLevel() >= 10) Plr->addSpell(8075);  //Strength of Earth Totem Rank1
      if(Plr->getLevel() >= 24) Plr->addSpell(8160);  //Strength of Earth Totem Rank2
      if(Plr->getLevel() >= 38) Plr->addSpell(8161);  //Strength of Earth Totem Rank3
      if(Plr->getLevel() >= 52) Plr->addSpell(10442); //Strength of Earth Totem Rank4
      if(Plr->getLevel() >= 60) Plr->addSpell(25361); //Strength of Earth Totem Rank5
      if(Plr->getLevel() >= 65) Plr->addSpell(25528); //Strength of Earth Totem Rank6
      if(Plr->getLevel() >= 50) Plr->addSpell(25908); //Tranquil Air Totem
      if(Plr->getLevel() >= 18) Plr->addSpell(8143);  //Tremor Totem
      if(Plr->getLevel() >= 32) Plr->addSpell(8512);  //Windfury Totem Rank1
      if(Plr->getLevel() >= 42) Plr->addSpell(10613); //Windfury Totem Rank2
      if(Plr->getLevel() >= 52) Plr->addSpell(10614); //Windfury Totem Rank3
      if(Plr->getLevel() >= 61) Plr->addSpell(25585); //Windfury Totem Rank4
      if(Plr->getLevel() >= 70) Plr->addSpell(25587); //Windfury Totem Rank5
      if(Plr->getLevel() >= 36) Plr->addSpell(15107); //Windwall Totem Rank1
      if(Plr->getLevel() >= 46) Plr->addSpell(15111); //Windwall Totem Rank2
      if(Plr->getLevel() >= 56) Plr->addSpell(15112); //Windwall Totem Rank3
      if(Plr->getLevel() >= 65) Plr->addSpell(25577); //Windwall Totem Rank4
      if(Plr->getLevel() >= 64) Plr->addSpell(3738);  //Wrath of Air Totem Rank1
      pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Use them well!" );
      Plr->Gossip_Complete();
      break;
    }
    case 4:{
      Plr->addSpell(688); //Summon Imp
      if(Plr->getLevel() >= 10) Plr->addSpell(697);  //Summon Voidwalker
      if(Plr->getLevel() >= 20) Plr->addSpell(712);  //Summon Succubus
      if(Plr->getLevel() >= 30) Plr->addSpell(691);  //Summon Felhunter
      if(Plr->getLevel() >= 40) Plr->addSpell(1710); //Summon Felsteed
      if(Plr->getLevel() >= 50) Plr->addSpell(1122); //Inferno
      pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Treat them well!" );
      Plr->Gossip_Complete();
      break;
    }
    case 5:{
      if(Plr->getLevel() >= 10) Plr->addSpell(5487); //Bear Form
      if(Plr->getLevel() >= 18) Plr->addSpell(1066); //Aqatic Form
      if(Plr->getLevel() >= 20) Plr->addSpell(768);  //Cat Form
      if(Plr->getLevel() >= 30) Plr->addSpell(783);  //Travel Form
      if(Plr->getLevel() >= 40) Plr->addSpell(9634); //Dire Bear Form
      pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Go crazy you beast!" );
      Plr->Gossip_Complete();
      break;
    }
    case 6:{
      if(Plr->getLevel() >= 10) Plr->addSpell(6991); //Feed Pet
      if(Plr->getLevel() >= 10) Plr->addSpell(1515); //Tame Beast
      if(Plr->getLevel() >= 10) Plr->addSpell(883);  //Call Pet
      if(Plr->getLevel() >= 10) Plr->addSpell(2641);  //Dismiss Pet
      if(Plr->getLevel() >= 10) Plr->addSpell(982); //Revive Pet
	  pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Should be everything, Rock on Baby :D" );
      Plr->Gossip_Complete();
      break;
    }
    default:{
      Plr->Gossip_Complete();
    }
  }
}

void SetupSkillNPC(ScriptMgr * mgr){
  GossipScript * gs = (GossipScript*) new SkillNPC();
  mgr->register_gossip_script(SKILL_NPC, gs);
}