Jump to content

namreeb

Members
  • Posts

    13
  • Joined

  • Last visited

  • Donations

    0.00 GBP 

Posts posted by namreeb

  1. Since rather than fixing this bug, it apparently has been decided to simply close the thread in which I reported it and ignore the fix I provided privately, here is the bug:

    If you start casting a spell from an item, for example a Shiny Bauble, and delete the item before the cast finishes, the server will crash when the spell completes and it tries to remove the item from your inventory.

    The solution is to interrupt the spell cast.

  2. There used to be an error message you would get sometimes when switching continents saying "Server transfer failed" or "Instance server unavailable" or some such thing that applied it might very well be a separate process, possibly on another system. Also, I believe that in the current WoW, there is an opcode to redirect the client to a world server session at another address.

  3. How come you do not share this with everyone? That is just silly! As much code as the mangos team have shared open source with you, you should not keep your code closed source!

    It is a common practice among open source projects to share an exploit with the developers first. The fix will of course become public, but not before the mangos team gets a chance to fix the issue. I'm sorry you don't seem to understand.

  4. Greetings.

    I'm wondering if someone can explain to me the difference in the aura type of SPELL_AURA_MOD_THREAT from the aura of type SPELL_AURA_ADD_FLAT_MODIFIER or SPELL_AURA_ADD_PCT_MODIFIER with a value of SPELLMOD_THREAT?

    What I mean is is there a pattern for where one is used over the other? It seems like maybe the pattern is SPELL_AURA_MOD_THREAT is used when the spell/aura is affecting one particular school, whereas SPELL_AURA_ADD_FLAT_MODIFIER / SPELL_AURA_ADD_PCT_MODIFIER is used when the effect is more precise (a particular spell, etc.).

    Can anyone confirm this or shed some light on it?

    Many thanks!

    Edit: To add some clarity here, I will take a Warrior as an example and list the spells with their aura type values and spell descriptions.

    Defensive Stance Passive (7376) Aura Name: SPELL_AURA_MOD_THREAT Misc: 127

    Berserker Stance Passive (7381) Aura Name: SPELL_AURA_MOD_THREAT Misc: 127

    Defiance (12303) Aura Name: SPELL_AURA_MOD_THREAT Misc: 127

    Defiance (12788) Aura Name: SPELL_AURA_MOD_THREAT Misc: 127

    Defiance (12789) Aura Name: SPELL_AURA_MOD_THREAT Misc: 127

    Defiance (12791) Aura Name: SPELL_AURA_MOD_THREAT Misc: 127

    Defiance (12792) Aura Name: SPELL_AURA_MOD_THREAT Misc: 127

    Battle Stance Passive (21156) Aura Name: SPELL_AURA_MOD_THREAT Misc: 127

    Threatening Strikes (21856) Aura Name: SPELL_AURA_ADD_FLAT_MODIFIER Misc: 2

    Enhanced Sunder Armor (23561) Aura Name: SPELL_AURA_ADD_PCT_MODIFIER Misc: 2

    Note that for the SPELL_AURA_ADD_FLAT_MODIFIER / SPELL_AURA_ADD_PCT_MODIFIER spells, the "misc" value of 2 denotes SPELLMOD_THREAT, meaning threat level is what is being modified.

    So my question, to rephrase in this context, is what is the difference between Defiance and Threatening Strikes that they use two different "aura name" values?

  5. Greetings.

    I am working with Mangos Zero. I am using the database found here: https://github.com/TheLuda/mangos-zero-database. It has been brought to my attention that Warlock's Shadow Mastery does not affect DoTs such as Curse of Agony. After some debugging, I believe this is because there is no corresponding spell_affect entry in the database. I don't have much knowledge of mangos, nor of the database structure (both SQL and DBC) it uses. I do however have a fairly strong programming background, which means I think I know the problem but I cannot explain my reasoning :).

    I had thought that to solve the problem I need only add the following to the SQL db:

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18275, 1, 12884993161);

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18274, 1, 12884993161);

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18273, 1, 12884993161);

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18272, 1, 12884993161);

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18271, 1, 12884993161);

    This would cause the family mask value of 12884993161 (the same mask used by effect 0, which is the effect value used by Shadow Bolt) to be set for effect 1, which is the effect value used by Curse of Agony. Note that when I attach a debugger to the mangosd process and modify these values manually internally, the talent IS applied to Curse of Agony.

    Now, when I did this and issued a reload spell_affect command in the mangosd console, I received the following error:

    Re-Loading SpellAffect definitions...

    [1 ms] SQL: SELECT entry, effectId, SpellFamilyMask FROM spell_affect

    =Spell 18271 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped.

    Spell 18272 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped.

    Spell 18273 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped.

    Spell 18274 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped.

    =Spell 18275 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped.

    Looking at the code, I see that the value retrieved from the database is compared to the value retrieved from the Spells.dbc file. Specifically, the "EffectItemType" fields. Note that the error log is base one, so EffectItemType2 refers to the second EffectItemType[] value. I modified the above output to show me the read values of the SQL database as well as the DBC file. My amended output is as follows (where the first value is the value from the DBC, and the second is the value from the SQL DB):

    Loading SpellAffect definitions...

    [0 ms] SQL: SELECT entry, effectId, SpellFamilyMask FROM spell_affect

    =Spell 18271 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped. (2 != 91273)

    Spell 18272 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped. (2 != 91273)

    Spell 18273 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped. (2 != 91273)

    Spell 18274 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped. (2 != 91273)

    =Spell 18275 listed in `spell_affect` have different low part from EffectItemType2 for effect index (1) and not needed, skipped. (2 != 91273)

    Note that 12884993161 cast to a 32 bit integer yields a value of 91273.

    So, this leads me to conclude that simply inserting the previously mentioned rows into the SQL db is NOT the proper solution, as there is a sanity check in place to ensure these values conform to the DBC. So my question is...

    What is the proper solution?

    Edit: As requested by Vladimir on IRC, the proper mask value to insert into the DB is obtained as follows:

    Corruption = 0x000000002

    Curse of Agony = 0x000000400

    Death Coil = 0x000080000

    Drain Life = 0x000000008

    Siphon Life = 0x100000000

    The composition of these yields a value of (I believe) 0x10008040A.

    Edit 2: The updated inserts are as follows (4295492618 is the decimal equivalent of 0x10008040A):

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18275, 1, 4295492618);

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18274, 1, 4295492618);

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18273, 1, 4295492618);

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18272, 1, 4295492618);

    INSERT INTO `world`.`spell_affect` (`entry`, `effectId`, `SpellFamilyMask`) VALUES

    (18271, 1, 4295492618);

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