Jump to content

pasdVn

Members
  • Posts

    261
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by pasdVn

  1. There is a hack that is used only for "Ambush":

    From 6068ba20a2d2f32f1abd18ef415ecbd650c29a9c Mon Sep 17 00:00:00 2001
    From: pasdVn <[email protected]>
    Date: Fri, 27 Feb 2009 15:28:18 +0100
    Subject: [PATCH] cleanup
    
    ---
    src/game/SpellEffects.cpp |   14 ++------------
    1 files changed, 2 insertions(+), 12 deletions(-)
    
    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index 9d937a2..865e1f1 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -4288,7 +4288,6 @@ void Spell::EffectWeaponDmg(uint32 i)
        }
    
        // some spell specific modifiers
    -    bool customBonusDamagePercentMod = false;
        bool spellBonusNeedWeaponDamagePercentMod = false;      // if set applied weapon damage percent mode to spell bonus
    
        float bonusDamagePercentMod  = 1.0f;                    // applied to fixed effect damage bonus if set customBonusDamagePercentMod
    @@ -4331,14 +4330,8 @@ void Spell::EffectWeaponDmg(uint32 i)
            }
            case SPELLFAMILY_ROGUE:
            {
    -            // Ambush
    -            if(m_spellInfo->SpellFamilyFlags & 0x00000200LL)
    -            {
    -                customBonusDamagePercentMod = true;
    -                bonusDamagePercentMod = 2.5f;               // 250%
    -            }
                // Mutilate (for each hand)
    -            else if(m_spellInfo->SpellFamilyFlags & 0x600000000LL)
    +            if(m_spellInfo->SpellFamilyFlags & 0x600000000LL)
                {
                    bool found = false;
                    // fast check
    @@ -4411,10 +4404,7 @@ void Spell::EffectWeaponDmg(uint32 i)
                    weaponDamagePercentMod *= float(CalculateDamage(j,unitTarget)) / 100.0f;
    
                    // applied only to prev.effects fixed damage
    -                if(customBonusDamagePercentMod)
    -                    fixed_bonus = int32(fixed_bonus*bonusDamagePercentMod);
    -                else
    -                    fixed_bonus = int32(fixed_bonus*weaponDamagePercentMod);
    +                fixed_bonus = int32(fixed_bonus*weaponDamagePercentMod);
                    break;
                default:
                    break;                                      // not weapon damage effect, just skip
    -- 
    1.6.0.2.1172.ga5ed0
    
    

    This isn't needed anymore. Maybe that was only a typo in the tooltip before. As you can see here http://wow.allakhazam.com/db/spellhistory.html?wspell=8676, this was changed and fits the generic way (28*2.75 = 77, for rank 1 as example).

  2. I think melee/weapon check at speel damage school is wrong. Related spell have holy damage but it _still_ weapon damage

    From my point of view this is the only correct conclusion. We just have to add the bonuses depending on the SpellDmgClass, not by the school. So all melee and ranged get meleedmg bonus, and just the magical class (and class_none if you want) get SpellDamageBonus. None of the weapon spells (melee and ranged) is affected by "spellpower". Exceptions (like Seal of command) prove the rules^^ The system would be more clear then.

    Would just require some change in meleedamge bonus or the EffectWeaponDmg handling. As the bonuses of EffectWeaponDmg are already applied in Unit::CalculateDamage but SchoolDmg (physical) spells don't get any bonus at all currently, we have to think a about a more general sollution^^

    Also the problem with the "One handed weapon specialization" will be more easy to fix, as far as I can judge this now...

  3. Kill Command: http://www.wowhead.com/?spell=34026

    One more of those crazy spells. Mechanic is working like that:

    • * owner gets a aura, applying a spell mod that increases pet special ability damage (pet uses owners spell mods)
      * pet gets dummy aura that triggers on a damage spell
      * both auras have full stack (that means 3 in this case, no charges as normal spellmods) at beginning
      * when pet dummy aura triggers we have to remove owners aura manually, so that that the stack gets smaller and so the amount of the spellmod

    http://github.com/pasdVn/mangos/commit/eb55b0b3304b1a88bc12644999f8639f4a941e89

    [added 2-20-2009]

    Here just an additional fix concerning "Kill Command":

    http://github.com/pasdVn/mangos/commit/e9855c55153d18815c9691455a634ddf3922e817

    Just the second effect of "Focused Fire" (http://www.wowhead.com/?spell=35029).

  4. http://www.wowhead.com/?spell=56339

    Nothing else but the tooltip says that this aura has also to do anything with the pet. At least I did not find anything:( So here is a very "direct" version. Maybe anyone has a better Idea?

    From 79ebf214c709d61078fc920c3616a9c1d628fcce Mon Sep 17 00:00:00 2001
    From: pasdVn <[email protected]>
    Date: Thu, 19 Feb 2009 10:21:58 +0100
    Subject: [PATCH] apply aura 56339 (and ranks) to pet aswell
    
    ---
    src/game/StatSystem.cpp |    8 +++++++-
    1 files changed, 7 insertions(+), 1 deletions(-)
    
    diff --git a/src/game/StatSystem.cpp b/src/game/StatSystem.cpp
    index 9d40f59..e1f511f 100644
    --- a/src/game/StatSystem.cpp
    +++ b/src/game/StatSystem.cpp
    @@ -965,7 +965,13 @@ void Pet::UpdateAttackPowerAndDamage(bool ranged)
            {
                bonusAP = owner->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.22f;
                SetBonusDamage( int32(owner->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.1287f));
    -        }
    +
    +            // hunter vs. wild
    +            AuraList const& APofOwnerStat = owner->GetAurasByType(SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT);
    +            for( AuraList::const_iterator i = APofOwnerStat.begin(); i != APofOwnerStat.end(); ++i)
    +                if( (*i)->GetSpellProto()->SpellIconID == 3647 )
    +                    bonusAP += int32(owner->GetStat(Stats((*i)->GetModifier()->m_miscvalue)) * (*i)->GetModifier()->m_amount / 100.0f);
    +        }
            //demons benefit from warlocks shadow or fire damage
            else if(getPetType() == SUMMON_PET && owner->getClass() == CLASS_WARLOCK)
            {
    -- 
    1.6.0.2.1172.ga5ed0
    
    

  5. As you like it ;-)

    Just did not want to take two times the same aura if there are two. Did this for a similar spell but a dev wanted me not take the same aura twice so I did not do it like that this time^^ Anyway its curious why both auras have different values...

    But maybe we could swap them... use Dummy for shield proc in CalcAbsorbResist and OverrideCs for healing proc. We don't have to search auras twice in calcAbsorbResist then. Just some thoughts...

    I'm going to change it if some more people misslike it ^_^

  6. I think this is currently done only for spellbonus damage. As steadyshot is not a "magical" spell, but something as a meleespell, it is calculated by Unit::meleedamagebonus(). But would be a good Idea to add a peace of code to make this table also usable with melee spells...

    (of course we need a new column with rangedattackpower than)

    Edit: Besides Steady Shot should not delay autoshot anymore. Maybe this is not the best sollution to post it here, but I don't want to spamm the patch forum with a lot of threads about the same topic. So here is just a small additional patch fixing that: http://pastebin.com/m167feb8c. No flags or anything changed (see Allakhazam) so we have to hardcode it :-/

  7. This patch adds the dummy procs for "Rapture" (http://www.wowhead.com/?spell=47535).

    The formula is based on http://forums.worldofwarcraft.com/thread.html;jsessionid=5DD29E14CB82EF5628B964471BAE6DB1.app25_02?topicId=11296623227&sid=1 and the comments on wowhead.

    --

    Because only Flash Heal, Great Heal, and the triggered missiles of Penance are abled to trigger the procs we have to change the procflags (currently wrong entries for Penance):

    pasdVn

    UPDATE for 3.1.3 (new spell mechanics):

    http://github.com/pasdVn/mangos/commit/80d0367959b110cb3daa0c6dd65022f5ecf84ac5

    (the diff looks quite huge, but thats only because I had to shift a whole code part a tabulator to the left)

  8. This fix makes it possible, that also positive Spells can get affected by scripted crit chances.

    -> This will fix "Renewed Hope", and "Test of Faith"

    From 589dcbfd6e1bfca0c218649874976d66981347ae Mon Sep 17 00:00:00 2001
    From: pasdVn <[email protected]>
    Date: Mon, 2 Feb 2009 11:09:40 +0100
    Subject: [PATCH] fixed spell crit chance from SPELLAURA_OVERRIDE_CLASS_CRIPTS
    
    "Renewed Hope", 57470 and ranks
    ---
    src/game/Unit.cpp |   19 +++++++++++--------
    1 files changed, 11 insertions(+), 8 deletions(-)
    
    diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
    index 6788079..cf2d42d 100644
    --- a/src/game/Unit.cpp
    +++ b/src/game/Unit.cpp
    @@ -7724,15 +7724,18 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM
                    crit_chance += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL, schoolMask);
                }
                // taken
    -            if (pVictim && !IsPositiveSpell(spellProto->Id))
    -            {
    -                // Modify critical chance by victim SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE
    -                crit_chance += pVictim->GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE, schoolMask);
    -                // Modify critical chance by victim SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE
    -                crit_chance += pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE);
    -                // Modify by player victim resilience
    -                if (pVictim->GetTypeId() == TYPEID_PLAYER)
    -                    crit_chance -= ((Player*)pVictim)->GetRatingBonusValue(CR_CRIT_TAKEN_SPELL);
    +            if (pVictim )
    +            {
    +                if ( !IsPositiveSpell(spellProto->Id) )
    +                {
    +                    // Modify critical chance by victim SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE
    +                    crit_chance += pVictim->GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE, schoolMask);
    +                    // Modify critical chance by victim SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE
    +                    crit_chance += pVictim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE);
    +                    // Modify by player victim resilience
    +                    if (pVictim->GetTypeId() == TYPEID_PLAYER)
    +                        crit_chance -= ((Player*)pVictim)->GetRatingBonusValue(CR_CRIT_TAKEN_SPELL);
    +                }
    
                    // scripted (increase crit chance ... against ... target by x%
                    AuraList const& mOverrideClassScript = GetAurasByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS);
    -- 
    1.6.0.2.1172.ga5ed0
    
    

  9. As there are already given some enties for absorb spells in the new spell_bonus_data table we should use them :)

    For fixing "borowed times" (http://www.wowhead.com/?spell=52795, the second effect) I oriented at "Pain and Suffering" which is nearly the same spell (proc trigger aura and dummy aura that should apply a spellmod) and is handled directly above in the code.

    http://github.com/pasdVn/mangos/commit/3a39682c3e438293cc86e2e4c44e2e9a8f1b4a20

    Here the left spell_bonus_data entries that are not already in:

    INSERT INTO `mangos`.`spell_bonus_data` (`entry` ,`direct_bonus` ,`dot_bonus` ,`ap_bonus` ,`comments`) VALUES 
    ('6143', '0.1', '0', '0', 'Mage - Frost Ward'),
    ('543', '0.1', '0', '0', 'Mage - Fire Ward');
    

  10. Hunting Party (http://www.wowhead.com/?spell=53290) has very strange SpellFamilyMasks currently. Here are the correct ones:

    INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
    (53290, 0, 9, 0x800, 0x1, 0x200, 0, 0x2, 0, 0, 0),
    (53291, 0, 9, 0x800, 0x1, 0x200, 0, 0x2, 0, 0, 0),
    (53292, 0, 9, 0x800, 0x1, 0x200, 0, 0x2, 0, 0, 0),
    (53293, 0, 9, 0x800, 0x1, 0x200, 0, 0x2, 0, 0, 0),
    (53294, 0, 9, 0x800, 0x1, 0x200, 0, 0x2, 0, 0, 0);

  11. Ok, I found out something. T.N.T. currently procs on all other ranged damage-spells.I think that problem causes also the campfire bug:

    SpellMgr::IsSpellProcEventCanTriggeredBy():

    // check prockFlags for condition
       if((procFlags & EventProcFlag) == 0)
           return false;
    
       // Always trigger for this
       if (EventProcFlag & (PROC_FLAG_KILLED | PROC_FLAG_KILL | PROC_FLAG_ON_TRAP_ACTIVATION))
           return true;

    The second line was changed in [7175]. Before there was no PROC_FLAG_ON_TRAP_ACTIVATION.

    Imagine the T.N.T. aura having PROC_FLAG_ON_TRAP_ACTIVATION, PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT and some other (including an aoe flag, what causes the bug with the campfire, I guess) when a ranged spell hits. On comparing the aura's proc flag with the event proc flag (procFlags & EventProcFlag) everything is ok. In the next step mangos will see the T.N.T. has also PROC_FLAG_ON_TRAP_ACTIVATION and will return true, although a ranged spell tried to trigger. So we should not include the trap proc flag there...

    I originally didn't add it because of Entrapment (http://www.wowhead.com/?spell=19184), that should not proc on all traps, but this bug is one reason more ;-)

    Sry for doublepost... Just wanted to bump to make a dev notice it.

    Edit:

    Sorry, one more thing when having a look at the logs of this commit.

    // Lock and Load
               if ( dummySpell->SpellIconID == 3579 )
               {
                   // Proc only from periodic (from trap activation proc another aura of this spell)
                   if (!(procFlag & PROC_FLAG_ON_DO_PERIODIC) || !roll_chance_i(triggerAmount))
                       return false;
                   triggered_spell_id = 56453;
                   target = this;
                   break;
               }
    

    With this Code "Lock and Load" can also get triggered by a trap's dot (in fact only "immolationtrap"). Thats why I added the spellfamilimask in my patch ;-)

  12. As all the hunter's shots and stings consume an amount of the casters base mana, we have to update the dummyproc of "Thrill of the Hunt" (http://www.wowhead.com/?spell=34499).

    From 0684956e6b9af624296423b47e061f004503351c Mon Sep 17 00:00:00 2001
    From: pasdVn <[email protected]>
    Date: Sat, 24 Jan 2009 12:27:02 +0100
    Subject: [PATCH] fixed spell 3449 and ranks
    
    ---
    src/game/Unit.cpp |    2 +-
    1 files changed, 1 insertions(+), 1 deletions(-)
    
    diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
    index 16a4f1d..9f5051e 100644
    --- a/src/game/Unit.cpp
    +++ b/src/game/Unit.cpp
    @@ -5264,7 +5264,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
                        return false;
    
                    // mana cost save
    -                basepoints0 = procSpell->manaCost * 40/100;
    +                basepoints0 = procSpell->ManaCostPercentage * GetCreateMana() / 100 * 40/100;
                    if(basepoints0 <= 0)
                        return false;
    
    -- 
    1.6.0.2.1172.ga5ed0
    
    

    In fact this is not 100% correct (we don't apply auras that degrease mana costs...), but that would require bigger changes or ugly hacks I think. So maybe we can live with this sollution (it was done the same way before^^).

  13. http://www.wowhead.com/?spell=56342

    This should trigger a spell under two different conditions with two different chances. This normally can't be done by one spell.

    But as you can see all ranks of this spell has a 100% proc chance, while the tooltip does not say. So the sollution is to hardcode the chances and check for the right condition. The proc chances are given by the base values of Triggeraura (for the trap trigger) and the dummy aura (the dot trigger).

    Additionally I had to add PROC_FLAG_ON_TRAP_ACTIVATION for "freezing trap" in prepareDataForTriggerSystem().

    http://pastebin.com/m4a5bb7e6

    What does not work is the proc on activating frost trap, because it has no direct unit target and ProcDamageAndSpell() is not called, but thats another thing...

    pasdVn

  14. Master Tactician (http://www.wowhead.com/?spell=34839) currently only procs on direct damage ranged attacks:

    See Unit:ProcDamageAndSpellFor(...):

    if(!IsTriggeredAtSpellProcEvent(pTarget, itr->second, procSpell, procFlag, procExtra, attType, isVictim, (damage > 0), spellProcEvent))

    (damage>0) prevents other ranged attacks from beeing abled to trigger Master Tactician.

    Normally it should (Master Tactician Aura has also PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT, or have a look here: http://liennaslog.blogspot.com/2007/12/master-tactician.html).

    Therefore we have to create an explicit procflag entry including all hunters ranged attacks:

    INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
    (34506, 0, 9, 522753, 8392833, 513, 0, 0, 0, 0, 0),
    (34507, 0, 9, 522753, 8392833, 513, 0, 0, 0, 0, 0),
    (34508, 0, 9, 522753, 8392833, 513, 0, 0, 0, 0, 0),
    (34838, 0, 9, 522753, 8392833, 513, 0, 0, 0, 0, 0),
    (34839, 0, 9, 522753, 8392833, 513, 0, 0, 0, 0, 0);
    

    Thx for the nice proc system, to all developers btw :)

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