Code:
/* created by LILNATE22
www.ac-db.info
release:GPLv3
Leave Credit! */
#include "StdAfx.h"
#include "Setup.h"
#ifdef WIN32
#pragma warning(disable:4305) // warning C4305: 'argument' : truncation from 'double' to 'float'
#endif
//Defining Warper
class SCRIPT_DECL Mounter : 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){ GossipScript::GossipEnd(pObject, Plr); }
void Destroy(){ delete this; }
};
void Mounter::GossipHello(Object* pObject, Player * Plr, bool AutoSend){
if(Plr->CombatStatus.IsInCombat()){
Plr->BroadcastMessage("You are in combat!");
}else{
GossipMenu *Menu;
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 2593, Plr);
//////////////////////////////////////////////
float Speed = 9.7;
uint32 displayid = 0;
uint32 eventid = 5;
bool flytf = false;
flytf = true; eventid = 3; displayid = 0; Speed = 9.7;
if(Plr->m_MountSpellId)
Plr->RemoveAura(Plr->m_MountSpellId);
Plr->SetUInt32Value( UNIT_FIELD_MOUNTDISPLAYID , 0);
WorldPacket fly(836, 13);
Plr->m_setflycheat = false;
fly << Plr->GetNewGUID();
fly << uint32(5);
Plr->SendMessageToSet(&fly, true);
Plr->SetPlayerSpeed(RUN, Speed);
Plr->SetPlayerSpeed(SWIM, Speed);
Plr->SetPlayerSpeed(RUNBACK, Speed);
Plr->SetPlayerSpeed(FLY, Speed);
////////////////////////////////////////
Menu->AddItem(0, "Mount Raptor", 1);
Menu->AddItem(0, "Mount Raptor on Roids(level 70)", 2);
Menu->AddItem(0, "Dismount", 3);
if(AutoSend) Menu->SendTo(Plr);
}
};
//Defining Cases
void Mounter::GossipSelectOption(Object* pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code)
{
float Speed = 9.7;
uint32 displayid = 0;
uint32 eventid = 5;
bool flytf = false;
switch(IntId){
case 1:{
if(Plr->getLevel() >= 60){
/* flytf = true;*/ eventid = 3; displayid = 1337; Speed = 10;
/*WorldPacket fly(835, 13);
Plr->m_setflycheat = true;
fly << Plr->GetNewGUID();
fly << uint32(2);*/
// Plr->SendMessageToSet(&fly, true);
Plr->SetPlayerSpeed(RUN, Speed);
Plr->SetPlayerSpeed(SWIM, Speed);
Plr->SetPlayerSpeed(RUNBACK, Speed);
Plr->SetPlayerSpeed(FLY, Speed);
Plr->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, displayid);
Plr->Gossip_Complete();
}else {
Plr->BroadcastMessage("You need to be atleast level 60 to ride this baby");
Plr->Gossip_Complete();
}
}break;
case 2:{
if(Plr->getLevel() >= 70){
/* flytf = true;*/ eventid = 3; displayid = 19911; Speed = 20;
/*WorldPacket fly(835, 13);
Plr->m_setflycheat = true;
fly << Plr->GetNewGUID();
fly << uint32(2);*/
//Plr->SendMessageToSet(&fly, true);
Plr->SetPlayerSpeed(RUN, Speed);
Plr->SetPlayerSpeed(SWIM, Speed);
Plr->SetPlayerSpeed(RUNBACK, Speed);
Plr->SetPlayerSpeed(FLY, Speed);
Plr->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, displayid);
Plr->Gossip_Complete();
}else {
Plr->BroadcastMessage("You need to be atleast level 70 to ride this baby");
Plr->Gossip_Complete();
}
} break;
case 3:
{
/* flytf = true;*/ eventid = 3; displayid = 0; Speed = 9.1;
if(Plr->m_MountSpellId)
Plr->RemoveAura(Plr->m_MountSpellId);
Plr->SetUInt32Value( UNIT_FIELD_MOUNTDISPLAYID , 0);
/* WorldPacket fly(836, 13);
Plr->m_setflycheat = false;
fly << Plr->GetNewGUID();
fly << uint32(5);
Plr->SendMessageToSet(&fly, true);*/
Plr->SetPlayerSpeed(RUN, Speed);
Plr->SetPlayerSpeed(SWIM, Speed);
Plr->SetPlayerSpeed(RUNBACK, Speed);
Plr->SetPlayerSpeed(FLY, Speed);
Plr->BroadcastMessage("You are Now un-mounted");
Plr->Gossip_Complete();
//m_target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_MOUNTED_TAXI);
}break;
}
}
void SetupMounter(ScriptMgr *mgr){
mgr->register_item_gossip_script(40009, (GossipScript*) new Mounter());
}