Так как наши админы не могут/не хотят/не успевают фиксить спеллы и таланты у меня возникло желание научиться это делать самому. Было бы неплохо если кто-нибудь объяснил как это делать.
Пример спелл lifebloom http://github.com/mangos/mangos/raw/...SpellAuras.cpp
Код:
// Lifebloom
if (GetSpellProto()->SpellFamilyFlags & UI64LIT(0x1000000000))
{
if ( apply )
{
if ( caster )
// prevent double apply bonuses
if(m_target->GetTypeId()!=TYPEID_PLAYER || !((Player*)m_target)->GetSession()->PlayerLoading())
m_modifier.m_amount = caster->SpellHealingBonus(m_target, GetSpellProto(), m_modifier.m_amount, SPELL_DIRECT_DAMAGE);
}
else
{
// Final heal only on dispelled or duration end
if ( !(GetAuraDuration() <= 0 || m_removeMode == AURA_REMOVE_BY_DISPEL) )
return;
// have a look if there is still some other Lifebloom dummy aura
Unit::AuraList const& auras = m_target->GetAurasByType(SPELL_AURA_DUMMY);
for(Unit::AuraList::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr)
if((*itr)->GetSpellProto()->SpellFamilyName == SPELLFAMILY_DRUID &&
((*itr)->GetSpellProto()->SpellFamilyFlags & UI64LIT(0x1000000000)))
return;
// final heal
if(m_target->IsInWorld() && m_stackAmount > 0)
{
int32 amount = m_modifier.m_amount / m_stackAmount;
m_target->CastCustomSpell(m_target, 33778, &amount, NULL, NULL, true, NULL, this, GetCasterGUID());
if (caster)
{
int32 returnmana = (GetSpellProto()->ManaCostPercentage * caster->GetCreateMana() / 100) * m_stackAmount / 2;
caster->CastCustomSpell(caster, 64372, &returnmana, NULL, NULL, true, NULL, this, GetCasterGUID());
}
}
}
return;
}
Меня больше всего что происходит в строчках, которые как раз соотвествуют сломанному финальноу тику.
деление на m_stackAmount то финальный тик начнет увеличиваться пропорционально количеству стаков(что и долно быть).
-А где посмотреть спелл №33778 чтобы проверить спелл повер кофицент?
-И где считается m_modifier.m_amount?
и там будет все написано, чему равно m_modifier.m_amount и m_stackAmount, все сразу станет понятно.
А где посмотреть спелл №33778 чтобы проверить спелл повер кофицент?
В таблице spell_bonus_data, у нас нет этого спелла там, значит идет стандартный расчет.
И где считается m_modifier.m_amount?
m_modifier заполняется при наложении ауры.
А где посмотреть спелл №33778 чтобы проверить спелл повер кофицент?
В таблице spell_bonus_data, у нас нет этого спелла там, значит идет стандартный расчет.
По стандартному расчету кофицент для Спелл повера выставляется 0(должен быть около 50%)Так и должно быть?
Может тогда обьяснишь вкратце как ставить сервер?