#include "StdAfx.h" #include "Setup.h" class SCRIPT_DECL Warper : 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 Warper::GossipHello(Object * pObject, Player* Plr, bool AutoSend) { GossipMenu *Menu; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Menu->AddItem(0, "Weapon Skills", 7); Menu->AddItem(0, "Warrior Skills", 1); Menu->AddItem(0, "Paladin Skills", 4); Menu->AddItem(0, "Druid Skills", 400); Menu->AddItem(0, "Warlock Skills", 500); Menu->AddItem(0, "Hunter Skills", 600); Menu->AddItem(5, "Learn All Languages!", 17); Menu->AddItem(5, "Learn Self Ressurrect!", 18); if(AutoSend) Menu->SendTo(Plr); } void Warper::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; GossipMenu * Menu; switch(IntId) { case 0: // Return to start GossipHello(pObject, Plr, true); break; case 1: // Warrior Skills { if (Plr->getClass() == 1) { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Menu->AddItem(5, "Beserker Stance", 2); Menu->AddItem(5, "Defensive Stance", 3); Menu->AddItem(5, "Revenge Rank 8", 6); Menu->AddItem(5, "Intercept Rank 5", 50); Menu->AddItem(5, "Mortal Strike Rank 6", 51); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Welcome Warrior!" ); }else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Warrior! Begone!" ); } }break; case 400: // Druid Skils { if (Plr->getClass() == 11) { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Menu->AddItem(5, "Epic Flight Form", 401); Menu->AddItem(5, "Bear Form", 402); Menu->AddItem(5, "Dire Bear Form", 403); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Welcome Druid!" ); }else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Druid! Begone!" ); } }break; case 500: // Warlock Skills { if (Plr->getClass() == 9) { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Menu->AddItem(5, "Summon Imp", 501); Menu->AddItem(5, "Summon Voidwalker", 502); Menu->AddItem(5, "Summon Felguard", 503); Menu->AddItem(5, "Summon Succubus", 504); Menu->AddItem(5, "Summon Felhunter", 505); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Welcome Warlock!" ); }else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Warlock! Begone!" ); } }break; case 600: // Hunter Skills { if (Plr->getClass() == 3) { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Menu->AddItem(5, "Tame Beast", 601); Menu->AddItem(5, "Feed Pet", 602); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Welcome Hunter!" ); }else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Hunter! Begone!" ); } }break; case 2: // beserker Stance { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(2458); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Beserker stance." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 601: // Tame beast { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(1515); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Tame Beast." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 602: // Feed pet { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(6991); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Feed Pet." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 501: // Summon IMP { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(688); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Summon Imp." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 502: // Summon voidwalker { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(697); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Summon Voidwalker." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 503: // Summon Felguard { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(30146); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Summon Felguard." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 504: // Summon Succubus { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(712); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Summon Succubus." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 505: // Summon Felhunter { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(691); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Summon Felhunter." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 401: // Epic flight form 5487 { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(40120); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Epic Flight form." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 402: // Bear form { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(5487); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Bear form." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 403: //Dire Bear form { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(9634); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Dire Bear form." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 3: // Defencive Stance { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(71); // learn defencive Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Defencive Stance." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 6: // Revenge Rank 8 { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(30357); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Revenge Rank 8." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 50: // Intercept rank 5 { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(25275); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Intercept Rank 5." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 51: // Mortal strike rank 6 { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(30330); // Learn Beserker Stance pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Mortal Strike Rank 6." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 4: // Paladin Skills { if (Plr->getClass() == 2) { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Menu->AddItem(5, "Redemtion Rank 2", 5); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Redemption Rank 2." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Welcome Paladin!" ); }else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Paladin! Begone!" ); } }break; case 5: // Redemption Rank 2 { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(10322); // learn redemption pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned Redemption Rank 2." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 7: // Weapon Skills { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Menu->AddItem(0, "Learn Warrior Weapon Skills", 8); Menu->AddItem(0, "Learn Paladin Weapon Skills", 9); Menu->AddItem(0, "Learn Hunter Weapon Skills", 10); Menu->AddItem(0, "Learn Rogue Weapon Skills", 11); Menu->AddItem(0, "Learn Priest Weapon Skills", 12); Menu->AddItem(0, "Learn Shaman Weapon Skills", 13); Menu->AddItem(0, "Learn Mage Weapon Skills", 14); Menu->AddItem(0, "Learn Warlock Weapon Skills", 15); Menu->AddItem(0, "Learn Druid Weapon Skills", 16); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 8://Warrior { if (Plr->getClass() == 1) { Plr->addSpell(201);//sword Plr->addSpell(674);//dualwield Plr->addSpell(1180);//dagger Plr->addSpell(198);//mace Plr->addSpell(226);//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(160);//2h mace Plr->addSpell(196);//axe pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC warrior weapon skills! Be sure to log out and back in for the skills to take effect." " ); }else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Warrior! Begone!" ); } }break; case 9: //pally { if (Plr->getClass() == 2) { Plr->addSpell(201);//sword Plr->addSpell(674);//dualwield Plr->addSpell(1180);//dagger 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(160);//2h mace pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC Paladic weapon skills! Be sure to log out and back in for the skills to take effect." " ); }else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Paladin! Begone!" ); } }break; case 10: //hunter { if (Plr->getClass() == 3) { 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 pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC Hunter weapon skills! Be sure to log out and back in for the skills to take effect." ); }else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Hunter! Begone!" ); } }break; case 11: //Rogue { if (Plr->getClass() == 4) { Plr->addSpell(201);//sword Plr->addSpell(674);//dualwield Plr->addSpell(1180);//dagger Plr->addSpell(264);//bow Plr->addSpell(266);//gun pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC Rogue weapon skills! Be sure to log out and back in for the skills to take effect." " ); }else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Rogue! Begone!" ); } }break; case 12:// priest { if(Plr->getClass() == 5) { Plr->addSpell(198);//mace Plr->addSpell(201);//sword Plr->addSpell(674);//dualwield Plr->addSpell(1180);//dagger Plr->addSpell(136);//stave Plr->addSpell(5009);//wand pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC Priest weapon skills! Be sure to log out and back in for the skills to take effect." " ); } else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Priest! Begone!" ); } }break; case 13://Shaman { if(Plr->getClass() == 7) { Plr->addSpell(198);//mace Plr->addSpell(201);//sword Plr->addSpell(674);//dualwield Plr->addSpell(1180);//dagger Plr->addSpell(136);//stave Plr->addSpell(196);//axe pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC Shaman weapon skills! Be sure to log out and back in for the skills to take effect." " ); } else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Shaman! Begone!" ); } }break; case 14://mage { if(Plr->getClass() == 8) { Plr->addSpell(198);//mace Plr->addSpell(201);//sword Plr->addSpell(674);//dualwield Plr->addSpell(1180);//dagger Plr->addSpell(136);//stave Plr->addSpell(5009);//wand pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC Mage weapon skills! Be sure to log out and back in for the skills to take effect." " ); } else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Mage! Begone!" ); } }break; case 15:// WL { if(Plr->getClass() == 9) { Plr->addSpell(201);//sword Plr->addSpell(674);//dualwield Plr->addSpell(1180);//dagger Plr->addSpell(136);//stave Plr->addSpell(5009);//wand pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC Warlock weapon skills! Be sure to log out and back in for the skills to take effect." " ); } else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Warlock.your a warcock! Begone!" ); } }break; case 16://druide { if(Plr->getClass() == 11) { Plr->addSpell(198);//mace Plr->addSpell(201);//sword Plr->addSpell(674);//dualwield Plr->addSpell(1180);//dagger Plr->addSpell(136);//stave Plr->addSpell(5009);//wand pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You learned All BASIC Druid weapon skills! Be sure to log out and back in for the skills to take effect." " ); } else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "FOOL! you are no Druid! Begone!" ); } }break; case 17://Languge { uint32 price = 100000; uint32 currentgold = Plr->GetUInt32Value(PLAYER_FIELD_COINAGE); if (currentgold>=price && Plr->getLevel() >= 1 ){ int32 newgold = currentgold - price; Plr->SetUInt32Value(PLAYER_FIELD_COINAGE,newgold); Plr->addSpell(668);//common Plr->addSpell(669);//orcish Plr->addSpell(671);//darnassian Plr->addSpell(29932);//draenei Plr->addSpell(672);//dwarven Plr->addSpell(7340);//gnomish Plr->addSpell(17737);//gutterspeak Plr->addSpell(670);//taurahe Plr->addSpell(813);//thalassian Plr->addSpell(7341);//troll pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "I taught you the horde and alliance Language Skills Be sure to log out and back in for the skills to take effect." "); pCreature->Emote(EMOTE_ONESHOT_CHEER); } else { pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You don't have enough money! How dare You try to rip me off!"); } }break; case 18: // Self Ressurect { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Plr->addSpell(18976); // learn Self Ressurect pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learned to ress yourself after death. Buy Minor Soulstones reagens at Endernol the Enchantor." ); Menu->AddItem(0, "[Back]", 99); Menu->SendTo(Plr); } break; case 99: //main menu { objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr); Menu->AddItem(0, "Weapon Skills", 7); Menu->AddItem(0, "Warrior Skills", 1); Menu->AddItem(0, "Paladin Skills", 4); Menu->AddItem(0, "Druid Skills", 400); Menu->AddItem(0, "Warlock Skills", 500); Menu->AddItem(0, "Hunter Skills", 600); Menu->AddItem(5, "Learn All Languages!", 17); Menu->AddItem(5, "Learn Self Ressurrect!", 18); Menu->SendTo(Plr); } break; } } void Warper::GossipEnd(Object * pObject, Player* Plr) { GossipScript::GossipEnd(pObject, Plr); } void SetupWarper(ScriptMgr * mgr) { GossipScript * gs = (GossipScript*) new Warper(); /* Teleporter List */ mgr->register_gossip_script(30010, gs); // Nega }