Jump to content

megamage

Members
  • Posts

    42
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

megamage's Achievements

Advanced Member

Advanced Member (3/3)

0

Reputation

  1. You need to use GetPet or GetCreatureOrPetOrVehicle if (unit->GetCharmerOrOwnerGUID() && unit->GetCharmerOrOwnerGUID() != GetGUID()) This is not so good. Because some players charm NPC of the other faction and buy mounts from them. I use this: if(unit->GetCharmerGUID()) return NULL; I do not know why we do not allow interact with npc with owner. If that repair bot does not work
  2. the bug of spell 33671 should not be related to this patch. Its script should not be implemented in mangos yet. So there should be no original caster issue.
  3. Any developers want to work on this? We can discuss about that. It will remove a lot of hacks and make a lot of spells work normally. It is vital for SD2 (creature AI). Without core support it is impossible to improve SD2 boss AI further.
  4. First you may look at Unit::AddAura which checks if there already exists stacking auras. You may add m_stack of the old aura and update modifier and then delete Aur; return false; so the new aura is not added. If multiple stacks from different casters is allowed is also checked there. Now only DoT/HoT is allowed though it is not a correct checking method.
  5. I also cannot find any special field or flag. Such spells need another patch. Currently in svn these spells are either hacked (such as 33076) or bugged (numerous, especially boss spells)
  6. I just realized that this function can also be used for some effect 3 dummy spells. Some such spells only select a dest, then cast "reall spell"
  7. If you go to wowhead to search for spell 27285, you will see a link to youtube in the comments. That video shows how 27285 works in official (players learn it accidentally due to bug). It is like a blizzard or flamestrike spell. I do not know if someone who play in official can test this spell. First cast seed of corruption to an enemy, then log out or teleport to another map or kill himself, then another player trigger the proc spell, and see if there is aoe damage.
  8. It will be good to use distance as a parameter of command. Cannot think a better way.
  9. Why say it is a hack? You can .learn 27285 and will see it is a 50000-yard range spell. There is no proof that this spell should be casted by the m_target of the aura. Though there is also no proof that this shiould be casted by the caster, a 50000-yard range makes it more believable. If this should be casted by the m_target, why a 50000-yard range is needed? For implicit target = 22/30 AOE damge spells, I know lots of boss spells are of this kind. Some of them are to give target an aura, to periodically trigger this AOE spell to damage its teammates. Others are triggered by one-shot spells, such as 41131. 41131 is also incorrently handled in core. Now it is: unitTarget->CastSpell(unitTarget, 41131, true); It should be: unitTarget->CastSpell(unitTarget, 41131, true, 0, 0, originalCaster); What should be questioned is the current way. There is no proof that we should use originalcaster to select target for some spells, while not use it for other spells. Target selection should totally be based on dbc.
  10. I think originalcaster is used to (1) send correct combat log (2) calculate the damage bonus
  11. This is the patch for seed (actually it is the 27285 spell I was talking about). Index: Unit.cpp =================================================================== --- Unit.cpp (revision 6483) +++ Unit.cpp (working copy) @@ -4961,7 +4999,8 @@ RemoveAurasDueToSpell(triggeredByAura->GetId()); // Cast finish spell (triggeredByAura already not exist!) - CastSpell(this, 27285, true, castItem, NULL, casterGuid); + if(Unit* caster = GetUnit(*this, casterGuid)) + caster->CastSpell(this, 27285, true, castItem); return; } @@ -4983,7 +5022,8 @@ RemoveAurasDueToSpell(triggeredByAura->GetId()); // Cast finish spell (triggeredByAura already not exist!) - CastSpell(this, 32865, true, castItem, NULL, casterGuid); + if(Unit* caster = GetUnit(*this, casterGuid)) + caster->CastSpell(this, 32865, true, castItem); return; } // Damage counting
  12. Seed of Corruption is not correctly handled in current svn. It needs another patch.
  13. Some spells make the target do AOE and damage its allies. Example such as 39968 and 17739 have implicit_target = friendly target around the caster. If we use the original caster to check the target, the AOE will damage original caster's allies. The target check should be based on the caster, only the damage bonus is based on original caster. Another example is 27285. This spell has implicit_target = enemy target in the area. Currently in core this spell is casted by the aura-bearer. That is wrong. This spell should be casted by the original caster, not the aura bearer. The difference between 39968 and 27285 is: 39968 is a range = 0 spell, but 27285 is a range = 50000 spell The correct cast sequence is: 39968: A casts 39835 to B, B triggers 39968, then B cast 39968 to itself and damage all B's friend around B. 27285: A casts 27243 to B, B triggers 27285, then A cast 27285 to B again and damage all A's enemy around B. Index: Spell.h =================================================================== --- Spell.h (revision 6480) +++ Spell.h (working copy) @@ -580,7 +580,7 @@ SpellTargets TargetType = SPELL_TARGETS_NOT_FRIENDLY) : i_data(&data), i_spell(spell), i_push_type(type), i_radius(radius), i_TargetType(TargetType) { - i_originalCaster = spell.GetOriginalCaster(); + i_originalCaster = spell.GetCaster();//spell.GetOriginalCaster(); } template<class T> inline void Visit(GridRefManager<T> &m)
×
×
  • 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