Alrite I had a few requests sent to me asking to have a guide for implementing flying mounts into Azeroth so I dug up an old guide I used. Anyway few things you should know before this is done:
1. Can only be done on a non-compiled version of ascent. Meaning download it from the SVN, I will not supply this link becasue I think it breaks the rules and searching is really good for the soul.
2. Use this at your own risk and if you really don't understand ANYTHING about code well then don't try this. I mean it is clearly stated for you but if you mess one thing up your server won't be created successfully.
3. This guide will allow you to USE flying mounts in Azeroth not cast the spell to summon them. Now what does that mean? That means you will have to create an item and have an "On Equip" Effect to cast the spell to summon a flying mount. I can help you with this and I will provide an item that I created at the end of the guide.
4. You need Microsoft Visual C++ 2008 for this to work. (Frankly you need it to compile your own server in the first place).
Download details: VC++ 2008 Libraries Feature Pack "Beta"
5. Read the guide carefully. Don't be overwhelemed by the code. Alrite here is the guide.
READ THIS CAREFULLY!:
You will have to modify the following files: Player.cpp, SpellAuras.cpp, & Unit.cpp
In Player.cpp you will need to search and replace 3 items
First search for:
!=530
and replace it with
>580
then search for:
!= 530
(yes, just add a space) and replace it with
> 580
All 3 will look something like
if(flying_aura && MapID > 580)
In SpellAuras.cpp you will need to search for
Aura::SpellAuraEnableFlight(bool apply)
Replace the "else" with "if(!apply)" which should look like this:
Code:
void Aura::SpellAuraEnableFlight(bool apply)
{
if(m_target->IsPlayer())
{
static_cast<Player*>(m_target)->FlyCheat = apply;
static_cast<Player*>(m_target)->flying_aura = m_spellProto->Id;
}
if(apply)
{
m_target->EnableFlight(true);
m_target->m_flyspeedModifier += mod->m_amount;
m_target->UpdateSpeed(true);
}
if (!apply) //replaced else with: if(!apply) to allow flying mounts in the old lands
{
m_target->DisableFlight(true);
m_target->m_flyspeedModifier -= mod->m_amount;
m_target->UpdateSpeed(true);
}
}
Now for the last. In Unit.cpp:
Find and replace:
if(m_mapId != 530)
with
if(m_mapId > 580)
Code:
if(m_mapId != 530) //<<--- Change this
{
for(uint32 i = 0; i < -1; ++i)
{
Can't use flying auras in non-outlands.
if(aur->GetSpellProto()->EffectApplyAuraName[i] == 208 || aur->GetSpellProto()->EffectApplyAuraName[i] == 207)
{
delete aur;
return;
}
}
}
Alrite now for my end of it I said I would tell you how to create an item for it to work:
1. Create an item. It doesnt matter what the item is, it could be a weapon, armor, tabard (My Favorite), ring, etc.
2. Give it the stats you want. Then when creating it. Give it an "On Equip" effect to cast the summon flying mount spell. Example: Equip: 41513 <--This is the spell to summon an Onyx Netherwing Drake
3. Implement your item, run your query
4. Reload Item table
5. Enjoy flying in Azeroth.