Jump to content

pasdVn

Members
  • Posts

    261
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by pasdVn

  1. Done. ...maybe I should use github or anything in the future... :-/
  2. I don't know what is not working in detail with imp. Kidney Shot. Should normally work as described before: The spellmod is here SPELLMOD_ALL_EFFECTS. So this will affect the base value of all three effects (of kidney shot). First and second effect don't use there basevalues so they could have taken also SPELLMOD_EFFECT3. Those Spellmods are getting applied in CalculateDamage() (or something like that that... don't have the code here now^^). Start to debug there and try to find out why it does not work ;-) It does not matter weather it is healing or a damaging over time spell. This is only determined by the family flags. SPELLMOD_DAMAGE is also used for increasing the power of healing spells for example. Maybe the notation is a bit confusing (but do you know a better one?!) Experience and code-reading :-P Maybe you could try to find all calls of ApplySpellMod() or GetModOwner() to find places where spellmods are apllied. Hmm, one more try: Lets say you want to create your own spellmod and you need to create the mask for 2 spells with the following spellfamilyflags (1st of the 3 values in the dbc's): spell1: 0000 1000 spell2: 0010 0000 To create the mask so simply combine them with a logic OR so that you get 0010 1000 as your mask. You have to enter this value in SpellClassMask0 in the SpellAffect table. The same procedure if you have spells with bit(s) the 2nd or 3rd spellfamilyflag field. The thing with shifting the value by 32 is just to understand how mangos forms the intern used 64bit SpellEntry::SpellFamilyFlag. But as I said in most cases you don't have to concern about those flags (maybe only if you want to add spellprocevents, but not for spellmods) because they are already stored in the dbc (and "decrypted" :-) )and are correct if blizz did not make a failure^^
  3. Ah ok. Now I know what he meant by "unworkable"^^. Maybe anybody could give a feedback if Bloodsurge is correct now (the family flags I suggested). I could move it to the first post than.
  4. Ah, very nice. This spell should not profit from spellpower directly. Only via Flametongue (the dumm effect). So it complys with this system :-)
  5. As I said I rather expect this patch to be reviewed soon, but more to show up a more correct damage calculation (or at least a way that is more close to the calculation on official servers). Sometimes it is maybe faster to write an own patch than reviewing another one^^
  6. As I have already proclaimed in other threads, I think that the spell bonus damage calculation depending on the school of the spell is incorrect. I tried to make the the bonus damage calculation dependent on the damage class. That means weapon based Spells (SPELL_DAMAGE_CLASS_RANGED, SPELL_DAMAGE_CLASS_MELEE) are all handeled by MeleeDamageBonus() while "magical" spells (SPELL_DAMAGE_CLASS_MAGIC, SPELL_DAMAGE_CLASS_NONE) are handeled in SpellDamageBonus(). This system has some advantages: * we can handle all bonus damage of "magical" spells in SpellBonusDamage() as we did before, but don't have to concern about any weapon dependent auras * we can handle all spells, that have anything to do with your weapon in MeleeDamageBonus(), including checks for weapon dependend auras, enhanced school checks, etc So in the end everything should be a bit more clear and better to understand. Some examples, I want to reach with that patch: * "Arcane Shot" or "Explosive Shot" won't benefit from spell damage * all hunter stings and shots that cause non physical damage are affected by "Ranged Weapon Specialization" Problems is sometimes to find generic rules that say when such a wepon using spell benefits from a damage mod (mostly percentage mods for wepon based spells, but sometimes also flat mods). After doing a lot of researches and thinking about I think it's the best to check if the aura's schoolmask fits with the spells school (that's nothing new) AND with weapons school (always physical for players for now) the spell is using. Again an example: * you have any aura that increases you fire dmage by x% (or adds Y fire damage) and you are using "Explosive Shot" => won't be affected For damage taken auras we don't have this problem. There a normal school check belongs as I could find out. All changes affect also DOT's, of course, meaning, that e.g. auras increasing your damage with a one handed weapon, will also increase the damage of a dot, that was applied with a one handed wepon etc.. Some of you will notice, that there are just shots and stings as examples now (in my previous versions I also talked about "Seal of Command"). The reason is, that I found out (or am at least the oppinion), that weapon damage based spells (that measns spells using SPELL_EFFECT_WEAPON_DAMAGE, SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL, SPELL_EFFECT_NORMALIZED_WEAPON_DMG or SPELL_EFFECT_WEAPON_PERCENT_DAMAGE) should be not handled with those school checks. Those spells just take your current autohit or ranged damage (where a lot of bonus damag is already included) and change the damage class, no matter if the the bonus damage that are applied to weapon damage fit to the new damage class (this seems to be also quite logical, if you read the tooltips). This is done already correctly in the code and does not need any changes. I just want to mention that, because previously I wrote other things in this place. Some more things I worked out: * bonus damage calculation for physical Effect:SchoolDmg spells (this is missing currently completely!!!) as nearly all hunter pet spells, some feral druid spells, or e.g. "Steady shot", this will probably the change you will notice the most when playing * a lot of cleanup in MeleeDamageBonus() and CalculateSpellDamage() (including adding the spell crit bonus damage calculation to SpellCriticalDamageBonus()), that is why that patch looks quite huge * implementation of two global helper functions for more often used code * add pet's bonus damage value to MeleeDamageBonus() (I checked the correctness on an official server) Update 29.08.09: The Patch V3: http://github.com/pasdVn/mangos/commit/fe8908b88b1a4f5797bc7b863a54b12b5c086503 pasdVn
  7. 1st: we should get the victims base block chance, not the one of the caster 2nd: we need a type conversion as GetWeaponSkillValue() is an uint and in general case the subtracted value is bigger (so it will be <0) From 4d4f92806bbc9be30f232d2759e29fb5881ea51c Mon Sep 17 00:00:00 2001 From: pasdVn <[email protected]> Date: Fri, 27 Mar 2009 23:58:06 +0100 Subject: [PATCH] fix in block chance calculation --- src/game/Unit.cpp | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 470de75..35ff713 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -2287,8 +2287,8 @@ bool Unit::isSpellBlocked(Unit *pVictim, SpellEntry const *spellProto, WeaponAtt ((Creature*)pVictim)->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_BLOCK ) return false; - float blockChance = GetUnitBlockChance(); - blockChance += (GetWeaponSkillValue(attackType) - pVictim->GetMaxSkillValueForLevel() )*0.04; + float blockChance = pVictim->GetUnitBlockChance(); + blockChance += (int32(GetWeaponSkillValue(attackType)) - pVictim->GetMaxSkillValueForLevel() ) * 0.04f; if (roll_chance_f(blockChance)) return true; } -- 1.6.0.2.1172.ga5ed0
  8. Aha, ok. Thanks. Anyway it's very confusing :confused:. Maybe the blizz class designers themself don't really know what they are doing...
  9. I still wonder why also "magical" spells (lighning breath etc.) scale directly from AP and not from spell power anymore, as we (and blizz, too) still have the spell bonus damage from the owner RAP (12,5%). Btw those "magical" spells won't get any bonus from the pet's real spellpower anymore (e.g. from buffs) with those entries. Anyway, thanks for information and the patch :-)
  10. From b813984d37f5ecf1756050a3c6fafdf5db9ca45a Mon Sep 17 00:00:00 2001 From: pasdVn <[email protected]> Date: Wed, 25 Mar 2009 10:55:04 +0100 Subject: [PATCH] fixed typo in dot bonus damage calculation (for stacks>1) --- src/game/Unit.cpp | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index f151b6f..470de75 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -7698,8 +7698,8 @@ uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint3 DotTicks = DotDuration / spellProto->EffectAmplitude[x]; if(DotTicks) { - DoneAdvertisedBenefit /= DotTicks*int32(stack); - TakenAdvertisedBenefit /= DotTicks*int32(stack); + DoneAdvertisedBenefit = DoneAdvertisedBenefit*int32(stack)/DotTicks; + TakenAdvertisedBenefit = TakenAdvertisedBenefit*int32(stack)/DotTicks; } } } -- 1.6.0.2.1172.ga5ed0 I think the given calculation is wrong. Would mean that bonus damage decreases if the stack increases. In fact it should get also (e.g.) 3 times the bonus if there are 3 stacks.
  11. Added the DELETE's... even if I don't think that a dev will be more motivated now to have look on that To Lightguards Suggestion: Are you sure you have the correct FamilyFlags? I rechecked that, and have the following one: /*Bloodsurge*/ DELETE FROM spell_proc_event WHERE entry IN (46913, 46914, 46915); INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `cooldown`) VALUES (46913, 0, 4, 64, 1028, 0, 0, 0, 0, 0, 0), (46914, 0, 4, 64, 1028, 0, 0, 0, 0, 0, 0), (46915, 0, 4, 64, 1028, 0, 0, 0, 0, 0, 0); I also removed the 'procEx' (was onCrit before).
  12. Hmm, in fact very nice. Where did you get those values from? Are you sure about that? 4.29% seems quite less for me (did you mean 42.9%, in that case you needn't add it, thats the general factor for instant spells). I always wondered if also the physical attacks (claw, swipe, etc.) are influenced by that, but never found a proof or any information on that. Edit: Ah, just saw that those are values for ap_bonus. Did this change? I think I read something like that that somewhere...
  13. Sorry for bumping one more time, just one more question because I'm trying to work on that just now: Are you sure with that? If you call SpellDamageBonus with SPELL_DIRECT_DAMAGE no bonuses will get applied at all (what is also not correct, but anyway it won't cause this huge damage).edit: Ahh, sorry. Missread it. SPELL_DIRECT_DAMAGE != DIRECT_DAMAGE
  14. Hmm, Cold Blood does not work? The mask for the mods is builded out of other values of spell.dbc, so that you normally don't have to add an entry in spell_affect. This is just a remain of older code and maybe something for debug (this table is currently completely empty). So either there is really a bug in the DBC's ore the bug is somewhere else. Normally it works like that: There are different kinds of spellmods. Find SpellModOp in the code. There you have the declaration of all mods (that are on wowhead the values in brackets after "Apply Aura: Add Flat Modifier"). For Cold Blood this is 7 (==SPELLMOD_CRITICAL_CHANCE). In fact this modifier also has a mask to match certain spells (so there is nothing that that says "all offensive abilitys" are affected;, simply all rogue spells that are possible are added to the mask). Checkout Aura::HandleAddModifier() if you want to know how the masks are getting builded. For improved Renew you have SpellModOp 22 (==SPELLMOD_DOT). Demonic resilence (ChanF07): Pet's don't have any own Spellmods. This spellmod (Effect 2) is added to the owner. But pet will use the owner's spellmods (if it is always reffered by Unit::GetSpellModOwner() in the code, witch will return the owner for a pet). Hunter and Warlock pets have a quite big number of passive auras that are modded by those mods^^ Don't find the one for this Talent right now and also think that the bug here is not the spellmod. Now to Savage Fury and the masks one more time: In fact you have three SpellFamilyMask values in spell.dbc. The first two are concluded in SpellEntry to one value of 64bit (SpellEntry::SpellFamilyFlags). The third value remains as it is as SpellEntry::SpellFamilyFlags2. I think this is also a remain from older times (pre 3.x) when the 3rd value did not exist to have only one value for those flags. But with the introduction of the 3rd value they did not revert this or added the 3rd value to one single mask as well (97bit integer.... don't know if this is possible at all^^), so that we now have this a bit confusing way. So if you want to create a SpellFamilyFlag of SpellEntry out of the 2nd SpellFamilyFlag of the DBC's just shift the binary number 32bits left (or just multiply the decimal number by 2^32). Be careful when using the DBC Editor to find out the EffectSpellClassMaskX values out of the DBC (that give the affect masks for the spellmod). This editor is not updatet to the current DBC versions and so those values are currently shown as Strings (and so you don't see anything,they are marked as SpellName there). Better way (how I would do this) is just to debug when applying the Spellmod and get the affect mask right in the code. I'm quite shure that the masks are also correct in this case and the bug is somewhere else again (it's at all very unclear to me why this talent does not work [are you sure]... seems to be a quite usual one for me...). Hope my answer helps you a bit .
  15. + case SPELL_AURA_MOD_SPELL_CRIT_CHANCE: + if (!procSpell) + continue; + break; Not needed, as I think. As well as + if(!procSpell) + return false; but that's only peanuts^^
  16. http://www.wowhead.com/?search=ferocious#talents Missing Entry, pocs only on crit: /*Ferocious Inspiration*/ DELETE FROM `spell_proc_event` WHERE `entry` IN (34457); INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES (34457, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0); http://www.wowhead.com/?spell=19621 Missing Entry, pocs only on crit: /*Frenzy*/ DELETE FROM `spell_proc_event` WHERE `entry` IN (20784); INSERT INTO `spell_proc_event` (`entry` ,`SchoolMask` ,`SpellFamilyName` ,`SpellFamilyMask0` ,`SpellFamilyMask1` ,`SpellFamilyMask2` ,`procFlags` ,`procEx` ,`ppmRate` ,`CustomChance` ,`Cooldown`)VALUES ('20784', '0', '0', '0', '0', '0', '0', '2', '0', '0', '0'); http://www.wowhead.com/?search=Master+Tactician#talents Missing entry. Needs proc flag because also non direct damage spells should be abled to trigger (stings etc.). /*Master Tactician*/ DELETE FROM `spell_proc_event` WHERE `entry` IN (34506, 34507, 34508, 34838, 34839); INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES (34506, 0, 9, 522753, 8392833, 134218241, 0, 0, 0, 0, 0), (34507, 0, 9, 522753, 8392833, 134218241, 0, 0, 0, 0, 0), (34508, 0, 9, 522753, 8392833, 134218241, 0, 0, 0, 0, 0), (34838, 0, 9, 522753, 8392833, 134218241, 0, 0, 0, 0, 0), (34839, 0, 9, 522753, 8392833, 134218241, 0, 0, 0, 0, 0); http://www.wowhead.com/?search=Hunting+Party#talents Strange familyflags currently. Update for the 3 correct trigger spells. /*Hunting Party*/ DELETE FROM `spell_proc_event` WHERE entry IN (53290, 53291, 53292); INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES (53290, 0, 9, 0x800, 0x1, 0x200, 0, 0x2, 0, 0, 0), (53291, 0, 9, 0x800, 0x1, 0x200, 0, 0x2, 0, 0, 0), (53292, 0, 9, 0x800, 0x1, 0x200, 0, 0x2, 0, 0, 0); http://www.wowhead.com/?spell=46913 Wrong family- and procEx flags. Thanks to Lightguard. /*Bloodsurge*/ DELETE FROM `spell_proc_event` WHERE `entry` IN (46913, 46914, 46915); INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `cooldown`) VALUES (46913, 0, 4, 64, 1028, 0, 0, 0, 0, 0, 0), (46914, 0, 4, 64, 1028, 0, 0, 0, 0, 0, 0), (46915, 0, 4, 64, 1028, 0, 0, 0, 0, 0, 0); http://www.wowhead.com/?search=entrapment Udated familyflags (new flags with 3.?.?) /*Entrapment*/ DELETE FROM `spell_proc_event` WHERE `entry` IN (19184, 19387, 19388); INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES (19184, 0, 9, 0x10, 0x2000, 0, 0, 0, 0, 0, 0), (19387, 0, 9, 0x10, 0x2000, 0, 0, 0, 0, 0, 0), (19388, 0, 9, 0x10, 0x2000, 0, 0, 0, 0, 0, 0); http://www.wowhead.com/?spell=35100 Updatet Family Flags for new effect since 3.?.? /*Concussive Barrage*/ DELETE FROM `spell_proc_event` WHERE `entry` IN (35100, 35102); INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES (35100, 0, 9, 4096, 0, 1, 256, 0, 0, 0, 0), (35102, 0, 9, 4096, 0, 1, 256, 0, 0, 0, 0); http://www.wowhead.com/?spell=51521 Set Family Flags, to trigger just from stormstrike. The thing with the cooldown is in fact just a kind of workaround, to trigger not twice every use of Stormstrike (main and offhand spell have same familyflags :-/ ) /*Imp. Stormstrike*/ DELETE FROM `spell_proc_event` WHERE `entry` IN (51521, 51522); INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES (51521, 0, 11, 0, 16, 0, 0, 0, 0, 0, 1), (51522, 0, 11, 0, 16, 0, 0, 0, 0, 0, 1);
  17. There has to be done some more things. E.g. when hunter resets talents and is currently using an exotic pet (or is in stable slot). Don't know what happens on offi servers in this case...
  18. Reuploaded. Anyway the spellmechanics for Rapture seem to change again in 3.1.0.
  19. This fix has nothing to do wit blizzlike or not. It's not a hack. It's just a fix of a typo.
  20. This function currently returns only the first element of the list or NULL. Fixing this will make it e.g possible to let one unit have more than one persistent area auras. In detail this are spells like Hurricane orFrost Trap (or of course casting more spells with those auras at once). From c024a2c84d1886a1fa1a05a1fca74247dbfb8e82 Mon Sep 17 00:00:00 2001 From: pasdVn <[email protected]> Date: Tue, 3 Mar 2009 14:57:17 +0100 Subject: [PATCH] fixed typo in Unit::GetDynObject --- src/game/Unit.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index aaeece8..f9a4f48 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -4034,7 +4034,7 @@ DynamicObject * Unit::GetDynObject(uint32 spellId, uint32 effIndex) { for (DynObjectGUIDs::iterator i = m_dynObjGUIDs.begin(); i != m_dynObjGUIDs.end() { - DynamicObject* dynObj = ObjectAccessor::GetDynamicObject(*this,*m_dynObjGUIDs.begin()); + DynamicObject* dynObj = ObjectAccessor::GetDynamicObject(*this,*i); if(!dynObj) { i = m_dynObjGUIDs.erase(i); -- 1.6.0.2.1172.ga5ed0 Note for people who want to try this: I know that you will see now (e.g. for the frost trap effect) three times the buff icon at the target. That is another bug I think every spell shoul only have one dynObject (maximum), even if it uses more than one persistent area aura (so just one container for all auras).
  21. Hey guys, trying to work a bit at the basic pet reactions on mangos. The most things are clear to me. What I'm not sure about is how stopping the pet to attack works on official servers. On mangos this can be done only by clicking "Follow" (except makros, of course). I saw a movie on youtube ahere this was done by clicking "PetPassive" (while it was already in passive mode). Maybe anybody has some facts or can investigate that in detail (if you have an account). Especially interesting are for example what happens if the pat is attacking while in defensive mode and than you switch to passive. Will it stop the attack in this case. Same e.g. for pet in stay mode and attacking a mob you comand to follow. Will it stop to attack than or will this only make the pet follow you after the fight is over? There are many combinations :lol: Would be nice if anybody could share his/her experience here. pasdVn
  22. "Heroic Fury" has no SpellFamilyName (whyever...). So just remove GetSpellProto()->SpellFamilyName == SPELLFAMILY_WARRIOR and it will work. This check is anyway not required if we search for a single spell . added: Ok, that's not enough. We have to send an explicit SMSG_CLEAR_COOLDOWN, as it is done with "Readiness". I'm currently trying that. added2: like that: From cc048d6a2c6ba41620e3c911aa8f425677664efc Mon Sep 17 00:00:00 2001 From: pasdVn <[email protected]> Date: Fri, 27 Feb 2009 18:52:08 +0100 Subject: [PATCH] Heroic Fury --- src/game/SpellAuras.cpp | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 55d80d7..d4053a6 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -3971,6 +3971,17 @@ void Aura::HandleModMechanicImmunity(bool apply, bool Real) m_target->RemoveAurasDueToSpell(26592); } } + + // Heroic Fury (remove Intercept cooldown) + if( apply && GetId() == 60970 && m_target->GetTypeId() == TYPEID_PLAYER ) + { + ((Player*)m_target)->RemoveSpellCooldown(20252); + + WorldPacket data(SMSG_CLEAR_COOLDOWN, (4+8)); + data << uint32(20252); + data << uint64(m_target->GetGUID()); + ((Player*)m_target)->GetSession()->SendPacket(&data); + } } void Aura::HandleAuraModEffectImmunity(bool apply, bool Real) -- 1.6.0.2.1172.ga5ed0
  23. Hmm, just discovered that this patch (the changes in SpellDamage) will cause a double apply of spellmod spelldmg for WeaponEffectDmg spells. So the spell mechanics are correct, but the patch will require a workaround in the spellbonsdmg handling.
×
×
  • 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