Jump to content

BugFix

Members
  • Posts

    8
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

BugFix's Achievements

Newbie

Newbie (1/3)

0

Reputation

  1. * What bug does the patch fix? What features does the patch add? If caster of Spells like Rain of Bones(37098) is above the target, z-coordinates are taken from caster but x and y from target. So we get a strage effect. * For which repository revision was the patch created? 0.12 rev 8569 * Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. Dont know * Who has been writing this patch? Please include either forum user names or email addresses. me The fix changes Z coords of TargetMap for TARGET_RANDOM_NEARBY_DEST. diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index bd4ca17..0b37d25 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1311,7 +1348,7 @@ void Spell::SetTargetMap(SpellEffectIndex effIndex, uint32 targetMode, UnitList& float angle = 2.0f * M_PI_F * rand_norm_f(); float dest_x = m_targets.m_destX + cos(angle) * radius; float dest_y = m_targets.m_destY + sin(angle) * radius; - float dest_z = m_caster->GetPositionZ(); + float dest_z = m_targets.m_destZ; m_caster->UpdateGroundPositionZ(dest_x, dest_y, dest_z); m_targets.setDestination(dest_x, dest_y, dest_z);
  2. The old stucture is: If(special heal calculation) else if(special heal calculation) else(normal heal calculation) With your patch its changes in If(special heal calculation) if(spell == Flash of light) else if(special heal calculation) else(normal heal calculation) So if you cast Flash of light mangos skips the "else(normal heal calculation)" You can avoid that by placing your code above "// Vessel of the Naaru (Vial of the Sunwell trinket)"
  3. I know. Even this will never be comitted, its can be a solution for some TBC server until something else can be used.
  4. * What bug does the patch fix? What features does the patch add? Bug in Battleground.cpp so only the winner-team gets EY mark of honor * For which repository revision was the patch created? mangos 0.12 commit http://github.com/mangos/mangos/commit/6f44fd6b7913d3834eae75ebbba35f833107830c * Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. Dont know * Who has been writing this patch? Please include either forum user names or email addresses. me diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index cc34085..cbfac8b 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -604,8 +635,7 @@ void BattleGround::RewardMark(Player *plr,uint32 count) RewardSpellCast(plr,SPELL_AB_MARK_LOSER); break; case BATTLEGROUND_EY: - if (count == ITEM_WINNER_COUNT) - RewardItem(plr,ITEM_EY_MARK_OF_HONOR,count); + RewardItem(plr,ITEM_EY_MARK_OF_HONOR,count); break; default: break; http://paste2.org/p/905081
  5. thanks for advice. updated first post
  6. bump any comment? someone against implementation?
  7. - What bug does the patch fix? What features does the patch add? 32264 ( Inhibit Magic ) Should stack depending on range to caster. It comes with a function to handle similar spells - For which repository revision was the patch created? 8569 mangos 0.12 - Who has been writing this patch? me http://paste2.org/p/788465 diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 2e0d0dc..e488b61 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2050,6 +2050,46 @@ void Aura::TriggerSpell() /*** AURA EFFECTS ***/ /*********************************************************/ +void Aura::StackByRange(float max_range, float min_range, int32 stack_size) +{ + Unit* caster = GetCaster(); + uint32 spell_id = m_spellProto->Id; + + if(m_target->IsWithinDist(caster, min_range) || !caster || !caster->isAlive() || !m_target || !m_target->isAlive()) + return; + + + SpellEntry* TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(spell_id); + if(m_target->IsWithinDist(caster, max_range)) + { + Unit::AuraMap& auras = m_target->GetAuras(); + int32 count = 0; + for(Unit::AuraMap::iterator i = auras.begin(); i != auras.end(); ++i) + { + if(i->second->GetId() == spell_id) + ++count; + } + for(count; count < stack_size; ++count) + { + for (uint8 i = 0; i < 3; ++i) + { + if (!TempSpell->Effect[i]) + continue; + m_target->AddAura(new Aura(TempSpell, SpellEffectIndex(i), NULL, m_target, caster)); + } + } + for(count; count > stack_size; --count) + { + for (uint8 i = 0; i < 3; ++i) + { + if (!TempSpell->Effect[i]) + continue; + m_target->RemoveSingleAuraFromStack(spell_id, SpellEffectIndex(i)); + } + } + } +} + void Aura::HandleAuraDummy(bool apply, bool Real) { // spells required only Real aura add/remove @@ -5060,6 +5100,18 @@ void Aura::HandleModSpellCritChanceShool(bool /*apply*/, bool Real) void Aura::HandleModCastingSpeed(bool apply, bool /*Real*/) { + if (apply) + { + switch(m_spellProto->Id) + { + case 32264: + StackByRange(50.0f, 35.0f, 4); + StackByRange(35.0f, 25.0f, 3); + StackByRange(25.0f, 10.0f, 2); + StackByRange(10.0f, 0, 1); + break; + } + } m_target->ApplyCastTimePercentMod(float(m_modifier.m_amount),apply); } diff --git a/src/game/SpellAuras.h b/src/game/SpellAuras.h index 3e653a2..abeb401 100644 --- a/src/game/SpellAuras.h +++ b/src/game/SpellAuras.h @@ -217,6 +217,7 @@ class MANGOS_DLL_SPEC Aura virtual ~Aura(); + void StackByRange(float max_range, float min_range, int32 stack_size); void SetModifier(AuraType t, int32 a, uint32 pt, int32 miscValue); Modifier* GetModifier() {return &m_modifier;} int32 GetMiscValue() {return m_spellProto->EffectMiscValue[m_effIndex];}
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use