breakwater
Members-
Posts
166 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Everything posted by breakwater
-
You must make a DB update: UPDATE `spell_proc_event` SET `procFlags`='1048576',`procEx`='0' WHERE (`entry`='974') I have a server with a revision of 10154. I hope it still correct. for information, a small table enum ProcFlags { PROC_FLAG_NONE = 0x00000000, PROC_FLAG_KILLED = 0x00000001, // 00 Killed by aggressor PROC_FLAG_KILL = 0x00000002, // 01 Kill target (in most cases need XP/Honor reward, see Unit::IsTriggeredAtSpellProcEvent for additinoal check) PROC_FLAG_SUCCESSFUL_MELEE_HIT = 0x00000004, // 02 Successful melee auto attack PROC_FLAG_TAKEN_MELEE_HIT = 0x00000008, // 03 Taken damage from melee auto attack hit PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT = 0x00000010, // 04 Successful attack by Spell that use melee weapon PROC_FLAG_TAKEN_MELEE_SPELL_HIT = 0x00000020, // 05 Taken damage by Spell that use melee weapon PROC_FLAG_SUCCESSFUL_RANGED_HIT = 0x00000040, // 06 Successful Ranged auto attack PROC_FLAG_TAKEN_RANGED_HIT = 0x00000080, // 07 Taken damage from ranged auto attack PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT = 0x00000100, // 08 Successful Ranged attack by Spell that use ranged weapon PROC_FLAG_TAKEN_RANGED_SPELL_HIT = 0x00000200, // 09 Taken damage by Spell that use ranged weapon PROC_FLAG_SUCCESSFUL_POSITIVE_AOE_HIT = 0x00000400, // 10 Successful AoE (not 100% shure unused) PROC_FLAG_TAKEN_POSITIVE_AOE = 0x00000800, // 11 Taken AoE (not 100% shure unused) PROC_FLAG_SUCCESSFUL_AOE_SPELL_HIT = 0x00001000, // 12 Successful AoE damage spell hit (not 100% shure unused) PROC_FLAG_TAKEN_AOE_SPELL_HIT = 0x00002000, // 13 Taken AoE damage spell hit (not 100% shure unused) PROC_FLAG_SUCCESSFUL_POSITIVE_SPELL = 0x00004000, // 14 Successful cast positive spell (by default only on healing) PROC_FLAG_TAKEN_POSITIVE_SPELL = 0x00008000, // 15 Taken positive spell hit (by default only on healing) PROC_FLAG_SUCCESSFUL_NEGATIVE_SPELL_HIT = 0x00010000, // 16 Successful negative spell cast (by default only on damage) PROC_FLAG_TAKEN_NEGATIVE_SPELL_HIT = 0x00020000, // 17 Taken negative spell (by default only on damage) PROC_FLAG_ON_DO_PERIODIC = 0x00040000, // 18 Successful do periodic (damage / healing, determined from 14-17 flags) PROC_FLAG_ON_TAKE_PERIODIC = 0x00080000, // 19 Taken spell periodic (damage / healing, determined from 14-17 flags) PROC_FLAG_TAKEN_ANY_DAMAGE = 0x00100000, // 20 Taken any damage PROC_FLAG_ON_TRAP_ACTIVATION = 0x00200000, // 21 On trap activation PROC_FLAG_TAKEN_OFFHAND_HIT = 0x00400000, // 22 Taken off-hand melee attacks(not used) PROC_FLAG_SUCCESSFUL_OFFHAND_HIT = 0x00800000 // 23 Successful off-hand melee attacks };
-
How do you know that is a procchance of 50%?
-
To my knowledge, judgment of Light / Wisdom must have a Procchance of 100%. If you don't want this, you can enter a cooldown, and / or procchance in the table Spell_proc_event . I think judgment of Light / Wisdom is in table with entry 53408 and 20271.
-
I added the aura of "Cheat Death", because it is no longer activated after death. Maybe one of you sees a possibility to activate "Cheat Death" after death. My Revision: 10154 diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index f2d4b5e..1232216 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1917,10 +1917,40 @@ void Unit::CalculateAbsorbAndResist(Unit *pCaster, SpellSchoolMask schoolMask, D bool existExpired = false; // Incanter's Absorption, for converting to spell power int32 incanterAbsorption = 0; + if(GetTypeId() == TYPEID_PLAYER ) + { + Player* temp_player = ((Player*)this); + + if (temp_player->getClass() == CLASS_ROGUE && !(temp_player->HasAura(31228) || temp_player->HasAura (31229) || temp_player->HasAura(31230))) + { + SpellEntry const *spellInfo = temp_player->GetKnownTalentRankById(1722); + if(spellInfo) + { + for(uint32 i = 0; i < MAX_EFFECT_INDEX; ++i) + { + uint8 eff = spellInfo->Effect[i]; + if (eff>=TOTAL_SPELL_EFFECTS) + continue; + if( IsAreaAuraEffect(eff) || + eff == SPELL_EFFECT_APPLY_AURA || + eff == SPELL_EFFECT_PERSISTENT_AREA_AURA ) + { + Aura *Aur = CreateAura(spellInfo, SpellEffectIndex(i), NULL, this); + temp_player->AddAura(Aur); + } + + } + }else{ + temp_player->RemoveAurasDueToSpell(31228); + temp_player->RemoveAurasDueToSpell(31229); + temp_player->RemoveAurasDueToSpell(31230); + } + } + } // absorb without mana cost AuraList const& vSchoolAbsorb = GetAurasByType(SPELL_AURA_SCHOOL_ABSORB); for(AuraList::const_iterator i = vSchoolAbsorb.begin(); i != vSchoolAbsorb.end() && RemainingDamage > 0; ++i) { Modifier* mod = (*i)->GetModifier();
-
In my investigations I have found the problem, but could not find a proper solution. The problem is: The rogue has not the special aura of Cheat Death, after he has died or has lost a duel. Cheat Death Rank 1 Cheat Death Rank 2 Cheat Death Rank 3 Why the rogue loses the aura? Have anyone Ideas?
-
Ahhh now i know how it works. The Numbers are from Spell.dbc simple addition of rows 209 or 210. Thanks Maxxie can the update for right proc in master?? UPDATE `spell_proc_event` SET `SpellFamilyMask0`='16393' WHERE (`entry`='47201') for Everlasting Affliction UPDATE `spell_proc_event` SET `procEx`='67' WHERE (`entry`='58872') for Damage Shield UPDATE `spell_proc_event` SET `procEx`='112' WHERE (`entry`='12298') for Shield Specialization UPDATE `spell_proc_event` SET `procEx`='1' WHERE (`entry`='17793') for Improved Shadow Bolt
-
thank you for your quick response Sry not all. From where you get the numbers? 1- Shadow Bolt? 16384 - Drain Soul? Why works Drain Life and Haunt? I hope someone can help me.
-
I think the solution lies in this part void WorldSession::HandleSpellClick( WorldPacket & recv_data ) { uint64 guid; recv_data >> guid; if (_player->isInCombat()) // client prevent click and set different icon at combat state return; Creature *unit = _player->GetMap()->GetCreatureOrPetOrVehicle(guid); if (!unit || unit->isInCombat()) // client prevent click and set different icon at combat state return; SpellClickInfoMapBounds clickPair = sObjectMgr.GetSpellClickInfoMapBounds(unit->GetEntry()); for(SpellClickInfoMap::const_iterator itr = clickPair.first; itr != clickPair.second; ++itr) { if (itr->second.IsFitToRequirements(_player)) { Unit *caster = (itr->second.castFlags & 0x1) ? (Unit*)_player : (Unit*)unit; Unit *target = (itr->second.castFlags & 0x2) ? (Unit*)_player : (Unit*)unit; caster->CastSpell(target, itr->second.spellId, true); } } } Anyone Ideas?
-
Update for Revision 10091 Code with Glyph of Lightwell BUG: not useable in combat. have anyone ideas? btw bumb diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index c02a49f..168d34a 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2461,6 +2461,10 @@ void Aura::HandleAuraDummy(bool apply, bool Real) case 58591: // Stoneclaw Totem X m_target->CastSpell(m_target, 58585, true); return; + case 59907: // Lightwell charges + if (m_target->GetTypeId() == TYPEID_UNIT) + ((Creature*)m_target)->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); + return; case 62061: // Festive Holiday Mount if (m_target->HasAuraType(SPELL_AURA_MOUNTED)) // Reindeer Transformation @@ -2711,6 +2715,12 @@ void Aura::HandleAuraDummy(bool apply, bool Real) caster->RemoveAurasDueToSpell(34027); return; } + case 59907: // Lightwell charges - despawn creature if no charges remain + { + if (m_target->GetTypeId() == TYPEID_UNIT) + ((Creature*)m_target)->AddObjectToRemoveList(); + return; + } } // Living Bomb if (m_spellProto->SpellFamilyName == SPELLFAMILY_MAGE && (m_spellProto->SpellFamilyFlags & UI64LIT(0x2000000000000))) diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 7ded7bf..0860f25 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -6150,6 +6150,37 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx) unitTarget->CastSpell(unitTarget, 59943, true); return; } + case 60123: // Lightwell Renew + { + Unit* creator = Unit::GetUnit(*m_caster, m_caster->GetCreatorGUID()); + if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER || + !creator || creator->GetTypeId() != TYPEID_PLAYER || + ((Player*)unitTarget)->GetTeam() != ((Player*)creator)->GetTeam()) + return; + + uint32 renewSpell = 0; + switch(m_caster->GetEntry()) + { + case 31897: renewSpell = 7001; break; + case 31896: renewSpell = 27873; break; + case 31895: renewSpell = 27874; break; + case 31894: renewSpell = 28276; break; + case 31893: renewSpell = 48084; break; + case 31883: renewSpell = 48085; break; + default: break; + } + if (const SpellEntry *pSpell = sSpellStore.LookupEntry(renewSpell)) + { + damage = pSpell->EffectBasePoints[EFFECT_INDEX_0]; + if (Aura *dummy = creator->GetDummyAura(55673)) + { + damage += damage * dummy->GetModifier()->m_amount /100.0f; + } + } + m_caster->CastCustomSpell(unitTarget, renewSpell, &damage, NULL, NULL, true, NULL, NULL, m_originalCasterGUID); + if (Aura* aur = m_caster->GetAura(59907, EFFECT_INDEX_0)) + { + if (aur->GetAuraCharges() > 1) + aur->DropAuraCharge(); + else m_caster->RemoveAura(aur); + } + return; + } // random spell learn instead placeholder case 60893: // Northrend Alchemy Research case 61177: // Northrend Inscription Research Also need sql data
-
I think that is better. // found Immolate or Shadowflame if (aura) { int32 damagetick = aura->GetModifier()->m_amount; damage += damagetick * 3; m_currentBasePoints[1]=damage * 2/15; // Glyph of Conflagrate if (!m_caster->HasAura(56235)) unitTarget->RemoveAurasByCasterSpell(aura->GetId(), m_caster->GetGUID()); break; } In this fix, Conflagrate(Dot)-hit makes exactly 40% dmg of Conflagrate. The Conflagrate(Dot) can crit. I have found a strange bug. In my tooltip of Conflagrate is written "69% of your Immolate or Shadowflame". After testing, I know that Conflagrate is calculated with 69%. EDIT: OK now i know, why 69% is written in Tooltip. The Reason is Emberstorm. if you have 5 of 5 points in the talent Emberstorm rank 5, then 60% of 15% more firedamage is 69%. If you have no Emberstorm is will be only 60% auf dmg of Immolate or Shadowflame. The Calculation ist RIGHT
-
[spell] Immolate, Rupture, Flame Shock critical dmg
breakwater replied to a topic in ... under reviewOld
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->[u]IsSpellCrit[/u](m_target, m_spellProto, GetSpellSchoolMask(m_spellProto))) + { damage = caster->SpellCriticalDamageBonus(m_spellProto, damage, m_target); return true; } This patch is working with a small change in revision 10091 I got a compile error, because the function "IsSpellCrit" now defined with a "I". After change works fine. Sry for my bad english -
[Fix] Shadow bite & Talent Improved Felhunter (warlock)
breakwater replied to a topic in ... under reviewOld
works fine with revision 10091 -
[9813][FIX] Moonfire & Lacerate Debuff
breakwater replied to Auntie Mangos's topic in ... under reviewOld
Works good with Revision 10052 Thx -
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index d196874..e9123ad 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -432,6 +432,32 @@ m_isRemovedOnShapeLost(true), m_in_use(0), m_deleted(false) } } + // Handling spell duration modifiers (glyphs for example) + switch(m_spellProto->SpellFamilyName) + { + case SPELLFAMILY_DRUID : + // Glyph of thorns + switch (m_spellProto->Id) + { + case 467 : + case 782 : + case 1075 : + case 8914 : + case 9756 : + case 9910 : + case 26992 : + case 53307 : + if ((m_caster_guid == m_target->GetGUID()) && (m_target->HasAura(57862))) + m_maxduration += 50*MINUTE*IN_MILLISECONDS; + break; + default : + break; + } + break; + default : + break; + } + if(m_maxduration == -1 || m_isPassive && m_spellProto->DurationIndex == 0) m_permanent = true; Works good with Revision 9891, but the place is strange. Kyle you made a mistake in your Code m_maxduration += 50*MINUTE*IN_MILLISECONDS; is better My first post
Contact Us
To contact us
click here
You can also email us at [email protected]
Privacy Policy | Terms & Conditions
You can also email us at [email protected]
Privacy Policy | Terms & Conditions
Copyright © getMaNGOS. All rights Reserved.
This website is in no way associated with or endorsed by Blizzard Entertainment®
This website is in no way associated with or endorsed by Blizzard Entertainment®