Jump to content

przemratajczak

Members
  • Posts

    346
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by przemratajczak

  1. MaNGOS 9756

    SD2 1677

    UDB 389

    Bug:

    Since 3.3.0 Vampiric Embrace is no longer debuff so assume it no longer needs diminishing rules. This patch will also restore propper 30min duration

    diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
    index e03ad77..123b35a 100644
    --- a/src/game/SpellMgr.cpp
    +++ b/src/game/SpellMgr.cpp
    @@ -3581,11 +3581,8 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto
            }
            case SPELLFAMILY_PRIEST:
            {
    -            // Vampiric Embrace
    -            if ((spellproto->SpellFamilyFlags & UI64LIT(0x00000000004)) && spellproto->SpellIconID == 150)
    -                return DIMINISHING_LIMITONLY;
                // Shackle Undead
    -            else if (spellproto->SpellIconID == 27)
    +            if (spellproto->SpellIconID == 27)
                    return DIMINISHING_DISORIENT;
                break;
            }
    @@ -3656,13 +3653,6 @@ int32 GetDiminishingReturnsLimitDuration(DiminishingGroup group, SpellEntry cons
                    return 40000;
                break;
            }
    -        case SPELLFAMILY_PRIEST:
    -        {
    -            // Vampiric Embrace - limit to 60 seconds in PvP (3.1)
    -            if ((spellproto->SpellFamilyFlags & UI64LIT(0x00000000004)) && spellproto->SpellIconID == 150)
    -                return 60000;
    -            break;
    -        }
            case SPELLFAMILY_WARLOCK:
            {
                // Banish - limit to 6 seconds in PvP (3.1)
    
    

  2. MaNGOS 9754

    SD2 1677

    UDB 389

    Bug:

    Spell Decimate does not "Reduce the current health of all nearby units to 5% of their maximum health."

    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index dc35dff..cb2d69c 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -5782,6 +5782,15 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx)
    
                        return;
                    }
    +                case 28374:                                 // Decimate (Naxxramas: Gluth)
    +                {
    +                    if (!unitTarget || unitTarget->GetHealthPercent() <= 5.0f)
    +                        return;
    +
    +                    int32 damage = unitTarget->GetHealth() - unitTarget->GetMaxHealth() * 0.05;
    +                    unitTarget->CastCustomSpell(unitTarget, 28375, &damage, NULL, NULL, true, NULL, NULL, m_originalCasterGUID);
    +                    return;
    +                }
                    case 29830:                                 // Mirren's Drinking Hat
                    {
                        uint32 item = 0;
    
    

    http://paste2.org/p/778958

  3. my AI, everything is on place except PvP handling. if you find out which flag has to be set give me a hint :/

    /*########
    # mob_mirror_image AI
    #########*/
    
    enum MirrorImage
    {
       SPELL_FROSTBOLT = 59638,
       SPELL_FIREBLAST = 59637
    };
    
    struct MANGOS_DLL_DECL mob_mirror_imageAI : public ScriptedAI
    {
       mob_mirror_imageAI(Creature* pCreature) : ScriptedAI(pCreature)
       {
           bLocked = false;
           Reset();
       }
       uint64 m_uiCreatorGUID;
       uint32 m_uiFrostboltTimer;
       uint32 m_uiFireBlastTimer;
       float fDist;
       float fAngle;
       bool bLocked;
    
       void Reset()
       {
           m_uiFrostboltTimer = urand(500, 1500);
           m_uiFireBlastTimer = urand(4500, 6000);
       }
    
       void UpdateAI(const uint32 uiDiff)
       {
           if (!bLocked)
           {
               m_uiCreatorGUID = m_creature->GetCreatorGUID();
               if (Player* pOwner = (Player*)Unit::GetUnit(*m_creature, m_uiCreatorGUID))
               {
                   fDist = m_creature->GetDistance(pOwner);
                   fAngle = m_creature->GetAngle(pOwner);
               }
               bLocked = true;
           }
    
           Player* pOwner = (Player*)Unit::GetUnit(*m_creature, m_uiCreatorGUID);
           if (!pOwner || !pOwner->IsInWorld())
           {
               m_creature->ForcedDespawn();
               return;
           }
    
           uint64 targetGUID = 0;
    
           if (Spell* pSpell = pOwner->GetCurrentSpell(CURRENT_GENERIC_SPELL))
               targetGUID = pSpell->m_targets.getUnitTargetGUID();
           else if (pOwner->getVictim())
               targetGUID = pOwner->getVictim()->GetGUID();
    
           Unit* pTarget = Unit::GetUnit(*m_creature, targetGUID);
    
           if (!pTarget || !m_creature->CanInitiateAttack() || !pTarget->isTargetableForAttack() ||
           !m_creature->IsHostileTo(pTarget) || !pTarget->isInAccessablePlaceFor(m_creature))
           {
               if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != FOLLOW_MOTION_TYPE)
               {
                   m_creature->InterruptNonMeleeSpells(false);
                   m_creature->GetMotionMaster()->Clear();
                   m_creature->GetMotionMaster()->MoveFollow(pOwner, fDist, fAngle);
               }
               return;
           }
    
           if (m_uiFrostboltTimer <= uiDiff)
           {
               m_creature->CastSpell(pTarget, SPELL_FROSTBOLT, false, NULL, NULL, pOwner->GetGUID());
               m_uiFrostboltTimer = urand(3000, 4500);
           } else m_uiFrostboltTimer -= uiDiff;
    
           if (m_uiFireBlastTimer <= uiDiff)
           {
               m_creature->CastSpell(pTarget, SPELL_FIREBLAST, false, NULL, NULL, pOwner->GetGUID());
               m_uiFireBlastTimer = urand(9000, 12000);
           } else m_uiFireBlastTimer -= uiDiff;
       }
    };
    
    CreatureAI* GetAI_mob_mirror_image(Creature* pCreature)
    {
       return new mob_mirror_imageAI(pCreature);
    }
    

  4. MaNGOS 9739

    UDB 389

    SD2 1675

    Bug:

    According to patch notes some spells with SPELL_AURA_PERIODIC_DAMAGE effect can now crit

    diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index 97591d5..1d38fae 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -8729,14 +8729,42 @@ void Aura::HandleAuraSafeFall( bool Apply, bool Real )
    
    bool Aura::IsCritFromAbilityAura(Unit* caster, uint32& damage)
    {
    +    bool bCanCrit = false;
    +
    +    switch(m_spellProto->SpellFamilyName)
    +    {
    +        case SPELLFAMILY_WARLOCK:
    +            // Immolate
    +            if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000004))
    +                bCanCrit = true;
    +            break;
    +
    +        case SPELLFAMILY_ROGUE:
    +            // Rupture
    +            if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000100000))
    +                bCanCrit = true;
    +            break;
    +
    +        case SPELLFAMILY_SHAMAN:
    +            // Flame Shock
    +            if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000010000000))
    +                bCanCrit = true;
    +            break;
    +
    +            default:  break;
    +    }
    +
        Unit::AuraList const& auras = caster->GetAurasByType(SPELL_AURA_ABILITY_PERIODIC_CRIT);
        for(Unit::AuraList::const_iterator itr = auras.begin(); itr != auras.end(); ++itr)
        {
            if (!(*itr)->isAffectedOnSpell(m_spellProto))
                continue;
    -        if (!caster->isSpellCrit(m_target, m_spellProto, GetSpellSchoolMask(m_spellProto)))
    -            break;
    
    +        bCanCrit = true;
    +    }
    +
    +    if (bCanCrit && caster->isSpellCrit(m_target, m_spellProto, GetSpellSchoolMask(m_spellProto)))
    +    {
            damage = caster->SpellCriticalDamageBonus(m_spellProto, damage, m_target);
            return true;
        }
    
    

    Pastebin

  5. i think you did not understood intention. there ARE quests and quite much of them that requires such a support. lets say we've got npcs corpse and you have to stake a snapshot with Q item, those corpses are not supposed to despawn after spell cast (it was even disussed at udb irc channel long time ago) How will you solve this problem at ScriptedAI level? it would be as natural and generic solution as sending loot recepient.

  6. it was present even when patch was under development. dunno if strictly related to dual spec. I was able to reproduce it

    1) learn some talents that introduce additional spell (Blast Wave in example) and drag their icons onto bar

    2) switch to 2nd spec

    3) logout

    4) login

    5) switch to 1st spec - button with blast wave was lost

  7. i think we need new AI (similar to guardians) for all those kind of temp summons. I gave up and also implemented scriptedAI for MI. It is impossible to update target (m.i. should attack current creator target) and movement generator without this (there is small chance that periodic initialzing spell could handle this, but doubt this is way it should be done)

×
×
  • 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