Jump to content

VladimirMangos

Members
  • Posts

    2813
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by VladimirMangos

  1. For let adding another tons hacks just because someone lazy research problem and find proper solution. Why search solution if so easy just "fix" spell.dbc data. Ofc, this not important that after will find that this "fix" just lazy garbage....
  2. this not related to core. All enters is teleport triggers and final point of teleport provided by DB content, so check used DB porject data for porblem.
  3. No. Client version will use own data....
  4. Yes, mostly Db content related. Closed.
  5. Error messages posted by program for _reading_. I think error message cleary describe problem and what need do.
  6. maybe some event start in world, or at this tiem set soem cleanup in config like daily quest resets...
  7. Required bitmask provided explicitly in realmd.sql. So just need learn ( many times described ) how propertly apply bitmask to field value. For population you will need modify code for prevent update....
  8. You sure that you use not modified sources? GetMap() not called in Player::LoadFromDB function? "Setting player home position" output in end of function for loading home pos. So crash happens somewhere later after home position load and not related to it.
  9. must be fixed in [10040]
  10. you need build mysql libs at your host with thread support. This is not mangos problem but porblem with your mysql install.
  11. I not understand how possible not understand message: your mangosd ask Db for revision 9967 and you have DB for revision 10008. What this meaning? YOU HAVE OUTDATED MANGOSD.
  12. when time store in uint64 (bigint) fields then it always stored as unix time
  13. You have UDB sql apply problem, so why you ask at mangos _core_ forum...
  14. i think this can be considred tbb bug. Maybe good report to tbb project...
  15. You has been right, and i fix this by reapply related commit after spell proc patch backporting in cc629fdb6750dad6f085986223cd0b7f9fbed026. This is must fix recent "100% apply" poisons problem. Thank you
  16. Maybe some more useful in report instead generic declarations? ALWAYS provided at least example of problematic spell ids. Do i must jump by spells table in attempt find your problem spell... when "Alot of item procs and for example rogue poises" converted in reallity to "some from ..." [added] Must be fixed in cc629fdb6750dad6f085986223cd0b7f9fbed026.
  17. core not remove auras at update/tick, it specially protected from deleting. So if not have broken custom code that break this protection you can't have aura deleted in tick code. Like locked for delete auras deleted only from main world loop in end world update
  18. Implemented as darkstalker suggest in [10019]. Thank you for step by step sollution research
  19. revision.h generated at build. It's not part of repo. In same way as SystemConfig.h for example.
  20. "Failed to open acceptor ,check if the port is free" you have already started another copy using this port, or some other program use port...
  21. With described changes added to mangos-0.12 repo. Milk13, thank you for big work From adding original patch to master many changes has been added with local fixes and improvments. If you find any useful you can post commit hashs and i will backport commit. Better go from past to present step by step.
  22. As i test attributes, in fact master way selection ranged auto shoot spell exactly same as can be used in mangos 0.12 or for example mangoszero. I check with this additional chnages and hunter/want shoot work as expected: diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index e6869d7..ac94ecd 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -288,7 +288,7 @@ const uint32 ItemQualityColors[MAX_ITEM_QUALITY] = { #define SPELL_ATTR_EX2_CANT_REFLECTED 0x00000004 // 2 ? used for detect can or not spell reflected #define SPELL_ATTR_EX2_UNK3 0x00000008 // 3 #define SPELL_ATTR_EX2_UNK4 0x00000010 // 4 -#define SPELL_ATTR_EX2_UNK5 0x00000020 // 5 +#define SPELL_ATTR_EX2_AUTOREPEAT_FLAG 0x00000020 // 5 #define SPELL_ATTR_EX2_UNK6 0x00000040 // 6 #define SPELL_ATTR_EX2_UNK7 0x00000080 // 7 #define SPELL_ATTR_EX2_UNK8 0x00000100 // 8 not set in 2.4.2 diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 66c7de6..11c4788 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -325,10 +325,7 @@ Spell::Spell( Unit* Caster, SpellEntry const *info, bool triggered, ObjectGuid o m_triggeredByAuraSpell = NULL; //Auto Shot & Shoot - if( m_spellInfo->AttributesEx2 == 0x000020 && !triggered ) - m_autoRepeat = true; - else - m_autoRepeat = false; + m_autoRepeat = IsAutoRepeatRangedSpell(m_spellInfo); m_powerCost = 0; // setup to correct value in Spell::Prepare, don't must be used before. m_casttime = 0; // setup to correct value in Spell::Prepare, don't must be used before. @@ -647,19 +644,28 @@ void Spell::PrepareDataForTriggerSystem() m_procVictim = PROC_FLAG_TAKEN_MELEE_SPELL_HIT; break; case SPELL_DAMAGE_CLASS_RANGED: - m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT; - m_procVictim = PROC_FLAG_TAKEN_RANGED_SPELL_HIT; + // Auto attack + if (m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG) + { + m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_HIT; + m_procVictim = PROC_FLAG_TAKEN_RANGED_HIT; + } + else // Ranged spell attack + { + m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT; + m_procVictim = PROC_FLAG_TAKEN_RANGED_SPELL_HIT; + } break; default: - if (IsPositiveSpell(m_spellInfo->Id)) // Check for positive spell + if (IsPositiveSpell(m_spellInfo->Id)) // Check for positive spell { m_procAttacker = PROC_FLAG_SUCCESSFUL_POSITIVE_SPELL; m_procVictim = PROC_FLAG_TAKEN_POSITIVE_SPELL; } - else if (m_spellInfo->Id == 5019) // Wands + else if (m_spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG) // Wands auto attack { - m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT; - m_procVictim = PROC_FLAG_TAKEN_RANGED_SPELL_HIT; + m_procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_HIT; + m_procVictim = PROC_FLAG_TAKEN_RANGED_HIT; } else { diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index 987a913..6e24818 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -322,6 +322,11 @@ inline bool isSpellBreakStealth(SpellEntry const* spellInfo) return !(spellInfo->AttributesEx & SPELL_ATTR_EX_NOT_BREAK_STEALTH); } +inline bool IsAutoRepeatRangedSpell(SpellEntry const* spellInfo) +{ + return (spellInfo->Attributes & SPELL_ATTR_RANGED) && (spellInfo->AttributesEx2 & SPELL_ATTR_EX2_AUTOREPEAT_FLAG); +} + SpellCastResult GetErrorAtShapeshiftedCast (SpellEntry const *spellInfo, uint32 form); inline bool IsChanneledSpell(SpellEntry const* spellInfo) @@ -405,7 +410,7 @@ enum ProcFlags PROC_FLAG_KILLED = 0x00000001, // 00 Killed by agressor PROC_FLAG_KILL_AND_GET_XP = 0x00000002, // 01 Kill that yields experience or honor - PROC_FLAG_SUCCESSFUL_MILEE_HIT = 0x00000004, // 02 Successful melee attack + PROC_FLAG_SUCCESSFUL_MELEE_HIT = 0x00000004, // 02 Successful melee attack PROC_FLAG_TAKEN_MELEE_HIT = 0x00000008, // 03 Taken damage from melee strike hit PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT = 0x00000010, // 04 Successful attack by Spell that use melee weapon @@ -439,7 +444,7 @@ enum ProcFlags PROC_FLAG_SUCCESSFUL_OFFHAND_HIT = 0x00800000 // 23 Successful off-hand melee attacks }; -#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MILEE_HIT | \\ +#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MELEE_HIT | \\ PROC_FLAG_TAKEN_MELEE_HIT | \\ PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT | \\ PROC_FLAG_TAKEN_MELEE_SPELL_HIT | \\ diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 4856351..9523f96 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1809,12 +1809,12 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da switch (attackType) { case BASE_ATTACK: - damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MILEE_HIT; + damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_HIT; damageInfo->procVictim = PROC_FLAG_TAKEN_MELEE_HIT; damageInfo->HitInfo = HITINFO_NORMALSWING2; break; case OFF_ATTACK: - damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MILEE_HIT | PROC_FLAG_SUCCESSFUL_OFFHAND_HIT; + damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_HIT | PROC_FLAG_SUCCESSFUL_OFFHAND_HIT; damageInfo->procVictim = PROC_FLAG_TAKEN_MELEE_HIT;//|PROC_FLAG_TAKEN_OFFHAND_HIT // not used damageInfo->HitInfo = HITINFO_LEFTSWING; break; Including only auto attack triggered spell http://www.wowhead.com/spell=27786 I not check is in all cases this flag used in table in cases where procflags overwrited [edited] as i check no 0x100 cases i overwrited flags except one spell only case (that now will NOT triggered as expected at autoshot/shot).
  23. I add to gist sql update in to more readable (master like hex using form)
×
×
  • 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