All pastes #912082 Raw Edit

Stuff

public text v1 · immutable
·published 2008-02-21 03:13 UTC
rendered paste body
#include "StdAfx.h"
#include "Setup.h"


;class SCRIPT_DECL WarpNPC : 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 WarpNPC::GossipHello(Object * pObject, Player* Plr, bool AutoSend)
    {
	//if(Plr->CombatStatus.IsInCombat())
        {
        //    Plr->BroadcastMessage("You are in combat!");
        }
      //  if(!Plr->CombatStatus.IsInCombat())
		{
        GossipMenu *Menu;
        objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
			//if(Plr->GetTeam()==0)
				Menu->AddItem(0, "Alliance Cities", 2);	
			//else
				Menu->AddItem(1, "Horde Cities", 1);
			
			Menu->AddItem(4, "Azeroth Instances", 30);
			Menu->AddItem(5, "Outland Locations", 3);
			Menu->AddItem(6, "Outland Instances", 50);
			Menu->AddItem(7, "Shattrath", 20);
			Menu->AddItem(8, "Gurubashi Arena", 21);
			Menu->AddItem(11, "Remove Resurrection Sickness", 97);

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

void WarpNPC::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:     // Horde
                {
                objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
				Menu->AddItem(5, "Silvermoon", 4);
                Menu->AddItem(5, "Orgrimmar", 5);
                Menu->AddItem(5, "Thunderbluff", 6);
                Menu->AddItem(5, "UnderCity", 7);
				Menu->AddItem(0, "[Back]", 99);
                Menu->SendTo(Plr);
				}
		break;


        case 2:     // Alliance
				{
                objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
                Menu->AddItem(5, "The Exodar", 8);
                Menu->AddItem(5, "Stormwind", 9);
                Menu->AddItem(5, "Ironforge", 10);
                Menu->AddItem(5, "Darnassus", 11);
				Menu->AddItem(0, "[Back]", 99);
                Menu->SendTo(Plr);
				}
            break;

        case 3:     // Outland
	        	{
                objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
                Menu->AddItem(5, "Hellfire Peninsula", 12);
                Menu->AddItem(5, "Zangermarsh", 13);
                Menu->AddItem(5, "Nagrand", 14);
                Menu->AddItem(5, "Blades Edge Mountains", 15);
                Menu->AddItem(5, "Netherstorm", 16);
                Menu->AddItem(5, "Terokkar Forest", 17);
                Menu->AddItem(5, "Shadowmoon Valley", 18);
				Menu->AddItem(0, "[Back]", 99);
                Menu->SendTo(Plr);
				}
            break;

            //
            // Horde
            //

        case 4://Silvermoon
            {
                Plr->EventTeleport(530, 9400.486328, -7278.376953, 14.206780);

            }
			break;

        case 5://Orgrimmar
            {
                Plr->EventTeleport(1, 1371.068970, -4370.801758, 26.052483);
            }
			break;

        case 6://ThunderBluff
            {
                Plr->EventTeleport(1, -1304.569946, 205.285004, 68.681396);
            }
			break;

        case 7://UnderCity
            {
                Plr->EventTeleport(0, 2050.203125, 285.650604, 56.994549);
            }
			break;

            //
            // Alliance 
            //

        case 8: //Exodar
            {
                Plr->EventTeleport(530, -4072.202393, -12014.337891, -1.277277);
            }
			break;

        case 9: //Stormwind
            {
                Plr->EventTeleport(0, -9100.480469, 406.950745, 92.594185);
            }
			break;

        case 10: //Ironforge
            {
                Plr->EventTeleport(0, -5028.265137, -825.976563, 495.301575);
            }
			break;

        case 11: //Darnassus
            {
                Plr->EventTeleport(1, 9985.907227, 1971.155640, 1326.815674);
            }
			break;

            ////////////////
            // Outland Menu
            ////////

        case 12: //Hellfire Peninsula
            {
                Plr->EventTeleport(530, -248.160004, 922.348999, 84.379799);
            }
			break;

        case 13: //Zangermarsh
            {
                Plr->EventTeleport(530, -225.863632, 5405.927246, 22.346397);
            }
			break;

        case 14: //Nagrand
            {
                Plr->EventTeleport(530, -468.232330, 8418.666016, 28.031298);

            }
			break;

        case 15: //Blades Edge Mountains
            {
                Plr->EventTeleport(530, 1471.672852, 6828.047852, 107.759239);

            }
			break;

        case 16: //Netherstorm
            {
                Plr->EventTeleport(530, 3396.123779, 4182.208008, 137.097992);

            }
			break;

        case 17: //Terokkar Forest
            {
                Plr->EventTeleport(530, -1202.426636, 5313.692871, 33.774723);

            }
			break;

        case 18: //Shadowmoon Valley
            {
                Plr->EventTeleport(530, -2859.522461, 3182.34773, 10.008426);

            }
			break;

		case 20: //Shattrath
			 {
                Plr->EventTeleport(530, -1887.510010, 5359.379883, -12.427300);

			 }
			 break;
		case 21: // Gurubsahi Arena
			 {
                Plr->EventTeleport(0, -13271.959961, 149.105515, 34.464458);

			 }
			 break;
           
		case 30: // Azeroth Instances 
			    {
				objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
				Menu->AddItem(5, "Shadowfang Keep", 31);
                		Menu->AddItem(5, "Scarlet Monastery", 32);
				Menu->AddItem(5, "Zul'Farrak", 33);
				Menu->AddItem(5, "Stratholme", 41);
                		Menu->AddItem(5, "Scholomance", 40);
				Menu->AddItem(5, "Blackrock Spire", 42);
				Menu->AddItem(5, "Onyxia's Lair", 38);
				Menu->AddItem(5, "Molten Core", 37);
				Menu->AddItem(5, "Zul'Gurub", 34);
				Menu->AddItem(5, "Karazhan", 43);
				Menu->AddItem(5, "Ahn'Qirai 20", 35);
                		Menu->AddItem(5, "Ahn'Qirai 40", 36);
                		Menu->AddItem(5, "Naxxramas", 39);
				Menu->AddItem(5, "Caverns of Times", 44);
                		Menu->AddItem(0, "[Back]", 99);
                		Menu->SendTo(Plr);
				}
				break;

		case 31: // Shadowfang Keep
			 {
                             Plr->EventTeleport(0, -234.495087, 1561.946411, 76.892143);
			 }
			 break;
		case 32: // Scarlet Monastery
			 {
                             Plr->EventTeleport(0, 2870.442627, -819.985229, 160.331085);
			 }
			 break;
		case 33: // Zul'Farrak
			 {
                             Plr->EventTeleport(1, -6797.278809, -2903.917969, 9.953360);
			 }
			 break;
		case 34: // Zul'Gurub
			 {
                             Plr->EventTeleport(0, -11919.073242, -1202.459374, 92.298744);
			 }
			 break;
		case 35: // Ahn'Qirai 20
			 {
                             Plr->EventTeleport(1, -8394.730469, 1485.658447, 21.038563);
			 }
			 break;
		case 36: // Ahn'Qirai 40
			 {
                             Plr->EventTeleport(1, -8247.316406, 1970.156860, 129.071472);
			}
			 break;
		case 37: // Molten Core
			 {
              // Plr->EventTeleport(0, -7515.409668, -1045.369629, 182.301208);
              Plr->EventTeleport(409, 1089.6, -470.19, -106.41);
			 }
			 break;
        case 38: // Onyxia
				 {
					 // Plr->EventTeleport(1, -4708.491699, -3727.672363, 54.535076);
					 Plr->EventTeleport(249, 30.0, -64.0, -5.0);
				 }
				 break;
		case 39: // Naxxramas
				 {
					 // Plr->EventTeleport(0, 3132.915283, -3731.012939, 138.658371);
					 Plr->EventTeleport(533, 3006.06, -3436.72, 293.891);
				 }
				 break;
		case 40: //Scholomance
				{ 
					Plr->EventTeleport(0, 1267.468628, -2556.651367, 94.127983);
				}
				break;
		case 41: //Stratholme
				{ 
					Plr->EventTeleport(0, 3359.111572, -3380.8444238, 144.781860);
				}break;
                        case 42: // Black ROck Spire
				{ 
					Plr->EventTeleport(0, -7527.129883, -1224.997437, 285.733002);
				}break;
			case 43: // Kharazan
				{ 
					// Plr->EventTeleport(0, -11122.913086, -2014.498779, 47.079350);
					Plr->EventTeleport(532, -11087.3, -1977.47, 49.6135);

				}break;
			case 44: // Caverns of Times
				{ 
					Plr->EventTeleport(1, -8519.718750, -4297.542480, -208.441376);
				}break;


		case 50: // Outland Instances
			{
			objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
			Menu->AddItem(0, "Outland Raids", 64);
			Menu->AddItem(5, "Hellfire Ramparts", 51);
        		Menu->AddItem(5, "The Blood Furnace", 52);
        		Menu->AddItem(5, "The Shattered Halls", 53);
        		Menu->AddItem(5, "The Underbog", 54);
        		Menu->AddItem(5, "The Slave Pens", 55);
        		Menu->AddItem(5, "The Steamvault", 56);
        		Menu->AddItem(5, "Mana-Tombs", 57);
        		Menu->AddItem(5, "Auchenai Crypts", 58);
        		Menu->AddItem(5, "Sethekk Halls", 59);
        		Menu->AddItem(5, "Shadow Labyrinth", 60);
        		Menu->AddItem(5, "The Mechanar", 61);
			Menu->AddItem(5, "The Botanica", 62);
			Menu->AddItem(5, "The Arcatraz", 63);
			Menu->AddItem(0, "[Back]", 99);
        		Menu->SendTo(Plr);
			}
			break;
				
		case 51: // Hellfire Ramparts
				{ 
					Plr->EventTeleport(530, -360.670990, 3071.899902, -15.097700);
				}break;
		case 52: // The Blood Furnace
				{ 
					Plr->EventTeleport(530, -303.506012, 3164.820068, 31.742500);
				}break;
		case 53: // The Shattered Halls
				{ 
					Plr->EventTeleport(530, -311.083527, 3083.291748, -3.745923);
				}break;
		case 54: // The Underbog
				{ 
					Plr->EventTeleport(530, 777.088989, 6763.450195, -72.062561);
				}break;
		case 55: // The Slave Pens
				{ 
					Plr->EventTeleport(530, 719.507996, 6999.339844, -73.074303);
				}break;
		case 56: // The Steamvault
				{ 
					Plr->EventTeleport(530, 816.590027, 6934.669922, -80.544601);
				}break;
		case 57: // Mana-Tombs
				{ 
					Plr->EventTeleport(530, -3079.810059, 4943.040039, -101.046997);
				}break;
		case 58: // Auchenai Crypts
				{ 
					Plr->EventTeleport(530, -3361.959961, 5225.770020, -101.047997);
				}break;
		case 59: // Sethekk Halls
				{ 
					Plr->EventTeleport(530, -3362.219971, 4660.410156, -101.049004 );
				}break;
		case 60: // Shadow Labyrinth
				{ 
					Plr->EventTeleport(530, -3645.060059, 4943.620117, -101.047997);
				}break;
		case 61: // The Mechanar
				{ 
					Plr->EventTeleport(530, 2862.409912, 1546.089966, 252.158691);
				}break;
		case 62: // The Botanica
				{ 
					Plr->EventTeleport(530, 3413.649902, 1483.319946, 182.837997);
				}break;
		case 63: // The Arcatraz
				{ 
					Plr->EventTeleport(530, 3311.598145, 1332.745117, 505.557251);
				}break;


		case 64: // Outland Raids
				{
			    objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
                Menu->AddItem(5, "Magtheridon's Lair", 65);
				Menu->AddItem(5, "Serpentshrine Cavern", 66);
                Menu->AddItem(5, "Gruul's Lair", 67);
				Menu->AddItem(5, "The Eye", 68);
				Menu->AddItem(5, "Black Temple", 69);
				Menu->AddItem(0, "[Back]", 99);
                Menu->SendTo(Plr);
				}
				break;

		case 65: // Magtheridon's Lair
				{
					Plr->EventTeleport(530, -313.678986, 3088.350098, -116.501999);
				}break;
		case 66: // Serpentshrine Cavern
				{ 
					Plr->EventTeleport(530, 830.542908, 6865.445801, -63.785503);
				}break;
		case 67: // Gruul's Lair
				{ 
					Plr->EventTeleport(530, 3549.424072, 5179.854004, -4.430779);
				}break;
		case 68: // The Eye
				{ 
					Plr->EventTeleport(530, 3087.310059, 1373.790039, 184.643005);
				}break;
		case 69: // Black Temple
				{
					// Plr->EventTeleport(530, -3609.739990, 328.252014, 37.307701 );
					Plr->EventTeleport(564, 97.0894, 1001.96, -86.8798 );
				}break;
				
		
				
				case 80: // Leveling Areas
				{
				objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
                		Menu->AddItem(5, "Level 01 - 40 Leveling Area", 120);
                		Menu->AddItem(5, "Level 40 - 70 Leveling Area", 150);
                		Menu->AddItem(5, "Level 50 - 60 Leveling Area", 130);
                		Menu->AddItem(5, "Level 60 - 70 Leveling Area", 140);
                		Menu->AddItem(0, "[Back]", 99);
               			Menu->SendTo(Plr);
				}
				break;
				case 120: // Vada
                     		{
                       		Plr->EventTeleport(30, -1367.49, -228.19, 98.4259);
                     		}break;
				case 130: // hakor
                     		{
                       		Plr->EventTeleport(109, -451.514, 54.9625, -90.7849);
                     		}break;
				case 140: // Panda
				{
				objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
				if(Plr->getLevel() < 60)
				{
				pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You do not qualify for entry to this leveling area." );
				}
				else
				{
				Plr->EventTeleport(0, -1821, -4150, 10 );
				}
				}
				break;
		case 150: // vanda2
                {
                Plr->EventTeleport(30, -1144.66, -305.517, 40.1536 );
                }
				break;


		case 82: // The Mall
                     {
                       Plr->EventTeleport(530, -3574.8, -84.257, 304.78);
                     }break;

                case 85:
 		     {
			Plr->EventTeleport(0, 3760, -2578, 131 );
                     }break;
                case 86:
		     {
			Plr->EventTeleport(0, -13845, 2714, 53 );
                     }break;
                     
		case 95: // Bind Position
            {
                Plr->GetSession()->SendInnkeeperBind(pCreature);

                
                }break;
                
                
                case 96: // house spells
		{
                objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
                Plr->addSpell(5723);			// Greater Healthstone
                Plr->addSpell(834);			// Lesser Armor
		Plr->addSpell(36228);			// chainsawblade
		Plr->addSpell(556);			//astro recall
		pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have learnt Greater Healthsone, Lesser Armor, Astro Recall & Chainsawblade." );
		Menu->AddItem(0, "[Back]", 99);
                Menu->SendTo(Plr);
		}
                break;
				
				
		case 97: // Remove res sickness
				{
                objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
            	Plr->addSpell(15007);			// learn res sickness
		Plr->removeSpell(15007,0,0,0);		// un learn res sickness
		pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "We have removed your Resurrection Sickness." );
		Menu->AddItem(0, "[Back]", 99);
                Menu->SendTo(Plr);
		}
                break;

                
                
		case 99: //main menu
			{
			objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
			Menu->AddItem(1, "Horde Cities", 1);
			Menu->AddItem(1, "Alliance Cities", 2);
			Menu->AddItem(4, "Azeroth Instances", 30);
			Menu->AddItem(5, "Outland Locations", 3);
			Menu->AddItem(6, "Outland Instances", 50);
			Menu->AddItem(7, "Shattrath", 20);
			Menu->AddItem(8, "Gurubashi Arena", 21);
			Menu->AddItem(11, "Remove Resurrection Sickness", 97);
			Menu->SendTo(Plr);
			}
			break;
			
			
 }
    }

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

void SetupWarpNPC(ScriptMgr * mgr)
{
	GossipScript * gs = (GossipScript*) new WarpNPC();	
    /* NPC List */
    mgr->register_gossip_script(30001, gs);          // WarpNPC
}