Jump to content

Sarjuuk

Members
  • Posts

    99
  • Joined

  • Last visited

  • Donations

    0.00 GBP 

About Sarjuuk

  • Birthday 01/01/1

Sarjuuk's Achievements

Advanced Member

Advanced Member (3/3)

0

Reputation

  1. for one the error is still there and secondly the wiki is back http://www.pxr.dk/wowdev/wiki/index.php?title=Main_Page
  2. Call me picky, but i dislike getting my informations from a Community, that specializes in exploits and hacks. If madx just moved, even better, but i'll continue as soon, as i'm home again. I don't think a bit redundancy would hurt here^^ /e: i know, they have a creative branch, and The Druids of Azeroth Models are nice, but still ...
  3. Since madx.dk went down (probably forever) and with it the Wiki with the last (at least for me) known documentation of the DBCs, I'm currently rifling through the Google-Cache in an attempt to preserve whats still available. anyway while trying to add the SpellRange.dbc the following error occurred: this is independent from the given Summary I tried posting this: http://paste2.org/p/1471708 Other articles work fine. It's just this one
  4. I'm not saying that you're wrong (since i don't really know) but While it increases your armor, it effectively increases the amount absorbed by Power Word: Shield (Since absorb is calculated after armor and resistance). So it sounds only logical, that it should loose charges through the shield, as it is effectively in use.
  5. What features does the patch add? - Implements Flametongue Weapon - fully implements Flametongue Totem For which repository revision was the patch created? mangos-0.12 @ ea6b3de6dc0d7d9196b091561dae1cc89fa13ac8 Is there a thread in the bug report section or at lighthouse? as far as i can tell, none related to 0.12 Who has been writing this patch? Sarjuuk Code http://paste2.org/p/887048 SQL -- Update Elemental Weapons-Talent to support Flametongue Weapon UPDATE spell_affect SET SpellFamilyMask = SpellFamilyMask | 0x200000 WHERE effectid = 1 AND entry IN (16266, 29079, 29080); -- Custom spell_proc_event for Flametongue Weapon INSERT INTO spell_proc_event VALUES (33756, 0, 0, 0, 0, 0, 0, 100, 0); Notes: - I'm using this patch for quite some time and as far as i can tell, it has only one minor issue. In case of Flametongue Weapon, the code can't tell which weapon triggered the proc, so it will proc on both weapons. (if dualwielding) I'll share it anyway, maybe someone has an idea for this 'glitch' - Spell:33756 is Windfury Weapon 2 (passive) and is not used in in 2.4.3. It may be hackish, but the spells for Flamtongue Weapons are missing completely and needed some kind of replacement. This Spell is no longer in the spell.dbc in 3.x. Don't try to look it up on Wowhead ect .. it's not there any more...
  6. i think you forgot, that only a fraction of the people here, are United States citizens^^ happy holiday anyway :>
  7. Well, as a rule of thumb.. Mangos ist more stable, has cleaner coding Trinity has more features decide yourself, what suites you better :>
  8. well, my change worked (with 0.12) and since Missle Barrage also uses SPELLMOD_DURATION, there is a good chance, that it will work on master, for this case too. (note: Pictures of "the Client" aren't allowed here )
  9. just being curious here: would adding "if(Player* modOwner = spell->GetCaster()->GetSpellModOwner()) modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_DURATION, dur, spell);" to ApplyHasteToChannelSpell() fix spells like this one ? :>
  10. diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 11ac823..5b5cced 100644 (file) --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -4680,13 +4680,21 @@ void Aura::HandlePeriodicManaLeech(bool apply, bool /*Real*/) void Aura::HandleAuraModResistanceExclusive(bool apply, bool /*Real*/) { - for(int8 x = SPELL_SCHOOL_NORMAL; x < MAX_SPELL_SCHOOL;x++) + for (int8 x = SPELL_SCHOOL_NORMAL; x < MAX_SPELL_SCHOOL;x++) { - if(m_modifier.m_miscvalue & int32(1<<x)) + int32 oldMaxValue = 0; + if (m_modifier.m_miscvalue & int32(1<<x)) { - m_target->HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + x), BASE_VALUE, float(m_modifier.m_amount), apply); - if(m_target->GetTypeId() == TYPEID_PLAYER) - m_target->ApplyResistanceBuffModsMod(SpellSchools(x), m_positive, float(m_modifier.m_amount), apply); + Unit::AuraList const& REAuras = m_target->GetAurasByType(SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE); + for (Unit::AuraList::const_iterator i = REAuras.begin(); i != REAuras.end(); ++i) + if ( ((*i)->GetMiscValue() & int32(1<<x)) && (*i)->GetSpellProto()->Id != GetSpellProto()->Id) + if (oldMaxValue < (*i)->GetModifier()->m_amount) + oldMaxValue = (*i)->GetModifier()->m_amount; + + float value = (m_modifier.m_amount > oldMaxValue) ? m_modifier.m_amount - oldMaxValue : 0.0f; + m_target->HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + x), BASE_VALUE, value, apply); + if (m_target->GetTypeId() == TYPEID_PLAYER) + m_target->ApplyResistanceBuffModsMod(SpellSchools(x), m_positive, value, apply); } } } Thats how Emme and I did it. Works with Mark of the Wild.
  11. GetMaxPositiveAuraModifier() may be the better choice. your current implementation results in conflicts with auras, adding resistance to more than one type. ie Mark of the Wild reproduce: 1. buff yourself Mark of the Wild 2. Buff yourself some other Resistance Aura (I used Fire Resistance Totem) 3. Remove Mark of the Wild (right-click the icon) 3a. note, that you'll still have the resistances in your character-sheet 4. Remove Fire Resistance Totem (unsummon Totem or run out of range) 4a. note, that your fire-resistance will show the correct value (0) while all other will have values like 20 anyway, nice that your working on it :>
  12. updated to: r9784 Note, that i just checked, whether it compiles. I didn't retest functionality! diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index d1d792f..f86f2e4 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -915,7 +915,7 @@ enum AuraState AURA_STATE_SWIFTMEND = 15, // T | AURA_STATE_DEADLY_POISON = 16, // T | AURA_STATE_ENRAGE = 17, // C | - //AURA_STATE_UNKNOWN18 = 18, // C t| + AURA_STATE_MECHANIC_BLEED = 18, // C t| //AURA_STATE_UNKNOWN19 = 19, // | not used //AURA_STATE_UNKNOWN20 = 20, // c | only (45317 Suicide) //AURA_STATE_UNKNOWN21 = 21, // | not used diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 6d3bd1e..eeafbfd 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -1063,6 +1063,10 @@ void Aura::_AddAura() // Enrage aura state if(m_spellProto->Dispel == DISPEL_ENRAGE) m_target->ModifyAuraState(AURA_STATE_ENRAGE, true); + + // Mechanic bleed aura state + if(GetAllSpellMechanicMask(m_spellProto) & (1 << (MECHANIC_BLEED-1))) + m_target->ModifyAuraState(AURA_STATE_MECHANIC_BLEED, true); } } } @@ -1140,6 +1144,23 @@ bool Aura::_RemoveAura() if(m_spellProto->Dispel == DISPEL_ENRAGE) m_target->ModifyAuraState(AURA_STATE_ENRAGE, false); + // Mechanic bleed aura state + if(GetAllSpellMechanicMask(m_spellProto) & (1 << (MECHANIC_BLEED-1))) + { + bool found = false; + Unit::AuraList const& mPerDmg = m_target->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE); + for(Unit::AuraList::const_iterator i = mPerDmg.begin(); i != mPerDmg.end(); ++i) + { + if(GetAllSpellMechanicMask((*i)->m_spellProto) & (1 << (MECHANIC_BLEED-1))) + { + found = true; + break; + } + } + if(!found) + m_target->ModifyAuraState(AURA_STATE_MECHANIC_BLEED, false); + } + uint32 removeState = 0; uint64 removeFamilyFlag = m_spellProto->SpellFamilyFlags; uint32 removeFamilyFlag2 = m_spellProto->SpellFamilyFlags2; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index c29ce02..efdf0c2 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9463,8 +9463,27 @@ bool Unit::IsSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM case SPELL_DAMAGE_CLASS_RANGED: { if (pVictim) + { crit_chance = GetUnitCriticalChance(attackType, pVictim); + // Rend and Tear - eff:1 + if(spellProto->SpellFamilyName == SPELLFAMILY_DRUID && spellProto->SpellIconID == 1680 && spellProto->SpellFamilyFlags & UI64LIT(0x00800000)) + { + if(pVictim->HasAuraState(AURA_STATE_MECHANIC_BLEED)) + { + AuraList const& dummyAuras = GetAurasByType(SPELL_AURA_DUMMY); + for(AuraList::const_iterator i = dummyAuras.begin(); i != dummyAuras.end(); ++i) + { + if((*i)->GetEffIndex() == 1 && (*i)->GetSpellProto()->SpellIconID == 2859) + { + crit_chance += (*i)->GetModifier()->m_amount; + break; + } + } + } + } + } + crit_chance+= GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL, schoolMask); break; } @@ -9932,8 +9951,8 @@ uint32 Unit::MeleeDamageBonus(Unit *pVictim, uint32 pdamage,WeaponAttackType att uint32 schoolMask = spellProto ? spellProto->SchoolMask : GetMeleeDamageSchoolMask(); uint32 mechanicMask = spellProto ? GetAllSpellMechanicMask(spellProto) : 0; - // Shred also have bonus as MECHANIC_BLEED damages - if (spellProto && spellProto->SpellFamilyName==SPELLFAMILY_DRUID && spellProto->SpellFamilyFlags & UI64LIT(0x00008000)) + // Shred and Maul also have bonus as MECHANIC_BLEED damages + if (spellProto && spellProto->SpellFamilyName==SPELLFAMILY_DRUID && spellProto->SpellFamilyFlags & UI64LIT(0x00008800)) mechanicMask |= (1 << (MECHANIC_BLEED-1)); @@ -10033,6 +10052,28 @@ uint32 Unit::MeleeDamageBonus(Unit *pVictim, uint32 pdamage,WeaponAttackType att if (!owner) owner = this; + // ..done (dummy auras) + if(spellProto) + { + AuraList const& casterDummyAuras = owner->GetAurasByType(SPELL_AURA_DUMMY); + for(AuraList::const_iterator i = casterDummyAuras.begin(); i != casterDummyAuras.end(); ++i) + { + if (!(*i)->isAffectedOnSpell(spellProto)) + continue; + + switch((*i)->GetSpellProto()->SpellIconID) + { + // Rend and Tear - eff:0 + case 2859: + { + if(pVictim->HasAuraState(AURA_STATE_MECHANIC_BLEED)) + DonePercent *= (100.0f+(*i)->GetModifier()->m_amount)/100.0f; + break; + } + } + } + } + // ..done (class scripts) if(spellProto) {
  13. anyway, here the update , without base paw damage: darkstalker has a point, though i didn't introduce a new var and just checked whether mBonusWeaponAtt and mLevelMult are both set. Patch for r9688 i still see it somewhat related to this patch, but without more data.. it may be more fitting to look into this afterwards.
  14. okay, just to pull the few datasets together.. well ... assuming, that they are all correct, if not... well better not think about it Level 28: 22.0 dps => 0.786 dps/level Level 34: 27.5 dps => 0.809 dps/level Level 60: 54.8 dps => 0.913 dps/level okay, just leaning out of the window here. But what if dps/level is a linear function: dpsPerLvl = 0.004 * lvl + 0.675
×
×
  • 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