LightsHope / issues

48 stars 22 forks source link

[PVP] [Script? Missing] Binary Resistances #749

Open Add3rall opened 6 years ago

Add3rall commented 6 years ago

https://streamable.com/du3za

Add3rall commented 6 years ago

Solution

if(m_caster != unit)
{
        if(m_caster->IsHostileTo(unit))
        {               
            if(unit->HasAura(6215))
            {
                float tiempo= unit->GetAura(6215)->GetMaxDuration();

                if(unit->HasAura(6215) && unit->GetAura(6215)->GetDuration() > tiempo*0.5)
                    if(m_spellInfo->Id == 6215)
                    {
                        char* msg = "Stronger spell already active";
                        WorldPacket data(SMSG_NOTIFICATION, 255);
                        data << msg;
                        m_caster->ToPlayer()->GetSession()->SendPacket(&data);
                        return SPELL_MISS_NONE;
                    }
            }

            if(unit->HasAura(61721))
            {
                float tiempo= unit->GetAura(61721)->GetMaxDuration();

                if(unit->HasAura(61721) && unit->GetAura(61721)->GetDuration() > tiempo*0.5)
                    if(m_spellInfo->Id == 61721)
                    {
                        char* msg = "Stronger spell already active";
                        WorldPacket data(SMSG_NOTIFICATION, 255);
                        data << msg;
                        m_caster->ToPlayer()->GetSession()->SendPacket(&data);
                        return SPELL_MISS_NONE;
                    }
            }

            if(unit->HasAura(12826))
            {
                float tiempo= unit->GetAura(12826)->GetMaxDuration();

                if(unit->HasAura(12826) && unit->GetAura(12826)->GetDuration() > tiempo*0.5)
                    if(m_spellInfo->Id == 12826)
                    {
                        char* msg = "Stronger spell already active";
                        WorldPacket data(SMSG_NOTIFICATION, 255);
                        data << msg;
                        m_caster->ToPlayer()->GetSession()->SendPacket(&data);
                        return SPELL_MISS_NONE;
                    }
            }

            if(unit->HasAura(61305))
            {
                float tiempo= unit->GetAura(61305)->GetMaxDuration();

                if(unit->HasAura(61305) && unit->GetAura(61305)->GetDuration() > tiempo*0.5)
                    if(m_spellInfo->Id == 61305)
                    {
                        char* msg = "Stronger spell already active";
                        WorldPacket data(SMSG_NOTIFICATION, 255);
                        data << msg;
                        m_caster->ToPlayer()->GetSession()->SendPacket(&data);
                        return SPELL_MISS_NONE;
                    }
            }

            if(unit->HasAura(28272))
            {
                float tiempo= unit->GetAura(28272)->GetMaxDuration();

                if(unit->HasAura(28272) && unit->GetAura(28272)->GetDuration() > tiempo*0.5)
                    if(m_spellInfo->Id == 28272)
                    {
                        char* msg = "Stronger spell already active";
                        WorldPacket data(SMSG_NOTIFICATION, 255);
                        data << msg;
                        m_caster->ToPlayer()->GetSession()->SendPacket(&data);
                        return SPELL_MISS_NONE;
                    }
            }

            if(unit->HasAura(28271))
            {
                float tiempo= unit->GetAura(28271)->GetMaxDuration();

                if(unit->HasAura(28271) && unit->GetAura(28271)->GetDuration() > tiempo*0.5)
                    if(m_spellInfo->Id == 28271)
                    {
                        char* msg = "Stronger spell already active";
                        WorldPacket data(SMSG_NOTIFICATION, 255);
                        data << msg;
                        m_caster->ToPlayer()->GetSession()->SendPacket(&data);
                        return SPELL_MISS_NONE;
                    }
            }

            if(unit->HasAura(51724))
            {
                float tiempo= unit->GetAura(51724)->GetMaxDuration();

                if(unit->HasAura(51724) && unit->GetAura(51724)->GetDuration() > tiempo*0.5)
                    if(m_spellInfo->Id == 51724)
                    {
                        char* msg = "Stronger spell already active";
                        WorldPacket data(SMSG_NOTIFICATION, 255);
                        data << msg;
                        m_caster->ToPlayer()->GetSession()->SendPacket(&data);
                        return SPELL_MISS_NONE;
                    }
            }
        }
}

File Spell.cpp

PS: I dont know about mangos struct, so make sure you convert any mistaken pointer or w/e

Add3rall commented 6 years ago

Have played retail from 2006 to 2009 Duelist Mage frost abusing from polimorph DR

I apreciate any comment, meanwhile its constructive. I think twice before reporting anything, can you do the same?

-- If someone didnt understand whats going on here --

If you polimorph an enemy twice instantly, the seccond cast should be "ignored" since enemy already has a stronger polimorf effect.

lazermon commented 6 years ago

while your experience of playing retail helps you, you still need to provide sources describing or showing it, ideally back in vanilla, that support your arguments

Add3rall commented 6 years ago

Vanilla is no longer aviable on Retail so there is no way to prove it. Feel free to take Arena-Tournament as a referent which was the most blizzlike server in terms of pvp (DR is an important part of pvp mechanics in high level where you doublecast spell baiting a trinket).

Example: Mage A Cast Poly to Target twice, so in case that Target uses trinket he is going to get CC again, affecting of course as a second polimorph which is lower. The point here is that in case that Target hold up trinket, the second polimorph will by ignored by server since there is a stronger debuff already there.

Cabro commented 6 years ago

You have to find movies from 2005, man. Even then, it would be a major spell fix, and considering they didnt fix the charge/intercept scripts after all these years, i highly doubt they will fix this.

lazermon commented 6 years ago

Oh I'm sure they will do the best to fix it if you manage to dig up proof from old videos. Most if not all of the big fixes require someone to do the work and dig up old videos that prove something.

Cabro commented 6 years ago

I did that exact job at least 2 times over the time :p