Jump to content

Recommended Posts

Posted

Hey everyone , I'm trying to fix the Naj'entus bug , as it turns out when you hide behind a rock you don't get the shield explosion effect (the one that does 8500 damage to everyone ) so I have been trying to alter the spell.dbc file .

I don't understand most of the table fields and it is incredibly confusing to keep track following the "dbcstructure.h" to know every field's name but so far and after some research I am convinced I should change the "EffectImpliciteTargetA" and the "EffectImpliciteTargetB" that are currently set at 22 and 15 .

So my question is : What does the 22 and 15 mean and into what do I have to change them so that the spell will affect everyone in a 50000 radius ?

Posted

No one has to edit DBC files serverside, especially the Spell.dbc. At least you would not receive any reliable help from the community, if using different DBC than others. Effects may be unpredictable.

Sometimes we need to modify DBC content used by the core, but this need is mostly due to missing information causing wrong core algorithms. For someone insisting to hardcode a change to spell parameters, there exists SpellMgr::ModDBCSpellAttributes() method changing the Spell.dbc content on the fly.

However it is not your case surely. If an obstacle provides a shelter from any spell while should not, then this is Line of Sight (LoS) issue. You might start with vmap.ignoreSpellIds parameter of the config file. The discussion will become more fruitful if you provide the spell ID.

As to your question, the names for the target types you can find here or, in much more sane spelling, here. Combination 22/15 is for negative AoE centered at the caster. The radius of the AoE is controlled by another parameter of the spell. Once more, I do not recommend to change these parameters.

Posted

Thank you for the reply ! I can see things more clearly now .

However, unfortunetly the vmap.ignoreSpellIds parameter did not do the trick . The spell Id is 39878 and i have written it like this :

vmap.ignoreSpellIds = "39878"

When I changed the parameter vmap.enableLOS to 0 it worked so it's not about the spell itself it's about the vmap.ignoreSpellIds parameter . Thanks for the idea though and for the usefull links , but I would like to know how do I fix spell bugs if I'm never supposed to touch the spell.dbc file :(

Could you elaborate more about where to find SpellMgr::ModDBCSpellAttributes() method and how to use it (sorry I'm such a noob) .

Posted
When I changed the parameter vmap.enableLOS to 0 it worked so it's not about the spell itself it's about the vmap.ignoreSpellIds parameter .

It's good. The ignoreSpellIds mechanic is supposed to be a solution for such cases. So if it does not work, it should be fixed, nothing else. For now you might try to skip the double quotes like

vmap.enableLOS = 39878

I could look into the implementation (and the issue) three days later.

Posted

That would be great looking forward to it . And I have tried skipping the double quotes before but the original parameter was

vmap.ignoreSpellIds = "7720"

that's the warlock's teleportation spell it makes senses that it should ignore vmaps . So I'm sure the double quotes are needed but I will keep trying .

Posted

I have also tested adding another spell into the vmap.ignoreSpellIds ( ID 38692 ) and it worked fine . This is getting more and more strange.

I also found

SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS = 0x00000004

and added it in the spell.dbc but it doesn't work.

Posted

Finally, I looked into the issue.

I have also tested adding another spell into the vmap.ignoreSpellIds ( ID 38692 ) and it worked fine .

The spells with explicit target (i.e. a target selected by the player in a way) will fail in case no LoS to the target. The config parameter mentioned above enables spellcast in such cases.

I also found

SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS = 0x00000004

and added it in the spell.dbc but it doesn't work.

The attribute may have a totally different meaning in the One. Anyway, its value is being ignored by the core now.

A strange thing follows. The Spell::CheckCast method uses vmap.ignoreSpellIds data, but the Spell::CheckTarget method ignores the data while checking the LoS. It looks as an error to me, so I provide here the correcting patch. While I did not test the solution personally, I'm sure the patch will help. Note that you should keep the spell ID in your vmap.ignoreSpellIds parameter (and yes, surrounded by quotes).

[ATTACH]246[/ATTACH]

confIgnoreLoS.diff

Archived

This topic is now archived and is closed to further replies.

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