Jump to content

reeshack

Members
  • Posts

    54
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by reeshack

  1. Also, there is another bug with this spell (and probably generally with all spells using SPELLMOD_COST) - the -50% cost pct modifier is applied after flat modifiers. Let me explain it on an example - Mangle (Cat) 's base cost is 40 energy, using Improved Mangle talent it is 34 energy so under the effect of Berserk it should be (the tooltip also says that) 17 energy. But in current state it seems to me, that the -50% mod is applied to the base value (40) and the flat ones are applied after that, causing Mangle (Cat) cost only 14 energy (40 * 0.50 - 6). Actually, I'm not sure how this priority issue should be handled - are pct mods supposed to be calculated first? Or should be first the modifier, whose aura has been firstly applied?
  2. This is still not correct, because not just spell power bonus should be applied 4x but also other done modifiers (f.e. Shadow Mastery...). That's why I think that reverting 9962 is the best way...
  3. just revert 9962 and it works completely as it should
  4. The damage under 25% is definitely higher, but now it counts only base dmg of drain soul without spell power and done modifiers, which is in my opinion wrong. Before the revision that changed it it worked perfectly right - even the part that it matters on how much health does target have when the spell is casted (because it was implemented in SpellDamageBonusDone which is counted at the time of the whole cast and not at the time of a single tick...).
  5. The post you've linked does not say anything about attacks you make, it is just about that you should gain rage from attacks made to you while having an absorb shield on yourself...
  6. An advice: 1) There is a function "IsAreaOfEffectSpell()" 2) Spell reflection is determined in "Spell::Spell()" in my opinion it is much better to do it there
  7. Yeah, this is exactly what I've just written, no need to repeat Anyway it can be simply fixed by converting to int32 and comparing to 0, like: m_caster->SetPower(POWER_RAGE,int32(m_caster->GetPower(POWER_RAGE)-rage) > 0 ? m_caster->GetPower(POWER_RAGE)-rage : 0 );
  8. This is caused by variable overflow in m_caster->SetPower(POWER_RAGE,m_caster->GetPower(POWER_RAGE)-rage); in it's spell effect as m_caster->CastCustomSpell(unitTarget, 20647, &basePoints0, NULL, NULL, true, 0); consumes 0.1 rage and therefore can GetPower(POWER_RAGE)-rage give you a negative number which is not suitable for uint32.
  9. I wouldn't be so sure about that, crit damage reduction is calculated from the basic combat ratings by multiplying it, so if it was changed in dbc, it would affect it. uint32 GetSpellCritDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_CRIT_TAKEN_SPELL, 2.2f, 33.0f, damage); } So that means that either we have to change the from players reduction part, or if it was changed in dbc (afaik in 3.3.3 it is not), we would have to change the crit damage calculation.
  10. I am not sure, but I think that the CD should be handled by spell Lock and Load Marker and not by sql update... EDIT: my idea was to do it somehow like this: diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 95ae494..a0d3701 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2619,6 +2619,13 @@ void Spell::cast(bool skipCheck) AddTriggeredSpell(52874); // Fan of Knives (offhand) } break; + case SPELLFAMILY_HUNTER: + { + // Lock and Load + if (m_spellInfo->Id == 56453) + AddPrecastSpell(67544); // Lock and Load Marker + break; + } case SPELLFAMILY_PALADIN: { // Hand of Reckoning @@ -3959,6 +3966,10 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_NOT_READY; } + // Lock and Load Marker - sets Lock and Load cooldown + if (m_caster->HasAura(67544) && m_spellInfo->Id == 56453) + return SPELL_FAILED_DONT_REPORT; + // only allow triggered spells if at an ended battleground if( !m_IsTriggeredSpell && m_caster->GetTypeId() == TYPEID_PLAYER) if(BattleGround * bg = ((Player*)m_caster)->GetBattleGround()) but it is rather an advise, have not tested it properly
  11. Don't know if you checked wowwiki in the last weeks, but there has been some updates of the scaling coeficients for Wotlk (http://www.wowwiki.com/Hunter_pet#Pet_scaling, http://www.wowwiki.com/Minion#Minion_scaling, http://www.wowwiki.com/Risen_Ghoul#Stats_and_scaling, and maybe some other, I didn't search for them), hopefully it could help you . To morderek: That was adressed mainly to the author of the thread (sorry for editing but I did not want to make a useless post about it)
  12. My idea was to do it somehow like this diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 611f608..209952a 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2803,7 +2803,13 @@ void Spell::update(uint32 difftime) else if(!IsNextMeleeSwingSpell() && !IsAutoRepeat() && !m_IsTriggeredSpell && (m_spellInfo->InterruptFlags & SPELL_INTERRUPT_FLAG_MOVEMENT)) cancel(); } - + // check if spell aura on target does not exist anymore (for channeled spells) + if ( m_spellState == SPELL_STATE_CASTING && IsChanneledSpell(m_spellInfo) && m_spellInfo->AuraInterruptFlags != 0) + { + Unit *target = m_targets.getUnitTarget(); + if ( !target->HasAura(m_spellInfo->Id) ) + cancel(); + } switch(m_spellState) { case SPELL_STATE_PREPARING: but I am not sure if it does not affect any other spells in a negative way:(
  13. It is completely the same, there is no need to multiply anything by 1.0f and to specify that in a commentary as the patch change basically means that players pet is treated in the same way as player is...
  14. What bug does the patch fix? What features does the patch add? Updates pet resilience sharing for 330a. For which repository revision was the patch created? 9139 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. No. Who has been writing this patch? Please include either forum user names or email addresses. Me. diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 3a86bba..0417a25 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -13077,10 +13077,10 @@ float Unit::GetCombatRatingReduction(CombatRating cr) const return ((Player const*)this)->GetRatingBonusValue(cr); else if (((Creature const*)this)->isPet()) { - // Player's pet have 0.4 resilience from owner + // Player's pet have resilience from owner if (Unit* owner = GetOwner()) if(owner->GetTypeId() == TYPEID_PLAYER) - return ((Player*)owner)->GetRatingBonusValue(cr) * 0.4f; + return ((Player*)owner)->GetRatingBonusValue(cr); } return 0.0f;
  15. Yea if you use f.e. alt hot key for self-targeting and you do not have anybody in target frame, it always fails. If you have an enemy in target frame, it heals him (lol). And sometimes it failes even if you are targeting somebody .
  16. Hmm it seems to me that the priest spell Penance has exactly the same problem, you can sometimes cast it and it does nothing even if you cast it on yourself...the channeling goes off and you also got cooldown on it but the healing/damage does not happen.
  17. I can confirm this, in my opininion caused by wrong data in spell_proc_event, I solved it by this DELETE FROM spell_proc_event WHERE entry IN (65661); INSERT INTO spell_proc_event VALUES (65661 , 0, 15, 4194321, 131076, 0, 16, 3, 0, 100, 0);
  18. What bug does the patch fix? What features does the patch add? Fixes typo in http://github.com/mangos/mangos/commit/d9219725abff6bc1a03f0919681c3d99ddec95ed, which caused that some spells like Shattered Barrier did not work. For which repository revision was the patch created? Rev. 9045 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. No. Who has been writing this patch? Please include either forum user names or email addresses. Me, reeshack. diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 32adddf..81b5c57 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -5934,6 +5934,7 @@ void Aura::HandleSpellSpecificBoosts(bool apply) } else return; + break; } case SPELLFAMILY_WARRIOR: { @@ -5957,6 +5958,7 @@ void Aura::HandleSpellSpecificBoosts(bool apply) break; } case SPELLFAMILY_WARLOCK: + { // Fear (non stacking) if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000040000000000)) { @@ -5991,6 +5993,7 @@ void Aura::HandleSpellSpecificBoosts(bool apply) else return; break; + } case SPELLFAMILY_PRIEST: { // Shadow Word: Pain (need visual check fro skip improvement talent) or Vampiric Touch
  19. - updated to rev. 9045 - simplified by using function "IsDispelSpell()" + diff added to post
  20. I see...well your patch works correctly and does exactly what i wanted to fix so I won't update mine with reference to yours...
  21. Yes, I know the multiplier is correct, the thing I was getting at is that it is not correct to multiply the damage with applied spell power bonus (through function SpellDamageBonus), meaning that you actually add spell power bonus of a single tick eight times...I think that the base damage is 8 * tick (at rank 5 it is 850/5 = 170, 170 * 8 = 1360 - which fits to the tooltip...) but the coefficient of spell "64085" should be independent shouldn't it? Than it would solve problems with double applying also, because we would apply it only at spell "64085" casting, through a coeff in the spell_bonus_data table...
  22. But still...isn't it too much for a direct damage spell to gain 320% spell power bonus - compared to Unstable Affliction dispel which gains 180%? Why don't we just delete bp0 = 8 * caster->SpellDamageBonus(this, spellEntry, bp0, DOT, 1); , do the multiplying here int32 bp0 = [b]8 *[/b] dot->GetModifier()->m_amount; and then add proper spell power benefit for spell "64085" to spell_bonus_data table, like it is with Unstable Affliction? Seems logical to me...
  23. Confirmed, I just would like to add, that calculating spell power bonus in code like: bp0 = 8 * caster->SpellDamageBonus(this, spellEntry, bp0, DOT, 1); and multiplying it eight times means in fact that dispel gains 320% (8* 40% per tick) spell power bonus which in combination with double-calculation through SpellDamageBonus() (64085 seems to gain some bonus too and even if not, all modifiers are therefore double-applied) results into crazy amounts of damage .
  24. However, it is no more procing after a critical strike I think the ProcEx mask should be "3" instead of "1" so then the whole sql looks like this: INSERT INTO `spell_chain` VALUES (17793, 0, 17793, 1, 0), (17796, 17793, 17793, 2, 0), (17801, 17796, 17793, 3, 0), (17802, 17801, 17793, 4, 0), (17803, 17802, 17793, 5, 0); DELETE FROM `spell_proc_event` WHERE `entry` IN (17793, 17796, 17801, 17802, 17803); -- (17793) Improved Shadow Bolt (Rank 1) INSERT INTO `spell_proc_event` VALUES (17793, 0x00, 5, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0.000000, 0.000000, 0);
  25. So, here it is . Hopefully it is right in this way, I did it according to Ghostcrawler's statement, I also tested it a bit and it seems to work allright. diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index c45f8cb..31f2825 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -2367,18 +2353,23 @@ uint32 Unit::CalculateDamage (WeaponAttackType attType, bool normalized) float Unit::CalculateLevelPenalty(SpellEntry const* spellProto) const { - if(spellProto->spellLevel <= 0) + if(spellProto->maxLevel <= 0) + return 1.0f; + //if caster level is lower that max caster level + if(getLevel() < spellProto->maxLevel) return 1.0f; float LvlPenalty = 0.0f; - if(spellProto->spellLevel < 20) - LvlPenalty = 20.0f - spellProto->spellLevel * 3.75f; - float LvlFactor = (float(spellProto->spellLevel) + 6.0f) / float(getLevel()); - if(LvlFactor > 1.0f) - LvlFactor = 1.0f; + LvlPenalty = (22.0f + float (spellProto->maxLevel) - float (getLevel())) / 20.0f; + //to prevent positive effect + if(LvlPenalty > 1.0f) + return 1.0f; + //level penalty is capped at 0 + if(LvlPenalty < 0.0f) + return 0.0f; - return (100.0f - LvlPenalty) * LvlFactor / 100.0f; + return LvlPenalty; } void Unit::SendMeleeAttackStart(Unit* pVictim) Paste2.org: http://paste2.org/p/549177
×
×
  • 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